diff --git a/configure.ac b/configure.ac index 280694ce..97f4eab4 100644 --- a/configure.ac +++ b/configure.ac @@ -124,6 +124,7 @@ AC_FIND_FUNC([isatty], [c], [#include ], [0]) AC_FIND_FUNC([_isatty], [c], [#include ], [0]) AC_FIND_FUNC([strptime], [c], [#include ], [0, 0, 0]) AC_FIND_FUNC([strftime], [c], [#include ], [0, 0, 0, 0]) +AC_FIND_FUNC([setenv], [c], [#include ], [0, 0, 0]) AC_FIND_FUNC([timegm], [c], [#include ], [0]) AC_FIND_FUNC([gmtime_r], [c], [#include ], [0, 0]) AC_FIND_FUNC([gmtime], [c], [#include ], [0]) diff --git a/src/builtin.c b/src/builtin.c index c6c8c2ea..09c0058e 100644 --- a/src/builtin.c +++ b/src/builtin.c @@ -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.