summaryrefslogtreecommitdiffstats
path: root/osdep/setenv.c
diff options
context:
space:
mode:
Diffstat (limited to 'osdep/setenv.c')
-rw-r--r--osdep/setenv.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/osdep/setenv.c b/osdep/setenv.c
new file mode 100644
index 0000000000..e0ef9a35bc
--- /dev/null
+++ b/osdep/setenv.c
@@ -0,0 +1,29 @@
+/* setenv implementation for systems lacking it. */
+
+#include "../config.h"
+
+#ifndef HAVE_SETENV
+
+#include <stdlib.h>
+#include <string.h>
+#ifndef MP_DEBUG
+ #define NDEBUG
+#endif
+#include <assert.h>
+
+int setenv(const char *name, const char *val, int overwrite)
+{
+ int len = strlen(name) + strlen(val) + 2;
+ char *env = malloc(len);
+ if (!env) { return -1; }
+
+ assert(overwrite != 0);
+
+ strcpy(env, name);
+ strcat(env, "=");
+ strcat(env, val);
+ putenv(env);
+
+ return 0;
+}
+#endif