1995-02-18 01:27:10 +00:00
|
|
|
/* Copyright (C) 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
|
|
|
|
This file is part of the GNU C Library.
|
|
|
|
|
|
|
|
The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
modify it under the terms of the GNU Library General Public License as
|
|
|
|
published by the Free Software Foundation; either version 2 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
|
|
|
|
Library General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU Library General Public
|
|
|
|
License along with the GNU C Library; see the file COPYING.LIB. If
|
|
|
|
not, write to the, 1992 Free Software Foundation, Inc., 675 Mass Ave,
|
|
|
|
Cambridge, MA 02139, USA. */
|
|
|
|
|
|
|
|
/*
|
|
|
|
* ANSI Standard: 4.10 GENERAL UTILITIES <stdlib.h>
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _STDLIB_H
|
|
|
|
|
|
|
|
#define _STDLIB_H 1
|
|
|
|
#include <features.h>
|
|
|
|
|
|
|
|
/* Get size_t, wchar_t and NULL from <stddef.h>. */
|
|
|
|
#define __need_size_t
|
|
|
|
#define __need_wchar_t
|
|
|
|
#define __need_NULL
|
|
|
|
#include <stddef.h>
|
|
|
|
|
|
|
|
#define __need_Emath
|
|
|
|
#include <errno.h>
|
|
|
|
|
|
|
|
__BEGIN_DECLS
|
|
|
|
|
|
|
|
/* Returned by `div'. */
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
int quot; /* Quotient. */
|
|
|
|
int rem; /* Remainder. */
|
|
|
|
} div_t;
|
|
|
|
|
|
|
|
/* Returned by `ldiv'. */
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
long int quot; /* Quotient. */
|
|
|
|
long int rem; /* Remainder. */
|
|
|
|
} ldiv_t;
|
|
|
|
|
|
|
|
|
|
|
|
/* The largest number rand will return (same as INT_MAX). */
|
|
|
|
#define RAND_MAX 2147483647
|
|
|
|
|
|
|
|
|
|
|
|
/* We define these the same for all machines.
|
|
|
|
Changes from this to the outside world should be done in `_exit'. */
|
|
|
|
#define EXIT_FAILURE 1 /* Failing exit status. */
|
|
|
|
#define EXIT_SUCCESS 0 /* Successful exit status. */
|
|
|
|
|
|
|
|
|
|
|
|
/* Maximum length of a multibyte character in the current locale.
|
|
|
|
This is just one until the fancy locale support is finished. */
|
|
|
|
#define MB_CUR_MAX 1
|
|
|
|
|
|
|
|
|
|
|
|
/* Convert a string to a floating-point number. */
|
|
|
|
extern double atof __P ((__const char *__nptr));
|
|
|
|
/* Convert a string to an integer. */
|
|
|
|
extern int atoi __P ((__const char *__nptr));
|
|
|
|
/* Convert a string to a long integer. */
|
|
|
|
extern long int atol __P ((__const char *__nptr));
|
|
|
|
|
|
|
|
/* Convert a string to a floating-point number. */
|
|
|
|
extern double strtod __P ((__const char *__nptr, char **__endptr));
|
|
|
|
|
|
|
|
#ifdef __USE_GNU
|
|
|
|
/* Likewise for `float' and `long double' sizes of floating-point numbers. */
|
|
|
|
extern float strtof __P ((__const char *__nptr, char **__endptr));
|
|
|
|
extern __long_double_t strtold __P ((__const char *__nptr, char **__endptr));
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* Convert a string to a long integer. */
|
|
|
|
extern long int strtol __P ((__const char *__nptr, char **__endptr,
|
|
|
|
int __base));
|
|
|
|
/* Convert a string to an unsigned long integer. */
|
|
|
|
extern unsigned long int strtoul __P ((__const char *__nptr,
|
|
|
|
char **__endptr, int __base));
|
|
|
|
|
|
|
|
#if defined (__GNUC__) && defined (__USE_BSD)
|
|
|
|
/* Convert a string to a quadword integer. */
|
|
|
|
extern long long int strtoq __P ((__const char *__nptr, char **__endptr,
|
|
|
|
int __base));
|
|
|
|
/* Convert a string to an unsigned quadword integer. */
|
|
|
|
extern unsigned long long int strtouq __P ((__const char *__nptr,
|
|
|
|
char **__endptr, int __base));
|
|
|
|
#endif /* GCC and use BSD. */
|
|
|
|
|
Thu Mar 16 00:04:41 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* locale/C-ctype.c: New correct data generated by drepper.
* Rules: Don't use $(libc.a).
Parsing of grouped numbers contributed by Ulrich Drepper.
* stdlib/strtol.c (__strtol_internal): Renamed from strtol. Take
new flag arg; if nonzero, parse locale-dependent thousands
grouping and interpret only the prefix that is correctly grouped.
(strtol): Define this to call _strtol_internal with zero for the flag.
Use a weak symbol for the definition.
* stdlib/strtod.c (strtod, __strtod_internal): Likewise.
Check for the exponent of the number overflowing the float format.
* stdlib/stdlib.h (__strtof, __strtold): Declarations removed.
(__strto{f,d,ld,l,ul,q,uq}_internal): Declare these functions.
[__OPTIMIZE__]: Define inline functions calling those.
* stdlib/grouping.h: New file, written by drepper.
* stdlib/Makefile (distribute): Add grouping.h.
* stdio/vfscanf.c: Grok %' modifier to numeric conversions. Call
__strtoX_internal with the grouping flag set iff the modifier is
present.
Wed Mar 15 00:40:54 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* sysdeps/generic/memchr.c: Fix typos: limit.h -> limits.h.
* mach/Machrules: Produce static deps for all object flavors.
[interface-library]: Remove all these variables and rules.
($(interface-library)-routines): Define this variable.
(extra-libs): Append $(interface-library) to this.
* mach/Makefile (interface-library): Omit .a suffix.
* hurd/Makefile: Likewise.
Tue Mar 14 23:40:31 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* stdio/internals.c (flushbuf): If !FLUSH_ONLY, don't skip out
early if no new data in buffer after priming.
* Makerules (object-suffixes, libtypes): Move all these variables
to Makeconfig.
* Makeconfig (object-suffixes, libtypes): Moved here from Makerules.
* Makerules (build-extra-lib): New canned sequence.
* sysdeps/mach/hurd/euidaccess.c: Include fcntl.h. Declare ERR;
fix uses of FILE and PORT. Remove bogus weak alias for `access'.
* sysdeps/mach/hurd/dirfd.c: Include hurd/fd.h and errno.h.
Add missing semicolon.
* sysdeps/mach/hurd/opendir.c: Include hurd/fd.h. Use a `struct
hurd_fd *' temp var, since DIRP->__fd is a `void *'.
* sysdeps/mach/hurd/readdir.c: Include hurd/fd.h.
* stdlib/wcstombs.c: #if 0 out code for non-ASCII chars until the
locale data format is implemented.
* sysdeps/mach/hurd/i386/trampoline.c (_hurd_setup_sighandler):
Pass &__sigreturn on the stack to the trampoline code, so it is
not position-dependent.
* stdio/printf_fp.c (NDEBUG): Define this to disable assert.
Don't include <stdarg.h>.
(__printf_fp): Last arg ARGS is now `const void **const';
dereference ARGS[0] instead of using va_arg.
* locale/setlocale.c: In LC_ALL case, initialize CATEGORY before
loop to install data.
* locale/loadlocale.c (_nl_category_num_items): Use _NL_ITEM_INDEX
to extract number from item code.
(_nl_load_locale): Close the descriptor when finished.
* malloc/realloc.c (_realloc_internal): Call _malloc_internal in
place of malloc.
* time/tzfile.c (__tzfile_default): Initialize RULE_STDOFF to zero.
1995-03-16 05:32:45 +00:00
|
|
|
|
|
|
|
/* The internal entry points for `strtoX' take an extra flag argument
|
|
|
|
saying whether or not to parse locale-dependent number grouping. */
|
|
|
|
|
|
|
|
extern double __strtod_internal (__const char *__nptr,
|
|
|
|
char **__endptr, int __group);
|
|
|
|
extern float __strtof_internal (__const char *__nptr, char **__endptr,
|
|
|
|
int __group);
|
|
|
|
extern __long_double_t __strtold_internal (__const char *__nptr,
|
|
|
|
char **__endptr, int __group);
|
|
|
|
extern long int __strtol_internal (__const char *__nptr, char **__endptr,
|
|
|
|
int __base, int __group);
|
|
|
|
extern unsigned long int __strtoul_internal (__const char *__nptr,
|
|
|
|
char **__endptr, int __base,
|
|
|
|
int __group);
|
|
|
|
extern long long int __strtoq_internal (__const char *__nptr, char **__endptr,
|
|
|
|
int __base, int __group);
|
|
|
|
extern unsigned long long int __strtouq_internal (__const char *__nptr,
|
|
|
|
char **__endptr, int __base,
|
|
|
|
int __group);
|
|
|
|
|
1995-02-18 01:27:10 +00:00
|
|
|
#if defined (__OPTIMIZE__) && __GNUC__ >= 2
|
Thu Mar 16 00:04:41 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* locale/C-ctype.c: New correct data generated by drepper.
* Rules: Don't use $(libc.a).
Parsing of grouped numbers contributed by Ulrich Drepper.
* stdlib/strtol.c (__strtol_internal): Renamed from strtol. Take
new flag arg; if nonzero, parse locale-dependent thousands
grouping and interpret only the prefix that is correctly grouped.
(strtol): Define this to call _strtol_internal with zero for the flag.
Use a weak symbol for the definition.
* stdlib/strtod.c (strtod, __strtod_internal): Likewise.
Check for the exponent of the number overflowing the float format.
* stdlib/stdlib.h (__strtof, __strtold): Declarations removed.
(__strto{f,d,ld,l,ul,q,uq}_internal): Declare these functions.
[__OPTIMIZE__]: Define inline functions calling those.
* stdlib/grouping.h: New file, written by drepper.
* stdlib/Makefile (distribute): Add grouping.h.
* stdio/vfscanf.c: Grok %' modifier to numeric conversions. Call
__strtoX_internal with the grouping flag set iff the modifier is
present.
Wed Mar 15 00:40:54 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* sysdeps/generic/memchr.c: Fix typos: limit.h -> limits.h.
* mach/Machrules: Produce static deps for all object flavors.
[interface-library]: Remove all these variables and rules.
($(interface-library)-routines): Define this variable.
(extra-libs): Append $(interface-library) to this.
* mach/Makefile (interface-library): Omit .a suffix.
* hurd/Makefile: Likewise.
Tue Mar 14 23:40:31 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* stdio/internals.c (flushbuf): If !FLUSH_ONLY, don't skip out
early if no new data in buffer after priming.
* Makerules (object-suffixes, libtypes): Move all these variables
to Makeconfig.
* Makeconfig (object-suffixes, libtypes): Moved here from Makerules.
* Makerules (build-extra-lib): New canned sequence.
* sysdeps/mach/hurd/euidaccess.c: Include fcntl.h. Declare ERR;
fix uses of FILE and PORT. Remove bogus weak alias for `access'.
* sysdeps/mach/hurd/dirfd.c: Include hurd/fd.h and errno.h.
Add missing semicolon.
* sysdeps/mach/hurd/opendir.c: Include hurd/fd.h. Use a `struct
hurd_fd *' temp var, since DIRP->__fd is a `void *'.
* sysdeps/mach/hurd/readdir.c: Include hurd/fd.h.
* stdlib/wcstombs.c: #if 0 out code for non-ASCII chars until the
locale data format is implemented.
* sysdeps/mach/hurd/i386/trampoline.c (_hurd_setup_sighandler):
Pass &__sigreturn on the stack to the trampoline code, so it is
not position-dependent.
* stdio/printf_fp.c (NDEBUG): Define this to disable assert.
Don't include <stdarg.h>.
(__printf_fp): Last arg ARGS is now `const void **const';
dereference ARGS[0] instead of using va_arg.
* locale/setlocale.c: In LC_ALL case, initialize CATEGORY before
loop to install data.
* locale/loadlocale.c (_nl_category_num_items): Use _NL_ITEM_INDEX
to extract number from item code.
(_nl_load_locale): Close the descriptor when finished.
* malloc/realloc.c (_realloc_internal): Call _malloc_internal in
place of malloc.
* time/tzfile.c (__tzfile_default): Initialize RULE_STDOFF to zero.
1995-03-16 05:32:45 +00:00
|
|
|
/* Define inline functions which call the internal entry points. */
|
|
|
|
|
|
|
|
extern __inline double strtod (__const char *__nptr, char **__endptr)
|
|
|
|
{ return __strtod_internal (__nptr, __endptr, 0); }
|
|
|
|
extern __inline long int strtol (__const char *__nptr,
|
|
|
|
char **__endptr, int __base)
|
|
|
|
{ return __strtol_internal (__nptr, __endptr, __base, 0); }
|
|
|
|
extern __inline unsigned long int strtoul (__const char *__nptr,
|
|
|
|
char **__endptr, int __base)
|
|
|
|
{ return __strtoul_internal (__nptr, __endptr, __base, 0); }
|
|
|
|
|
|
|
|
#ifdef __USE_GNU
|
|
|
|
extern __inline float strtof (__const char *__nptr, char **__endptr)
|
|
|
|
{ return __strtof_internal (__nptr, __endptr, 0); }
|
|
|
|
extern __inline __long_double_t strtold (__const char *__nptr, char **__endptr)
|
|
|
|
{ return __strtold_internal (__nptr, __endptr, 0); }
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef __USE_BSD
|
|
|
|
extern __inline long long int strtoq (__const char *__nptr, char **__endptr,
|
|
|
|
int __base)
|
|
|
|
{ return __strtoq_internal (__nptr, __endptr, __base, 0); }
|
|
|
|
extern __inline unsigned long long int strtouq (__const char *__nptr,
|
|
|
|
char **__endptr, int __base)
|
|
|
|
{ return __strtouq_internal (__nptr, __endptr, __base, 0); }
|
|
|
|
#endif
|
|
|
|
|
1995-02-18 01:27:10 +00:00
|
|
|
extern __inline double atof (__const char *__nptr)
|
Thu Mar 16 00:04:41 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* locale/C-ctype.c: New correct data generated by drepper.
* Rules: Don't use $(libc.a).
Parsing of grouped numbers contributed by Ulrich Drepper.
* stdlib/strtol.c (__strtol_internal): Renamed from strtol. Take
new flag arg; if nonzero, parse locale-dependent thousands
grouping and interpret only the prefix that is correctly grouped.
(strtol): Define this to call _strtol_internal with zero for the flag.
Use a weak symbol for the definition.
* stdlib/strtod.c (strtod, __strtod_internal): Likewise.
Check for the exponent of the number overflowing the float format.
* stdlib/stdlib.h (__strtof, __strtold): Declarations removed.
(__strto{f,d,ld,l,ul,q,uq}_internal): Declare these functions.
[__OPTIMIZE__]: Define inline functions calling those.
* stdlib/grouping.h: New file, written by drepper.
* stdlib/Makefile (distribute): Add grouping.h.
* stdio/vfscanf.c: Grok %' modifier to numeric conversions. Call
__strtoX_internal with the grouping flag set iff the modifier is
present.
Wed Mar 15 00:40:54 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* sysdeps/generic/memchr.c: Fix typos: limit.h -> limits.h.
* mach/Machrules: Produce static deps for all object flavors.
[interface-library]: Remove all these variables and rules.
($(interface-library)-routines): Define this variable.
(extra-libs): Append $(interface-library) to this.
* mach/Makefile (interface-library): Omit .a suffix.
* hurd/Makefile: Likewise.
Tue Mar 14 23:40:31 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* stdio/internals.c (flushbuf): If !FLUSH_ONLY, don't skip out
early if no new data in buffer after priming.
* Makerules (object-suffixes, libtypes): Move all these variables
to Makeconfig.
* Makeconfig (object-suffixes, libtypes): Moved here from Makerules.
* Makerules (build-extra-lib): New canned sequence.
* sysdeps/mach/hurd/euidaccess.c: Include fcntl.h. Declare ERR;
fix uses of FILE and PORT. Remove bogus weak alias for `access'.
* sysdeps/mach/hurd/dirfd.c: Include hurd/fd.h and errno.h.
Add missing semicolon.
* sysdeps/mach/hurd/opendir.c: Include hurd/fd.h. Use a `struct
hurd_fd *' temp var, since DIRP->__fd is a `void *'.
* sysdeps/mach/hurd/readdir.c: Include hurd/fd.h.
* stdlib/wcstombs.c: #if 0 out code for non-ASCII chars until the
locale data format is implemented.
* sysdeps/mach/hurd/i386/trampoline.c (_hurd_setup_sighandler):
Pass &__sigreturn on the stack to the trampoline code, so it is
not position-dependent.
* stdio/printf_fp.c (NDEBUG): Define this to disable assert.
Don't include <stdarg.h>.
(__printf_fp): Last arg ARGS is now `const void **const';
dereference ARGS[0] instead of using va_arg.
* locale/setlocale.c: In LC_ALL case, initialize CATEGORY before
loop to install data.
* locale/loadlocale.c (_nl_category_num_items): Use _NL_ITEM_INDEX
to extract number from item code.
(_nl_load_locale): Close the descriptor when finished.
* malloc/realloc.c (_realloc_internal): Call _malloc_internal in
place of malloc.
* time/tzfile.c (__tzfile_default): Initialize RULE_STDOFF to zero.
1995-03-16 05:32:45 +00:00
|
|
|
{ return strtod (__nptr, (char **) NULL); }
|
1995-02-18 01:27:10 +00:00
|
|
|
extern __inline int atoi (__const char *__nptr)
|
|
|
|
{ return (int) strtol (__nptr, (char **) NULL, 10); }
|
|
|
|
extern __inline long int atol (__const char *__nptr)
|
|
|
|
{ return strtol (__nptr, (char **) NULL, 10); }
|
|
|
|
#endif /* Optimizing GCC >=2. */
|
|
|
|
|
|
|
|
|
|
|
|
/* Return a random integer between 0 and RAND_MAX inclusive. */
|
|
|
|
extern int rand __P ((void));
|
|
|
|
/* Seed the random number generator with the given number. */
|
|
|
|
extern void srand __P ((unsigned int __seed));
|
|
|
|
|
|
|
|
/* These are the functions that actually do things. The `random', `srandom',
|
|
|
|
`initstate' and `setstate' functions are those from BSD Unices.
|
|
|
|
The `rand' and `srand' functions are required by the ANSI standard.
|
|
|
|
We provide both interfaces to the same random number generator. */
|
|
|
|
/* Return a random long integer between 0 and RAND_MAX inclusive. */
|
|
|
|
extern long int __random __P ((void));
|
|
|
|
/* Seed the random number generator with the given number. */
|
|
|
|
extern void __srandom __P ((unsigned int __seed));
|
|
|
|
|
|
|
|
/* Initialize the random number generator to use state buffer STATEBUF,
|
|
|
|
of length STATELEN, and seed it with SEED. Optimal lengths are 8, 16,
|
|
|
|
32, 64, 128 and 256, the bigger the better; values less than 8 will
|
|
|
|
cause an error and values greater than 256 will be rounded down. */
|
|
|
|
extern __ptr_t __initstate __P ((unsigned int __seed, __ptr_t __statebuf,
|
|
|
|
size_t __statelen));
|
|
|
|
/* Switch the random number generator to state buffer STATEBUF,
|
|
|
|
which should have been previously initialized by `initstate'. */
|
|
|
|
extern __ptr_t __setstate __P ((__ptr_t __statebuf));
|
|
|
|
|
|
|
|
#ifdef __USE_BSD
|
|
|
|
extern long int random __P ((void));
|
|
|
|
extern void srandom __P ((unsigned int __seed));
|
|
|
|
extern __ptr_t initstate __P ((unsigned int __seed, __ptr_t __statebuf,
|
|
|
|
size_t __statelen));
|
|
|
|
extern __ptr_t setstate __P ((__ptr_t __statebuf));
|
|
|
|
|
|
|
|
#if defined (__OPTIMIZE__) && __GNUC__ >= 2
|
|
|
|
extern __inline long int random (void)
|
|
|
|
{ return __random(); }
|
|
|
|
extern __inline void srandom (unsigned int __seed)
|
|
|
|
{ __srandom(__seed); }
|
|
|
|
extern __inline __ptr_t initstate (unsigned int __seed,
|
|
|
|
__ptr_t __statebuf, size_t __statelen)
|
|
|
|
{ return __initstate (__seed, __statebuf, __statelen); }
|
|
|
|
extern __inline __ptr_t setstate (__ptr_t __statebuf)
|
|
|
|
{ return __setstate (__statebuf); }
|
|
|
|
#endif /* Optimizing GCC >=2. */
|
Sat Sep 16 17:47:19 1995 Ulrich Drepper <drepper@ipd.info.uni-karlsruhe.de>
* elf/elf.h (AT_GID): Fix typo: Read -> Real.
* misc/efgvt_r.c: New file. Reentrant version of [efg]cvt functions.
* misc/efgcvt.c: Rewrite to use reentrant functions.
* misc/hsearch_r.c: New file. Reentrant version of functions from
hsearch family.
* misc/hsearch.c, misc/tsearch.c: New files.
* misc/Makefile (routines): Add efgcvt_r, hsearch_r, hsearch, tsearch.
* posix/unistd.h (ttyname_r): Add prototype for new function.
* stdlib/drand48_r.c, stdlib/erand48_r.c, stdlib/jrand48_r.c,
stdlib/lrand48_r.c, stdlib/mrand48_r.c, stdlib/nrand48_r.c,
stdlib/seed48_r.c, stdlib/srand48_r.c, stdlib/lcong48_r.c,
stdlib/drand48-iter.c: New files implementing reentrant versions
of functions from drand48 family.
* stdlib/seed48.c, stdlib/drand48.c, stdlib/erand48.c,
stdlib/jrand48.c, stdlib/lrand48.c, stdlib/mrand48.c,
stdlib/nrand48.c, stdlib/srand48.c, stdlib/lcong48.c:
Rewrite to use reentrant versions.
* stdlib/a64l.c, stdlib/l64a.c: New files. Implement a64l()
and l64a() functions from SysV library.
* stdlib/Makefile (routines): Add drand48_r, erand48_r, lrand48_r,
nrand48_r, mrand48_r, jrand48_r, srand48_r, seed48_r, lcong48_r,
drand48-iter, a64l, l64a.
* stdlib/stdlib.h: Declare them.
* stdlib/random_r.c: New file. Reentrant version of functions
from random family.
* stdlib/stdlib.h: Declare them.
* stdlib/random.c: Rewrite to use reentrant functions.
* string/strerror_r.c: New file. Reentrant version.
* string/strerror.c: Change for new _strerror_internal form.
* string/Makefile (routines): Add strerror_r.
* sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Set default
value of user_entry to `_start'.
Close AT_ENTRY case with `break'.
* sysdeps/generic/strstr.c: New and much faster implementation
by Stephen R. van den Berg.
* sysdeps/generic/_strerror.c: _strerror_internal now takes
three argument and has and explicit buffer length.
* sysdeps/mach/_strerror.c: Change for new interface with three
arguments.
* stdio/perror.c, stdio/vfprintf.c: Callers changed.
* sysdeps/mach/hurd/ttyname_r.c: New file. Reentrant version.
* sysdeps/posix/ttyname_r.c: New file. Reentrant version.
* sysdeps/stub/ttyname_r: New file. Define as dummy function.
* sysdeps/posix/utimes.c: Include <utime.h> for prototype.
(utimes): First parameter to utime must be file, not path.
* sysdeps/posix/sysconf.c (__sysconf): Test for CLK_TCK in case
_SC_CLK_TCK and return it when available.
Test for STREAM_MAX in case _SC_STREAM_MAX and return it when
available.
Add case for _SC_2_LOCALEDEF which is now available.
* posix/sys/types.h [__USE_SVID] (key_t): New type.
* sysvipc/Makefile, sysvipc/ftok.c, sysvipc/sys/ipc.h,
sysvipc/sys/msg.h, sysvipc/sys/sem.h, sysvipc/sys/shm.h,
sysdeps/stub/sys/msq_buf.h, sysdeps/stub/sys/sem_buf.h,
sysdeps/stub/sys/shm_buf.h, sysdeps/stub/sys/ipc_buf.h,
sysdeps/stub/semctl.c, sysdeps/stub/semget.c, sysdeps/stub/semop.c,
sysdeps/stub/shmat.c, sysdeps/stub/shmctl.c, sysdeps/stub/shmdt.c,
sysdeps/stub/shmget.c, sysdeps/stub/msgctl.c, sysdeps/stub/msgget.c,
sysdeps/stub/msgrcv.c, sysdeps/stub/msgsnd.c: New files.
Add implementation of System V IPC.
1995-09-17 20:23:15 +00:00
|
|
|
|
|
|
|
#ifdef __USE_REENTRANT
|
|
|
|
/* Reentrant versions of the `random' family of functions.
|
|
|
|
These functions all use the following data structure to contain
|
|
|
|
state, rather than global state variables. */
|
|
|
|
|
|
|
|
struct random_data
|
|
|
|
{
|
|
|
|
long int *fptr; /* Front pointer. */
|
|
|
|
long int *rptr; /* Rear pointer. */
|
|
|
|
long int *state; /* Array of state values. */
|
|
|
|
int rand_type; /* Type of random number generator. */
|
|
|
|
int rand_deg; /* Degree of random number generator. */
|
|
|
|
int rand_sep; /* Distance between front and rear. */
|
|
|
|
long int *end_ptr; /* Pointer behind state table. */
|
|
|
|
};
|
|
|
|
|
|
|
|
extern int __random_r __P ((struct random_data *__buf, long int *__result));
|
|
|
|
extern int __srandom_r __P ((unsigned int __seed, struct random_data *__buf));
|
|
|
|
extern int __initstate_r __P ((unsigned int __seed, __ptr_t __statebuf,
|
|
|
|
size_t __statelen, struct random_data *__buf));
|
|
|
|
extern int __setstate_r __P ((__ptr_t __statebuf, struct random_data *__buf));
|
|
|
|
|
|
|
|
extern int random_r __P ((struct random_data *__buf, long int *__result));
|
|
|
|
extern int srandom_r __P ((unsigned int __seed, struct random_data *__buf));
|
|
|
|
extern int initstate_r __P ((unsigned int __seed, __ptr_t __statebuf,
|
|
|
|
size_t __statelen, struct random_data *__buf));
|
|
|
|
extern int setstate_r __P ((__ptr_t __statebuf, struct random_data *__buf));
|
|
|
|
#endif /* __USE_REENTRANT. */
|
|
|
|
#endif /* Use BSD. */
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef __USE_SVID
|
|
|
|
/* System V style 48-bit random number generator functions. */
|
|
|
|
|
|
|
|
/* Data structure for communication with thread safe versions. */
|
|
|
|
struct drand48_data
|
|
|
|
{
|
|
|
|
unsigned short int X[3]; /* Current state. */
|
|
|
|
unsigned short int a[3]; /* Factor in congruential formula. */
|
|
|
|
unsigned short int c; /* Additive const. in congruential formula. */
|
|
|
|
unsigned short int old_X[3]; /* Old state. */
|
|
|
|
int init; /* Flag for initializing. */
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Return non-negative, double-precision floating-point value in [0.0,1.0). */
|
|
|
|
extern double drand48 __P ((void));
|
|
|
|
extern int drand48_r __P ((struct drand48_data *__buffer, double *__result));
|
|
|
|
extern double erand48 __P ((unsigned short int __xsubi[3]));
|
|
|
|
extern int erand48_r __P ((unsigned short int __xsubi[3],
|
|
|
|
struct drand48_data *__buffer, double *__result));
|
|
|
|
/* Return non-negative, long integer in [0,2^31). */
|
|
|
|
extern long lrand48 __P ((void));
|
|
|
|
extern int lrand48_r __P ((struct drand48_data *__buffer, long *__result));
|
|
|
|
extern long nrand48 __P ((unsigned short int __xsubi[3]));
|
|
|
|
extern int nrand48_r __P ((unsigned short int __xsubi[3],
|
|
|
|
struct drand48_data *__buffer, long *__result));
|
|
|
|
/* Return signed, long integers in [-2^31,2^31). */
|
|
|
|
extern long mrand48 __P ((void));
|
|
|
|
extern int mrand48_r __P ((struct drand48_data *__buffer, long *__result));
|
|
|
|
extern long jrand48 __P ((unsigned short int __xsubi[3]));
|
|
|
|
extern int jrand48_r __P ((unsigned short int __xsubi[3],
|
|
|
|
struct drand48_data *__buffer, long *__result));
|
|
|
|
/* Seed random number generator. */
|
|
|
|
extern void srand48 __P ((long __seedval));
|
|
|
|
extern int srand48_r __P ((long __seedval, struct drand48_data *__buffer));
|
|
|
|
extern unsigned short int *seed48 __P ((unsigned short int __seed16v[3]));
|
|
|
|
extern int seed48_r __P ((unsigned short int __seed16v[3],
|
|
|
|
struct drand48_data *__buffer));
|
|
|
|
extern void lcong48 __P ((unsigned short int __param[7]));
|
|
|
|
extern int lcong48_r __P ((unsigned short int __param[7],
|
|
|
|
struct drand48_data *__buffer));
|
|
|
|
|
|
|
|
/* Internal function to compute next state of the generator. */
|
|
|
|
extern int __drand48_iterate __P ((unsigned short int __xsubi[3],
|
|
|
|
struct drand48_data *__buffer));
|
|
|
|
#endif /* __USE_SVID. */
|
1995-02-18 01:27:10 +00:00
|
|
|
|
|
|
|
|
|
|
|
/* Allocate SIZE bytes of memory. */
|
|
|
|
extern __ptr_t malloc __P ((size_t __size));
|
|
|
|
/* Re-allocate the previously allocated block
|
|
|
|
in __ptr_t, making the new block SIZE bytes long. */
|
|
|
|
extern __ptr_t realloc __P ((__ptr_t __ptr, size_t __size));
|
|
|
|
/* Allocate NMEMB elements of SIZE bytes each, all initialized to 0. */
|
|
|
|
extern __ptr_t calloc __P ((size_t __nmemb, size_t __size));
|
|
|
|
/* Free a block allocated by `malloc', `realloc' or `calloc'. */
|
|
|
|
extern void free __P ((__ptr_t __ptr));
|
|
|
|
|
|
|
|
#ifdef __USE_MISC
|
|
|
|
/* Free a block. An alias for `free'. (Sun Unices). */
|
|
|
|
extern void cfree __P ((__ptr_t __ptr));
|
|
|
|
#endif /* Use misc. */
|
|
|
|
|
|
|
|
#if defined(__USE_GNU) || defined(__USE_BSD) || defined(__USE_MISC)
|
|
|
|
#include <alloca.h>
|
|
|
|
#endif /* Use GNU, BSD, or misc. */
|
|
|
|
|
|
|
|
#ifdef __USE_BSD
|
|
|
|
/* Allocate SIZE bytes on a page boundary. The storage cannot be freed. */
|
|
|
|
extern __ptr_t valloc __P ((size_t __size));
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
/* Abort execution and generate a core-dump. */
|
|
|
|
extern void abort __P ((void)) __attribute__ ((__noreturn__));
|
|
|
|
|
|
|
|
|
|
|
|
/* Register a function to be called when `exit' is called. */
|
|
|
|
extern int atexit __P ((void (*__func) (void)));
|
|
|
|
|
|
|
|
#ifdef __USE_MISC
|
|
|
|
/* Register a function to be called with the status
|
|
|
|
given to `exit' and the given argument. */
|
|
|
|
extern int on_exit __P ((void (*__func) (int __status, __ptr_t __arg),
|
|
|
|
__ptr_t __arg));
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* Call all functions registered with `atexit' and `on_exit',
|
|
|
|
in the reverse of the order in which they were registered
|
|
|
|
perform stdio cleanup, and terminate program execution with STATUS. */
|
|
|
|
extern void exit __P ((int __status)) __attribute__ ((__noreturn__));
|
|
|
|
|
|
|
|
|
|
|
|
/* Return the value of envariable NAME, or NULL if it doesn't exist. */
|
|
|
|
extern char *getenv __P ((__const char *__name));
|
|
|
|
|
|
|
|
#ifdef __USE_SVID
|
|
|
|
/* The SVID says this is in <stdio.h>, but this seems a better place. */
|
|
|
|
/* Put STRING, which is of the form "NAME=VALUE", in the environment.
|
|
|
|
If there is no `=', remove NAME from the environment. */
|
|
|
|
extern int putenv __P ((__const char *__string));
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef __USE_BSD
|
|
|
|
/* Set NAME to VALUE in the environment.
|
|
|
|
If REPLACE is nonzero, overwrite an existing value. */
|
|
|
|
extern int setenv __P ((__const char *__name, __const char *__value,
|
|
|
|
int __replace));
|
1995-12-06 00:14:32 +00:00
|
|
|
|
|
|
|
/* Remove the variable NAME from the environment. */
|
|
|
|
extern void unsetenv __P ((__const char *__name));
|
1995-02-18 01:27:10 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
/* Execute the given line as a shell command. */
|
|
|
|
extern int system __P ((__const char *__command));
|
|
|
|
|
|
|
|
|
|
|
|
/* Shorthand for type of comparison functions. */
|
Sat Sep 16 17:47:19 1995 Ulrich Drepper <drepper@ipd.info.uni-karlsruhe.de>
* elf/elf.h (AT_GID): Fix typo: Read -> Real.
* misc/efgvt_r.c: New file. Reentrant version of [efg]cvt functions.
* misc/efgcvt.c: Rewrite to use reentrant functions.
* misc/hsearch_r.c: New file. Reentrant version of functions from
hsearch family.
* misc/hsearch.c, misc/tsearch.c: New files.
* misc/Makefile (routines): Add efgcvt_r, hsearch_r, hsearch, tsearch.
* posix/unistd.h (ttyname_r): Add prototype for new function.
* stdlib/drand48_r.c, stdlib/erand48_r.c, stdlib/jrand48_r.c,
stdlib/lrand48_r.c, stdlib/mrand48_r.c, stdlib/nrand48_r.c,
stdlib/seed48_r.c, stdlib/srand48_r.c, stdlib/lcong48_r.c,
stdlib/drand48-iter.c: New files implementing reentrant versions
of functions from drand48 family.
* stdlib/seed48.c, stdlib/drand48.c, stdlib/erand48.c,
stdlib/jrand48.c, stdlib/lrand48.c, stdlib/mrand48.c,
stdlib/nrand48.c, stdlib/srand48.c, stdlib/lcong48.c:
Rewrite to use reentrant versions.
* stdlib/a64l.c, stdlib/l64a.c: New files. Implement a64l()
and l64a() functions from SysV library.
* stdlib/Makefile (routines): Add drand48_r, erand48_r, lrand48_r,
nrand48_r, mrand48_r, jrand48_r, srand48_r, seed48_r, lcong48_r,
drand48-iter, a64l, l64a.
* stdlib/stdlib.h: Declare them.
* stdlib/random_r.c: New file. Reentrant version of functions
from random family.
* stdlib/stdlib.h: Declare them.
* stdlib/random.c: Rewrite to use reentrant functions.
* string/strerror_r.c: New file. Reentrant version.
* string/strerror.c: Change for new _strerror_internal form.
* string/Makefile (routines): Add strerror_r.
* sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Set default
value of user_entry to `_start'.
Close AT_ENTRY case with `break'.
* sysdeps/generic/strstr.c: New and much faster implementation
by Stephen R. van den Berg.
* sysdeps/generic/_strerror.c: _strerror_internal now takes
three argument and has and explicit buffer length.
* sysdeps/mach/_strerror.c: Change for new interface with three
arguments.
* stdio/perror.c, stdio/vfprintf.c: Callers changed.
* sysdeps/mach/hurd/ttyname_r.c: New file. Reentrant version.
* sysdeps/posix/ttyname_r.c: New file. Reentrant version.
* sysdeps/stub/ttyname_r: New file. Define as dummy function.
* sysdeps/posix/utimes.c: Include <utime.h> for prototype.
(utimes): First parameter to utime must be file, not path.
* sysdeps/posix/sysconf.c (__sysconf): Test for CLK_TCK in case
_SC_CLK_TCK and return it when available.
Test for STREAM_MAX in case _SC_STREAM_MAX and return it when
available.
Add case for _SC_2_LOCALEDEF which is now available.
* posix/sys/types.h [__USE_SVID] (key_t): New type.
* sysvipc/Makefile, sysvipc/ftok.c, sysvipc/sys/ipc.h,
sysvipc/sys/msg.h, sysvipc/sys/sem.h, sysvipc/sys/shm.h,
sysdeps/stub/sys/msq_buf.h, sysdeps/stub/sys/sem_buf.h,
sysdeps/stub/sys/shm_buf.h, sysdeps/stub/sys/ipc_buf.h,
sysdeps/stub/semctl.c, sysdeps/stub/semget.c, sysdeps/stub/semop.c,
sysdeps/stub/shmat.c, sysdeps/stub/shmctl.c, sysdeps/stub/shmdt.c,
sysdeps/stub/shmget.c, sysdeps/stub/msgctl.c, sysdeps/stub/msgget.c,
sysdeps/stub/msgrcv.c, sysdeps/stub/msgsnd.c: New files.
Add implementation of System V IPC.
1995-09-17 20:23:15 +00:00
|
|
|
#ifndef __COMPAR_FN_T
|
|
|
|
#define __COMPAR_FN_T
|
1995-02-18 01:27:10 +00:00
|
|
|
typedef int (*__compar_fn_t) __P ((__const __ptr_t, __const __ptr_t));
|
Sat Sep 16 17:47:19 1995 Ulrich Drepper <drepper@ipd.info.uni-karlsruhe.de>
* elf/elf.h (AT_GID): Fix typo: Read -> Real.
* misc/efgvt_r.c: New file. Reentrant version of [efg]cvt functions.
* misc/efgcvt.c: Rewrite to use reentrant functions.
* misc/hsearch_r.c: New file. Reentrant version of functions from
hsearch family.
* misc/hsearch.c, misc/tsearch.c: New files.
* misc/Makefile (routines): Add efgcvt_r, hsearch_r, hsearch, tsearch.
* posix/unistd.h (ttyname_r): Add prototype for new function.
* stdlib/drand48_r.c, stdlib/erand48_r.c, stdlib/jrand48_r.c,
stdlib/lrand48_r.c, stdlib/mrand48_r.c, stdlib/nrand48_r.c,
stdlib/seed48_r.c, stdlib/srand48_r.c, stdlib/lcong48_r.c,
stdlib/drand48-iter.c: New files implementing reentrant versions
of functions from drand48 family.
* stdlib/seed48.c, stdlib/drand48.c, stdlib/erand48.c,
stdlib/jrand48.c, stdlib/lrand48.c, stdlib/mrand48.c,
stdlib/nrand48.c, stdlib/srand48.c, stdlib/lcong48.c:
Rewrite to use reentrant versions.
* stdlib/a64l.c, stdlib/l64a.c: New files. Implement a64l()
and l64a() functions from SysV library.
* stdlib/Makefile (routines): Add drand48_r, erand48_r, lrand48_r,
nrand48_r, mrand48_r, jrand48_r, srand48_r, seed48_r, lcong48_r,
drand48-iter, a64l, l64a.
* stdlib/stdlib.h: Declare them.
* stdlib/random_r.c: New file. Reentrant version of functions
from random family.
* stdlib/stdlib.h: Declare them.
* stdlib/random.c: Rewrite to use reentrant functions.
* string/strerror_r.c: New file. Reentrant version.
* string/strerror.c: Change for new _strerror_internal form.
* string/Makefile (routines): Add strerror_r.
* sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Set default
value of user_entry to `_start'.
Close AT_ENTRY case with `break'.
* sysdeps/generic/strstr.c: New and much faster implementation
by Stephen R. van den Berg.
* sysdeps/generic/_strerror.c: _strerror_internal now takes
three argument and has and explicit buffer length.
* sysdeps/mach/_strerror.c: Change for new interface with three
arguments.
* stdio/perror.c, stdio/vfprintf.c: Callers changed.
* sysdeps/mach/hurd/ttyname_r.c: New file. Reentrant version.
* sysdeps/posix/ttyname_r.c: New file. Reentrant version.
* sysdeps/stub/ttyname_r: New file. Define as dummy function.
* sysdeps/posix/utimes.c: Include <utime.h> for prototype.
(utimes): First parameter to utime must be file, not path.
* sysdeps/posix/sysconf.c (__sysconf): Test for CLK_TCK in case
_SC_CLK_TCK and return it when available.
Test for STREAM_MAX in case _SC_STREAM_MAX and return it when
available.
Add case for _SC_2_LOCALEDEF which is now available.
* posix/sys/types.h [__USE_SVID] (key_t): New type.
* sysvipc/Makefile, sysvipc/ftok.c, sysvipc/sys/ipc.h,
sysvipc/sys/msg.h, sysvipc/sys/sem.h, sysvipc/sys/shm.h,
sysdeps/stub/sys/msq_buf.h, sysdeps/stub/sys/sem_buf.h,
sysdeps/stub/sys/shm_buf.h, sysdeps/stub/sys/ipc_buf.h,
sysdeps/stub/semctl.c, sysdeps/stub/semget.c, sysdeps/stub/semop.c,
sysdeps/stub/shmat.c, sysdeps/stub/shmctl.c, sysdeps/stub/shmdt.c,
sysdeps/stub/shmget.c, sysdeps/stub/msgctl.c, sysdeps/stub/msgget.c,
sysdeps/stub/msgrcv.c, sysdeps/stub/msgsnd.c: New files.
Add implementation of System V IPC.
1995-09-17 20:23:15 +00:00
|
|
|
#endif
|
1995-02-18 01:27:10 +00:00
|
|
|
|
|
|
|
#ifdef __USE_GNU
|
|
|
|
typedef __compar_fn_t comparison_fn_t;
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* Do a binary search for KEY in BASE, which consists of NMEMB elements
|
|
|
|
of SIZE bytes each, using COMPAR to perform the comparisons. */
|
|
|
|
extern __ptr_t bsearch __P ((__const __ptr_t __key, __const __ptr_t __base,
|
|
|
|
size_t __nmemb, size_t __size,
|
|
|
|
__compar_fn_t __compar));
|
|
|
|
|
|
|
|
/* Sort NMEMB elements of BASE, of SIZE bytes each,
|
|
|
|
using COMPAR to perform the comparisons. */
|
|
|
|
extern void qsort __P ((__ptr_t __base, size_t __nmemb, size_t __size,
|
|
|
|
__compar_fn_t __compar));
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef __CONSTVALUE
|
|
|
|
#ifdef __GNUC__
|
|
|
|
/* The `const' keyword tells GCC that a function's return value is
|
|
|
|
based solely on its arguments, and there are no side-effects. */
|
|
|
|
#define __CONSTVALUE __const
|
|
|
|
#else
|
|
|
|
#define __CONSTVALUE
|
|
|
|
#endif /* GCC. */
|
|
|
|
#endif /* __CONSTVALUE not defined. */
|
|
|
|
|
|
|
|
/* Return the absolute value of X. */
|
|
|
|
extern __CONSTVALUE int abs __P ((int __x));
|
|
|
|
extern __CONSTVALUE long int labs __P ((long int __x));
|
|
|
|
|
|
|
|
|
|
|
|
/* Return the `div_t' or `ldiv_t' representation
|
|
|
|
of the value of NUMER over DENOM. */
|
|
|
|
/* GCC may have built-ins for these someday. */
|
|
|
|
extern __CONSTVALUE div_t div __P ((int __numer, int __denom));
|
|
|
|
extern __CONSTVALUE ldiv_t ldiv __P ((long int __numer, long int __denom));
|
|
|
|
|
|
|
|
|
Sat Sep 16 17:47:19 1995 Ulrich Drepper <drepper@ipd.info.uni-karlsruhe.de>
* elf/elf.h (AT_GID): Fix typo: Read -> Real.
* misc/efgvt_r.c: New file. Reentrant version of [efg]cvt functions.
* misc/efgcvt.c: Rewrite to use reentrant functions.
* misc/hsearch_r.c: New file. Reentrant version of functions from
hsearch family.
* misc/hsearch.c, misc/tsearch.c: New files.
* misc/Makefile (routines): Add efgcvt_r, hsearch_r, hsearch, tsearch.
* posix/unistd.h (ttyname_r): Add prototype for new function.
* stdlib/drand48_r.c, stdlib/erand48_r.c, stdlib/jrand48_r.c,
stdlib/lrand48_r.c, stdlib/mrand48_r.c, stdlib/nrand48_r.c,
stdlib/seed48_r.c, stdlib/srand48_r.c, stdlib/lcong48_r.c,
stdlib/drand48-iter.c: New files implementing reentrant versions
of functions from drand48 family.
* stdlib/seed48.c, stdlib/drand48.c, stdlib/erand48.c,
stdlib/jrand48.c, stdlib/lrand48.c, stdlib/mrand48.c,
stdlib/nrand48.c, stdlib/srand48.c, stdlib/lcong48.c:
Rewrite to use reentrant versions.
* stdlib/a64l.c, stdlib/l64a.c: New files. Implement a64l()
and l64a() functions from SysV library.
* stdlib/Makefile (routines): Add drand48_r, erand48_r, lrand48_r,
nrand48_r, mrand48_r, jrand48_r, srand48_r, seed48_r, lcong48_r,
drand48-iter, a64l, l64a.
* stdlib/stdlib.h: Declare them.
* stdlib/random_r.c: New file. Reentrant version of functions
from random family.
* stdlib/stdlib.h: Declare them.
* stdlib/random.c: Rewrite to use reentrant functions.
* string/strerror_r.c: New file. Reentrant version.
* string/strerror.c: Change for new _strerror_internal form.
* string/Makefile (routines): Add strerror_r.
* sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Set default
value of user_entry to `_start'.
Close AT_ENTRY case with `break'.
* sysdeps/generic/strstr.c: New and much faster implementation
by Stephen R. van den Berg.
* sysdeps/generic/_strerror.c: _strerror_internal now takes
three argument and has and explicit buffer length.
* sysdeps/mach/_strerror.c: Change for new interface with three
arguments.
* stdio/perror.c, stdio/vfprintf.c: Callers changed.
* sysdeps/mach/hurd/ttyname_r.c: New file. Reentrant version.
* sysdeps/posix/ttyname_r.c: New file. Reentrant version.
* sysdeps/stub/ttyname_r: New file. Define as dummy function.
* sysdeps/posix/utimes.c: Include <utime.h> for prototype.
(utimes): First parameter to utime must be file, not path.
* sysdeps/posix/sysconf.c (__sysconf): Test for CLK_TCK in case
_SC_CLK_TCK and return it when available.
Test for STREAM_MAX in case _SC_STREAM_MAX and return it when
available.
Add case for _SC_2_LOCALEDEF which is now available.
* posix/sys/types.h [__USE_SVID] (key_t): New type.
* sysvipc/Makefile, sysvipc/ftok.c, sysvipc/sys/ipc.h,
sysvipc/sys/msg.h, sysvipc/sys/sem.h, sysvipc/sys/shm.h,
sysdeps/stub/sys/msq_buf.h, sysdeps/stub/sys/sem_buf.h,
sysdeps/stub/sys/shm_buf.h, sysdeps/stub/sys/ipc_buf.h,
sysdeps/stub/semctl.c, sysdeps/stub/semget.c, sysdeps/stub/semop.c,
sysdeps/stub/shmat.c, sysdeps/stub/shmctl.c, sysdeps/stub/shmdt.c,
sysdeps/stub/shmget.c, sysdeps/stub/msgctl.c, sysdeps/stub/msgget.c,
sysdeps/stub/msgrcv.c, sysdeps/stub/msgsnd.c: New files.
Add implementation of System V IPC.
1995-09-17 20:23:15 +00:00
|
|
|
#ifdef __USE_SVID
|
|
|
|
/* Convert floating point numbers to strings. The returned values are
|
|
|
|
valid only until another call to the same function. */
|
|
|
|
|
|
|
|
/* Convert VALUE to a string with NDIGIT digits and return a pointer to
|
|
|
|
this. Set *DECPT with the position of the decimal character and *SIGN
|
|
|
|
with the sign of the number. */
|
|
|
|
char *ecvt __P ((double __value, int __ndigit, int *__decpt, int *sign));
|
|
|
|
|
|
|
|
/* Convert VALUE to a string rounded to NDIGIT decimal digits. Set *DECPT
|
|
|
|
with the position of the decimal character and *SIGN with the sign of
|
|
|
|
the number. */
|
|
|
|
char *fcvt __P ((double __value, int __ndigit, int *__decpt, int *sign));
|
|
|
|
|
|
|
|
/* If possible convert VALUE to a string with NDIGIT significant digits.
|
|
|
|
Otherwise use exponential representation. The resulting string will
|
|
|
|
be written to BUF. */
|
|
|
|
char *gcvt __P ((double __value, int __ndigit, char *__buf));
|
|
|
|
|
|
|
|
/* Reentrant version of the functions above which provide their own
|
|
|
|
buffers. */
|
|
|
|
int ecvt_r __P ((double __value, int __ndigit, int *__decpt, int *sign,
|
Mon Sep 18 12:39:22 1995 Paul Eggert <eggert@twinsun.com>
* mktime.c (localtime_r): Add substitute if the system doesn't
provide one.
Mon Sep 18 14:39:20 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* time/gmtime.c (gmtime_r): Define as weak alias.
* time/localtime.c (localtime_r): Define as weak alias.
* time/time.h [__USE_REENTRANT] (gmtime_r, localtime_r): Declare them.
* errno.h: Only define _ERRNO_H #ifndef __need_Emath.
#undef __need_Emath after including errnos.h.
[_ERRNO_H]: Protect decls with this.
Sun Sep 17 08:22:12 1995 Paul Eggert <eggert@twinsun.com>
Fix mktime so that it does not write over localtime's returned value.
* localtime.c (__localtime_r): New function, with extra arg
specifying where to store result.
(localtime): Use it.
(_tmbuf): New var.
* gmtime.c (__gmtime_r, gmtime, _tmbuf): Likewise.
* mktime.c (__mktime_internal): Conversion function is now
__localtime_r style, not localtime style.
(mktime): Pass __localtime_r, not localtime.
* timegm.c (timegm): Pass __gmtime_r, not gmtime.
* offtime.c (__offtime): New arg specifying where to store result.
* time.h (__mktime_internal, __offtime): Adjust decls accordingly.
(__gmtime_r, __localtime_r): New decls.
* time/localtime.c: <stddef.h>, <ctype.h>, <stdio.h>,
<stdlib.h>, <string.h>: Remove includes.
<errno.h>: Add include.
* time/mktime.c, time/time.h, time/timegm.c (__mktime_internal):
Renamed from _mktime_internal to avoid namespace pollution.
* time/gmtime.c: Clear tm_isdst.
* misc/efgcvt_r.c (ecvt_r, fcvt_r): Last arg is size_t, not int.
* stdlib/stdlib.h (ecvt_r, fcvt_r): Fix type of last arg: make it
size_t.
* sysdeps/mach/hurd/fpathconf.c: Call __io_pathconf instead of
__file_pathconf.
* sysdeps/mach/hurd/pathconf.c: Likewise.
1995-09-18 19:00:32 +00:00
|
|
|
char *__buf, size_t __len));
|
Sat Sep 16 17:47:19 1995 Ulrich Drepper <drepper@ipd.info.uni-karlsruhe.de>
* elf/elf.h (AT_GID): Fix typo: Read -> Real.
* misc/efgvt_r.c: New file. Reentrant version of [efg]cvt functions.
* misc/efgcvt.c: Rewrite to use reentrant functions.
* misc/hsearch_r.c: New file. Reentrant version of functions from
hsearch family.
* misc/hsearch.c, misc/tsearch.c: New files.
* misc/Makefile (routines): Add efgcvt_r, hsearch_r, hsearch, tsearch.
* posix/unistd.h (ttyname_r): Add prototype for new function.
* stdlib/drand48_r.c, stdlib/erand48_r.c, stdlib/jrand48_r.c,
stdlib/lrand48_r.c, stdlib/mrand48_r.c, stdlib/nrand48_r.c,
stdlib/seed48_r.c, stdlib/srand48_r.c, stdlib/lcong48_r.c,
stdlib/drand48-iter.c: New files implementing reentrant versions
of functions from drand48 family.
* stdlib/seed48.c, stdlib/drand48.c, stdlib/erand48.c,
stdlib/jrand48.c, stdlib/lrand48.c, stdlib/mrand48.c,
stdlib/nrand48.c, stdlib/srand48.c, stdlib/lcong48.c:
Rewrite to use reentrant versions.
* stdlib/a64l.c, stdlib/l64a.c: New files. Implement a64l()
and l64a() functions from SysV library.
* stdlib/Makefile (routines): Add drand48_r, erand48_r, lrand48_r,
nrand48_r, mrand48_r, jrand48_r, srand48_r, seed48_r, lcong48_r,
drand48-iter, a64l, l64a.
* stdlib/stdlib.h: Declare them.
* stdlib/random_r.c: New file. Reentrant version of functions
from random family.
* stdlib/stdlib.h: Declare them.
* stdlib/random.c: Rewrite to use reentrant functions.
* string/strerror_r.c: New file. Reentrant version.
* string/strerror.c: Change for new _strerror_internal form.
* string/Makefile (routines): Add strerror_r.
* sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Set default
value of user_entry to `_start'.
Close AT_ENTRY case with `break'.
* sysdeps/generic/strstr.c: New and much faster implementation
by Stephen R. van den Berg.
* sysdeps/generic/_strerror.c: _strerror_internal now takes
three argument and has and explicit buffer length.
* sysdeps/mach/_strerror.c: Change for new interface with three
arguments.
* stdio/perror.c, stdio/vfprintf.c: Callers changed.
* sysdeps/mach/hurd/ttyname_r.c: New file. Reentrant version.
* sysdeps/posix/ttyname_r.c: New file. Reentrant version.
* sysdeps/stub/ttyname_r: New file. Define as dummy function.
* sysdeps/posix/utimes.c: Include <utime.h> for prototype.
(utimes): First parameter to utime must be file, not path.
* sysdeps/posix/sysconf.c (__sysconf): Test for CLK_TCK in case
_SC_CLK_TCK and return it when available.
Test for STREAM_MAX in case _SC_STREAM_MAX and return it when
available.
Add case for _SC_2_LOCALEDEF which is now available.
* posix/sys/types.h [__USE_SVID] (key_t): New type.
* sysvipc/Makefile, sysvipc/ftok.c, sysvipc/sys/ipc.h,
sysvipc/sys/msg.h, sysvipc/sys/sem.h, sysvipc/sys/shm.h,
sysdeps/stub/sys/msq_buf.h, sysdeps/stub/sys/sem_buf.h,
sysdeps/stub/sys/shm_buf.h, sysdeps/stub/sys/ipc_buf.h,
sysdeps/stub/semctl.c, sysdeps/stub/semget.c, sysdeps/stub/semop.c,
sysdeps/stub/shmat.c, sysdeps/stub/shmctl.c, sysdeps/stub/shmdt.c,
sysdeps/stub/shmget.c, sysdeps/stub/msgctl.c, sysdeps/stub/msgget.c,
sysdeps/stub/msgrcv.c, sysdeps/stub/msgsnd.c: New files.
Add implementation of System V IPC.
1995-09-17 20:23:15 +00:00
|
|
|
int fcvt_r __P ((double __value, int __ndigit, int *__decpt, int *sign,
|
Mon Sep 18 12:39:22 1995 Paul Eggert <eggert@twinsun.com>
* mktime.c (localtime_r): Add substitute if the system doesn't
provide one.
Mon Sep 18 14:39:20 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* time/gmtime.c (gmtime_r): Define as weak alias.
* time/localtime.c (localtime_r): Define as weak alias.
* time/time.h [__USE_REENTRANT] (gmtime_r, localtime_r): Declare them.
* errno.h: Only define _ERRNO_H #ifndef __need_Emath.
#undef __need_Emath after including errnos.h.
[_ERRNO_H]: Protect decls with this.
Sun Sep 17 08:22:12 1995 Paul Eggert <eggert@twinsun.com>
Fix mktime so that it does not write over localtime's returned value.
* localtime.c (__localtime_r): New function, with extra arg
specifying where to store result.
(localtime): Use it.
(_tmbuf): New var.
* gmtime.c (__gmtime_r, gmtime, _tmbuf): Likewise.
* mktime.c (__mktime_internal): Conversion function is now
__localtime_r style, not localtime style.
(mktime): Pass __localtime_r, not localtime.
* timegm.c (timegm): Pass __gmtime_r, not gmtime.
* offtime.c (__offtime): New arg specifying where to store result.
* time.h (__mktime_internal, __offtime): Adjust decls accordingly.
(__gmtime_r, __localtime_r): New decls.
* time/localtime.c: <stddef.h>, <ctype.h>, <stdio.h>,
<stdlib.h>, <string.h>: Remove includes.
<errno.h>: Add include.
* time/mktime.c, time/time.h, time/timegm.c (__mktime_internal):
Renamed from _mktime_internal to avoid namespace pollution.
* time/gmtime.c: Clear tm_isdst.
* misc/efgcvt_r.c (ecvt_r, fcvt_r): Last arg is size_t, not int.
* stdlib/stdlib.h (ecvt_r, fcvt_r): Fix type of last arg: make it
size_t.
* sysdeps/mach/hurd/fpathconf.c: Call __io_pathconf instead of
__file_pathconf.
* sysdeps/mach/hurd/pathconf.c: Likewise.
1995-09-18 19:00:32 +00:00
|
|
|
char *__buf, size_t __len));
|
Sat Sep 16 17:47:19 1995 Ulrich Drepper <drepper@ipd.info.uni-karlsruhe.de>
* elf/elf.h (AT_GID): Fix typo: Read -> Real.
* misc/efgvt_r.c: New file. Reentrant version of [efg]cvt functions.
* misc/efgcvt.c: Rewrite to use reentrant functions.
* misc/hsearch_r.c: New file. Reentrant version of functions from
hsearch family.
* misc/hsearch.c, misc/tsearch.c: New files.
* misc/Makefile (routines): Add efgcvt_r, hsearch_r, hsearch, tsearch.
* posix/unistd.h (ttyname_r): Add prototype for new function.
* stdlib/drand48_r.c, stdlib/erand48_r.c, stdlib/jrand48_r.c,
stdlib/lrand48_r.c, stdlib/mrand48_r.c, stdlib/nrand48_r.c,
stdlib/seed48_r.c, stdlib/srand48_r.c, stdlib/lcong48_r.c,
stdlib/drand48-iter.c: New files implementing reentrant versions
of functions from drand48 family.
* stdlib/seed48.c, stdlib/drand48.c, stdlib/erand48.c,
stdlib/jrand48.c, stdlib/lrand48.c, stdlib/mrand48.c,
stdlib/nrand48.c, stdlib/srand48.c, stdlib/lcong48.c:
Rewrite to use reentrant versions.
* stdlib/a64l.c, stdlib/l64a.c: New files. Implement a64l()
and l64a() functions from SysV library.
* stdlib/Makefile (routines): Add drand48_r, erand48_r, lrand48_r,
nrand48_r, mrand48_r, jrand48_r, srand48_r, seed48_r, lcong48_r,
drand48-iter, a64l, l64a.
* stdlib/stdlib.h: Declare them.
* stdlib/random_r.c: New file. Reentrant version of functions
from random family.
* stdlib/stdlib.h: Declare them.
* stdlib/random.c: Rewrite to use reentrant functions.
* string/strerror_r.c: New file. Reentrant version.
* string/strerror.c: Change for new _strerror_internal form.
* string/Makefile (routines): Add strerror_r.
* sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Set default
value of user_entry to `_start'.
Close AT_ENTRY case with `break'.
* sysdeps/generic/strstr.c: New and much faster implementation
by Stephen R. van den Berg.
* sysdeps/generic/_strerror.c: _strerror_internal now takes
three argument and has and explicit buffer length.
* sysdeps/mach/_strerror.c: Change for new interface with three
arguments.
* stdio/perror.c, stdio/vfprintf.c: Callers changed.
* sysdeps/mach/hurd/ttyname_r.c: New file. Reentrant version.
* sysdeps/posix/ttyname_r.c: New file. Reentrant version.
* sysdeps/stub/ttyname_r: New file. Define as dummy function.
* sysdeps/posix/utimes.c: Include <utime.h> for prototype.
(utimes): First parameter to utime must be file, not path.
* sysdeps/posix/sysconf.c (__sysconf): Test for CLK_TCK in case
_SC_CLK_TCK and return it when available.
Test for STREAM_MAX in case _SC_STREAM_MAX and return it when
available.
Add case for _SC_2_LOCALEDEF which is now available.
* posix/sys/types.h [__USE_SVID] (key_t): New type.
* sysvipc/Makefile, sysvipc/ftok.c, sysvipc/sys/ipc.h,
sysvipc/sys/msg.h, sysvipc/sys/sem.h, sysvipc/sys/shm.h,
sysdeps/stub/sys/msq_buf.h, sysdeps/stub/sys/sem_buf.h,
sysdeps/stub/sys/shm_buf.h, sysdeps/stub/sys/ipc_buf.h,
sysdeps/stub/semctl.c, sysdeps/stub/semget.c, sysdeps/stub/semop.c,
sysdeps/stub/shmat.c, sysdeps/stub/shmctl.c, sysdeps/stub/shmdt.c,
sysdeps/stub/shmget.c, sysdeps/stub/msgctl.c, sysdeps/stub/msgget.c,
sysdeps/stub/msgrcv.c, sysdeps/stub/msgsnd.c: New files.
Add implementation of System V IPC.
1995-09-17 20:23:15 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
|
1995-02-18 01:27:10 +00:00
|
|
|
/* Return the length of the multibyte character
|
|
|
|
in S, which is no longer than N. */
|
|
|
|
extern int mblen __P ((__const char *__s, size_t __n));
|
|
|
|
/* Return the length of the given multibyte character,
|
|
|
|
putting its `wchar_t' representation in *PWC. */
|
|
|
|
extern int mbtowc __P ((wchar_t * __pwc, __const char *__s, size_t __n));
|
|
|
|
/* Put the multibyte character represented
|
|
|
|
by WCHAR in S, returning its length. */
|
|
|
|
extern int wctomb __P ((char *__s, wchar_t __wchar));
|
|
|
|
|
|
|
|
#if defined (__OPTIMIZE__) && __GNUC__ >= 2
|
|
|
|
extern __inline int mblen (__const char *__s, size_t __n)
|
|
|
|
{ return mbtowc ((wchar_t *) NULL, __s, __n); }
|
|
|
|
#endif /* Optimizing GCC >=2. */
|
|
|
|
|
|
|
|
|
|
|
|
/* Convert a multibyte string to a wide char string. */
|
|
|
|
extern size_t mbstowcs __P ((wchar_t * __pwcs, __const char *__s, size_t __n));
|
|
|
|
/* Convert a wide char string to multibyte string. */
|
|
|
|
extern size_t wcstombs __P ((char *__s, __const wchar_t * __pwcs, size_t __n));
|
|
|
|
|
|
|
|
|
|
|
|
__END_DECLS
|
|
|
|
|
|
|
|
#endif /* stdlib.h */
|