diff options
| author | "Steven J. Hill" <sjhill@realitydiluted.com> | 2005-07-30 00:03:07 +0000 | 
|---|---|---|
| committer | "Steven J. Hill" <sjhill@realitydiluted.com> | 2005-07-30 00:03:07 +0000 | 
| commit | 7e5c79bcc67d3f45f1d310eefc40f39330008628 (patch) | |
| tree | 348e70e826fb98e88b8f50ab00e69d8eb3b85dae | |
| parent | c78cc09f59408171189bcda4f373ae70698dc3b4 (diff) | |
The newly added __glibc_strerror_r function is probably fine, but the
uClibc did not even compile or link without errors. This fixes that
up. Please test more thoroughly next time.
| -rw-r--r-- | include/string.h | 61 | ||||
| -rw-r--r-- | libc/string/wstring.c | 4 | 
2 files changed, 27 insertions, 38 deletions
diff --git a/include/string.h b/include/string.h index 224bb8621..59f0ac481 100644 --- a/include/string.h +++ b/include/string.h @@ -122,13 +122,13 @@ __END_NAMESPACE_STD  extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l)       __THROW __attribute_pure__ __nonnull ((1, 2, 3));  extern int __strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l) -     __THROW __attribute_pure__ __nonnull ((1, 2, 3)); +     __THROW __attribute_pure__;  /* Put a transformation of SRC into no more than N bytes of DEST.  */  extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n,  			 __locale_t __l) __THROW __nonnull ((2, 4));  extern size_t __strxfrm_l (char *__dest, __const char *__src, size_t __n, -			 __locale_t __l) __THROW __nonnull ((2, 4)); +			 __locale_t __l) __THROW;  #endif  #endif /* __UCLIBC_HAS_XLOCALE__ */ @@ -263,41 +263,33 @@ __BEGIN_NAMESPACE_STD  /* Return a string describing the meaning of the `errno' code in ERRNUM.  */  extern char *strerror (int __errnum) __THROW;  __END_NAMESPACE_STD - -extern char *__glibc_strerror_r (int __errnum, char *__buf, size_t __buflen) -     __THROW __nonnull ((2)); -extern int __xpg_strerror_r (int __errnum, char *__buf, size_t __buflen) -     __THROW __nonnull ((2)); -  #if defined __USE_XOPEN2K || defined __USE_MISC -/* Reentrant version of `strerror'. -   There are 2 flavors of `strerror_r', GNU which returns the string -   and may or may not use the supplied temporary buffer and POSIX one -   which fills the string into the buffer. -   To use the POSIX version, -D_XOPEN_SOURCE=600 or -D_POSIX_C_SOURCE=200112L -   without -D_GNU_SOURCE is needed, otherwise the GNU version is -   preferred.  */ -# if defined __USE_XOPEN2K && !defined __USE_GNU -/* Fill BUF with a string describing the meaning of the `errno' code in -   ERRNUM.  */ -#  ifdef __REDIRECT_NTH -extern int __REDIRECT_NTH (strerror_r, -			   (int __errnum, char *__buf, size_t __buflen), -			   __xpg_strerror_r) __nonnull ((2)); +/* Reentrant version of `strerror'.  If a temporary buffer is required, at +   most BUFLEN bytes of BUF will be used.  */ +/* extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) __THROW; */ + +/* uClibc Note: glibc's strerror_r is different from that specified in SUSv3. + * So we try to compensate based on feature macros. */ +extern char *__glibc_strerror_r (int __errnum, char *__buf, size_t __buflen) __THROW; +extern int _susv3_strerror_r (int __errnum, char *__buf, size_t buflen) __THROW; + +# if defined(__USE_XOPEN2K) && !defined(__USE_GNU) +#  ifdef __REDIRECT +extern int __REDIRECT (strerror_r, +			   (int __errnum, char *__buf, size_t buflen) __THROW, +			   _susv3_strerror_r);  #  else  #   define strerror_r __xpg_strerror_r  #  endif  # else -/* If a temporary buffer is required, at most BUFLEN bytes of BUF will be -   used.  */ -#  ifdef __REDIRECT_NTH -extern char * __REDIRECT_NTH (strerror_r, -			   (int __errnum, char *__buf, size_t __buflen), -			   __glibc_strerror_r) __nonnull ((2)); +#  ifdef __REDIRECT +extern char *__REDIRECT (strerror_r, +			   (int __errnum, char *__buf, size_t buflen) __THROW, +			   __glibc_strerror_r);  #  else  #   define strerror_r __glibc_strerror_r  #  endif -# endif +# endif /* defined(__USE_XOPEN2K) && !defined(__USE_GNU) */  #endif  /* We define this function always since `bzero' is sometimes needed when @@ -355,15 +347,14 @@ extern int strcasecmp_l (__const char *__s1, __const char *__s2,  			 __locale_t __loc)       __THROW __attribute_pure__ __nonnull ((1, 2, 3));  extern int __strcasecmp_l (__const char *__s1, __const char *__s2, -			 __locale_t __loc) -     __THROW __attribute_pure__ __nonnull ((1, 2, 3)); +			 __locale_t __loc) __THROW __attribute_pure__;  extern int strncasecmp_l (__const char *__s1, __const char *__s2,  			  size_t __n, __locale_t __loc)       __THROW __attribute_pure__ __nonnull ((1, 2, 4));  extern int __strncasecmp_l (__const char *__s1, __const char *__s2,  			  size_t __n, __locale_t __loc) -     __THROW __attribute_pure__ __nonnull ((1, 2, 4)); +     __THROW __attribute_pure__;  #endif  #endif /* __UCLIBC_HAS_XLOCALE__ */ @@ -398,13 +389,11 @@ extern char *stpncpy (char *__restrict __dest,  		      __const char *__restrict __src, size_t __n)       __THROW __nonnull ((1, 2)); -#if 0							/* uClibc does not support strfry or memfrob. */  /* Sautee STRING briskly.  */  extern char *strfry (char *__string) __THROW __nonnull ((1));  /* Frobnicate N bytes of S.  */  extern void *memfrob (void *__s, size_t __n) __THROW __nonnull ((1)); -#endif  # ifndef basename  /* Return the file name within directory of FILENAME.  We don't @@ -419,9 +408,9 @@ extern char *basename (__const char *__filename) __THROW __nonnull ((1));  #ifdef	__USE_BSD  /* Two OpenBSD extension functions. */  extern size_t strlcat(char *__restrict dst, const char *__restrict src, -                      size_t n) __THROW __nonnull ((1, 2)); +                      size_t n) __THROW;  extern size_t strlcpy(char *__restrict dst, const char *__restrict src, -                      size_t n) __THROW __nonnull ((1, 2)); +                      size_t n) __THROW;  #endif  __END_DECLS diff --git a/libc/string/wstring.c b/libc/string/wstring.c index 6f54ae615..6e4d895b6 100644 --- a/libc/string/wstring.c +++ b/libc/string/wstring.c @@ -1571,8 +1571,6 @@ int __xpg_strerror_r(int errnum, char *strerrbuf, size_t buflen)  /**********************************************************************/  #ifdef L___glibc_strerror_r -weak_alias(__glibc_strerror_r,__strerror_r); -  char *__glibc_strerror_r(int errnum, char *strerrbuf, size_t buflen)  {      __xpg_strerror_r(errnum, strerrbuf, buflen); @@ -1580,6 +1578,8 @@ char *__glibc_strerror_r(int errnum, char *strerrbuf, size_t buflen)      return strerrbuf;  } +weak_alias(__glibc_strerror_r,__strerror_r); +  #endif  /**********************************************************************/  #ifdef L_memmem  | 
