aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2011-05-21 07:38:16 +0300
committerSergey Poznyakoff <gray@gnu.org.ua>2011-05-22 20:32:29 +0300
commit024cfd63846c0c7ef630a5dab819ad97942264a1 (patch)
treed01c3d40a2008e1831de62957be8e0449d9611c0 /src
parentd253fa956809a1497583212109d33fd4f1a05b31 (diff)
downloadgrecs-024cfd63846c0c7ef630a5dab819ad97942264a1.tar.gz
grecs-024cfd63846c0c7ef630a5dab819ad97942264a1.tar.bz2
bind: handle ! prefix in acls.
Diffstat (limited to 'src')
-rw-r--r--src/bind-gram.y9
-rw-r--r--src/bind-lex.l2
2 files changed, 10 insertions, 1 deletions
diff --git a/src/bind-gram.y b/src/bind-gram.y
index fadd3f5..5acc780 100644
--- a/src/bind-gram.y
+++ b/src/bind-gram.y
@@ -108,6 +108,15 @@ simple : BIND_IDENT vallist ';'
$$->ident = $1;
$$->v.value = NULL;
}
+ | '!' string ';'
+ {
+ $$ = grecs_node_create(grecs_node_stmt,
+ &grecs_current_locus);
+ $$->ident = grecs_strdup("!");
+ $$->v.value = grecs_malloc(sizeof($$->v.value[0]));
+ $$->v.value->type = GRECS_TYPE_STRING;
+ $$->v.value->v.string = $2;
+ }
;
block : BIND_IDENT tag '{' stmtlist '}' ';'
diff --git a/src/bind-lex.l b/src/bind-lex.l
index f5fd66d..440b17a 100644
--- a/src/bind-lex.l
+++ b/src/bind-lex.l
@@ -90,7 +90,7 @@ P [1-9][0-9]*
{WS} ;
/* Other tokens */
\n { grecs_current_locus.line++; }
-[,;{}()] return yytext[0];
+[,;{}()!] return yytext[0];
. { if (isascii(yytext[0]) && isprint(yytext[0]))
grecs_error(&grecs_current_locus, 0,
_("stray character %c"), yytext[0]);

Return to:

Send suggestions and report system problems to the System administrator.