annotate lib/calloc.c @ 17463:203c036eb0c6

bootstrap: support checksum utils without a --status option * build-aux/bootstrap: Only look for sha1sum if updating po files. Add sha1 to the list of supported checksum utils since it's now supported through adjustments below. (update_po_files): Remove the use of --status in a way that will suppress all error messages, but since this is only used to minimize updates, it shouldn't cause an issue. Exit early if there is a problem updating the po file checksums. (find_tool): Remove the check for --version support as this is optional as per commit 86186b17. Don't even check for the presence of the command as if that is needed, it's supported through configuring prerequisites in bootstrap.conf. Prompt that when a tool isn't found, one can define an environment variable to add to the hardcoded search list.
author Pádraig Brady <P@draigBrady.com>
date Thu, 08 Aug 2013 11:08:49 +0100 (2013-08-08)
parents e542fd46ad6f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5464
f7677662318c (rpl_calloc): Defend against buggy calloc implementations
Paul Eggert <eggert@cs.ucla.edu>
parents: 5081
diff changeset
1 /* calloc() function that is glibc compatible.
9190
a4f83e0e605c New module 'calloc-posix'.
Bruno Haible <bruno@clisp.org>
parents: 7302
diff changeset
2 This wrapper function is required at least on Tru64 UNIX 5.1 and mingw.
17249
e542fd46ad6f maint: update all copyright year number ranges
Eric Blake <eblake@redhat.com>
parents: 16201
diff changeset
3 Copyright (C) 2004-2007, 2009-2013 Free Software Foundation, Inc.
5081
af4fd5060a09 * modules/calloc: New file.
Jim Meyering <jim@meyering.net>
parents:
diff changeset
4
9309
bbbbbf4cd1c5 Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents: 9203
diff changeset
5 This program is free software: you can redistribute it and/or modify
5081
af4fd5060a09 * modules/calloc: New file.
Jim Meyering <jim@meyering.net>
parents:
diff changeset
6 it under the terms of the GNU General Public License as published by
9309
bbbbbf4cd1c5 Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents: 9203
diff changeset
7 the Free Software Foundation; either version 3 of the License, or
bbbbbf4cd1c5 Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents: 9203
diff changeset
8 (at your option) any later version.
5081
af4fd5060a09 * modules/calloc: New file.
Jim Meyering <jim@meyering.net>
parents:
diff changeset
9
af4fd5060a09 * modules/calloc: New file.
Jim Meyering <jim@meyering.net>
parents:
diff changeset
10 This program is distributed in the hope that it will be useful,
af4fd5060a09 * modules/calloc: New file.
Jim Meyering <jim@meyering.net>
parents:
diff changeset
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
af4fd5060a09 * modules/calloc: New file.
Jim Meyering <jim@meyering.net>
parents:
diff changeset
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
af4fd5060a09 * modules/calloc: New file.
Jim Meyering <jim@meyering.net>
parents:
diff changeset
13 GNU General Public License for more details.
af4fd5060a09 * modules/calloc: New file.
Jim Meyering <jim@meyering.net>
parents:
diff changeset
14
af4fd5060a09 * modules/calloc: New file.
Jim Meyering <jim@meyering.net>
parents:
diff changeset
15 You should have received a copy of the GNU General Public License
9309
bbbbbf4cd1c5 Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents: 9203
diff changeset
16 along with this program. If not, see <http://www.gnu.org/licenses/>. */
5081
af4fd5060a09 * modules/calloc: New file.
Jim Meyering <jim@meyering.net>
parents:
diff changeset
17
9190
a4f83e0e605c New module 'calloc-posix'.
Bruno Haible <bruno@clisp.org>
parents: 7302
diff changeset
18 /* written by Jim Meyering and Bruno Haible */
5081
af4fd5060a09 * modules/calloc: New file.
Jim Meyering <jim@meyering.net>
parents:
diff changeset
19
7302
8a1a9361108c * _fpending.c: Include <config.h> unconditionally, since we no
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
20 #include <config.h>
9190
a4f83e0e605c New module 'calloc-posix'.
Bruno Haible <bruno@clisp.org>
parents: 7302
diff changeset
21 /* Only the AC_FUNC_CALLOC macro defines 'calloc' already in config.h. */
a4f83e0e605c New module 'calloc-posix'.
Bruno Haible <bruno@clisp.org>
parents: 7302
diff changeset
22 #ifdef calloc
13606
81875db181b0 Make the module 'calloc-gnu' work again on AIX and OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
23 # define NEED_CALLOC_GNU 1
9190
a4f83e0e605c New module 'calloc-posix'.
Bruno Haible <bruno@clisp.org>
parents: 7302
diff changeset
24 # undef calloc
13606
81875db181b0 Make the module 'calloc-gnu' work again on AIX and OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
25 /* Whereas the gnulib module 'calloc-gnu' defines HAVE_CALLOC_GNU. */
81875db181b0 Make the module 'calloc-gnu' work again on AIX and OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
26 #elif GNULIB_CALLOC_GNU && !HAVE_CALLOC_GNU
81875db181b0 Make the module 'calloc-gnu' work again on AIX and OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
27 # define NEED_CALLOC_GNU 1
9190
a4f83e0e605c New module 'calloc-posix'.
Bruno Haible <bruno@clisp.org>
parents: 7302
diff changeset
28 #endif
5081
af4fd5060a09 * modules/calloc: New file.
Jim Meyering <jim@meyering.net>
parents:
diff changeset
29
9190
a4f83e0e605c New module 'calloc-posix'.
Bruno Haible <bruno@clisp.org>
parents: 7302
diff changeset
30 /* Specification. */
5081
af4fd5060a09 * modules/calloc: New file.
Jim Meyering <jim@meyering.net>
parents:
diff changeset
31 #include <stdlib.h>
af4fd5060a09 * modules/calloc: New file.
Jim Meyering <jim@meyering.net>
parents:
diff changeset
32
9190
a4f83e0e605c New module 'calloc-posix'.
Bruno Haible <bruno@clisp.org>
parents: 7302
diff changeset
33 #include <errno.h>
a4f83e0e605c New module 'calloc-posix'.
Bruno Haible <bruno@clisp.org>
parents: 7302
diff changeset
34
9203
b62ad47fce4a Oops, avoid an infinite recursion.
Bruno Haible <bruno@clisp.org>
parents: 9190
diff changeset
35 /* Call the system's calloc below. */
b62ad47fce4a Oops, avoid an infinite recursion.
Bruno Haible <bruno@clisp.org>
parents: 9190
diff changeset
36 #undef calloc
b62ad47fce4a Oops, avoid an infinite recursion.
Bruno Haible <bruno@clisp.org>
parents: 9190
diff changeset
37
5081
af4fd5060a09 * modules/calloc: New file.
Jim Meyering <jim@meyering.net>
parents:
diff changeset
38 /* Allocate and zero-fill an NxS-byte block of memory from the heap.
af4fd5060a09 * modules/calloc: New file.
Jim Meyering <jim@meyering.net>
parents:
diff changeset
39 If N or S is zero, allocate and zero-fill a 1-byte block. */
af4fd5060a09 * modules/calloc: New file.
Jim Meyering <jim@meyering.net>
parents:
diff changeset
40
af4fd5060a09 * modules/calloc: New file.
Jim Meyering <jim@meyering.net>
parents:
diff changeset
41 void *
af4fd5060a09 * modules/calloc: New file.
Jim Meyering <jim@meyering.net>
parents:
diff changeset
42 rpl_calloc (size_t n, size_t s)
af4fd5060a09 * modules/calloc: New file.
Jim Meyering <jim@meyering.net>
parents:
diff changeset
43 {
9190
a4f83e0e605c New module 'calloc-posix'.
Bruno Haible <bruno@clisp.org>
parents: 7302
diff changeset
44 void *result;
5464
f7677662318c (rpl_calloc): Defend against buggy calloc implementations
Paul Eggert <eggert@cs.ucla.edu>
parents: 5081
diff changeset
45
13606
81875db181b0 Make the module 'calloc-gnu' work again on AIX and OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
46 #if NEED_CALLOC_GNU
9190
a4f83e0e605c New module 'calloc-posix'.
Bruno Haible <bruno@clisp.org>
parents: 7302
diff changeset
47 if (n == 0 || s == 0)
a4f83e0e605c New module 'calloc-posix'.
Bruno Haible <bruno@clisp.org>
parents: 7302
diff changeset
48 {
a4f83e0e605c New module 'calloc-posix'.
Bruno Haible <bruno@clisp.org>
parents: 7302
diff changeset
49 n = 1;
a4f83e0e605c New module 'calloc-posix'.
Bruno Haible <bruno@clisp.org>
parents: 7302
diff changeset
50 s = 1;
a4f83e0e605c New module 'calloc-posix'.
Bruno Haible <bruno@clisp.org>
parents: 7302
diff changeset
51 }
a4f83e0e605c New module 'calloc-posix'.
Bruno Haible <bruno@clisp.org>
parents: 7302
diff changeset
52 else
a4f83e0e605c New module 'calloc-posix'.
Bruno Haible <bruno@clisp.org>
parents: 7302
diff changeset
53 {
a4f83e0e605c New module 'calloc-posix'.
Bruno Haible <bruno@clisp.org>
parents: 7302
diff changeset
54 /* Defend against buggy calloc implementations that mishandle
12421
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
55 size_t overflow. */
9190
a4f83e0e605c New module 'calloc-posix'.
Bruno Haible <bruno@clisp.org>
parents: 7302
diff changeset
56 size_t bytes = n * s;
a4f83e0e605c New module 'calloc-posix'.
Bruno Haible <bruno@clisp.org>
parents: 7302
diff changeset
57 if (bytes / s != n)
12421
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
58 {
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
59 errno = ENOMEM;
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
60 return NULL;
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
61 }
9190
a4f83e0e605c New module 'calloc-posix'.
Bruno Haible <bruno@clisp.org>
parents: 7302
diff changeset
62 }
a4f83e0e605c New module 'calloc-posix'.
Bruno Haible <bruno@clisp.org>
parents: 7302
diff changeset
63 #endif
5464
f7677662318c (rpl_calloc): Defend against buggy calloc implementations
Paul Eggert <eggert@cs.ucla.edu>
parents: 5081
diff changeset
64
9190
a4f83e0e605c New module 'calloc-posix'.
Bruno Haible <bruno@clisp.org>
parents: 7302
diff changeset
65 result = calloc (n, s);
a4f83e0e605c New module 'calloc-posix'.
Bruno Haible <bruno@clisp.org>
parents: 7302
diff changeset
66
a4f83e0e605c New module 'calloc-posix'.
Bruno Haible <bruno@clisp.org>
parents: 7302
diff changeset
67 #if !HAVE_CALLOC_POSIX
a4f83e0e605c New module 'calloc-posix'.
Bruno Haible <bruno@clisp.org>
parents: 7302
diff changeset
68 if (result == NULL)
a4f83e0e605c New module 'calloc-posix'.
Bruno Haible <bruno@clisp.org>
parents: 7302
diff changeset
69 errno = ENOMEM;
a4f83e0e605c New module 'calloc-posix'.
Bruno Haible <bruno@clisp.org>
parents: 7302
diff changeset
70 #endif
a4f83e0e605c New module 'calloc-posix'.
Bruno Haible <bruno@clisp.org>
parents: 7302
diff changeset
71
a4f83e0e605c New module 'calloc-posix'.
Bruno Haible <bruno@clisp.org>
parents: 7302
diff changeset
72 return result;
5081
af4fd5060a09 * modules/calloc: New file.
Jim Meyering <jim@meyering.net>
parents:
diff changeset
73 }