The function _NSGetExecutablePath was declared as int _NSGetExecutablePath (char *buf, unsigned long *bufsize); in MacOS X 10.3, but is declared as int _NSGetExecutablePath (char *buf, uint32_t *bufsize); in MacOS X 10.4 and newer. This leads to a warning in progreloc.c, indicating a bug when compiled in 64-bit mode. (MacOS X 10.3 did not support 64-bit mode.)
This fixes it. 2009-01-17 Bruno Haible <br...@clisp.org> Update use of _NSGetExecutablePath after API change in MacOS X 10.4. * lib/progreloc.c (find_executable): Fix type of pointer passed to _NSGetExecutablePath. --- lib/progreloc.c.orig 2009-01-17 09:18:41.000000000 +0100 +++ lib/progreloc.c 2009-01-17 09:11:50.000000000 +0100 @@ -1,5 +1,5 @@ /* Provide relocatable programs. - Copyright (C) 2003-2008 Free Software Foundation, Inc. + Copyright (C) 2003-2009 Free Software Foundation, Inc. Written by Bruno Haible <br...@clisp.org>, 2003. This program is free software: you can redistribute it and/or modify @@ -196,10 +196,10 @@ #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);