@@ -969,38 +969,38 @@ parse_option(int c, gnc_t gnc, void *closure, char *token)
969969
970970}
971971
972- int
973- parse_monitor_dump_filter (char * token , int * action_return , int c , gnc_t * gnc , void * closure )
972+ static int
973+ parse_monitor_dump_filter (int * action_return , int c , gnc_t * gnc , void * closure )
974974{
975- char * token2 = NULL ;
976- c = skip_whitespace (c , * gnc , closure );
977-
978- c = getword (c , & token2 , * gnc , closure );
979-
980975 int filter = 0 ;
981- if (token2 ) {
982- if (strcmp (token2 , "route" ) == 0 )
983- filter = FILTER_ROUTE ;
984- else if (strcmp (token2 , "interface" ) == 0 )
985- filter = FILTER_INTERFACE ;
986- else if (strcmp (token2 , "xroute" ) == 0 )
987- filter = FILTER_XROUTE ;
988- else if (strcmp (token2 , "neighbour" ) == 0 )
989- filter = FILTER_NEIGHBOUR ;
990- else
991- filter = FILTER_INVALID ;
992- free (token2 );
976+ char * token = NULL ;
977+
978+ c = skip_whitespace (c , * gnc , closure );
979+ c = getword (c , & token , * gnc , closure );
980+ if (c < -1 || token == NULL ) {
981+ free (token );
982+ return c ;
993983 }
994984
985+ if (strcmp (token , "route" ) == 0 )
986+ filter = FILTER_ROUTE ;
987+ else if (strcmp (token , "interface" ) == 0 )
988+ filter = FILTER_INTERFACE ;
989+ else if (strcmp (token , "xroute" ) == 0 )
990+ filter = FILTER_XROUTE ;
991+ else if (strcmp (token , "neighbour" ) == 0 )
992+ filter = FILTER_NEIGHBOUR ;
993+ else
994+ filter = FILTER_INVALID ;
995+ free (token );
996+
995997 c = skip_eol (c , * gnc , closure );
996998 if (filter < FILTER_INVALID ) {
997999 * action_return += filter ;
9981000 if (!filter ) // no (invalid) filters detected, show everything
999- c = -1 ;
1000- } else {
1001- c = -2 ;
1001+ return -1 ;
10021002 }
1003- return c ;
1003+ return -2 ;
10041004}
10051005
10061006static int
@@ -1031,13 +1031,13 @@ parse_config_line(int c, gnc_t gnc, void *closure,
10311031 * action_return = CONFIG_ACTION_QUIT ;
10321032 } else if (strcmp (token , "dump" ) == 0 ) {
10331033 * action_return = CONFIG_ACTION_DUMP ;
1034- c = parse_monitor_dump_filter (token , action_return , c , & gnc , closure );
1034+ c = parse_monitor_dump_filter (action_return , c , & gnc , closure );
10351035 } else if (strcmp (token , "monitor" ) == 0 ) {
10361036 * action_return = CONFIG_ACTION_MONITOR ;
1037- c = parse_monitor_dump_filter (token , action_return , c , & gnc , closure );
1037+ c = parse_monitor_dump_filter (action_return , c , & gnc , closure );
10381038 } else if (strcmp (token , "unmonitor" ) == 0 ) {
10391039 * action_return = CONFIG_ACTION_UNMONITOR ;
1040- c = parse_monitor_dump_filter (token , action_return , c , & gnc , closure );
1040+ c = parse_monitor_dump_filter (action_return , c , & gnc , closure );
10411041 } else if (config_finalised && !local_server_write ) {
10421042 /* The remaining directives are only allowed in read-write mode. */
10431043 c = skip_to_eol (c , gnc , closure );
0 commit comments