mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-25 10:03:49 +03:00
Simplify the loop in virCommandRunRegex
Do not check for border iterator values inside the loop, move the code before/after the loop instead.
This commit is contained in:
parent
f01f62d43d
commit
cf4fb7d9a0
@ -2840,13 +2840,11 @@ virCommandRunRegex(virCommandPtr cmd,
|
||||
if (!p)
|
||||
p = lines[k];
|
||||
|
||||
ngroup = 0;
|
||||
for (i = 0; i < nregex; i++) {
|
||||
if (regexec(®[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]);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user