2 * Copyright (C) 2015 Thadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 3 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License along
15 * with this program; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
26 #include <readline/readline.h>
27 #include <readline/history.h>
29 #include "declaracao.h"
32 #include "contribuinte.h"
34 #include "rendimento.h"
36 #include "pagamento.h"
38 #include "dependente.h"
43 static int readline_support = 1;
45 static int fileprocess(struct declaracao *dec, int fd)
55 while ((r = getline(&line, &lsz, f)) > 0) {
56 r = cmd_run(dec, line);
58 fprintf(stderr, "Não foi possível executar comando na linha %d: %s\n",
67 static int ttyprocess(struct declaracao *dec)
72 while ((line = readline("declara> ")) != NULL) {
75 r = cmd_run(dec, line);
77 fprintf(stderr, "Não foi possível executar comando: %s\n",
85 static int process(char *filename)
89 struct declaracao *dec;
90 dec = declaracao_new(-1);
93 if (filename != NULL) {
94 fd = open(filename, O_RDONLY);
99 r = fileprocess(dec, fd);
102 if (isatty(0) && readline_support) {
105 r = fileprocess(dec, 0);
109 declaracao_free(dec);
113 static void usage(void)
115 fprintf(stderr, "declara <filename>\n");
119 int main(int argc, char **argv)
121 char *filename = NULL;
123 if (!readline_support && argc < 2)
128 contribuinte_cmd_init();
130 rendimento_cmd_init();
132 pagamento_cmd_init();
134 dependente_cmd_init();
142 r = process(filename);