Simplifica set_int e set_string.
[cascardo/declara.git] / lib / isento.c
index 8bab86c..9e99154 100644 (file)
@@ -107,22 +107,18 @@ static struct isento * isento_new(char **args, int argc)
        struct isento *isento;
        int r = 0;
        isento = malloc(sizeof(*isento));
-       isento->cnpj = strdup(args[2]);
-       isento->nome = strdup(args[3]);
-       /* TODO: consertar set_int para funcionar como set_llong */
-       r += set_int(args, 2, &isento->codigo);
+
+       r += set_int(args[1], &isento->codigo);
+       r += set_string(args[2], &isento->cnpj);
+       r += set_string(args[3], &isento->nome);
        r += set_llong(args[4], &isento->valor);
-       if (!isento->cnpj || !isento->nome) {
-               isento_free(isento);
-               return NULL;
-       }
        if (r < 0 || isento->codigo < 0 ||
            isento->valor < 0) {
                isento_free(isento);
                return NULL;
        }
        if (argc == 6) {
-               r = set_int(&args[4], 2, &isento->dependente);
+               r = set_int(args[5], &isento->dependente);
        } else {
                isento->dependente = 0;
        }