Deleted Added
full compact
wcrtomb.c (113331) wcrtomb.c (121845)
1/*-
1/*-
2 * Copyright (c) 2002 Tim J. Robbins.
2 * Copyright (c) 2002, 2003 Tim J. Robbins.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright

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

20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 */
26
27#include <sys/cdefs.h>
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright

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

20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 */
26
27#include <sys/cdefs.h>
28__FBSDID("$FreeBSD: head/lib/libc/locale/wcrtomb.c 113331 2003-04-10 09:20:38Z tjr $");
28__FBSDID("$FreeBSD: head/lib/libc/locale/wcrtomb.c 121845 2003-11-01 05:13:13Z tjr $");
29
30#include <errno.h>
31#include <limits.h>
32#include <rune.h>
33#include <stdlib.h>
34#include <wchar.h>
35
29
30#include <errno.h>
31#include <limits.h>
32#include <rune.h>
33#include <stdlib.h>
34#include <wchar.h>
35
36extern size_t (*__wcrtomb)(char * __restrict, wchar_t, mbstate_t * __restrict);
37
36size_t
38size_t
37wcrtomb(char * __restrict s, wchar_t wc, mbstate_t * __restrict ps __unused)
39wcrtomb(char * __restrict s, wchar_t wc, mbstate_t * __restrict ps)
38{
40{
41
42 return (__wcrtomb(s, wc, ps));
43}
44
45/*
46 * Emulate the ISO C wcrtomb() function in terms of the deprecated
47 * 4.4BSD sputrune() function.
48 */
49size_t
50__emulated_wcrtomb(char * __restrict s, wchar_t wc,
51 mbstate_t * __restrict ps __unused)
52{
39 char *e;
40 char buf[MB_LEN_MAX];
41
42 if (s == NULL) {
43 s = buf;
44 wc = L'\0';
45 }
46 sputrune(wc, s, MB_CUR_MAX, &e);
47 if (e == NULL) {
48 errno = EILSEQ;
49 return ((size_t)-1);
50 }
51 return ((size_t)(e - s));
52}
53 char *e;
54 char buf[MB_LEN_MAX];
55
56 if (s == NULL) {
57 s = buf;
58 wc = L'\0';
59 }
60 sputrune(wc, s, MB_CUR_MAX, &e);
61 if (e == NULL) {
62 errno = EILSEQ;
63 return ((size_t)-1);
64 }
65 return ((size_t)(e - s));
66}