(__argp_error): Check return value of __asprintf
authorSergey Poznyakoff <gray@gnu.org.ua>
Mon, 24 Jan 2005 13:06:58 +0000 (13:06 +0000)
committerSergey Poznyakoff <gray@gnu.org.ua>
Mon, 24 Jan 2005 13:06:58 +0000 (13:06 +0000)
(__argp_failure): Translate error message

lib/argp-help.c

index c506b57b0ac4dc49bafe4d9eb0266c93ecf6bf4e..7c700be45ada10886f5fa34537055136633132a8 100644 (file)
@@ -1745,7 +1745,8 @@ __argp_error (const struct argp_state *state, const char *fmt, ...)
            {
              char *buf;
 
-             __asprintf (&buf, fmt, ap);
+             if (__asprintf (&buf, fmt, ap) < 0)
+               buf = NULL;
 
              __fwprintf (stream, L"%s: %s\n",
                          state ? state->name : __argp_short_program_name (),
@@ -1823,7 +1824,8 @@ __argp_failure (const struct argp_state *state, int status, int errnum,
                {
                  char *buf;
 
-                 __asprintf (&buf, fmt, ap);
+                 if (__asprintf (&buf, fmt, ap) < 0)
+                   buf = NULL;
 
                  __fwprintf (stream, L": %s", buf);
 
@@ -1863,7 +1865,8 @@ __argp_failure (const struct argp_state *state, int status, int errnum,
 #endif
 #if !_LIBC
                  if (! s && ! (s = strerror (errnum)))
-                   s = "Unknown system error"; /* FIXME: translate this */
+                   s = dgettext (state->root_argp->argp_domain,
+                                 "Unknown system error");
 #endif
                  fputs (s, stream);
                }