]> git.ipfire.org Git - thirdparty/gettext.git/commitdiff
Update 'strerror' module from gnulib, but keep #if !HAVE_STRERROR modification.
authorBruno Haible <bruno@clisp.org>
Wed, 12 Jan 2005 13:12:40 +0000 (13:12 +0000)
committerBruno Haible <bruno@clisp.org>
Tue, 23 Jun 2009 10:12:03 +0000 (12:12 +0200)
gettext-tools/lib/ChangeLog
gettext-tools/lib/strerror.c

index e0d5bab3d55930f7ed510b0b8c3bb9830bdecb90..e46f8beb6d8b1b179bfb5e4323d30b08ae315e20 100644 (file)
@@ -1,3 +1,7 @@
+2005-01-06  Bruno Haible  <bruno@clisp.org>
+
+       * strerror.c: Update from gnulib, with HAVE_STRERROR modifications.
+
 2005-01-06  Bruno Haible  <bruno@clisp.org>
 
        * strtol.c: Update from gnulib.
index 931460fbb69d1db25822bfa488c46d2aaffdb01c..465d00997317ca36a4d2ab400fba53c3cc64112a 100644 (file)
@@ -1,6 +1,7 @@
 /* strerror.c --- ANSI C compatible system error routine
 
-   Copyright (C) 1986, 1988-1989, 1991, 2002-2003 Free Software Foundation, Inc.
+   Copyright (C) 1986, 1988, 1989, 1991, 2002, 2003 Free Software
+   Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
 
 #if !HAVE_STRERROR
 
-#if 0 /* Avoid colliding declaration of sys_errlist.  */
-# include <stdio.h>
-#endif
+#include <limits.h>
 
+/* Don't include <stdio.h>, since it may or may not declare
+   sys_errlist and its declarations may collide with ours.  Just
+   declare the stuff that we need directly.  Standard hosted C89
+   implementations define strerror and they don't need this strerror
+   function, so take some liberties with the standard to cater to
+   ancient or limited freestanding implementations.  */
+int sprintf (char *, char const *, ...);
 extern int sys_nerr;
 extern char *sys_errlist[];
 
 char *
 strerror (int n)
 {
-  static char mesg[30];
+  static char const fmt[] = "Unknown error (%d)";
+  static char mesg[sizeof fmt + sizeof n * CHAR_BIT / 3];
 
   if (n < 0 || n >= sys_nerr)
     {
-      sprintf (mesg, "Unknown error (%d)", n);
+      sprintf (mesg, fmt, n);
       return mesg;
     }
   else