Merge "More stdio one-liners."
This commit is contained in:
commit
1d8b312a07
19 changed files with 128 additions and 818 deletions
|
@ -417,7 +417,6 @@ cc_library_static {
|
|||
"upstream-openbsd/lib/libc/net/ntohs.c",
|
||||
"upstream-openbsd/lib/libc/net/res_random.c",
|
||||
"upstream-openbsd/lib/libc/stdio/asprintf.c",
|
||||
"upstream-openbsd/lib/libc/stdio/dprintf.c",
|
||||
"upstream-openbsd/lib/libc/stdio/fflush.c",
|
||||
"upstream-openbsd/lib/libc/stdio/fgetln.c",
|
||||
"upstream-openbsd/lib/libc/stdio/fgets.c",
|
||||
|
@ -425,20 +424,14 @@ cc_library_static {
|
|||
"upstream-openbsd/lib/libc/stdio/fgetws.c",
|
||||
"upstream-openbsd/lib/libc/stdio/flags.c",
|
||||
"upstream-openbsd/lib/libc/stdio/fmemopen.c",
|
||||
"upstream-openbsd/lib/libc/stdio/fprintf.c",
|
||||
"upstream-openbsd/lib/libc/stdio/fpurge.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/fscanf.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/fwprintf.c",
|
||||
"upstream-openbsd/lib/libc/stdio/fwrite.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/gets.c",
|
||||
"upstream-openbsd/lib/libc/stdio/makebuf.c",
|
||||
|
@ -446,17 +439,11 @@ cc_library_static {
|
|||
"upstream-openbsd/lib/libc/stdio/open_memstream.c",
|
||||
"upstream-openbsd/lib/libc/stdio/open_wmemstream.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/remove.c",
|
||||
"upstream-openbsd/lib/libc/stdio/rget.c",
|
||||
"upstream-openbsd/lib/libc/stdio/scanf.c",
|
||||
"upstream-openbsd/lib/libc/stdio/setvbuf.c",
|
||||
"upstream-openbsd/lib/libc/stdio/sscanf.c",
|
||||
"upstream-openbsd/lib/libc/stdio/swprintf.c",
|
||||
"upstream-openbsd/lib/libc/stdio/swscanf.c",
|
||||
"upstream-openbsd/lib/libc/stdio/tempnam.c",
|
||||
"upstream-openbsd/lib/libc/stdio/tmpnam.c",
|
||||
"upstream-openbsd/lib/libc/stdio/ungetc.c",
|
||||
|
@ -473,8 +460,6 @@ cc_library_static {
|
|||
"upstream-openbsd/lib/libc/stdio/vswprintf.c",
|
||||
"upstream-openbsd/lib/libc/stdio/vswscanf.c",
|
||||
"upstream-openbsd/lib/libc/stdio/wbuf.c",
|
||||
"upstream-openbsd/lib/libc/stdio/wprintf.c",
|
||||
"upstream-openbsd/lib/libc/stdio/wscanf.c",
|
||||
"upstream-openbsd/lib/libc/stdio/wsetup.c",
|
||||
"upstream-openbsd/lib/libc/stdlib/abs.c",
|
||||
"upstream-openbsd/lib/libc/stdlib/atoi.c",
|
||||
|
|
|
@ -246,19 +246,9 @@ int __vfwscanf(FILE * __restrict, const wchar_t * __restrict, __va_list);
|
|||
#define NO_PRINTF_PERCENT_N
|
||||
|
||||
/* OpenBSD exposes these in <stdio.h>, but we only want them exposed to the implementation. */
|
||||
#define __sfeof(p) (((p)->_flags & __SEOF) != 0)
|
||||
#define __sferror(p) (((p)->_flags & __SERR) != 0)
|
||||
#define __sclearerr(p) ((void)((p)->_flags &= ~(__SERR|__SEOF)))
|
||||
#if !defined(__cplusplus)
|
||||
#define __sgetc(p) (--(p)->_r < 0 ? __srget(p) : (int)(*(p)->_p++))
|
||||
static __inline int __sputc(int _c, FILE* _p) {
|
||||
if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n')) {
|
||||
return (*_p->_p++ = _c);
|
||||
} else {
|
||||
return (__swbuf(_c, _p));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/* OpenBSD declares these in fvwrite.h but we want to ensure they're hidden. */
|
||||
struct __suio;
|
||||
|
|
|
@ -53,6 +53,13 @@
|
|||
|
||||
#define NDYNAMIC 10 /* add ten more whenever necessary */
|
||||
|
||||
#define PRINTF_IMPL(expr) \
|
||||
va_list ap; \
|
||||
va_start(ap, fmt); \
|
||||
int result = (expr); \
|
||||
va_end(ap); \
|
||||
return result;
|
||||
|
||||
#define std(flags, file) \
|
||||
{0,0,0,flags,file,{0,0},0,__sF+file,__sclose,__sread,nullptr,__swrite, \
|
||||
{(unsigned char *)(__sFext+file), 0},nullptr,0,{0},{0},{0,0},0,0}
|
||||
|
@ -412,7 +419,7 @@ void clearerr(FILE* fp) {
|
|||
}
|
||||
|
||||
int feof_unlocked(FILE* fp) {
|
||||
return __sfeof(fp);
|
||||
return ((fp->_flags & __SEOF) != 0);
|
||||
}
|
||||
|
||||
int feof(FILE* fp) {
|
||||
|
@ -640,6 +647,14 @@ char* ctermid(char* s) {
|
|||
return s ? strcpy(s, _PATH_TTY) : const_cast<char*>(_PATH_TTY);
|
||||
}
|
||||
|
||||
int dprintf(int fd, const char* fmt, ...) {
|
||||
PRINTF_IMPL(vdprintf(fd, fmt, ap));
|
||||
}
|
||||
|
||||
int fprintf(FILE* fp, const char* fmt, ...) {
|
||||
PRINTF_IMPL(vfprintf(fp, fmt, ap));
|
||||
}
|
||||
|
||||
int fgetc(FILE* fp) {
|
||||
return getc(fp);
|
||||
}
|
||||
|
@ -648,6 +663,35 @@ int fputc(int c, FILE* fp) {
|
|||
return putc(c, fp);
|
||||
}
|
||||
|
||||
int fscanf(FILE* fp, const char* fmt, ...) {
|
||||
PRINTF_IMPL(vfscanf(fp, fmt, ap));
|
||||
}
|
||||
|
||||
int fwprintf(FILE* fp, const wchar_t* fmt, ...) {
|
||||
PRINTF_IMPL(vfwprintf(fp, fmt, ap));
|
||||
}
|
||||
|
||||
int fwscanf(FILE* fp, const wchar_t* fmt, ...) {
|
||||
PRINTF_IMPL(vfwscanf(fp, fmt, ap));
|
||||
}
|
||||
|
||||
int getc(FILE* fp) {
|
||||
ScopedFileLock sfl(fp);
|
||||
return getc_unlocked(fp);
|
||||
}
|
||||
|
||||
int getc_unlocked(FILE* fp) {
|
||||
return __sgetc(fp);
|
||||
}
|
||||
|
||||
int getchar_unlocked() {
|
||||
return getc_unlocked(stdin);
|
||||
}
|
||||
|
||||
int getchar() {
|
||||
return getc(stdin);
|
||||
}
|
||||
|
||||
ssize_t getline(char** buf, size_t* len, FILE* fp) {
|
||||
return getdelim(buf, len, '\n', fp);
|
||||
}
|
||||
|
@ -660,6 +704,35 @@ wint_t getwchar() {
|
|||
return fgetwc(stdin);
|
||||
}
|
||||
|
||||
int printf(const char* fmt, ...) {
|
||||
PRINTF_IMPL(vfprintf(stdout, fmt, ap));
|
||||
}
|
||||
|
||||
int putc(int c, FILE* fp) {
|
||||
ScopedFileLock sfl(fp);
|
||||
return putc_unlocked(c, fp);
|
||||
}
|
||||
|
||||
int putc_unlocked(int c, FILE* fp) {
|
||||
if (cantwrite(fp)) {
|
||||
errno = EBADF;
|
||||
return EOF;
|
||||
}
|
||||
_SET_ORIENTATION(fp, -1);
|
||||
if (--fp->_w >= 0 || (fp->_w >= fp->_lbfsize && c != '\n')) {
|
||||
return (*fp->_p++ = c);
|
||||
}
|
||||
return (__swbuf(c, fp));
|
||||
}
|
||||
|
||||
int putchar(int c) {
|
||||
return putc(c, stdout);
|
||||
}
|
||||
|
||||
int putchar_unlocked(int c) {
|
||||
return putc_unlocked(c, stdout);
|
||||
}
|
||||
|
||||
wint_t putwc(wchar_t wc, FILE* fp) {
|
||||
return fputwc(wc, fp);
|
||||
}
|
||||
|
@ -674,6 +747,10 @@ void rewind(FILE* fp) {
|
|||
clearerr_unlocked(fp);
|
||||
}
|
||||
|
||||
int scanf(const char* fmt, ...) {
|
||||
PRINTF_IMPL(vfscanf(stdin, fmt, ap));
|
||||
}
|
||||
|
||||
void setbuf(FILE* fp, char* buf) {
|
||||
setbuffer(fp, buf, BUFSIZ);
|
||||
}
|
||||
|
@ -686,6 +763,14 @@ int setlinebuf(FILE* fp) {
|
|||
return setvbuf(fp, nullptr, _IOLBF, 0);
|
||||
}
|
||||
|
||||
int swprintf(wchar_t* s, size_t n, const wchar_t* fmt, ...) {
|
||||
PRINTF_IMPL(vswprintf(s, n, fmt, ap));
|
||||
}
|
||||
|
||||
int swscanf(const wchar_t* s, const wchar_t* fmt, ...) {
|
||||
PRINTF_IMPL(vswscanf(s, fmt, ap));
|
||||
}
|
||||
|
||||
int vprintf(const char* fmt, va_list ap) {
|
||||
return vfprintf(stdout, fmt, ap);
|
||||
}
|
||||
|
@ -701,3 +786,11 @@ int vwprintf(const wchar_t* fmt, va_list ap) {
|
|||
int vwscanf(const wchar_t* fmt, va_list ap) {
|
||||
return vfwscanf(stdin, fmt, ap);
|
||||
}
|
||||
|
||||
int wprintf(const wchar_t* fmt, ...) {
|
||||
PRINTF_IMPL(vfwprintf(stdout, fmt, ap));
|
||||
}
|
||||
|
||||
int wscanf(const wchar_t* fmt, ...) {
|
||||
PRINTF_IMPL(vfwscanf(stdin, fmt, ap));
|
||||
}
|
||||
|
|
|
@ -1,48 +0,0 @@
|
|||
/* $OpenBSD: dprintf.c,v 1.1 2013/01/30 00:08:13 brad Exp $ */
|
||||
/* $FreeBSD: src/lib/libc/stdio/dprintf.c,v 1.2 2012/11/17 01:49:39 svnexp Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2009 David Schultz <das@FreeBSD.org>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Copyright (c) 2011 The FreeBSD Foundation
|
||||
* All rights reserved.
|
||||
* Portions of this software were developed by David Chisnall
|
||||
* under sponsorship from the FreeBSD Foundation.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
int
|
||||
dprintf(int fd, const char * __restrict fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
int ret;
|
||||
|
||||
va_start(ap, fmt);
|
||||
ret = vdprintf(fd, fmt, ap);
|
||||
va_end(ap);
|
||||
return ret;
|
||||
}
|
|
@ -1,48 +0,0 @@
|
|||
/* $OpenBSD: fprintf.c,v 1.7 2011/05/30 18:48:33 martynas Exp $ */
|
||||
/*-
|
||||
* Copyright (c) 1990, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Chris Torek.
|
||||
*
|
||||
* 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.
|
||||
* 3. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
/* PRINTFLIKE2 */
|
||||
int
|
||||
fprintf(FILE *fp, const char *fmt, ...)
|
||||
{
|
||||
int ret;
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, fmt);
|
||||
ret = vfprintf(fp, fmt, ap);
|
||||
va_end(ap);
|
||||
return (ret);
|
||||
}
|
|
@ -1,48 +0,0 @@
|
|||
/* $OpenBSD: fscanf.c,v 1.10 2011/05/30 18:48:33 martynas Exp $ */
|
||||
/*-
|
||||
* Copyright (c) 1990, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Chris Torek.
|
||||
*
|
||||
* 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.
|
||||
* 3. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
/* SCANFLIKE2 */
|
||||
int
|
||||
fscanf(FILE *fp, const char *fmt, ...)
|
||||
{
|
||||
int ret;
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, fmt);
|
||||
ret = vfscanf(fp, fmt, ap);
|
||||
va_end(ap);
|
||||
return (ret);
|
||||
}
|
|
@ -1,48 +0,0 @@
|
|||
/* $OpenBSD: fwprintf.c,v 1.3 2011/04/28 17:38:46 stsp Exp $ */
|
||||
/*-
|
||||
* Copyright (c) 1990, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Chris Torek.
|
||||
*
|
||||
* 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.
|
||||
* 3. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include <wchar.h>
|
||||
|
||||
int
|
||||
fwprintf(FILE * __restrict fp, const wchar_t * __restrict fmt, ...)
|
||||
{
|
||||
int ret;
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, fmt);
|
||||
ret = vfwprintf(fp, fmt, ap);
|
||||
va_end(ap);
|
||||
return (ret);
|
||||
}
|
|
@ -1,44 +0,0 @@
|
|||
/* $OpenBSD: fwscanf.c,v 1.2 2012/12/05 23:20:01 deraadt 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.
|
||||
*/
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
#include <wchar.h>
|
||||
|
||||
int
|
||||
fwscanf(FILE * __restrict fp, const wchar_t * __restrict fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
int r;
|
||||
|
||||
va_start(ap, fmt);
|
||||
r = vfwscanf(fp, fmt, ap);
|
||||
va_end(ap);
|
||||
|
||||
return (r);
|
||||
}
|
|
@ -1,62 +0,0 @@
|
|||
/* $OpenBSD: getc.c,v 1.9 2009/11/09 00:18:27 kurt Exp $ */
|
||||
/*-
|
||||
* Copyright (c) 1990, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Chris Torek.
|
||||
*
|
||||
* 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.
|
||||
* 3. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include "local.h"
|
||||
|
||||
/*
|
||||
* A subroutine version of the macro getc_unlocked.
|
||||
*/
|
||||
#undef getc_unlocked
|
||||
|
||||
int
|
||||
getc_unlocked(FILE *fp)
|
||||
{
|
||||
return (__sgetc(fp));
|
||||
}
|
||||
|
||||
/*
|
||||
* A subroutine version of the macro getc.
|
||||
*/
|
||||
#undef getc
|
||||
|
||||
int
|
||||
getc(FILE *fp)
|
||||
{
|
||||
int c;
|
||||
|
||||
FLOCKFILE(fp);
|
||||
c = __sgetc(fp);
|
||||
FUNLOCKFILE(fp);
|
||||
return (c);
|
||||
}
|
|
@ -1,58 +0,0 @@
|
|||
/* $OpenBSD: getchar.c,v 1.7 2005/08/08 08:05:36 espie Exp $ */
|
||||
/*-
|
||||
* Copyright (c) 1990, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Chris Torek.
|
||||
*
|
||||
* 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.
|
||||
* 3. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
/*
|
||||
* A subroutine version of the macro getchar_unlocked.
|
||||
*/
|
||||
#undef getchar_unlocked
|
||||
|
||||
int
|
||||
getchar_unlocked(void)
|
||||
{
|
||||
return (getc_unlocked(stdin));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* A subroutine version of the macro getchar.
|
||||
*/
|
||||
|
||||
#undef getchar
|
||||
|
||||
int
|
||||
getchar(void)
|
||||
{
|
||||
return (getc(stdin));
|
||||
}
|
|
@ -1,48 +0,0 @@
|
|||
/* $OpenBSD: printf.c,v 1.8 2011/05/30 18:48:33 martynas Exp $ */
|
||||
/*-
|
||||
* Copyright (c) 1990, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Chris Torek.
|
||||
*
|
||||
* 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.
|
||||
* 3. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
/* PRINTFLIKE1 */
|
||||
int
|
||||
printf(const char *fmt, ...)
|
||||
{
|
||||
int ret;
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, fmt);
|
||||
ret = vfprintf(stdout, fmt, ap);
|
||||
va_end(ap);
|
||||
return (ret);
|
||||
}
|
|
@ -1,68 +0,0 @@
|
|||
/* $OpenBSD: putc.c,v 1.12 2009/11/21 10:11:54 guenther Exp $ */
|
||||
/*-
|
||||
* Copyright (c) 1990, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Chris Torek.
|
||||
*
|
||||
* 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.
|
||||
* 3. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include "local.h"
|
||||
|
||||
/*
|
||||
* A subroutine version of the macro putc_unlocked.
|
||||
*/
|
||||
#undef putc_unlocked
|
||||
|
||||
int
|
||||
putc_unlocked(int c, FILE *fp)
|
||||
{
|
||||
if (cantwrite(fp)) {
|
||||
errno = EBADF;
|
||||
return (EOF);
|
||||
}
|
||||
_SET_ORIENTATION(fp, -1);
|
||||
return (__sputc(c, fp));
|
||||
}
|
||||
|
||||
/*
|
||||
* A subroutine version of the macro putc.
|
||||
*/
|
||||
#undef putc
|
||||
|
||||
int
|
||||
putc(int c, FILE *fp)
|
||||
{
|
||||
int ret;
|
||||
|
||||
FLOCKFILE(fp);
|
||||
ret = putc_unlocked(c, fp);
|
||||
FUNLOCKFILE(fp);
|
||||
return (ret);
|
||||
}
|
|
@ -1,59 +0,0 @@
|
|||
/* $OpenBSD: putchar.c,v 1.7 2005/08/08 08:05:36 espie Exp $ */
|
||||
/*-
|
||||
* Copyright (c) 1990, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Chris Torek.
|
||||
*
|
||||
* 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.
|
||||
* 3. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#undef putchar_unlocked
|
||||
/*
|
||||
* A subrouting version of the macro putchar_unlocked
|
||||
*/
|
||||
int
|
||||
putchar_unlocked(int c)
|
||||
{
|
||||
FILE *so = stdout;
|
||||
|
||||
return (putc_unlocked(c,so));
|
||||
}
|
||||
|
||||
#undef putchar
|
||||
|
||||
/*
|
||||
* A subroutine version of the macro putchar
|
||||
*/
|
||||
int
|
||||
putchar(int c)
|
||||
{
|
||||
FILE *so = stdout;
|
||||
|
||||
return (putc(c, so));
|
||||
}
|
|
@ -1,48 +0,0 @@
|
|||
/* $OpenBSD: scanf.c,v 1.10 2011/05/30 18:48:33 martynas Exp $ */
|
||||
/*-
|
||||
* Copyright (c) 1990, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Chris Torek.
|
||||
*
|
||||
* 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.
|
||||
* 3. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
/* SCANFLIKE1 */
|
||||
int
|
||||
scanf(const char *fmt, ...)
|
||||
{
|
||||
int ret;
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, fmt);
|
||||
ret = vfscanf(stdin, fmt, ap);
|
||||
va_end(ap);
|
||||
return (ret);
|
||||
}
|
|
@ -1,45 +0,0 @@
|
|||
/* $OpenBSD: swprintf.c,v 1.5 2012/12/05 23:20:01 deraadt Exp $ */
|
||||
/* $NetBSD: swprintf.c,v 1.1 2005/05/14 23:51:02 christos 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.
|
||||
*/
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
#include <wchar.h>
|
||||
|
||||
int
|
||||
swprintf(wchar_t * __restrict s, size_t n, const wchar_t * __restrict fmt, ...)
|
||||
{
|
||||
int ret;
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, fmt);
|
||||
ret = vswprintf(s, n, fmt, ap);
|
||||
va_end(ap);
|
||||
|
||||
return (ret);
|
||||
}
|
|
@ -1,44 +0,0 @@
|
|||
/* $OpenBSD: swscanf.c,v 1.2 2012/12/05 23:20:01 deraadt 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.
|
||||
*/
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
#include <wchar.h>
|
||||
|
||||
int
|
||||
swscanf(const wchar_t * __restrict str, const wchar_t * __restrict fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
int r;
|
||||
|
||||
va_start(ap, fmt);
|
||||
r = vswscanf(str, fmt, ap);
|
||||
va_end(ap);
|
||||
|
||||
return (r);
|
||||
}
|
|
@ -1,48 +0,0 @@
|
|||
/* $OpenBSD: wprintf.c,v 1.3 2011/04/28 17:38:46 stsp Exp $ */
|
||||
/*-
|
||||
* Copyright (c) 1990, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Chris Torek.
|
||||
*
|
||||
* 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.
|
||||
* 3. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include <wchar.h>
|
||||
|
||||
int
|
||||
wprintf(const wchar_t * __restrict fmt, ...)
|
||||
{
|
||||
int ret;
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, fmt);
|
||||
ret = vfwprintf(stdout, fmt, ap);
|
||||
va_end(ap);
|
||||
return (ret);
|
||||
}
|
|
@ -1,44 +0,0 @@
|
|||
/* $OpenBSD: wscanf.c,v 1.2 2012/12/05 23:20:01 deraadt 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.
|
||||
*/
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
#include <wchar.h>
|
||||
|
||||
int
|
||||
wscanf(const wchar_t * __restrict fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
int r;
|
||||
|
||||
va_start(ap, fmt);
|
||||
r = vfwscanf(stdin, fmt, ap);
|
||||
va_end(ap);
|
||||
|
||||
return (r);
|
||||
}
|
|
@ -37,6 +37,24 @@
|
|||
#define STDIO_TEST stdio
|
||||
#endif
|
||||
|
||||
static void AssertFileIs(FILE* fp, const char* expected, bool is_fmemopen = false) {
|
||||
rewind(fp);
|
||||
|
||||
char line[1024];
|
||||
ASSERT_EQ(line, fgets(line, sizeof(line), fp));
|
||||
ASSERT_STREQ(expected, line);
|
||||
|
||||
if (is_fmemopen) {
|
||||
// fmemopen appends a trailing NUL byte, which probably shouldn't show up as an
|
||||
// extra empty line, but does on every C library I tested...
|
||||
ASSERT_EQ(line, fgets(line, sizeof(line), fp));
|
||||
ASSERT_STREQ("", line);
|
||||
}
|
||||
|
||||
// Make sure there isn't anything else in the file.
|
||||
ASSERT_EQ(nullptr, fgets(line, sizeof(line), fp)) << "junk at end of file: " << line;
|
||||
}
|
||||
|
||||
TEST(STDIO_TEST, flockfile_18208568_stderr) {
|
||||
// Check that we have a _recursive_ mutex for flockfile.
|
||||
flockfile(stderr);
|
||||
|
@ -69,13 +87,7 @@ TEST(STDIO_TEST, tmpfile_fileno_fprintf_rewind_fgets) {
|
|||
rc = fprintf(fp, "hello\n");
|
||||
ASSERT_EQ(rc, 6);
|
||||
|
||||
rewind(fp);
|
||||
|
||||
char buf[16];
|
||||
char* s = fgets(buf, sizeof(buf), fp);
|
||||
ASSERT_TRUE(s != NULL);
|
||||
ASSERT_STREQ("hello\n", s);
|
||||
|
||||
AssertFileIs(fp, "hello\n");
|
||||
fclose(fp);
|
||||
}
|
||||
|
||||
|
@ -95,11 +107,7 @@ TEST(STDIO_TEST, dprintf) {
|
|||
FILE* tfile = fdopen(tf.fd, "r");
|
||||
ASSERT_TRUE(tfile != NULL);
|
||||
|
||||
char buf[7];
|
||||
ASSERT_EQ(buf, fgets(buf, sizeof(buf), tfile));
|
||||
ASSERT_STREQ("hello\n", buf);
|
||||
// Make sure there isn't anything else in the file.
|
||||
ASSERT_EQ(NULL, fgets(buf, sizeof(buf), tfile));
|
||||
AssertFileIs(tfile, "hello\n");
|
||||
fclose(tfile);
|
||||
}
|
||||
|
||||
|
@ -568,6 +576,17 @@ TEST(STDIO_TEST, snprintf_asterisk_overflow) {
|
|||
ASSERT_EQ(ENOMEM, errno);
|
||||
}
|
||||
|
||||
TEST(STDIO_TEST, fprintf) {
|
||||
TemporaryFile tf;
|
||||
|
||||
FILE* tfile = fdopen(tf.fd, "r+");
|
||||
ASSERT_TRUE(tfile != nullptr);
|
||||
|
||||
ASSERT_EQ(7, fprintf(tfile, "%d %s", 123, "abc"));
|
||||
AssertFileIs(tfile, "123 abc");
|
||||
fclose(tfile);
|
||||
}
|
||||
|
||||
TEST(STDIO_TEST, fprintf_failures_7229520) {
|
||||
// http://b/7229520
|
||||
FILE* fp;
|
||||
|
@ -806,13 +825,7 @@ TEST(STDIO_TEST, fmemopen) {
|
|||
|
||||
ASSERT_STREQ("<abc>\n", buf);
|
||||
|
||||
rewind(fp);
|
||||
|
||||
char line[16];
|
||||
char* s = fgets(line, sizeof(line), fp);
|
||||
ASSERT_TRUE(s != NULL);
|
||||
ASSERT_STREQ("<abc>\n", s);
|
||||
|
||||
AssertFileIs(fp, "<abc>\n", true);
|
||||
fclose(fp);
|
||||
}
|
||||
|
||||
|
@ -820,13 +833,7 @@ TEST(STDIO_TEST, fmemopen_NULL) {
|
|||
FILE* fp = fmemopen(nullptr, 128, "r+");
|
||||
ASSERT_NE(EOF, fputs("xyz\n", fp));
|
||||
|
||||
rewind(fp);
|
||||
|
||||
char line[16];
|
||||
char* s = fgets(line, sizeof(line), fp);
|
||||
ASSERT_TRUE(s != NULL);
|
||||
ASSERT_STREQ("xyz\n", s);
|
||||
|
||||
AssertFileIs(fp, "xyz\n", true);
|
||||
fclose(fp);
|
||||
}
|
||||
|
||||
|
@ -1196,15 +1203,10 @@ TEST(STDIO_TEST, lots_of_concurrent_files) {
|
|||
}
|
||||
|
||||
for (size_t i = 0; i < 256; ++i) {
|
||||
rewind(fps[i]);
|
||||
|
||||
char buf[BUFSIZ];
|
||||
ASSERT_TRUE(fgets(buf, sizeof(buf), fps[i]) != nullptr);
|
||||
|
||||
char expected[BUFSIZ];
|
||||
snprintf(expected, sizeof(expected), "hello %zu!\n", i);
|
||||
ASSERT_STREQ(expected, buf);
|
||||
|
||||
AssertFileIs(fps[i], expected);
|
||||
fclose(fps[i]);
|
||||
delete tfs[i];
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue