summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/lib/putenv.c
diff options
context:
space:
mode:
authorGuillaume Cottenceau <gc@mandriva.com>2001-01-04 20:04:45 +0000
committerGuillaume Cottenceau <gc@mandriva.com>2001-01-04 20:04:45 +0000
commit02fec4701cee79f875c1d02b8b4aee09380dbcb8 (patch)
treef4f291aedbb2e60ee58351481858a8cd3ec80b6b /mdk-stage1/dietlibc/lib/putenv.c
parent9887fe04751edf39e8389f2c3ec3f020b5e1c17d (diff)
downloaddrakx-backup-do-not-use-02fec4701cee79f875c1d02b8b4aee09380dbcb8.tar
drakx-backup-do-not-use-02fec4701cee79f875c1d02b8b4aee09380dbcb8.tar.gz
drakx-backup-do-not-use-02fec4701cee79f875c1d02b8b4aee09380dbcb8.tar.bz2
drakx-backup-do-not-use-02fec4701cee79f875c1d02b8b4aee09380dbcb8.tar.xz
drakx-backup-do-not-use-02fec4701cee79f875c1d02b8b4aee09380dbcb8.zip
integrate dietlibc/stdio per default for cdrom and disk only installs
Diffstat (limited to 'mdk-stage1/dietlibc/lib/putenv.c')
-rw-r--r--mdk-stage1/dietlibc/lib/putenv.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/mdk-stage1/dietlibc/lib/putenv.c b/mdk-stage1/dietlibc/lib/putenv.c
new file mode 100644
index 000000000..274b16b0e
--- /dev/null
+++ b/mdk-stage1/dietlibc/lib/putenv.c
@@ -0,0 +1,37 @@
+#include <stdlib.h>
+#include <string.h>
+
+int putenv(const char *string) {
+ int len;
+ int envc;
+ char *tmp;
+ const char **ep;
+ char **newenv;
+ static char **origenv=0;
+ if (!origenv) origenv=environ;
+ if (!(tmp=strchr(string,'=')))
+ len=strlen(string);
+ else
+ len=tmp-string+1;
+ for (envc=0, ep=(const char**)environ; *ep; ++ep) {
+ if (!memcmp(string,*ep,len)) { /* found */
+ if (!tmp) {
+ for (; ep[1]; ++ep) ep[0]=ep[1];
+ ep[0]=0;
+ return 0;
+ }
+ *ep=string;
+ return 0;
+ }
+ ++envc;
+ }
+ if (tmp) {
+ newenv=(char**)malloc((envc+2)*sizeof(char*));
+ if (!newenv) return -1;
+ newenv[0]=(char*)string;
+ memcpy(newenv+1,environ,(envc+1)*sizeof(char*));
+ if (environ!=origenv) free(environ);
+ environ=newenv;
+ }
+ return 0;
+}