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} |