From: Bruno Haible Date: Thu, 1 Mar 2007 01:04:31 +0000 (+0000) Subject: Move module xreadlink to gnulib. X-Git-Tag: v0.17~460 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e0dcf14564f2613e19cc7c3631c28a6f0009527e;p=thirdparty%2Fgettext.git Move module xreadlink to gnulib. --- diff --git a/gnulib-local/ChangeLog b/gnulib-local/ChangeLog index f989d3dbc..9fd1bd1b4 100644 --- a/gnulib-local/ChangeLog +++ b/gnulib-local/ChangeLog @@ -1,3 +1,12 @@ +2007-02-28 Bruno Haible + + 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 * lib/closeout.c: Include instead of exit.h. diff --git a/gnulib-local/Makefile.am b/gnulib-local/Makefile.am index 1aec05504..0180c0d17 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 51714cd57..000000000 --- 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 - and Bruno Haible . */ - -#include - -/* Specification. */ -#include "xreadlink.h" - -#include -#include -#include -#include -#include -#include -#if HAVE_UNISTD_H -# include -#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 1a32437ec..000000000 --- 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 f4b25bcf0..000000000 --- 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 a240cc1b6..000000000 --- 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 -