* locale/programs/xmalloc.c: Test _LIBC as well as STDC_HEADERS.
* locale/programs/ld-collate.c (collate_finish): Use error_at_line
instead of error_with_loc.
* locale/weight.h: Use u_int32_t instead of u32_t.
* string/strxfrm.c: Likewise.
* string/strxfrm.c: Find weight.h in ../locale; don't #include
"localeinfo.h".
* string/strcoll.c: Likewise.
* locale/programs/simple-hash.c, locale/programs/simple-hash.h,
locale/programs/xmalloc.c, locale/programs/xstrdup.c: Helper functions
for locale related programs.
locale/programs/charmap.c, locale/programs/charset.c,
locale/programs/charset.h, locale/programs/config.h,
locale/programs/ctypedump.c, locale/programs/ld-collate.c,
locale/programs/ld-ctype.c, locale/programs/ld-messages.c,
locale/programs/ld-monetary.c, locale/programs/ld-numeric.c,
locale/programs/ld-time.c, locale/programs/linereader.c,
locale/programs/linereader.h, locale/programs/locale.c,
locale/programs/localedef.c, locale/programs/locales.h,
locale/programs/locfile-kw.gperf, locale/programs/locfile-kw.h,
locale/programs/locfile-token.h, locale/programs/locfile.c,
locale/programs/locfile.h, locale/programs/stringtrans.c,
locale/programs/stringtrans.h: Implementation of locale related
programs.
1996-03-28 17:16:15 +08:00
|
|
|
/* xmalloc.c -- malloc with out of memory checking
|
1996-10-09 07:39:20 +08:00
|
|
|
Copyright (C) 1990, 91, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
|
* locale/programs/xmalloc.c: Test _LIBC as well as STDC_HEADERS.
* locale/programs/ld-collate.c (collate_finish): Use error_at_line
instead of error_with_loc.
* locale/weight.h: Use u_int32_t instead of u32_t.
* string/strxfrm.c: Likewise.
* string/strxfrm.c: Find weight.h in ../locale; don't #include
"localeinfo.h".
* string/strcoll.c: Likewise.
* locale/programs/simple-hash.c, locale/programs/simple-hash.h,
locale/programs/xmalloc.c, locale/programs/xstrdup.c: Helper functions
for locale related programs.
locale/programs/charmap.c, locale/programs/charset.c,
locale/programs/charset.h, locale/programs/config.h,
locale/programs/ctypedump.c, locale/programs/ld-collate.c,
locale/programs/ld-ctype.c, locale/programs/ld-messages.c,
locale/programs/ld-monetary.c, locale/programs/ld-numeric.c,
locale/programs/ld-time.c, locale/programs/linereader.c,
locale/programs/linereader.h, locale/programs/locale.c,
locale/programs/localedef.c, locale/programs/locales.h,
locale/programs/locfile-kw.gperf, locale/programs/locfile-kw.h,
locale/programs/locfile-token.h, locale/programs/locfile.c,
locale/programs/locfile.h, locale/programs/stringtrans.c,
locale/programs/stringtrans.h: Implementation of locale related
programs.
1996-03-28 17:16:15 +08:00
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
|
|
it under the terms of the GNU General Public License as published by
|
|
|
|
the Free Software Foundation; either version 2, or (at your option)
|
|
|
|
any later version.
|
|
|
|
|
|
|
|
This program 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 General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
along with this program; if not, write to the Free Software
|
|
|
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
|
|
|
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
#include <config.h>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if __STDC__
|
|
|
|
#define VOID void
|
|
|
|
#else
|
|
|
|
#define VOID char
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <sys/types.h>
|
|
|
|
|
|
|
|
#if STDC_HEADERS || _LIBC
|
|
|
|
#include <stdlib.h>
|
1996-10-09 07:39:20 +08:00
|
|
|
static VOID *fixup_null_alloc __P ((size_t n));
|
update from main archvie 961013
Sun Oct 13 22:52:56 1996 Ulrich Drepper <drepper@cygnus.com>
* shlib-versions: Add version number/name for ld.so.
* Makeconfig: Move definition of rtld-installed-name after
inclusion of soversions.mk.
Don't add . before version number from shlib-versions file when
when name does not start with digit. This is needed for ld.so.
Sat Oct 12 20:31:58 1996 Richard Henderson <rth@tamu.edu>
* libio/iogets.c: Warn when gets used.
* stdio/gets.c: Strengthen the warning.
Sat Oct 12 23:10:43 1996 Ulrich Drepper <drepper@cygnus.com>
* libio/Makefile [_LIBC_REENTRANT] (routines): Add peekc.
* libio/libio.h: Add prototypes for _IO_getc, _IO_putc, _IO_feof,
_IO_ferror, _IO_peekc_locked, and _IO_ftrylockfile.
Remove prototypes for _IO_getc_locked and _IO_putc_locked.
[_IO_MTSAFE_IO]: Add weak aliases for _IO_flockfile and
_IO_funlockfile.
[! _IO_MTSAFE_IO]: Define _IO_ftrylockfile as empty.
Define _IO_getc, _IO_peekc, _IO_putc, _IO_feof, _IO_ferror to
appropriate values according to __USE_REENTRANT.
* libio/stdio.h: Add prototype for ftrylockfile.
[!_LIBC]: Define getc_locked, getchar_locked, putchar_locked,
getc, getchar, putc, and putchar using _IO_* names.
* libio/feof.c: Rename to _IO_feof and make feof weak alias.
* libio/ferror.c: Rename to _IO_ferror and make ferror weak alias.
* libio/getc.c: Rename to _IO_getc and make getc weak alias.
* libio/putc.c: Rename to _IO_putc and make putc weak alias.
* libio/putc_u.c: Don't define alias _IO_putc_unlocked.
* libio/peekc.c: New file.
* stdio-common/vfprintf.c (vfprintf): Unconditionally call
__flockfile.
* sysdeps/stub/locfile.c [USE_IN_LIBIO]: Also define _IO_* names.
* crypt/Makefile (tests): Add md5test and md5c-test.
* crypt/md5-crypt.c: Correct various error. Now md5_process_bytes
is called, the buffer limit is honoured and a loop in a inner
loop is corrected.
* crypt/md5.h (struct md5_ctx): Add new fields.
Add prototypes for new functions.
* crypt/md5.c (md5_init_ctx): Initialize new fields.
(md5_finish_ctx): New function. Like md5_read_ctx but before
perform correct finalization.
(md5_process_bytes): New function. Similar to md5_proces_block,
but does not require input size to be multiple of 64.
(md5_stream): Rewrite using md5_process_bytes and md5_finish_ctx.
(md5_buffer): Likewise.
(md5_process_block): Count number of bytes.
* crypt/md5test.c: New file. Test program for MD5 functions.
* crypt/md5c-test.c: New file: Test program for MD5 crypt
function.
* po/fr.po: Update.
* time/strptime.c: Recognize %s, %u, %g, and %G format.
* posix/getopt.c: Add some more casts and initializations to
prevent warnings.
Sat Oct 12 16:15:29 1996 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/speed.c (speeds): Removed. We provide
an extra function to provide this functionality.
(cfgetospeed): Simply return masked value.
(cfsetospeed): Don't use speeds array and so we can simply test
the value of SPEED for illegal values.
* termios/cfsetspeed.c: Rewrite. We convert here between the
real values and the B* constants.
Changes suggested by Uwe Ohse <uwe@tirka.gun.de>.
Fri Oct 11 21:45:34 1996 Andreas Jaeger <aj@arthur.pfalz.de>
* locale/programs/xstrdup.c: Define prototypes.
* locale/programs/xmalloc.c: Likewise.
* stdio-common/xbug.c (main): Change definition to avoid warning.
Fri Oct 11 23:36:31 1996 Miles Bader <miles@gnu.ai.mit.edu>
* db/hash/hash.c (__hash_open): Correctly test for a read-write db.
1996-10-14 05:35:39 +08:00
|
|
|
VOID *xmalloc __P ((size_t n));
|
|
|
|
VOID *xcalloc __P ((size_t n, size_t s));
|
|
|
|
VOID *xrealloc __P ((VOID *p, size_t n));
|
* locale/programs/xmalloc.c: Test _LIBC as well as STDC_HEADERS.
* locale/programs/ld-collate.c (collate_finish): Use error_at_line
instead of error_with_loc.
* locale/weight.h: Use u_int32_t instead of u32_t.
* string/strxfrm.c: Likewise.
* string/strxfrm.c: Find weight.h in ../locale; don't #include
"localeinfo.h".
* string/strcoll.c: Likewise.
* locale/programs/simple-hash.c, locale/programs/simple-hash.h,
locale/programs/xmalloc.c, locale/programs/xstrdup.c: Helper functions
for locale related programs.
locale/programs/charmap.c, locale/programs/charset.c,
locale/programs/charset.h, locale/programs/config.h,
locale/programs/ctypedump.c, locale/programs/ld-collate.c,
locale/programs/ld-ctype.c, locale/programs/ld-messages.c,
locale/programs/ld-monetary.c, locale/programs/ld-numeric.c,
locale/programs/ld-time.c, locale/programs/linereader.c,
locale/programs/linereader.h, locale/programs/locale.c,
locale/programs/localedef.c, locale/programs/locales.h,
locale/programs/locfile-kw.gperf, locale/programs/locfile-kw.h,
locale/programs/locfile-token.h, locale/programs/locfile.c,
locale/programs/locfile.h, locale/programs/stringtrans.c,
locale/programs/stringtrans.h: Implementation of locale related
programs.
1996-03-28 17:16:15 +08:00
|
|
|
#else
|
|
|
|
VOID *calloc ();
|
|
|
|
VOID *malloc ();
|
|
|
|
VOID *realloc ();
|
|
|
|
void free ();
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <libintl.h>
|
|
|
|
#include "error.h"
|
|
|
|
|
|
|
|
#ifndef _
|
|
|
|
# define _(str) gettext (str)
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef EXIT_FAILURE
|
|
|
|
#define EXIT_FAILURE 4
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* Exit value when the requested amount of memory is not available.
|
|
|
|
The caller may set it to some other value. */
|
|
|
|
int xmalloc_exit_failure = EXIT_FAILURE;
|
|
|
|
|
|
|
|
static VOID *
|
|
|
|
fixup_null_alloc (n)
|
|
|
|
size_t n;
|
|
|
|
{
|
|
|
|
VOID *p;
|
|
|
|
|
|
|
|
p = 0;
|
|
|
|
if (n == 0)
|
|
|
|
p = malloc ((size_t) 1);
|
|
|
|
if (p == 0)
|
|
|
|
error (xmalloc_exit_failure, 0, _("memory exhausted"));
|
|
|
|
return p;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Allocate N bytes of memory dynamically, with error checking. */
|
|
|
|
|
|
|
|
VOID *
|
|
|
|
xmalloc (n)
|
|
|
|
size_t n;
|
|
|
|
{
|
|
|
|
VOID *p;
|
|
|
|
|
|
|
|
p = malloc (n);
|
|
|
|
if (p == 0)
|
|
|
|
p = fixup_null_alloc (n);
|
|
|
|
return p;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Allocate memory for N elements of S bytes, with error checking. */
|
|
|
|
|
|
|
|
VOID *
|
|
|
|
xcalloc (n, s)
|
|
|
|
size_t n, s;
|
|
|
|
{
|
|
|
|
VOID *p;
|
|
|
|
|
|
|
|
p = calloc (n, s);
|
|
|
|
if (p == 0)
|
|
|
|
p = fixup_null_alloc (n);
|
|
|
|
return p;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Change the size of an allocated block of memory P to N bytes,
|
|
|
|
with error checking.
|
|
|
|
If P is NULL, run xmalloc. */
|
|
|
|
|
|
|
|
VOID *
|
|
|
|
xrealloc (p, n)
|
|
|
|
VOID *p;
|
|
|
|
size_t n;
|
|
|
|
{
|
|
|
|
if (p == 0)
|
|
|
|
return xmalloc (n);
|
|
|
|
p = realloc (p, n);
|
|
|
|
if (p == 0)
|
|
|
|
p = fixup_null_alloc (n);
|
|
|
|
return p;
|
|
|
|
}
|