Add -Wall -Werror to AM_INIT_AUTOMAKE
[zilutils.git] / zilc / main.c
1 /*
2  * main.c
3  *
4  * Copyright (C) 2015 Alexander Andrejevic <theflash AT sdf DOT lonestar DOT org>
5  *
6  * This program is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU Affero General Public License as
8  * published by the Free Software Foundation, either version 3 of the
9  * License, or (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU Affero General Public License for more details.
15  *
16  * You should have received a copy of the GNU Affero General Public License
17  * along with this program.  If not, see <http://www.gnu.org/licenses/>
18  */
19
20 #include <stdlib.h>
21 #include <stdio.h>
22 #include <getopt.h>
23
24 int main(int argc, char *argv[], char *envp[])
25 {
26     int verbose = 0;
27     extern FILE *yyin;
28
29     while (1)
30     {
31         int option_index;
32         static struct option long_options[] =
33         {
34             { "verbose", no_argument, NULL, 'v'},
35             { NULL,      0,           NULL, 0  }
36         };
37
38         int choice = getopt_long(argc, argv, "v", long_options, &option_index);
39         if (choice == -1) break;
40
41         switch (choice)
42         {
43         case 'v':
44             verbose++;
45             break;
46         }
47     }
48
49     if (optind == argc)
50     {
51         fprintf(stderr, "No input files specified.\n");
52         return EXIT_FAILURE;
53     }
54
55     while (optind < argc)
56     {
57         char *filename = argv[optind++];
58
59         yyin = fopen(filename, "r");
60         if (yyin == NULL)
61         {
62             fprintf(stderr, "Cannot open input file: %s\n", filename);
63             continue;
64         }
65
66         switch (yyparse())
67         {
68         case 0:
69             if (verbose) fprintf(stdout, "%s: Done parsing.\n", filename);
70             break;
71
72         case 1:
73             fprintf(stderr, "%s: errors encountered.", filename);
74             break;
75
76         case 2:
77             fprintf(stderr, "%s: out of memory.\n", filename);
78             break;
79         }
80     }
81
82     return EXIT_SUCCESS;
83 }