]> git.ipfire.org Git - thirdparty/libcgroup.git/commitdiff
parse: fix template parsing
authorIvana Hutarova Varekova <varekova@redhat.com>
Thu, 18 Jul 2013 10:51:46 +0000 (12:51 +0200)
committerIvana Hutarova Varekova <varekova@redhat.com>
Thu, 18 Jul 2013 10:51:46 +0000 (12:51 +0200)
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 <varekova@redhat.com>
Acked-by: Jan Safranek <jsafrane@redhat.com>
src/parse.y

index f51332c32345863bb0cca8286ebd1b8270c6d359..9adbc0ef0270bc91716ca6838dd90a2072864b52 100644 (file)
@@ -52,7 +52,8 @@ int yywrap(void)
 %type <values> namevalue_conf
 %type <val> template template_conf
 %type <val> template_task_or_admin template_task_namevalue_conf
-%type <val> template_admin_namevalue_conf
+%type <val> template_admin_namevalue_conf template_task_conf
+%type <val> 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 ';'
        {