clean up dns_parse_callback
[musl] / src / ctype / iswctype.c
1 #include <wctype.h>
2 #include <string.h>
3
4 #define WCTYPE_ALNUM  1
5 #define WCTYPE_ALPHA  2
6 #define WCTYPE_BLANK  3
7 #define WCTYPE_CNTRL  4
8 #define WCTYPE_DIGIT  5
9 #define WCTYPE_GRAPH  6
10 #define WCTYPE_LOWER  7
11 #define WCTYPE_PRINT  8
12 #define WCTYPE_PUNCT  9
13 #define WCTYPE_SPACE  10
14 #define WCTYPE_UPPER  11
15 #define WCTYPE_XDIGIT 12
16
17 int iswctype(wint_t wc, wctype_t type)
18 {
19         switch (type) {
20         case WCTYPE_ALNUM:
21                 return iswalnum(wc);
22         case WCTYPE_ALPHA:
23                 return iswalpha(wc);
24         case WCTYPE_BLANK:
25                 return iswblank(wc);
26         case WCTYPE_CNTRL:
27                 return iswcntrl(wc);
28         case WCTYPE_DIGIT:
29                 return iswdigit(wc);
30         case WCTYPE_GRAPH:
31                 return iswgraph(wc);
32         case WCTYPE_LOWER:
33                 return iswlower(wc);
34         case WCTYPE_PRINT:
35                 return iswprint(wc);
36         case WCTYPE_PUNCT:
37                 return iswpunct(wc);
38         case WCTYPE_SPACE:
39                 return iswspace(wc);
40         case WCTYPE_UPPER:
41                 return iswupper(wc);
42         case WCTYPE_XDIGIT:
43                 return iswxdigit(wc);
44         }
45         return 0;
46 }
47
48 wctype_t wctype(const char *s)
49 {
50         int i;
51         const char *p;
52         /* order must match! */
53         static const char names[] =
54                 "alnum\0" "alpha\0" "blank\0"
55                 "cntrl\0" "digit\0" "graph\0"
56                 "lower\0" "print\0" "punct\0"
57                 "space\0" "upper\0" "xdigit";
58         for (i=1, p=names; *p; i++, p+=6)
59                 if (*s == *p && !strcmp(s, p))
60                         return i;
61         return 0;
62 }
63
64 int __iswctype_l(wint_t c, wctype_t t, locale_t l)
65 {
66         return iswctype(c, t);
67 }
68
69 wctype_t __wctype_l(const char *s, locale_t l)
70 {
71         return wctype(s);
72 }
73
74 weak_alias(__iswctype_l, iswctype_l);
75 weak_alias(__wctype_l, wctype_l);