summaryrefslogtreecommitdiffstats
path: root/gettext-0.18.1.1-reloc.patch
diff options
context:
space:
mode:
Diffstat (limited to 'gettext-0.18.1.1-reloc.patch')
-rw-r--r--gettext-0.18.1.1-reloc.patch1002
1 files changed, 0 insertions, 1002 deletions
diff --git a/gettext-0.18.1.1-reloc.patch b/gettext-0.18.1.1-reloc.patch
deleted file mode 100644
index 86dea96..0000000
--- a/gettext-0.18.1.1-reloc.patch
+++ /dev/null
@@ -1,1002 +0,0 @@
---- origsrc/gettext-0.18.1.1/gettext-runtime/gnulib-lib/progreloc.c 2010-02-16 15:31:28.000000000 -0600
-+++ src/gettext-0.18.1.1/gettext-runtime/gnulib-lib/progreloc.c 2011-10-31 18:40:26.619853680 -0500
-@@ -16,6 +16,7 @@
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-
-+#define _GL_USE_STDLIB_ALLOC 1
- #include <config.h>
-
- /* Specification. */
-@@ -34,11 +35,11 @@
- # include <mach-o/dyld.h>
- #endif
-
--#if defined _WIN32 || defined __WIN32__
-+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
- # define WIN32_NATIVE
- #endif
-
--#if defined WIN32_NATIVE || defined __CYGWIN__
-+#ifdef WIN32_NATIVE
- # define WIN32_LEAN_AND_MEAN
- # include <windows.h>
- #endif
-@@ -59,6 +60,10 @@
- # include "xalloc.h"
- #endif
-
-+#ifndef O_EXEC
-+# define O_EXEC O_RDONLY /* This is often close enough in older systems. */
-+#endif
-+
- /* Declare canonicalize_file_name.
- The <stdlib.h> included above may be the system's one, not the gnulib
- one. */
-@@ -68,8 +73,8 @@ extern char * canonicalize_file_name (co
- ISSLASH(C) tests whether C is a directory separator character.
- IS_PATH_WITH_DIR(P) tests whether P contains a directory specification.
- */
--#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__
-- /* Win32, Cygwin, OS/2, DOS */
-+#if ((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__) || defined __EMX__ || defined __DJGPP__
-+ /* Win32, OS/2, DOS */
- # define ISSLASH(C) ((C) == '/' || (C) == '\\')
- # define HAS_DEVICE(P) \
- ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \
-@@ -89,12 +94,15 @@ extern char * canonicalize_file_name (co
- #undef open
- #undef close
-
-+/* Use the system functions, not the gnulib overrides in this file. */
-+#undef sprintf
-+
- #undef set_program_name
-
-
- #if ENABLE_RELOCATABLE
-
--#ifdef __linux__
-+#if defined __linux__ || defined __CYGWIN__
- /* File descriptor of the executable.
- (Only used to verify that we find the correct executable.) */
- static int executable_fd = -1;
-@@ -104,12 +112,13 @@ static int executable_fd = -1;
- static bool
- maybe_executable (const char *filename)
- {
-- /* Woe32 lacks the access() function, but Cygwin doesn't. */
--#if !(defined WIN32_NATIVE && !defined __CYGWIN__)
-+ /* Woe32 lacks the access() function. */
-+#if !defined WIN32_NATIVE
- if (access (filename, X_OK) < 0)
- return false;
-+#endif
-
--#ifdef __linux__
-+#if defined __linux__ || defined __CYGWIN__
- if (executable_fd >= 0)
- {
- /* If we already have an executable_fd, check that filename points to
-@@ -128,7 +137,6 @@ maybe_executable (const char *filename)
- }
- }
- #endif
--#endif
-
- return true;
- }
-@@ -140,7 +148,12 @@ maybe_executable (const char *filename)
- static char *
- find_executable (const char *argv0)
- {
--#if defined WIN32_NATIVE || defined __CYGWIN__
-+#if defined WIN32_NATIVE
-+ /* Native Win32 only.
-+ On Cygwin, it is better to use the Cygwin provided /proc interface, than
-+ to use native Win32 API and cygwin_conv_to_posix_path, because it supports
-+ longer file names
-+ (see <http://cygwin.com/ml/cygwin/2011-01/msg00410.html>). */
- char location[MAX_PATH];
- int length = GetModuleFileName (NULL, location, sizeof (location));
- if (length < 0)
-@@ -148,32 +161,9 @@ find_executable (const char *argv0)
- if (!IS_PATH_WITH_DIR (location))
- /* Shouldn't happen. */
- return NULL;
-- {
--#if defined __CYGWIN__
-- /* cygwin-1.5.13 (2005-03-01) or newer would also allow a Linux-like
-- implementation: readlink of "/proc/self/exe". But using the
-- result of the Win32 system call is simpler and is consistent with the
-- code in relocatable.c. */
-- /* On Cygwin, we need to convert paths coming from Win32 system calls
-- to the Unix-like slashified notation. */
-- static char location_as_posix_path[2 * MAX_PATH];
-- /* There's no error return defined for cygwin_conv_to_posix_path.
-- See cygwin-api/func-cygwin-conv-to-posix-path.html.
-- Does it overflow the buffer of expected size MAX_PATH or does it
-- truncate the path? I don't know. Let's catch both. */
-- cygwin_conv_to_posix_path (location, location_as_posix_path);
-- location_as_posix_path[MAX_PATH - 1] = '\0';
-- if (strlen (location_as_posix_path) >= MAX_PATH - 1)
-- /* A sign of buffer overflow or path truncation. */
-- return NULL;
-- /* Call canonicalize_file_name, because Cygwin supports symbolic links. */
-- return canonicalize_file_name (location_as_posix_path);
--#else
-- return xstrdup (location);
--#endif
-- }
--#else /* Unix && !Cygwin */
--#ifdef __linux__
-+ return xstrdup (location);
-+#else /* Unix */
-+# ifdef __linux__
- /* The executable is accessible as /proc/<pid>/exe. In newer Linux
- versions, also as /proc/self/exe. Linux >= 2.1 provides a symlink
- to the true pathname; older Linux versions give only device and ino,
-@@ -185,7 +175,7 @@ find_executable (const char *argv0)
- if (link != NULL && link[0] != '[')
- return link;
- if (executable_fd < 0)
-- executable_fd = open ("/proc/self/exe", O_RDONLY, 0);
-+ executable_fd = open ("/proc/self/exe", O_EXEC, 0);
-
- {
- char buf[6+10+5];
-@@ -194,11 +184,24 @@ find_executable (const char *argv0)
- if (link != NULL && link[0] != '[')
- return link;
- if (executable_fd < 0)
-- executable_fd = open (buf, O_RDONLY, 0);
-+ executable_fd = open (buf, O_EXEC, 0);
- }
- }
--#endif
--#if HAVE_MACH_O_DYLD_H && HAVE__NSGETEXECUTABLEPATH
-+# endif
-+# ifdef __CYGWIN__
-+ /* The executable is accessible as /proc/<pid>/exe, at least in
-+ Cygwin >= 1.5. */
-+ {
-+ char *link;
-+
-+ link = xreadlink ("/proc/self/exe");
-+ if (link != NULL)
-+ return link;
-+ if (executable_fd < 0)
-+ executable_fd = open ("/proc/self/exe", O_EXEC, 0);
-+ }
-+# endif
-+# if HAVE_MACH_O_DYLD_H && HAVE__NSGETEXECUTABLEPATH
- /* On MacOS X 10.2 or newer, the function
- int _NSGetExecutablePath (char *buf, uint32_t *bufsize);
- can be used to retrieve the executable's full path. */
-@@ -207,7 +210,7 @@ find_executable (const char *argv0)
- if (_NSGetExecutablePath (location, &length) == 0
- && location[0] == '/')
- return canonicalize_file_name (location);
--#endif
-+# endif
- /* Guess the executable's full path. We assume the executable has been
- called via execlp() or execvp() with properly set up argv[0]. The
- login(1) convention to add a '-' prefix to argv[0] is not supported. */
-@@ -248,10 +251,10 @@ find_executable (const char *argv0)
- /* We have a path item at p, of length p_len.
- Now concatenate the path item and argv0. */
- concat_name = (char *) xmalloc (p_len + strlen (argv0) + 2);
--#ifdef NO_XMALLOC
-+# ifdef NO_XMALLOC
- if (concat_name == NULL)
- return NULL;
--#endif
-+# endif
- if (p_len == 0)
- /* An empty PATH element designates the current directory. */
- strcpy (concat_name, argv0);
---- origsrc/gettext-0.18.1.1/gettext-runtime/gnulib-lib/relocatable.c 2010-02-16 15:31:28.000000000 -0600
-+++ src/gettext-0.18.1.1/gettext-runtime/gnulib-lib/relocatable.c 2011-10-31 18:40:29.867853399 -0500
-@@ -25,6 +23,7 @@
- # define _GNU_SOURCE 1
- #endif
-
-+#define _GL_USE_STDLIB_ALLOC 1
- #include <config.h>
-
- /* Specification. */
-@@ -43,7 +42,7 @@
- # include "xalloc.h"
- #endif
-
--#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__
-+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
- # define WIN32_LEAN_AND_MEAN
- # include <windows.h>
- #endif
-@@ -70,8 +69,8 @@
- ISSLASH(C) tests whether C is a directory separator character.
- IS_PATH_WITH_DIR(P) tests whether P contains a directory specification.
- */
--#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__
-- /* Win32, Cygwin, OS/2, DOS */
-+#if ((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__) || defined __EMX__ || defined __DJGPP__
-+ /* Win32, OS/2, DOS */
- # define ISSLASH(C) ((C) == '/' || (C) == '\\')
- # define HAS_DEVICE(P) \
- ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \
-@@ -86,6 +85,19 @@
- # define FILE_SYSTEM_PREFIX_LEN(P) 0
- #endif
-
-+/* Whether to enable the more costly support for relocatable libraries.
-+ It allows libraries to be have been installed with a different original
-+ prefix than the program. But it is quite costly, especially on Cygwin
-+ platforms, see below. Therefore we enable it by default only on native
-+ Win32 platforms. */
-+#ifndef ENABLE_COSTLY_RELOCATABLE
-+# if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
-+# define ENABLE_COSTLY_RELOCATABLE 1
-+# else
-+# define ENABLE_COSTLY_RELOCATABLE 0
-+# endif
-+#endif
-+
- /* Original installation prefix. */
- static char *orig_prefix;
- static size_t orig_prefix_len;
-@@ -155,7 +167,7 @@ set_relocation_prefix (const char *orig_
- #endif
- }
-
--#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR)
-+#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE)
-
- /* Convenience function:
- Computes the current installation prefix, based on the original
-@@ -285,12 +297,17 @@ compute_curr_prefix (const char *orig_in
-
- #endif /* !IN_LIBRARY || PIC */
-
--#if defined PIC && defined INSTALLDIR
-+#if defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE
-
- /* Full pathname of shared library, or NULL. */
- static char *shared_library_fullname;
-
--#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__
-+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
-+/* Native Win32 only.
-+ On Cygwin, it is better to use the Cygwin provided /proc interface, than
-+ to use native Win32 API and cygwin_conv_to_posix_path, because it supports
-+ longer file names
-+ (see <http://cygwin.com/ml/cygwin/2011-01/msg00410.html>). */
-
- /* Determine the full pathname of the shared library when it is loaded. */
-
-@@ -312,37 +329,23 @@ DllMain (HINSTANCE module_handle, DWORD
- /* Shouldn't happen. */
- return FALSE;
-
-- {
--#if defined __CYGWIN__
-- /* On Cygwin, we need to convert paths coming from Win32 system calls
-- to the Unix-like slashified notation. */
-- static char location_as_posix_path[2 * MAX_PATH];
-- /* There's no error return defined for cygwin_conv_to_posix_path.
-- See cygwin-api/func-cygwin-conv-to-posix-path.html.
-- Does it overflow the buffer of expected size MAX_PATH or does it
-- truncate the path? I don't know. Let's catch both. */
-- cygwin_conv_to_posix_path (location, location_as_posix_path);
-- location_as_posix_path[MAX_PATH - 1] = '\0';
-- if (strlen (location_as_posix_path) >= MAX_PATH - 1)
-- /* A sign of buffer overflow or path truncation. */
-- return FALSE;
-- shared_library_fullname = strdup (location_as_posix_path);
--#else
-- shared_library_fullname = strdup (location);
--#endif
-- }
-+ shared_library_fullname = strdup (location);
- }
-
- return TRUE;
- }
-
--#else /* Unix except Cygwin */
-+#else /* Unix */
-
- static void
- find_shared_library_fullname ()
- {
--#if defined __linux__ && __GLIBC__ >= 2
-- /* Linux has /proc/self/maps. glibc 2 has the getline() function. */
-+#if (defined __linux__ && (__GLIBC__ >= 2 || defined __UCLIBC__)) || defined __CYGWIN__
-+ /* Linux has /proc/self/maps. glibc 2 and uClibc have the getline()
-+ function.
-+ Cygwin >= 1.5 has /proc/self/maps and the getline() function too.
-+ But it is costly: ca. 0.3 ms on Linux, 3 ms on Cygwin 1.5, and 5 ms on
-+ Cygwin 1.7. */
- FILE *fp;
-
- /* Open the current process' maps file. It describes one VMA per line. */
-@@ -387,7 +390,7 @@ find_shared_library_fullname ()
- #endif
- }
-
--#endif /* (WIN32 or Cygwin) / (Unix except Cygwin) */
-+#endif /* WIN32 / Unix */
-
- /* Return the full pathname of the current shared library.
- Return NULL if unknown.
-@@ -395,7 +398,7 @@ find_shared_library_fullname ()
- static char *
- get_shared_library_fullname ()
- {
--#if !(defined _WIN32 || defined __WIN32__ || defined __CYGWIN__)
-+#if !((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__)
- static bool tried_find_shared_library_fullname;
- if (!tried_find_shared_library_fullname)
- {
-@@ -415,7 +418,7 @@ get_shared_library_fullname ()
- const char *
- relocate (const char *pathname)
- {
--#if defined PIC && defined INSTALLDIR
-+#if defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE
- static int initialized;
-
- /* Initialization code for a shared library. */
---- origsrc/gettext-0.18.1.1/gettext-runtime/intl/relocatable.c 2010-06-06 07:49:57.000000000 -0500
-+++ src/gettext-0.18.1.1/gettext-runtime/intl/relocatable.c 2011-10-31 18:40:29.867853399 -0500
-@@ -25,6 +23,7 @@
- # define _GNU_SOURCE 1
- #endif
-
-+#define _GL_USE_STDLIB_ALLOC 1
- #include <config.h>
-
- /* Specification. */
-@@ -43,7 +42,7 @@
- # include "xalloc.h"
- #endif
-
--#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__
-+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
- # define WIN32_LEAN_AND_MEAN
- # include <windows.h>
- #endif
-@@ -70,8 +69,8 @@
- ISSLASH(C) tests whether C is a directory separator character.
- IS_PATH_WITH_DIR(P) tests whether P contains a directory specification.
- */
--#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__
-- /* Win32, Cygwin, OS/2, DOS */
-+#if ((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__) || defined __EMX__ || defined __DJGPP__
-+ /* Win32, OS/2, DOS */
- # define ISSLASH(C) ((C) == '/' || (C) == '\\')
- # define HAS_DEVICE(P) \
- ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \
-@@ -86,6 +85,19 @@
- # define FILE_SYSTEM_PREFIX_LEN(P) 0
- #endif
-
-+/* Whether to enable the more costly support for relocatable libraries.
-+ It allows libraries to be have been installed with a different original
-+ prefix than the program. But it is quite costly, especially on Cygwin
-+ platforms, see below. Therefore we enable it by default only on native
-+ Win32 platforms. */
-+#ifndef ENABLE_COSTLY_RELOCATABLE
-+# if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
-+# define ENABLE_COSTLY_RELOCATABLE 1
-+# else
-+# define ENABLE_COSTLY_RELOCATABLE 0
-+# endif
-+#endif
-+
- /* Original installation prefix. */
- static char *orig_prefix;
- static size_t orig_prefix_len;
-@@ -155,7 +167,7 @@ set_relocation_prefix (const char *orig_
- #endif
- }
-
--#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR)
-+#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE)
-
- /* Convenience function:
- Computes the current installation prefix, based on the original
-@@ -285,12 +297,17 @@ compute_curr_prefix (const char *orig_in
-
- #endif /* !IN_LIBRARY || PIC */
-
--#if defined PIC && defined INSTALLDIR
-+#if defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE
-
- /* Full pathname of shared library, or NULL. */
- static char *shared_library_fullname;
-
--#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__
-+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
-+/* Native Win32 only.
-+ On Cygwin, it is better to use the Cygwin provided /proc interface, than
-+ to use native Win32 API and cygwin_conv_to_posix_path, because it supports
-+ longer file names
-+ (see <http://cygwin.com/ml/cygwin/2011-01/msg00410.html>). */
-
- /* Determine the full pathname of the shared library when it is loaded. */
-
-@@ -312,37 +329,23 @@ DllMain (HINSTANCE module_handle, DWORD
- /* Shouldn't happen. */
- return FALSE;
-
-- {
--#if defined __CYGWIN__
-- /* On Cygwin, we need to convert paths coming from Win32 system calls
-- to the Unix-like slashified notation. */
-- static char location_as_posix_path[2 * MAX_PATH];
-- /* There's no error return defined for cygwin_conv_to_posix_path.
-- See cygwin-api/func-cygwin-conv-to-posix-path.html.
-- Does it overflow the buffer of expected size MAX_PATH or does it
-- truncate the path? I don't know. Let's catch both. */
-- cygwin_conv_to_posix_path (location, location_as_posix_path);
-- location_as_posix_path[MAX_PATH - 1] = '\0';
-- if (strlen (location_as_posix_path) >= MAX_PATH - 1)
-- /* A sign of buffer overflow or path truncation. */
-- return FALSE;
-- shared_library_fullname = strdup (location_as_posix_path);
--#else
-- shared_library_fullname = strdup (location);
--#endif
-- }
-+ shared_library_fullname = strdup (location);
- }
-
- return TRUE;
- }
-
--#else /* Unix except Cygwin */
-+#else /* Unix */
-
- static void
- find_shared_library_fullname ()
- {
--#if defined __linux__ && __GLIBC__ >= 2
-- /* Linux has /proc/self/maps. glibc 2 has the getline() function. */
-+#if (defined __linux__ && (__GLIBC__ >= 2 || defined __UCLIBC__)) || defined __CYGWIN__
-+ /* Linux has /proc/self/maps. glibc 2 and uClibc have the getline()
-+ function.
-+ Cygwin >= 1.5 has /proc/self/maps and the getline() function too.
-+ But it is costly: ca. 0.3 ms on Linux, 3 ms on Cygwin 1.5, and 5 ms on
-+ Cygwin 1.7. */
- FILE *fp;
-
- /* Open the current process' maps file. It describes one VMA per line. */
-@@ -387,7 +390,7 @@ find_shared_library_fullname ()
- #endif
- }
-
--#endif /* (WIN32 or Cygwin) / (Unix except Cygwin) */
-+#endif /* WIN32 / Unix */
-
- /* Return the full pathname of the current shared library.
- Return NULL if unknown.
-@@ -395,7 +398,7 @@ find_shared_library_fullname ()
- static char *
- get_shared_library_fullname ()
- {
--#if !(defined _WIN32 || defined __WIN32__ || defined __CYGWIN__)
-+#if !((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__)
- static bool tried_find_shared_library_fullname;
- if (!tried_find_shared_library_fullname)
- {
-@@ -415,7 +418,7 @@ get_shared_library_fullname ()
- const char *
- relocate (const char *pathname)
- {
--#if defined PIC && defined INSTALLDIR
-+#if defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE
- static int initialized;
-
- /* Initialization code for a shared library. */
---- origsrc/gettext-0.18.1.1/gettext-tools/gnulib-lib/progreloc.c 2010-05-24 04:42:46.000000000 -0500
-+++ src/gettext-0.18.1.1/gettext-tools/gnulib-lib/progreloc.c 2011-10-31 18:40:26.620853680 -0500
-@@ -16,6 +16,7 @@
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-
-+#define _GL_USE_STDLIB_ALLOC 1
- #include <config.h>
-
- /* Specification. */
-@@ -34,11 +35,11 @@
- # include <mach-o/dyld.h>
- #endif
-
--#if defined _WIN32 || defined __WIN32__
-+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
- # define WIN32_NATIVE
- #endif
-
--#if defined WIN32_NATIVE || defined __CYGWIN__
-+#ifdef WIN32_NATIVE
- # define WIN32_LEAN_AND_MEAN
- # include <windows.h>
- #endif
-@@ -59,6 +60,10 @@
- # include "xalloc.h"
- #endif
-
-+#ifndef O_EXEC
-+# define O_EXEC O_RDONLY /* This is often close enough in older systems. */
-+#endif
-+
- /* Declare canonicalize_file_name.
- The <stdlib.h> included above may be the system's one, not the gnulib
- one. */
-@@ -68,8 +73,8 @@ extern char * canonicalize_file_name (co
- ISSLASH(C) tests whether C is a directory separator character.
- IS_PATH_WITH_DIR(P) tests whether P contains a directory specification.
- */
--#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__
-- /* Win32, Cygwin, OS/2, DOS */
-+#if ((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__) || defined __EMX__ || defined __DJGPP__
-+ /* Win32, OS/2, DOS */
- # define ISSLASH(C) ((C) == '/' || (C) == '\\')
- # define HAS_DEVICE(P) \
- ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \
-@@ -89,12 +94,15 @@ extern char * canonicalize_file_name (co
- #undef open
- #undef close
-
-+/* Use the system functions, not the gnulib overrides in this file. */
-+#undef sprintf
-+
- #undef set_program_name
-
-
- #if ENABLE_RELOCATABLE
-
--#ifdef __linux__
-+#if defined __linux__ || defined __CYGWIN__
- /* File descriptor of the executable.
- (Only used to verify that we find the correct executable.) */
- static int executable_fd = -1;
-@@ -104,12 +112,13 @@ static int executable_fd = -1;
- static bool
- maybe_executable (const char *filename)
- {
-- /* Woe32 lacks the access() function, but Cygwin doesn't. */
--#if !(defined WIN32_NATIVE && !defined __CYGWIN__)
-+ /* Woe32 lacks the access() function. */
-+#if !defined WIN32_NATIVE
- if (access (filename, X_OK) < 0)
- return false;
-+#endif
-
--#ifdef __linux__
-+#if defined __linux__ || defined __CYGWIN__
- if (executable_fd >= 0)
- {
- /* If we already have an executable_fd, check that filename points to
-@@ -128,7 +137,6 @@ maybe_executable (const char *filename)
- }
- }
- #endif
--#endif
-
- return true;
- }
-@@ -140,7 +148,12 @@ maybe_executable (const char *filename)
- static char *
- find_executable (const char *argv0)
- {
--#if defined WIN32_NATIVE || defined __CYGWIN__
-+#if defined WIN32_NATIVE
-+ /* Native Win32 only.
-+ On Cygwin, it is better to use the Cygwin provided /proc interface, than
-+ to use native Win32 API and cygwin_conv_to_posix_path, because it supports
-+ longer file names
-+ (see <http://cygwin.com/ml/cygwin/2011-01/msg00410.html>). */
- char location[MAX_PATH];
- int length = GetModuleFileName (NULL, location, sizeof (location));
- if (length < 0)
-@@ -148,32 +161,9 @@ find_executable (const char *argv0)
- if (!IS_PATH_WITH_DIR (location))
- /* Shouldn't happen. */
- return NULL;
-- {
--#if defined __CYGWIN__
-- /* cygwin-1.5.13 (2005-03-01) or newer would also allow a Linux-like
-- implementation: readlink of "/proc/self/exe". But using the
-- result of the Win32 system call is simpler and is consistent with the
-- code in relocatable.c. */
-- /* On Cygwin, we need to convert paths coming from Win32 system calls
-- to the Unix-like slashified notation. */
-- static char location_as_posix_path[2 * MAX_PATH];
-- /* There's no error return defined for cygwin_conv_to_posix_path.
-- See cygwin-api/func-cygwin-conv-to-posix-path.html.
-- Does it overflow the buffer of expected size MAX_PATH or does it
-- truncate the path? I don't know. Let's catch both. */
-- cygwin_conv_to_posix_path (location, location_as_posix_path);
-- location_as_posix_path[MAX_PATH - 1] = '\0';
-- if (strlen (location_as_posix_path) >= MAX_PATH - 1)
-- /* A sign of buffer overflow or path truncation. */
-- return NULL;
-- /* Call canonicalize_file_name, because Cygwin supports symbolic links. */
-- return canonicalize_file_name (location_as_posix_path);
--#else
-- return xstrdup (location);
--#endif
-- }
--#else /* Unix && !Cygwin */
--#ifdef __linux__
-+ return xstrdup (location);
-+#else /* Unix */
-+# ifdef __linux__
- /* The executable is accessible as /proc/<pid>/exe. In newer Linux
- versions, also as /proc/self/exe. Linux >= 2.1 provides a symlink
- to the true pathname; older Linux versions give only device and ino,
-@@ -185,7 +175,7 @@ find_executable (const char *argv0)
- if (link != NULL && link[0] != '[')
- return link;
- if (executable_fd < 0)
-- executable_fd = open ("/proc/self/exe", O_RDONLY, 0);
-+ executable_fd = open ("/proc/self/exe", O_EXEC, 0);
-
- {
- char buf[6+10+5];
-@@ -194,11 +184,24 @@ find_executable (const char *argv0)
- if (link != NULL && link[0] != '[')
- return link;
- if (executable_fd < 0)
-- executable_fd = open (buf, O_RDONLY, 0);
-+ executable_fd = open (buf, O_EXEC, 0);
- }
- }
--#endif
--#if HAVE_MACH_O_DYLD_H && HAVE__NSGETEXECUTABLEPATH
-+# endif
-+# ifdef __CYGWIN__
-+ /* The executable is accessible as /proc/<pid>/exe, at least in
-+ Cygwin >= 1.5. */
-+ {
-+ char *link;
-+
-+ link = xreadlink ("/proc/self/exe");
-+ if (link != NULL)
-+ return link;
-+ if (executable_fd < 0)
-+ executable_fd = open ("/proc/self/exe", O_EXEC, 0);
-+ }
-+# endif
-+# if HAVE_MACH_O_DYLD_H && HAVE__NSGETEXECUTABLEPATH
- /* On MacOS X 10.2 or newer, the function
- int _NSGetExecutablePath (char *buf, uint32_t *bufsize);
- can be used to retrieve the executable's full path. */
-@@ -207,7 +210,7 @@ find_executable (const char *argv0)
- if (_NSGetExecutablePath (location, &length) == 0
- && location[0] == '/')
- return canonicalize_file_name (location);
--#endif
-+# endif
- /* Guess the executable's full path. We assume the executable has been
- called via execlp() or execvp() with properly set up argv[0]. The
- login(1) convention to add a '-' prefix to argv[0] is not supported. */
-@@ -248,10 +251,10 @@ find_executable (const char *argv0)
- /* We have a path item at p, of length p_len.
- Now concatenate the path item and argv0. */
- concat_name = (char *) xmalloc (p_len + strlen (argv0) + 2);
--#ifdef NO_XMALLOC
-+# ifdef NO_XMALLOC
- if (concat_name == NULL)
- return NULL;
--#endif
-+# endif
- if (p_len == 0)
- /* An empty PATH element designates the current directory. */
- strcpy (concat_name, argv0);
---- origsrc/gettext-0.18.1.1/gettext-tools/gnulib-lib/relocatable.c 2010-05-24 04:42:46.000000000 -0500
-+++ src/gettext-0.18.1.1/gettext-tools/gnulib-lib/relocatable.c 2011-10-31 18:40:29.868853403 -0500
-@@ -25,6 +23,7 @@
- # define _GNU_SOURCE 1
- #endif
-
-+#define _GL_USE_STDLIB_ALLOC 1
- #include <config.h>
-
- /* Specification. */
-@@ -43,7 +42,7 @@
- # include "xalloc.h"
- #endif
-
--#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__
-+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
- # define WIN32_LEAN_AND_MEAN
- # include <windows.h>
- #endif
-@@ -70,8 +69,8 @@
- ISSLASH(C) tests whether C is a directory separator character.
- IS_PATH_WITH_DIR(P) tests whether P contains a directory specification.
- */
--#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__
-- /* Win32, Cygwin, OS/2, DOS */
-+#if ((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__) || defined __EMX__ || defined __DJGPP__
-+ /* Win32, OS/2, DOS */
- # define ISSLASH(C) ((C) == '/' || (C) == '\\')
- # define HAS_DEVICE(P) \
- ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \
-@@ -86,6 +85,19 @@
- # define FILE_SYSTEM_PREFIX_LEN(P) 0
- #endif
-
-+/* Whether to enable the more costly support for relocatable libraries.
-+ It allows libraries to be have been installed with a different original
-+ prefix than the program. But it is quite costly, especially on Cygwin
-+ platforms, see below. Therefore we enable it by default only on native
-+ Win32 platforms. */
-+#ifndef ENABLE_COSTLY_RELOCATABLE
-+# if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
-+# define ENABLE_COSTLY_RELOCATABLE 1
-+# else
-+# define ENABLE_COSTLY_RELOCATABLE 0
-+# endif
-+#endif
-+
- /* Original installation prefix. */
- static char *orig_prefix;
- static size_t orig_prefix_len;
-@@ -155,7 +167,7 @@ set_relocation_prefix (const char *orig_
- #endif
- }
-
--#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR)
-+#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE)
-
- /* Convenience function:
- Computes the current installation prefix, based on the original
-@@ -285,12 +297,17 @@ compute_curr_prefix (const char *orig_in
-
- #endif /* !IN_LIBRARY || PIC */
-
--#if defined PIC && defined INSTALLDIR
-+#if defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE
-
- /* Full pathname of shared library, or NULL. */
- static char *shared_library_fullname;
-
--#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__
-+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
-+/* Native Win32 only.
-+ On Cygwin, it is better to use the Cygwin provided /proc interface, than
-+ to use native Win32 API and cygwin_conv_to_posix_path, because it supports
-+ longer file names
-+ (see <http://cygwin.com/ml/cygwin/2011-01/msg00410.html>). */
-
- /* Determine the full pathname of the shared library when it is loaded. */
-
-@@ -312,37 +329,23 @@ DllMain (HINSTANCE module_handle, DWORD
- /* Shouldn't happen. */
- return FALSE;
-
-- {
--#if defined __CYGWIN__
-- /* On Cygwin, we need to convert paths coming from Win32 system calls
-- to the Unix-like slashified notation. */
-- static char location_as_posix_path[2 * MAX_PATH];
-- /* There's no error return defined for cygwin_conv_to_posix_path.
-- See cygwin-api/func-cygwin-conv-to-posix-path.html.
-- Does it overflow the buffer of expected size MAX_PATH or does it
-- truncate the path? I don't know. Let's catch both. */
-- cygwin_conv_to_posix_path (location, location_as_posix_path);
-- location_as_posix_path[MAX_PATH - 1] = '\0';
-- if (strlen (location_as_posix_path) >= MAX_PATH - 1)
-- /* A sign of buffer overflow or path truncation. */
-- return FALSE;
-- shared_library_fullname = strdup (location_as_posix_path);
--#else
-- shared_library_fullname = strdup (location);
--#endif
-- }
-+ shared_library_fullname = strdup (location);
- }
-
- return TRUE;
- }
-
--#else /* Unix except Cygwin */
-+#else /* Unix */
-
- static void
- find_shared_library_fullname ()
- {
--#if defined __linux__ && __GLIBC__ >= 2
-- /* Linux has /proc/self/maps. glibc 2 has the getline() function. */
-+#if (defined __linux__ && (__GLIBC__ >= 2 || defined __UCLIBC__)) || defined __CYGWIN__
-+ /* Linux has /proc/self/maps. glibc 2 and uClibc have the getline()
-+ function.
-+ Cygwin >= 1.5 has /proc/self/maps and the getline() function too.
-+ But it is costly: ca. 0.3 ms on Linux, 3 ms on Cygwin 1.5, and 5 ms on
-+ Cygwin 1.7. */
- FILE *fp;
-
- /* Open the current process' maps file. It describes one VMA per line. */
-@@ -387,7 +390,7 @@ find_shared_library_fullname ()
- #endif
- }
-
--#endif /* (WIN32 or Cygwin) / (Unix except Cygwin) */
-+#endif /* WIN32 / Unix */
-
- /* Return the full pathname of the current shared library.
- Return NULL if unknown.
-@@ -395,7 +398,7 @@ find_shared_library_fullname ()
- static char *
- get_shared_library_fullname ()
- {
--#if !(defined _WIN32 || defined __WIN32__ || defined __CYGWIN__)
-+#if !((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__)
- static bool tried_find_shared_library_fullname;
- if (!tried_find_shared_library_fullname)
- {
-@@ -415,7 +418,7 @@ get_shared_library_fullname ()
- const char *
- relocate (const char *pathname)
- {
--#if defined PIC && defined INSTALLDIR
-+#if defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE
- static int initialized;
-
- /* Initialization code for a shared library. */
---- origsrc/gettext-0.18.1.1/gettext-tools/libgettextpo/relocatable.c 2010-02-16 15:33:15.000000000 -0600
-+++ src/gettext-0.18.1.1/gettext-tools/libgettextpo/relocatable.c 2011-10-31 18:40:29.868853403 -0500
-@@ -25,6 +23,7 @@
- # define _GNU_SOURCE 1
- #endif
-
-+#define _GL_USE_STDLIB_ALLOC 1
- #include <config.h>
-
- /* Specification. */
-@@ -43,7 +42,7 @@
- # include "xalloc.h"
- #endif
-
--#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__
-+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
- # define WIN32_LEAN_AND_MEAN
- # include <windows.h>
- #endif
-@@ -70,8 +69,8 @@
- ISSLASH(C) tests whether C is a directory separator character.
- IS_PATH_WITH_DIR(P) tests whether P contains a directory specification.
- */
--#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__
-- /* Win32, Cygwin, OS/2, DOS */
-+#if ((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__) || defined __EMX__ || defined __DJGPP__
-+ /* Win32, OS/2, DOS */
- # define ISSLASH(C) ((C) == '/' || (C) == '\\')
- # define HAS_DEVICE(P) \
- ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \
-@@ -86,6 +85,19 @@
- # define FILE_SYSTEM_PREFIX_LEN(P) 0
- #endif
-
-+/* Whether to enable the more costly support for relocatable libraries.
-+ It allows libraries to be have been installed with a different original
-+ prefix than the program. But it is quite costly, especially on Cygwin
-+ platforms, see below. Therefore we enable it by default only on native
-+ Win32 platforms. */
-+#ifndef ENABLE_COSTLY_RELOCATABLE
-+# if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
-+# define ENABLE_COSTLY_RELOCATABLE 1
-+# else
-+# define ENABLE_COSTLY_RELOCATABLE 0
-+# endif
-+#endif
-+
- /* Original installation prefix. */
- static char *orig_prefix;
- static size_t orig_prefix_len;
-@@ -155,7 +167,7 @@ set_relocation_prefix (const char *orig_
- #endif
- }
-
--#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR)
-+#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE)
-
- /* Convenience function:
- Computes the current installation prefix, based on the original
-@@ -285,12 +297,17 @@ compute_curr_prefix (const char *orig_in
-
- #endif /* !IN_LIBRARY || PIC */
-
--#if defined PIC && defined INSTALLDIR
-+#if defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE
-
- /* Full pathname of shared library, or NULL. */
- static char *shared_library_fullname;
-
--#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__
-+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
-+/* Native Win32 only.
-+ On Cygwin, it is better to use the Cygwin provided /proc interface, than
-+ to use native Win32 API and cygwin_conv_to_posix_path, because it supports
-+ longer file names
-+ (see <http://cygwin.com/ml/cygwin/2011-01/msg00410.html>). */
-
- /* Determine the full pathname of the shared library when it is loaded. */
-
-@@ -312,37 +329,23 @@ DllMain (HINSTANCE module_handle, DWORD
- /* Shouldn't happen. */
- return FALSE;
-
-- {
--#if defined __CYGWIN__
-- /* On Cygwin, we need to convert paths coming from Win32 system calls
-- to the Unix-like slashified notation. */
-- static char location_as_posix_path[2 * MAX_PATH];
-- /* There's no error return defined for cygwin_conv_to_posix_path.
-- See cygwin-api/func-cygwin-conv-to-posix-path.html.
-- Does it overflow the buffer of expected size MAX_PATH or does it
-- truncate the path? I don't know. Let's catch both. */
-- cygwin_conv_to_posix_path (location, location_as_posix_path);
-- location_as_posix_path[MAX_PATH - 1] = '\0';
-- if (strlen (location_as_posix_path) >= MAX_PATH - 1)
-- /* A sign of buffer overflow or path truncation. */
-- return FALSE;
-- shared_library_fullname = strdup (location_as_posix_path);
--#else
-- shared_library_fullname = strdup (location);
--#endif
-- }
-+ shared_library_fullname = strdup (location);
- }
-
- return TRUE;
- }
-
--#else /* Unix except Cygwin */
-+#else /* Unix */
-
- static void
- find_shared_library_fullname ()
- {
--#if defined __linux__ && __GLIBC__ >= 2
-- /* Linux has /proc/self/maps. glibc 2 has the getline() function. */
-+#if (defined __linux__ && (__GLIBC__ >= 2 || defined __UCLIBC__)) || defined __CYGWIN__
-+ /* Linux has /proc/self/maps. glibc 2 and uClibc have the getline()
-+ function.
-+ Cygwin >= 1.5 has /proc/self/maps and the getline() function too.
-+ But it is costly: ca. 0.3 ms on Linux, 3 ms on Cygwin 1.5, and 5 ms on
-+ Cygwin 1.7. */
- FILE *fp;
-
- /* Open the current process' maps file. It describes one VMA per line. */
-@@ -387,7 +390,7 @@ find_shared_library_fullname ()
- #endif
- }
-
--#endif /* (WIN32 or Cygwin) / (Unix except Cygwin) */
-+#endif /* WIN32 / Unix */
-
- /* Return the full pathname of the current shared library.
- Return NULL if unknown.
-@@ -395,7 +398,7 @@ find_shared_library_fullname ()
- static char *
- get_shared_library_fullname ()
- {
--#if !(defined _WIN32 || defined __WIN32__ || defined __CYGWIN__)
-+#if !((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__)
- static bool tried_find_shared_library_fullname;
- if (!tried_find_shared_library_fullname)
- {
-@@ -415,7 +418,7 @@ get_shared_library_fullname ()
- const char *
- relocate (const char *pathname)
- {
--#if defined PIC && defined INSTALLDIR
-+#if defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE
- static int initialized;
-
- /* Initialization code for a shared library. */