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

[libvirt] [PATCH] avoid many format string warnings



Rather than manually editing 140+ diagnostics in 20 files (tedious
and error-prone), I wrote a script to do the job (fun and reusable).
There was only one change that required manual intervention,
and that was because gcc doesn't yet know about the glibc/printf-
specific %m format specifier.

One disadvantage of doing it this way is that lines can only get longer
since I added no code to wrap them, but that is outweighed by being
able to automate the process.  And who knows... maybe someone will be
motivated to teach this little script how to break+reindent long lines.

#!/usr/bin/perl
use strict;
use warnings;
(my $ME = $0) =~ s|.*/||;

# collect name/lineno pairs from output of gcc -W...
my $w = 'warning: format not a string literal and no format arguments';
my $lineno = {};
while (<>)
  {
    /^(\S+?\.c):(\d+): $w/
      or next;
    $lineno->{$1} ||= {};
    $lineno->{$1}->{$2} = undef
  }

foreach my $file (sort keys %$lineno)
  {
    # Read in all lines of $file.
    open FH, '<', $file
      or die "$ME: can't open `$file' for reading: $!\n";
    my @line = <FH>;
    close FH;

    my $h = $lineno->{$file};
    my @line_nums = sort { $a <=> $b } keys %$h;

    # Perform required substitutions.
    foreach my $k (@line_nums)
      {
        # Handle 3 cases:
        # 1: ... f(arg, arg2, ..., _("...")
        # 2: ... _("...")
        # 3: ... f(arg, arg2,\n
        #          _("...")
        # print "$file: $k: $line[$k-1]";
        $line[$k-1] =~ /(.*, )(_\(.*)/
          and ($line[$k-1] = qq!$1"%s", $2\n!), next;

        $line[$k-1] =~ /^( *)(_\(.*)/
          and ($line[$k-1] = qq!$1"%s", $2\n!), next;

        defined $line[$k] && $line[$k] =~ /^( *)(_\(.*)/
          and ($line[$k] = qq!$1"%s", $2\n!), next;

        warn "$file:$k: no match\n";
      }

    # Write them to temp file.
    my $tmp = "$file-t";
    open FH, '>', $tmp
      or die "$ME: can't open `$tmp' for writing: $!\n";
    print FH @line;
    close FH
      or die "$ME: failed to write `$tmp': $!\n";

    # Move temp file back onto original.
    rename $tmp, $file
      or die "$ME: failed to rename: `$tmp' -> `$file': $!\n";
  }

# Local variables:
#  indent-tabs-mode: nil
# End:
>From 18a0f97ae36c4ba31f1f0262558c09683b788c4d Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyering redhat com>
Date: Mon, 13 Oct 2008 14:12:01 +0200
Subject: [PATCH] avoid many format string warnings

Building with --disable-nls exposed many new warnings like these:
virsh.c:4952: warning: format not a string literal and no format ...
util.c:163: warning: format not a string literal and no format arguments
All but one of the following changes add a "%s" argument before
the offending _(...) argument.

This was the only manual change:
* src/lxc_driver.c (lxcVersion): Use %s and strerror(errno)
rather than %m, to avoid a warning from gcc -Wformat-security.

Add "%s" before each warned about format-string-with-no-%-directive:
* src/domain_conf.c (virDomainHostdevSubsysUsbDefParseXML)
(virDomainDefParseString, virDomainDefParseFile):
* src/hash.c (virGetConnect, __virGetDomain, virReleaseDomain)
(__virGetNetwork, virReleaseNetwork, __virGetStoragePool)
(virReleaseStoragePool, __virGetStorageVol, virReleaseStorageVol):
* src/lxc_container.c (lxcContainerChild):
* src/lxc_driver.c (lxcDomainDefine, lxcDomainUndefine)
(lxcDomainGetInfo, lxcGetOSType, lxcDomainDumpXML)
(lxcSetupInterfaces, lxcDomainStart, lxcDomainCreateAndStart)
(lxcVersion, lxcGetSchedulerParameters):
* src/network_conf.c (virNetworkDefParseString)
(virNetworkDefParseFile):
* src/openvz_conf.c (openvzReadNetworkConf, openvzLoadDomains):
* src/openvz_driver.c (openvzDomainDefineCmd)
(openvzDomainGetInfo, openvzDomainDumpXML, openvzDomainShutdown)
(openvzDomainReboot, ADD_ARG_LIT, openvzDomainDefineXML)
(openvzDomainCreateXML, openvzDomainCreate, openvzDomainUndefine)
(openvzDomainSetAutostart, openvzDomainGetAutostart)
(openvzDomainSetVcpus):
* src/qemu_driver.c (qemudDomainBlockPeek, qemudDomainMemoryPeek):
* src/remote_internal.c (remoteDomainBlockPeek)
(remoteDomainMemoryPeek, remoteAuthPolkit):
* src/sexpr.c (sexpr_new, _string2sexpr):
* src/storage_backend_disk.c (virStorageBackendDiskMakeDataVol)
(virStorageBackendDiskCreateVol):
* src/storage_backend_fs.c
(virStorageBackendFileSystemNetFindPoolSources):
* src/storage_backend_logical.c (virStorageBackendLogicalFindLVs)
(virStorageBackendLogicalFindPoolSources):
* src/test.c (testOpenDefault, testOpenFromFile, testOpen)
(testGetDomainInfo, testDomainRestore)
(testNodeGetCellsFreeMemory):
* src/util.c (virExec):
* src/virsh.c (cmdAttachDevice, cmdDetachDevice)
(cmdAttachInterface, cmdDetachInterface, cmdAttachDisk)
(cmdDetachDisk, cmdEdit):
* src/xend_internal.c (do_connect, wr_sync, xend_op_ext)
(urlencode, xenDaemonDomainCreateXML)
(xenDaemonDomainLookupByName_ids, xenDaemonDomainLookupByID)
(xenDaemonParseSxprOS, xend_parse_sexp_desc_char)
(xenDaemonParseSxprChar, xenDaemonParseSxprDisks)
(xenDaemonParseSxpr, sexpr_to_xend_topology, sexpr_to_domain)
(xenDaemonDomainFetch, xenDaemonDomainGetAutostart)
(xenDaemonDomainSetAutostart, xenDaemonDomainMigratePerform)
(xenDaemonDomainDefineXML, xenDaemonGetSchedulerType)
(xenDaemonGetSchedulerParameters)
(xenDaemonSetSchedulerParameters, xenDaemonDomainBlockPeek)
(xenDaemonFormatSxprChr, virDomainXMLDevID):
* src/xm_internal.c (xenXMConfigCacheRefresh, xenXMDomainPinVcpu)
(xenXMDomainCreate, xenXMDomainDefineXML)
(xenXMDomainAttachDevice, xenXMDomainDetachDevice):
* src/xml.c (virXPathString, virXPathNumber, virXPathLong)
(virXPathULong, virXPathBoolean, virXPathNode, virXPathNodeSet):
* src/xs_internal.c (xenStoreOpen):
---
 src/domain_conf.c             |    8 +-
 src/hash.c                    |   36 +++++-----
 src/lxc_container.c           |    2 +-
 src/lxc_driver.c              |   24 ++++----
 src/network_conf.c            |    4 +-
 src/openvz_conf.c             |   12 ++--
 src/openvz_driver.c           |   50 +++++++-------
 src/qemu_driver.c             |    8 +-
 src/remote_internal.c         |    6 +-
 src/sexpr.c                   |    6 +-
 src/storage_backend_disk.c    |   20 +++---
 src/storage_backend_fs.c      |    2 +-
 src/storage_backend_logical.c |    4 +-
 src/test.c                    |   50 +++++++-------
 src/util.c                    |    8 +-
 src/virsh.c                   |   14 ++--
 src/xend_internal.c           |  142 ++++++++++++++++++++--------------------
 src/xm_internal.c             |   38 ++++++------
 src/xml.c                     |   16 ++--
 src/xs_internal.c             |    2 +-
 20 files changed, 226 insertions(+), 226 deletions(-)

diff --git a/src/domain_conf.c b/src/domain_conf.c
index f57fb2d..82140f8 100644
--- a/src/domain_conf.c
+++ b/src/domain_conf.c
@@ -1523,13 +1523,13 @@ virDomainHostdevSubsysUsbDefParseXML(virConnectPtr conn,
     if (def->source.subsys.usb.vendor == 0 &&
         def->source.subsys.usb.product != 0) {
         virDomainReportError(conn, VIR_ERR_INTERNAL_ERROR,
-            _("missing vendor"));
+            "%s", _("missing vendor"));
         goto out;
     }
     if (def->source.subsys.usb.vendor != 0 &&
         def->source.subsys.usb.product == 0) {
         virDomainReportError(conn, VIR_ERR_INTERNAL_ERROR,
-            _("missing product"));
+            "%s", _("missing product"));
         goto out;
     }

@@ -2243,7 +2243,7 @@ virDomainDefPtr virDomainDefParseString(virConnectPtr conn,
     if (!xml) {
         if (conn && conn->err.code == VIR_ERR_NONE)
               virDomainReportError(conn, VIR_ERR_XML_ERROR,
-                                   _("failed to parse xml document"));
+                                   "%s", _("failed to parse xml document"));
         goto cleanup;
     }

@@ -2284,7 +2284,7 @@ virDomainDefPtr virDomainDefParseFile(virConnectPtr conn,
     if (!xml) {
         if (conn && conn->err.code == VIR_ERR_NONE)
               virDomainReportError(conn, VIR_ERR_XML_ERROR,
-                                   _("failed to parse xml document"));
+                                   "%s", _("failed to parse xml document"));
         goto cleanup;
     }

diff --git a/src/hash.c b/src/hash.c
index 3efda2c..0a5bdcd 100644
--- a/src/hash.c
+++ b/src/hash.c
@@ -667,7 +667,7 @@ virGetConnect(void) {
     virConnectPtr ret;

     if (VIR_ALLOC(ret) < 0) {
-        virHashError(NULL, VIR_ERR_NO_MEMORY, _("allocating connection"));
+        virHashError(NULL, VIR_ERR_NO_MEMORY, "%s", _("allocating connection"));
         goto failed;
     }
     ret->magic = VIR_CONNECT_MAGIC;
@@ -801,12 +801,12 @@ __virGetDomain(virConnectPtr conn, const char *name, const unsigned char *uuid)
     /* TODO check the UUID */
     if (ret == NULL) {
         if (VIR_ALLOC(ret) < 0) {
-            virHashError(conn, VIR_ERR_NO_MEMORY, _("allocating domain"));
+            virHashError(conn, VIR_ERR_NO_MEMORY, "%s", _("allocating domain"));
             goto error;
         }
         ret->name = strdup(name);
         if (ret->name == NULL) {
-            virHashError(conn, VIR_ERR_NO_MEMORY, _("allocating domain"));
+            virHashError(conn, VIR_ERR_NO_MEMORY, "%s", _("allocating domain"));
             goto error;
         }
         ret->magic = VIR_DOMAIN_MAGIC;
@@ -817,7 +817,7 @@ __virGetDomain(virConnectPtr conn, const char *name, const unsigned char *uuid)

         if (virHashAddEntry(conn->domains, name, ret) < 0) {
             virHashError(conn, VIR_ERR_INTERNAL_ERROR,
-                         _("failed to add domain to connection hash table"));
+                         "%s", _("failed to add domain to connection hash table"));
             goto error;
         }
         conn->refs++;
@@ -858,7 +858,7 @@ virReleaseDomain(virDomainPtr domain) {
     /* TODO search by UUID first as they are better differenciators */
     if (virHashRemoveEntry(conn->domains, domain->name, NULL) < 0)
         virHashError(conn, VIR_ERR_INTERNAL_ERROR,
-                     _("domain missing from connection hash table"));
+                     "%s", _("domain missing from connection hash table"));

     if (conn->err.dom == domain)
         conn->err.dom = NULL;
@@ -941,12 +941,12 @@ __virGetNetwork(virConnectPtr conn, const char *name, const unsigned char *uuid)
     /* TODO check the UUID */
     if (ret == NULL) {
         if (VIR_ALLOC(ret) < 0) {
-            virHashError(conn, VIR_ERR_NO_MEMORY, _("allocating network"));
+            virHashError(conn, VIR_ERR_NO_MEMORY, "%s", _("allocating network"));
             goto error;
         }
         ret->name = strdup(name);
         if (ret->name == NULL) {
-            virHashError(conn, VIR_ERR_NO_MEMORY, _("allocating network"));
+            virHashError(conn, VIR_ERR_NO_MEMORY, "%s", _("allocating network"));
             goto error;
         }
         ret->magic = VIR_NETWORK_MAGIC;
@@ -956,7 +956,7 @@ __virGetNetwork(virConnectPtr conn, const char *name, const unsigned char *uuid)

         if (virHashAddEntry(conn->networks, name, ret) < 0) {
             virHashError(conn, VIR_ERR_INTERNAL_ERROR,
-                         _("failed to add network to connection hash table"));
+                         "%s", _("failed to add network to connection hash table"));
             goto error;
         }
         conn->refs++;
@@ -994,7 +994,7 @@ virReleaseNetwork(virNetworkPtr network) {
     /* TODO search by UUID first as they are better differenciators */
     if (virHashRemoveEntry(conn->networks, network->name, NULL) < 0)
         virHashError(conn, VIR_ERR_INTERNAL_ERROR,
-                     _("network missing from connection hash table"));
+                     "%s", _("network missing from connection hash table"));

     if (conn->err.net == network)
         conn->err.net = NULL;
@@ -1078,12 +1078,12 @@ __virGetStoragePool(virConnectPtr conn, const char *name, const unsigned char *u
     /* TODO check the UUID */
     if (ret == NULL) {
         if (VIR_ALLOC(ret) < 0) {
-            virHashError(conn, VIR_ERR_NO_MEMORY, _("allocating storage pool"));
+            virHashError(conn, VIR_ERR_NO_MEMORY, "%s", _("allocating storage pool"));
             goto error;
         }
         ret->name = strdup(name);
         if (ret->name == NULL) {
-            virHashError(conn, VIR_ERR_NO_MEMORY, _("allocating storage pool"));
+            virHashError(conn, VIR_ERR_NO_MEMORY, "%s", _("allocating storage pool"));
             goto error;
         }
         ret->magic = VIR_STORAGE_POOL_MAGIC;
@@ -1093,7 +1093,7 @@ __virGetStoragePool(virConnectPtr conn, const char *name, const unsigned char *u

         if (virHashAddEntry(conn->storagePools, name, ret) < 0) {
             virHashError(conn, VIR_ERR_INTERNAL_ERROR,
-                         _("failed to add storage pool to connection hash table"));
+                         "%s", _("failed to add storage pool to connection hash table"));
             goto error;
         }
         conn->refs++;
@@ -1132,7 +1132,7 @@ virReleaseStoragePool(virStoragePoolPtr pool) {
     /* TODO search by UUID first as they are better differenciators */
     if (virHashRemoveEntry(conn->storagePools, pool->name, NULL) < 0)
         virHashError(conn, VIR_ERR_INTERNAL_ERROR,
-                     _("pool missing from connection hash table"));
+                     "%s", _("pool missing from connection hash table"));

     pool->magic = -1;
     VIR_FREE(pool->name);
@@ -1209,17 +1209,17 @@ __virGetStorageVol(virConnectPtr conn, const char *pool, const char *name, const
     ret = (virStorageVolPtr) virHashLookup(conn->storageVols, key);
     if (ret == NULL) {
         if (VIR_ALLOC(ret) < 0) {
-            virHashError(conn, VIR_ERR_NO_MEMORY, _("allocating storage vol"));
+            virHashError(conn, VIR_ERR_NO_MEMORY, "%s", _("allocating storage vol"));
             goto error;
         }
         ret->pool = strdup(pool);
         if (ret->pool == NULL) {
-            virHashError(conn, VIR_ERR_NO_MEMORY, _("allocating storage vol"));
+            virHashError(conn, VIR_ERR_NO_MEMORY, "%s", _("allocating storage vol"));
             goto error;
         }
         ret->name = strdup(name);
         if (ret->name == NULL) {
-            virHashError(conn, VIR_ERR_NO_MEMORY, _("allocating storage vol"));
+            virHashError(conn, VIR_ERR_NO_MEMORY, "%s", _("allocating storage vol"));
             goto error;
         }
         strncpy(ret->key, key, sizeof(ret->key)-1);
@@ -1229,7 +1229,7 @@ __virGetStorageVol(virConnectPtr conn, const char *pool, const char *name, const

         if (virHashAddEntry(conn->storageVols, key, ret) < 0) {
             virHashError(conn, VIR_ERR_INTERNAL_ERROR,
-                         _("failed to add storage vol to connection hash table"));
+                         "%s", _("failed to add storage vol to connection hash table"));
             goto error;
         }
         conn->refs++;
@@ -1269,7 +1269,7 @@ virReleaseStorageVol(virStorageVolPtr vol) {
     /* TODO search by UUID first as they are better differenciators */
     if (virHashRemoveEntry(conn->storageVols, vol->key, NULL) < 0)
         virHashError(conn, VIR_ERR_INTERNAL_ERROR,
-                     _("vol missing from connection hash table"));
+                     "%s", _("vol missing from connection hash table"));

     vol->magic = -1;
     VIR_FREE(vol->name);
diff --git a/src/lxc_container.c b/src/lxc_container.c
index 379e0af..e94b2d5 100644
--- a/src/lxc_container.c
+++ b/src/lxc_container.c
@@ -547,7 +547,7 @@ static int lxcContainerChild( void *data )

     if (NULL == vmDef) {
         lxcError(NULL, NULL, VIR_ERR_INTERNAL_ERROR,
-                 _("lxcChild() passed invalid vm definition"));
+                 "%s", _("lxcChild() passed invalid vm definition"));
         return -1;
     }

diff --git a/src/lxc_driver.c b/src/lxc_driver.c
index e5e1d6a..c598d1d 100644
--- a/src/lxc_driver.c
+++ b/src/lxc_driver.c
@@ -230,7 +230,7 @@ static virDomainPtr lxcDomainDefine(virConnectPtr conn, const char *xml)

     if ((def->nets != NULL) && !(driver->have_netns)) {
         lxcError(conn, NULL, VIR_ERR_NO_SUPPORT,
-                 _("System lacks NETNS support"));
+                 "%s", _("System lacks NETNS support"));
         virDomainDefFree(def);
         return NULL;
     }
@@ -263,13 +263,13 @@ static int lxcDomainUndefine(virDomainPtr dom)

     if (!vm) {
         lxcError(dom->conn, dom, VIR_ERR_INVALID_DOMAIN,
-                 _("no domain with matching uuid"));
+                 "%s", _("no domain with matching uuid"));
         return -1;
     }

     if (virDomainIsActive(vm)) {
         lxcError(dom->conn, dom, VIR_ERR_INTERNAL_ERROR,
-                 _("cannot delete active domain"));
+                 "%s", _("cannot delete active domain"));
         return -1;
     }

@@ -298,7 +298,7 @@ static int lxcDomainGetInfo(virDomainPtr dom,

     if (!vm) {
         lxcError(dom->conn, dom, VIR_ERR_INVALID_DOMAIN,
-                 _("no domain with matching uuid"));
+                 "%s", _("no domain with matching uuid"));
         return -1;
     }

@@ -324,7 +324,7 @@ static char *lxcGetOSType(virDomainPtr dom)

     if (!vm) {
         lxcError(dom->conn, dom, VIR_ERR_INVALID_DOMAIN,
-                 _("no domain with matching uuid"));
+                 "%s", _("no domain with matching uuid"));
         return NULL;
     }

@@ -339,7 +339,7 @@ static char *lxcDomainDumpXML(virDomainPtr dom,

     if (!vm) {
         lxcError(dom->conn, dom, VIR_ERR_INVALID_DOMAIN,
-                 _("no domain with matching uuid"));
+                 "%s", _("no domain with matching uuid"));
         return NULL;
     }

@@ -458,7 +458,7 @@ static int lxcSetupInterfaces(virConnectPtr conn,
         DEBUG("bridge: %s", bridge);
         if (NULL == bridge) {
             lxcError(conn, NULL, VIR_ERR_INTERNAL_ERROR,
-                     _("failed to get bridge for interface"));
+                     "%s", _("failed to get bridge for interface"));
             goto error_exit;
         }

@@ -482,7 +482,7 @@ static int lxcSetupInterfaces(virConnectPtr conn,

         if (NULL == def->nets[i]->ifname) {
             lxcError(NULL, NULL, VIR_ERR_INTERNAL_ERROR,
-                     _("failed to allocate veth names"));
+                     "%s", _("failed to allocate veth names"));
             goto error_exit;
         }

@@ -861,7 +861,7 @@ static int lxcDomainStart(virDomainPtr dom)

     if ((vm->def->nets != NULL) && !(driver->have_netns)) {
         lxcError(conn, NULL, VIR_ERR_NO_SUPPORT,
-                 _("System lacks NETNS support"));
+                 "%s", _("System lacks NETNS support"));
         goto cleanup;
     }

@@ -896,7 +896,7 @@ lxcDomainCreateAndStart(virConnectPtr conn,
     if ((def->nets != NULL) && !(driver->have_netns)) {
         virDomainDefFree(def);
         lxcError(conn, NULL, VIR_ERR_NO_SUPPORT,
-                 _("System lacks NETNS support"));
+                 "%s", _("System lacks NETNS support"));
         goto return_point;
     }

@@ -1113,7 +1113,7 @@ static int lxcVersion(virConnectPtr conn, unsigned long *version)

     if (uname(&ver) != 0) {
         lxcError(conn, NULL, VIR_ERR_INTERNAL_ERROR,
-                 _("uname(): %m"));
+                 _("uname(): %s"), strerror(errno));
         return -1;
     }

