Deleted Added
full compact
wctype.c (227753) wctype.c (228269)
1/*-
2 * Copyright (c) 2002 Tim J. Robbins.
3 * All rights reserved.
4 *
5 * Copyright (c) 2011 The FreeBSD Foundation
6 * All rights reserved.
7 * Portions of this software were developed by David Chisnall
8 * under sponsorship from the FreeBSD Foundation.

--- 16 unchanged lines hidden (view full) ---

25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 * SUCH DAMAGE.
30 */
31
32#include <sys/cdefs.h>
1/*-
2 * Copyright (c) 2002 Tim J. Robbins.
3 * All rights reserved.
4 *
5 * Copyright (c) 2011 The FreeBSD Foundation
6 * All rights reserved.
7 * Portions of this software were developed by David Chisnall
8 * under sponsorship from the FreeBSD Foundation.

--- 16 unchanged lines hidden (view full) ---

25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 * SUCH DAMAGE.
30 */
31
32#include <sys/cdefs.h>
33__FBSDID("$FreeBSD: head/lib/libc/locale/wctype.c 227753 2011-11-20 14:45:42Z theraven $");
33__FBSDID("$FreeBSD: head/lib/libc/locale/wctype.c 228269 2011-12-05 00:00:47Z jilles $");
34
35#include <ctype.h>
36#include <string.h>
37#include <wctype.h>
38#include <xlocale.h>
39
40#undef iswctype
41int

--- 10 unchanged lines hidden (view full) ---

52/*
53 * IMPORTANT: The 0 in the call to this function in wctype() must be changed to
54 * __get_locale() if wctype_l() is ever modified to actually use the locale
55 * parameter.
56 */
57wctype_t
58wctype_l(const char *property, locale_t locale)
59{
34
35#include <ctype.h>
36#include <string.h>
37#include <wctype.h>
38#include <xlocale.h>
39
40#undef iswctype
41int

--- 10 unchanged lines hidden (view full) ---

52/*
53 * IMPORTANT: The 0 in the call to this function in wctype() must be changed to
54 * __get_locale() if wctype_l() is ever modified to actually use the locale
55 * parameter.
56 */
57wctype_t
58wctype_l(const char *property, locale_t locale)
59{
60 static const struct {
61 const char *name;
62 wctype_t mask;
63 } props[] = {
64 { "alnum", _CTYPE_A|_CTYPE_D },
65 { "alpha", _CTYPE_A },
66 { "blank", _CTYPE_B },
67 { "cntrl", _CTYPE_C },
68 { "digit", _CTYPE_D },
69 { "graph", _CTYPE_G },
70 { "lower", _CTYPE_L },
71 { "print", _CTYPE_R },
72 { "punct", _CTYPE_P },
73 { "space", _CTYPE_S },
74 { "upper", _CTYPE_U },
75 { "xdigit", _CTYPE_X },
76 { "ideogram", _CTYPE_I }, /* BSD extension */
77 { "special", _CTYPE_T }, /* BSD extension */
78 { "phonogram", _CTYPE_Q }, /* BSD extension */
79 { "rune", 0xFFFFFF00L }, /* BSD extension */
80 { NULL, 0UL }, /* Default */
60 const char *propnames =
61 "alnum\0"
62 "alpha\0"
63 "blank\0"
64 "cntrl\0"
65 "digit\0"
66 "graph\0"
67 "lower\0"
68 "print\0"
69 "punct\0"
70 "space\0"
71 "upper\0"
72 "xdigit\0"
73 "ideogram\0" /* BSD extension */
74 "special\0" /* BSD extension */
75 "phonogram\0" /* BSD extension */
76 "rune\0"; /* BSD extension */
77 static const wctype_t propmasks[] = {
78 _CTYPE_A|_CTYPE_D,
79 _CTYPE_A,
80 _CTYPE_B,
81 _CTYPE_C,
82 _CTYPE_D,
83 _CTYPE_G,
84 _CTYPE_L,
85 _CTYPE_R,
86 _CTYPE_P,
87 _CTYPE_S,
88 _CTYPE_U,
89 _CTYPE_X,
90 _CTYPE_I,
91 _CTYPE_T,
92 _CTYPE_Q,
93 0xFFFFFF00L
81 };
94 };
82 int i;
95 size_t len1, len2;
96 const char *p;
97 const wctype_t *q;
83
98
84 i = 0;
85 while (props[i].name != NULL && strcmp(props[i].name, property) != 0)
86 i++;
99 len1 = strlen(property);
100 q = propmasks;
101 for (p = propnames; (len2 = strlen(p)) != 0; p += len2 + 1) {
102 if (len1 == len2 && memcmp(property, p, len1) == 0)
103 return (*q);
104 q++;
105 }
87
106
88 return (props[i].mask);
107 return (0UL);
89}
90
91wctype_t wctype(const char *property)
92{
93 return wctype_l(property, 0);
94}
108}
109
110wctype_t wctype(const char *property)
111{
112 return wctype_l(property, 0);
113}