X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fprogreloc.c;h=a79ef7a2c9f2ff6fab449436011d5b0093b9536d;hb=31dbe6deb4fe2dbafce6c5243cdb645618417efc;hp=cb97959992d36d9f4d5ca5eb737275b0671b17b9;hpb=854ebf64dc7dae95a43a4e139e075156d2add805;p=gnulib.git diff --git a/lib/progreloc.c b/lib/progreloc.c index cb9795999..a79ef7a2c 100644 --- a/lib/progreloc.c +++ b/lib/progreloc.c @@ -1,11 +1,11 @@ /* Provide relocatable programs. - Copyright (C) 2003-2006 Free Software Foundation, Inc. + Copyright (C) 2003-2009 Free Software Foundation, Inc. Written by Bruno Haible , 2003. - This program is free software; you can redistribute it and/or modify + 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. + the Free Software Foundation; either version 3 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 @@ -13,8 +13,7 @@ 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. */ + along with this program. If not, see . */ #include @@ -27,9 +26,7 @@ #include #include #include -#if HAVE_UNISTD_H -# include -#endif +#include #include /* Get declaration of _NSGetExecutablePath on MacOS X 10.2 or newer. */ @@ -46,11 +43,17 @@ # include #endif -#include "xreadlink.h" #include "canonicalize.h" #include "relocatable.h" #ifdef NO_XMALLOC +# include "areadlink.h" +# define xreadlink areadlink +#else +# include "xreadlink.h" +#endif + +#ifdef NO_XMALLOC # define xmalloc malloc # define xstrdup strdup #else @@ -193,10 +196,10 @@ find_executable (const char *argv0) #endif #if HAVE_MACH_O_DYLD_H && HAVE__NSGETEXECUTABLEPATH /* On MacOS X 10.2 or newer, the function - int _NSGetExecutablePath (char *buf, unsigned long *bufsize); + int _NSGetExecutablePath (char *buf, uint32_t *bufsize); can be used to retrieve the executable's full path. */ char location[4096]; - unsigned long length = sizeof (location); + unsigned int length = sizeof (location); if (_NSGetExecutablePath (location, &length) == 0 && location[0] == '/') return canonicalize_file_name (location); @@ -278,7 +281,7 @@ static void prepare_relocate (const char *orig_installprefix, const char *orig_installdir, const char *argv0) { - const char *curr_prefix; + char *curr_prefix; /* Determine the full pathname of the current executable. */ executable_fullname = find_executable (argv0); @@ -287,8 +290,12 @@ prepare_relocate (const char *orig_installprefix, const char *orig_installdir, curr_prefix = compute_curr_prefix (orig_installprefix, orig_installdir, executable_fullname); if (curr_prefix != NULL) - /* Now pass this prefix to all copies of the relocate.c source file. */ - set_relocation_prefix (orig_installprefix, curr_prefix); + { + /* Now pass this prefix to all copies of the relocate.c source file. */ + set_relocation_prefix (orig_installprefix, curr_prefix); + + free (curr_prefix); + } } /* Set program_name, based on argv[0], and original installation prefix and