@@ -1193,7 +1193,7 @@ static int lxcGetSchedulerParameters(virDomainPtr _domain,

     if ((*nparams) != 1) {
         lxcError(NULL, _domain, VIR_ERR_INVALID_ARG,
-                 _("Invalid parameter count"));
+                 "%s", _("Invalid parameter count"));
         return -1;
     }

diff --git a/src/network_conf.c b/src/network_conf.c
index 8107b39..4c32fa1 100644
--- a/src/network_conf.c
+++ b/src/network_conf.c
@@ -452,7 +452,7 @@ virNetworkDefPtr virNetworkDefParseString(virConnectPtr conn,
     if (!xml) {
         if (conn && conn->err.code == VIR_ERR_NONE)
               virNetworkReportError(conn, VIR_ERR_XML_ERROR,
-                                    _("failed to parse xml document"));
+                                    "%s", _("failed to parse xml document"));
         goto cleanup;
     }

@@ -492,7 +492,7 @@ virNetworkDefPtr virNetworkDefParseFile(virConnectPtr conn,
     if (!xml) {
         if (conn && conn->err.code == VIR_ERR_NONE)
               virNetworkReportError(conn, VIR_ERR_XML_ERROR,
-                                    _("failed to parse xml document"));
+                                    "%s", _("failed to parse xml document"));
         goto cleanup;
     }

diff --git a/src/openvz_conf.c b/src/openvz_conf.c
index a2553d0..afd18a6 100644
--- a/src/openvz_conf.c
+++ b/src/openvz_conf.c
@@ -222,7 +222,7 @@ openvzReadNetworkConf(virConnectPtr conn,
                     len = next - p;
                     if (len > 16) {
                         openvzError(conn, VIR_ERR_INTERNAL_ERROR,
-                                _("Too long network device name"));
+                                "%s", _("Too long network device name"));
                         goto error;
                     }

