[PATCH] Fix build breakage on MinGW due to missing setenv

Anton Kolesov
2017-07-03T10:04:32Z

Patch [1] broke a build on MinGW hosts, because MinGW doesn't provide POSIX
functions setenv () and unsetenv (), instead there is a putenv () wrapper
around WinAPI function, although with a different signature.

[1] https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=9a6c7d9c0

gdb/ChangeLog
yyyy-mm-dd Anton Kolesov <Anton.Kolesov@synopsys.com>

* unittests/environ-selftests.c (run_tests): Use putenv on MinGW.
---
gdb/unittests/environ-selftests.c | 10 ++++++++++
1 file changed, 10 insertions(+)

diff --git a/gdb/unittests/environ-selftests.c b/gdb/unittests/environ-selftests.c
index 28b16f8..8872bfa 100644
--- a/gdb/unittests/environ-selftests.c
+++ b/gdb/unittests/environ-selftests.c
@@ -30,7 +30,11 @@ run_tests ()
{
/* Set a test environment variable. This will be unset at the end
of this function. */
+#ifndef USE_WIN32API
if (setenv ("GDB_SELFTEST_ENVIRON", "1", 1) != 0)
+#else
+ if (putenv ("GDB_SELFTEST_ENVIRON=1") != 0)
+#endif
error (_("Could not set environment variable for testing."));

gdb_environ env;
@@ -90,7 +94,13 @@ run_tests ()
SELF_CHECK (num_found == 1);

/* Get rid of our test variable. */
+#ifndef USE_WIN32API
unsetenv ("GDB_SELFTEST_ENVIRON");
+#else
+ /* putenv ("var=") has the same meaning as unsetenv ("var"), unlike the
+ setenv ("var="), which would assign an empty value. */
+ putenv ("GDB_SELFTEST_ENVIRON=");
+#endif

/* Test the case when we set a variable A, then set a variable B,
then unset A, and make sure that we cannot find A in the environ
--
2.8.3