* otherwise it will emit a line like
*
* tmp.stdout.vexed.732.o: /home/mbp/.ccache/tmp.stdout.vexed.732.i
- *
- * unsetenv() is on BSD and Linux but not portable. */
- putenv("DEPENDENCIES_OUTPUT");
+ */
+ x_unsetenv("DEPENDENCIES_OUTPUT");
if (conf->run_second_cpp) {
args_add(args, input_file);
void *x_malloc(size_t size);
void *x_calloc(size_t nmemb, size_t size);
void *x_realloc(void *ptr, size_t size);
+int x_unsetenv(const char *name);
void traverse(const char *dir, void (*fn)(const char *, struct stat *));
char *basename(const char *path);
char *dirname(const char *path);
AC_CHECK_FUNCS(realpath)
AC_CHECK_FUNCS(strndup)
AC_CHECK_FUNCS(strtok_r)
+AC_CHECK_FUNCS(unsetenv)
AC_CHECK_FUNCS(utimes)
AC_CACHE_CHECK([for compar_fn_t in stdlib.h],ccache_cv_COMPAR_FN_T, [
CHECK(conf_update_from_environment(conf, &errmsg));
CHECK(conf->compression);
- putenv("CCACHE_COMPRESS"); /* unsetenv isn't portable */
+ x_unsetenv("CCACHE_COMPRESS");
putenv("CCACHE_NOCOMPRESS=1");
CHECK(conf_update_from_environment(conf, &errmsg));
CHECK(!conf->compression);
return p2;
}
+/* This is like unsetenv. */
+int x_unsetenv(const char *name)
+{
+#ifdef HAVE_UNSETENV
+ return unsetenv(name);
+#else
+ return putenv(x_strdup(name)); /* Leak to environment. */
+#endif
+}
/*
* Construct a string according to the format and store it in *ptr. The