@@ -239,14 +239,14 @@ openvzReadNetworkConf(virConnectPtr conn,
                     len = next - p;
                     if (len != 17) { //should be 17
                         openvzError(conn, VIR_ERR_INTERNAL_ERROR,
-                              _("Wrong length MAC address"));
+                              "%s", _("Wrong length MAC address"));
                         goto error;
                     }
                     strncpy(cpy_temp, p, len);
                     cpy_temp[len] = '\0';
                     if (openvzParseMac(cpy_temp, net->mac)<0) {
                         openvzError(conn, VIR_ERR_INTERNAL_ERROR,
-                              _("Wrong MAC address"));
+                              "%s", _("Wrong MAC address"));
                         goto error;
                     }
                 } else if (STRPREFIX(p, "host_mac=")) {
@@ -299,7 +299,7 @@ int openvzLoadDomains(struct openvz_driver *driver) {
         return -1;

     if ((fp = popen(VZLIST " -a -ovpsid,status -H 2>/dev/null", "r")) == NULL) {
-        openvzError(NULL, VIR_ERR_INTERNAL_ERROR, _("popen failed"));
+        openvzError(NULL, VIR_ERR_INTERNAL_ERROR, "%s", _("popen failed"));
         return -1;
     }

@@ -309,7 +309,7 @@ int openvzLoadDomains(struct openvz_driver *driver) {
                 break;

             openvzError(NULL, VIR_ERR_INTERNAL_ERROR,
-                        _("Failed to parse vzlist output"));
+                        "%s", _("Failed to parse vzlist output"));
             goto cleanup;
         }

@@ -335,7 +335,7 @@ int openvzLoadDomains(struct openvz_driver *driver) {

         if (ret == -1) {
             openvzError(NULL, VIR_ERR_INTERNAL_ERROR,
-                        _("UUID in config file malformed"));
+                        "%s", _("UUID in config file malformed"));
             goto cleanup;
         }

diff --git a/src/openvz_driver.c b/src/openvz_driver.c
index e3e3cc7..b82d0df 100644
--- a/src/openvz_driver.c
+++ b/src/openvz_driver.c
@@ -92,7 +92,7 @@ static int openvzDomainDefineCmd(virConnectPtr conn,

     if (vmdef == NULL){
         openvzError(conn, VIR_ERR_INTERNAL_ERROR,
-                   _("Container is not defined"));
+                   "%s", _("Container is not defined"));
         return -1;
     }

@@ -235,7 +235,7 @@ static int openvzDomainGetInfo(virDomainPtr dom,

     if (!vm) {
         openvzError(dom->conn, VIR_ERR_INVALID_DOMAIN,
-                    _("no domain with matching uuid"));
+                    "%s", _("no domain with matching uuid"));
         return -1;
     }

@@ -264,7 +264,7 @@ static char *openvzDomainDumpXML(virDomainPtr dom, int flags) {

     if (!vm) {
         openvzError(dom->conn, VIR_ERR_INVALID_DOMAIN,
-                    _("no domain with matching uuid"));
+                    "%s", _("no domain with matching uuid"));
         return NULL;
     }

@@ -280,13 +280,13 @@ static int openvzDomainShutdown(virDomainPtr dom) {

     if (!vm) {
         openvzError(dom->conn, VIR_ERR_INVALID_DOMAIN,
-                    _("no domain with matching uuid"));
+                    "%s", _("no domain with matching uuid"));
         return -1;
     }

     if (vm->state != VIR_DOMAIN_RUNNING) {
         openvzError(dom->conn, VIR_ERR_INTERNAL_ERROR,
-                    _("domain is not in running state"));
+                    "%s", _("domain is not in running state"));
         return -1;
     }

@@ -307,13 +307,13 @@ static int openvzDomainReboot(virDomainPtr dom,

     if (!vm) {
         openvzError(dom->conn, VIR_ERR_INVALID_DOMAIN,
-                    _("no domain with matching uuid"));
+                    "%s", _("no domain with matching uuid"));
         return -1;
     }

     if (vm->state != VIR_DOMAIN_RUNNING) {
         openvzError(dom->conn, VIR_ERR_INTERNAL_ERROR,
-                    _("domain is not in running state"));
+                    "%s", _("domain is not in running state"));
         return -1;
     }

@@ -344,7 +344,7 @@ openvzDomainSetNetwork(virConnectPtr conn, const char *vpsid,
        return 0;
     if (vpsid == NULL) {
         openvzError(conn, VIR_ERR_INTERNAL_ERROR,
-                    _("Container ID is not specified"));
+                    "%s", _("Container ID is not specified"));
         return -1;
     }

@@ -444,7 +444,7 @@ openvzDomainDefineXML(virConnectPtr conn, const char *xml)

     if (openvzDomainDefineCmd(conn, prog, OPENVZ_MAX_ARG, vmdef) < 0) {
         openvzError(conn, VIR_ERR_INTERNAL_ERROR,
-                _("Error creating command for container"));
+                "%s", _("Error creating command for container"));
         goto exit;
     }

@@ -458,7 +458,7 @@ openvzDomainDefineXML(virConnectPtr conn, const char *xml)

     if (openvzSetDefinedUUID(strtoI(vmdef->name), vmdef->uuid) < 0) {
         openvzError(conn, VIR_ERR_INTERNAL_ERROR,
-               _("Could not set UUID"));
+               "%s", _("Could not set UUID"));
         goto exit;
     }

@@ -469,7 +469,7 @@ openvzDomainDefineXML(virConnectPtr conn, const char *xml)
     for (i = 0 ; i < vmdef->nnets ; i++) {
         if (openvzDomainSetNetwork(conn, vmdef->name, vmdef->nets[i]) < 0) {
             openvzError(conn, VIR_ERR_INTERNAL_ERROR,
-                        _("Could not configure network"));
+                        "%s", _("Could not configure network"));
             goto exit;
         }
     }
@@ -477,7 +477,7 @@ openvzDomainDefineXML(virConnectPtr conn, const char *xml)
     if (vmdef->vcpus > 0) {
         if (openvzDomainSetVcpus(dom, vmdef->vcpus) < 0) {
             openvzError(conn, VIR_ERR_INTERNAL_ERROR,
-                     _("Could not set number of virtual cpu"));
+                     "%s", _("Could not set number of virtual cpu"));
              goto exit;
         }
     }
@@ -524,7 +524,7 @@ openvzDomainCreateXML(virConnectPtr conn, const char *xml,

     if (openvzDomainDefineCmd(conn, progcreate, OPENVZ_MAX_ARG, vmdef) < 0) {
         openvzError(conn, VIR_ERR_INTERNAL_ERROR,
-                _("Error creating command for container"));
+                "%s", _("Error creating command for container"));
         goto exit;
     }

@@ -536,14 +536,14 @@ openvzDomainCreateXML(virConnectPtr conn, const char *xml,

     if (openvzSetDefinedUUID(strtoI(vmdef->name), vmdef->uuid) < 0) {
         openvzError(conn, VIR_ERR_INTERNAL_ERROR,
-               _("Could not set UUID"));
+               "%s", _("Could not set UUID"));
         goto exit;
     }

     for (i = 0 ; i < vmdef->nnets ; i++) {
         if (openvzDomainSetNetwork(conn, vmdef->name, vmdef->nets[i]) < 0) {
             openvzError(conn, VIR_ERR_INTERNAL_ERROR,
-                        _("Could not configure network"));
+                        "%s", _("Could not configure network"));
             goto exit;
         }
     }
@@ -567,7 +567,7 @@ openvzDomainCreateXML(virConnectPtr conn, const char *xml,
     if (vmdef->vcpus > 0) {
         if (openvzDomainSetVcpus(dom, vmdef->vcpus) < 0) {
             openvzError(conn, VIR_ERR_INTERNAL_ERROR,
-                        _("Could not set number of virtual cpu"));
+                        "%s", _("Could not set number of virtual cpu"));
             goto exit;
         }
     }
@@ -586,13 +586,13 @@ openvzDomainCreate(virDomainPtr dom)

     if (!vm) {
         openvzError(dom->conn, VIR_ERR_INVALID_DOMAIN,
-              _("no domain with matching id"));
+              "%s", _("no domain with matching id"));
         return -1;
     }

     if (vm->state != VIR_DOMAIN_SHUTOFF) {
         openvzError(dom->conn, VIR_ERR_OPERATION_DENIED,
-              _("domain is not in shutoff state"));
+              "%s", _("domain is not in shutoff state"));
         return -1;
     }

@@ -618,12 +618,12 @@ openvzDomainUndefine(virDomainPtr dom)
     const char *prog[] = { VZCTL, "--quiet", "destroy", vm ? vm->def->name : NULL, NULL };

     if (!vm) {
-        openvzError(conn, VIR_ERR_INVALID_DOMAIN, _("no domain with matching uuid"));
+        openvzError(conn, VIR_ERR_INVALID_DOMAIN, "%s", _("no domain with matching uuid"));
         return -1;
     }

     if (virDomainIsActive(vm)) {
-        openvzError(conn, VIR_ERR_INTERNAL_ERROR, _("cannot delete active domain"));
+        openvzError(conn, VIR_ERR_INTERNAL_ERROR, "%s", _("cannot delete active domain"));
         return -1;
     }

@@ -649,7 +649,7 @@ openvzDomainSetAutostart(virDomainPtr dom, int autostart)
                            "--save", NULL };

     if (!vm) {
-        openvzError(conn, VIR_ERR_INVALID_DOMAIN, _("no domain with matching uuid"));
+        openvzError(conn, VIR_ERR_INVALID_DOMAIN, "%s", _("no domain with matching uuid"));
         return -1;
     }

@@ -670,12 +670,12 @@ openvzDomainGetAutostart(virDomainPtr dom, int *autostart)
     char value[1024];

     if (!vm) {
-        openvzError(conn, VIR_ERR_INVALID_DOMAIN, _("no domain with matching uuid"));
+        openvzError(conn, VIR_ERR_INVALID_DOMAIN, "%s", _("no domain with matching uuid"));
         return -1;
     }

     if (openvzReadConfigParam(strtoI(vm->def->name), "ONBOOT", value, sizeof(value)) < 0) {
-        openvzError(conn, VIR_ERR_INTERNAL_ERROR, _("Could not read container config"));
+        openvzError(conn, VIR_ERR_INTERNAL_ERROR, "%s", _("Could not read container config"));
         return -1;
     }

@@ -711,13 +711,13 @@ static int openvzDomainSetVcpus(virDomainPtr dom, unsigned int nvcpus) {

     if (!vm) {
         openvzError(conn, VIR_ERR_INVALID_DOMAIN,
-                    _("no domain with matching uuid"));
+                    "%s", _("no domain with matching uuid"));
         return -1;
     }

     if (nvcpus <= 0) {
         openvzError(conn, VIR_ERR_INTERNAL_ERROR,
-                    _("VCPUs should be >= 1"));
+                    "%s", _("VCPUs should be >= 1"));
         return -1;
     }

diff --git a/src/qemu_driver.c b/src/qemu_driver.c
index 689c992..624c8d8 100644
--- a/src/qemu_driver.c
+++ b/src/qemu_driver.c
@@ -2941,13 +2941,13 @@ qemudDomainBlockPeek (virDomainPtr dom,

     if (!vm) {
         qemudReportError (dom->conn, dom, NULL, VIR_ERR_INVALID_DOMAIN,
-                          _("no domain with matching uuid"));
+                          "%s", _("no domain with matching uuid"));
         return -1;
     }

     if (!path || path[0] == '\0') {
         qemudReportError(dom->conn, dom, NULL, VIR_ERR_INVALID_ARG,
-                         _("NULL or empty path"));
+                         "%s", _("NULL or empty path"));
         return -1;
     }

@@ -2958,7 +2958,7 @@ qemudDomainBlockPeek (virDomainPtr dom,
             goto found;
     }
     qemudReportError (dom->conn, dom, NULL, VIR_ERR_INVALID_ARG,
-                      _("invalid path"));
+                      "%s", _("invalid path"));
     return -1;

 found:
@@ -3001,7 +3001,7 @@ qemudDomainMemoryPeek (virDomainPtr dom,

     if (flags != VIR_MEMORY_VIRTUAL) {
         qemudReportError (dom->conn, dom, NULL, VIR_ERR_INVALID_ARG,
-                          _("QEMU driver only supports virtual memory addrs"));
+                          "%s", _("QEMU driver only supports virtual memory addrs"));
         return -1;
     }

diff --git a/src/remote_internal.c b/src/remote_internal.c
index 2f3a261..35b7b4b 100644
--- a/src/remote_internal.c
+++ b/src/remote_internal.c
@@ -2364,7 +2364,7 @@ remoteDomainBlockPeek (virDomainPtr domain,

     if (ret.buffer.buffer_len != size) {
             errorf (domain->conn, VIR_ERR_RPC,
-                    _("returned buffer is not same size as requested"));
+                    "%s", _("returned buffer is not same size as requested"));
             free (ret.buffer.buffer_val);
             return -1;
     }
