diff --git a/libc/Android.mk b/libc/Android.mk index 1dff5ab60..c0f69fdb3 100644 --- a/libc/Android.mk +++ b/libc/Android.mk @@ -364,11 +364,14 @@ libc_upstream_openbsd_src_files := \ upstream-openbsd/lib/libc/stdio/fgetpos.c \ upstream-openbsd/lib/libc/stdio/fgets.c \ upstream-openbsd/lib/libc/stdio/fgetwc.c \ + upstream-openbsd/lib/libc/stdio/fgetws.c \ upstream-openbsd/lib/libc/stdio/fileno.c \ upstream-openbsd/lib/libc/stdio/fprintf.c \ upstream-openbsd/lib/libc/stdio/fpurge.c \ upstream-openbsd/lib/libc/stdio/fputc.c \ upstream-openbsd/lib/libc/stdio/fputs.c \ + upstream-openbsd/lib/libc/stdio/fputwc.c \ + upstream-openbsd/lib/libc/stdio/fputws.c \ upstream-openbsd/lib/libc/stdio/fread.c \ upstream-openbsd/lib/libc/stdio/freopen.c \ upstream-openbsd/lib/libc/stdio/fscanf.c \ @@ -378,18 +381,23 @@ libc_upstream_openbsd_src_files := \ upstream-openbsd/lib/libc/stdio/funopen.c \ upstream-openbsd/lib/libc/stdio/fvwrite.c \ upstream-openbsd/lib/libc/stdio/fwalk.c \ + upstream-openbsd/lib/libc/stdio/fwide.c \ upstream-openbsd/lib/libc/stdio/fwscanf.c \ upstream-openbsd/lib/libc/stdio/getc.c \ upstream-openbsd/lib/libc/stdio/getchar.c \ upstream-openbsd/lib/libc/stdio/getdelim.c \ upstream-openbsd/lib/libc/stdio/getline.c \ upstream-openbsd/lib/libc/stdio/gets.c \ + upstream-openbsd/lib/libc/stdio/getwc.c \ + upstream-openbsd/lib/libc/stdio/getwchar.c \ upstream-openbsd/lib/libc/stdio/perror.c \ upstream-openbsd/lib/libc/stdio/printf.c \ upstream-openbsd/lib/libc/stdio/putc.c \ upstream-openbsd/lib/libc/stdio/putchar.c \ upstream-openbsd/lib/libc/stdio/puts.c \ upstream-openbsd/lib/libc/stdio/putw.c \ + upstream-openbsd/lib/libc/stdio/putwc.c \ + upstream-openbsd/lib/libc/stdio/putwchar.c \ upstream-openbsd/lib/libc/stdio/refill.c \ upstream-openbsd/lib/libc/stdio/remove.c \ upstream-openbsd/lib/libc/stdio/rewind.c \ diff --git a/libc/bionic/wchar.cpp b/libc/bionic/wchar.cpp index d23b4b7ee..16021fad8 100644 --- a/libc/bionic/wchar.cpp +++ b/libc/bionic/wchar.cpp @@ -105,30 +105,6 @@ int iswctype(wint_t wc, wctype_t char_class) { } } -wchar_t* fgetws(wchar_t* ws, int n, FILE* stream) { - return reinterpret_cast(fgets(reinterpret_cast(ws), n, stream)); -} - -wint_t fputwc(wchar_t wc, FILE* stream) { - return static_cast(fputc(static_cast(wc), stream)); -} - -int fputws(const wchar_t* str, FILE* stream) { - return fputs(reinterpret_cast(str), stream ); -} - -int fwide(FILE* /*stream*/, int mode) { - return mode; -} - -wint_t getwc(FILE* stream) { - return getc(stream); -} - -wint_t getwchar() { - return getchar(); -} - int mbsinit(const mbstate_t* /*ps*/) { return 1; } @@ -186,14 +162,6 @@ size_t mbsrtowcs(wchar_t* dst, const char** src, size_t dst_size, mbstate_t* ps) return mbsnrtowcs(dst, src, SIZE_MAX, dst_size, ps); } -wint_t putwc(wchar_t wc, FILE* stream) { - return fputc(static_cast(wc), stream); -} - -wint_t putwchar(wchar_t wc) { - return putchar(static_cast(wc)); -} - wint_t towlower(wint_t wc) { return tolower(wc); } diff --git a/libc/upstream-openbsd/lib/libc/stdio/fgetws.c b/libc/upstream-openbsd/lib/libc/stdio/fgetws.c new file mode 100644 index 000000000..e8cd24900 --- /dev/null +++ b/libc/upstream-openbsd/lib/libc/stdio/fgetws.c @@ -0,0 +1,79 @@ +/* $OpenBSD: fgetws.c,v 1.6 2009/11/09 00:18:27 kurt Exp $ */ +/* $NetBSD: fgetws.c,v 1.1 2003/03/07 07:11:37 tshiozak Exp $ */ + +/*- + * Copyright (c) 2002 Tim J. Robbins. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * Original version ID: + * FreeBSD: src/lib/libc/stdio/fgetws.c,v 1.4 2002/09/20 13:25:40 tjr Exp + * + */ + +#include +#include +#include +#include "local.h" + +wchar_t * +fgetws(wchar_t * __restrict ws, int n, FILE * __restrict fp) +{ + wchar_t *wsp; + wint_t wc; + + FLOCKFILE(fp); + _SET_ORIENTATION(fp, 1); + + if (n <= 0) { + errno = EINVAL; + goto error; + } + + wsp = ws; + while (n-- > 1) { + if ((wc = __fgetwc_unlock(fp)) == WEOF && errno == EILSEQ) { + goto error; + } + if (wc == WEOF) { + if (wsp == ws) { + /* EOF/error, no characters read yet. */ + goto error; + } + break; + } + *wsp++ = (wchar_t)wc; + if (wc == L'\n') { + break; + } + } + + *wsp++ = L'\0'; + FUNLOCKFILE(fp); + + return (ws); + +error: + FUNLOCKFILE(fp); + return (NULL); +} diff --git a/libc/upstream-openbsd/lib/libc/stdio/fputwc.c b/libc/upstream-openbsd/lib/libc/stdio/fputwc.c new file mode 100644 index 000000000..9db70d061 --- /dev/null +++ b/libc/upstream-openbsd/lib/libc/stdio/fputwc.c @@ -0,0 +1,88 @@ +/* $OpenBSD: fputwc.c,v 1.4 2009/11/09 00:18:27 kurt Exp $ */ +/* $NetBSD: fputwc.c,v 1.3 2003/03/07 07:11:37 tshiozak Exp $ */ + +/*- + * Copyright (c)2001 Citrus Project, + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $Citrus$ + */ + +#include +#include +#include +#include +#include "local.h" +#include "fvwrite.h" + +wint_t +__fputwc_unlock(wchar_t wc, FILE *fp) +{ + struct wchar_io_data *wcio; + mbstate_t *st; + size_t size; + char buf[MB_LEN_MAX]; + struct __suio uio; + struct __siov iov; + + /* LINTED we don't play with buf */ + iov.iov_base = (void *)buf; + uio.uio_iov = &iov; + uio.uio_iovcnt = 1; + + _SET_ORIENTATION(fp, 1); + wcio = WCIO_GET(fp); + if (wcio == 0) { + errno = ENOMEM; + return WEOF; + } + + wcio->wcio_ungetwc_inbuf = 0; + st = &wcio->wcio_mbstate_out; + + size = wcrtomb(buf, wc, st); + if (size == (size_t)-1) { + errno = EILSEQ; + return WEOF; + } + + uio.uio_resid = iov.iov_len = size; + if (__sfvwrite(fp, &uio)) { + return WEOF; + } + + return (wint_t)wc; +} + +wint_t +fputwc(wchar_t wc, FILE *fp) +{ + wint_t r; + + FLOCKFILE(fp); + r = __fputwc_unlock(wc, fp); + FUNLOCKFILE(fp); + + return (r); +} diff --git a/libc/upstream-openbsd/lib/libc/stdio/fputws.c b/libc/upstream-openbsd/lib/libc/stdio/fputws.c new file mode 100644 index 000000000..c4c2d8ea0 --- /dev/null +++ b/libc/upstream-openbsd/lib/libc/stdio/fputws.c @@ -0,0 +1,58 @@ +/* $OpenBSD: fputws.c,v 1.6 2013/04/17 17:40:35 tedu Exp $ */ +/* $NetBSD: fputws.c,v 1.1 2003/03/07 07:11:37 tshiozak Exp $ */ + +/*- + * Copyright (c) 2002 Tim J. Robbins. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * Original version ID: + * FreeBSD: src/lib/libc/stdio/fputws.c,v 1.4 2002/09/20 13:25:40 tjr Exp + */ + +#include +#include +#include +#include "local.h" + +wint_t __fputwc_unlock(wchar_t wc, FILE *fp); + +int +fputws(ws, fp) + const wchar_t * __restrict ws; + FILE * __restrict fp; +{ + FLOCKFILE(fp); + _SET_ORIENTATION(fp, 1); + + while (*ws != '\0') { + if (__fputwc_unlock(*ws++, fp) == WEOF) { + FUNLOCKFILE(fp); + return (-1); + } + } + + FUNLOCKFILE(fp); + + return (0); +} diff --git a/libc/upstream-openbsd/lib/libc/stdio/fwide.c b/libc/upstream-openbsd/lib/libc/stdio/fwide.c new file mode 100644 index 000000000..93cddc68e --- /dev/null +++ b/libc/upstream-openbsd/lib/libc/stdio/fwide.c @@ -0,0 +1,64 @@ +/* $OpenBSD: fwide.c,v 1.4 2009/11/09 00:18:27 kurt Exp $ */ +/* $NetBSD: fwide.c,v 1.2 2003/01/18 11:29:54 thorpej Exp $ */ + +/*- + * Copyright (c)2001 Citrus Project, + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $Citrus$ + */ + +#include +#include +#include "local.h" + +int +fwide(FILE *fp, int mode) +{ + struct wchar_io_data *wcio; + + /* + * this implementation use only -1, 0, 1 + * for mode value. + * (we don't need to do this, but + * this can make things simpler.) + */ + if (mode > 0) + mode = 1; + else if (mode < 0) + mode = -1; + + FLOCKFILE(fp); + wcio = WCIO_GET(fp); + if (!wcio) + return 0; /* XXX */ + + if (wcio->wcio_mode == 0 && mode != 0) + wcio->wcio_mode = mode; + else + mode = wcio->wcio_mode; + FUNLOCKFILE(fp); + + return mode; +} diff --git a/libc/upstream-openbsd/lib/libc/stdio/getwc.c b/libc/upstream-openbsd/lib/libc/stdio/getwc.c new file mode 100644 index 000000000..e9bbb7c24 --- /dev/null +++ b/libc/upstream-openbsd/lib/libc/stdio/getwc.c @@ -0,0 +1,45 @@ +/* $OpenBSD: getwc.c,v 1.1 2005/06/17 20:40:32 espie Exp $ */ +/* $NetBSD: getwc.c,v 1.2 2003/01/18 11:29:55 thorpej Exp $ */ + +/*- + * Copyright (c)2001 Citrus Project, + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $Citrus$ + */ + +#include +#include + +/* + * A subroutine version of the macro getwc. + */ +#undef getwc + +wint_t +getwc(FILE *fp) +{ + + return fgetwc(fp); +} diff --git a/libc/upstream-openbsd/lib/libc/stdio/getwchar.c b/libc/upstream-openbsd/lib/libc/stdio/getwchar.c new file mode 100644 index 000000000..2a112ed8f --- /dev/null +++ b/libc/upstream-openbsd/lib/libc/stdio/getwchar.c @@ -0,0 +1,45 @@ +/* $OpenBSD: getwchar.c,v 1.1 2005/06/17 20:40:32 espie Exp $ */ +/* $NetBSD: getwchar.c,v 1.2 2003/01/18 11:29:55 thorpej Exp $ */ + +/*- + * Copyright (c)2001 Citrus Project, + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $Citrus$ + */ + +#include +#include + +/* + * A subroutine version of the macro getwchar. + */ +#undef getwchar + +wint_t +getwchar() +{ + + return fgetwc(stdin); +} diff --git a/libc/upstream-openbsd/lib/libc/stdio/putwc.c b/libc/upstream-openbsd/lib/libc/stdio/putwc.c new file mode 100644 index 000000000..8e2ff2dca --- /dev/null +++ b/libc/upstream-openbsd/lib/libc/stdio/putwc.c @@ -0,0 +1,45 @@ +/* $OpenBSD: putwc.c,v 1.1 2005/06/17 20:40:32 espie Exp $ */ +/* $NetBSD: putwc.c,v 1.3 2003/01/18 11:29:56 thorpej Exp $ */ + +/*- + * Copyright (c)2001 Citrus Project, + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $Citrus$ + */ + +#include +#include + +/* + * A subroutine version of the macro putwc. + */ +#undef putwc + +wint_t +putwc(wchar_t wc, FILE *fp) +{ + + return fputwc(wc, fp); +} diff --git a/libc/upstream-openbsd/lib/libc/stdio/putwchar.c b/libc/upstream-openbsd/lib/libc/stdio/putwchar.c new file mode 100644 index 000000000..940ec05ab --- /dev/null +++ b/libc/upstream-openbsd/lib/libc/stdio/putwchar.c @@ -0,0 +1,45 @@ +/* $OpenBSD: putwchar.c,v 1.1 2005/06/17 20:40:32 espie Exp $ */ +/* $NetBSD: putwchar.c,v 1.3 2003/01/18 11:29:56 thorpej Exp $ */ + +/*- + * Copyright (c)2001 Citrus Project, + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $Citrus$ + */ + +#include +#include + +/* + * A subroutine version of the macro putwchar. + */ +#undef putwchar + +wint_t +putwchar(wchar_t wc) +{ + + return fputwc(wc, stdout); +}