X-Git-Url: http://git.cascardo.eti.br/?a=blobdiff_plain;f=lib%2Fdeclaracao.c;h=39bca5da9b3a49c2e0b9b06832c8b73cd9e791bc;hb=d4e44d77749cc26d4df84aeacfb750fe3a23264d;hp=7eef34c57506c26b1a1ec652a6ae9becf61607ca;hpb=687bc57d97d703decd2a41f224a3de0b41f5881d;p=cascardo%2Fdeclara.git diff --git a/lib/declaracao.c b/lib/declaracao.c index 7eef34c..39bca5d 100644 --- a/lib/declaracao.c +++ b/lib/declaracao.c @@ -16,9 +16,12 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#define _GNU_SOURCE #include "declaracao.h" +#include #include #include +#include #include "list.h" #include "conjuge.h" #include "sistema.h" @@ -29,6 +32,11 @@ #include "dependente.h" #include "pmhash.h" +#include "base.h" +#include "calcula.h" +#include "gera.h" +#include "help.h" + struct declaracao * declaracao_new(int ano) { struct declaracao *dec; @@ -59,6 +67,7 @@ struct declaracao * declaracao_new(int ano) dec->devido = 0; dec->restituicao = 0; dec->tipo = SIMPLES; + dec->error = NULL; return dec; out_totais: list_free(dec->dependentes, dependente_free); @@ -101,5 +110,34 @@ void declaracao_free(struct declaracao *dec) pmhash_del(dec->totais); conjuge_free(dec); sistema_free(dec); + if (dec->error) + free(dec->error); free(dec); } + +void dec_set_error(struct declaracao *dec, char *fmt, ...) +{ + va_list ap; + if (dec->error) + free(dec->error); + dec->error = NULL; + va_start(ap, fmt); + vasprintf(&dec->error, fmt, ap); + va_end(ap); +} + +void dec_cmd_init(void) +{ + 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(); + help_cmd_init(); +}