]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
build: avoid useless virAsprintf
authorEric Blake <eblake@redhat.com>
Thu, 2 May 2013 19:35:26 +0000 (13:35 -0600)
committerEric Blake <eblake@redhat.com>
Thu, 2 May 2013 19:35:26 +0000 (13:35 -0600)
virAsprintf(&foo, "%s", bar) is wasteful compared to
foo = strdup(bar) (or eventually, VIR_STRDUP(foo, bar),
but one thing at a time...).

Noticed while reviewing Laine's attempt to clean up broken
qemu:///session.

* cfg.mk (sc_prohibit_asprintf): Enhance rule.
* src/esx/esx_storage_backend_vmfs.c
(esxStorageBackendVMFSVolumeLookupByKey): Fix offender.
* src/network/bridge_driver.c (networkStateInitialize): Likewise.
* src/nwfilter/nwfilter_dhcpsnoop.c (virNWFilterSnoopDHCPOpen):
Likewise.
* src/storage/storage_backend_sheepdog.c
(virStorageBackendSheepdogRefreshVol): Likewise.
* src/util/vircgroup.c (virCgroupAddTaskStrController): Likewise.
* src/util/virdnsmasq.c (addnhostsAdd): Likewise.
* src/xen/block_stats.c (xenLinuxDomainDeviceID): Likewise.
* src/xen/xen_driver.c (xenUnifiedConnectOpen): Likewise.
* tools/virsh.c (vshGetTypedParamValue): Likewise.

Signed-off-by: Eric Blake <eblake@redhat.com>
cfg.mk
src/esx/esx_storage_backend_vmfs.c
src/network/bridge_driver.c
src/nwfilter/nwfilter_dhcpsnoop.c
src/storage/storage_backend_sheepdog.c
src/util/vircgroup.c
src/util/virdnsmasq.c
src/xen/block_stats.c
src/xen/xen_driver.c
tools/virsh.c

diff --git a/cfg.mk b/cfg.mk
index d499dede191ceb9528879036f4b8437ec914409d..1d63bbd2b77033d92ecc66557f218a7bc814ea52 100644 (file)
--- a/cfg.mk
+++ b/cfg.mk
@@ -378,10 +378,14 @@ sc_prohibit_strtol:
          $(_sc_search_regexp)
 
 # Use virAsprintf rather than as'printf since *strp is undefined on error.
+# But for plain %s, virAsprintf is overkill compared to strdup.
 sc_prohibit_asprintf:
        @prohibit='\<v?a[s]printf\>'                                    \
        halt='use virAsprintf, not as'printf                            \
          $(_sc_search_regexp)
+       @prohibit='virAsprintf.*, *"%s",'                               \
+       halt='use strdup instead of virAsprintf with "%s"'              \
+         $(_sc_search_regexp)
 
 # Prefer virSetUIDGID.
 sc_prohibit_setuid:
index dea6716453f4e06ad24d006987ee7a224a87c832..5d6f18327ff576e4222d900e65a3bb4389ca32b8 100644 (file)
@@ -3,7 +3,7 @@
  * esx_storage_backend_vmfs.c: ESX storage driver backend for
  *                             managing VMFS datastores
  *
- * Copyright (C) 2010-2011 Red Hat, Inc.
+ * Copyright (C) 2010-2011, 2013 Red Hat, Inc.
  * Copyright (C) 2010-2012 Matthias Bolte <matthias.bolte@googlemail.com>
  * Copyright (C) 2012 Ata E Husain Bohra <ata.husain@hotmail.com>
  *
