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.
This commit is contained in:
Joseph Myers 2020-12-08 18:15:27 +00:00
parent 4d3a77c735
commit 224b419d1e
22 changed files with 8 additions and 230 deletions

View File

@ -1,6 +1,3 @@
#ifndef _INTTYPES_H
#include <stdlib/inttypes.h>
#ifndef _ISOMAC
libc_hidden_proto (strtoumax)
#endif
#endif

View File

@ -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

View File

@ -1 +0,0 @@
#error "The correct implementation must be chosen based on the `intmax_t' type"

View File

@ -30,4 +30,5 @@ compat_symbol (libc, __strtoll_internal, __strtoq_internal, GLIBC_2_0);
# endif
weak_alias (strtoll, strtoq)
weak_alias (strtoll, strtoimax)
#endif

View File

@ -30,4 +30,5 @@ compat_symbol (libc, __strtoull_internal, __strtouq_internal, GLIBC_2_0);
# endif
weak_alias (strtoull, strtouq)
weak_alias (strtoull, strtoumax)
#endif

View File

@ -1 +0,0 @@
#error "The correct implementation must be chosen based on the `uintmax_t' type"

View File

@ -1 +0,0 @@
#error "The correct implementation must be chosen based on the `intmax_t' type"

View File

@ -1 +0,0 @@
#error "The correct implementation must be chosen based on the `uintmax_t' type"

View File

@ -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 <drepper@cygnus.com>, 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
<https://www.gnu.org/licenses/>. */
#include <inttypes.h>
#include <stdlib.h>
intmax_t
strtoimax (const char *__restrict nptr, char **__restrict endptr, int base)
{
return __strtoll_internal (nptr, endptr, base, 0);
}

View File

@ -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 <drepper@cygnus.com>, 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
<https://www.gnu.org/licenses/>. */
#include <inttypes.h>
#include <stdlib.h>
uintmax_t
strtoumax (const char *__restrict nptr, char **__restrict endptr, int base)
{
return __strtoull_internal (nptr, endptr, base, 0);
}
libc_hidden_def (strtoumax)

View File

@ -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 <drepper@cygnus.com>, 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
<https://www.gnu.org/licenses/>. */
#include <inttypes.h>
#include <wchar.h>
intmax_t
wcstoimax (const wchar_t *__restrict nptr, wchar_t **__restrict endptr,
int base)
{
return __wcstoll_internal (nptr, endptr, base, 0);
}

View File

@ -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 <drepper@cygnus.com>, 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
<https://www.gnu.org/licenses/>. */
#include <inttypes.h>
#include <wchar.h>
uintmax_t
wcstoumax (const wchar_t *__restrict nptr, wchar_t **__restrict endptr,
int base)
{
return __wcstoull_internal (nptr, endptr, base, 0);
}

View File

@ -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 <drepper@cygnus.com>, 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
<https://www.gnu.org/licenses/>. */
#include <inttypes.h>
#include <stdlib.h>
intmax_t
strtoimax (const char *__restrict nptr, char **__restrict endptr, int base)
{
return __strtol_internal (nptr, endptr, base, 0);
}

View File

@ -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)

View File

@ -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)

View File

@ -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 <drepper@cygnus.com>, 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
<https://www.gnu.org/licenses/>. */
#include <inttypes.h>
#include <stdlib.h>
uintmax_t
strtoumax (const char *__restrict nptr, char **__restrict endptr, int base)
{
return __strtoul_internal (nptr, endptr, base, 0);
}
libc_hidden_def (strtoumax)

View File

@ -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 <drepper@cygnus.com>, 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
<https://www.gnu.org/licenses/>. */
#include <inttypes.h>
#include <wchar.h>
intmax_t
wcstoimax (const wchar_t *__restrict nptr, wchar_t **__restrict endptr,
int base)
{
return __wcstol_internal (nptr, endptr, base, 0);
}

View File

@ -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)

View File

@ -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)

View File

@ -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 <drepper@cygnus.com>, 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
<https://www.gnu.org/licenses/>. */
#include <inttypes.h>
#include <wchar.h>
uintmax_t
wcstoumax (const wchar_t *__restrict nptr, wchar_t **__restrict endptr,
int base)
{
return __wcstoul_internal (nptr, endptr, base, 0);
}

View File

@ -22,3 +22,4 @@
#include "wcstol.c"
weak_alias (wcstoll, wcstoq)
weak_alias (wcstoll, wcstoimax)

View File

@ -22,3 +22,4 @@
#include "wcstoul.c"
weak_alias (wcstoull, wcstouq)
weak_alias (wcstoull, wcstoumax)