extern int parse_error;
int sudolineno = 1;
char *sudoers;
-static int sawspace = 0;
+static int sawspace = FALSE;
+static int continued = FALSE;
static int prev_state = INITIAL;
static int _push_include __P((char *, int));
\\[[:blank:]]*\n[[:blank:]]* {
/* Line continuation char followed by newline. */
++sudolineno;
- LEXTRACE("\n");
+ continued = TRUE;
}
\" {
<INITIAL>^#include[[:blank:]]+\/.*\n {
char *path;
+ if (continued) {
+ LEXTRACE("ERROR ");
+ return ERROR;
+ }
+
if ((path = parse_include(yytext)) == NULL)
yyterminate();
<INITIAL>^#includedir[[:blank:]]+\/.*\n {
char *path;
+ if (continued) {
+ LEXTRACE("ERROR ");
+ return ERROR;
+ }
+
if ((path = parse_include(yytext)) == NULL)
yyterminate();
<INITIAL>^[[:blank:]]*Defaults([:@>\!][[:blank:]]*\!*\"?{WORD})? {
char deftype;
int n;
+
+ if (continued) {
+ LEXTRACE("ERROR ");
+ return ERROR;
+ }
+
for (n = 0; isblank((unsigned char)yytext[n]); n++)
continue;
n += sizeof("Defaults") - 1;
<INITIAL>^[[:blank:]]*(Host|Cmnd|User|Runas)_Alias {
int n;
+
+ if (continued) {
+ LEXTRACE("ERROR ");
+ return ERROR;
+ }
+
for (n = 0; isblank((unsigned char)yytext[n]); n++)
continue;
switch (yytext[n]) {
<*>\n {
BEGIN INITIAL;
++sudolineno;
+ continued = FALSE;
LEXTRACE("\n");
return COMMENT;
} /* return newline */
<*>\\[[:blank:]]*\n {
sawspace = TRUE; /* remember for fill_args */
++sudolineno;
- LEXTRACE("\n\t");
+ continued = TRUE;
} /* throw away EOL after \ */
<INITIAL,STARTDEFS,INDEFS>#(-[^\n0-9].*|[^\n0-9-].*)?\n {
BEGIN INITIAL;
++sudolineno;
- LEXTRACE("\n");
+ continued = FALSE;
+ LEXTRACE("#\n");
return COMMENT;
} /* comment, not uid/gid */