@@ -791,8 +791,7 @@ esxStorageBackendVMFSVolumeLookupByKey(virConnectPtr conn, const char *key)
                 VIR_FREE(datastorePath);
 
                 if (length < 1) {
-                    if (virAsprintf(&volumeName, "%s",
-                                    fileInfo->path) < 0) {
+                    if (!(volumeName = strdup(fileInfo->path))) {
                         virReportOOMError();
                         goto cleanup;
                     }
index 35202f178110bfbde988dd2e0a383d769b80329f..3ddea18d2b59ed9b00bbc5943bb7c170066d2644 100644 (file)
@@ -393,12 +393,9 @@ networkStateInitialize(bool privileged,
         }
         VIR_FREE(userdir);
 
-        userdir = virGetUserConfigDirectory();
-        if (virAsprintf(&base, "%s", userdir) == -1) {
-            VIR_FREE(userdir);
-            goto out_of_memory;
-        }
-        VIR_FREE(userdir);
+        base = virGetUserConfigDirectory();
+        if (!base)
+            goto error;
     }
 
     /* Configuration paths are either ~/.libvirt/qemu/... (session) or
index df11e891345d7af7736f049796d4f1804974dbd1..50042dfa4c80c6657079749eb3fcb24716c099e1 100644 (file)
@@ -2,7 +2,7 @@
  * nwfilter_dhcpsnoop.c: support for DHCP snooping used by a VM
  *                       on an interface
  *
- * Copyright (C) 2012 Red Hat, Inc.
+ * Copyright (C) 2012-2013 Red Hat, Inc.
  * Copyright (C) 2011,2012 IBM Corp.
  *
  * Authors:
@@ -1110,7 +1110,7 @@ virNWFilterSnoopDHCPOpen(const char *ifname, virMacAddr *mac,
          * generate much more traffic than if we filtered by VM and
          * braodcast MAC as well
          */
-        if (virAsprintf(&ext_filter, "%s", filter) < 0) {
+        if (!(ext_filter = strdup(filter))) {
             virReportOOMError();
             return NULL;
         }
index a9ee7d3a9ca2249af54f65fafd9d50fe7f9d609a..2e62e6d417ef9bf54db96dfd0f5570cd23216b77 100644 (file)
@@ -1,6 +1,7 @@
 /*
  * storage_backend_sheepdog.c: storage backend for Sheepdog handling
  *
+ * Copyright (C) 2013 Red Hat, Inc.
  * Copyright (C) 2012 Wido den Hollander
  * Copyright (C) 2012 Frank Spijkerman
  * Copyright (C) 2012 Sebastian Wiedenroth
@@ -268,7 +269,7 @@ virStorageBackendSheepdogRefreshVol(virConnectPtr conn ATTRIBUTE_UNUSED,
     }
 
     VIR_FREE(vol->target.path);
-    if (virAsprintf(&vol->target.path, "%s", vol->name) == -1) {
+    if (!(vol->target.path = strdup(vol->name))) {
         virReportOOMError();
         goto cleanup;
     }
index b05fc4535b2fc1f963a1c1bf12a6801b2da195db..473d2fc42926285e9b08580dab41e103de62a43c 100644 (file)
@@ -1027,7 +1027,7 @@ static int virCgroupAddTaskStrController(virCgroupPtr group,
     int rc = 0;
     char *endp;
 
-    if (virAsprintf(&str, "%s", pidstr) < 0)
+    if (!(str = strdup(pidstr)))
         return -1;
 
     cur = str;
index 4f0563317bf50c7c5310ab3623ffd7c8049fdff2..36f31d236e3824f26b024493e62190483c089a70 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * virdnsmasq.c: Helper APIs for managing dnsmasq
  *
- * Copyright (C) 2007-2012 Red Hat, Inc.
+ * Copyright (C) 2007-2013 Red Hat, Inc.
  * Copyright (C) 2010 Satoru SATOH <satoru.satoh@gmail.com>
  *
  * This library is free software; you can redistribute it and/or
@@ -118,7 +118,7 @@ addnhostsAdd(dnsmasqAddnHostsfile *addnhostsfile,
         if (VIR_ALLOC(addnhostsfile->hosts[idx].hostnames) < 0)
             goto alloc_error;
 
-        if (virAsprintf(&addnhostsfile->hosts[idx].ip, "%s", ipstr) < 0)
+        if (!(addnhostsfile->hosts[idx].ip = strdup(ipstr)))
             goto alloc_error;
 
         addnhostsfile->hosts[idx].nhostnames = 0;
@@ -128,7 +128,8 @@ addnhostsAdd(dnsmasqAddnHostsfile *addnhostsfile,
     if (VIR_REALLOC_N(addnhostsfile->hosts[idx].hostnames, addnhostsfile->hosts[idx].nhostnames + 1) < 0)
         goto alloc_error;
 
-    if (virAsprintf(&addnhostsfile->hosts[idx].hostnames[addnhostsfile->hosts[idx].nhostnames], "%s", name) < 0)
+    if (!(addnhostsfile->hosts[idx].hostnames[addnhostsfile->hosts[idx].nhostnames]
+          = strdup(name)))
         goto alloc_error;
 
     VIR_FREE(ipstr);
index 8c18ed591fc79ce658f8cc2ae80a690acc190cc5..ded8d7f5f12c063b7c27165bd7ff87770d4fca05 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Linux block and network stats.
  *
- * Copyright (C) 2007-2009 Red Hat, Inc.
+ * Copyright (C) 2007-2009, 2013 Red Hat, Inc.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -293,11 +293,11 @@ xenLinuxDomainDeviceID(int domid, const char *path)
      */
 
     if (strlen(path) >= 5 && STRPREFIX(path, "/dev/"))
-        retval = virAsprintf(&mod_path, "%s", path);
+        mod_path = strdup(path);
     else
-        retval = virAsprintf(&mod_path, "/dev/%s", path);
+        ignore_value(virAsprintf(&mod_path, "/dev/%s", path));
 
-    if (retval < 0) {
+    if (!mod_path) {
         virReportOOMError();
         return -1;
     }
index 938205ed5d26608b1e5f19cb8e7777c8826ab1f9..6ad050c4ee8814bc9a05af7b551a80ffcce748dc 100644 (file)
@@ -443,7 +443,7 @@ xenUnifiedConnectOpen(virConnectPtr conn, virConnectAuthPtr auth, unsigned int f
     }
 #endif
 
-    if (virAsprintf(&priv->saveDir, "%s", XEN_SAVE_DIR) == -1) {
+    if (!(priv->saveDir = strdup(XEN_SAVE_DIR))) {
         virReportOOMError();
         goto fail;
     }
index 22bcec2bed0112b82bea99d5ba3a84246af6a5da..7ef0bda291de6cb3deb8c85b2d86ec31233f9df2 100644 (file)
@@ -2181,7 +2181,7 @@ vshGetTypedParamValue(vshControl *ctl, virTypedParameterPtr item)
         break;
 
     case VIR_TYPED_PARAM_BOOLEAN:
-        ret = virAsprintf(&str, "%s", item->value.b ? _("yes") : _("no"));
+        str = vshStrdup(ctl, item->value.b ? _("yes") : _("no"));
         break;
 
     case VIR_TYPED_PARAM_STRING: