summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2004-08-09 18:44:46 +0000
committerPaul Eggert <eggert@cs.ucla.edu>2004-08-09 18:44:46 +0000
commit8ad3011df39aac9833be500a4c7df7c0186ea733 (patch)
treec14af796e9fa146b2f3289bd5f19bc068616fbbc /lib
parente5f309aaf39d6697d417f78d9e2fecfc14608abb (diff)
downloadcoreutils-8ad3011df39aac9833be500a4c7df7c0186ea733.tar.xz
Remove dependency of xalloc on error, etc.
Diffstat (limited to 'lib')
-rw-r--r--lib/ChangeLog9
-rw-r--r--lib/Makefile.am1
-rw-r--r--lib/userspec.c21
-rw-r--r--lib/xalloc.h16
-rw-r--r--lib/xmalloc.c28
5 files changed, 17 insertions, 58 deletions
diff --git a/lib/ChangeLog b/lib/ChangeLog
index 6b1bc0267..c7a35cab6 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,5 +1,14 @@
2004-08-09 Paul Eggert <eggert@cs.ucla.edu>
+ * 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 (sha1_ctx): Renamed from sha_ctx.
(sha1_init_ctx): Renamed from sha_init_ctx.
(sha1_process_block): Renamed from sha_process_block.
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 14fa77612..ec6f4645b 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -122,6 +122,7 @@ libfetish_a_SOURCES = \
utimens.c utimens.h \
version-etc.c version-etc.h \
xalloc.h \
+ xalloc-die.c \
xfts.c xfts.h \
xgetcwd.c xgetcwd.h \
xgethostname.c xgethostname.h \
diff --git a/lib/userspec.c b/lib/userspec.c
index 820c71027..6bf40895d 100644
--- a/lib/userspec.c
+++ b/lib/userspec.c
@@ -277,25 +277,10 @@ parse_user_spec (const char *spec_arg, uid_t *uid, gid_t *gid,
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.h b/lib/xalloc.h
index 5985892c9..d81f2a676 100644
--- a/lib/xalloc.h
+++ b/lib/xalloc.h
@@ -38,19 +38,9 @@ extern "C" {
# 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
index cc7501974..9b7a948c2 100644
--- 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 <stdlib.h>
#include <string.h>
-#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. */