@@ -2408,7 +2408,7 @@ remoteDomainMemoryPeek (virDomainPtr domain,

     if (ret.buffer.buffer_len != size) {
             errorf (domain->conn, VIR_ERR_RPC,
-                    _("returned buffer is not same size as requested"));
+                    "%s", _("returned buffer is not same size as requested"));
             free (ret.buffer.buffer_val);
             return -1;
     }
@@ -4267,7 +4267,7 @@ remoteAuthPolkit (virConnectPtr conn, struct private_data *priv, int in_open,
             if ((*(auth->cb))(&cred, 1, auth->cbdata) < 0) {
                 __virRaiseError (in_open ? NULL : conn, NULL, NULL, VIR_FROM_REMOTE,
                                  VIR_ERR_AUTH_FAILED, VIR_ERR_ERROR, NULL, NULL, NULL, 0, 0,
-                                 _("Failed to collect auth credentials"));
+                                 "%s", _("Failed to collect auth credentials"));
                 return -1;
             }
         } else {
diff --git a/src/sexpr.c b/src/sexpr.c
index c168754..355c5a6 100644
--- a/src/sexpr.c
+++ b/src/sexpr.c
@@ -40,7 +40,7 @@ sexpr_new(void)
     struct sexpr *ret;

     if (VIR_ALLOC(ret) < 0) {
-        virSexprError(VIR_ERR_NO_MEMORY, _("failed to allocate a node"));
+        virSexprError(VIR_ERR_NO_MEMORY, "%s", _("failed to allocate a node"));
         return (NULL);
     }
     ret->kind = SEXPR_NIL;
@@ -344,7 +344,7 @@ _string2sexpr(const char *buffer, size_t * end)
             ret->u.value = strndup(start, ptr - start);
             if (ret->u.value == NULL) {
                 virSexprError(VIR_ERR_NO_MEMORY,
-                              _("failed to copy a string"));
+                              "%s", _("failed to copy a string"));
                 goto error;
             }

@@ -361,7 +361,7 @@ _string2sexpr(const char *buffer, size_t * end)
             ret->u.value = strndup(start, ptr - start);
             if (ret->u.value == NULL) {
                 virSexprError(VIR_ERR_NO_MEMORY,
-                              _("failed to copy a string"));
+                              "%s", _("failed to copy a string"));
                 goto error;
             }
         }
