Implement missing POSIX-1.2008 function strerror_l
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
parent
80e0ad1e77
commit
463a8afaa5
|
@ -7,14 +7,18 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
FUNCTION
|
FUNCTION
|
||||||
<<strerror>>---convert error number to string
|
<<strerror>>, <<strerror_l>>---convert error number to string
|
||||||
|
|
||||||
INDEX
|
INDEX
|
||||||
strerror
|
strerror
|
||||||
|
|
||||||
|
INDEX
|
||||||
|
strerror_l
|
||||||
|
|
||||||
ANSI_SYNOPSIS
|
ANSI_SYNOPSIS
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
char *strerror(int <[errnum]>);
|
char *strerror(int <[errnum]>);
|
||||||
|
char *strerror_l(int <[errnum]>, locale_t locale);
|
||||||
char *_strerror_r(struct _reent <[ptr]>, int <[errnum]>,
|
char *_strerror_r(struct _reent <[ptr]>, int <[errnum]>,
|
||||||
int <[internal]>, int *<[error]>);
|
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
|
If <<errnum>> is not a known error number, the result points to an
|
||||||
empty string.
|
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
|
This implementation of <<strerror>> prints out the following strings
|
||||||
for each of the values defined in `<<errno.h>>':
|
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
|
ANSI C requires <<strerror>>, but does not specify the strings used
|
||||||
for each error number.
|
for each error number.
|
||||||
|
|
||||||
|
<<strerror_l>> is POSIX-1.2008.
|
||||||
|
|
||||||
Although this implementation of <<strerror>> is reentrant (depending
|
Although this implementation of <<strerror>> is reentrant (depending
|
||||||
on <<_user_strerror>>), ANSI C declares that subsequent calls to
|
on <<_user_strerror>>), ANSI C declares that subsequent calls to
|
||||||
<<strerror>> may overwrite the result string; therefore portable
|
<<strerror>> may overwrite the result string; therefore portable
|
||||||
|
@ -893,3 +903,10 @@ _DEFUN(strerror, (int),
|
||||||
{
|
{
|
||||||
return _strerror_r (_REENT, errnum, 0, NULL);
|
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);
|
||||||
|
}
|
||||||
|
|
|
@ -1345,6 +1345,7 @@ strcpy NOSIGFE
|
||||||
strcspn NOSIGFE
|
strcspn NOSIGFE
|
||||||
strdup SIGFE
|
strdup SIGFE
|
||||||
strerror SIGFE
|
strerror SIGFE
|
||||||
|
strerror_l SIGFE
|
||||||
strerror_r SIGFE
|
strerror_r SIGFE
|
||||||
strfmon SIGFE
|
strfmon SIGFE
|
||||||
strfmon_l SIGFE
|
strfmon_l SIGFE
|
||||||
|
|
|
@ -403,6 +403,13 @@ strerror (int errnum)
|
||||||
return result;
|
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
|
/* Newlib's <string.h> provides declarations for two strerror_r
|
||||||
variants, according to preprocessor feature macros. However, it
|
variants, according to preprocessor feature macros. However, it
|
||||||
returns "" instead of "Unknown error ...", so we override both
|
returns "" instead of "Unknown error ...", so we override both
|
||||||
|
|
Loading…
Reference in New Issue