This is the mail archive of the cygwin-cvs@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[newlib-cygwin] Implement missing POSIX-1.2008 function strerror_l


https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=463a8afaa58b80926b0236e14a6171f45c1b784f

commit 463a8afaa58b80926b0236e14a6171f45c1b784f
Author: Corinna Vinschen <corinna@vinschen.de>
Date:   Tue Aug 23 17:49:24 2016 +0200

    Implement missing POSIX-1.2008 function strerror_l
    
    Signed-off-by: Corinna Vinschen <corinna@vinschen.de>

Diff:
---
 newlib/libc/string/strerror.c | 19 ++++++++++++++++++-
 winsup/cygwin/common.din      |  1 +
 winsup/cygwin/errno.cc        |  7 +++++++
 3 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/newlib/libc/string/strerror.c b/newlib/libc/string/strerror.c
index fcef33e..49e5f7e 100644
--- a/newlib/libc/string/strerror.c
+++ b/newlib/libc/string/strerror.c
@@ -7,14 +7,18 @@
 
 /*
 FUNCTION
-	<<strerror>>---convert error number to string
+	<<strerror>>, <<strerror_l>>---convert error number to string
 
 INDEX
 	strerror
 
+INDEX
+	strerror_l
+
 ANSI_SYNOPSIS
 	#include <string.h>
 	char *strerror(int <[errnum]>);
+	char *strerror_l(int <[errnum]>, locale_t locale);
 	char *_strerror_r(struct _reent <[ptr]>, int <[errnum]>,
 			  int <[internal]>, int *<[error]>);
 
@@ -29,6 +33,10 @@ string.  The value of <[errnum]> is usually a copy of <<errno>>.
 If <<errnum>> is not a known error number, the result points to an
 empty string.
 
+<<strftime_l>> is like <<strftime>> but creates a string in a format
+as expected in locale <[locale]>.  If <[locale]> is LC_GLOBAL_LOCALE or
+not a valid locale object, the behaviour is undefined.
+
 This implementation of <<strerror>> prints out the following strings
 for each of the values defined in `<<errno.h>>':
 
@@ -330,6 +338,8 @@ PORTABILITY
 ANSI C requires <<strerror>>, but does not specify the strings used
 for each error number.
 
+<<strerror_l>> is POSIX-1.2008.
+
 Although this implementation of <<strerror>> is reentrant (depending
 on <<_user_strerror>>), ANSI C declares that subsequent calls to
 <<strerror>> may overwrite the result string; therefore portable
@@ -893,3 +903,10 @@ _DEFUN(strerror, (int),
 {
   return _strerror_r (_REENT, errnum, 0, NULL);
 }
+
+char *
+strerror_l (int errnum, locale_t locale)
+{
+  /* We don't support per-locale error messages. */
+  return _strerror_r (_REENT, errnum, 0, NULL);
+}
diff --git a/winsup/cygwin/common.din b/winsup/cygwin/common.din
index 8f7a282..7fce587 100644
--- a/winsup/cygwin/common.din
+++ b/winsup/cygwin/common.din
@@ -1345,6 +1345,7 @@ strcpy NOSIGFE
 strcspn NOSIGFE
 strdup SIGFE
 strerror SIGFE
+strerror_l SIGFE
 strerror_r SIGFE
 strfmon SIGFE
 strfmon_l SIGFE
diff --git a/winsup/cygwin/errno.cc b/winsup/cygwin/errno.cc
index 7e07a61..9168e9b 100644
--- a/winsup/cygwin/errno.cc
+++ b/winsup/cygwin/errno.cc
@@ -403,6 +403,13 @@ strerror (int errnum)
   return result;
 }
 
+extern "C" char *
+strerror_l (int errnum, locale_t locale)
+{
+  /* We don't provide localized system error messages (yet?). */
+  return strerror (errnum);
+}
+
 /* Newlib's <string.h> provides declarations for two strerror_r
    variants, according to preprocessor feature macros.  However, it
    returns "" instead of "Unknown error ...", so we override both


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]