diff options
author | João Valverde <joao.valverde@tecnico.ulisboa.pt> | 2015-12-31 09:51:52 +0000 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2016-01-07 15:52:24 +0000 |
commit | cac0ab63ee39fb7a5532296363c53dee1074e550 (patch) | |
tree | 41d636656b6995e6754f75f4a647c67288f76d57 /tools | |
parent | b178e9cc0535629c9d527f9b49161ba01d6c0d96 (diff) |
lemon: Fix warnings [-Wpedantic]
Change-Id: I7b350b2c4de5f86de24c8f2309016f3de7af8516
Reviewed-on: https://code.wireshark.org/review/12959
Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com>
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Tested-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/lemon/lemon.c | 57 |
1 files changed, 31 insertions, 26 deletions
diff --git a/tools/lemon/lemon.c b/tools/lemon/lemon.c index 5a214a45a3..9dd33d6c50 100644 --- a/tools/lemon/lemon.c +++ b/tools/lemon/lemon.c @@ -191,7 +191,8 @@ enum option_type { OPT_FLAG=1, OPT_INT, OPT_DBL, OPT_STR, struct s_options { enum option_type type; const char *label; - char *arg; + void *arg; + void (*arg_cb)(void *); const char *message; }; int OptInit(char**,struct s_options*,FILE*); @@ -200,6 +201,8 @@ char *OptArg(int); void OptErr(int); void OptPrint(void); +static int IgnoredOptArg; + /******** From the file "parse.h" *****************************************/ void Parse(struct lemon *lemp); @@ -1503,7 +1506,8 @@ static char **azDefine = 0; /* Name of the -D macros */ /* This routine is called with the argument to each -D command-line option. ** Add the macro defined to the azDefine array. */ -static void handle_D_option(char *z){ +static void handle_D_option(void *arg){ + char *z = (char *)arg; char **paz; nDefine++; azDefine = (char **) realloc(azDefine, sizeof(azDefine[0])*nDefine); @@ -1523,7 +1527,8 @@ static void handle_D_option(char *z){ } static char *user_templatename = NULL; -static void handle_T_option(char *z){ +static void handle_T_option(void *arg){ + char *z = (char *)arg; user_templatename = (char *) malloc( lemonStrlen(z)+1 ); if( user_templatename==0 ){ memory_error(); @@ -1544,25 +1549,25 @@ int main(int argc _U_, char **argv) static int nolinenosflag = 0; static int noResort = 0; static struct s_options options[] = { - {OPT_FLAG, "b", (char*)&basisflag, "Print only the basis in report."}, - {OPT_FLAG, "c", (char*)&compress, "Don't compress the action table."}, - {OPT_FSTR, "D", (char*)handle_D_option, "Define an %ifdef macro."}, - {OPT_FSTR, "f", 0, "Ignored. (Placeholder for -f compiler options.)"}, - {OPT_FLAG, "g", (char*)&rpflag, "Print grammar without actions."}, - {OPT_FSTR, "I", 0, "Ignored. (Placeholder for '-I' compiler options.)"}, - {OPT_FLAG, "m", (char*)&mhflag, "Output a makeheaders compatible file."}, - {OPT_FLAG, "l", (char*)&nolinenosflag, "Do not print #line statements."}, - {OPT_FSTR, "O", 0, "Ignored. (Placeholder for '-O' compiler options.)"}, - {OPT_FLAG, "p", (char*)&showPrecedenceConflict, + {OPT_FLAG, "b", &basisflag, NULL, "Print only the basis in report."}, + {OPT_FLAG, "c", &compress, NULL, "Don't compress the action table."}, + {OPT_FSTR, "D", NULL, handle_D_option, "Define an %ifdef macro."}, + {OPT_FSTR, "f", &IgnoredOptArg, NULL, "Ignored. (Placeholder for -f compiler options.)"}, + {OPT_FLAG, "g", &rpflag, NULL, "Print grammar without actions."}, + {OPT_FSTR, "I", &IgnoredOptArg, NULL, "Ignored. (Placeholder for '-I' compiler options.)"}, + {OPT_FLAG, "m", &mhflag, NULL, "Output a makeheaders compatible file."}, + {OPT_FLAG, "l", &nolinenosflag, NULL, "Do not print #line statements."}, + {OPT_FSTR, "O", &IgnoredOptArg, NULL, "Ignored. (Placeholder for '-O' compiler options.)"}, + {OPT_FLAG, "p", &showPrecedenceConflict, NULL, "Show conflicts resolved by precedence rules"}, - {OPT_FLAG, "q", (char*)&quiet, "(Quiet) Don't print the report file."}, - {OPT_FLAG, "r", (char*)&noResort, "Do not sort or renumber states"}, - {OPT_FLAG, "s", (char*)&statistics, + {OPT_FLAG, "q", &quiet, NULL, "(Quiet) Don't print the report file."}, + {OPT_FLAG, "r", &noResort, NULL, "Do not sort or renumber states"}, + {OPT_FLAG, "s", &statistics, NULL, "Print parser stats to standard output."}, - {OPT_FLAG, "x", (char*)&version, "Print the version number."}, - {OPT_FSTR, "T", (char*)handle_T_option, "Specify a template file."}, - {OPT_FSTR, "W", 0, "Ignored. (Placeholder for '-W' compiler options.)"}, - {OPT_FLAG,0,0,0} + {OPT_FLAG, "x", &version, NULL,"Print the version number."}, + {OPT_FSTR, "T", NULL, handle_T_option, "Specify a template file."}, + {OPT_FSTR, "W", &IgnoredOptArg, NULL, "Ignored. (Placeholder for '-W' compiler options.)"}, + {OPT_FLAG, NULL, NULL, NULL, NULL} }; int i; int exitcode; @@ -1869,14 +1874,14 @@ static int handleflags(int i, FILE *err) errline(i,1,err); } errcnt++; - }else if( op[j].arg==0 ){ + }else if( op[j].arg==&IgnoredOptArg ){ /* Ignore this option */ }else if( op[j].type==OPT_FLAG ){ *((int*)op[j].arg) = v; }else if( op[j].type==OPT_FFLAG ){ - (*(void(*)(int))(op[j].arg))(v); + op[j].arg_cb(&v); }else if( op[j].type==OPT_FSTR ){ - (*(void(*)(char *))(op[j].arg))(&argv[i][2]); + op[j].arg_cb(&argv[i][2]); }else{ if( err ){ fprintf(err,"%smissing argument on switch.\n",emsg); @@ -1957,19 +1962,19 @@ static int handleswitch(int i, FILE *err) *(double*)(op[j].arg) = dv; break; case OPT_FDBL: - (*(void(*)(double))(op[j].arg))(dv); + op[j].arg_cb(&dv); break; case OPT_INT: *(int*)(op[j].arg) = lv; break; case OPT_FINT: - (*(void(*)(int))(op[j].arg))((int)lv); + op[j].arg_cb(&lv); break; case OPT_STR: *(char**)(op[j].arg) = sv; break; case OPT_FSTR: - (*(void(*)(char *))(op[j].arg))(sv); + op[j].arg_cb(sv); break; } } |