wcrtomb.c (58d38e25205c6ee5ef0796ffa2cd8e2ca6c6e7f3) wcrtomb.c (583efa1268dfc7b55ec568903d4fd8027ec7db0f)
1/*-
2 * Copyright (c) 2002 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

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

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$");
29
30#include <errno.h>
1/*-
2 * Copyright (c) 2002 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

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

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$");
29
30#include <errno.h>
31#include <limits.h>
31#include <rune.h>
32#include <stdlib.h>
33#include <wchar.h>
34
35size_t
36wcrtomb(char * __restrict s, wchar_t wc, mbstate_t * __restrict ps __unused)
37{
38 char *e;
32#include <rune.h>
33#include <stdlib.h>
34#include <wchar.h>
35
36size_t
37wcrtomb(char * __restrict s, wchar_t wc, mbstate_t * __restrict ps __unused)
38{
39 char *e;
40 char buf[MB_LEN_MAX];
39
41
42 if (s == NULL)
43 s = buf;
40 sputrune(wc, s, MB_CUR_MAX, &e);
41 if (e == NULL) {
42 errno = EILSEQ;
43 return ((size_t)-1);
44 }
45 return ((size_t)(e - s));
46}
44 sputrune(wc, s, MB_CUR_MAX, &e);
45 if (e == NULL) {
46 errno = EILSEQ;
47 return ((size_t)-1);
48 }
49 return ((size_t)(e - s));
50}