wctype.c revision 101253
1101253Stjr/*-
2101253Stjr * Copyright (c) 2002 Tim J. Robbins.
3101253Stjr * All rights reserved.
4101253Stjr *
5101253Stjr * Redistribution and use in source and binary forms, with or without
6101253Stjr * modification, are permitted provided that the following conditions
7101253Stjr * are met:
8101253Stjr * 1. Redistributions of source code must retain the above copyright
9101253Stjr *    notice, this list of conditions and the following disclaimer.
10101253Stjr * 2. Redistributions in binary form must reproduce the above copyright
11101253Stjr *    notice, this list of conditions and the following disclaimer in the
12101253Stjr *    documentation and/or other materials provided with the distribution.
13101253Stjr *
14101253Stjr * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15101253Stjr * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16101253Stjr * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17101253Stjr * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18101253Stjr * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19101253Stjr * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20101253Stjr * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21101253Stjr * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22101253Stjr * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23101253Stjr * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24101253Stjr * SUCH DAMAGE.
25101253Stjr */
26101253Stjr
27101253Stjr#include <sys/cdefs.h>
28101253Stjr__FBSDID("$FreeBSD: head/lib/libc/locale/wctype.c 101253 2002-08-03 04:18:40Z tjr $");
29101253Stjr
30101253Stjr#include <ctype.h>
31101253Stjr#include <string.h>
32101253Stjr#include <wctype.h>
33101253Stjr
34101253Stjr#undef iswctype
35101253Stjrint
36101253Stjriswctype(wint_t wc, wctype_t charclass)
37101253Stjr{
38101253Stjr
39101253Stjr	return (__istype(wc, charclass));
40101253Stjr}
41101253Stjr
42101253Stjrwctype_t
43101253Stjrwctype(const char *property)
44101253Stjr{
45101253Stjr	struct {
46101253Stjr		const char	*name;
47101253Stjr		wctype_t	 mask;
48101253Stjr	} props[] = {
49101253Stjr		{ "alnum",	_CTYPE_A|_CTYPE_D },
50101253Stjr		{ "alpha",	_CTYPE_A },
51101253Stjr		{ "blank",	_CTYPE_B },
52101253Stjr		{ "cntrl",	_CTYPE_C },
53101253Stjr		{ "digit",	_CTYPE_D },
54101253Stjr		{ "graph",	_CTYPE_G },
55101253Stjr		{ "lower",	_CTYPE_L },
56101253Stjr		{ "print",	_CTYPE_R },
57101253Stjr		{ "punct",	_CTYPE_P },
58101253Stjr		{ "space",	_CTYPE_S },
59101253Stjr		{ "upper",	_CTYPE_U },
60101253Stjr		{ "xdigit",	_CTYPE_X },
61101253Stjr		{ "ideogram",	_CTYPE_I },	/* BSD extension */
62101253Stjr		{ "special",	_CTYPE_T },	/* BSD extension */
63101253Stjr		{ "phonogram",	_CTYPE_Q },	/* BSD extension */
64101253Stjr		{ NULL,		0L },		/* Default */
65101253Stjr	};
66101253Stjr	int i;
67101253Stjr
68101253Stjr	i = 0;
69101253Stjr	while (props[i].name != NULL && strcmp(props[i].name, property) != 0)
70101253Stjr		i++;
71101253Stjr
72101253Stjr	return (props[i].mask);
73101253Stjr}
74