diff options
| author | Elliott Hughes <enh@google.com> | 2014-04-18 10:29:16 -0700 |
|---|---|---|
| committer | Elliott Hughes <enh@google.com> | 2014-04-18 10:29:16 -0700 |
| commit | f3c73901cb5ca4de2651151cf2c65b31a729466e (patch) | |
| tree | 0a5f3ba73342782ee188f914c8f60f337c2af7d6 /libc | |
| parent | 0e351e4011bc98cacc3e37292bfb0e86c3a3bb5b (diff) | |
| download | bionic-f3c73901cb5ca4de2651151cf2c65b31a729466e.zip bionic-f3c73901cb5ca4de2651151cf2c65b31a729466e.tar.gz bionic-f3c73901cb5ca4de2651151cf2c65b31a729466e.tar.bz2 | |
Upgrade our <ctype.h> implementation to OpenBSD head.
Adding the perfunctory <ctype.h> tests showed that we'd accidentally
dropped several symbols. This puts everything back in its proper place
and switches us to upstream head at the same time.
Change-Id: Ib527ad280c9baded81e667fa598698526d93e66f
Diffstat (limited to 'libc')
| -rw-r--r-- | libc/Android.mk | 3 | ||||
| -rw-r--r-- | libc/upstream-openbsd/lib/libc/gen/ctype_.c (renamed from libc/stdlib/ctype_.c) | 121 | ||||
| -rw-r--r-- | libc/upstream-openbsd/lib/libc/gen/isctype.c | 150 | ||||
| -rw-r--r-- | libc/upstream-openbsd/lib/libc/include/ctype_private.h (renamed from libc/stdlib/ctype_private.h) | 0 | ||||
| -rw-r--r-- | libc/upstream-openbsd/openbsd-compat.h | 12 |
5 files changed, 183 insertions, 103 deletions
diff --git a/libc/Android.mk b/libc/Android.mk index fd14232..b84c1e1 100644 --- a/libc/Android.mk +++ b/libc/Android.mk @@ -81,7 +81,6 @@ libc_common_src_files := \ stdio/sprintf.c \ stdio/vfprintf.c \ stdlib/atexit.c \ - stdlib/ctype_.c \ stdlib/getenv.c \ stdlib/putenv.c \ stdlib/setenv.c \ @@ -338,10 +337,12 @@ libc_upstream_openbsd_gdtoa_src_files_64 := \ libc_upstream_openbsd_src_files := \ upstream-openbsd/lib/libc/gen/alarm.c \ + upstream-openbsd/lib/libc/gen/ctype_.c \ upstream-openbsd/lib/libc/gen/exec.c \ upstream-openbsd/lib/libc/gen/fnmatch.c \ upstream-openbsd/lib/libc/gen/ftok.c \ upstream-openbsd/lib/libc/gen/getprogname.c \ + upstream-openbsd/lib/libc/gen/isctype.c \ upstream-openbsd/lib/libc/gen/setprogname.c \ upstream-openbsd/lib/libc/gen/time.c \ upstream-openbsd/lib/libc/gen/tolower_.c \ diff --git a/libc/stdlib/ctype_.c b/libc/upstream-openbsd/lib/libc/gen/ctype_.c index c4f294d..89c8257 100644 --- a/libc/stdlib/ctype_.c +++ b/libc/upstream-openbsd/lib/libc/gen/ctype_.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ctype_.c,v 1.9 2005/08/08 08:05:33 espie Exp $ */ +/* $OpenBSD: ctype_.c,v 1.10 2011/09/22 09:06:10 stsp Exp $ */ /* * Copyright (c) 1989 The Regents of the University of California. * All rights reserved. @@ -36,15 +36,6 @@ #include <ctype.h> #include "ctype_private.h" -#define _U _CTYPE_U -#define _L _CTYPE_L -#define _D _CTYPE_D -#define _S _CTYPE_S -#define _P _CTYPE_P -#define _C _CTYPE_C -#define _X _CTYPE_X -#define _B _CTYPE_B - const char _C_ctype_[1 + CTYPE_NUM_CHARS] = { 0, _C, _C, _C, _C, _C, _C, _C, _C, @@ -53,8 +44,8 @@ const char _C_ctype_[1 + CTYPE_NUM_CHARS] = { _C, _C, _C, _C, _C, _C, _C, _C, _S|(char)_B, _P, _P, _P, _P, _P, _P, _P, _P, _P, _P, _P, _P, _P, _P, _P, - _D, _D, _D, _D, _D, _D, _D, _D, - _D, _D, _P, _P, _P, _P, _P, _P, + _N, _N, _N, _N, _N, _N, _N, _N, + _N, _N, _P, _P, _P, _P, _P, _P, _P, _U|_X, _U|_X, _U|_X, _U|_X, _U|_X, _U|_X, _U, _U, _U, _U, _U, _U, _U, _U, _U, _U, _U, _U, _U, _U, _U, _U, _U, @@ -62,98 +53,24 @@ const char _C_ctype_[1 + CTYPE_NUM_CHARS] = { _P, _L|_X, _L|_X, _L|_X, _L|_X, _L|_X, _L|_X, _L, _L, _L, _L, _L, _L, _L, _L, _L, _L, _L, _L, _L, _L, _L, _L, _L, - /* determine printability based on the IS0 8859 8-bit standard */ _L, _L, _L, _P, _P, _P, _P, _C, - _C, _C, _C, _C, _C, _C, _C, _C, /* 80 */ - _C, _C, _C, _C, _C, _C, _C, _C, /* 88 */ - _C, _C, _C, _C, _C, _C, _C, _C, /* 90 */ - _C, _C, _C, _C, _C, _C, _C, _C, /* 98 */ - _P, _P, _P, _P, _P, _P, _P, _P, /* A0 */ - _P, _P, _P, _P, _P, _P, _P, _P, /* A8 */ - _P, _P, _P, _P, _P, _P, _P, _P, /* B0 */ - _P, _P, _P, _P, _P, _P, _P, _P, /* B8 */ - _P, _P, _P, _P, _P, _P, _P, _P, /* C0 */ - _P, _P, _P, _P, _P, _P, _P, _P, /* C8 */ - _P, _P, _P, _P, _P, _P, _P, _P, /* D0 */ - _P, _P, _P, _P, _P, _P, _P, _P, /* D8 */ - _P, _P, _P, _P, _P, _P, _P, _P, /* E0 */ - _P, _P, _P, _P, _P, _P, _P, _P, /* E8 */ - _P, _P, _P, _P, _P, _P, _P, _P, /* F0 */ - _P, _P, _P, _P, _P, _P, _P, _P /* F8 */ + 0, 0, 0, 0, 0, 0, 0, 0, /* 80 */ + 0, 0, 0, 0, 0, 0, 0, 0, /* 88 */ + 0, 0, 0, 0, 0, 0, 0, 0, /* 90 */ + 0, 0, 0, 0, 0, 0, 0, 0, /* 98 */ + 0, 0, 0, 0, 0, 0, 0, 0, /* A0 */ + 0, 0, 0, 0, 0, 0, 0, 0, /* A8 */ + 0, 0, 0, 0, 0, 0, 0, 0, /* B0 */ + 0, 0, 0, 0, 0, 0, 0, 0, /* B8 */ + 0, 0, 0, 0, 0, 0, 0, 0, /* C0 */ + 0, 0, 0, 0, 0, 0, 0, 0, /* C8 */ + 0, 0, 0, 0, 0, 0, 0, 0, /* D0 */ + 0, 0, 0, 0, 0, 0, 0, 0, /* D8 */ + 0, 0, 0, 0, 0, 0, 0, 0, /* E0 */ + 0, 0, 0, 0, 0, 0, 0, 0, /* E8 */ + 0, 0, 0, 0, 0, 0, 0, 0, /* F0 */ + 0, 0, 0, 0, 0, 0, 0, 0 /* F8 */ }; const char *_ctype_ = _C_ctype_; - -int isalnum(int c) -{ - return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & (_U|_L|_D))); -} - -int isalpha(int c) -{ - return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & (_U|_L))); -} - -int iscntrl(int c) -{ - return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & _C)); -} - -int isdigit(int c) -{ - return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & _D)); -} - -int isgraph(int c) -{ - return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & (_P|_U|_L|_D))); -} - -int islower(int c) -{ - return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & _L)); -} - -int isprint(int c) -{ - return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & (_P|_U|_L|_D|_B))); -} - -int ispunct(int c) -{ - return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & _P)); -} - -int isspace(int c) -{ - return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & _S)); -} - -int isupper(int c) -{ - return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & _U)); -} - -int isxdigit(int c) -{ - return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & (_D|_X))); -} - -int isblank(int c) -{ - return (c == ' ' || c == '\t'); -} - -int isascii(int c) -{ - return ((unsigned int)c <= 0177); -} - -int toascii(int c) -{ - return (c & 0177); -} - -__strong_alias(_toupper, toupper); -__strong_alias(_tolower, tolower); diff --git a/libc/upstream-openbsd/lib/libc/gen/isctype.c b/libc/upstream-openbsd/lib/libc/gen/isctype.c new file mode 100644 index 0000000..970b5e2 --- /dev/null +++ b/libc/upstream-openbsd/lib/libc/gen/isctype.c @@ -0,0 +1,150 @@ +/* $OpenBSD: isctype.c,v 1.11 2005/08/08 08:05:34 espie Exp $ */ +/* + * Copyright (c) 1989 The Regents of the University of California. + * All rights reserved. + * (c) UNIX System Laboratories, Inc. + * All or some portions of this file are derived from material licensed + * to the University of California by American Telephone and Telegraph + * Co. or Unix System Laboratories, Inc. and are reproduced herein with + * the permission of UNIX System Laboratories, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#define _ANSI_LIBRARY +#include <ctype.h> +#include <stdio.h> + +#undef isalnum +int +isalnum(int c) +{ + return (c == EOF ? 0 : ((_ctype_ + 1)[(unsigned char)c] & (_U|_L|_N))); +} + +#undef isalpha +int +isalpha(int c) +{ + return (c == EOF ? 0 : ((_ctype_ + 1)[(unsigned char)c] & (_U|_L))); +} + +#undef isblank +int +isblank(int c) +{ + return (c == ' ' || c == '\t'); +} + +#undef iscntrl +int +iscntrl(int c) +{ + return (c == EOF ? 0 : ((_ctype_ + 1)[(unsigned char)c] & _C)); +} + +#undef isdigit +int +isdigit(int c) +{ + return (c == EOF ? 0 : ((_ctype_ + 1)[(unsigned char)c] & _N)); +} + +#undef isgraph +int +isgraph(int c) +{ + return (c == EOF ? 0 : ((_ctype_ + 1)[(unsigned char)c] & (_P|_U|_L|_N))); +} + +#undef islower +int +islower(int c) +{ + return (c == EOF ? 0 : ((_ctype_ + 1)[(unsigned char)c] & _L)); +} + +#undef isprint +int +isprint(int c) +{ + return (c == EOF ? 0 : ((_ctype_ + 1)[(unsigned char)c] & (_P|_U|_L|_N|_B))); +} + +#undef ispunct +int +ispunct(int c) +{ + return (c == EOF ? 0 : ((_ctype_ + 1)[(unsigned char)c] & _P)); +} + +#undef isspace +int +isspace(int c) +{ + return (c == EOF ? 0 : ((_ctype_ + 1)[(unsigned char)c] & _S)); +} + +#undef isupper +int +isupper(int c) +{ + return (c == EOF ? 0 : ((_ctype_ + 1)[(unsigned char)c] & _U)); +} + +#undef isxdigit +int +isxdigit(int c) +{ + return (c == EOF ? 0 : ((_ctype_ + 1)[(unsigned char)c] & (_N|_X))); +} + +#undef isascii +int +isascii(int c) +{ + return ((unsigned int)c <= 0177); +} + +#undef toascii +int +toascii(int c) +{ + return (c & 0177); +} + +#undef _toupper +int +_toupper(int c) +{ + return (c - 'a' + 'A'); +} + +#undef _tolower +int +_tolower(int c) +{ + return (c - 'A' + 'a'); +} diff --git a/libc/stdlib/ctype_private.h b/libc/upstream-openbsd/lib/libc/include/ctype_private.h index 39cc792..39cc792 100644 --- a/libc/stdlib/ctype_private.h +++ b/libc/upstream-openbsd/lib/libc/include/ctype_private.h diff --git a/libc/upstream-openbsd/openbsd-compat.h b/libc/upstream-openbsd/openbsd-compat.h index 2c3fe56..b55f390 100644 --- a/libc/upstream-openbsd/openbsd-compat.h +++ b/libc/upstream-openbsd/openbsd-compat.h @@ -20,4 +20,16 @@ #define _GNU_SOURCE #define __USE_BSD +/* OpenBSD's <ctype.h> uses these names, which conflicted with stlport. + * Additionally, we changed the numeric/digit type from N to D for libcxx. + */ +#define _U _CTYPE_U +#define _L _CTYPE_L +#define _N _CTYPE_D +#define _S _CTYPE_S +#define _P _CTYPE_P +#define _C _CTYPE_C +#define _X _CTYPE_X +#define _B _CTYPE_B + #endif |
