Resolve a conflict between the angle bracket
indicating file inclusion and the one starting a valid RFC822 address.
Showing
1 changed file
with
9 additions
and
3 deletions
... | @@ -345,12 +345,18 @@ WORD [^ \t\n,:;<+=\*]+ | ... | @@ -345,12 +345,18 @@ WORD [^ \t\n,:;<+=\*]+ |
345 | return STRING;} | 345 | return STRING;} |
346 | {WS} ; | 346 | {WS} ; |
347 | {WORD} { yylval.string = strdup (yytext); return STRING;} | 347 | {WORD} { yylval.string = strdup (yytext); return STRING;} |
348 | "<"{WS}{WORD} { char *p; | 348 | ^{WS}?"<"{WS}?{WORD} { char *p; |
349 | 349 | for (p = yytext; p < yytext + yyleng && isblank(*p); p++) | |
350 | for (p = yytext + 1; p < yytext + yyleng; p++) | 350 | ; |
351 | for (p++; p < yytext + yyleng; p++) | ||
351 | if (!isspace (*p)) | 352 | if (!isspace (*p)) |
352 | break; | 353 | break; |
353 | push_source (p, 1); } | 354 | push_source (p, 1); } |
355 | "<"{WORD} { yylval.string = xmalloc (yyleng + 2); | ||
356 | yylval.string[0] = '<'; | ||
357 | memcpy(yylval.string, yytext, yyleng); | ||
358 | yylval.string[yyleng+1] = 0; | ||
359 | return STRING;} | ||
354 | =|\*|\+|,|:|\; return yytext[0]; | 360 | =|\*|\+|,|:|\; return yytext[0]; |
355 | . { char *p; | 361 | . { char *p; |
356 | asprintf (&p, | 362 | asprintf (&p, | ... | ... |
-
Please register or sign in to post a comment