From e4314774fd44bf2230a64f26c7f07383ddf6aa4c Mon Sep 17 00:00:00 2001 From: Pádraig Brady Date: Mon, 26 May 2014 09:19:16 +0100 Subject: stdbuf: support OS X * src/stdbuf.c (set_LD_PRELOAD): Adjust to use Mac OS X specific environment variables on __APPLE__ platforms. Fixes http://bugs.gnu.org/17590 --- src/stdbuf.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/stdbuf.c b/src/stdbuf.c index c648fc5d0..92ee28267 100644 --- a/src/stdbuf.c +++ b/src/stdbuf.c @@ -187,7 +187,12 @@ static void set_LD_PRELOAD (void) { int ret; - char *old_libs = getenv ("LD_PRELOAD"); +#ifdef __APPLE__ + char const *preload_env = "DYLD_INSERT_LIBRARIES"; +#else + char const *preload_env = "LD_PRELOAD"; +#endif + char *old_libs = getenv (preload_env); char *LD_PRELOAD; /* Note this would auto add the appropriate search path for "libstdbuf.so": @@ -239,9 +244,9 @@ set_LD_PRELOAD (void) /* FIXME: Do we need to support libstdbuf.dll, c:, '\' separators etc? */ if (old_libs) - ret = asprintf (&LD_PRELOAD, "LD_PRELOAD=%s:%s", old_libs, libstdbuf); + ret = asprintf (&LD_PRELOAD, "%s=%s:%s", preload_env, old_libs, libstdbuf); else - ret = asprintf (&LD_PRELOAD, "LD_PRELOAD=%s", libstdbuf); + ret = asprintf (&LD_PRELOAD, "%s=%s", preload_env, libstdbuf); if (ret < 0) xalloc_die (); @@ -249,6 +254,10 @@ set_LD_PRELOAD (void) free (libstdbuf); ret = putenv (LD_PRELOAD); +#ifdef __APPLE__ + if (ret == 0) + ret = putenv ("DYLD_FORCE_FLAT_NAMESPACE=y"); +#endif if (ret != 0) { -- cgit v1.2.3-54-g00ecf