mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-28 04:03:35 +08:00
80d9be8122
This patch converts various miscellaneous functions definitions in glibc, found with grep and not covered by my previous scripted conversions, from old-style K&R to prototype-style. These changes were made manually. This is not necessarily exhaustive as formatting variants may have prevented my grep from finding some such definitions. Regarding the changes to files from GMP, they may originally have been omitted when removing __STDC__ conditionals because of the files coming from another package, but (a) GMP no longer has __STDC__ conditionals there anyway and (b) we don't try to keep these files verbatim in sync with GMP (and there are licensing differences), so making the change to them in glibc seems reasonable. Tested for x86_64 and x86 (testsuite - this patch affects files containing assertions). * debug/fortify_fail.c (__fortify_fail): Convert to prototype-style function definition. Use internal_function. * libio/genops.c (save_for_backup): Convert to prototype-style function definition. * libio/wgenops.c (save_for_wbackup): Likewise. * login/grantpt.c (grantpt): Likewise. * login/ptsname.c (ptsname): Likewise. (__ptsname_r): Likewise. * login/unlockpt.c (unlockpt): Likewise. * mach/msgserver.c (__mach_msg_server): Likewise. * misc/efgcvt.c (__APPEND (FUNC_PREFIX, fcvt)): Likewise. (__APPEND (FUNC_PREFIX, ecvt)): Likewise. (__APPEND (FUNC_PREFIX, gcvt)): Likewise. * misc/efgcvt_r.c (__APPEND (FUNC_PREFIX, fcvt_r)): Likewise. (__APPEND (FUNC_PREFIX, ecvt_r)): Likewise. * nptl/cleanup_compat.c (_pthread_cleanup_push): Likewise. * nptl/cleanup_defer_compat.c (_pthread_cleanup_push_defer): Likewise. * nptl/libc_pthread_init.c (__libc_pthread_init): Likewise. Use internal_function. * nptl/pthread_atfork.c (__pthread_atfork): Convert to prototype-style function definition. * nptl/pthread_create.c (__pthread_create_2_1): Likewise. [SHLIB_COMPAT(libpthread, GLIBC_2_0, GLIBC_2_1)] (__pthread_create_2_0): Likewise. * nptl/pthread_key_create.c (__pthread_key_create): Likewise. * nptl/register-atfork.c (__register_atfork): Likewise. * posix/glob.c (glob): Likewise. * posix/regcomp.c (re_comp): Likewise. * posix/regexec.c (re_exec): Likewise. * stdlib/add_n.c [__STDC__]: Make code unconditional. [!__STDC__]: Remove conditional code. * stdlib/cmp.c [__STDC__]: Make code unconditional. [!__STDC__]: Remove conditional code. * stdlib/divmod_1.c [__STDC__]: Make code unconditional. [!__STDC__]: Remove conditional code. * stdlib/divrem.c [__STDC__]: Make code unconditional. [!__STDC__]: Remove conditional code. * stdlib/lshift.c [__STDC__]: Make code unconditional. [!__STDC__]: Remove conditional code. * stdlib/mod_1.c [__STDC__]: Make code unconditional. [!__STDC__]: Remove conditional code. * stdlib/mul.c [__STDC__]: Make code unconditional. [!__STDC__]: Remove conditional code. * stdlib/mul_n.c [__STDC__]: Make code unconditional. [!__STDC__]: Remove conditional code. * stdlib/rshift.c [__STDC__]: Make code unconditional. [!__STDC__]: Remove conditional code. * stdlib/strtod.c (INTERNAL (STRTOF)): Convert to prototype-style function definition. (STRTOF): Likewise. * stdlib/strtod_l.c (__STRTOF): Likewise. * stdlib/strtol.c (INTERNAL (strtol)): Likewise. * stdlib/strtol_l.c (INTERNAL (__strtol_l)): Likewise. (__strtol_l): Likewise. * stdlib/sub_n.c [__STDC__]: Make code unconditional. [!__STDC__]: Remove conditional code. * string/memrchr.c (MEMRCHR): Convert to prototype-style function definition. * string/strcasecmp.c (LOCALE_PARAM_DECL): Remove macro. [USE_IN_EXTENDED_LOCALE_MODEL] (LOCALE_PARAM): Include argument type. (__strcasecmp): Convert to prototype-style function definition. * string/strncase.c (LOCALE_PARAM_DECL): Remove macro. [USE_IN_EXTENDED_LOCALE_MODEL] (LOCALE_PARAM): Include argument type. (__strncasecmp): Convert to prototype-style function definition. * sunrpc/pm_getport.c (__libc_rpc_getport): Likewise. * sunrpc/xdr.c (xdr_union): Likewise. * sunrpc/xdr_array.c (xdr_array): Likewise. * sunrpc/xdr_ref.c (xdr_reference): Likewise. * sysdeps/m68k/m680x0/fpu/s_atan.c (__CONCATX(__,FUNC)): Likewise. * sysdeps/m68k/m680x0/fpu/s_isinf.c (__CONCATX(__,FUNC)): Likewise. * sysdeps/m68k/m680x0/fpu/s_scalbn.c (__CONCATX(__scalbn,suffix): Likewise. * sysdeps/m68k/m680x0/fpu/s_sincos.c (CONCATX(__,FUNC)): Likewise. * sysdeps/unix/sysv/linux/i386/scandir64.c (__old_scandir64): Likewise. * time/strftime_l.c (LOCALE_PARAM_DECL): Remove macro. (LOCALE_PARAM_PROTO): Likewise. [_LIBC && USE_IN_EXTENDED_LOCALE_MODEL] (LOCALE_PARAM): Include argument type. (ut_argument_spec): Remove macro. (ut_argument_spec_iso): Rename to ut_argument_spec. (memcpy_lowcase): Use LOCALE_PARAM in declaration. Convert to prototype-style function definition. (memcpy_uppcase): Likewise. (__strftime_internal): Likewise. (my_strftime): Likewise. * time/strptime_l.c (LOCALE_PARAM_PROTO): Remove macro. (LOCALE_PARAM_DECL): Likewise. [_LIBC] (LOCALE_PARAM): Include argument type. (__strptime_internal): Convert to prototype-style function definition. (strptime): Likewise. * wcsmbs/wcscasecmp.c (LOCALE_PARAM_DECL): Remove macro. [USE_IN_EXTENDED_LOCALE_MODEL] (LOCALE_PARAM): Include argument type. (__wcscasecmp): Convert to prototype-style function definition. * wcsmbs/wcsncase.c (LOCALE_PARAM_DECL): Remove macro. [USE_IN_EXTENDED_LOCALE_MODEL] (LOCALE_PARAM): Include argument type. (__wcsncasecmp): Convert to prototype-style function definition.
166 lines
4.6 KiB
C
166 lines
4.6 KiB
C
/*
|
|
* xdr_array.c, Generic XDR routines implementation.
|
|
*
|
|
* Copyright (c) 2010, Oracle America, Inc.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions are
|
|
* met:
|
|
*
|
|
* * Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* * 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.
|
|
* * Neither the name of the "Oracle America, Inc." 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 COPYRIGHT HOLDERS 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
|
|
* COPYRIGHT HOLDER 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.
|
|
*
|
|
* These are the "non-trivial" xdr primitives used to serialize and
|
|
* de-serialize arrays. See xdr.h for more info on the interface to xdr.
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <rpc/types.h>
|
|
#include <rpc/xdr.h>
|
|
#include <libintl.h>
|
|
#include <limits.h>
|
|
#include <wchar.h>
|
|
|
|
#define LASTUNSIGNED ((u_int)0-1)
|
|
|
|
|
|
/*
|
|
* XDR an array of arbitrary elements
|
|
* *addrp is a pointer to the array, *sizep is the number of elements.
|
|
* If addrp is NULL (*sizep * elsize) bytes are allocated.
|
|
* elsize is the size (in bytes) of each element, and elproc is the
|
|
* xdr procedure to call to handle each element of the array.
|
|
*/
|
|
bool_t
|
|
xdr_array (XDR *xdrs,
|
|
/* array pointer */
|
|
caddr_t *addrp,
|
|
/* number of elements */
|
|
u_int *sizep,
|
|
/* max numberof elements */
|
|
u_int maxsize,
|
|
/* size in bytes of each element */
|
|
u_int elsize,
|
|
/* xdr routine to handle each element */
|
|
xdrproc_t elproc)
|
|
{
|
|
u_int i;
|
|
caddr_t target = *addrp;
|
|
u_int c; /* the actual element count */
|
|
bool_t stat = TRUE;
|
|
|
|
/* like strings, arrays are really counted arrays */
|
|
if (!xdr_u_int (xdrs, sizep))
|
|
{
|
|
return FALSE;
|
|
}
|
|
c = *sizep;
|
|
/*
|
|
* XXX: Let the overflow possibly happen with XDR_FREE because mem_free()
|
|
* doesn't actually use its second argument anyway.
|
|
*/
|
|
if ((c > maxsize || c > UINT_MAX / elsize) && (xdrs->x_op != XDR_FREE))
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
/*
|
|
* if we are deserializing, we may need to allocate an array.
|
|
* We also save time by checking for a null array if we are freeing.
|
|
*/
|
|
if (target == NULL)
|
|
switch (xdrs->x_op)
|
|
{
|
|
case XDR_DECODE:
|
|
if (c == 0)
|
|
return TRUE;
|
|
*addrp = target = calloc (c, elsize);
|
|
if (target == NULL)
|
|
{
|
|
(void) __fxprintf (NULL, "%s: %s", __func__, _("out of memory\n"));
|
|
return FALSE;
|
|
}
|
|
break;
|
|
|
|
case XDR_FREE:
|
|
return TRUE;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
/*
|
|
* now we xdr each element of array
|
|
*/
|
|
for (i = 0; (i < c) && stat; i++)
|
|
{
|
|
stat = (*elproc) (xdrs, target, LASTUNSIGNED);
|
|
target += elsize;
|
|
}
|
|
|
|
/*
|
|
* the array may need freeing
|
|
*/
|
|
if (xdrs->x_op == XDR_FREE)
|
|
{
|
|
mem_free (*addrp, c * elsize);
|
|
*addrp = NULL;
|
|
}
|
|
return stat;
|
|
}
|
|
#ifdef EXPORT_RPC_SYMBOLS
|
|
libc_hidden_def (xdr_array)
|
|
#else
|
|
libc_hidden_nolink_sunrpc (xdr_array, GLIBC_2_0)
|
|
#endif
|
|
|
|
/*
|
|
* xdr_vector():
|
|
*
|
|
* XDR a fixed length array. Unlike variable-length arrays,
|
|
* the storage of fixed length arrays is static and unfreeable.
|
|
* > basep: base of the array
|
|
* > size: size of the array
|
|
* > elemsize: size of each element
|
|
* > xdr_elem: routine to XDR each element
|
|
*/
|
|
bool_t
|
|
xdr_vector (XDR *xdrs, char *basep, u_int nelem, u_int elemsize,
|
|
xdrproc_t xdr_elem)
|
|
{
|
|
u_int i;
|
|
char *elptr;
|
|
|
|
elptr = basep;
|
|
for (i = 0; i < nelem; i++)
|
|
{
|
|
if (!(*xdr_elem) (xdrs, elptr, LASTUNSIGNED))
|
|
{
|
|
return FALSE;
|
|
}
|
|
elptr += elemsize;
|
|
}
|
|
return TRUE;
|
|
}
|
|
libc_hidden_nolink_sunrpc (xdr_vector, GLIBC_2_0)
|