diff --git a/src/storage_backend_disk.c b/src/storage_backend_disk.c
index bb134c7..729cbef 100644
--- a/src/storage_backend_disk.c
+++ b/src/storage_backend_disk.c
@@ -178,13 +178,13 @@ virStorageBackendDiskMakeDataVol(virConnectPtr conn,

     if (vol == NULL) {
         if (VIR_ALLOC(vol) < 0) {
-            virStorageReportError(conn, VIR_ERR_NO_MEMORY, _("volume"));
+            virStorageReportError(conn, VIR_ERR_NO_MEMORY, "%s", _("volume"));
             return -1;
         }

         if (VIR_REALLOC_N(pool->volumes.objs,
                           pool->volumes.count+1) < 0) {
-            virStorageReportError(conn, VIR_ERR_NO_MEMORY, _("volume"));
+            virStorageReportError(conn, VIR_ERR_NO_MEMORY, "%s", _("volume"));
             virStorageVolDefFree(vol);
             return -1;
         }
@@ -195,14 +195,14 @@ virStorageBackendDiskMakeDataVol(virConnectPtr conn,
          */
         tmp = strrchr(groups[0], '/');
         if ((vol->name = strdup(tmp ? tmp + 1 : groups[0])) == NULL) {
-            virStorageReportError(conn, VIR_ERR_NO_MEMORY, _("volume"));
+            virStorageReportError(conn, VIR_ERR_NO_MEMORY, "%s", _("volume"));
             return -1;
         }
     }

     if (vol->target.path == NULL) {
         if ((devpath = strdup(groups[0])) == NULL) {
-            virStorageReportError(conn, VIR_ERR_NO_MEMORY, _("volume"));
+            virStorageReportError(conn, VIR_ERR_NO_MEMORY, "%s", _("volume"));
             return -1;
         }

@@ -224,7 +224,7 @@ virStorageBackendDiskMakeDataVol(virConnectPtr conn,
     if (vol->key == NULL) {
         /* XXX base off a unique key of the underlying disk */
         if ((vol->key = strdup(vol->target.path)) == NULL) {
-            virStorageReportError(conn, VIR_ERR_NO_MEMORY, _("volume"));
+            virStorageReportError(conn, VIR_ERR_NO_MEMORY, "%s", _("volume"));
             return -1;
         }
     }
@@ -232,7 +232,7 @@ virStorageBackendDiskMakeDataVol(virConnectPtr conn,
     if (vol->source.extents == NULL) {
         if (VIR_ALLOC(vol->source.extents) < 0) {
             virStorageReportError(conn, VIR_ERR_NO_MEMORY,
-                                  _("volume extents"));
+                                  "%s", _("volume extents"));
             return -1;
         }
         vol->source.nextent = 1;
@@ -240,20 +240,20 @@ virStorageBackendDiskMakeDataVol(virConnectPtr conn,
         if (virStrToLong_ull(groups[3], NULL, 10,
                              &vol->source.extents[0].start) < 0) {
             virStorageReportError(conn, VIR_ERR_INTERNAL_ERROR,
-                                  _("cannot parse device start location"));
+                                  "%s", _("cannot parse device start location"));
             return -1;
         }

         if (virStrToLong_ull(groups[4], NULL, 10,
                              &vol->source.extents[0].end) < 0) {
             virStorageReportError(conn, VIR_ERR_INTERNAL_ERROR,
-                                  _("cannot parse device end location"));
+                                  "%s", _("cannot parse device end location"));
             return -1;
         }

         if ((vol->source.extents[0].path =
              strdup(pool->def->source.devices[0].path)) == NULL) {
-            virStorageReportError(conn, VIR_ERR_NO_MEMORY, _("extents"));
+            virStorageReportError(conn, VIR_ERR_NO_MEMORY, "%s", _("extents"));
             return -1;
         }
     }
@@ -460,7 +460,7 @@ virStorageBackendDiskCreateVol(virConnectPtr conn,
     }
     if (smallestExtent == -1) {
         virStorageReportError(conn, VIR_ERR_INTERNAL_ERROR,
-                              _("no large enough free extent"));
+                              "%s", _("no large enough free extent"));
         return -1;
     }
     startOffset = dev->freeExtents[smallestExtent].start;
diff --git a/src/storage_backend_fs.c b/src/storage_backend_fs.c
index d3f4196..329505f 100644
--- a/src/storage_backend_fs.c
+++ b/src/storage_backend_fs.c
@@ -556,7 +556,7 @@ virStorageBackendFileSystemNetFindPoolSources(virConnectPtr conn,

     retval = virStringListJoin(state.list, SOURCES_START_TAG, SOURCES_END_TAG, "\n");
     if (retval == NULL) {
-        virStorageReportError(conn, VIR_ERR_NO_MEMORY, _("retval"));
+        virStorageReportError(conn, VIR_ERR_NO_MEMORY, "%s", _("retval"));
         goto cleanup;
     }

diff --git a/src/storage_backend_logical.c b/src/storage_backend_logical.c
index c549f26..e7ec6b4 100644
--- a/src/storage_backend_logical.c
+++ b/src/storage_backend_logical.c
@@ -233,7 +233,7 @@ virStorageBackendLogicalFindLVs(virConnectPtr conn,
                                       vol,
                                       &exitstatus) < 0) {
         virStorageReportError(conn, VIR_ERR_INTERNAL_ERROR,
-                              _("lvs command failed"));
+                              "%s", _("lvs command failed"));
                               return -1;
     }

@@ -321,7 +321,7 @@ virStorageBackendLogicalFindPoolSources(virConnectPtr conn,

     retval = virStringListJoin(descs, SOURCES_START_TAG, SOURCES_END_TAG, "\n");
     if (retval == NULL) {
-        virStorageReportError(conn, VIR_ERR_NO_MEMORY, _("retval"));
+        virStorageReportError(conn, VIR_ERR_NO_MEMORY, "%s", _("retval"));
         goto cleanup;
     }

diff --git a/src/test.c b/src/test.c
index 58d3559..aab74e4 100644
--- a/src/test.c
+++ b/src/test.c
@@ -213,7 +213,7 @@ static int testOpenDefault(virConnectPtr conn) {
     conn->privateData = privconn;

     if (gettimeofday(&tv, NULL) < 0) {
-        testError(NULL, VIR_ERR_INTERNAL_ERROR, _("getting time of day"));
+        testError(NULL, VIR_ERR_INTERNAL_ERROR, "%s", _("getting time of day"));
         goto error;
     }

@@ -311,14 +311,14 @@ static int testOpenFromFile(virConnectPtr conn,
         goto error;

     if ((fd = open(file, O_RDONLY)) < 0) {
-        testError(NULL, VIR_ERR_INTERNAL_ERROR, _("loading host definition file"));
+        testError(NULL, VIR_ERR_INTERNAL_ERROR, "%s", _("loading host definition file"));
         goto error;
     }

     if (!(xml = xmlReadFd(fd, file, NULL,
                           XML_PARSE_NOENT | XML_PARSE_NONET |
                           XML_PARSE_NOERROR | XML_PARSE_NOWARNING))) {
-        testError(NULL, VIR_ERR_INTERNAL_ERROR, _("host"));
+        testError(NULL, VIR_ERR_INTERNAL_ERROR, "%s", _("host"));
         goto error;
     }
     close(fd);
@@ -326,13 +326,13 @@ static int testOpenFromFile(virConnectPtr conn,

     root = xmlDocGetRootElement(xml);
     if ((root == NULL) || (!xmlStrEqual(root->name, BAD_CAST "node"))) {
-        testError(NULL, VIR_ERR_XML_ERROR, _("node"));
+        testError(NULL, VIR_ERR_XML_ERROR, "%s", _("node"));
         goto error;
     }

     ctxt = xmlXPathNewContext(xml);
     if (ctxt == NULL) {
-        testError(NULL, VIR_ERR_INTERNAL_ERROR, _("creating xpath context"));
+        testError(NULL, VIR_ERR_INTERNAL_ERROR, "%s", _("creating xpath context"));
         goto error;
     }

@@ -347,7 +347,7 @@ static int testOpenFromFile(virConnectPtr conn,
     if (ret == 0) {
         nodeInfo->nodes = l;
     } else if (ret == -2) {
-        testError(NULL, VIR_ERR_XML_ERROR, _("node cpu numa nodes"));
+        testError(NULL, VIR_ERR_XML_ERROR, "%s", _("node cpu numa nodes"));
         goto error;
     }

@@ -355,7 +355,7 @@ static int testOpenFromFile(virConnectPtr conn,
     if (ret == 0) {
         nodeInfo->sockets = l;
     } else if (ret == -2) {
-        testError(NULL, VIR_ERR_XML_ERROR, _("node cpu sockets"));
+        testError(NULL, VIR_ERR_XML_ERROR, "%s", _("node cpu sockets"));
         goto error;
     }

@@ -363,7 +363,7 @@ static int testOpenFromFile(virConnectPtr conn,
     if (ret == 0) {
         nodeInfo->cores = l;
     } else if (ret == -2) {
-        testError(NULL, VIR_ERR_XML_ERROR, _("node cpu cores"));
+        testError(NULL, VIR_ERR_XML_ERROR, "%s", _("node cpu cores"));
         goto error;
     }

@@ -371,7 +371,7 @@ static int testOpenFromFile(virConnectPtr conn,
     if (ret == 0) {
         nodeInfo->threads = l;
     } else if (ret == -2) {
-        testError(NULL, VIR_ERR_XML_ERROR, _("node cpu threads"));
+        testError(NULL, VIR_ERR_XML_ERROR, "%s", _("node cpu threads"));
         goto error;
     }

@@ -382,14 +382,14 @@ static int testOpenFromFile(virConnectPtr conn,
             nodeInfo->cpus = l;
         }
     } else if (ret == -2) {
-        testError(NULL, VIR_ERR_XML_ERROR, _("node active cpu"));
+        testError(NULL, VIR_ERR_XML_ERROR, "%s", _("node active cpu"));
         goto error;
     }
     ret = virXPathLong(conn, "string(/node/cpu/mhz[1])", ctxt, &l);
     if (ret == 0) {
         nodeInfo->mhz = l;
     } else if (ret == -2) {
-        testError(NULL, VIR_ERR_XML_ERROR, _("node cpu mhz"));
+        testError(NULL, VIR_ERR_XML_ERROR, "%s", _("node cpu mhz"));
         goto error;
     }

@@ -404,13 +404,13 @@ static int testOpenFromFile(virConnectPtr conn,
     if (ret == 0) {
         nodeInfo->memory = l;
     } else if (ret == -2) {
-        testError(NULL, VIR_ERR_XML_ERROR, _("node memory"));
+        testError(NULL, VIR_ERR_XML_ERROR, "%s", _("node memory"));
         goto error;
     }

     ret = virXPathNodeSet(conn, "/node/domain", ctxt, &domains);
     if (ret < 0) {
-        testError(NULL, VIR_ERR_XML_ERROR, _("node domain list"));
+        testError(NULL, VIR_ERR_XML_ERROR, "%s", _("node domain list"));
         goto error;
     }

@@ -421,7 +421,7 @@ static int testOpenFromFile(virConnectPtr conn,
             char *absFile = testBuildFilename(file, relFile);
             VIR_FREE(relFile);
             if (!absFile) {
-                testError(NULL, VIR_ERR_INTERNAL_ERROR, _("resolving domain filename"));
+                testError(NULL, VIR_ERR_INTERNAL_ERROR, "%s", _("resolving domain filename"));
                 goto error;
             }
             def = virDomainDefParseFile(conn, privconn->caps, absFile);
@@ -447,7 +447,7 @@ static int testOpenFromFile(virConnectPtr conn,

     ret = virXPathNodeSet(conn, "/node/network", ctxt, &networks);
     if (ret < 0) {
-        testError(NULL, VIR_ERR_XML_ERROR, _("node network list"));
+        testError(NULL, VIR_ERR_XML_ERROR, "%s", _("node network list"));
         goto error;
     }
     for (i = 0 ; i < ret ; i++) {
@@ -457,7 +457,7 @@ static int testOpenFromFile(virConnectPtr conn,
             char *absFile = testBuildFilename(file, relFile);
             VIR_FREE(relFile);
             if (!absFile) {
-                testError(NULL, VIR_ERR_INTERNAL_ERROR, _("resolving network filename"));
+                testError(NULL, VIR_ERR_INTERNAL_ERROR, "%s", _("resolving network filename"));
                 goto error;
             }

@@ -525,7 +525,7 @@ static int testOpen(virConnectPtr conn,
         || uri->path[0] == '\0'
         || (uri->path[0] == '/' && uri->path[1] == '\0')) {
         testError (NULL, VIR_ERR_INVALID_ARG,
-                   _("testOpen: supply a path or use test:///default"));
+                   "%s", _("testOpen: supply a path or use test:///default"));
         return VIR_DRV_OPEN_ERROR;
     }

@@ -837,7 +837,7 @@ static int testGetDomainInfo (virDomainPtr domain,

     if (gettimeofday(&tv, NULL) < 0) {
         testError(domain->conn, VIR_ERR_INTERNAL_ERROR,
-                  _("getting time of day"));
+                  "%s", _("getting time of day"));
         return (-1);
     }

@@ -925,30 +925,30 @@ static int testDomainRestore(virConnectPtr conn,

     if ((fd = open(path, O_RDONLY)) < 0) {
         testError(conn, VIR_ERR_INTERNAL_ERROR,
-                  _("cannot read domain image"));
+                  "%s", _("cannot read domain image"));
         return (-1);
     }
     if (read(fd, magic, sizeof(magic)) != sizeof(magic)) {
         testError(conn, VIR_ERR_INTERNAL_ERROR,
-                  _("incomplete save header"));
+                  "%s", _("incomplete save header"));
         close(fd);
         return (-1);
     }
     if (memcmp(magic, TEST_SAVE_MAGIC, sizeof(magic))) {
         testError(conn, VIR_ERR_INTERNAL_ERROR,
-                  _("mismatched header magic"));
+                  "%s", _("mismatched header magic"));
         close(fd);
         return (-1);
     }
     if (read(fd, (char*)&len, sizeof(len)) != sizeof(len)) {
         testError(conn, VIR_ERR_INTERNAL_ERROR,
-                  _("failed to read metadata length"));
+                  "%s", _("failed to read metadata length"));
         close(fd);
         return (-1);
     }
     if (len < 1 || len > 8192) {
         testError(conn, VIR_ERR_INTERNAL_ERROR,
-                  _("length of metadata out of range"));
+                  "%s", _("length of metadata out of range"));
         close(fd);
         return (-1);
     }
@@ -959,7 +959,7 @@ static int testDomainRestore(virConnectPtr conn,
     }
     if (read(fd, xml, len) != len) {
         testError(conn, VIR_ERR_INTERNAL_ERROR,
-                  _("incomplete metdata"));
+                  "%s", _("incomplete metdata"));
         close(fd);
         return (-1);
     }
@@ -1147,7 +1147,7 @@ static int testNodeGetCellsFreeMemory(virConnectPtr conn,

     if (startCell > privconn->numCells) {
         testError(conn, VIR_ERR_INVALID_ARG,
-                  _("Range exceeds available cells"));
+                  "%s", _("Range exceeds available cells"));
         return -1;
     }

diff --git a/src/util.c b/src/util.c
index 915e738..aa21653 100644
--- a/src/util.c
+++ b/src/util.c
@@ -155,13 +155,13 @@ virExec(virConnectPtr conn,
             if ((flags & VIR_EXEC_NONBLOCK) &&
                 virSetNonBlock(pipeout[0]) == -1) {
                 ReportError(conn, VIR_ERR_INTERNAL_ERROR,
-                            _("Failed to set non-blocking file descriptor flag"));
+                            "%s", _("Failed to set non-blocking file descriptor flag"));
                 goto cleanup;
             }

             if (virSetCloseExec(pipeout[0]) == -1) {
                 ReportError(conn, VIR_ERR_INTERNAL_ERROR,
-                            _("Failed to set close-on-exec file descriptor flag"));
+                            "%s", _("Failed to set close-on-exec file descriptor flag"));
                 goto cleanup;
             }

@@ -186,13 +186,13 @@ virExec(virConnectPtr conn,
             if ((flags & VIR_EXEC_NONBLOCK) &&
                 virSetNonBlock(pipeerr[0]) == -1) {
                 ReportError(conn, VIR_ERR_INTERNAL_ERROR,
-                            _("Failed to set non-blocking file descriptor flag"));
+                            "%s", _("Failed to set non-blocking file descriptor flag"));
                 goto cleanup;
             }

             if (virSetCloseExec(pipeerr[0]) == -1) {
                 ReportError(conn, VIR_ERR_INTERNAL_ERROR,
-                            _("Failed to set close-on-exec file descriptor flag"));
+                            "%s", _("Failed to set close-on-exec file descriptor flag"));
                 goto cleanup;
             }

diff --git a/src/virsh.c b/src/virsh.c
index 2dd7dd2..89aa4fa 100644
--- a/src/virsh.c
+++ b/src/virsh.c
@@ -4660,7 +4660,7 @@ cmdAttachDevice(vshControl *ctl, const vshCmd *cmd)
         virDomainFree(dom);
         return FALSE;
     } else {
-        vshPrint(ctl, _("Device attached successfully\n"));
+        vshPrint(ctl, "%s", _("Device attached successfully\n"));
     }

     virDomainFree(dom);
@@ -4719,7 +4719,7 @@ cmdDetachDevice(vshControl *ctl, const vshCmd *cmd)
         virDomainFree(dom);
         return FALSE;
     } else {
-        vshPrint(ctl, _("Device detached successfully\n"));
+        vshPrint(ctl, "%s", _("Device detached successfully\n"));
     }

     virDomainFree(dom);
@@ -4831,7 +4831,7 @@ cmdAttachInterface(vshControl *ctl, const vshCmd *cmd)
     if (virDomainAttachDevice(dom, buf)) {
         goto cleanup;
     } else {
-        vshPrint(ctl, _("Interface attached successfully\n"));
+        vshPrint(ctl, "%s", _("Interface attached successfully\n"));
     }

     ret = TRUE;
@@ -4949,7 +4949,7 @@ cmdDetachInterface(vshControl *ctl, const vshCmd *cmd)
     if (ret != 0)
         ret = FALSE;
     else {
-        vshPrint(ctl, _("Interface detached successfully\n"));
+        vshPrint(ctl, "%s", _("Interface detached successfully\n"));
         ret = TRUE;
     }

@@ -5118,7 +5118,7 @@ cmdAttachDisk(vshControl *ctl, const vshCmd *cmd)
     if (virDomainAttachDevice(dom, buf))
         goto cleanup;
     else
-        vshPrint(ctl, _("Disk attached successfully\n"));
+        vshPrint(ctl, "%s", _("Disk attached successfully\n"));

     ret = TRUE;

@@ -5227,7 +5227,7 @@ cmdDetachDisk(vshControl *ctl, const vshCmd *cmd)
     if (ret != 0)
         ret = FALSE;
     else {
-        vshPrint(ctl, _("Disk detached successfully\n"));
+        vshPrint(ctl, "%s", _("Disk detached successfully\n"));
         ret = TRUE;
     }

@@ -5433,7 +5433,7 @@ cmdEdit (vshControl *ctl, const vshCmd *cmd)

     if (STRNEQ (doc, doc_reread)) {
         vshError (ctl, FALSE,
-                  _("ERROR: the XML configuration was changed by another user"));
+                  "%s", _("ERROR: the XML configuration was changed by another user"));
         goto cleanup;
     }

diff --git a/src/xend_internal.c b/src/xend_internal.c
index 65564d8..eb67235 100644
--- a/src/xend_internal.c
+++ b/src/xend_internal.c
@@ -130,7 +130,7 @@ do_connect(virConnectPtr xend)
     s = socket(priv->type, SOCK_STREAM, 0);
     if (s == -1) {
         virXendError(xend, VIR_ERR_INTERNAL_ERROR,
-                     _("failed to create a socket"));
+                     "%s", _("failed to create a socket"));
         return -1;
     }

@@ -152,7 +152,7 @@ do_connect(virConnectPtr xend)
          */
         if (getuid() == 0) {
             virXendError(xend, VIR_ERR_INTERNAL_ERROR,
-                         _("failed to connect to xend"));
+                         "%s", _("failed to connect to xend"));
         }
     }

@@ -199,10 +199,10 @@ wr_sync(virConnectPtr xend, int fd, void *buffer, size_t size, int do_read)
         if (len == -1) {
             if (do_read)
                 virXendError(xend, VIR_ERR_INTERNAL_ERROR,
-                             _("failed to read from Xen Daemon"));
+                             "%s", _("failed to read from Xen Daemon"));
             else
                 virXendError(xend, VIR_ERR_INTERNAL_ERROR,
-                             _("failed to read from Xen Daemon"));
+                             "%s", _("failed to read from Xen Daemon"));

             return (-1);
         }
@@ -529,7 +529,7 @@ xend_op_ext(virConnectPtr xend, const char *path, char *error,
     }

     if (virBufferError(&buf)) {
-        virXendError(NULL, VIR_ERR_NO_MEMORY, _("allocate buffer"));
+        virXendError(NULL, VIR_ERR_NO_MEMORY, "%s", _("allocate buffer"));
         return -1;
     }

@@ -709,7 +709,7 @@ urlencode(const char *string)
     size_t i;

     if (VIR_ALLOC_N(buffer, len * 3 + 1) < 0) {
-        virXendError(NULL, VIR_ERR_NO_MEMORY, _("allocate new buffer"));
+        virXendError(NULL, VIR_ERR_NO_MEMORY, "%s", _("allocate new buffer"));
         return (NULL);
     }
     ptr = buffer;
