]> granicus.if.org Git - jq/commitdiff
Mingw-w64 on windows doesn't have `setenv`, fix that.
authorHE, Tao <sighingnow@gmail.com>
Tue, 18 Dec 2018 08:49:32 +0000 (16:49 +0800)
committerNico Williams <nico@cryptonector.com>
Wed, 19 Dec 2018 15:07:14 +0000 (09:07 -0600)
Signed-off-by: HE, Tao <sighingnow@gmail.com>
configure.ac
src/builtin.c

index 280694ce6f55a18c39715a7cd3981008413d9218..97f4eab47ce147ae29a4be2b5afe0b9906fc73a9 100644 (file)
@@ -124,6 +124,7 @@ AC_FIND_FUNC([isatty], [c], [#include <unistd.h>], [0])
 AC_FIND_FUNC([_isatty], [c], [#include <io.h>], [0])
 AC_FIND_FUNC([strptime], [c], [#include <time.h>], [0, 0, 0])
 AC_FIND_FUNC([strftime], [c], [#include <time.h>], [0, 0, 0, 0])
+AC_FIND_FUNC([setenv], [c], [#include <stdlib.h>], [0, 0, 0])
 AC_FIND_FUNC([timegm], [c], [#include <time.h>], [0])
 AC_FIND_FUNC([gmtime_r], [c], [#include <time.h>], [0, 0])
 AC_FIND_FUNC([gmtime], [c], [#include <time.h>], [0])
index c6c8c2ea76578895087644f673ab59eded389407..09c0058e21dc45a4348a202172a5baae5f3e7a45 100644 (file)
@@ -1186,6 +1186,27 @@ static jv tm2jv(struct tm *tm) {
                   jv_number(tm->tm_yday));
 }
 
+#if defined(WIN32) && !defined(HAVE_SETENV)
+static int setenv(const char *var, const char *val, int ovr)
+{
+  BOOL b;
+  char c[2];
+  if (!ovr)
+  {
+    DWORD d;
+    d = GetEnvironmentVariableA (var, c, 2);
+    if (0 != d && GetLastError () != ERROR_ENVVAR_NOT_FOUND) {
+      return d;
+    }
+  }
+  b = SetEnvironmentVariableA (var, val);
+  if (b) {
+    return 0;
+  }
+  return 1;
+}
+#endif
+
 /*
  * mktime() has side-effects and anyways, returns time in the local
  * timezone, not UTC.  We want timegm(), which isn't standard.