diff options
| author | Tim J. Robbins <tjr@FreeBSD.org> | 2002-08-31 11:26:55 +0000 | 
|---|---|---|
| committer | Tim J. Robbins <tjr@FreeBSD.org> | 2002-08-31 11:26:55 +0000 | 
| commit | 7438fc3aa8a196e1af28f4b09418a6733af0d69a (patch) | |
| tree | fefc8372c5bc813e8c78bdfd04b6c64d791bb806 /lib/libc | |
| parent | 7b2f27b0fe1959aad1d2a995f15e8022e73544d7 (diff) | |
Notes
Diffstat (limited to 'lib/libc')
| -rw-r--r-- | lib/libc/locale/Makefile.inc | 11 | ||||
| -rw-r--r-- | lib/libc/locale/mblen.c | 57 | ||||
| -rw-r--r-- | lib/libc/locale/mbstowcs.c | 67 | ||||
| -rw-r--r-- | lib/libc/locale/mbtowc.c | 61 | ||||
| -rw-r--r-- | lib/libc/locale/wcstombs.c (renamed from lib/libc/locale/ansi.c) | 80 | ||||
| -rw-r--r-- | lib/libc/locale/wctomb.c | 62 | 
6 files changed, 253 insertions, 85 deletions
diff --git a/lib/libc/locale/Makefile.inc b/lib/libc/locale/Makefile.inc index f8634d04e159..cfaada3dee22 100644 --- a/lib/libc/locale/Makefile.inc +++ b/lib/libc/locale/Makefile.inc @@ -4,14 +4,15 @@  # locale sources  .PATH: ${.CURDIR}/../libc/${MACHINE_ARCH}/locale ${.CURDIR}/../libc/locale -SRCS+=	ansi.c big5.c btowc.c collate.c collcmp.c euc.c fix_grouping.c frune.c \ +SRCS+=	big5.c btowc.c collate.c collcmp.c euc.c fix_grouping.c frune.c \  	isctype.c iswctype.c \ -	ldpart.c lmessages.c lmonetary.c lnumeric.c localeconv.c mbrlen.c \ -	mbrtowc.c mbrune.c mbsinit.c mbsrtowcs.c \ +	ldpart.c lmessages.c lmonetary.c lnumeric.c localeconv.c mblen.c \ +	mbrlen.c \ +	mbrtowc.c mbrune.c mbsinit.c mbsrtowcs.c mbtowc.c mbstowcs.c \  	mskanji.c nl_langinfo.c nomacros.c none.c rune.c \  	runetype.c setinvalidrune.c setlocale.c setrunelocale.c table.c \ -	tolower.c toupper.c utf2.c wcrtomb.c wcsrtombs.c \ -	wctob.c wctrans.c wctype.c wcwidth.c +	tolower.c toupper.c utf2.c wcrtomb.c wcsrtombs.c wcstombs.c \ +	wctob.c wctomb.c wctrans.c wctype.c wcwidth.c  .if ${LIB} == "c"  MAN+=	btowc.3 \ diff --git a/lib/libc/locale/mblen.c b/lib/libc/locale/mblen.c new file mode 100644 index 000000000000..2544ba82e8fb --- /dev/null +++ b/lib/libc/locale/mblen.c @@ -0,0 +1,57 @@ +/*- + * Copyright (c) 1993 + *	The Regents of the University of California.  All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Paul Borman at Krystal Technologies. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + *    notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + *    notice, this list of conditions and the following disclaimer in the + *    documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + *    must display the following acknowledgement: + *	This product includes software developed by the University of + *	California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + *    may be used to endorse or promote products derived from this software + *    without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <stdlib.h> +#include <stddef.h> +#include <rune.h> + +int +mblen(s, n) +	const char *s; +	size_t n; +{ +	char const *e; + +	if (s == 0 || *s == 0) +		return (0);	/* No support for state dependent encodings. */ + +	if (sgetrune(s, n, &e) == _INVALID_RUNE) +		return (s - e); +	return (e - s); +} diff --git a/lib/libc/locale/mbstowcs.c b/lib/libc/locale/mbstowcs.c new file mode 100644 index 000000000000..5c60a5b2b04a --- /dev/null +++ b/lib/libc/locale/mbstowcs.c @@ -0,0 +1,67 @@ +/*- + * Copyright (c) 1993 + *	The Regents of the University of California.  All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Paul Borman at Krystal Technologies. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + *    notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + *    notice, this list of conditions and the following disclaimer in the + *    documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + *    must display the following acknowledgement: + *	This product includes software developed by the University of + *	California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + *    may be used to endorse or promote products derived from this software + *    without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <stdlib.h> +#include <limits.h> +#include <stddef.h> +#include <rune.h> + +size_t +mbstowcs(pwcs, s, n) +	wchar_t *pwcs; +	const char *s; +	size_t n; +{ +	char const *e; +	int cnt = 0; + +	if (!pwcs || !s) +		return (-1); + +	while (n-- > 0) { +		*pwcs = sgetrune(s, MB_LEN_MAX, &e); +		if (*pwcs == _INVALID_RUNE) +			return (-1); +		if (*pwcs++ == 0) +			break; +		s = e; +		++cnt; +	} +	return (cnt); +} diff --git a/lib/libc/locale/mbtowc.c b/lib/libc/locale/mbtowc.c new file mode 100644 index 000000000000..166ea7991c12 --- /dev/null +++ b/lib/libc/locale/mbtowc.c @@ -0,0 +1,61 @@ +/*- + * Copyright (c) 1993 + *	The Regents of the University of California.  All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Paul Borman at Krystal Technologies. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + *    notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + *    notice, this list of conditions and the following disclaimer in the + *    documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + *    must display the following acknowledgement: + *	This product includes software developed by the University of + *	California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + *    may be used to endorse or promote products derived from this software + *    without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <stdlib.h> +#include <stddef.h> +#include <rune.h> + +int +mbtowc(pwc, s, n) +	wchar_t *pwc; +	const char *s; +	size_t n; +{ +	char const *e; +	rune_t r; + +	if (s == 0 || *s == 0) +		return (0);	/* No support for state dependent encodings. */ + +	if ((r = sgetrune(s, n, &e)) == _INVALID_RUNE) +		return (s - e); +	if (pwc) +		*pwc = r; +	return (e - s); +} diff --git a/lib/libc/locale/ansi.c b/lib/libc/locale/wcstombs.c index 891456a7e312..987ec30296a3 100644 --- a/lib/libc/locale/ansi.c +++ b/lib/libc/locale/wcstombs.c @@ -34,9 +34,6 @@   * SUCH DAMAGE.   */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)ansi.c	8.1 (Berkeley) 6/27/93"; -#endif /* LIBC_SCCS and not lint */  #include <sys/cdefs.h>  __FBSDID("$FreeBSD$"); @@ -45,83 +42,6 @@ __FBSDID("$FreeBSD$");  #include <stddef.h>  #include <rune.h> -int -mblen(s, n) -	const char *s; -	size_t n; -{ -	char const *e; - -	if (s == 0 || *s == 0) -		return (0);	/* No support for state dependent encodings. */ - -	if (sgetrune(s, n, &e) == _INVALID_RUNE) -		return (s - e); -	return (e - s); -} - -int -mbtowc(pwc, s, n) -	wchar_t *pwc; -	const char *s; -	size_t n; -{ -	char const *e; -	rune_t r; - -	if (s == 0 || *s == 0) -		return (0);	/* No support for state dependent encodings. */ - -	if ((r = sgetrune(s, n, &e)) == _INVALID_RUNE) -		return (s - e); -	if (pwc) -		*pwc = r; -	return (e - s); -} - -int -wctomb(s, wchar) -	char *s; -	wchar_t wchar; -{ -	char *e; - -	if (s == 0) -		return (0);	/* No support for state dependent encodings. */ - -	if (wchar == 0) { -		*s = 0; -		return (1); -	} - -	sputrune(wchar, s, MB_CUR_MAX, &e); -	return (e ? e - s : -1); -} - -size_t -mbstowcs(pwcs, s, n) -	wchar_t *pwcs; -	const char *s; -	size_t n; -{ -	char const *e; -	int cnt = 0; - -	if (!pwcs || !s) -		return (-1); - -	while (n-- > 0) { -		*pwcs = sgetrune(s, MB_LEN_MAX, &e); -		if (*pwcs == _INVALID_RUNE) -			return (-1); -		if (*pwcs++ == 0) -			break; -		s = e; -		++cnt; -	} -	return (cnt); -} -  size_t  wcstombs(s, pwcs, n)  	char *s; diff --git a/lib/libc/locale/wctomb.c b/lib/libc/locale/wctomb.c new file mode 100644 index 000000000000..ca5ed8db0095 --- /dev/null +++ b/lib/libc/locale/wctomb.c @@ -0,0 +1,62 @@ +/*- + * Copyright (c) 1993 + *	The Regents of the University of California.  All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Paul Borman at Krystal Technologies. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + *    notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + *    notice, this list of conditions and the following disclaimer in the + *    documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + *    must display the following acknowledgement: + *	This product includes software developed by the University of + *	California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + *    may be used to endorse or promote products derived from this software + *    without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <stdlib.h> +#include <limits.h> +#include <stddef.h> +#include <rune.h> + +int +wctomb(s, wchar) +	char *s; +	wchar_t wchar; +{ +	char *e; + +	if (s == 0) +		return (0);	/* No support for state dependent encodings. */ + +	if (wchar == 0) { +		*s = 0; +		return (1); +	} + +	sputrune(wchar, s, MB_CUR_MAX, &e); +	return (e ? e - s : -1); +}  | 