@@ -963,7 +963,7 @@ xenDaemonDomainCreateXML(virConnectPtr xend, const char *sexpr)
     if (ptr == NULL) {
         /* this should be caught at the interface but ... */
         virXendError(xend, VIR_ERR_INTERNAL_ERROR,
-                     _("failed to urlencode the create S-Expr"));
+                     "%s", _("failed to urlencode the create S-Expr"));
         return (-1);
     }

@@ -1004,18 +1004,18 @@ xenDaemonDomainLookupByName_ids(virConnectPtr xend, const char *domname,
     value = sexpr_node(root, "domain/domid");
     if (value == NULL) {
         virXendError(xend, VIR_ERR_INTERNAL_ERROR,
-                     _("domain information incomplete, missing domid"));
+                     "%s", _("domain information incomplete, missing domid"));
         goto error;
     }
     ret = strtol(value, NULL, 0);
     if ((ret == 0) && (value[0] != '0')) {
         virXendError(xend, VIR_ERR_INTERNAL_ERROR,
-                     _("domain information incorrect domid not numeric"));
+                     "%s", _("domain information incorrect domid not numeric"));
         ret = -1;
     } else if (uuid != NULL) {
         if (sexpr_uuid(uuid, root, "domain/uuid") < 0) {
             virXendError(xend, VIR_ERR_INTERNAL_ERROR,
-                         _("domain information incomplete, missing uuid"));
+                         "%s", _("domain information incomplete, missing uuid"));
         }
     }

@@ -1054,7 +1054,7 @@ xenDaemonDomainLookupByID(virConnectPtr xend,
     name = sexpr_node(root, "domain/name");
     if (name == NULL) {
       virXendError(xend, VIR_ERR_INTERNAL_ERROR,
-                   _("domain information incomplete, missing name"));
+                   "%s", _("domain information incomplete, missing name"));
       goto error;
     }
     if (domname)
@@ -1062,7 +1062,7 @@ xenDaemonDomainLookupByID(virConnectPtr xend,

     if (sexpr_uuid(uuid, root, "domain/uuid") < 0) {
       virXendError(xend, VIR_ERR_INTERNAL_ERROR,
-                   _("domain information incomplete, missing uuid"));
+                   "%s", _("domain information incomplete, missing uuid"));
       goto error;
     }

@@ -1143,7 +1143,7 @@ xenDaemonParseSxprOS(virConnectPtr xend,

             if (def->os.loader == NULL) {
                 virXendError(xend, VIR_ERR_INTERNAL_ERROR,
-                             _("domain information incomplete, missing HVM loader"));
+                             "%s", _("domain information incomplete, missing HVM loader"));
                 return(-1);
             }
         } else {
@@ -1197,7 +1197,7 @@ xenDaemonParseSxprOS(virConnectPtr xend,
         !def->os.kernel &&
         !def->os.bootloader) {
         virXendError(xend, VIR_ERR_INTERNAL_ERROR,
-                     _("domain information incomplete, missing kernel & bootloader"));
+                     "%s", _("domain information incomplete, missing kernel & bootloader"));
         return -1;
     }

@@ -1261,7 +1261,7 @@ xend_parse_sexp_desc_char(virConnectPtr conn,
         value += sizeof("unix:")-1;
     } else {
         virXendError(conn, VIR_ERR_INTERNAL_ERROR,
-                     _("Unknown char device type"));
+                     "%s", _("Unknown char device type"));
         return -1;
     }

@@ -1295,7 +1295,7 @@ xend_parse_sexp_desc_char(virConnectPtr conn,

         if (offset == NULL) {
             virXendError(conn, VIR_ERR_INTERNAL_ERROR,
-                         _("malformed char device string"));
+                         "%s", _("malformed char device string"));
             goto error;
         }

@@ -1335,7 +1335,7 @@ xend_parse_sexp_desc_char(virConnectPtr conn,

         if (offset == NULL) {
             virXendError(conn, VIR_ERR_INTERNAL_ERROR,
-                         _("malformed char device string"));
+                         "%s", _("malformed char device string"));
             goto error;
         }

@@ -1351,7 +1351,7 @@ xend_parse_sexp_desc_char(virConnectPtr conn,
             offset3 = strchr(offset2, ':');
             if (offset3 == NULL) {
                 virXendError(conn, VIR_ERR_INTERNAL_ERROR,
-                             _("malformed char device string"));
+                             "%s", _("malformed char device string"));
                 goto error;
             }

@@ -1418,7 +1418,7 @@ xend_parse_sexp_desc_char(virConnectPtr conn,
     if (ret == -1) {
 no_memory:
         virXendError(conn, VIR_ERR_NO_MEMORY,
-                     _("no memory for char device config"));
+                     "%s", _("no memory for char device config"));
     }

 error:
@@ -1490,7 +1490,7 @@ xenDaemonParseSxprChar(virConnectPtr conn,

         if (offset == NULL) {
             virXendError(conn, VIR_ERR_INTERNAL_ERROR,
-                         _("malformed char device string"));
+                         "%s", _("malformed char device string"));
             goto error;
         }

@@ -1518,7 +1518,7 @@ xenDaemonParseSxprChar(virConnectPtr conn,

         if (offset == NULL) {
             virXendError(conn, VIR_ERR_INTERNAL_ERROR,
-                         _("malformed char device string"));
+                         "%s", _("malformed char device string"));
             goto error;
         }

@@ -1534,7 +1534,7 @@ xenDaemonParseSxprChar(virConnectPtr conn,
             offset3 = strchr(offset2, ':');
             if (offset3 == NULL) {
                 virXendError(conn, VIR_ERR_INTERNAL_ERROR,
-                             _("malformed char device string"));
+                             "%s", _("malformed char device string"));
                 goto error;
             }

@@ -1625,7 +1625,7 @@ xenDaemonParseSxprDisks(virConnectPtr conn,

             if (dst == NULL) {
                 virXendError(conn, VIR_ERR_INTERNAL_ERROR,
-                             _("domain information incomplete, vbd has no dev"));
+                             "%s", _("domain information incomplete, vbd has no dev"));
                 goto error;
             }

@@ -1636,7 +1636,7 @@ xenDaemonParseSxprDisks(virConnectPtr conn,
                     !hvm ||
                     STRNEQ(offset, ":cdrom")) {
                     virXendError(conn, VIR_ERR_INTERNAL_ERROR,
-                                 _("domain information incomplete, vbd has no src"));
+                                 "%s", _("domain information incomplete, vbd has no src"));
                     goto error;
                 }
             }
@@ -1645,7 +1645,7 @@ xenDaemonParseSxprDisks(virConnectPtr conn,
                 offset = strchr(src, ':');
                 if (!offset) {
                     virXendError(conn, VIR_ERR_INTERNAL_ERROR,
-                                 _("cannot parse vbd filename, missing driver name"));
+                                 "%s", _("cannot parse vbd filename, missing driver name"));
                     goto error;
                 }

@@ -1660,7 +1660,7 @@ xenDaemonParseSxprDisks(virConnectPtr conn,
                     offset = strchr(src, ':');
                     if (!offset) {
                         virXendError(conn, VIR_ERR_INTERNAL_ERROR,
-                                     _("cannot parse vbd filename, missing driver type"));
+                                     "%s", _("cannot parse vbd filename, missing driver type"));
                         goto error;
                     }

@@ -2143,7 +2143,7 @@ xenDaemonParseSxpr(virConnectPtr conn,
     tmp = sexpr_node(root, "domain/domid");
     if (tmp == NULL && xendConfigVersion < 3) { /* Old XenD, domid was mandatory */
         virXendError(conn, VIR_ERR_INTERNAL_ERROR,
-                     _("domain information incomplete, missing id"));
+                     "%s", _("domain information incomplete, missing id"));
         goto error;
     }
     def->virtType = VIR_DOMAIN_VIRT_XEN;
@@ -2156,14 +2156,14 @@ xenDaemonParseSxpr(virConnectPtr conn,
         goto no_memory;
     if (def->name == NULL) {
         virXendError(conn, VIR_ERR_INTERNAL_ERROR,
-                     _("domain information incomplete, missing name"));
+                     "%s", _("domain information incomplete, missing name"));
         goto error;
     }

     tmp = sexpr_node(root, "domain/uuid");
     if (tmp == NULL) {
         virXendError(conn, VIR_ERR_INTERNAL_ERROR,
-                     _("domain information incomplete, missing name"));
+                     "%s", _("domain information incomplete, missing name"));
         goto error;
     }
     virUUIDParse(tmp, def->uuid);
@@ -2553,7 +2553,7 @@ sexpr_to_xend_topology(virConnectPtr conn,
     nodeToCpu = sexpr_node(root, "node/node_to_cpu");
     if (nodeToCpu == NULL) {
         virXendError(conn, VIR_ERR_INTERNAL_ERROR,
-                     _("failed to parse topology information"));
+                     "%s", _("failed to parse topology information"));
         return -1;
     }

@@ -2607,7 +2607,7 @@ sexpr_to_xend_topology(virConnectPtr conn,
     return (0);

   parse_error:
-    virXendError(conn, VIR_ERR_XEN_CALL, _("topology syntax error"));
+    virXendError(conn, VIR_ERR_XEN_CALL, "%s", _("topology syntax error"));
   error:
     VIR_FREE(cpuNums);
     VIR_FREE(cpuset);
@@ -2617,7 +2617,7 @@ sexpr_to_xend_topology(virConnectPtr conn,
   memory_error:
     VIR_FREE(cpuNums);
     VIR_FREE(cpuset);
-    virXendError(conn, VIR_ERR_NO_MEMORY, _("allocate buffer"));
+    virXendError(conn, VIR_ERR_NO_MEMORY, "%s", _("allocate buffer"));
     return (-1);
 }

@@ -2671,7 +2671,7 @@ sexpr_to_domain(virConnectPtr conn, const struct sexpr *root)

 error:
     virXendError(conn, VIR_ERR_INTERNAL_ERROR,
-                 _("failed to parse Xend domain information"));
+                 "%s", _("failed to parse Xend domain information"));
     if (ret != NULL)
         virUnrefDomain(ret);
     return(NULL);
@@ -3153,7 +3153,7 @@ xenDaemonDomainFetch(virConnectPtr conn,
         root = sexpr_get(conn, "/xend/domain/%d?detail=1", domid);
     if (root == NULL) {
         virXendError (conn, VIR_ERR_XEN_CALL,
-                      _("xenDaemonDomainFetch failed to"
+                      "%s", _("xenDaemonDomainFetch failed to"
                         " find this domain"));
         return (NULL);
     }
@@ -3980,7 +3980,7 @@ xenDaemonDomainGetAutostart(virDomainPtr domain,
     root = sexpr_get(domain->conn, "/xend/domain/%s?detail=1", domain->name);
     if (root == NULL) {
         virXendError (domain->conn, VIR_ERR_XEN_CALL,
-                      _("xenDaemonGetAutostart failed to find this domain"));
+                      "%s", _("xenDaemonGetAutostart failed to find this domain"));
         return (-1);
     }

@@ -4021,7 +4021,7 @@ xenDaemonDomainSetAutostart(virDomainPtr domain,
     root = sexpr_get(domain->conn, "/xend/domain/%s?detail=1", domain->name);
     if (root == NULL) {
         virXendError (domain->conn, VIR_ERR_XEN_CALL,
-                      _("xenDaemonSetAutostart failed to find this domain"));
+                      "%s", _("xenDaemonSetAutostart failed to find this domain"));
         return (-1);
     }

@@ -4029,7 +4029,7 @@ xenDaemonDomainSetAutostart(virDomainPtr domain,
     if (autostr) {
         if (!STREQ(autostr, "ignore") && !STREQ(autostr, "start")) {
             virXendError(domain->conn, VIR_ERR_INTERNAL_ERROR,
-                         _("unexpected value from on_xend_start"));
+                         "%s", _("unexpected value from on_xend_start"));
             goto error;
         }

@@ -4040,23 +4040,23 @@ xenDaemonDomainSetAutostart(virDomainPtr domain,
                                                 : strdup("ignore"));
         if (!(autonode->u.s.car->u.value)) {
             virXendError(domain->conn, VIR_ERR_INTERNAL_ERROR,
-                         _("no memory"));
+                         "%s", _("no memory"));
             goto error;
         }

         if (sexpr2string(root, buf, sizeof(buf)) == 0) {
             virXendError(domain->conn, VIR_ERR_INTERNAL_ERROR,
-                         _("sexpr2string failed"));
+                         "%s", _("sexpr2string failed"));
             goto error;
         }
         if (xend_op(domain->conn, "", "op", "new", "config", buf, NULL) != 0) {
             virXendError(domain->conn, VIR_ERR_XEN_CALL,
-                         _("Failed to redefine sexpr"));
+                         "%s", _("Failed to redefine sexpr"));
             goto error;
         }
     } else {
         virXendError(domain->conn, VIR_ERR_INTERNAL_ERROR,
-                     _("on_xend_start not present in sexpr"));
+                     "%s", _("on_xend_start not present in sexpr"));
         goto error;
     }

