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(a)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