issue #5638
[asterisk/asterisk.git] / strcompat.c
1 /* Compatibility functions for strsep and strtoq missing on Solaris */
2
3 #include <sys/types.h>
4 #include <stdio.h>
5
6 #include "asterisk/compat.h"
7
8 char* strsep(char** str, const char* delims)
9 {
10     char* token;
11
12     if (*str==NULL) {
13         /* No more tokens */
14         return NULL;
15     }
16
17     token=*str;
18     while (**str!='\0') {
19         if (strchr(delims,**str)!=NULL) {
20             **str='\0';
21             (*str)++;
22             return token;
23         }
24         (*str)++;
25     }
26     /* There is no other token */
27     *str=NULL;
28     return token;
29 }
30
31
32
33 int setenv(const char *name, const char *value, int overwrite)
34 {
35         unsigned char *buf;
36         int buflen, ret;
37
38         buflen = strlen(name) + strlen(value) + 2;
39         if ((buf = malloc(buflen)) == NULL)
40                 return -1;
41
42         if (!overwrite && getenv(name))
43                 return 0;
44
45         snprintf(buf, buflen, "%s=%s", name, value);
46         ret = putenv(buf);
47
48         free(buf);
49
50         return ret;
51 }
52
53 int unsetenv(const char *name)
54 {
55   setenv(name,"",0);
56 }
57