aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorJoão Valverde <joao.valverde@tecnico.ulisboa.pt>2015-12-31 09:51:52 +0000
committerMichael Mann <mmann78@netscape.net>2016-01-07 15:52:24 +0000
commitcac0ab63ee39fb7a5532296363c53dee1074e550 (patch)
tree41d636656b6995e6754f75f4a647c67288f76d57 /tools
parentb178e9cc0535629c9d527f9b49161ba01d6c0d96 (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.c57
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;
}
}