diff options
author | Zack Weinberg <zackw@panix.com> | 2016-11-16 16:20:26 -0500 |
---|---|---|
committer | Zack Weinberg <zackw@panix.com> | 2017-02-16 17:02:50 -0500 |
commit | 7b037c095e31c2396d0a9b0e6356bc566ee4812f (patch) | |
tree | d4fbf2b276d12f90883eb805fb4e59c696952ec6 /string/strings.h | |
parent | ab9536a75d3f2e0158cc91a0ae0096032c9d57b4 (diff) | |
download | glibc-7b037c095e31c2396d0a9b0e6356bc566ee4812f.zip glibc-7b037c095e31c2396d0a9b0e6356bc566ee4812f.tar.gz glibc-7b037c095e31c2396d0a9b0e6356bc566ee4812f.tar.bz2 |
Clean up redundancies between string.h and strings.h.
* string/string.h [__USE_MISC]: Include strings.h.
(__bzero, bcmp, bcopy, bzero, index, rindex)
(strcasecmp, strncasecmp, strcasecmp_l, strncasecmp_l)
(ffs, ffsl, ffsll): Don't declare.
* string/strings.h: Do not suppress the file if string.h has
already been included.
(bcmp, bcopy, bzero, strcasecmp, strncasecmp): Add __nonnull
annotations.
(index, rindex): Define inline forwarders even if
__CORRECT_ISO_CPP_STRING_H_PROTO is defined.
(ffs): Use __attribute_const__.
(ffsl, ffsll): Declare here.
(strcasecmp_l, strncasecmp_l): Correct comments; these functions
have now been standardized.
* include/string.h (__bzero): Declare here.
Diffstat (limited to 'string/strings.h')
-rw-r--r-- | string/strings.h | 70 |
1 files changed, 35 insertions, 35 deletions
diff --git a/string/strings.h b/string/strings.h index 69b75b1..43207af 100644 --- a/string/strings.h +++ b/string/strings.h @@ -18,35 +18,31 @@ #ifndef _STRINGS_H #define _STRINGS_H 1 -/* We don't need and should not read this file if <string.h> was already - read. The one exception being that if __USE_MISC isn't defined, then - these aren't defined in string.h, so we need to define them here. */ -#if !defined _STRING_H || !defined __USE_MISC - -# include <features.h> -# define __need_size_t -# include <stddef.h> +#include <features.h> +#define __need_size_t +#include <stddef.h> /* Tell the caller that we provide correct C++ prototypes. */ -# if defined __cplusplus && __GNUC_PREREQ (4, 4) -# define __CORRECT_ISO_CPP_STRINGS_H_PROTO -# endif +#if defined __cplusplus && __GNUC_PREREQ (4, 4) +# define __CORRECT_ISO_CPP_STRINGS_H_PROTO +#endif __BEGIN_DECLS -# if defined __USE_MISC || !defined __USE_XOPEN2K8 +#if defined __USE_MISC || !defined __USE_XOPEN2K8 /* Compare N bytes of S1 and S2 (same as memcmp). */ extern int bcmp (const void *__s1, const void *__s2, size_t __n) - __THROW __attribute_pure__; + __THROW __attribute_pure__ __nonnull ((1, 2)); /* Copy N bytes of SRC to DEST (like memmove, but args reversed). */ -extern void bcopy (const void *__src, void *__dest, size_t __n) __THROW; +extern void bcopy (const void *__src, void *__dest, size_t __n) + __THROW __nonnull ((1, 2)); /* Set N bytes of S to 0. */ -extern void bzero (void *__s, size_t __n) __THROW; +extern void bzero (void *__s, size_t __n) __THROW __nonnull ((1)); /* Find the first occurrence of C in S (same as strchr). */ -# ifdef __CORRECT_ISO_CPP_STRINGS_H_PROTO +# ifdef __CORRECT_ISO_CPP_STRINGS_H_PROTO extern "C++" { extern char *index (char *__s, int __c) @@ -54,7 +50,7 @@ extern char *index (char *__s, int __c) extern const char *index (const char *__s, int __c) __THROW __asm ("index") __attribute_pure__ __nonnull ((1)); -# if defined __OPTIMIZE__ && !defined __CORRECT_ISO_CPP_STRING_H_PROTO +# if defined __OPTIMIZE__ __extern_always_inline char * index (char *__s, int __c) __THROW { @@ -66,15 +62,15 @@ index (const char *__s, int __c) __THROW { return __builtin_index (__s, __c); } -# endif +# endif } -# else +# else extern char *index (const char *__s, int __c) __THROW __attribute_pure__ __nonnull ((1)); -# endif +# endif /* Find the last occurrence of C in S (same as strrchr). */ -# ifdef __CORRECT_ISO_CPP_STRINGS_H_PROTO +# ifdef __CORRECT_ISO_CPP_STRINGS_H_PROTO extern "C++" { extern char *rindex (char *__s, int __c) @@ -82,7 +78,7 @@ extern char *rindex (char *__s, int __c) extern const char *rindex (const char *__s, int __c) __THROW __asm ("rindex") __attribute_pure__ __nonnull ((1)); -# if defined __OPTIMIZE__ && !defined __CORRECT_ISO_CPP_STRING_H_PROTO +# if defined __OPTIMIZE__ __extern_always_inline char * rindex (char *__s, int __c) __THROW { @@ -94,39 +90,45 @@ rindex (const char *__s, int __c) __THROW { return __builtin_rindex (__s, __c); } -# endif +# endif } -# else +# else extern char *rindex (const char *__s, int __c) __THROW __attribute_pure__ __nonnull ((1)); -# endif # endif +#endif #if defined __USE_MISC || !defined __USE_XOPEN2K8 || defined __USE_XOPEN2K8XSI /* Return the position of the first bit set in I, or 0 if none are set. The least-significant bit is position 1, the most-significant 32. */ -extern int ffs (int __i) __THROW __attribute__ ((const)); +extern int ffs (int __i) __THROW __attribute_const__; #endif +/* The following two functions are non-standard but necessary for non-32 bit + platforms. */ +# ifdef __USE_GNU +extern int ffsl (long int __l) __THROW __attribute_const__; +__extension__ extern int ffsll (long long int __ll) + __THROW __attribute_const__; +# endif + /* Compare S1 and S2, ignoring case. */ extern int strcasecmp (const char *__s1, const char *__s2) - __THROW __attribute_pure__; + __THROW __attribute_pure__ __nonnull ((1, 2)); /* Compare no more than N chars of S1 and S2, ignoring case. */ extern int strncasecmp (const char *__s1, const char *__s2, size_t __n) - __THROW __attribute_pure__; + __THROW __attribute_pure__ __nonnull ((1, 2)); #ifdef __USE_XOPEN2K8 -/* The following functions are equivalent to the both above but they - take the locale they use for the collation as an extra argument. - This is not standardsized but something like will come. */ # include <xlocale.h> -/* Again versions of a few functions which use the given locale instead - of the global one. */ +/* Compare S1 and S2, ignoring case, using collation rules from LOC. */ extern int strcasecmp_l (const char *__s1, const char *__s2, __locale_t __loc) __THROW __attribute_pure__ __nonnull ((1, 2, 3)); +/* Compare no more than N chars of S1 and S2, ignoring case, using + collation rules from LOC. */ extern int strncasecmp_l (const char *__s1, const char *__s2, size_t __n, __locale_t __loc) __THROW __attribute_pure__ __nonnull ((1, 2, 4)); @@ -134,8 +136,6 @@ extern int strncasecmp_l (const char *__s1, const char *__s2, __END_DECLS -#endif /* string.h */ - #if __GNUC_PREREQ (3,4) && __USE_FORTIFY_LEVEL > 0 \ && defined __fortify_function /* Functions with security checks. */ |