]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FSCRE-253 netbsd does not follow opengroup prototypes on toupper and tolower so we...
authorMichael Jerris <mike@jerris.com>
Mon, 15 Dec 2008 02:48:50 +0000 (02:48 +0000)
committerMichael Jerris <mike@jerris.com>
Mon, 15 Dec 2008 02:48:50 +0000 (02:48 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@10760 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/include/switch_utils.h
src/mod/formats/mod_sndfile/mod_sndfile.c
src/switch_utils.c

index b3e136a1382820f714f4833be05baa35e97c4f98..d9a1cf73fd9b57fabbca80968688ce0ced61c180 100644 (file)
 #include <switch.h>
 
 SWITCH_BEGIN_EXTERN_C
+
+SWITCH_DECLARE(int) switch_toupper(int c);
+SWITCH_DECLARE(int) switch_tolower(int c);
+
 #define switch_samples_per_packet(rate, interval) ((uint32_t)((float)rate / (1000.0f / (float)interval)))
 #define SWITCH_SMAX 32767
 #define SWITCH_SMIN -32768
@@ -303,7 +307,7 @@ static inline char *switch_lc_strdup(const char *it)
        if (it) {
                dup = strdup(it);
                for(p = dup; p && *p; p++) {
-                       *p = (char) tolower(*p);
+                       *p = (char) switch_tolower(*p);
                }
                return dup;
        }
@@ -320,7 +324,7 @@ static inline char *switch_uc_strdup(const char *it)
        if (it) {
                dup = strdup(it);
                for(p = dup; p && *p; p++) {
-                       *p = (char) toupper(*p);
+                       *p = (char) switch_toupper(*p);
                }
                return dup;
        }
@@ -353,7 +357,7 @@ static inline switch_bool_t switch_strstr(char *s, char *q)
        assert(S != NULL);
 
        for (p = S; p && *p; p++) {
-               *p = (char) toupper(*p);
+               *p = (char) switch_toupper(*p);
        }
 
        if (strstr(S, q)) {
@@ -365,7 +369,7 @@ static inline switch_bool_t switch_strstr(char *s, char *q)
        assert(Q != NULL);
 
        for (p = Q; p && *p; p++) {
-               *p = (char) toupper(*p);
+               *p = (char) switch_toupper(*p);
        }
 
        if (strstr(s, Q)) {
index b9e806882790cf5e617c0c51bf50d70e07f256d1..698dece9f99102c3d88784257a852af7408279f5 100644 (file)
@@ -339,13 +339,13 @@ static switch_status_t setup_formats(void)
                        map->format = info.format;
                        if (map->ext) {
                                for (p = map->ext; *p; p++) {
-                                       *p = (char) tolower(*p);
+                                       *p = (char) switch_tolower(*p);
                                }
                                switch_core_hash_insert(globals.format_hash, map->ext, map);
                        }
                        if (map->uext) {
                                for (p = map->uext; *p; p++) {
-                                       *p = (char) toupper(*p);
+                                       *p = (char) switch_toupper(*p);
                                }
                                switch_core_hash_insert(globals.format_hash, map->uext, map);
                        }
index ae3c6acc6e6612646fcd02f91e8976e0439bc626..bd6a703c59eeae7b21eecdfb7fdf1492733b0dab 100644 (file)
@@ -654,7 +654,7 @@ SWITCH_DECLARE(const char *) switch_stristr(const char *instr, const char *str)
 
        for (start = str; *start; start++) {
                /* find start of pattern in string */
-               for (; ((*start) && (toupper(*start) != toupper(*instr))); start++);
+               for (; ((*start) && (switch_toupper(*start) != switch_toupper(*instr))); start++);
 
                if (!*start)
                        return NULL;
@@ -662,7 +662,7 @@ SWITCH_DECLARE(const char *) switch_stristr(const char *instr, const char *str)
                pptr = instr;
                sptr = start;
 
-               while (toupper(*sptr) == toupper(*pptr)) {
+               while (switch_toupper(*sptr) == switch_toupper(*pptr)) {
                        sptr++;
                        pptr++;
 
@@ -1138,7 +1138,7 @@ SWITCH_DECLARE(unsigned char) switch_char_to_rfc2833(char key)
        char *c;
        unsigned char counter = 0;
 
-       key = (char) toupper(key);
+       key = (char) switch_toupper(key);
        for (c = RFC2833_CHARS; *c; c++) {
                if (*c == key) {
                        return counter;
@@ -1507,6 +1507,105 @@ SWITCH_DECLARE(char *) switch_url_decode(char *s)
        return s;
 }
 
+
+/* Written by Marc Espie, public domain */
+#define SWITCH_CTYPE_NUM_CHARS       256
+
+const short _switch_C_toupper_[1 + SWITCH_CTYPE_NUM_CHARS] = {
+       EOF,
+       0x00,   0x01,   0x02,   0x03,   0x04,   0x05,   0x06,   0x07,
+       0x08,   0x09,   0x0a,   0x0b,   0x0c,   0x0d,   0x0e,   0x0f,
+       0x10,   0x11,   0x12,   0x13,   0x14,   0x15,   0x16,   0x17,
+       0x18,   0x19,   0x1a,   0x1b,   0x1c,   0x1d,   0x1e,   0x1f,
+       0x20,   0x21,   0x22,   0x23,   0x24,   0x25,   0x26,   0x27,
+       0x28,   0x29,   0x2a,   0x2b,   0x2c,   0x2d,   0x2e,   0x2f,
+       0x30,   0x31,   0x32,   0x33,   0x34,   0x35,   0x36,   0x37,
+       0x38,   0x39,   0x3a,   0x3b,   0x3c,   0x3d,   0x3e,   0x3f,
+       0x40,   0x41,   0x42,   0x43,   0x44,   0x45,   0x46,   0x47,
+       0x48,   0x49,   0x4a,   0x4b,   0x4c,   0x4d,   0x4e,   0x4f,
+       0x50,   0x51,   0x52,   0x53,   0x54,   0x55,   0x56,   0x57,
+       0x58,   0x59,   0x5a,   0x5b,   0x5c,   0x5d,   0x5e,   0x5f,
+       0x60,   'A',    'B',    'C',    'D',    'E',    'F',    'G',
+       'H',    'I',    'J',    'K',    'L',    'M',    'N',    'O',
+       'P',    'Q',    'R',    'S',    'T',    'U',    'V',    'W',
+       'X',    'Y',    'Z',    0x7b,   0x7c,   0x7d,   0x7e,   0x7f,
+       0x80,   0x81,   0x82,   0x83,   0x84,   0x85,   0x86,   0x87,
+       0x88,   0x89,   0x8a,   0x8b,   0x8c,   0x8d,   0x8e,   0x8f,
+       0x90,   0x91,   0x92,   0x93,   0x94,   0x95,   0x96,   0x97,
+       0x98,   0x99,   0x9a,   0x9b,   0x9c,   0x9d,   0x9e,   0x9f,
+       0xa0,   0xa1,   0xa2,   0xa3,   0xa4,   0xa5,   0xa6,   0xa7,
+       0xa8,   0xa9,   0xaa,   0xab,   0xac,   0xad,   0xae,   0xaf,
+       0xb0,   0xb1,   0xb2,   0xb3,   0xb4,   0xb5,   0xb6,   0xb7,
+       0xb8,   0xb9,   0xba,   0xbb,   0xbc,   0xbd,   0xbe,   0xbf,
+       0xc0,   0xc1,   0xc2,   0xc3,   0xc4,   0xc5,   0xc6,   0xc7,
+       0xc8,   0xc9,   0xca,   0xcb,   0xcc,   0xcd,   0xce,   0xcf,
+       0xd0,   0xd1,   0xd2,   0xd3,   0xd4,   0xd5,   0xd6,   0xd7,
+       0xd8,   0xd9,   0xda,   0xdb,   0xdc,   0xdd,   0xde,   0xdf,
+       0xe0,   0xe1,   0xe2,   0xe3,   0xe4,   0xe5,   0xe6,   0xe7,
+       0xe8,   0xe9,   0xea,   0xeb,   0xec,   0xed,   0xee,   0xef,
+       0xf0,   0xf1,   0xf2,   0xf3,   0xf4,   0xf5,   0xf6,   0xf7,
+       0xf8,   0xf9,   0xfa,   0xfb,   0xfc,   0xfd,   0xfe,   0xff
+};
+
+const short *_switch_toupper_tab_ = _switch_C_toupper_;
+
+SWITCH_DECLARE(int) switch_toupper(int c)
+{
+       if ((unsigned int)c > 255)
+               return(c);
+       if (c < -1)
+               return EOF;
+       return((_switch_toupper_tab_ + 1)[c]);
+}
+
+const short _switch_C_tolower_[1 + SWITCH_CTYPE_NUM_CHARS] = {
+       EOF,
+       0x00,   0x01,   0x02,   0x03,   0x04,   0x05,   0x06,   0x07,
+       0x08,   0x09,   0x0a,   0x0b,   0x0c,   0x0d,   0x0e,   0x0f,
+       0x10,   0x11,   0x12,   0x13,   0x14,   0x15,   0x16,   0x17,
+       0x18,   0x19,   0x1a,   0x1b,   0x1c,   0x1d,   0x1e,   0x1f,
+       0x20,   0x21,   0x22,   0x23,   0x24,   0x25,   0x26,   0x27,
+       0x28,   0x29,   0x2a,   0x2b,   0x2c,   0x2d,   0x2e,   0x2f,
+       0x30,   0x31,   0x32,   0x33,   0x34,   0x35,   0x36,   0x37,
+       0x38,   0x39,   0x3a,   0x3b,   0x3c,   0x3d,   0x3e,   0x3f,
+       0x40,   'a',    'b',    'c',    'd',    'e',    'f',    'g',
+       'h',    'i',    'j',    'k',    'l',    'm',    'n',    'o',
+       'p',    'q',    'r',    's',    't',    'u',    'v',    'w',
+       'x',    'y',    'z',    0x5b,   0x5c,   0x5d,   0x5e,   0x5f,
+       0x60,   0x61,   0x62,   0x63,   0x64,   0x65,   0x66,   0x67,
+       0x68,   0x69,   0x6a,   0x6b,   0x6c,   0x6d,   0x6e,   0x6f,
+       0x70,   0x71,   0x72,   0x73,   0x74,   0x75,   0x76,   0x77,
+       0x78,   0x79,   0x7a,   0x7b,   0x7c,   0x7d,   0x7e,   0x7f,
+       0x80,   0x81,   0x82,   0x83,   0x84,   0x85,   0x86,   0x87,
+       0x88,   0x89,   0x8a,   0x8b,   0x8c,   0x8d,   0x8e,   0x8f,
+       0x90,   0x91,   0x92,   0x93,   0x94,   0x95,   0x96,   0x97,
+       0x98,   0x99,   0x9a,   0x9b,   0x9c,   0x9d,   0x9e,   0x9f,
+       0xa0,   0xa1,   0xa2,   0xa3,   0xa4,   0xa5,   0xa6,   0xa7,
+       0xa8,   0xa9,   0xaa,   0xab,   0xac,   0xad,   0xae,   0xaf,
+       0xb0,   0xb1,   0xb2,   0xb3,   0xb4,   0xb5,   0xb6,   0xb7,
+       0xb8,   0xb9,   0xba,   0xbb,   0xbc,   0xbd,   0xbe,   0xbf,
+       0xc0,   0xc1,   0xc2,   0xc3,   0xc4,   0xc5,   0xc6,   0xc7,
+       0xc8,   0xc9,   0xca,   0xcb,   0xcc,   0xcd,   0xce,   0xcf,
+       0xd0,   0xd1,   0xd2,   0xd3,   0xd4,   0xd5,   0xd6,   0xd7,
+       0xd8,   0xd9,   0xda,   0xdb,   0xdc,   0xdd,   0xde,   0xdf,
+       0xe0,   0xe1,   0xe2,   0xe3,   0xe4,   0xe5,   0xe6,   0xe7,
+       0xe8,   0xe9,   0xea,   0xeb,   0xec,   0xed,   0xee,   0xef,
+       0xf0,   0xf1,   0xf2,   0xf3,   0xf4,   0xf5,   0xf6,   0xf7,
+       0xf8,   0xf9,   0xfa,   0xfb,   0xfc,   0xfd,   0xfe,   0xff
+};
+
+const short *_switch_tolower_tab_ = _switch_C_tolower_;
+
+SWITCH_DECLARE(int) switch_tolower(int c)
+{
+       if ((unsigned int)c > 255)
+               return(c);
+       if (c < -1)
+               return EOF;
+       return((_switch_tolower_tab_ + 1)[c]);
+}
+
+
 /* For Emacs:
  * Local Variables:
  * mode:c