]> xenbits.xensource.com Git - libvirt.git/commitdiff
Simplify the loop in virCommandRunRegex
authorJán Tomko <jtomko@redhat.com>
Thu, 20 Mar 2014 12:05:13 +0000 (13:05 +0100)
committerJán Tomko <jtomko@redhat.com>
Wed, 26 Mar 2014 14:06:09 +0000 (15:06 +0100)
Do not check for border iterator values inside the loop,
move the code before/after the loop instead.

src/util/vircommand.c

index 4777d66c788bf8ba376de7479906c33531d93ab7..8a288133527258c0ed7cc7418475509db5adf7e3 100644 (file)
@@ -2840,13 +2840,11 @@ virCommandRunRegex(virCommandPtr cmd,
         if (!p)
             p = lines[k];
 
+        ngroup = 0;
         for (i = 0; i < nregex; i++) {
             if (regexec(&reg[i], p, nvars[i]+1, vars, 0) != 0)
                 break;
 
-            if (i == 0)
-                ngroup = 0;
-
             /* NULL terminate each captured group in the line */
             for (j = 0; j < nvars[i]; j++) {
                 /* NB vars[0] is the full pattern, so we offset j by 1 */
@@ -2855,16 +2853,14 @@ virCommandRunRegex(virCommandPtr cmd,
                     goto cleanup;
             }
 
-            /* We're matching on the last regex, so callback time */
-            if (i == (nregex-1)) {
-                if (((*func)(groups, data)) < 0)
-                    goto cleanup;
+        }
+        /* We've matched on the last regex, so callback time */
+        if (i == nregex) {
+            if (((*func)(groups, data)) < 0)
+                goto cleanup;
 
-                /* Release matches & restart to matching the first regex */
-                for (j = 0; j < totgroups; j++)
-                    VIR_FREE(groups[j]);
-                ngroup = 0;
-            }
+            for (j = 0; j < totgroups; j++)
+                VIR_FREE(groups[j]);
         }
     }