Insere bens e rendimentos na ordem em que aparecem.
[cascardo/declara.git] / src / declara.c
index 54e1abb..995dc31 100644 (file)
 
 #include "declaracao.h"
 #include "cmd.h"
-#include "base.h"
-#include "contribuinte.h"
-#include "conjuge.h"
-#include "rendimento.h"
-#include "isento.h"
-#include "pagamento.h"
-#include "bem.h"
-#include "dependente.h"
-#include "calcula.h"
-#include "gera.h"
 
 static int readline_support = 1;
 
@@ -47,20 +37,23 @@ static int fileprocess(struct declaracao *dec, int fd)
        size_t lsz = 0;
        FILE *f;
        int r;
+       int rc = 0;
        int n = 1;
        f = fdopen(fd, "r");
        if (!f)
                return -errno;
-       while ((r = getline(&line, &lsz, f)) > 0) {
+       while (getline(&line, &lsz, f) > 0) {
                r = cmd_run(dec, line);
                if (r < 0) {
                        fprintf(stderr, "Não foi possível executar comando na linha %d: %s\n",
-                               n, strerror(-r));
+                               n, dec->error ?: strerror(-r));
+                       rc = r;
                }
                n++;
        }
        free(line);
-       return r;
+       fclose(f);
+       return rc;
 }
 
 static int ttyprocess(struct declaracao *dec)
@@ -74,7 +67,7 @@ static int ttyprocess(struct declaracao *dec)
                r = cmd_run(dec, line);
                if (r < 0) {
                        fprintf(stderr, "Não foi possível executar comando: %s\n",
-                               strerror(-r));
+                               dec->error ?: strerror(-r));
                }
                free(line);
        }
@@ -123,17 +116,7 @@ int main(int argc, char **argv)
                usage();
 
        cmd_init();
-       base_cmd_init();
-       contribuinte_cmd_init();
-       conjuge_cmd_init();
-       rendimento_cmd_init();
-       isento_cmd_init();
-       pagamento_cmd_init();
-       bem_cmd_init();
-       dependente_cmd_init();
-       calcula_cmd_init();
-       gera_cmd_init();
-       sistema_cmd_init();
+       dec_cmd_init();
 
        if (argc > 1)
                filename = argv[1];