diff options
author | ache <ache@FreeBSD.org> | 2002-08-23 04:18:26 +0000 |
---|---|---|
committer | ache <ache@FreeBSD.org> | 2002-08-23 04:18:26 +0000 |
commit | e528806f994ecb3c23bf174011c94e71abaf5073 (patch) | |
tree | 2cda2e38523c261703b020223df90f38fef297dc /usr.bin/colldef/scan.l | |
parent | e1124db23a589e1d1236be6a72665e1315adacbd (diff) | |
download | FreeBSD-src-e528806f994ecb3c23bf174011c94e71abaf5073.zip FreeBSD-src-e528806f994ecb3c23bf174011c94e71abaf5073.tar.gz |
Allow chains in any form like <name1><name2> or \xf1\xf2, not binary
representation only.
Diffstat (limited to 'usr.bin/colldef/scan.l')
-rw-r--r-- | usr.bin/colldef/scan.l | 20 |
1 files changed, 3 insertions, 17 deletions
diff --git a/usr.bin/colldef/scan.l b/usr.bin/colldef/scan.l index 10b17c8..aeeff14 100644 --- a/usr.bin/colldef/scan.l +++ b/usr.bin/colldef/scan.l @@ -63,7 +63,6 @@ int yylex(void); <INITIAL,nchar,subs>\\v { yylval.ch = '\v'; return CHAR; } <INITIAL,nchar,subs>\\r { yylval.ch = '\r'; return CHAR; } <INITIAL,nchar,subs>\\a { yylval.ch = '\a'; return CHAR; } -<INITIAL,nchar,subs>\\. { yylval.ch = yytext[1]; return CHAR; } <subs2>\n { line_no++; BEGIN(INITIAL); @@ -90,28 +89,15 @@ int yylex(void); yylval.ch = (u_char)v; return CHAR; } -<INITIAL,nchar,subs>\\x[0-9a-z]{2} { +<INITIAL,nchar,subs>\\x[0-9a-fA-F]{2} { u_int v; sscanf(&yytext[2], "%x", &v); yylval.ch = (u_char)v; return CHAR; } -<INITIAL>[^;,{}() \t\n"<]+ { - if(yyleng == 1) { - yylval.ch = *yytext; - return CHAR; - } - if(yyleng > BUFSIZE - 1) - errx(EX_UNAVAILABLE, "chain buffer overflow near line %u", - line_no); - strcpy(yylval.str, yytext); - return CHAIN; -} -<nchar,subs>. { - yylval.ch = *yytext; - return CHAR; -} +<INITIAL,nchar,subs>\\. { yylval.ch = yytext[1]; return CHAR; } +<INITIAL,nchar,subs>. { yylval.ch = *yytext; return CHAR; } <defn>^#.*\n line_no++; <defn>[ \t]+ { if (ptr == buf) |