summaryrefslogtreecommitdiffstats
path: root/usr.bin/colldef/scan.l
diff options
context:
space:
mode:
authorache <ache@FreeBSD.org>2002-08-23 04:18:26 +0000
committerache <ache@FreeBSD.org>2002-08-23 04:18:26 +0000
commite528806f994ecb3c23bf174011c94e71abaf5073 (patch)
tree2cda2e38523c261703b020223df90f38fef297dc /usr.bin/colldef/scan.l
parente1124db23a589e1d1236be6a72665e1315adacbd (diff)
downloadFreeBSD-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.l20
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)
OpenPOWER on IntegriCloud