From: Ivana Hutarova Varekova Date: Thu, 18 Jul 2013 10:51:46 +0000 (+0200) Subject: parse: fix template parsing X-Git-Tag: v0.41~54 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4aed571c1997b4fff06712e25ad7208d92e110e0;p=thirdparty%2Flibcgroup.git parse: fix template parsing The old version has problem with name/value pairs parsing in template tag in parse.y. This patch fix it. Signed-off-by: Ivana Hutarova Varekova Acked-by: Jan Safranek --- diff --git a/src/parse.y b/src/parse.y index f51332c3..9adbc0ef 100644 --- a/src/parse.y +++ b/src/parse.y @@ -52,7 +52,8 @@ int yywrap(void) %type namevalue_conf %type template template_conf %type template_task_or_admin template_task_namevalue_conf -%type template_admin_namevalue_conf +%type template_admin_namevalue_conf template_task_conf +%type template_admin_conf %start start %% @@ -210,7 +211,7 @@ template_conf ; template_task_or_admin - : TASK '{' template_task_namevalue_conf '}' admin_conf + : TASK '{' template_task_namevalue_conf '}' template_admin_conf { $$ = $3 && $5; if (!$$) { @@ -220,7 +221,7 @@ template_task_or_admin return $$; } } - | ADMIN '{' template_admin_namevalue_conf '}' task_conf + | ADMIN '{' template_admin_namevalue_conf '}' template_task_conf { $$ = $3 && $5; if (!$$) { @@ -325,7 +326,7 @@ template_task_namevalue_conf return $$; } } - | task_namevalue_conf ID '=' ID ';' + | template_task_namevalue_conf ID '=' ID ';' { $$ = $1 && template_config_group_task_perm($2, $4); if (!$$) { @@ -348,7 +349,7 @@ template_admin_namevalue_conf return $$; } } - | admin_namevalue_conf ID '=' ID ';' + | template_admin_namevalue_conf ID '=' ID ';' { $$ = $1 && template_config_group_admin_perm($2, $4); if (!$$) { @@ -408,6 +409,30 @@ task_conf: TASK '{' task_namevalue_conf '}' } ; +template_admin_conf: ADMIN '{' template_admin_namevalue_conf '}' + { + $$ = $3; + if (!$$) { + fprintf(stderr, "parsing failed at line number %d\n", + line_no); + $$ = ECGCONFIGPARSEFAIL; + return $$; + } + } + ; + +template_task_conf: TASK '{' template_task_namevalue_conf '}' + { + $$ = $3; + if (!$$) { + fprintf(stderr, "parsing failed at line number %d\n", + line_no); + $$ = ECGCONFIGPARSEFAIL; + return $$; + } + } + ; + mountvalue_conf : ID '=' ID ';' {