diff options
| author | cvs2svn <cvs2svn@FreeBSD.org> | 2006-06-08 13:10:52 +0000 | 
|---|---|---|
| committer | cvs2svn <cvs2svn@FreeBSD.org> | 2006-06-08 13:10:52 +0000 | 
| commit | 8911861820133a176d34353d257262dd1e764b1d (patch) | |
| tree | 4f7e9c4875f6299d738033dee893ab739d16c3dc /contrib/binutils/libiberty/lrealpath.c | |
| parent | 2ce641c5c4a4abcf1b9d570b63ec974620adb2d3 (diff) | |
Diffstat (limited to 'contrib/binutils/libiberty/lrealpath.c')
| -rw-r--r-- | contrib/binutils/libiberty/lrealpath.c | 128 | 
1 files changed, 0 insertions, 128 deletions
| diff --git a/contrib/binutils/libiberty/lrealpath.c b/contrib/binutils/libiberty/lrealpath.c deleted file mode 100644 index b001b38ef6632..0000000000000 --- a/contrib/binutils/libiberty/lrealpath.c +++ /dev/null @@ -1,128 +0,0 @@ -/* Libiberty realpath.  Like realpath, but more consistent behavior. -   Based on gdb_realpath from GDB. - -   Copyright 2003 Free Software Foundation, Inc. - -   This file is part of the libiberty library. - -   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 of the License, 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., 59 Temple Place - Suite 330, -   Boston, MA 02111-1307, USA.  */ - -/* - -@deftypefn Replacement {const char*} lrealpath (const char *@var{name}) - -Given a pointer to a string containing a pathname, returns a canonical -version of the filename.  Symlinks will be resolved, and ``.'' and ``..'' -components will be simplified.  The returned value will be allocated using -@code{malloc}, or @code{NULL} will be returned on a memory allocation error. - -@end deftypefn - -*/ - -#include "config.h" -#include "ansidecl.h" -#include "libiberty.h" - -#ifdef HAVE_LIMITS_H -#include <limits.h> -#endif -#ifdef HAVE_STDLIB_H -#include <stdlib.h> -#endif -#ifdef HAVE_UNISTD_H -#include <unistd.h> -#endif -#ifdef HAVE_STRING_H -#include <string.h> -#endif - -/* On GNU libc systems the declaration is only visible with _GNU_SOURCE.  */ -#if defined(HAVE_CANONICALIZE_FILE_NAME) \ -    && defined(NEED_DECLARATION_CANONICALIZE_FILE_NAME) -extern char *canonicalize_file_name (const char *); -#endif - -#if defined(HAVE_REALPATH) -# if defined (PATH_MAX) -#  define REALPATH_LIMIT PATH_MAX -# else -#  if defined (MAXPATHLEN) -#   define REALPATH_LIMIT MAXPATHLEN -#  endif -# endif -#endif - -char * -lrealpath (filename) -     const char *filename; -{ -  /* Method 1: The system has a compile time upper bound on a filename -     path.  Use that and realpath() to canonicalize the name.  This is -     the most common case.  Note that, if there isn't a compile time -     upper bound, you want to avoid realpath() at all costs.  */ -#if defined(REALPATH_LIMIT) -  { -    char buf[REALPATH_LIMIT]; -    const char *rp = realpath (filename, buf); -    if (rp == NULL) -      rp = filename; -    return strdup (rp); -  } -#endif /* REALPATH_LIMIT */ - -  /* Method 2: The host system (i.e., GNU) has the function -     canonicalize_file_name() which malloc's a chunk of memory and -     returns that, use that.  */ -#if defined(HAVE_CANONICALIZE_FILE_NAME) -  { -    char *rp = canonicalize_file_name (filename); -    if (rp == NULL) -      return strdup (filename); -    else -      return rp; -  } -#endif - -  /* Method 3: Now we're getting desperate!  The system doesn't have a -     compile time buffer size and no alternative function.  Query the -     OS, using pathconf(), for the buffer limit.  Care is needed -     though, some systems do not limit PATH_MAX (return -1 for -     pathconf()) making it impossible to pass a correctly sized buffer -     to realpath() (it could always overflow).  On those systems, we -     skip this.  */ -#if defined (HAVE_REALPATH) && defined (HAVE_UNISTD_H) -  { -    /* Find out the max path size.  */ -    long path_max = pathconf ("/", _PC_PATH_MAX); -    if (path_max > 0) -      { -	/* PATH_MAX is bounded.  */ -	char *buf, *rp, *ret; -	buf = malloc (path_max); -	if (buf == NULL) -	  return NULL; -	rp = realpath (filename, buf); -	ret = strdup (rp ? rp : filename); -	free (buf); -	return ret; -      } -  } -#endif - -  /* This system is a lost cause, just duplicate the filename.  */ -  return strdup (filename); -} | 
