summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/libugly/setenv.c
diff options
context:
space:
mode:
Diffstat (limited to 'mdk-stage1/dietlibc/libugly/setenv.c')
-rw-r--r--mdk-stage1/dietlibc/libugly/setenv.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/mdk-stage1/dietlibc/libugly/setenv.c b/mdk-stage1/dietlibc/libugly/setenv.c
new file mode 100644
index 000000000..bf47cdb79
--- /dev/null
+++ b/mdk-stage1/dietlibc/libugly/setenv.c
@@ -0,0 +1,17 @@
+#include <string.h>
+#include <stdlib.h>
+
+#include <dietwarning.h>
+link_warning("setenv","setenv calls malloc. Avoid it in small programs.");
+
+int setenv(const char *name, const char *value, int overwrite) {
+ char *c=malloc(strlen(name)+strlen(value)+3);
+ if (getenv(name)) {
+ if (!overwrite) return 0;
+ unsetenv(name);
+ }
+ strcpy(c,name);
+ strcat(c,"=");
+ strcat(c,value);
+ return putenv(c);
+}