@@ -4124,7 +4124,7 @@ xenDaemonDomainMigratePerform (virDomainPtr domain,
     /* Xen doesn't support renaming domains during migration. */
     if (dname) {
         virXendError (conn, VIR_ERR_NO_SUPPORT,
-                      _("xenDaemonDomainMigrate: Xen does not support"
+                      "%s", _("xenDaemonDomainMigrate: Xen does not support"
                         " renaming domains during migration"));
         return -1;
     }
@@ -4134,7 +4134,7 @@ xenDaemonDomainMigratePerform (virDomainPtr domain,
      */
     if (bandwidth) {
         virXendError (conn, VIR_ERR_NO_SUPPORT,
-                      _("xenDaemonDomainMigrate: Xen does not support"
+                      "%s", _("xenDaemonDomainMigrate: Xen does not support"
                         " bandwidth limits during migration"));
         return -1;
     }
@@ -4146,7 +4146,7 @@ xenDaemonDomainMigratePerform (virDomainPtr domain,
     }
     if (flags != 0) {
         virXendError (conn, VIR_ERR_NO_SUPPORT,
-                      _("xenDaemonDomainMigrate: unsupported flag"));
+                      "%s", _("xenDaemonDomainMigrate: unsupported flag"));
         return -1;
     }

@@ -4159,26 +4159,26 @@ xenDaemonDomainMigratePerform (virDomainPtr domain,
         xmlURIPtr uriptr = xmlParseURI (uri);
         if (!uriptr) {
             virXendError (conn, VIR_ERR_INVALID_ARG,
-                          _("xenDaemonDomainMigrate: invalid URI"));
+                          "%s", _("xenDaemonDomainMigrate: invalid URI"));
             return -1;
         }
         if (uriptr->scheme && STRCASENEQ (uriptr->scheme, "xenmigr")) {
             virXendError (conn, VIR_ERR_INVALID_ARG,
-                          _("xenDaemonDomainMigrate: only xenmigr://"
+                          "%s", _("xenDaemonDomainMigrate: only xenmigr://"
                             " migrations are supported by Xen"));
             xmlFreeURI (uriptr);
             return -1;
         }
         if (!uriptr->server) {
             virXendError (conn, VIR_ERR_INVALID_ARG,
-                          _("xenDaemonDomainMigrate: a hostname must be"
+                          "%s", _("xenDaemonDomainMigrate: a hostname must be"
                             " specified in the URI"));
             xmlFreeURI (uriptr);
             return -1;
         }
         hostname = strdup (uriptr->server);
         if (!hostname) {
-            virXendError (conn, VIR_ERR_NO_MEMORY, _("strdup failed"));
+            virXendError (conn, VIR_ERR_NO_MEMORY, "%s", _("strdup failed"));
             xmlFreeURI (uriptr);
             return -1;
         }
@@ -4191,7 +4191,7 @@ xenDaemonDomainMigratePerform (virDomainPtr domain,

         if (sscanf (p+1, "%d", &port_nr) != 1) {
             virXendError (conn, VIR_ERR_INVALID_ARG,
-                          _("xenDaemonDomainMigrate: invalid port number"));
+                          "%s", _("xenDaemonDomainMigrate: invalid port number"));
             return -1;
         }
         snprintf (port, sizeof port, "%d", port_nr);
@@ -4200,7 +4200,7 @@ xenDaemonDomainMigratePerform (virDomainPtr domain,
         n = p - uri; /* n = Length of hostname in bytes. */
         hostname = strdup (uri);
         if (!hostname) {
-            virXendError (conn, VIR_ERR_NO_MEMORY, _("strdup failed"));
+            virXendError (conn, VIR_ERR_NO_MEMORY, "%s", _("strdup failed"));
             return -1;
         }
         hostname[n] = '\0';
@@ -4208,7 +4208,7 @@ xenDaemonDomainMigratePerform (virDomainPtr domain,
     else {                      /* "hostname" (or IP address) */
         hostname = strdup (uri);
         if (!hostname) {
-            virXendError (conn, VIR_ERR_NO_MEMORY, _("strdup failed"));
+            virXendError (conn, VIR_ERR_NO_MEMORY, "%s", _("strdup failed"));
             return -1;
         }
     }
@@ -4244,13 +4244,13 @@ virDomainPtr xenDaemonDomainDefineXML(virConnectPtr conn, const char *xmlDesc) {

     if (!(def = virDomainDefParseString(conn, priv->caps, xmlDesc))) {
         virXendError(conn, VIR_ERR_XML_ERROR,
-                     _("failed to parse domain description"));
+                     "%s", _("failed to parse domain description"));
         return (NULL);
     }

     if (!(sexpr = xenDaemonFormatSxpr(conn, def, priv->xendConfigVersion))) {
         virXendError(conn, VIR_ERR_XML_ERROR,
-                     _("failed to build sexpr"));
+                     "%s", _("failed to build sexpr"));
         goto error;
     }

@@ -4416,7 +4416,7 @@ xenDaemonGetSchedulerType(virDomainPtr domain, int *nparams)
     priv = (xenUnifiedPrivatePtr) domain->conn->privateData;
     if (priv->xendConfigVersion < 4) {
         virXendError (domain->conn, VIR_ERR_NO_SUPPORT,
-                      _("unsupported in xendConfigVersion < 4"));
+                      "%s", _("unsupported in xendConfigVersion < 4"));
         return NULL;
     }

@@ -4428,25 +4428,25 @@ xenDaemonGetSchedulerType(virDomainPtr domain, int *nparams)
     ret = sexpr_node(root, "node/xen_scheduler");
     if (ret == NULL){
         virXendError(domain->conn, VIR_ERR_INTERNAL_ERROR,
-                     _("node information incomplete, missing scheduler name"));
+                     "%s", _("node information incomplete, missing scheduler name"));
         goto error;
     }
     if (STREQ (ret, "credit")) {
         schedulertype = strdup("credit");
         if (schedulertype == NULL){
-            virXendError(domain->conn, VIR_ERR_SYSTEM_ERROR, _("strdup failed"));
+            virXendError(domain->conn, VIR_ERR_SYSTEM_ERROR, "%s", _("strdup failed"));
             goto error;
         }
         *nparams = XEN_SCHED_CRED_NPARAM;
     } else if (STREQ (ret, "sedf")) {
         schedulertype = strdup("sedf");
         if (schedulertype == NULL){
-            virXendError(domain->conn, VIR_ERR_SYSTEM_ERROR, _("strdup failed"));
+            virXendError(domain->conn, VIR_ERR_SYSTEM_ERROR, "%s", _("strdup failed"));
             goto error;
         }
         *nparams = XEN_SCHED_SEDF_NPARAM;
     } else {
-        virXendError(domain->conn, VIR_ERR_INTERNAL_ERROR, _("Unknown scheduler"));
+        virXendError(domain->conn, VIR_ERR_INTERNAL_ERROR, "%s", _("Unknown scheduler"));
         goto error;
     }

@@ -4492,7 +4492,7 @@ xenDaemonGetSchedulerParameters(virDomainPtr domain,
     priv = (xenUnifiedPrivatePtr) domain->conn->privateData;
     if (priv->xendConfigVersion < 4) {
         virXendError (domain->conn, VIR_ERR_NO_SUPPORT,
-                      _("unsupported in xendConfigVersion < 4"));
+                      "%s", _("unsupported in xendConfigVersion < 4"));
         return (-1);
     }

@@ -4505,7 +4505,7 @@ xenDaemonGetSchedulerParameters(virDomainPtr domain,
     sched_type = xenDaemonGetSchedulerType(domain, &sched_nparam);
     if (sched_type == NULL) {
         virXendError(domain->conn, VIR_ERR_INTERNAL_ERROR,
-                     _("Failed to get a scheduler name"));
+                     "%s", _("Failed to get a scheduler name"));
         goto error;
     }

@@ -4518,12 +4518,12 @@ xenDaemonGetSchedulerParameters(virDomainPtr domain,
             /* get cpu_weight/cpu_cap from xend/domain */
             if (sexpr_node(root, "domain/cpu_weight") == NULL) {
                 virXendError(domain->conn, VIR_ERR_INTERNAL_ERROR,
-                        _("domain information incomplete, missing cpu_weight"));
+                        "%s", _("domain information incomplete, missing cpu_weight"));
                 goto error;
             }
             if (sexpr_node(root, "domain/cpu_cap") == NULL) {
                 virXendError(domain->conn, VIR_ERR_INTERNAL_ERROR,
-                        _("domain information incomplete, missing cpu_cap"));
+                        "%s", _("domain information incomplete, missing cpu_cap"));
                 goto error;
             }

@@ -4540,7 +4540,7 @@ xenDaemonGetSchedulerParameters(virDomainPtr domain,
             ret = 0;
             break;
         default:
-            virXendError(domain->conn, VIR_ERR_INTERNAL_ERROR, _("Unknown scheduler"));
+            virXendError(domain->conn, VIR_ERR_INTERNAL_ERROR, "%s", _("Unknown scheduler"));
             goto error;
     }

@@ -4582,7 +4582,7 @@ xenDaemonSetSchedulerParameters(virDomainPtr domain,
     priv = (xenUnifiedPrivatePtr) domain->conn->privateData;
     if (priv->xendConfigVersion < 4) {
         virXendError (domain->conn, VIR_ERR_NO_SUPPORT,
-                      _("unsupported in xendConfigVersion < 4"));
+                      "%s", _("unsupported in xendConfigVersion < 4"));
         return (-1);
     }

@@ -4595,7 +4595,7 @@ xenDaemonSetSchedulerParameters(virDomainPtr domain,
     sched_type = xenDaemonGetSchedulerType(domain, &sched_nparam);
     if (sched_type == NULL) {
         virXendError(domain->conn, VIR_ERR_INTERNAL_ERROR,
-                     _("Failed to get a scheduler name"));
+                     "%s", _("Failed to get a scheduler name"));
         goto error;
     }

@@ -4631,7 +4631,7 @@ xenDaemonSetSchedulerParameters(virDomainPtr domain,
                 weight = sexpr_node(root, "domain/cpu_weight");
                 if (weight == NULL) {
                     virXendError(domain->conn, VIR_ERR_INTERNAL_ERROR,
-                                _("domain information incomplete, missing cpu_weight"));
+                                "%s", _("domain information incomplete, missing cpu_weight"));
                     goto error;
                 }
                 snprintf(buf_weight, sizeof(buf_weight), "%s", weight);
@@ -4640,7 +4640,7 @@ xenDaemonSetSchedulerParameters(virDomainPtr domain,
                 cap = sexpr_node(root, "domain/cpu_cap");
                 if (cap == NULL) {
                     virXendError(domain->conn, VIR_ERR_INTERNAL_ERROR,
-                                _("domain information incomplete, missing cpu_cap"));
+                                "%s", _("domain information incomplete, missing cpu_cap"));
                     goto error;
                 }
                 snprintf(buf_cap, sizeof(buf_cap), "%s", cap);
@@ -4652,7 +4652,7 @@ xenDaemonSetSchedulerParameters(virDomainPtr domain,
             break;
         }
         default:
-            virXendError(domain->conn, VIR_ERR_INTERNAL_ERROR, _("Unknown scheduler"));
+            virXendError(domain->conn, VIR_ERR_INTERNAL_ERROR, "%s", _("Unknown scheduler"));
             goto error;
     }

@@ -4698,7 +4698,7 @@ xenDaemonDomainBlockPeek (virDomainPtr domain, const char *path,
     else {
         /* This call always fails for dom0. */
         virXendError (domain->conn, VIR_ERR_NO_SUPPORT,
-                      _("domainBlockPeek is not supported for dom0"));
+                      "%s", _("domainBlockPeek is not supported for dom0"));
         return -1;
     }

@@ -4911,7 +4911,7 @@ xenDaemonFormatSxprChr(virConnectPtr conn,

     if (!type) {
         virXendError(conn, VIR_ERR_INTERNAL_ERROR,
-                     _("unexpected chr device type"));
+                     "%s", _("unexpected chr device type"));
         return -1;
     }

@@ -5488,7 +5488,7 @@ virDomainXMLDevID(virDomainPtr domain,
         ref[ref_len - 1] = '\0';
     } else {
         virXendError(NULL, VIR_ERR_NO_SUPPORT,
-                     _("hotplug of device type not supported"));
+                     "%s", _("hotplug of device type not supported"));
         return -1;
     }

diff --git a/src/xm_internal.c b/src/xm_internal.c
index e117a36..6c84b91 100644
--- a/src/xm_internal.c
+++ b/src/xm_internal.c
@@ -487,7 +487,7 @@ static int xenXMConfigCacheRefresh (virConnectPtr conn) {
                 virDomainDefFree(entry->def);
                 VIR_FREE(entry);
                 xenXMError (conn, VIR_ERR_INTERNAL_ERROR,
-                            _("xenXMConfigCacheRefresh: virHashAddEntry"));
+                            "%s", _("xenXMConfigCacheRefresh: virHashAddEntry"));
                 goto cleanup;
             }
         }
