fixed for newer perl
[tridge/junkcode.git] / setenv.c
1 #include <stdio.h>
2 #include <unistd.h>
3 #include <string.h>
4 #include <stdlib.h>
5
6  int setenv(const char *name, const char *value, int overwrite) 
7 {
8         char *p;
9         size_t l1, l2;
10         int ret;
11
12         if (!overwrite && getenv(name)) {
13                 return 0;
14         }
15
16         l1 = strlen(name);
17         l2 = strlen(value);
18
19         p = malloc(l1+l2+2);
20         if (p == NULL) {
21                 return -1;
22         }
23         memcpy(p, name, l1);
24         p[l1] = '=';
25         memcpy(p+l1+1, value, l2);
26         p[l1+l2+1] = 0;
27
28         ret = putenv(p);
29         if (ret != 0) {
30                 free(p);
31         }
32
33         return ret;
34 }
35
36
37 int main(int argc, char *argv[])
38 {
39         int ret1, ret2;
40
41         ret1 = setenv("foo", "blah", 0);
42         ret2 = setenv("foo", "blah2", 0);
43         printf("ret1=%d ret2=%d '%s'\n", ret1, ret2, getenv("foo"));
44         return 0;
45 }