Deleted Added
full compact
gb2312.c (128089) gb2312.c (128155)
1/*-
2 * Copyright (c) 2004 Tim J. Robbins. All rights reserved.
3 * Copyright (c) 2003 David Xu <davidxu@freebsd.org>
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:

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

21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25 * SUCH DAMAGE.
26 */
27
28#include <sys/param.h>
1/*-
2 * Copyright (c) 2004 Tim J. Robbins. All rights reserved.
3 * Copyright (c) 2003 David Xu <davidxu@freebsd.org>
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:

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

21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25 * SUCH DAMAGE.
26 */
27
28#include <sys/param.h>
29__FBSDID("$FreeBSD: head/lib/libc/locale/gb2312.c 128089 2004-04-10 14:36:57Z davidxu $");
29__FBSDID("$FreeBSD: head/lib/libc/locale/gb2312.c 128155 2004-04-12 13:09:18Z tjr $");
30
30
31#include <errno.h>
31#include <runetype.h>
32#include <stdlib.h>
33#include <string.h>
34#include <wchar.h>
35
36extern size_t (*__mbrtowc)(wchar_t * __restrict, const char * __restrict,
37 size_t, mbstate_t * __restrict);
38extern int (*__mbsinit)(const mbstate_t *);

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

97{
98 _GB2312State *gs;
99 wchar_t wc;
100 int i, len, ocount;
101 size_t ncopy;
102
103 gs = (_GB2312State *)ps;
104
32#include <runetype.h>
33#include <stdlib.h>
34#include <string.h>
35#include <wchar.h>
36
37extern size_t (*__mbrtowc)(wchar_t * __restrict, const char * __restrict,
38 size_t, mbstate_t * __restrict);
39extern int (*__mbsinit)(const mbstate_t *);

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

98{
99 _GB2312State *gs;
100 wchar_t wc;
101 int i, len, ocount;
102 size_t ncopy;
103
104 gs = (_GB2312State *)ps;
105
106 if (gs->count < 0 || gs->count > sizeof(gs->bytes)) {
107 errno = EINVAL;
108 return ((size_t)-1);
109 }
110
105 if (s == NULL) {
106 s = "";
107 n = 1;
108 pwc = NULL;
109 }
110
111 ncopy = MIN(MIN(n, MB_CUR_MAX), sizeof(gs->bytes) - gs->count);
112 memcpy(gs->bytes + gs->count, s, ncopy);

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

123 wc = (wc << 8) | (unsigned char)*s++;
124 if (pwc != NULL)
125 *pwc = wc;
126 gs->count = 0;
127 return (wc == L'\0' ? 0 : len - ocount);
128}
129
130size_t
111 if (s == NULL) {
112 s = "";
113 n = 1;
114 pwc = NULL;
115 }
116
117 ncopy = MIN(MIN(n, MB_CUR_MAX), sizeof(gs->bytes) - gs->count);
118 memcpy(gs->bytes + gs->count, s, ncopy);

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

129 wc = (wc << 8) | (unsigned char)*s++;
130 if (pwc != NULL)
131 *pwc = wc;
132 gs->count = 0;
133 return (wc == L'\0' ? 0 : len - ocount);
134}
135
136size_t
131_GB2312_wcrtomb(char * __restrict s, wchar_t wc,
132 mbstate_t * __restrict ps __unused)
137_GB2312_wcrtomb(char * __restrict s, wchar_t wc, mbstate_t * __restrict ps)
133{
138{
139 _GB2312State *gs;
134
140
141 gs = (_GB2312State *)ps;
142
143 if (gs->count != 0) {
144 errno = EINVAL;
145 return ((size_t)-1);
146 }
147
135 if (s == NULL)
136 /* Reset to initial shift state (no-op) */
137 return (1);
138 if (wc & 0x8000) {
139 *s++ = (wc >> 8) & 0xff;
140 *s = wc & 0xff;
141 return (2);
142 }
143 *s = wc & 0xff;
144 return (1);
145}
148 if (s == NULL)
149 /* Reset to initial shift state (no-op) */
150 return (1);
151 if (wc & 0x8000) {
152 *s++ = (wc >> 8) & 0xff;
153 *s = wc & 0xff;
154 return (2);
155 }
156 *s = wc & 0xff;
157 return (1);
158}