summaryrefslogtreecommitdiffstats
path: root/gnulib-local
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2007-03-01 01:04:31 +0000
committerBruno Haible <bruno@clisp.org>2009-06-23 12:14:42 +0200
commite0dcf14564f2613e19cc7c3631c28a6f0009527e (patch)
treefd0b488c3962e9c80aefab68226eaf298cf2943e /gnulib-local
parent64fcc1c8060751b335e959b5c09a32f889d307de (diff)
downloadexternal_gettext-e0dcf14564f2613e19cc7c3631c28a6f0009527e.zip
external_gettext-e0dcf14564f2613e19cc7c3631c28a6f0009527e.tar.gz
external_gettext-e0dcf14564f2613e19cc7c3631c28a6f0009527e.tar.bz2
Move module xreadlink to gnulib.
Diffstat (limited to 'gnulib-local')
-rw-r--r--gnulib-local/ChangeLog9
-rw-r--r--gnulib-local/Makefile.am4
-rw-r--r--gnulib-local/lib/xreadlink.c133
-rw-r--r--gnulib-local/lib/xreadlink.h21
-rw-r--r--gnulib-local/m4/xreadlink.m412
-rw-r--r--gnulib-local/modules/xreadlink28
6 files changed, 9 insertions, 198 deletions
diff --git a/gnulib-local/ChangeLog b/gnulib-local/ChangeLog
index f989d3d..9fd1bd1 100644
--- a/gnulib-local/ChangeLog
+++ b/gnulib-local/ChangeLog
@@ -1,3 +1,12 @@
+2007-02-28 Bruno Haible <bruno@clisp.org>
+
+ Move module xreadlink to gnulib.
+ * modules/xreadlink: Remove file.
+ * lib/xreadlink.h: Remove file.
+ * lib/xreadlink.c: Remove file.
+ * m4/xreadlink.m4: Remove file.
+ * Makefile.am (EXTRA_DIST): Remove these files.
+
2007-02-19 Bruno Haible <bruno@clisp.org>
* lib/closeout.c: Include <stdlib.h> instead of exit.h.
diff --git a/gnulib-local/Makefile.am b/gnulib-local/Makefile.am
index 1aec055..0180c0d 100644
--- a/gnulib-local/Makefile.am
+++ b/gnulib-local/Makefile.am
@@ -250,8 +250,6 @@ lib/xerror.h \
lib/xgetcwd.c \
lib/xgetcwd.h \
lib/xmalloc.c \
-lib/xreadlink.c \
-lib/xreadlink.h \
lib/xstrdup.c \
m4/alloca.m4 \
m4/backupfile.m4 \
@@ -273,7 +271,6 @@ m4/terminfo.m4 \
m4/term-ostream.m4 \
m4/unionwait.m4 \
m4/vasprintf.m4 \
-m4/xreadlink.m4 \
modules/backupfile \
modules/basename \
modules/closeout \
@@ -320,7 +317,6 @@ modules/xalloc \
modules/xalloc-die \
modules/xerror \
modules/xgetcwd \
-modules/xreadlink \
tests/test-moo-aroot.oo.c \
tests/test-moo-aroot.oo.h \
tests/test-moo-assign.c \
diff --git a/gnulib-local/lib/xreadlink.c b/gnulib-local/lib/xreadlink.c
deleted file mode 100644
index 51714cd..0000000
--- a/gnulib-local/lib/xreadlink.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/* xreadlink.c -- readlink wrapper to return the link name in malloc'd storage
-
- Copyright (C) 2001, 2003-2007 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING.
- If not, write to the Free Software Foundation,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
-
-/* Written by Jim Meyering <jim@meyering.net>
- and Bruno Haible <bruno@clisp.org>. */
-
-#include <config.h>
-
-/* Specification. */
-#include "xreadlink.h"
-
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <limits.h>
-#include <sys/types.h>
-#include <stdlib.h>
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#ifndef SIZE_MAX
-# define SIZE_MAX ((size_t) -1)
-#endif
-#ifndef SSIZE_MAX
-# define SSIZE_MAX ((ssize_t) (SIZE_MAX / 2))
-#endif
-
-#ifdef NO_XMALLOC
-# define xmalloc malloc
-#else
-# include "xalloc.h"
-#endif
-
-/* Call readlink to get the symbolic link value of FILENAME.
- Return a pointer to that NUL-terminated string in malloc'd storage.
- If readlink fails, return NULL (caller may use errno to diagnose).
- If realloc fails, or if the link value is longer than SIZE_MAX :-),
- give a diagnostic and exit. */
-
-char *
-xreadlink (char const *filename)
-{
- /* The initial buffer size for the link value. A power of 2
- detects arithmetic overflow earlier, but is not required. */
-#define INITIAL_BUF_SIZE 1024
-
- /* Allocate the initial buffer on the stack. This way, in the common
- case of a symlink of small size, we get away with a single small malloc()
- instead of a big malloc() followed by a shrinking realloc(). */
- char initial_buf[INITIAL_BUF_SIZE];
-
- char *buffer = initial_buf;
- size_t buf_size = sizeof (initial_buf);
-
- while (1)
- {
- /* Attempt to read the link into the current buffer. */
- ssize_t link_length = readlink (filename, buffer, buf_size);
-
- /* On AIX 5L v5.3 and HP-UX 11i v2 04/09, readlink returns -1
- with errno == ERANGE if the buffer is too small. */
- if (link_length < 0 && errno != ERANGE)
- {
- if (buffer != initial_buf)
- {
- int saved_errno = errno;
- free (buffer);
- errno = saved_errno;
- }
- return NULL;
- }
-
- if ((size_t) link_length < buf_size)
- {
- buffer[link_length++] = '\0';
-
- /* Return it in a chunk of memory as small as possible. */
- if (buffer == initial_buf)
- {
- buffer = (char *) xmalloc (link_length);
-#ifdef NO_XMALLOC
- if (buffer == NULL)
- return NULL;
-#endif
- memcpy (buffer, initial_buf, link_length);
- }
- else
- {
- /* Shrink buffer before returning it. */
- if ((size_t) link_length < buf_size)
- {
- char *smaller_buffer = (char *) realloc (buffer, link_length);
-
- if (smaller_buffer != NULL)
- buffer = smaller_buffer;
- }
- }
- return buffer;
- }
-
- if (buffer != initial_buf)
- free (buffer);
- buf_size *= 2;
- if (SSIZE_MAX < buf_size || (SIZE_MAX / 2 < SSIZE_MAX && buf_size == 0))
-#ifdef NO_XMALLOC
- return NULL;
-#else
- xalloc_die ();
-#endif
- buffer = (char *) xmalloc (buf_size);
-#ifdef NO_XMALLOC
- if (buffer == NULL)
- return NULL;
-#endif
- }
-}
diff --git a/gnulib-local/lib/xreadlink.h b/gnulib-local/lib/xreadlink.h
deleted file mode 100644
index 1a32437..0000000
--- a/gnulib-local/lib/xreadlink.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Reading symbolic links without size limitation.
- Copyright (C) 2001, 2003 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software Foundation,
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
-
-/* Call readlink to get the symbolic link value of FILENAME.
- Return a pointer to that NUL-terminated string in malloc'd storage.
- If readlink fails, return NULL and set errno. */
-extern char *xreadlink (char const *filename);
diff --git a/gnulib-local/m4/xreadlink.m4 b/gnulib-local/m4/xreadlink.m4
deleted file mode 100644
index f4b25bc..0000000
--- a/gnulib-local/m4/xreadlink.m4
+++ /dev/null
@@ -1,12 +0,0 @@
-# xreadlink.m4 serial 5
-dnl Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-AC_DEFUN([gl_XREADLINK],
-[
- dnl Prerequisites of lib/xreadlink.c.
- AC_REQUIRE([gt_TYPE_SSIZE_T])
- AC_CHECK_HEADERS_ONCE(unistd.h)
-])
diff --git a/gnulib-local/modules/xreadlink b/gnulib-local/modules/xreadlink
deleted file mode 100644
index a240cc1..0000000
--- a/gnulib-local/modules/xreadlink
+++ /dev/null
@@ -1,28 +0,0 @@
-Description:
-Reading symbolic links without size limitation.
-
-Files:
-lib/xreadlink.h
-lib/xreadlink.c
-m4/xreadlink.m4
-
-Depends-on:
-readlink
-ssize_t
-xalloc
-
-configure.ac:
-gl_XREADLINK
-
-Makefile.am:
-lib_SOURCES += xreadlink.h xreadlink.c
-
-Include:
-"xreadlink.h"
-
-License:
-GPL
-
-Maintainer:
-Bruno Haible
-