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"
42 static int readline_support = 1;
44 static int fileprocess(struct declaracao *dec, int fd)
54 while ((r = getline(&line, &lsz, f)) > 0) {
55 r = cmd_run(dec, line);
57 fprintf(stderr, "Não foi possível executar comando na linha %d: %s\n",
66 static int ttyprocess(struct declaracao *dec)
71 while ((line = readline("declara> ")) != NULL) {
74 r = cmd_run(dec, line);
76 fprintf(stderr, "Não foi possível executar comando: %s\n",
84 static int process(char *filename)
88 struct declaracao *dec;
89 dec = declaracao_new(-1);
92 if (filename != NULL) {
93 fd = open(filename, O_RDONLY);
98 r = fileprocess(dec, fd);
101 if (isatty(0) && readline_support) {
104 r = fileprocess(dec, 0);
108 declaracao_free(dec);
112 static void usage(void)
114 fprintf(stderr, "declara <filename>\n");
118 int main(int argc, char **argv)
120 char *filename = NULL;
122 if (!readline_support && argc < 2)
127 contribuinte_cmd_init();
129 rendimento_cmd_init();
131 pagamento_cmd_init();
133 dependente_cmd_init();
140 r = process(filename);