[libvirt] [PATCH] phyp: sed cleanups

Eric Blake eblake at redhat.com
Wed Jun 9 01:17:01 UTC 2010


* src/phyp/phyp_driver.c (phypNumDomainsGeneric): Avoid glob
collision by quoting sed argument.
(phypDomainSetCPU): Avoid non-portable \+ in sed.
(phypGetVIOSPartitionID, phypDiskType, phypListDomainsGeneric)
(phypListDefinedDomains): Micro-optimize anchored substitutions.
---

> > +    if (system_type == HMC) {
> > +        if (virAsprintf(&cmd,
> > +                        "lssyscfg -r lpar -m %s -F lpar_id,state %s |grep -c "
> > +                        "^[0-9]*", managed_system, state) < 0) {
> Ouch - a pre-existing bug.  Since this command is being fed to a shell,
> you need to properly quote the regex being fed to grep, so that it
> doesn't get interpreted as a glob matching a literal file (such as ^0)
> that happens to be in the same directory.  That should be fixed in an
> independent patch.

Like this one :)

> > +             "lssyscfg -r lpar -m %s -F lpar_id,state %s | sed -e 's/,.*$//g'",
> Here, a minor optimization - you don't need the g flag to that sed s///
> expression, since the regex is anchored to the end of the string (you
> can't replace more than one anchored expression per line).  But
> independent of this patch.

While I was touching the file...

 src/phyp/phyp_driver.c |   12 ++++++------
 1 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/phyp/phyp_driver.c b/src/phyp/phyp_driver.c
index 0f4bc20..f8d12e7 100644
--- a/src/phyp/phyp_driver.c
+++ b/src/phyp/phyp_driver.c
@@ -886,7 +886,7 @@ phypGetVIOSPartitionID(virConnectPtr conn)

     if (virAsprintf(&cmd,
                     "lssyscfg -m %s -r lpar -F lpar_id,lpar_env|grep "
-                    "vioserver|sed -s 's/,.*$//g'", managed_system) < 0) {
+                    "vioserver|sed -s 's/,.*$//'", managed_system) < 0) {
         virReportOOMError();
         goto err;
     }
@@ -925,7 +925,7 @@ phypDiskType(virConnectPtr conn, char *backing_device)

     if (virAsprintf(&cmd,
                     "viosvrcmd -m %s -p %d -c \"lssp -field name type "
-                    "-fmt , -all|grep %s|sed -e 's/^.*,//g'\"",
+                    "-fmt , -all|grep %s|sed -e 's/^.*,//'\"",
                     managed_system, vios_id, backing_device) < 0) {
         virReportOOMError();
         goto cleanup;
@@ -983,7 +983,7 @@ phypNumDomainsGeneric(virConnectPtr conn, unsigned int type)

     if (virAsprintf(&cmd,
                     "lssyscfg -r lpar -m %s -F lpar_id,state %s |grep -c "
-                    "^[0-9]*", managed_system, state) < 0) {
+                    "'^[0-9]*'", managed_system, state) < 0) {
         virReportOOMError();
         goto err;
     }
@@ -1051,7 +1051,7 @@ phypListDomainsGeneric(virConnectPtr conn, int *ids, int nids,

     if (virAsprintf
         (&cmd,
-         "lssyscfg -r lpar -m %s -F lpar_id,state %s | sed -e 's/,.*$//g'",
+         "lssyscfg -r lpar -m %s -F lpar_id,state %s | sed -e 's/,.*$//'",
          managed_system, state) < 0) {
         virReportOOMError();
         goto err;
@@ -1115,7 +1115,7 @@ phypListDefinedDomains(virConnectPtr conn, char **const names, int nnames)
     if (virAsprintf
         (&cmd,
          "lssyscfg -r lpar -m %s -F name,state | grep \"Not Activated\" | "
-         "sed -e 's/,.*$//g'", managed_system) < 0) {
+         "sed -e 's/,.*$//'", managed_system) < 0) {
         virReportOOMError();
         goto err;
     }
@@ -1539,7 +1539,7 @@ phypDomainSetCPU(virDomainPtr dom, unsigned int nvcpus)
     if (virAsprintf
         (&cmd,
          "chhwres -r proc -m %s --id %d -o %c --procunits %d 2>&1 |sed"
-         "-e 's/^.*\\([0-9]\\+.[0-9]\\+\\).*$/\\1/g'",
+         "-e 's/^.*\\([0-9][0-9]*.[0-9][0-9]*\\).*$/\\1/'",
          managed_system, dom->id, operation, amount) < 0) {
         virReportOOMError();
         goto err;
-- 
1.7.0.1




More information about the libvir-list mailing list