fputwc.c - scc - simple c99 compiler
(HTM) git clone git://git.simple-cc.org/scc
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) Submodules
(DIR) README
(DIR) LICENSE
---
fputwc.c (421B)
---
1 #include <limits.h>
2 #include <stdio.h>
3 #include <string.h>
4 #include <wchar.h>
5
6 #undef fputwc
7
8 wint_t
9 _fputwc(wchar_t wc, FILE *fp, int *np)
10 {
11 int n;
12 char buf[MB_LEN_MAX];
13
14 if ((n = wcrtomb(buf, wc, NULL)) == -1)
15 goto err;
16 if (fwrite(buf, 1, n, fp) < n)
17 goto err;
18
19 if (np)
20 *np = n;
21
22 return wc;
23
24 err:
25 fp->flags |= _IOERR;
26 return WEOF;
27 }
28
29 wint_t
30 fputwc(wchar_t wc, FILE *fp)
31 {
32 return _fputwc(wc, fp, NULL);
33 }