1 2 #include <picolibc.h> 3 4 #ifdef _FVWRITE_IN_STREAMIO 5 6 #include <stdio.h> 7 #include <wchar.h> 8 #include "fvwrite.h" 9 10 /* 11 * Flush out all the vectors defined by the given uio, 12 * then reset it so that it can be reused. 13 */ 14 int __swprint(FILE * fp,register struct __suio * uio)15__swprint ( 16 FILE *fp, 17 register struct __suio *uio) 18 { 19 register int err = 0; 20 struct __siov *iov; 21 wchar_t *p; 22 int i, len; 23 24 if (uio->uio_resid == 0) { 25 uio->uio_iovcnt = 0; 26 return (0); 27 } 28 iov = uio->uio_iov; 29 for (; uio->uio_resid != 0; 30 uio->uio_resid -= len, iov++) { 31 p = (wchar_t *) iov->iov_base; 32 len = iov->iov_len; 33 for (i = 0; i < len; i++) { 34 if (fputwc (p[i], fp) == WEOF) { 35 err = -1; 36 goto out; 37 } 38 } 39 } 40 out: 41 uio->uio_resid = 0; 42 uio->uio_iovcnt = 0; 43 return (err); 44 } 45 46 #endif 47