Mercurial > hg > octave-kai > gnulib-hg
comparison lib/allocator.h @ 14522:39a9dbe4bfe3
areadlink, areadlinkat: rewrite in terms of careadlinkat
* lib/areadlink.c, lib/areadlinkat.c: Include careadlinkat.h
instead of errno.h, limits.h, stdint.h, stdlib.h, string.h, unistd.h.
(SSIZE_MAX, INITIAL_BUF_SIZE): Remove.
(malloc, realloc): Remove #undefs.
(areadlink, areadlinkat): Rewrite in terms of careadlinkat.
* modules/areadlink (Depends-on): Add careadlinkat. Remove
readlink, ssize_t, stdint, unistd.
* modules/areadlinkat (Depends-on): Add careadlinkat. Remove
areadlink, stdint.
careadlinkat: new module
* lib/allocator.h, lib/careadlinkat.h, lib/careadlinkat.c:
* modules/careadlinkat: New files, written by me with
a review and feedback from Ben Pfaff in
<http://lists.gnu.org/archive/html/bug-gnulib/2011-04/msg00008.html>.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Tue, 05 Apr 2011 09:52:32 -0700 |
parents | |
children | 10946c7debf8 |
comparison
equal
deleted
inserted
replaced
14521:bcaffcfa06a0 | 14522:39a9dbe4bfe3 |
---|---|
1 /* Memory allocators such as malloc+free. | |
2 | |
3 Copyright (C) 2011 Free Software Foundation, Inc. | |
4 | |
5 This program is free software: you can redistribute it and/or modify | |
6 it under the terms of the GNU General Public License as published by | |
7 the Free Software Foundation; either version 3 of the License, or | |
8 (at your option) any later version. | |
9 | |
10 This program is distributed in the hope that it will be useful, | |
11 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 GNU General Public License for more details. | |
14 | |
15 You should have received a copy of the GNU General Public License | |
16 along with this program. If not, see <http://www.gnu.org/licenses/>. */ | |
17 | |
18 /* Written by Paul Eggert. */ | |
19 | |
20 #ifndef _GL_ALLOCATOR_H | |
21 | |
22 #include <stddef.h> | |
23 | |
24 /* An object describing a memory allocator family. */ | |
25 | |
26 struct allocator | |
27 { | |
28 /* Do not use GCC attributes such as __attribute__ ((malloc)) with | |
29 the function types pointed at by these members, because these | |
30 attributes do not work with pointers to functions. See | |
31 <http://lists.gnu.org/archive/html/bug-gnulib/2011-04/msg00007.html>. */ | |
32 | |
33 /* Call MALLOC to allocate memory, like 'malloc'. On failure MALLOC | |
34 should return NULL, though not necessarily set errno. When given | |
35 a zero size it may return NULL even if successful. */ | |
36 void *(*malloc) (size_t); | |
37 | |
38 /* If nonnull, call REALLOC to reallocate memory, like 'realloc'. | |
39 On failure REALLOC should return NULL, though not necessarily set | |
40 errno. When given a zero size it may return NULL even if | |
41 successful. */ | |
42 void *(*realloc) (void *, size_t); | |
43 | |
44 /* Call FREE to free memory, like 'free'. */ | |
45 void (*free) (void *); | |
46 | |
47 /* If nonnull, call DIE if MALLOC or REALLOC fails. DIE should not | |
48 return. DIE can be used by code that detects memory overflow | |
49 while calculating sizes to be passed to MALLOC or REALLOC. */ | |
50 void (*die) (void); | |
51 }; | |
52 | |
53 #endif |