diff options
author | Bruno Haible <bruno@clisp.org> | 2007-03-01 01:04:31 +0000 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2009-06-23 12:14:42 +0200 |
commit | e0dcf14564f2613e19cc7c3631c28a6f0009527e (patch) | |
tree | fd0b488c3962e9c80aefab68226eaf298cf2943e /gnulib-local | |
parent | 64fcc1c8060751b335e959b5c09a32f889d307de (diff) | |
download | external_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/ChangeLog | 9 | ||||
-rw-r--r-- | gnulib-local/Makefile.am | 4 | ||||
-rw-r--r-- | gnulib-local/lib/xreadlink.c | 133 | ||||
-rw-r--r-- | gnulib-local/lib/xreadlink.h | 21 | ||||
-rw-r--r-- | gnulib-local/m4/xreadlink.m4 | 12 | ||||
-rw-r--r-- | gnulib-local/modules/xreadlink | 28 |
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 - |