Adiciona mensagens de erro ao comando gera.
authorThadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>
Sat, 14 Jan 2017 16:35:02 +0000 (14:35 -0200)
committerThadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>
Sat, 14 Jan 2017 17:41:43 +0000 (15:41 -0200)
Mensagens ao validar parâmetros, verificar o ano suportado e erro ao
abrir arquivo são emitidas.

lib/gera.c

index a496190..ae5c1a0 100644 (file)
@@ -839,7 +839,7 @@ static void insert_hash(struct declaracao *dec, char *irpf)
 static int gera(struct declaracao *dec, char *filename)
 {
        FILE *f;
-       int r;
+       int r = 0;
        int i;
        struct rendimento *rendimento;
        struct isento *isento;
@@ -864,8 +864,12 @@ static int gera(struct declaracao *dec, char *filename)
        } while (0);
 
        f = fopen(filename, "w");
-       if (!f)
+       if (!f) {
+               r = -errno;
+               dec_set_error(dec, "Não foi possível abrir arquivo %s: %s.",
+                             filename, strerror(errno));
                goto out_file;
+       }
        memset(dec->linhas, 0, sizeof(dec->linhas));
        W(gera_header);
        W(gera_contribuinte);
@@ -935,10 +939,16 @@ out_file:
 
 static int run_gera(struct declaracao *dec, char **args, int argc)
 {
-       if (argc != 2)
+       if (argc != 2) {
+               dec_set_error(dec, "Comando %s recebe um nome de arquivo como parâmetro.",
+                             args[0]);
                return -EINVAL;
-       if (!ANO_VALIDO(dec->ano))
+       }
+       if (!ANO_VALIDO(dec->ano)) {
+               dec_set_error(dec, "Comando %s não suporta ano %d.",
+                             args[0], dec->ano);
                return -EINVAL;
+       }
        return gera(dec, args[1]);
 }