diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/ctype.h | 46 | ||||
-rw-r--r-- | include/getopt.h | 1 |
2 files changed, 46 insertions, 1 deletions
diff --git a/include/ctype.h b/include/ctype.h index 7b51e1f5eb..3100853ab4 100644 --- a/include/ctype.h +++ b/include/ctype.h @@ -1 +1,45 @@ -#include <ctype/ctype.h> +#ifndef _CTYPE_H + +# include <ctype/ctype.h> + +# ifndef NOT_IN_libc + +/* The optimized macros are not defined for users because they can't see + the thread-local locale state. For inside libc, define them using the + _NL_CURRENT accessors. We don't use _NL_CURRENT_LOCALE->__ctype_b here + because we want to cause a link-time ref to _nl_current_LC_CTYPE under + NL_CURRENT_INDIRECT. */ + +# include "../locale/localeinfo.h" +# define __isctype(c, type) \ + (((uint16_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_CLASS) + 128) \ + [(int) (c)] & (uint16_t) type) +# ifndef __NO_CTYPE +# define isalnum(c) __isctype((c), _ISalnum) +# define isalpha(c) __isctype((c), _ISalpha) +# define iscntrl(c) __isctype((c), _IScntrl) +# define isdigit(c) __isctype((c), _ISdigit) +# define islower(c) __isctype((c), _ISlower) +# define isgraph(c) __isctype((c), _ISgraph) +# define isprint(c) __isctype((c), _ISprint) +# define ispunct(c) __isctype((c), _ISpunct) +# define isspace(c) __isctype((c), _ISspace) +# define isupper(c) __isctype((c), _ISupper) +# define isxdigit(c) __isctype((c), _ISxdigit) +# define isblank(c) __isctype((c), _ISblank) + +# define tolower(c) \ + __tobody (c, tolower, \ + (uint32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TOLOWER) + 128, \ + (c)) +# define _tolower(c) tolower (c) +# define toupper(c) \ + __tobody (c, toupper, \ + (uint32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TOUPPER) + 128, \ + (c)) +# define _toupper(c) toupper (c) + +# endif /* Not __NO_CTYPE. */ +# endif /* _LIBC_REENTRANT. */ + +#endif /* ctype.h */ diff --git a/include/getopt.h b/include/getopt.h index 70e790b396..7bef4ba4bb 100644 --- a/include/getopt.h +++ b/include/getopt.h @@ -1,5 +1,6 @@ #ifndef _GETOPT_H +#include <features.h> /* Get __GNU_LIBRARY__ defined now. */ #include <posix/getopt.h> # ifdef _GETOPT_H |