[libvirt] [PATCH] libvirtd: mark strings for translation, including --help output

Jim Meyering jim at meyering.net
Thu May 20 20:49:37 UTC 2010


Eric Blake wrote:

> On 05/20/2010 01:42 PM, Jim Meyering wrote:
>>>
>>> Should we also do a followup that passes argv[0] to this method, so that
>>> the error message can start with the program name?
>>
>> Might as well.
>> patch below.
>
> Didn't see any signature change to daemonForkIntoBackground...
>
>>> Missed a string.  This should be _("(disabled in ./configure)").
>>
>> Thanks.  Fixed in the v2 below.
>
> Confirmed.
>
>>
>>>>          default:
>>>> -            fprintf (stderr, "libvirtd: internal error: unknown flag: %c\n",
>>>> +            fprintf (stderr, _("libvirtd: internal error: unknown flag: %c\n"),
>>>
>>> And here, should we be using %s/argv[0] instead of hard-coding the name
>>> "libvirtd"?
>>
>> Yes.
>
> ACK to 1/2, but let's respin 2/2 to tweak daemonForkIntoBackground to
> take another parameter...

Um...
Well there are two other diagnostics with no progname: prefix.
They're in qemudWritePidFile:

  VIR_ERROR(_("Failed to write to pid file '%s' : %s")
  VIR_ERROR(_("Failed to close pid file '%s' : %s")

so rather than adding parameters to two functions, I'll add a global,
argv0, and *remove* a few parameters:


>From 3dde80f86d7a6afe59d5ae9c0dff70a592cf0c84 Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyering at redhat.com>
Date: Thu, 20 May 2010 21:40:54 +0200
Subject: [PATCH] libvirtd: start each diagnostic with "argv0: "

Some diagnostics had a hard-coded "libvirtd: " prefix, some used
"error: " and some used "argv[0]: ".  Always use "argv[0]: ".
* daemon/libvirtd.c (argv0): New global.
(main): Set it.
(version, usage): Remove argv0 parameter.  Use global; update callers.
(daemonForkIntoBackground): Use argv0:, not error:.
(qemudWritePidFile): Start each diagnostic with argv0:.
Suggested by Eric Blake.
---
 daemon/libvirtd.c |   28 +++++++++++++++-------------
 1 files changed, 15 insertions(+), 13 deletions(-)

diff --git a/daemon/libvirtd.c b/daemon/libvirtd.c
index be28165..195c50a 100644
--- a/daemon/libvirtd.c
+++ b/daemon/libvirtd.c
@@ -190,6 +190,7 @@ static int max_client_requests = 5;

 static sig_atomic_t sig_errors = 0;
 static int sig_lasterrno = 0;
+static const char *argv0;

 enum {
     VIR_DAEMON_ERR_NONE = 0,
@@ -484,8 +485,8 @@ static int daemonForkIntoBackground(void) {

             if (ret == 1 && status != 0) {
                 fprintf(stderr,
-                        _("error: %s. Check /var/log/messages or run without "
-                          "--daemon for more info.\n"),
+                        _("%s: error: %s. Check /var/log/messages or run without "
+                          "--daemon for more info.\n"), argv0,
                         virDaemonErrTypeToString(status));
             }
             _exit(ret == 1 && status == 0 ? 0 : 1);
@@ -515,15 +516,15 @@ static int qemudWritePidFile(const char *pidFile) {
     }

     if (fprintf(fh, "%lu\n", (unsigned long)getpid()) < 0) {
-        VIR_ERROR(_("Failed to write to pid file '%s' : %s"),
-                  pidFile, virStrerror(errno, ebuf, sizeof ebuf));
+        VIR_ERROR(_("%s: Failed to write to pid file '%s' : %s"),
+                  argv0, pidFile, virStrerror(errno, ebuf, sizeof ebuf));
         fclose(fh);
         return -1;
     }

     if (fclose(fh) == EOF) {
-        VIR_ERROR(_("Failed to close pid file '%s' : %s"),
-                  pidFile, virStrerror(errno, ebuf, sizeof ebuf));
+        VIR_ERROR(_("%s: Failed to close pid file '%s' : %s"),
+                  argv0, pidFile, virStrerror(errno, ebuf, sizeof ebuf));
         return -1;
     }

@@ -2868,7 +2869,7 @@ remoteReadConfigFile (struct qemud_server *server, const char *filename)

 /* Display version information. */
 static void
-version (const char *argv0)
+version (void)
 {
     printf ("%s (%s) %s\n", argv0, PACKAGE_NAME, PACKAGE_VERSION);
 }
@@ -2960,7 +2961,7 @@ error:

 /* Print command-line usage. */
 static void
-usage (const char *argv0)
+usage (void)
 {
     fprintf (stderr,
              _("\n\
@@ -3021,6 +3022,7 @@ int main(int argc, char **argv) {
     const char *remote_config_file = NULL;
     int statuswrite = -1;
     int ret = 1;
+    argv0 = argv[0];

     struct option opts[] = {
         { "verbose", no_argument, &verbose, 1},
@@ -3035,7 +3037,7 @@ int main(int argc, char **argv) {
     };

     if (virInitialize() < 0) {
-        fprintf (stderr, _("libvirtd: initialization failed\n"));
+        fprintf (stderr, _("%s: initialization failed\n"), argv0);
         exit (EXIT_FAILURE);
     }

@@ -3081,16 +3083,16 @@ int main(int argc, char **argv) {
             break;

         case OPT_VERSION:
-            version (argv[0]);
+            version ();
             return 0;

         case '?':
-            usage (argv[0]);
+            usage ();
             return 2;

         default:
-            fprintf (stderr, _("libvirtd: internal error: unknown flag: %c\n"),
-                     c);
+            fprintf (stderr, _("%s: internal error: unknown flag: %c\n"),
+                     argv0, c);
             exit (EXIT_FAILURE);
         }
     }
--
1.7.1.262.g5ef3d




More information about the libvir-list mailing list