Corrige geração do código do ano.
[cascardo/declara.git] / lib / conjuge.c
index a0631b2..5b6b05e 100644 (file)
@@ -36,20 +36,15 @@ static int conjuge_parse(struct declaracao *dec, char **args)
 {
        int r = 0;
 
-       dec->conjuge.cpf = strdup(args[1]);
-
+       r += set_string(args[1], &dec->conjuge.cpf);
        r += set_llong(args[2], &dec->conjuge.base);
        r += set_llong(args[3], &dec->conjuge.imposto);
        r += set_llong(args[4], &dec->conjuge.isento);
        r += set_llong(args[5], &dec->conjuge.exclusivo);
        r += set_llong(args[6], &dec->conjuge.rendpj_exigibilidade_suspensa);
        r += set_llong(args[7], &dec->conjuge.total);
-       r += set_int(args + 7, 2, &dec->conjuge.entregou);
+       r += set_int(args[8], &dec->conjuge.entregou);
 
-       if (!dec->conjuge.cpf) {
-               conjuge_free(dec);
-               return -ENOMEM;
-       }
        if (r < 0 || dec->conjuge.base < 0 || dec->conjuge.imposto < 0 ||
            dec->conjuge.isento < 0 || dec->conjuge.exclusivo < 0 ||
            dec->conjuge.rendpj_exigibilidade_suspensa < 0 ||
@@ -64,8 +59,10 @@ static int run_conjuge(struct declaracao *dec, char **args, int argc)
 {
        struct conjuge *conjuge;
        int r;
-       if (argc != 9)
+       if (argc != 9) {
+               dec_set_error(dec, "Esperados %d argumentos, recebidos %d.\n", 9, argc);
                return -EINVAL;
+       }
        r = conjuge_parse(dec, args);
        if (r < 0)
                return r;
@@ -74,7 +71,9 @@ static int run_conjuge(struct declaracao *dec, char **args, int argc)
 
 void conjuge_salva(struct declaracao *dec, FILE *f)
 {
-       fprintf(f, "conjuge \"%s\" %lld %lld %lld %lld %lld %lld %lld %lld %d\n",
+       if (!dec->conjuge.cpf)
+               return;
+       fprintf(f, "conjuge \"%s\" %lld %lld %lld %lld %lld %lld %d\n",
                dec->conjuge.cpf, dec->conjuge.base,
                dec->conjuge.imposto, dec->conjuge.isento,
                dec->conjuge.exclusivo,