@@ -1419,22 +1419,22 @@ int xenXMDomainPinVcpu(virDomainPtr domain,
     }
     if (domain->conn->flags & VIR_CONNECT_RO) {
         xenXMError (domain->conn, VIR_ERR_INVALID_ARG,
-                    _("read only connection"));
+                    "%s", _("read only connection"));
         return -1;
     }
     if (domain->id != -1) {
         xenXMError (domain->conn, VIR_ERR_INVALID_ARG,
-                    _("not inactive domain"));
+                    "%s", _("not inactive domain"));
         return -1;
     }

     if (!(filename = virHashLookup(nameConfigMap, domain->name))) {
-        xenXMError (domain->conn, VIR_ERR_INTERNAL_ERROR, _("virHashLookup"));
+        xenXMError (domain->conn, VIR_ERR_INTERNAL_ERROR, "%s", _("virHashLookup"));
         return -1;
     }
     if (!(entry = virHashLookup(configCache, filename))) {
         xenXMError (domain->conn, VIR_ERR_INTERNAL_ERROR,
-                    _("can't retrieve config file for domain"));
+                    "%s", _("can't retrieve config file for domain"));
         return -1;
     }

@@ -1452,14 +1452,14 @@ int xenXMDomainPinVcpu(virDomainPtr domain,
             }

     if (virBufferError(&mapbuf)) {
-        xenXMError(domain->conn, VIR_ERR_NO_MEMORY, _("allocate buffer"));
+        xenXMError(domain->conn, VIR_ERR_NO_MEMORY, "%s", _("allocate buffer"));
         return -1;
     }

     mapstr = virBufferContentAndReset(&mapbuf);

     if (VIR_ALLOC_N(cpuset, maxcpu) < 0) {
-        xenXMError(domain->conn, VIR_ERR_NO_MEMORY, _("allocate buffer"));
+        xenXMError(domain->conn, VIR_ERR_NO_MEMORY, "%s", _("allocate buffer"));
         goto cleanup;
     }
     if (virDomainCpuSetParse(domain->conn,
@@ -1594,7 +1594,7 @@ int xenXMDomainCreate(virDomainPtr domain) {

     if (!(sexpr = xenDaemonFormatSxpr(domain->conn, entry->def, priv->xendConfigVersion))) {
         xenXMError(domain->conn, VIR_ERR_XML_ERROR,
-                   _("failed to build sexpr"));
+                   "%s", _("failed to build sexpr"));
         return (-1);
     }

@@ -2216,13 +2216,13 @@ virDomainPtr xenXMDomainDefineXML(virConnectPtr conn, const char *xml) {

         if (!(oldfilename = (char *)virHashLookup(nameConfigMap, def->name))) {
             xenXMError(conn, VIR_ERR_INTERNAL_ERROR,
-                       _("can't retrieve config filename for domain to overwrite"));
+                       "%s", _("can't retrieve config filename for domain to overwrite"));
             goto error;
         }

         if (!(entry = virHashLookup(configCache, oldfilename))) {
             xenXMError(conn, VIR_ERR_INTERNAL_ERROR,
-                       _("can't retrieve config entry for domain to overwrite"));
+                       "%s", _("can't retrieve config entry for domain to overwrite"));
             goto error;
         }

@@ -2233,14 +2233,14 @@ virDomainPtr xenXMDomainDefineXML(virConnectPtr conn, const char *xml) {
         /* Remove the name -> filename mapping */
         if (virHashRemoveEntry(nameConfigMap, def->name, NULL) < 0) {
             xenXMError(conn, VIR_ERR_INTERNAL_ERROR,
-                       _("failed to remove old domain from config map"));
+                       "%s", _("failed to remove old domain from config map"));
             goto error;
         }

         /* Remove the config record itself */
         if (virHashRemoveEntry(configCache, oldfilename, xenXMConfigFree) < 0) {
             xenXMError(conn, VIR_ERR_INTERNAL_ERROR,
-                       _("failed to remove old domain from config map"));
+                       "%s", _("failed to remove old domain from config map"));
             goto error;
         }

@@ -2249,7 +2249,7 @@ virDomainPtr xenXMDomainDefineXML(virConnectPtr conn, const char *xml) {

     if ((strlen(configDir) + 1 + strlen(def->name) + 1) > PATH_MAX) {
         xenXMError(conn, VIR_ERR_INTERNAL_ERROR,
-                   _("config file name is too long"));
+                   "%s", _("config file name is too long"));
         goto error;
     }

@@ -2261,13 +2261,13 @@ virDomainPtr xenXMDomainDefineXML(virConnectPtr conn, const char *xml) {
         goto error;

     if (VIR_ALLOC(entry) < 0) {
-        xenXMError(conn, VIR_ERR_NO_MEMORY, _("config"));
+        xenXMError(conn, VIR_ERR_NO_MEMORY, "%s", _("config"));
         goto error;
     }

     if ((entry->refreshedAt = time(NULL)) == ((time_t)-1)) {
         xenXMError(conn, VIR_ERR_INTERNAL_ERROR,
-                   _("unable to get current time"));
+                   "%s", _("unable to get current time"));
         goto error;
     }

@@ -2276,14 +2276,14 @@ virDomainPtr xenXMDomainDefineXML(virConnectPtr conn, const char *xml) {

     if (virHashAddEntry(configCache, filename, entry) < 0) {
         xenXMError(conn, VIR_ERR_INTERNAL_ERROR,
-                   _("unable to store config file handle"));
+                   "%s", _("unable to store config file handle"));
         goto error;
     }

     if (virHashAddEntry(nameConfigMap, def->name, entry->filename) < 0) {
         virHashRemoveEntry(configCache, filename, NULL);
         xenXMError(conn, VIR_ERR_INTERNAL_ERROR,
-                   _("unable to store config file handle"));
+                   "%s", _("unable to store config file handle"));
         goto error;
     }

@@ -2471,7 +2471,7 @@ xenXMDomainAttachDevice(virDomainPtr domain, const char *xml) {

     default:
         xenXMError(domain->conn, VIR_ERR_XML_ERROR,
-                   _("unknown device"));
+                   "%s", _("unknown device"));
         goto cleanup;
     }

@@ -2586,7 +2586,7 @@ xenXMDomainDetachDevice(virDomainPtr domain, const char *xml) {
     }
     default:
         xenXMError(domain->conn, VIR_ERR_XML_ERROR,
-                   _("unknown device"));
+                   "%s", _("unknown device"));
         goto cleanup;
     }

diff --git a/src/xml.c b/src/xml.c
index 3536216..6f2fa8b 100644
--- a/src/xml.c
+++ b/src/xml.c
@@ -54,7 +54,7 @@ virXPathString(virConnectPtr conn,

     if ((ctxt == NULL) || (xpath == NULL)) {
         virXMLError(conn, VIR_ERR_INTERNAL_ERROR,
-                    _("Invalid parameter to virXPathString()"));
+                    "%s", _("Invalid parameter to virXPathString()"));
         return (NULL);
     }
     relnode = ctxt->node;
@@ -67,7 +67,7 @@ virXPathString(virConnectPtr conn,
     ret = strdup((char *) obj->stringval);
     xmlXPathFreeObject(obj);
     if (ret == NULL) {
-        virXMLError(conn, VIR_ERR_NO_MEMORY, _("strdup failed"));
+        virXMLError(conn, VIR_ERR_NO_MEMORY, "%s", _("strdup failed"));
     }
     ctxt->node = relnode;
     return (ret);
@@ -95,7 +95,7 @@ virXPathNumber(virConnectPtr conn,

     if ((ctxt == NULL) || (xpath == NULL) || (value == NULL)) {
         virXMLError(conn, VIR_ERR_INTERNAL_ERROR,
-                    _("Invalid parameter to virXPathNumber()"));
+                    "%s", _("Invalid parameter to virXPathNumber()"));
         return (-1);
     }
     relnode = ctxt->node;
@@ -137,7 +137,7 @@ virXPathLong(virConnectPtr conn,

     if ((ctxt == NULL) || (xpath == NULL) || (value == NULL)) {
         virXMLError(conn, VIR_ERR_INTERNAL_ERROR,
-                    _("Invalid parameter to virXPathNumber()"));
+                    "%s", _("Invalid parameter to virXPathNumber()"));
         return (-1);
     }
     relnode = ctxt->node;
@@ -192,7 +192,7 @@ virXPathULong(virConnectPtr conn,

     if ((ctxt == NULL) || (xpath == NULL) || (value == NULL)) {
         virXMLError(conn, VIR_ERR_INTERNAL_ERROR,
-                    _("Invalid parameter to virXPathNumber()"));
+                    "%s", _("Invalid parameter to virXPathNumber()"));
         return (-1);
     }
     relnode = ctxt->node;
@@ -250,7 +250,7 @@ virXPathBoolean(virConnectPtr conn,

     if ((ctxt == NULL) || (xpath == NULL)) {
         virXMLError(conn, VIR_ERR_INTERNAL_ERROR,
-                    _("Invalid parameter to virXPathBoolean()"));
+                    "%s", _("Invalid parameter to virXPathBoolean()"));
         return (-1);
     }
     relnode = ctxt->node;
@@ -288,7 +288,7 @@ virXPathNode(virConnectPtr conn,

     if ((ctxt == NULL) || (xpath == NULL)) {
         virXMLError(conn, VIR_ERR_INTERNAL_ERROR,
-                    _("Invalid parameter to virXPathNode()"));
+                    "%s", _("Invalid parameter to virXPathNode()"));
         return (NULL);
     }
     relnode = ctxt->node;
@@ -330,7 +330,7 @@ virXPathNodeSet(virConnectPtr conn,

     if ((ctxt == NULL) || (xpath == NULL)) {
         virXMLError(conn, VIR_ERR_INTERNAL_ERROR,
-                    _("Invalid parameter to virXPathNodeSet()"));
+                    "%s", _("Invalid parameter to virXPathNodeSet()"));
         return (-1);
     }

diff --git a/src/xs_internal.c b/src/xs_internal.c
index ca6277d..d9e8123 100644
--- a/src/xs_internal.c
+++ b/src/xs_internal.c
@@ -298,7 +298,7 @@ xenStoreOpen(virConnectPtr conn,
          */
         if (getuid() == 0) {
             virXenStoreError(NULL, VIR_ERR_NO_XEN,
-                                 _("failed to connect to Xen Store"));
+                                 "%s", _("failed to connect to Xen Store"));
         }
         return (-1);
     }
--
1.6.0.2.307.gc4275

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