From 224b419d1e750e3e9ced5c57774bb2bdd5292e28 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Tue, 8 Dec 2020 18:15:27 +0000 Subject: [PATCH] Make strtoimax, strtoumax, wcstoimax, wcstoumax into aliases The functions strtoimax, strtoumax, wcstoimax, wcstoumax currently have three implementations each (wordsize-32, wordsize-64 and dummy implementation in stdlib/ using #error), defining the functions as thin wrappers round corresponding *_internal functions. Simplify the code by changing them into aliases of functions such as strtol and wcstoull. This is more consistent with how e.g. imaxdiv is handled. Tested for x86_64 and x86. --- include/inttypes.h | 3 --- stdlib/Makefile | 1 - stdlib/strtoimax.c | 1 - stdlib/strtoll.c | 1 + stdlib/strtoull.c | 1 + stdlib/strtoumax.c | 1 - stdlib/wcstoimax.c | 1 - stdlib/wcstoumax.c | 1 - sysdeps/wordsize-32/strtoimax.c | 27 --------------------------- sysdeps/wordsize-32/strtoumax.c | 28 ---------------------------- sysdeps/wordsize-32/wcstoimax.c | 28 ---------------------------- sysdeps/wordsize-32/wcstoumax.c | 28 ---------------------------- sysdeps/wordsize-64/strtoimax.c | 27 --------------------------- sysdeps/wordsize-64/strtol.c | 1 + sysdeps/wordsize-64/strtoul.c | 1 + sysdeps/wordsize-64/strtoumax.c | 28 ---------------------------- sysdeps/wordsize-64/wcstoimax.c | 28 ---------------------------- sysdeps/wordsize-64/wcstol.c | 1 + sysdeps/wordsize-64/wcstoul.c | 1 + sysdeps/wordsize-64/wcstoumax.c | 28 ---------------------------- wcsmbs/wcstoll.c | 1 + wcsmbs/wcstoull.c | 1 + 22 files changed, 8 insertions(+), 230 deletions(-) delete mode 100644 stdlib/strtoimax.c delete mode 100644 stdlib/strtoumax.c delete mode 100644 stdlib/wcstoimax.c delete mode 100644 stdlib/wcstoumax.c delete mode 100644 sysdeps/wordsize-32/strtoimax.c delete mode 100644 sysdeps/wordsize-32/strtoumax.c delete mode 100644 sysdeps/wordsize-32/wcstoimax.c delete mode 100644 sysdeps/wordsize-32/wcstoumax.c delete mode 100644 sysdeps/wordsize-64/strtoimax.c delete mode 100644 sysdeps/wordsize-64/strtoumax.c delete mode 100644 sysdeps/wordsize-64/wcstoimax.c delete mode 100644 sysdeps/wordsize-64/wcstoumax.c diff --git a/include/inttypes.h b/include/inttypes.h index 3a583c6..9cb6636 100644 --- a/include/inttypes.h +++ b/include/inttypes.h @@ -1,6 +1,3 @@ #ifndef _INTTYPES_H #include -#ifndef _ISOMAC -libc_hidden_proto (strtoumax) -#endif #endif diff --git a/stdlib/Makefile b/stdlib/Makefile index f8a1660..29b7cd7 100644 --- a/stdlib/Makefile +++ b/stdlib/Makefile @@ -56,7 +56,6 @@ routines := \ system canonicalize \ a64l l64a \ rpmatch strfmon strfmon_l getsubopt xpg_basename fmtmsg \ - strtoimax strtoumax wcstoimax wcstoumax \ getcontext setcontext makecontext swapcontext aux = grouping groupingwc tens_in_limb diff --git a/stdlib/strtoimax.c b/stdlib/strtoimax.c deleted file mode 100644 index f1de70f..0000000 --- a/stdlib/strtoimax.c +++ /dev/null @@ -1 +0,0 @@ -#error "The correct implementation must be chosen based on the `intmax_t' type" diff --git a/stdlib/strtoll.c b/stdlib/strtoll.c index b156665..a6b693a 100644 --- a/stdlib/strtoll.c +++ b/stdlib/strtoll.c @@ -30,4 +30,5 @@ compat_symbol (libc, __strtoll_internal, __strtoq_internal, GLIBC_2_0); # endif weak_alias (strtoll, strtoq) +weak_alias (strtoll, strtoimax) #endif diff --git a/stdlib/strtoull.c b/stdlib/strtoull.c index b4bf9a9..dd57aa5 100644 --- a/stdlib/strtoull.c +++ b/stdlib/strtoull.c @@ -30,4 +30,5 @@ compat_symbol (libc, __strtoull_internal, __strtouq_internal, GLIBC_2_0); # endif weak_alias (strtoull, strtouq) +weak_alias (strtoull, strtoumax) #endif diff --git a/stdlib/strtoumax.c b/stdlib/strtoumax.c deleted file mode 100644 index 508cb19..0000000 --- a/stdlib/strtoumax.c +++ /dev/null @@ -1 +0,0 @@ -#error "The correct implementation must be chosen based on the `uintmax_t' type" diff --git a/stdlib/wcstoimax.c b/stdlib/wcstoimax.c deleted file mode 100644 index f1de70f..0000000 --- a/stdlib/wcstoimax.c +++ /dev/null @@ -1 +0,0 @@ -#error "The correct implementation must be chosen based on the `intmax_t' type" diff --git a/stdlib/wcstoumax.c b/stdlib/wcstoumax.c deleted file mode 100644 index 508cb19..0000000 --- a/stdlib/wcstoumax.c +++ /dev/null @@ -1 +0,0 @@ -#error "The correct implementation must be chosen based on the `uintmax_t' type" diff --git a/sysdeps/wordsize-32/strtoimax.c b/sysdeps/wordsize-32/strtoimax.c deleted file mode 100644 index be1b71e..0000000 --- a/sysdeps/wordsize-32/strtoimax.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Convert string to maximal integer. - Copyright (C) 1997-2020 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include - -intmax_t -strtoimax (const char *__restrict nptr, char **__restrict endptr, int base) -{ - return __strtoll_internal (nptr, endptr, base, 0); -} diff --git a/sysdeps/wordsize-32/strtoumax.c b/sysdeps/wordsize-32/strtoumax.c deleted file mode 100644 index c6f090c..0000000 --- a/sysdeps/wordsize-32/strtoumax.c +++ /dev/null @@ -1,28 +0,0 @@ -/* Convert string to maximal unsigned integer. - Copyright (C) 1997-2020 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include - -uintmax_t -strtoumax (const char *__restrict nptr, char **__restrict endptr, int base) -{ - return __strtoull_internal (nptr, endptr, base, 0); -} -libc_hidden_def (strtoumax) diff --git a/sysdeps/wordsize-32/wcstoimax.c b/sysdeps/wordsize-32/wcstoimax.c deleted file mode 100644 index ce72558..0000000 --- a/sysdeps/wordsize-32/wcstoimax.c +++ /dev/null @@ -1,28 +0,0 @@ -/* Convert wide-character string to maximal integer. - Copyright (C) 1997-2020 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include - -intmax_t -wcstoimax (const wchar_t *__restrict nptr, wchar_t **__restrict endptr, - int base) -{ - return __wcstoll_internal (nptr, endptr, base, 0); -} diff --git a/sysdeps/wordsize-32/wcstoumax.c b/sysdeps/wordsize-32/wcstoumax.c deleted file mode 100644 index ee47b25..0000000 --- a/sysdeps/wordsize-32/wcstoumax.c +++ /dev/null @@ -1,28 +0,0 @@ -/* Convert wide-character string to maximal unsigned integer. - Copyright (C) 1997-2020 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include - -uintmax_t -wcstoumax (const wchar_t *__restrict nptr, wchar_t **__restrict endptr, - int base) -{ - return __wcstoull_internal (nptr, endptr, base, 0); -} diff --git a/sysdeps/wordsize-64/strtoimax.c b/sysdeps/wordsize-64/strtoimax.c deleted file mode 100644 index 9df5f2f..0000000 --- a/sysdeps/wordsize-64/strtoimax.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Convert string to maximal integer. - Copyright (C) 1997-2020 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include - -intmax_t -strtoimax (const char *__restrict nptr, char **__restrict endptr, int base) -{ - return __strtol_internal (nptr, endptr, base, 0); -} diff --git a/sysdeps/wordsize-64/strtol.c b/sysdeps/wordsize-64/strtol.c index ac17bbe..a1b2374 100644 --- a/sysdeps/wordsize-64/strtol.c +++ b/sysdeps/wordsize-64/strtol.c @@ -14,3 +14,4 @@ weak_alias (strtol, strtoll) libc_hidden_ver (strtol, strtoll) weak_alias (strtol, strtoq) libc_hidden_ver (strtol, strtoq) +weak_alias (strtol, strtoimax) diff --git a/sysdeps/wordsize-64/strtoul.c b/sysdeps/wordsize-64/strtoul.c index 401882c..856aa11 100644 --- a/sysdeps/wordsize-64/strtoul.c +++ b/sysdeps/wordsize-64/strtoul.c @@ -12,3 +12,4 @@ strong_alias (__strtoul_internal, __strtoull_internal) libc_hidden_ver (__strtoul_internal, __strtoull_internal) weak_alias (strtoul, strtoull) weak_alias (strtoul, strtouq) +weak_alias (strtoul, strtoumax) diff --git a/sysdeps/wordsize-64/strtoumax.c b/sysdeps/wordsize-64/strtoumax.c deleted file mode 100644 index aad697b..0000000 --- a/sysdeps/wordsize-64/strtoumax.c +++ /dev/null @@ -1,28 +0,0 @@ -/* Convert string to maximal unsigned integer. - Copyright (C) 1997-2020 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include - -uintmax_t -strtoumax (const char *__restrict nptr, char **__restrict endptr, int base) -{ - return __strtoul_internal (nptr, endptr, base, 0); -} -libc_hidden_def (strtoumax) diff --git a/sysdeps/wordsize-64/wcstoimax.c b/sysdeps/wordsize-64/wcstoimax.c deleted file mode 100644 index 6a91737..0000000 --- a/sysdeps/wordsize-64/wcstoimax.c +++ /dev/null @@ -1,28 +0,0 @@ -/* Convert wide-character string to maximal integer. - Copyright (C) 1997-2020 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include - -intmax_t -wcstoimax (const wchar_t *__restrict nptr, wchar_t **__restrict endptr, - int base) -{ - return __wcstol_internal (nptr, endptr, base, 0); -} diff --git a/sysdeps/wordsize-64/wcstol.c b/sysdeps/wordsize-64/wcstol.c index b10895a..f99c273 100644 --- a/sysdeps/wordsize-64/wcstol.c +++ b/sysdeps/wordsize-64/wcstol.c @@ -12,3 +12,4 @@ strong_alias (__wcstol_internal, __wcstoll_internal) libc_hidden_ver (__wcstol_internal, __wcstoll_internal) weak_alias (wcstol, wcstoll) weak_alias (wcstol, wcstoq) +weak_alias (wcstol, wcstoimax) diff --git a/sysdeps/wordsize-64/wcstoul.c b/sysdeps/wordsize-64/wcstoul.c index 2becb80..e1458e1 100644 --- a/sysdeps/wordsize-64/wcstoul.c +++ b/sysdeps/wordsize-64/wcstoul.c @@ -12,3 +12,4 @@ strong_alias (__wcstoul_internal, __wcstoull_internal) libc_hidden_ver (__wcstoul_internal, __wcstoull_internal) weak_alias (wcstoul, wcstoull) weak_alias (wcstoul, wcstouq) +weak_alias (wcstoul, wcstoumax) diff --git a/sysdeps/wordsize-64/wcstoumax.c b/sysdeps/wordsize-64/wcstoumax.c deleted file mode 100644 index c11053c..0000000 --- a/sysdeps/wordsize-64/wcstoumax.c +++ /dev/null @@ -1,28 +0,0 @@ -/* Convert wide-character string to maximal unsigned integer. - Copyright (C) 1997-2020 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include - -uintmax_t -wcstoumax (const wchar_t *__restrict nptr, wchar_t **__restrict endptr, - int base) -{ - return __wcstoul_internal (nptr, endptr, base, 0); -} diff --git a/wcsmbs/wcstoll.c b/wcsmbs/wcstoll.c index 9f5ea00..2871db8 100644 --- a/wcsmbs/wcstoll.c +++ b/wcsmbs/wcstoll.c @@ -22,3 +22,4 @@ #include "wcstol.c" weak_alias (wcstoll, wcstoq) +weak_alias (wcstoll, wcstoimax) diff --git a/wcsmbs/wcstoull.c b/wcsmbs/wcstoull.c index 7ba8ebd..b908030 100644 --- a/wcsmbs/wcstoull.c +++ b/wcsmbs/wcstoull.c @@ -22,3 +22,4 @@ #include "wcstoul.c" weak_alias (wcstoull, wcstouq) +weak_alias (wcstoull, wcstoumax) -- 2.7.4