# HG changeset patch # User Paul Eggert # Date 1092076269 0 # Node ID 95d4226b62d3fa289a8ab3508af310705f148b62 # Parent 9d7fe6ace3577790fef2a1d48b1eb566c972e023 Remove dependency of xalloc in exitfail, error, gettext. diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2004-08-09 Paul Eggert + * modules/xalloc-die: New file. + * modules/xalloc: Remove dependencies on error, gettext, exitfail. + * modules/md5 (Files): Add m4/uint32_t.m4. * modules/sha1: Renamed from modules/sha. (Files): @@ -23,7 +26,7 @@ * modules/canonicalize, modules/euidaccess, modules/filemode, modules/lchown, modules/makepath, modules/rmdir, modules/stat: Likewise. - + 2004-08-03 Simon Josefsson * modules/progname (Depends-on): Don't depend on stdbool. diff --git a/lib/ChangeLog b/lib/ChangeLog --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,4 +1,13 @@ -2004-08-09 Paul Eggert +2004-08-08 Paul Eggert + + * xalloc-die.c: New files. + * xalloc.h (xalloc_fail_func, xalloc_msg_memory_exhausted): Remove. + All uses removed. + * xmalloc.c (xalloc_fail_func, xalloc_msg_memory_exhausted): Likewise. + Move inclusions of gettext.h, error.h, exitfail.h to xalloc-die.c. + (_, N_, xalloc_die): Move to xalloc-die.c. + * userspec.c (parse_user_spaec): Use xstrdup rather than strdup, + so that we needn't mess with xalloc_msg_memory_exhausted. * sha1.h: Renamed from sha.h. (SHA1_H): Renamed from _SHA_H. @@ -13,7 +22,7 @@ * sha1.c: Likewise; renamed from sha.c. Do not include . Include rather than . - + 2004-08-08 Bruno Haible * pathname.h (FILE_SYSTEM_PREFIX_LEN): Renamed from diff --git a/lib/userspec.c b/lib/userspec.c --- a/lib/userspec.c +++ b/lib/userspec.c @@ -277,25 +277,10 @@ if (error_msg == NULL) { if (u != NULL) - { - *username_arg = strdup (u); - if (*username_arg == NULL) - error_msg = xalloc_msg_memory_exhausted; - } + *username_arg = xstrdup (u); - if (groupname != NULL && error_msg == NULL) - { - *groupname_arg = strdup (groupname); - if (*groupname_arg == NULL) - { - if (*username_arg != NULL) - { - free (*username_arg); - *username_arg = NULL; - } - error_msg = xalloc_msg_memory_exhausted; - } - } + if (groupname != NULL) + *groupname_arg = xstrdup (groupname); } if (error_msg && dot) diff --git a/lib/xalloc-die.c b/lib/xalloc-die.c new file mode 100644 --- /dev/null +++ b/lib/xalloc-die.c @@ -0,0 +1,45 @@ +/* Report a memory allocation failure and exit. + + Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003, 2004 Free + Software Foundation, Inc. + + 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. */ + +#if HAVE_CONFIG_H +# include +#endif + +#include "xalloc.h" + +#include + +#include "error.h" +#include "exitfail.h" + +#include "gettext.h" +#define _(msgid) gettext (msgid) +#define N_(msgid) msgid + +void +xalloc_die (void) +{ + error (exit_failure, 0, "%s", _("memory exhausted")); + + /* The `noreturn' cannot be given to error, since it may return if + its first argument is 0. To help compilers understand the + xalloc_die does not return, call abort. Also, the abort is a + safety feature if exit_failure is 0 (which shouldn't happen). */ + abort (); +} diff --git a/lib/xalloc.h b/lib/xalloc.h --- a/lib/xalloc.h +++ b/lib/xalloc.h @@ -38,19 +38,9 @@ # define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__)) # endif - -/* If this pointer is non-zero, run the specified function upon each - allocation failure. It is initialized to zero. */ -extern void (*xalloc_fail_func) (void); - -/* If XALLOC_FAIL_FUNC is undefined or a function that returns, this - message is output. It is translated via gettext. - Its value is "memory exhausted". */ -extern char const xalloc_msg_memory_exhausted[]; - -/* This function is always triggered when memory is exhausted. It is - in charge of honoring the two previous items. It exits with status - exit_failure (defined in exitfail.h). This is the +/* This function is always triggered when memory is exhausted. + It must be defined by the application, either explicitly + or by using gnulib's xalloc-die module. This is the function to call when one wants the program to die because of a memory allocation failure. */ extern void xalloc_die (void) ATTRIBUTE_NORETURN; diff --git a/lib/xmalloc.c b/lib/xmalloc.c --- a/lib/xmalloc.c +++ b/lib/xmalloc.c @@ -1,6 +1,6 @@ /* xmalloc.c -- malloc with out of memory checking - Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2003, + Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify @@ -26,36 +26,10 @@ #include #include -#include "gettext.h" -#define _(msgid) gettext (msgid) -#define N_(msgid) msgid - -#include "error.h" -#include "exitfail.h" - #ifndef SIZE_MAX # define SIZE_MAX ((size_t) -1) #endif -/* If non NULL, call this function when memory is exhausted. */ -void (*xalloc_fail_func) (void) = 0; - -/* If XALLOC_FAIL_FUNC is NULL, or does return, display this message - before exiting when memory is exhausted. Goes through gettext. */ -char const xalloc_msg_memory_exhausted[] = N_("memory exhausted"); - -void -xalloc_die (void) -{ - if (xalloc_fail_func) - (*xalloc_fail_func) (); - error (exit_failure, 0, "%s", _(xalloc_msg_memory_exhausted)); - /* The `noreturn' cannot be given to error, since it may return if - its first argument is 0. To help compilers understand the - xalloc_die does terminate, call abort. */ - abort (); -} - /* Allocate an array of N objects, each with S bytes of memory, dynamically, with error checking. S must be nonzero. */ diff --git a/modules/xalloc b/modules/xalloc --- a/modules/xalloc +++ b/modules/xalloc @@ -1,5 +1,5 @@ Description: -Memory allocation with out-of-memory checking. +Memory allocation with out-of-memory checking. Also see xalloc-die. Files: lib/xalloc.h @@ -8,9 +8,6 @@ m4/xalloc.m4 Depends-on: -error -gettext -exitfail configure.ac: gl_XALLOC diff --git a/modules/xalloc-die b/modules/xalloc-die new file mode 100644 --- /dev/null +++ b/modules/xalloc-die @@ -0,0 +1,23 @@ +Description: +Report a memory allocation failure and exit. + +Files: +lib/xalloc-die.c + +Depends-on: +xalloc +error +gettext +exitfail + +configure.ac: + +Makefile.am: +lib_SOURCES += xalloc-die.c + +Include: +"xalloc.h" + +Maintainer: +all +