diff options
author | Diego Nieto Cid <dnietoc@gmail.com> | 2010-07-20 14:10:18 -0300 |
---|---|---|
committer | Diego Nieto Cid <dnietoc@gmail.com> | 2011-04-08 14:36:18 -0300 |
commit | 650a8244fcb3a2f7897842d70073a491832b918e (patch) | |
tree | 123cf25a0f2269e5c1f12ba15246d88ef987bc5b | |
parent | 22e017432a130728b5b0f535aa490bfaaadacc73 (diff) |
Check for end of file.
* console-client/xkb/parser.y [!YY_NULL]: Define YY_NULL, the end of
file token.
* console-client/xkb/parser.y (skip_to_sectionname): If the end of file
is reached while skipping symbols return an error.
Return 0 on success.
* console-client/xkb/parser.y (skip_to_defaultsection): Likewise.
-rw-r--r-- | console-client/xkb/parser.y | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/console-client/xkb/parser.y b/console-client/xkb/parser.y index d6e27c79..866dc34f 100644 --- a/console-client/xkb/parser.y +++ b/console-client/xkb/parser.y @@ -78,6 +78,10 @@ mergemode merge_mode = override; //#define YYDEBUG 1 +#ifndef YY_NULL +#define YY_NULL 0 +#endif + static struct keytype *current_keytype; %} @@ -1142,7 +1146,7 @@ geometry: %% /* Skip all tokens until a section of the type SECTIONSYMBOL with the name SECTIONNAME is found. */ -static void +static int skip_to_sectionname (char *sectionname, int sectionsymbol) { int symbol; @@ -1152,17 +1156,22 @@ skip_to_sectionname (char *sectionname, int sectionsymbol) do { symbol = yylex (); - } while (symbol != sectionsymbol); - symbol = yylex (); + } while ((symbol != YY_NULL) && (symbol != sectionsymbol)); + + if (symbol != YY_NULL) + symbol = yylex (); - if (symbol != STR) + if (symbol == YY_NULL) { + return 1; + } else if (symbol != STR) continue; } while (strcmp (yylval.str, sectionname)); + return 0; } /* Skip all tokens until the default section is found. */ -static void +static int skip_to_defaultsection (void) { int symbol; @@ -1170,14 +1179,17 @@ skip_to_defaultsection (void) /* Search the default section. */ do { - symbol = yylex (); + if ((symbol = yylex ()) == YY_NULL) + return 1; } while (symbol != DEFAULT); do { - symbol = yylex (); + if ((symbol = yylex ()) == YY_NULL) + return 1; } while (symbol != '{'); scanner_unput ('{'); + return 0; } /* Include a single file. INCL is the filename. SECTIONSYMBOL is the |