allocator: New module.
authorPaul Eggert <eggert@cs.ucla.edu>
Fri, 8 Apr 2011 20:22:51 +0000 (13:22 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Fri, 8 Apr 2011 20:31:45 +0000 (13:31 -0700)
* modules/allocator, lib/allocator.c: New files.
* lib/allocator.h (stdlib_allocator): New decl.
* lib/careadlinkat.c (_GL_USE_STDLIB_ALLOC, standard_allocator):
Remove.  Do not include <stdlib.h>.
(careadlinkat): Use stdlib_allocator instead of rolling our own.
* modules/careadlinkat (Files): Remove lib/allocator.h.
(Depends-on): Add allocator.

ChangeLog
lib/allocator.c [new file with mode: 0644]
lib/allocator.h
lib/careadlinkat.c
modules/allocator [new file with mode: 0644]
modules/careadlinkat

index 619bf67..121c22a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
 2011-04-08  Paul Eggert  <eggert@cs.ucla.edu>
 
+       allocator: New module.
+       * modules/allocator, lib/allocator.c: New files.
+       * lib/allocator.h (stdlib_allocator): New decl.
+       * lib/careadlinkat.c (_GL_USE_STDLIB_ALLOC, standard_allocator):
+       Remove.  Do not include <stdlib.h>.
+       (careadlinkat): Use stdlib_allocator instead of rolling our own.
+       * modules/careadlinkat (Files): Remove lib/allocator.h.
+       (Depends-on): Add allocator.
+
        stdlib: let modules use system malloc, realloc
        * lib/stdlib.in.h (malloc, realloc): Don't #define or add warnings
        if !_GL_USE_STDLIB_ALLOC.
diff --git a/lib/allocator.c b/lib/allocator.c
new file mode 100644 (file)
index 0000000..2c1a3da
--- /dev/null
@@ -0,0 +1,5 @@
+#define _GL_USE_STDLIB_ALLOC 1
+#include <config.h>
+#include "allocator.h"
+#include <stdlib.h>
+struct allocator const stdlib_allocator = { malloc, realloc, free, NULL };
index e30732b..a89ba32 100644 (file)
@@ -50,4 +50,7 @@ struct allocator
   void (*die) (void);
 };
 
+/* An allocator using the stdlib functions and a null DIE function.  */
+extern struct allocator const stdlib_allocator;
+
 #endif
index 5f0d43c..7a7806d 100644 (file)
@@ -18,7 +18,6 @@
 
 /* Written by Paul Eggert, Bruno Haible, and Jim Meyering.  */
 
-#define _GL_USE_STDLIB_ALLOC 1
 #include <config.h>
 
 #include "careadlinkat.h"
@@ -27,7 +26,6 @@
 
 #include <errno.h>
 #include <limits.h>
-#include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
 
@@ -53,11 +51,6 @@ careadlinkatcwd (int fd, char const *filename, char *buffer,
 }
 #endif
 
-/* A standard allocator.  For now, only careadlinkat needs this, but
-   perhaps it should be moved to the allocator module.  */
-static struct allocator const standard_allocator =
-  { malloc, realloc, free, NULL };
-
 /* Assuming the current directory is FD, get the symbolic link value
    of FILENAME as a null-terminated string and put it into a buffer.
    If FD is AT_FDCWD, FILENAME is interpreted relative to the current
@@ -90,7 +83,7 @@ careadlinkat (int fd, char const *filename,
   char stack_buf[1024];
 
   if (! alloc)
-    alloc = &standard_allocator;
+    alloc = &stdlib_allocator;
 
   if (! buffer_size)
     {
diff --git a/modules/allocator b/modules/allocator
new file mode 100644 (file)
index 0000000..6ff5552
--- /dev/null
@@ -0,0 +1,22 @@
+Description:
+Storage allocators.
+
+Files:
+lib/allocator.h
+lib/allocator.c
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+lib_SOURCES += allocator.c
+
+Include:
+"allocator.h"
+
+License:
+LGPLv2+
+
+Maintainer:
+all
index 670fde0..b4bc4a4 100644 (file)
@@ -4,9 +4,9 @@ Read symbolic links into a buffer without size limitation, relative to fd.
 Files:
 lib/careadlinkat.c
 lib/careadlinkat.h
-lib/allocator.h
 
 Depends-on:
+allocator
 readlink
 ssize_t
 unistd