[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [PATCH 1/1] [RFC] lvm storage backend: handle command_names=1 in lvm.conf



On 09/15/2011 08:17 AM, Serge E. Hallyn wrote:
If the regexes supported (?:pvs)?, then we could handle this by
optionally matching but not returning the initial command name.  But it
doesn't.  So add a new char* argument to
virStorageBackendRunProgRegex().  If that argument is NULL then we act
as usual.  Otherwise, if the string at that argument is found at the
start of a returned line, we drop that before running the regex.

Yeah, ignoring a prefix seems like the right approach, since we can't rely on non-capturing regex extensions.


+        p = line;
+        /* if cmd_to_ignore is specified, then ignore it */
+        if (strncmp(line, cmd_to_ignore, strlen(cmd_to_ignore)) == 0)

'make syntax-check' should have called you on this; you should be using STRPREFIX here. Something like (untested):

diff --git i/src/storage/storage_backend.c w/src/storage/storage_backend.c
index 7a352da..3415918 100644
--- i/src/storage/storage_backend.c
+++ w/src/storage/storage_backend.c
@@ -1460,16 +1460,17 @@ virStorageBackendRunProgRegex(virStoragePoolObjPtr pool,
     }

     while (fgets(line, sizeof(line), list) != NULL) {
-        char *p;
+        char *p = NULL;
         /* Strip trailing newline */
         int len = strlen(line);
         if (len && line[len-1] == '\n')
             line[len-1] = '\0';

-        p = line;
         /* if cmd_to_ignore is specified, then ignore it */
-        if (strncmp(line, cmd_to_ignore, strlen(cmd_to_ignore)) == 0)
-            p += strlen(cmd_to_ignore);
+        if (cmd_to_ignore)
+            p = STRSKIP(line, cmd_to_ignore);
+        if (!p)
+            p = line;

         for (i = 0 ; i <= maxReg && i < nregex ; i++) {
             if (regexec(&reg[i], p, nvars[i]+1, vars, 0) == 0) {


--
Eric Blake   eblake redhat com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]