~ubuntu-branches/ubuntu/breezy/findutils/breezy

« back to all changes in this revision

Viewing changes to lib/xmalloc.c

  • Committer: Bazaar Package Importer
  • Author(s): Andreas Metzler
  • Date: 2003-10-26 13:44:21 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20031026134421-nrjr43wpcpd03m91
Tags: 4.1.20-3
Don't ship /usr/share/info/dir.gz, change Makefile.in to use install-info
test from new automake. The bug only applied to the autobuilt versions,
because I don't have /usr/sbin in $PATH, thanks to Santiago Vila.
(Closes: #217627)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* xmalloc.c -- malloc with out of memory checking
2
 
   Copyright (C) 1990-1997, 98, 99 Free Software Foundation, Inc.
3
 
 
4
 
   This program is free software; you can redistribute it and/or modify
5
 
   it under the terms of the GNU General Public License as published by
6
 
   the Free Software Foundation; either version 2, or (at your option)
7
 
   any later version.
8
 
 
9
 
   This program is distributed in the hope that it will be useful,
10
 
   but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
 
   GNU General Public License for more details.
13
 
 
14
 
   You should have received a copy of the GNU General Public License
15
 
   along with this program; if not, write to the Free Software Foundation,
16
 
   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
17
 
 
18
 
#if HAVE_CONFIG_H
19
 
# include <config.h>
20
 
#endif
21
 
 
22
 
#include <sys/types.h>
23
 
 
24
 
#if STDC_HEADERS
25
 
# include <stdlib.h>
26
 
#else
27
 
void *calloc ();
28
 
void *malloc ();
29
 
void *realloc ();
30
 
void free ();
31
 
#endif
32
 
 
33
 
#if ENABLE_NLS
34
 
# include <libintl.h>
35
 
# define _(Text) gettext (Text)
36
 
#else
37
 
# define textdomain(Domain)
38
 
# define _(Text) Text
39
 
#endif
40
 
#define N_(Text) Text
41
 
 
42
 
#include "error.h"
43
 
#include "xalloc.h"
44
 
 
45
 
#ifndef EXIT_FAILURE
46
 
# define EXIT_FAILURE 1
47
 
#endif
48
 
 
49
 
#ifndef HAVE_DONE_WORKING_MALLOC_CHECK
50
 
you must run the autoconf test for a properly working malloc -- see malloc.m4
51
 
#endif
52
 
 
53
 
#ifndef HAVE_DONE_WORKING_REALLOC_CHECK
54
 
you must run the autoconf test for a properly working realloc -- see realloc.m4
55
 
#endif
56
 
 
57
 
/* Exit value when the requested amount of memory is not available.
58
 
   The caller may set it to some other value.  */
59
 
int xalloc_exit_failure = EXIT_FAILURE;
60
 
 
61
 
/* If non NULL, call this function when memory is exhausted. */
62
 
void (*xalloc_fail_func) PARAMS ((void)) = 0;
63
 
 
64
 
/* If XALLOC_FAIL_FUNC is NULL, or does return, display this message
65
 
   before exiting when memory is exhausted.  Goes through gettext. */
66
 
char *const xalloc_msg_memory_exhausted = N_("Memory exhausted");
67
 
 
68
 
void
69
 
xalloc_die (void)
70
 
{
71
 
  if (xalloc_fail_func)
72
 
    (*xalloc_fail_func) ();
73
 
  error (xalloc_exit_failure, 0, "%s", _(xalloc_msg_memory_exhausted));
74
 
  /* The `noreturn' cannot be given to error, since it may return if
75
 
     its first argument is 0.  To help compilers understand the
76
 
     xalloc_die does terminate, call exit. */
77
 
  exit (EXIT_FAILURE);
78
 
}
79
 
 
80
 
/* Allocate N bytes of memory dynamically, with error checking.  */
81
 
 
82
 
void *
83
 
xmalloc (size_t n)
84
 
{
85
 
  void *p;
86
 
 
87
 
  p = malloc (n);
88
 
  if (p == 0)
89
 
    xalloc_die ();
90
 
  return p;
91
 
}
92
 
 
93
 
/* Change the size of an allocated block of memory P to N bytes,
94
 
   with error checking.
95
 
   If P is NULL, run xmalloc.  */
96
 
 
97
 
void *
98
 
xrealloc (void *p, size_t n)
99
 
{
100
 
  p = realloc (p, n);
101
 
  if (p == 0)
102
 
    xalloc_die ();
103
 
  return p;
104
 
}
105
 
 
106
 
/* Allocate memory for N elements of S bytes, with error checking.  */
107
 
 
108
 
void *
109
 
xcalloc (size_t n, size_t s)
110
 
{
111
 
  void *p;
112
 
 
113
 
  p = calloc (n, s);
114
 
  if (p == 0)
115
 
    xalloc_die ();
116
 
  return p;
117
 
}