move strtoq into new string files (bug #4740)
[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 #ifdef SOLARIS
7 #include "solaris-compat/compat.h"
8 #endif
9
10 char* strsep(char** str, const char* delims)
11 {
12     char* token;
13
14     if (*str==NULL) {
15         /* No more tokens */
16         return NULL;
17     }
18
19     token=*str;
20     while (**str!='\0') {
21         if (strchr(delims,**str)!=NULL) {
22             **str='\0';
23             (*str)++;
24             return token;
25         }
26         (*str)++;
27     }
28     /* There is no other token */
29     *str=NULL;
30     return token;
31 }
32
33
34
35 int setenv(const char *name, const char *value, int overwrite)
36 {
37         unsigned char *buf;
38         int buflen, ret;
39
40         buflen = strlen(name) + strlen(value) + 2;
41         if ((buf = malloc(buflen)) == NULL)
42                 return -1;
43
44         if (!overwrite && getenv(name))
45                 return 0;
46
47         snprintf(buf, buflen, "%s=%s", name, value);
48         ret = putenv(buf);
49
50         free(buf);
51
52         return ret;
53 }
54
55 int unsetenv(const char *name)
56 {
57   setenv(name,"",0);
58 }
59