#include <unistd.h>
#include "declaracao.h"
+#include "cmd.h"
+#include "base.h"
+#include "contribuinte.h"
+#include "rendimento.h"
+#include "calcula.h"
+
+static int realprocess(struct declaracao *dec, int fd)
+{
+ char *line = NULL;
+ size_t lsz = 0;
+ FILE *f;
+ int r;
+ int n = 1;
+ f = fdopen(fd, "r");
+ if (!f)
+ return -errno;
+ while ((r = 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++;
+ }
+ free(line);
+ return r;
+}
static int process(char *filename)
{
r = -errno;
goto out_open;
}
+ realprocess(dec, fd);
close(fd);
out_open:
declaracao_free(dec);
int r;
if (argc < 2)
usage();
+
+ cmd_init();
+ base_cmd_init();
+ contribuinte_cmd_init();
+ rendimento_cmd_init();
+ calcula_cmd_init();
+
filename = argv[1];
r = process(filename);
if (r)