| OLD | NEW |
| 1 #include <stdlib.h> | 1 #include <stdlib.h> |
| 2 #include <string.h> | 2 #include <string.h> |
| 3 #include <errno.h> | 3 #include <errno.h> |
| 4 | 4 |
| 5 int __putenv(char *s, int a); | 5 int __putenv(char* s, int a); |
| 6 | 6 |
| 7 int setenv(const char *var, const char *value, int overwrite) | 7 int setenv(const char* var, const char* value, int overwrite) { |
| 8 { | 8 char* s; |
| 9 » char *s; | 9 int l1, l2; |
| 10 » int l1, l2; | |
| 11 | 10 |
| 12 » if (!var || !*var || strchr(var, '=')) { | 11 if (!var || !*var || strchr(var, '=')) { |
| 13 » » errno = EINVAL; | 12 errno = EINVAL; |
| 14 » » return -1; | 13 return -1; |
| 15 » } | 14 } |
| 16 » if (!overwrite && getenv(var)) return 0; | 15 if (!overwrite && getenv(var)) |
| 16 return 0; |
| 17 | 17 |
| 18 » l1 = strlen(var); | 18 l1 = strlen(var); |
| 19 » l2 = strlen(value); | 19 l2 = strlen(value); |
| 20 » s = malloc(l1+l2+2); | 20 s = malloc(l1 + l2 + 2); |
| 21 » if (s) { | 21 if (s) { |
| 22 » » memcpy(s, var, l1); | 22 memcpy(s, var, l1); |
| 23 » » s[l1] = '='; | 23 s[l1] = '='; |
| 24 » » memcpy(s+l1+1, value, l2); | 24 memcpy(s + l1 + 1, value, l2); |
| 25 » » s[l1+l2+1] = 0; | 25 s[l1 + l2 + 1] = 0; |
| 26 » » if (!__putenv(s, 1)) return 0; | 26 if (!__putenv(s, 1)) |
| 27 » } | 27 return 0; |
| 28 » free(s); | 28 } |
| 29 » return -1; | 29 free(s); |
| 30 return -1; |
| 30 } | 31 } |
| OLD | NEW |