--- configure.ac | 24 ++++++++++++++++++++++++ plugins/sh/call.c | 4 ++++ 2 files changed, 28 insertions(+)
diff --git a/configure.ac b/configure.ac index cdddae73..9b925539 100644 --- a/configure.ac +++ b/configure.ac @@ -266,6 +266,30 @@ test (int a) ] ) +dnl 'environ' is not always declared in public header files: +dnl Linux => <unistd.h> Haiku => <stdlib.h> +dnl FreeBSD & OpenBSD => not declared +dnl On platforms where it's not declared we must add an extern decl. +AC_MSG_CHECKING([if environ is declared in header files]) +AC_COMPILE_IFELSE([ +AC_LANG_SOURCE([[ +#include <stdlib.h> +#include <unistd.h> +static int +test (void) +{ + const char **env = environ; + return env ? 1 : 0; // this just forces env to be used +} +]]) + ],[ + AC_MSG_RESULT([yes]) + AC_DEFINE([HAVE_ENVIRON_DECL],[1],[environ is declared in headers]) + ],[ + AC_MSG_RESULT([no]) + ] +) + dnl Check for other headers, all optional. AC_CHECK_HEADERS([\ alloca.h \ diff --git a/plugins/sh/call.c b/plugins/sh/call.c index 4ffacfcc..91e69e9a 100644 --- a/plugins/sh/call.c +++ b/plugins/sh/call.c @@ -53,6 +53,10 @@ #include "call.h" +#ifndef HAVE_ENVIRON_DECL +extern char **environ; +#endif + /* Temporary directory for scripts to use. */ char tmpdir[] = "/tmp/nbdkitXXXXXX"; -- 2.25.0 _______________________________________________ Libguestfs mailing list Libguestfs@redhat.com https://www.redhat.com/mailman/listinfo/libguestfs