diff options
Diffstat (limited to 'lib/libc/stdio')
154 files changed, 787 insertions, 1079 deletions
diff --git a/lib/libc/stdio/Makefile.inc b/lib/libc/stdio/Makefile.inc index dcc8bc77a088..52497254ac86 100644 --- a/lib/libc/stdio/Makefile.inc +++ b/lib/libc/stdio/Makefile.inc @@ -1,5 +1,3 @@ -# @(#)Makefile.inc 8.3 (Berkeley) 4/17/94 -# $FreeBSD$ # stdio sources .PATH: ${LIBC_SRCTOP}/stdio @@ -43,50 +41,102 @@ MAN+= fclose.3 ferror.3 fflush.3 fgetln.3 fgets.3 fgetwln.3 fgetws.3 \ stdio.3 tmpnam.3 \ ungetc.3 ungetwc.3 wprintf.3 wscanf.3 -MLINKS+=fclose.3 fcloseall.3 fclose.3 fdclose.3 +MLINKS+=fclose.3 fcloseall.3 \ + fclose.3 fdclose.3 MLINKS+=ferror.3 ferror_unlocked.3 \ - ferror.3 clearerr.3 ferror.3 clearerr_unlocked.3 \ - ferror.3 feof.3 ferror.3 feof_unlocked.3 \ - ferror.3 fileno.3 ferror.3 fileno_unlocked.3 + ferror.3 clearerr.3 \ + ferror.3 clearerr_unlocked.3 \ + ferror.3 feof.3 \ + ferror.3 feof_unlocked.3 \ + ferror.3 fileno.3 \ + ferror.3 fileno_unlocked.3 MLINKS+=fflush.3 fflush_unlocked.3 \ fflush.3 fpurge.3 MLINKS+=fgets.3 gets.3 MLINKS+=fgets.3 gets_s.3 -MLINKS+=flockfile.3 ftrylockfile.3 flockfile.3 funlockfile.3 -MLINKS+=fopen.3 fdopen.3 fopen.3 freopen.3 fopen.3 fmemopen.3 +MLINKS+=flockfile.3 ftrylockfile.3 \ + flockfile.3 funlockfile.3 +MLINKS+=fopen.3 fdopen.3 \ + fopen.3 freopen.3 \ + fopen.3 fmemopen.3 MLINKS+=fputs.3 fputs_unlocked.3 \ fputs.3 puts.3 MLINKS+=fread.3 fread_unlocked.3 \ fread.3 fwrite.3 \ fread.3 fwrite_unlocked.3 -MLINKS+=fseek.3 fgetpos.3 fseek.3 fseeko.3 fseek.3 fsetpos.3 fseek.3 ftell.3 \ - fseek.3 ftello.3 fseek.3 rewind.3 -MLINKS+=funopen.3 fropen.3 funopen.3 fwopen.3 -MLINKS+=getc.3 fgetc.3 getc.3 getc_unlocked.3 getc.3 getchar.3 \ - getc.3 getchar_unlocked.3 getc.3 getw.3 +MLINKS+=fseek.3 fgetpos.3 \ + fseek.3 fseeko.3 \ + fseek.3 fsetpos.3 \ + fseek.3 ftell.3 \ + fseek.3 ftello.3 \ + fseek.3 rewind.3 +MLINKS+=funopen.3 fropen.3 \ + funopen.3 fwopen.3 +MLINKS+=getc.3 fgetc.3 \ + getc.3 getc_unlocked.3 \ + getc.3 getchar.3 \ + getc.3 getchar_unlocked.3 \ + getc.3 getw.3 MLINKS+=getline.3 getdelim.3 -MLINKS+=getwc.3 fgetwc.3 getwc.3 getwchar.3 -MLINKS+=mktemp.3 mkdtemp.3 mktemp.3 mkstemp.3 mktemp.3 mkstemps.3 \ - mktemp.3 mkostemp.3 mktemp.3 mkostemps.3 mktemp.3 mkostempsat.3 +MLINKS+=getwc.3 fgetwc.3 \ + getwc.3 getwchar.3 +MLINKS+=mktemp.3 mkdtemp.3 \ + mktemp.3 mkstemp.3 \ + mktemp.3 mkstemps.3 \ + mktemp.3 mkostemp.3 \ + mktemp.3 mkostemps.3 \ + mktemp.3 mkostempsat.3 MLINKS+=open_memstream.3 open_wmemstream.3 -MLINKS+=printf.3 asprintf.3 printf.3 dprintf.3 printf.3 fprintf.3 \ - printf.3 snprintf.3 printf.3 sprintf.3 \ - printf.3 vasprintf.3 printf.3 vdprintf.3 \ - printf.3 vfprintf.3 printf.3 vprintf.3 printf.3 vsnprintf.3 \ +MLINKS+=printf.3 asprintf.3 \ + printf.3 dprintf.3 \ + printf.3 fprintf.3 \ + printf.3 snprintf.3 \ + printf.3 sprintf.3 \ + printf.3 vasprintf.3 \ + printf.3 vdprintf.3 \ + printf.3 vfprintf.3 \ + printf.3 vprintf.3 \ + printf.3 vsnprintf.3 \ printf.3 vsprintf.3 -MLINKS+=printf_l.3 asprintf_l.3 printf_l.3 fprintf_l.3 printf_l.3 snprintf_l.3 \ - printf_l.3 sprintf_l.3 printf_l.3 vasprintf_l.3 printf_l.3 vfprintf_l.3 \ - printf_l.3 vprintf_l.3 printf_l.3 vsnprintf_l.3 printf_l.3 vsprintf_l.3 -MLINKS+=putc.3 fputc.3 putc.3 putc_unlocked.3 putc.3 putchar.3 \ - putc.3 putchar_unlocked.3 putc.3 putw.3 -MLINKS+=putwc.3 fputwc.3 putwc.3 putwchar.3 -MLINKS+=scanf.3 fscanf.3 scanf.3 sscanf.3 scanf.3 vfscanf.3 scanf.3 vscanf.3 \ +MLINKS+=printf_l.3 asprintf_l.3 \ + printf_l.3 fprintf_l.3 \ + printf_l.3 snprintf_l.3 \ + printf_l.3 sprintf_l.3 \ + printf_l.3 vasprintf_l.3 \ + printf_l.3 vfprintf_l.3 \ + printf_l.3 vprintf_l.3 \ + printf_l.3 vsnprintf_l.3 \ + printf_l.3 vsprintf_l.3 +MLINKS+=putc.3 fputc.3 \ + putc.3 fputc_unlocked.3 \ + putc.3 putc_unlocked.3 \ + putc.3 putchar.3 \ + putc.3 putchar_unlocked.3 \ + putc.3 putw.3 +MLINKS+=putwc.3 fputwc.3 \ + putwc.3 putwchar.3 +MLINKS+=scanf.3 fscanf.3 \ + scanf.3 sscanf.3 \ + scanf.3 vfscanf.3 \ + scanf.3 vscanf.3 \ scanf.3 vsscanf.3 -MLINKS+=scanf_l.3 fscanf_l.3 scanf_l.3 sscanf_l.3 scanf_l.3 vfscanf_l.3 \ - scanf_l.3 vscanf_l.3 scanf_l.3 vsscanf_l.3 -MLINKS+=setbuf.3 setbuffer.3 setbuf.3 setlinebuf.3 setbuf.3 setvbuf.3 -MLINKS+=tmpnam.3 tempnam.3 tmpnam.3 tmpfile.3 -MLINKS+=wprintf.3 fwprintf.3 wprintf.3 swprintf.3 \ - wprintf.3 vwprintf.3 wprintf.3 vfwprintf.3 wprintf.3 vswprintf.3 -MLINKS+=wscanf.3 fwscanf.3 wscanf.3 swscanf.3 wscanf.3 vwscanf.3 \ - wscanf.3 vswscanf.3 wscanf.3 vfwscanf.3 +MLINKS+=scanf_l.3 fscanf_l.3 \ + scanf_l.3 sscanf_l.3 \ + scanf_l.3 vfscanf_l.3 \ + scanf_l.3 vscanf_l.3 \ + scanf_l.3 vsscanf_l.3 +MLINKS+=setbuf.3 setbuffer.3 \ + setbuf.3 setlinebuf.3 \ + setbuf.3 setvbuf.3 +MLINKS+=tmpnam.3 tempnam.3 \ + tmpnam.3 tmpfile.3 +MLINKS+=wprintf.3 fwprintf.3 \ + wprintf.3 swprintf.3 \ + wprintf.3 vwprintf.3 \ + wprintf.3 vfwprintf.3 \ + wprintf.3 vswprintf.3 +MLINKS+=wscanf.3 fwscanf.3 \ + wscanf.3 swscanf.3 \ + wscanf.3 vwscanf.3 \ + wscanf.3 vswscanf.3 \ + wscanf.3 vfwscanf.3 diff --git a/lib/libc/stdio/Symbol.map b/lib/libc/stdio/Symbol.map index 4926b6f35729..d491b83c11fb 100644 --- a/lib/libc/stdio/Symbol.map +++ b/lib/libc/stdio/Symbol.map @@ -1,7 +1,3 @@ -/* - * $FreeBSD$ - */ - FBSD_1.0 { flockfile; ftrylockfile; @@ -22,7 +18,6 @@ FBSD_1.0 { fgetwln; fgetws; fileno; - __sF; __stdinp; __stdoutp; __stderrp; diff --git a/lib/libc/stdio/_flock_stub.c b/lib/libc/stdio/_flock_stub.c index 069ed64c4e99..5f81f29ac232 100644 --- a/lib/libc/stdio/_flock_stub.c +++ b/lib/libc/stdio/_flock_stub.c @@ -36,9 +36,6 @@ * */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <stdio.h> #include <stdlib.h> diff --git a/lib/libc/stdio/asprintf.c b/lib/libc/stdio/asprintf.c index 1d9034b653d5..f0e898c92c0c 100644 --- a/lib/libc/stdio/asprintf.c +++ b/lib/libc/stdio/asprintf.c @@ -8,7 +8,7 @@ * Chris Torek. * * Copyright (c) 2011 The FreeBSD Foundation - * All rights reserved. + * * Portions of this software were developed by David Chisnall * under sponsorship from the FreeBSD Foundation. * @@ -37,9 +37,6 @@ * SUCH DAMAGE. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <stdio.h> #include <stdarg.h> #include <xlocale.h> diff --git a/lib/libc/stdio/clrerr.c b/lib/libc/stdio/clrerr.c index c9208c0c1c46..01ce88654c09 100644 --- a/lib/libc/stdio/clrerr.c +++ b/lib/libc/stdio/clrerr.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)clrerr.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <stdio.h> #include "un-namespace.h" diff --git a/lib/libc/stdio/dprintf.c b/lib/libc/stdio/dprintf.c index c6f4fbd87e1f..9e976b37379f 100644 --- a/lib/libc/stdio/dprintf.c +++ b/lib/libc/stdio/dprintf.c @@ -1,5 +1,5 @@ /*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2009 David Schultz <das@FreeBSD.org> * All rights reserved. @@ -26,9 +26,6 @@ * SUCH DAMAGE. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <stdarg.h> #include <stdio.h> diff --git a/lib/libc/stdio/fclose.3 b/lib/libc/stdio/fclose.3 index 1b3c6c71f601..524ff9754bb4 100644 --- a/lib/libc/stdio/fclose.3 +++ b/lib/libc/stdio/fclose.3 @@ -30,10 +30,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" @(#)fclose.3 8.1 (Berkeley) 6/4/93 -.\" $FreeBSD$ -.\" -.Dd July 4, 2015 +.Dd February 13, 2024 .Dt FCLOSE 3 .Os .Sh NAME @@ -72,9 +69,6 @@ If is not .Dv NULL , the file descriptor will be written to it. -If the -.Fa fdp -argument will be different then NULL the file descriptor will be returned in it, If the stream does not have an associated file descriptor, .Fa fdp will be set to -1. diff --git a/lib/libc/stdio/fclose.c b/lib/libc/stdio/fclose.c index 84f890e3c38a..ba527f6e7108 100644 --- a/lib/libc/stdio/fclose.c +++ b/lib/libc/stdio/fclose.c @@ -33,12 +33,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)fclose.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <errno.h> #include <stdbool.h> diff --git a/lib/libc/stdio/fcloseall.c b/lib/libc/stdio/fcloseall.c index 6248c6123d02..ae6bd151ca9c 100644 --- a/lib/libc/stdio/fcloseall.c +++ b/lib/libc/stdio/fcloseall.c @@ -1,5 +1,5 @@ /*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * SPDX-License-Identifier: BSD-2-Clause * * Copyright (C) 2006 Daniel M. Eischen. All rights reserved. * @@ -25,9 +25,6 @@ * SUCH DAMAGE. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <stdio.h> #include "local.h" diff --git a/lib/libc/stdio/fdopen.c b/lib/libc/stdio/fdopen.c index 64d619963e14..a0d7b71df782 100644 --- a/lib/libc/stdio/fdopen.c +++ b/lib/libc/stdio/fdopen.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)fdopen.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <sys/types.h> #include <fcntl.h> diff --git a/lib/libc/stdio/feof.c b/lib/libc/stdio/feof.c index ef6767fb2b1b..aefffcd36c70 100644 --- a/lib/libc/stdio/feof.c +++ b/lib/libc/stdio/feof.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)feof.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <stdio.h> #include "un-namespace.h" diff --git a/lib/libc/stdio/ferror.3 b/lib/libc/stdio/ferror.3 index 51dbc386a84b..71671f69f247 100644 --- a/lib/libc/stdio/ferror.3 +++ b/lib/libc/stdio/ferror.3 @@ -29,9 +29,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" @(#)ferror.3 8.2 (Berkeley) 4/19/94 -.\" $FreeBSD$ -.\" .Dd April 2, 2022 .Dt FERROR 3 .Os diff --git a/lib/libc/stdio/ferror.c b/lib/libc/stdio/ferror.c index bb29c27e1419..15f6f5a69e25 100644 --- a/lib/libc/stdio/ferror.c +++ b/lib/libc/stdio/ferror.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)ferror.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <stdio.h> #include "un-namespace.h" diff --git a/lib/libc/stdio/fflush.3 b/lib/libc/stdio/fflush.3 index 7c1c7290224c..c311b7f473c5 100644 --- a/lib/libc/stdio/fflush.3 +++ b/lib/libc/stdio/fflush.3 @@ -29,9 +29,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" @(#)fflush.3 8.1 (Berkeley) 6/4/93 -.\" $FreeBSD$ -.\" .Dd May 1, 2020 .Dt FFLUSH 3 .Os diff --git a/lib/libc/stdio/fflush.c b/lib/libc/stdio/fflush.c index decc974907f4..84cba7619866 100644 --- a/lib/libc/stdio/fflush.c +++ b/lib/libc/stdio/fflush.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)fflush.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <errno.h> #include <stdio.h> @@ -105,11 +99,11 @@ __weak_reference(__fflush, fflush_unlocked); int __sflush(FILE *fp) { - unsigned char *p, *old_p; - int n, t, old_w; + unsigned char *p; + int n, f, t; - t = fp->_flags; - if ((t & __SWR) == 0) + f = fp->_flags; + if ((f & __SWR) == 0) return (0); if ((p = fp->_bf._base) == NULL) @@ -121,25 +115,19 @@ __sflush(FILE *fp) * Set these immediately to avoid problems with longjmp and to allow * exchange buffering (via setvbuf) in user write function. */ - old_p = fp->_p; fp->_p = p; - old_w = fp->_w; - fp->_w = t & (__SLBF|__SNBF) ? 0 : fp->_bf._size; + fp->_w = f & (__SLBF|__SNBF) ? 0 : fp->_bf._size; for (; n > 0; n -= t, p += t) { t = _swrite(fp, (char *)p, n); if (t <= 0) { - /* Reset _p and _w. */ - if (p > fp->_p) { + if (p > fp->_p) /* Some was written. */ memmove(fp->_p, p, n); - fp->_p += n; - if ((fp->_flags & (__SLBF | __SNBF)) == 0) - fp->_w -= n; - } else if (p == fp->_p) { /* cond. to handle setvbuf */ - fp->_p = old_p; - fp->_w = old_w; - } + /* Reset _p and _w. */ + fp->_p += n; + if ((fp->_flags & __SNBF) == 0) + fp->_w -= n; fp->_flags |= __SERR; return (EOF); } diff --git a/lib/libc/stdio/fgetc.c b/lib/libc/stdio/fgetc.c index bb94f2ed5559..d05d9de3cc9f 100644 --- a/lib/libc/stdio/fgetc.c +++ b/lib/libc/stdio/fgetc.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)fgetc.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <stdio.h> #include "un-namespace.h" diff --git a/lib/libc/stdio/fgetln.3 b/lib/libc/stdio/fgetln.3 index f723ce24791a..09fd014cde00 100644 --- a/lib/libc/stdio/fgetln.3 +++ b/lib/libc/stdio/fgetln.3 @@ -25,9 +25,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" @(#)fgetln.3 8.3 (Berkeley) 4/19/94 -.\" $FreeBSD$ -.\" .Dd June 11, 2020 .Dt FGETLN 3 .Os diff --git a/lib/libc/stdio/fgetln.c b/lib/libc/stdio/fgetln.c index f3e4a6874a4b..ad37a2e15c61 100644 --- a/lib/libc/stdio/fgetln.c +++ b/lib/libc/stdio/fgetln.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)fgetln.c 8.2 (Berkeley) 1/2/94"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <errno.h> #include <limits.h> diff --git a/lib/libc/stdio/fgetpos.c b/lib/libc/stdio/fgetpos.c index c592ef0fc224..930e26b762f5 100644 --- a/lib/libc/stdio/fgetpos.c +++ b/lib/libc/stdio/fgetpos.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)fgetpos.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <stdio.h> int diff --git a/lib/libc/stdio/fgets.3 b/lib/libc/stdio/fgets.3 index 0f48273b0ea8..0f6c3e41896c 100644 --- a/lib/libc/stdio/fgets.3 +++ b/lib/libc/stdio/fgets.3 @@ -29,9 +29,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" @(#)fgets.3 8.1 (Berkeley) 6/4/93 -.\" $FreeBSD$ -.\" .Dd April 2, 2022 .Dt FGETS 3 .Os diff --git a/lib/libc/stdio/fgets.c b/lib/libc/stdio/fgets.c index ceb48562fe30..504338c012a2 100644 --- a/lib/libc/stdio/fgets.c +++ b/lib/libc/stdio/fgets.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)fgets.c 8.2 (Berkeley) 12/22/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <errno.h> #include <stdio.h> @@ -46,6 +40,8 @@ __FBSDID("$FreeBSD$"); #include "local.h" #include "libc_private.h" +#undef fgets /* _FORTIFY_SOURCE */ + /* * Read at most n-1 characters from the given file. * Stop when a newline has been read, or the count runs out. diff --git a/lib/libc/stdio/fgetwc.c b/lib/libc/stdio/fgetwc.c index edad907fe806..53d1f9564fe2 100644 --- a/lib/libc/stdio/fgetwc.c +++ b/lib/libc/stdio/fgetwc.c @@ -1,11 +1,11 @@ /*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2002-2004 Tim J. Robbins. * 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. * @@ -31,9 +31,6 @@ * SUCH DAMAGE. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <errno.h> #include <stdio.h> diff --git a/lib/libc/stdio/fgetwln.3 b/lib/libc/stdio/fgetwln.3 index c5fda8631c68..9e863a1bd460 100644 --- a/lib/libc/stdio/fgetwln.3 +++ b/lib/libc/stdio/fgetwln.3 @@ -25,9 +25,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" @(#)fgetln.3 8.3 (Berkeley) 4/19/94 -.\" $FreeBSD$ -.\" .Dd July 16, 2004 .Dt FGETWLN 3 .Os diff --git a/lib/libc/stdio/fgetwln.c b/lib/libc/stdio/fgetwln.c index b9077d68fc21..3a8e12b30c07 100644 --- a/lib/libc/stdio/fgetwln.c +++ b/lib/libc/stdio/fgetwln.c @@ -1,11 +1,11 @@ /*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2002-2004 Tim J. Robbins. * 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. * @@ -31,9 +31,6 @@ * SUCH DAMAGE. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <stdio.h> #include <wchar.h> diff --git a/lib/libc/stdio/fgetws.3 b/lib/libc/stdio/fgetws.3 index 09efa0a31b30..5da940525d24 100644 --- a/lib/libc/stdio/fgetws.3 +++ b/lib/libc/stdio/fgetws.3 @@ -28,10 +28,7 @@ .\" 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. -.\" -.\" @(#)fgets.3 8.1 (Berkeley) 6/4/93 .\" FreeBSD: src/lib/libc/stdio/fgets.3,v 1.16 2002/05/31 05:01:17 archie Exp -.\" $FreeBSD$ .\" .Dd August 6, 2002 .Dt FGETWS 3 diff --git a/lib/libc/stdio/fgetws.c b/lib/libc/stdio/fgetws.c index 84fc387ecae4..1aa94e50f186 100644 --- a/lib/libc/stdio/fgetws.c +++ b/lib/libc/stdio/fgetws.c @@ -1,11 +1,11 @@ /*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2002-2004 Tim J. Robbins. * 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. * @@ -31,9 +31,6 @@ * SUCH DAMAGE. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <errno.h> #include <stdio.h> diff --git a/lib/libc/stdio/fileno.c b/lib/libc/stdio/fileno.c index 81673cd89034..66502430dc3d 100644 --- a/lib/libc/stdio/fileno.c +++ b/lib/libc/stdio/fileno.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)fileno.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <stdio.h> #include "un-namespace.h" diff --git a/lib/libc/stdio/findfp.c b/lib/libc/stdio/findfp.c index b30a06ffd9e5..3729adf8d8dc 100644 --- a/lib/libc/stdio/findfp.c +++ b/lib/libc/stdio/findfp.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)findfp.c 8.2 (Berkeley) 1/4/94"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <sys/param.h> #include <machine/atomic.h> #include <unistd.h> diff --git a/lib/libc/stdio/flags.c b/lib/libc/stdio/flags.c index a034c1674c98..ef7ee38b8e2a 100644 --- a/lib/libc/stdio/flags.c +++ b/lib/libc/stdio/flags.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)flags.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <sys/types.h> #include <sys/file.h> #include <stdio.h> diff --git a/lib/libc/stdio/floatio.h b/lib/libc/stdio/floatio.h index 00af7eaba561..ef8c0fa84528 100644 --- a/lib/libc/stdio/floatio.h +++ b/lib/libc/stdio/floatio.h @@ -30,9 +30,6 @@ * 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. - * - * @(#)floatio.h 8.1 (Berkeley) 6/4/93 - * $FreeBSD$ */ /* diff --git a/lib/libc/stdio/flockfile.3 b/lib/libc/stdio/flockfile.3 index a895a0aae045..9a76dca8557c 100644 --- a/lib/libc/stdio/flockfile.3 +++ b/lib/libc/stdio/flockfile.3 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd January 10, 2003 .Dt FLOCKFILE 3 .Os diff --git a/lib/libc/stdio/fmemopen.c b/lib/libc/stdio/fmemopen.c index 8faf2fa146db..2f835a34951b 100644 --- a/lib/libc/stdio/fmemopen.c +++ b/lib/libc/stdio/fmemopen.c @@ -1,5 +1,5 @@ /*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * SPDX-License-Identifier: BSD-2-Clause * * Copyright (C) 2013 Pietro Cerutti <gahr@FreeBSD.org> * @@ -25,9 +25,6 @@ * SUCH DAMAGE. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <fcntl.h> #include <stdbool.h> #include <stdio.h> diff --git a/lib/libc/stdio/fopen.3 b/lib/libc/stdio/fopen.3 index f984a7f9a27b..3d69dc1fec13 100644 --- a/lib/libc/stdio/fopen.3 +++ b/lib/libc/stdio/fopen.3 @@ -29,10 +29,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" @(#)fopen.3 8.1 (Berkeley) 6/4/93 -.\" $FreeBSD$ -.\" -.Dd May 1, 2020 +.Dd September 1, 2023 .Dt FOPEN 3 .Os .Sh NAME @@ -52,7 +49,7 @@ .Ft FILE * .Fn freopen "const char *path" "const char *mode" "FILE *stream" .Ft FILE * -.Fn fmemopen "void *restrict *buf" "size_t size" "const char * restrict mode" +.Fn fmemopen "void * restrict buf" "size_t size" "const char * restrict mode" .Sh DESCRIPTION The .Fn fopen @@ -145,8 +142,10 @@ Reads and writes may be intermixed on read/write streams in any order, and do not require an intermediate seek as in previous versions of .Em stdio . This is not portable to other systems, however; -.Tn ANSI C -requires that +.St -isoC +and +.St -p1003.1 +both require that a file positioning function intervene between output and input, unless an input operation encounters end-of-file. .Pp @@ -247,9 +246,10 @@ byte. .Sh RETURN VALUES Upon successful completion .Fn fopen , -.Fn fdopen -and +.Fn fdopen , .Fn freopen +and +.Fn fmemopen return a .Tn FILE pointer. diff --git a/lib/libc/stdio/fopen.c b/lib/libc/stdio/fopen.c index cb71387e0f38..f76f0fb09087 100644 --- a/lib/libc/stdio/fopen.c +++ b/lib/libc/stdio/fopen.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)fopen.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <sys/types.h> #include <sys/stat.h> diff --git a/lib/libc/stdio/fopencookie.3 b/lib/libc/stdio/fopencookie.3 index 349b3499b6bb..09a6b6e01c0b 100644 --- a/lib/libc/stdio/fopencookie.3 +++ b/lib/libc/stdio/fopencookie.3 @@ -22,8 +22,6 @@ .\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF .\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd May 9, 2016 .Dt FOPENCOOKIE 3 .Os diff --git a/lib/libc/stdio/fopencookie.c b/lib/libc/stdio/fopencookie.c index 6dc39538df86..ef49d3d10f16 100644 --- a/lib/libc/stdio/fopencookie.c +++ b/lib/libc/stdio/fopencookie.c @@ -24,9 +24,6 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <sys/fcntl.h> #include <errno.h> diff --git a/lib/libc/stdio/fprintf.c b/lib/libc/stdio/fprintf.c index 95b71cc065c7..9b2cbb0849a7 100644 --- a/lib/libc/stdio/fprintf.c +++ b/lib/libc/stdio/fprintf.c @@ -8,7 +8,7 @@ * Chris Torek. * * Copyright (c) 2011 The FreeBSD Foundation - * All rights reserved. + * * Portions of this software were developed by David Chisnall * under sponsorship from the FreeBSD Foundation. * @@ -37,12 +37,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)fprintf.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <stdio.h> #include <stdarg.h> #include "xlocale_private.h" diff --git a/lib/libc/stdio/fpurge.c b/lib/libc/stdio/fpurge.c index aa5daf2ca078..0914b977ad49 100644 --- a/lib/libc/stdio/fpurge.c +++ b/lib/libc/stdio/fpurge.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)fpurge.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <errno.h> #include <stdio.h> diff --git a/lib/libc/stdio/fputc.c b/lib/libc/stdio/fputc.c index a2d2d14655bc..3d8409c465b8 100644 --- a/lib/libc/stdio/fputc.c +++ b/lib/libc/stdio/fputc.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)fputc.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <stdio.h> #include "un-namespace.h" diff --git a/lib/libc/stdio/fputs.3 b/lib/libc/stdio/fputs.3 index 1e02eb340f5d..dc85113dd791 100644 --- a/lib/libc/stdio/fputs.3 +++ b/lib/libc/stdio/fputs.3 @@ -29,9 +29,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" @(#)fputs.3 8.1 (Berkeley) 6/4/93 -.\" $FreeBSD$ -.\" .Dd January 23, 2020 .Dt FPUTS 3 .Os diff --git a/lib/libc/stdio/fputs.c b/lib/libc/stdio/fputs.c index 1fbae3593223..8bafa23d4131 100644 --- a/lib/libc/stdio/fputs.c +++ b/lib/libc/stdio/fputs.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)fputs.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <limits.h> #include <stdio.h> diff --git a/lib/libc/stdio/fputwc.c b/lib/libc/stdio/fputwc.c index 666dd8bcc9d1..7955a4e811b2 100644 --- a/lib/libc/stdio/fputwc.c +++ b/lib/libc/stdio/fputwc.c @@ -1,11 +1,11 @@ /*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2002-2004 Tim J. Robbins. * 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. * @@ -31,9 +31,6 @@ * SUCH DAMAGE. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <errno.h> #include <limits.h> diff --git a/lib/libc/stdio/fputws.3 b/lib/libc/stdio/fputws.3 index 1232e9028d1c..920d0e0cf658 100644 --- a/lib/libc/stdio/fputws.3 +++ b/lib/libc/stdio/fputws.3 @@ -28,10 +28,7 @@ .\" 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. -.\" -.\" @(#)fputs.3 8.1 (Berkeley) 6/4/93 .\" FreeBSD: src/lib/libc/stdio/fputs.3,v 1.8 2001/10/01 16:08:59 ru Exp -.\" $FreeBSD$ .\" .Dd August 6, 2002 .Dt FPUTWS 3 diff --git a/lib/libc/stdio/fputws.c b/lib/libc/stdio/fputws.c index 56357b650979..105fc426cb9c 100644 --- a/lib/libc/stdio/fputws.c +++ b/lib/libc/stdio/fputws.c @@ -1,11 +1,11 @@ /*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2002-2004 Tim J. Robbins. * 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. * @@ -31,9 +31,6 @@ * SUCH DAMAGE. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <errno.h> #include <limits.h> diff --git a/lib/libc/stdio/fread.3 b/lib/libc/stdio/fread.3 index 19c4feab42b9..dfa7c8df18a3 100644 --- a/lib/libc/stdio/fread.3 +++ b/lib/libc/stdio/fread.3 @@ -29,9 +29,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" @(#)fread.3 8.2 (Berkeley) 3/8/94 -.\" $FreeBSD$ -.\" .Dd April 2, 2022 .Dt FREAD 3 .Os diff --git a/lib/libc/stdio/fread.c b/lib/libc/stdio/fread.c index cafe86fe7961..bf943fdd1d0d 100644 --- a/lib/libc/stdio/fread.c +++ b/lib/libc/stdio/fread.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)fread.c 8.2 (Berkeley) 12/11/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <errno.h> #include <stdint.h> diff --git a/lib/libc/stdio/freopen.c b/lib/libc/stdio/freopen.c index fce965089a54..f0732b6d6741 100644 --- a/lib/libc/stdio/freopen.c +++ b/lib/libc/stdio/freopen.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)freopen.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <sys/types.h> #include <sys/stat.h> diff --git a/lib/libc/stdio/fscanf.c b/lib/libc/stdio/fscanf.c index 6d2cfe9b5a3f..f2dc9cf6e787 100644 --- a/lib/libc/stdio/fscanf.c +++ b/lib/libc/stdio/fscanf.c @@ -8,7 +8,7 @@ * Chris Torek. * * Copyright (c) 2011 The FreeBSD Foundation - * All rights reserved. + * * Portions of this software were developed by David Chisnall * under sponsorship from the FreeBSD Foundation. * @@ -37,12 +37,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)fscanf.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <stdio.h> #include <stdarg.h> diff --git a/lib/libc/stdio/fseek.3 b/lib/libc/stdio/fseek.3 index a23ddeae8a6d..521ded3a09d7 100644 --- a/lib/libc/stdio/fseek.3 +++ b/lib/libc/stdio/fseek.3 @@ -29,9 +29,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" @(#)fseek.3 8.1 (Berkeley) 6/4/93 -.\" $FreeBSD$ -.\" .Dd April 2, 2022 .Dt FSEEK 3 .Os diff --git a/lib/libc/stdio/fseek.c b/lib/libc/stdio/fseek.c index 5fcd49f23c5f..c19d682ec667 100644 --- a/lib/libc/stdio/fseek.c +++ b/lib/libc/stdio/fseek.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)fseek.c 8.3 (Berkeley) 1/2/94"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <sys/types.h> #include <sys/stat.h> diff --git a/lib/libc/stdio/fsetpos.c b/lib/libc/stdio/fsetpos.c index 4bb7c112fb06..caca58dad710 100644 --- a/lib/libc/stdio/fsetpos.c +++ b/lib/libc/stdio/fsetpos.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)fsetpos.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <sys/types.h> #include <stdio.h> diff --git a/lib/libc/stdio/ftell.c b/lib/libc/stdio/ftell.c index df73823c58ce..c74ae03ec7db 100644 --- a/lib/libc/stdio/ftell.c +++ b/lib/libc/stdio/ftell.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)ftell.c 8.2 (Berkeley) 5/4/95"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <sys/types.h> #include <errno.h> diff --git a/lib/libc/stdio/funopen.3 b/lib/libc/stdio/funopen.3 index e6988d0044c5..f3234af229f7 100644 --- a/lib/libc/stdio/funopen.3 +++ b/lib/libc/stdio/funopen.3 @@ -27,9 +27,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" @(#)funopen.3 8.1 (Berkeley) 6/9/93 -.\" $FreeBSD$ -.\" .Dd May 9, 2016 .Dt FUNOPEN 3 .Os diff --git a/lib/libc/stdio/funopen.c b/lib/libc/stdio/funopen.c index 4b1a31e2a962..87a3179f5908 100644 --- a/lib/libc/stdio/funopen.c +++ b/lib/libc/stdio/funopen.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)funopen.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <stdio.h> #include <errno.h> diff --git a/lib/libc/stdio/fvwrite.c b/lib/libc/stdio/fvwrite.c index 2a161859afa9..2d5aaf3c5dc8 100644 --- a/lib/libc/stdio/fvwrite.c +++ b/lib/libc/stdio/fvwrite.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)fvwrite.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -54,7 +48,6 @@ int __sfvwrite(FILE *fp, struct __suio *uio) { size_t len; - unsigned char *old_p; char *p; struct __siov *iov; int w, s; @@ -138,12 +131,8 @@ __sfvwrite(FILE *fp, struct __suio *uio) COPY(w); /* fp->_w -= w; */ /* unneeded */ fp->_p += w; - old_p = fp->_p; - if (__fflush(fp) == EOF) { - if (old_p == fp->_p) - fp->_p -= w; + if (__fflush(fp)) goto err; - } } else if (len >= (w = fp->_bf._size)) { /* write directly */ w = _swrite(fp, p, w); @@ -182,12 +171,8 @@ __sfvwrite(FILE *fp, struct __suio *uio) COPY(w); /* fp->_w -= w; */ fp->_p += w; - old_p = fp->_p; - if (__fflush(fp) == EOF) { - if (old_p == fp->_p) - fp->_p -= w; + if (__fflush(fp)) goto err; - } } else if (s >= (w = fp->_bf._size)) { w = _swrite(fp, p, w); if (w <= 0) diff --git a/lib/libc/stdio/fvwrite.h b/lib/libc/stdio/fvwrite.h index 406f138d7db8..ce6dc67a6ed2 100644 --- a/lib/libc/stdio/fvwrite.h +++ b/lib/libc/stdio/fvwrite.h @@ -30,9 +30,6 @@ * 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. - * - * @(#)fvwrite.h 8.1 (Berkeley) 6/4/93 - * $FreeBSD$ */ /* diff --git a/lib/libc/stdio/fwalk.c b/lib/libc/stdio/fwalk.c index 37691a715c53..fc93ee075051 100644 --- a/lib/libc/stdio/fwalk.c +++ b/lib/libc/stdio/fwalk.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)fwalk.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <sys/types.h> #include <stdio.h> #include "local.h" diff --git a/lib/libc/stdio/fwide.3 b/lib/libc/stdio/fwide.3 index 6ff8d9264995..597e2a5bf3e4 100644 --- a/lib/libc/stdio/fwide.3 +++ b/lib/libc/stdio/fwide.3 @@ -25,7 +25,6 @@ .\" SUCH DAMAGE. .\" .\" $Citrus: xpg4dl/FreeBSD/lib/libc/stdio/fwide.3,v 1.2 2001/12/07 04:47:08 yamt Exp $ -.\" $FreeBSD$ .\" .Dd October 24, 2001 .Dt FWIDE 3 diff --git a/lib/libc/stdio/fwide.c b/lib/libc/stdio/fwide.c index b7a8b3909196..86eb5b5299f8 100644 --- a/lib/libc/stdio/fwide.c +++ b/lib/libc/stdio/fwide.c @@ -1,5 +1,5 @@ /*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2002 Tim J. Robbins. * All rights reserved. @@ -26,9 +26,6 @@ * SUCH DAMAGE. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <errno.h> #include <stdio.h> diff --git a/lib/libc/stdio/fwprintf.c b/lib/libc/stdio/fwprintf.c index fb00c2e4b20d..f2a28ad4b08a 100644 --- a/lib/libc/stdio/fwprintf.c +++ b/lib/libc/stdio/fwprintf.c @@ -1,11 +1,11 @@ /*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2002 Tim J. Robbins * 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. * @@ -31,9 +31,6 @@ * SUCH DAMAGE. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <stdarg.h> #include <stdio.h> #include <wchar.h> diff --git a/lib/libc/stdio/fwrite.c b/lib/libc/stdio/fwrite.c index cb20931f5838..bbe2afb683c3 100644 --- a/lib/libc/stdio/fwrite.c +++ b/lib/libc/stdio/fwrite.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)fwrite.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <errno.h> #include <stdint.h> diff --git a/lib/libc/stdio/fwscanf.c b/lib/libc/stdio/fwscanf.c index df31be7b5bf1..833a31a8f1b9 100644 --- a/lib/libc/stdio/fwscanf.c +++ b/lib/libc/stdio/fwscanf.c @@ -1,11 +1,11 @@ /*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2002 Tim J. Robbins * 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. * @@ -31,9 +31,6 @@ * SUCH DAMAGE. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <stdarg.h> #include <stdio.h> #include <wchar.h> diff --git a/lib/libc/stdio/getc.3 b/lib/libc/stdio/getc.3 index f97ca6382ad3..02f0f2f06f4a 100644 --- a/lib/libc/stdio/getc.3 +++ b/lib/libc/stdio/getc.3 @@ -29,9 +29,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" @(#)getc.3 8.1 (Berkeley) 6/4/93 -.\" $FreeBSD$ -.\" .Dd April 4, 2020 .Dt GETC 3 .Os diff --git a/lib/libc/stdio/getc.c b/lib/libc/stdio/getc.c index 5329810ca14c..61b184115004 100644 --- a/lib/libc/stdio/getc.c +++ b/lib/libc/stdio/getc.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)getc.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <stdio.h> #include "un-namespace.h" diff --git a/lib/libc/stdio/getchar.c b/lib/libc/stdio/getchar.c index e29dd7136a4c..02ac4893b5e8 100644 --- a/lib/libc/stdio/getchar.c +++ b/lib/libc/stdio/getchar.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)getchar.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - /* * A subroutine version of the macro getchar. */ diff --git a/lib/libc/stdio/getdelim.c b/lib/libc/stdio/getdelim.c index ad1439ed071f..7543fefc3a57 100644 --- a/lib/libc/stdio/getdelim.c +++ b/lib/libc/stdio/getdelim.c @@ -1,5 +1,5 @@ /*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2009 David Schultz <das@FreeBSD.org> * Copyright (c) 2021 Dell EMC @@ -27,9 +27,6 @@ * SUCH DAMAGE. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <sys/param.h> #include <errno.h> diff --git a/lib/libc/stdio/getline.3 b/lib/libc/stdio/getline.3 index 0b8bf634a7c8..3c01ef07b597 100644 --- a/lib/libc/stdio/getline.3 +++ b/lib/libc/stdio/getline.3 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd July 30, 2016 .Dt GETLINE 3 .Os diff --git a/lib/libc/stdio/getline.c b/lib/libc/stdio/getline.c index f101f7f1c3ef..371341d6ea8e 100644 --- a/lib/libc/stdio/getline.c +++ b/lib/libc/stdio/getline.c @@ -1,5 +1,5 @@ /*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2009 David Schultz <das@FreeBSD.org> * All rights reserved. @@ -26,9 +26,6 @@ * SUCH DAMAGE. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <stdio.h> ssize_t diff --git a/lib/libc/stdio/gets.c b/lib/libc/stdio/gets.c index c8822e3b8d86..b92ce188e2b5 100644 --- a/lib/libc/stdio/gets.c +++ b/lib/libc/stdio/gets.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)gets.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <unistd.h> #include <stdio.h> diff --git a/lib/libc/stdio/gets_s.c b/lib/libc/stdio/gets_s.c index fc5774937821..9a8cf34916fb 100644 --- a/lib/libc/stdio/gets_s.c +++ b/lib/libc/stdio/gets_s.c @@ -34,9 +34,6 @@ * SUCH DAMAGE. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <errno.h> #include <unistd.h> diff --git a/lib/libc/stdio/getw.c b/lib/libc/stdio/getw.c index fa18f0183fb5..2986220461e9 100644 --- a/lib/libc/stdio/getw.c +++ b/lib/libc/stdio/getw.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)getw.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <stdio.h> int diff --git a/lib/libc/stdio/getwc.3 b/lib/libc/stdio/getwc.3 index 7986b01561ca..734e5c0b4259 100644 --- a/lib/libc/stdio/getwc.3 +++ b/lib/libc/stdio/getwc.3 @@ -31,9 +31,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" @(#)getc.3 8.1 (Berkeley) 6/4/93 -.\" $FreeBSD$ -.\" .Dd March 3, 2004 .Dt GETWC 3 .Os diff --git a/lib/libc/stdio/getwc.c b/lib/libc/stdio/getwc.c index d27988ba3163..ae56ff7d6dd3 100644 --- a/lib/libc/stdio/getwc.c +++ b/lib/libc/stdio/getwc.c @@ -1,11 +1,11 @@ /*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2002 Tim J. Robbins. * 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. * @@ -31,9 +31,6 @@ * SUCH DAMAGE. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <stdio.h> #include <wchar.h> diff --git a/lib/libc/stdio/getwchar.c b/lib/libc/stdio/getwchar.c index 2828075520a6..335a975ba6e8 100644 --- a/lib/libc/stdio/getwchar.c +++ b/lib/libc/stdio/getwchar.c @@ -1,11 +1,11 @@ /*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2002 Tim J. Robbins. * 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. * @@ -31,9 +31,6 @@ * SUCH DAMAGE. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <stdio.h> #include <wchar.h> diff --git a/lib/libc/stdio/glue.h b/lib/libc/stdio/glue.h index 6c805e038327..948ef537e5d6 100644 --- a/lib/libc/stdio/glue.h +++ b/lib/libc/stdio/glue.h @@ -30,9 +30,6 @@ * 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. - * - * @(#)glue.h 8.1 (Berkeley) 6/4/93 - * $FreeBSD$ */ /* diff --git a/lib/libc/stdio/local.h b/lib/libc/stdio/local.h index 336d00dfd8cc..4d8212e947d1 100644 --- a/lib/libc/stdio/local.h +++ b/lib/libc/stdio/local.h @@ -8,7 +8,7 @@ * Chris Torek. * * Copyright (c) 2011 The FreeBSD Foundation - * All rights reserved. + * * Portions of this software were developed by David Chisnall * under sponsorship from the FreeBSD Foundation. * @@ -35,9 +35,6 @@ * 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. - * - * @(#)local.h 8.3 (Berkeley) 7/3/94 - * $FreeBSD$ */ #ifndef _STDIO_LOCAL_H diff --git a/lib/libc/stdio/makebuf.c b/lib/libc/stdio/makebuf.c index 9bddf89a65b2..036682870cfa 100644 --- a/lib/libc/stdio/makebuf.c +++ b/lib/libc/stdio/makebuf.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)makebuf.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <sys/types.h> #include <sys/stat.h> diff --git a/lib/libc/stdio/mktemp.3 b/lib/libc/stdio/mktemp.3 index b6a38f23d2e9..d00d3d4f61fb 100644 --- a/lib/libc/stdio/mktemp.3 +++ b/lib/libc/stdio/mktemp.3 @@ -25,9 +25,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" @(#)mktemp.3 8.1 (Berkeley) 6/4/93 -.\" $FreeBSD$ -.\" .Dd July 29, 2019 .Dt MKTEMP 3 .Os diff --git a/lib/libc/stdio/mktemp.c b/lib/libc/stdio/mktemp.c index 0ede3058a3d5..8aff226acf14 100644 --- a/lib/libc/stdio/mktemp.c +++ b/lib/libc/stdio/mktemp.c @@ -29,12 +29,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)mktemp.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <sys/param.h> #include <sys/stat.h> diff --git a/lib/libc/stdio/open_memstream.3 b/lib/libc/stdio/open_memstream.3 index 506b9e229b76..89280a8f7be5 100644 --- a/lib/libc/stdio/open_memstream.3 +++ b/lib/libc/stdio/open_memstream.3 @@ -23,8 +23,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd August 1, 2015 .Dt OPEN_MEMSTREAM 3 .Os diff --git a/lib/libc/stdio/open_memstream.c b/lib/libc/stdio/open_memstream.c index 12b7164af98f..371022adf6b3 100644 --- a/lib/libc/stdio/open_memstream.c +++ b/lib/libc/stdio/open_memstream.c @@ -1,5 +1,5 @@ /*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2013 Hudson River Trading LLC * Written by: John H. Baldwin <jhb@FreeBSD.org> @@ -27,9 +27,6 @@ * SUCH DAMAGE. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <assert.h> #include <errno.h> diff --git a/lib/libc/stdio/open_wmemstream.c b/lib/libc/stdio/open_wmemstream.c index 1ea7c82e4aa7..213d61fcd4dd 100644 --- a/lib/libc/stdio/open_wmemstream.c +++ b/lib/libc/stdio/open_wmemstream.c @@ -1,5 +1,5 @@ /*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2013 Hudson River Trading LLC * Written by: John H. Baldwin <jhb@FreeBSD.org> @@ -27,9 +27,6 @@ * SUCH DAMAGE. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <assert.h> #include <errno.h> diff --git a/lib/libc/stdio/perror.c b/lib/libc/stdio/perror.c index 6eeb14893b8c..36052e8a8689 100644 --- a/lib/libc/stdio/perror.c +++ b/lib/libc/stdio/perror.c @@ -29,12 +29,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)perror.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <sys/types.h> #include <sys/uio.h> diff --git a/lib/libc/stdio/printf-pos.c b/lib/libc/stdio/printf-pos.c index 40f91e8af712..edbd4e379699 100644 --- a/lib/libc/stdio/printf-pos.c +++ b/lib/libc/stdio/printf-pos.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)vfprintf.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - /* * This is the code responsible for handling positional arguments * (%m$ and %m$.n$) for vfprintf() and vfwprintf(). diff --git a/lib/libc/stdio/printf.3 b/lib/libc/stdio/printf.3 index dd2360f13eca..f2428740b529 100644 --- a/lib/libc/stdio/printf.3 +++ b/lib/libc/stdio/printf.3 @@ -29,10 +29,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" @(#)printf.3 8.1 (Berkeley) 6/4/93 -.\" $FreeBSD$ -.\" -.Dd May 22, 2018 +.Dd September 5, 2023 .Dt PRINTF 3 .Os .Sh NAME @@ -213,6 +210,17 @@ and .Cm u conversions, this option has no effect. For +.Cm b +and +.Cm B +conversions, a non-zero result has the string +.Ql 0b +(or +.Ql 0B +for +.Cm B +conversions) prepended to it. +For .Cm o conversions, the precision of the number is increased to force the first character of the output string to a zero. @@ -246,7 +254,7 @@ For all conversions except .Cm n , the converted value is padded on the left with zeros rather than blanks. If a precision is given with a numeric conversion -.Cm ( d , i , o , u , i , x , +.Cm ( b , B , d , i , o , u , i , x , and .Cm X ) , the @@ -302,7 +310,7 @@ followed by an optional digit string. If the digit string is omitted, the precision is taken as zero. This gives the minimum number of digits to appear for -.Cm d , i , o , u , x , +.Cm b , B , d , i , o , u , x , and .Cm X conversions, the number of digits to appear after the decimal-point for @@ -320,18 +328,20 @@ conversions. .It An optional length modifier, that specifies the size of the argument. The following length modifiers are valid for the -.Cm d , i , n , o , u , x , +.Cm b , B , d , i , n , o , u , x , or .Cm X conversion: .Bl -column ".Cm q Em (deprecated)" ".Vt signed char" ".Vt unsigned long long" ".Vt long long *" -.It Sy Modifier Ta Cm d , i Ta Cm o , u , x , X Ta Cm n +.It Sy Modifier Ta Cm d , i Ta Cm b , B , o , u , x , X Ta Cm n .It Cm hh Ta Vt "signed char" Ta Vt "unsigned char" Ta Vt "signed char *" .It Cm h Ta Vt short Ta Vt "unsigned short" Ta Vt "short *" .It Cm l No (ell) Ta Vt long Ta Vt "unsigned long" Ta Vt "long *" .It Cm ll No (ell ell) Ta Vt "long long" Ta Vt "unsigned long long" Ta Vt "long long *" .It Cm j Ta Vt intmax_t Ta Vt uintmax_t Ta Vt "intmax_t *" .It Cm t Ta Vt ptrdiff_t Ta (see note) Ta Vt "ptrdiff_t *" +.It Cm w Ns Ar N Ta Vt intN_t Ta Vt uintN_t Ta Vt "intN_t *" +.It Cm wf Ns Ar N Ta Vt int_fastN_t Ta Vt uint_fastN_t Ta Vt "int_fastN_t *" .It Cm z Ta (see note) Ta Vt size_t Ta (see note) .It Cm q Em (deprecated) Ta Vt quad_t Ta Vt u_quad_t Ta Vt "quad_t *" .El @@ -340,7 +350,7 @@ Note: the .Cm t modifier, when applied to a -.Cm o , u , x , +.Cm b , B , o , u , x , or .Cm X conversion, indicates that the argument is of an unsigned type @@ -404,11 +414,16 @@ If a single format directive mixes positional and non-positional arguments, the results are undefined. .Pp The conversion specifiers and their meanings are: -.Bl -tag -width ".Cm diouxX" -.It Cm diouxX +.Bl -tag -width ".Cm bBdiouxX" +.It Cm bBdiouxX The .Vt int -(or appropriate variant) argument is converted to signed decimal +(or appropriate variant) argument is converted to +unsigned binary +.Cm ( b +and +.Cm B ) , +signed decimal .Cm ( d and .Cm i ) , diff --git a/lib/libc/stdio/printf.c b/lib/libc/stdio/printf.c index 7e7e5c8c128b..f67e3d51a398 100644 --- a/lib/libc/stdio/printf.c +++ b/lib/libc/stdio/printf.c @@ -8,7 +8,7 @@ * Chris Torek. * * Copyright (c) 2011 The FreeBSD Foundation - * All rights reserved. + * * Portions of this software were developed by David Chisnall * under sponsorship from the FreeBSD Foundation. * @@ -37,12 +37,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)printf.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <stdio.h> #include <stdarg.h> #include <xlocale.h> diff --git a/lib/libc/stdio/printf_l.3 b/lib/libc/stdio/printf_l.3 index 312d110c2975..433154c66e9c 100644 --- a/lib/libc/stdio/printf_l.3 +++ b/lib/libc/stdio/printf_l.3 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd April 7, 2012 .Dt PRINTF_L 3 .Os diff --git a/lib/libc/stdio/printfcommon.h b/lib/libc/stdio/printfcommon.h index c120f1eba766..411b778dc234 100644 --- a/lib/libc/stdio/printfcommon.h +++ b/lib/libc/stdio/printfcommon.h @@ -8,7 +8,7 @@ * Chris Torek. * * Copyright (c) 2011 The FreeBSD Foundation - * All rights reserved. + * * Portions of this software were developed by David Chisnall * under sponsorship from the FreeBSD Foundation. * @@ -35,8 +35,6 @@ * 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. - * - * $FreeBSD$ */ /* @@ -196,6 +194,13 @@ __ultoa(u_long val, CHAR *endp, int base, int octzero, const char *xdigs) } while (sval != 0); break; + case 2: + do { + *--cp = to_char(val & 1); + val >>= 1; + } while (val); + break; + case 8: do { *--cp = to_char(val & 7); @@ -246,6 +251,13 @@ __ujtoa(uintmax_t val, CHAR *endp, int base, int octzero, const char *xdigs) } while (sval != 0); break; + case 2: + do { + *--cp = to_char(val & 1); + val >>= 1; + } while (val); + break; + case 8: do { *--cp = to_char(val & 7); diff --git a/lib/libc/stdio/printflocal.h b/lib/libc/stdio/printflocal.h index 70131d10fdcb..f3d0d3e9e216 100644 --- a/lib/libc/stdio/printflocal.h +++ b/lib/libc/stdio/printflocal.h @@ -30,8 +30,6 @@ * 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. - * - * $FreeBSD$ */ /* @@ -51,6 +49,7 @@ #define PTRDIFFT 0x800 /* ptrdiff_t */ #define INTMAXT 0x1000 /* intmax_t */ #define CHARINT 0x2000 /* print char using int format */ +#define FASTINT 0x4000 /* int_fastN_t */ /* * Macros for converting digits to letters and vice versa diff --git a/lib/libc/stdio/putc.3 b/lib/libc/stdio/putc.3 index 89ee7c7f5efa..7bdf87e31769 100644 --- a/lib/libc/stdio/putc.3 +++ b/lib/libc/stdio/putc.3 @@ -29,9 +29,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" @(#)putc.3 8.1 (Berkeley) 6/4/93 -.\" $FreeBSD$ -.\" .Dd January 23, 2020 .Dt PUTC 3 .Os diff --git a/lib/libc/stdio/putc.c b/lib/libc/stdio/putc.c index 1713792e1909..6942239e0c78 100644 --- a/lib/libc/stdio/putc.c +++ b/lib/libc/stdio/putc.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)putc.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <stdio.h> #include "un-namespace.h" diff --git a/lib/libc/stdio/putchar.c b/lib/libc/stdio/putchar.c index 12adf86f3c34..87980ca0d052 100644 --- a/lib/libc/stdio/putchar.c +++ b/lib/libc/stdio/putchar.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)putchar.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <stdio.h> #include "un-namespace.h" diff --git a/lib/libc/stdio/puts.c b/lib/libc/stdio/puts.c index fe80ddbba792..f0cf58fab5b5 100644 --- a/lib/libc/stdio/puts.c +++ b/lib/libc/stdio/puts.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)puts.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <stdio.h> #include <string.h> diff --git a/lib/libc/stdio/putw.c b/lib/libc/stdio/putw.c index ba9853db9c8a..417030f13360 100644 --- a/lib/libc/stdio/putw.c +++ b/lib/libc/stdio/putw.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)putw.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <stdio.h> #include "un-namespace.h" diff --git a/lib/libc/stdio/putwc.3 b/lib/libc/stdio/putwc.3 index 6f0f55884d20..6d09c575c022 100644 --- a/lib/libc/stdio/putwc.3 +++ b/lib/libc/stdio/putwc.3 @@ -31,9 +31,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" @(#)putc.3 8.1 (Berkeley) 6/4/93 -.\" $FreeBSD$ -.\" .Dd March 3, 2004 .Dt PUTWC 3 .Os diff --git a/lib/libc/stdio/putwc.c b/lib/libc/stdio/putwc.c index 510a3af70eda..435da69dec6a 100644 --- a/lib/libc/stdio/putwc.c +++ b/lib/libc/stdio/putwc.c @@ -1,11 +1,11 @@ /*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2002 Tim J. Robbins. * 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. * @@ -31,9 +31,6 @@ * SUCH DAMAGE. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <stdio.h> #include <wchar.h> diff --git a/lib/libc/stdio/putwchar.c b/lib/libc/stdio/putwchar.c index a042e449e03a..f109a5f6b1dd 100644 --- a/lib/libc/stdio/putwchar.c +++ b/lib/libc/stdio/putwchar.c @@ -1,11 +1,11 @@ /*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2002 Tim J. Robbins. * 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. * @@ -31,9 +31,6 @@ * SUCH DAMAGE. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <stdio.h> #include <wchar.h> diff --git a/lib/libc/stdio/refill.c b/lib/libc/stdio/refill.c index dbbcb4912aa2..13d85d71af22 100644 --- a/lib/libc/stdio/refill.c +++ b/lib/libc/stdio/refill.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)refill.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <errno.h> #include <stdio.h> diff --git a/lib/libc/stdio/remove.3 b/lib/libc/stdio/remove.3 index a8baf428558b..65ec58bf8b6d 100644 --- a/lib/libc/stdio/remove.3 +++ b/lib/libc/stdio/remove.3 @@ -29,9 +29,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" @(#)remove.3 8.1 (Berkeley) 6/4/93 -.\" $FreeBSD$ -.\" .Dd June 4, 1993 .Dt REMOVE 3 .Os diff --git a/lib/libc/stdio/remove.c b/lib/libc/stdio/remove.c index b92e14ad6c16..2c9ef61b12de 100644 --- a/lib/libc/stdio/remove.c +++ b/lib/libc/stdio/remove.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)remove.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> diff --git a/lib/libc/stdio/rewind.c b/lib/libc/stdio/rewind.c index 2449de397160..4bbd06976034 100644 --- a/lib/libc/stdio/rewind.c +++ b/lib/libc/stdio/rewind.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)rewind.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <errno.h> #include <stdio.h> diff --git a/lib/libc/stdio/rget.c b/lib/libc/stdio/rget.c index 530fb67b0ff1..6f57ad4bc0f3 100644 --- a/lib/libc/stdio/rget.c +++ b/lib/libc/stdio/rget.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)rget.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <stdio.h> #include "local.h" diff --git a/lib/libc/stdio/scanf.3 b/lib/libc/stdio/scanf.3 index 4a8efdbb3726..04664c5f2bbd 100644 --- a/lib/libc/stdio/scanf.3 +++ b/lib/libc/stdio/scanf.3 @@ -29,10 +29,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" @(#)scanf.3 8.2 (Berkeley) 12/11/93 -.\" $FreeBSD$ -.\" -.Dd April 2, 2022 +.Dd September 5, 2023 .Dt SCANF 3 .Os .Sh NAME @@ -142,7 +139,7 @@ The conversion that follows occurs as usual, but no pointer is used; the result of the conversion is simply discarded. .It Cm hh Indicates that the conversion will be one of -.Cm dioux +.Cm bdioux or .Cm n and the next pointer is a pointer to a @@ -151,7 +148,7 @@ and the next pointer is a pointer to a .Vt int ) . .It Cm h Indicates that the conversion will be one of -.Cm dioux +.Cm bdioux or .Cm n and the next pointer is a pointer to a @@ -160,7 +157,7 @@ and the next pointer is a pointer to a .Vt int ) . .It Cm l No (ell) Indicates that the conversion will be one of -.Cm dioux +.Cm bdioux or .Cm n and the next pointer is a pointer to a @@ -186,7 +183,7 @@ and the next pointer is a pointer to an array of .Vt char ) . .It Cm ll No (ell ell) Indicates that the conversion will be one of -.Cm dioux +.Cm bdioux or .Cm n and the next pointer is a pointer to a @@ -202,7 +199,7 @@ and the next pointer is a pointer to .Vt "long double" . .It Cm j Indicates that the conversion will be one of -.Cm dioux +.Cm bdioux or .Cm n and the next pointer is a pointer to a @@ -211,16 +208,44 @@ and the next pointer is a pointer to a .Vt int ) . .It Cm t Indicates that the conversion will be one of -.Cm dioux +.Cm bdioux or .Cm n and the next pointer is a pointer to a .Vt ptrdiff_t (rather than .Vt int ) . +.It Cm w Ns Ar N +.Po +where +.Ar N +is 8, 16, 32, or 64 +.Pc +Indicates that the conversion will be one of +.Cm bdioux +or +.Cm n +and the next pointer is a pointer to a +.Vt intN_t +(rather than +.Vt int ) . +.It Cm wf Ns Ar N +.Po +where +.Ar N +is 8, 16, 32, or 64 +.Pc +Indicates that the conversion will be one of +.Cm bdioux +or +.Cm n +and the next pointer is a pointer to a +.Vt int_fastN_t +(rather than +.Vt int ) . .It Cm z Indicates that the conversion will be one of -.Cm dioux +.Cm bdioux or .Cm n and the next pointer is a pointer to a @@ -230,7 +255,7 @@ and the next pointer is a pointer to a .It Cm q (deprecated.) Indicates that the conversion will be one of -.Cm dioux +.Cm bdioux or .Cm n and the next pointer is a pointer to a @@ -274,6 +299,10 @@ matches a single input .Ql % character. No conversion is done, and assignment does not occur. +.It Cm b , B +Matches an optionally signed binary integer; +the next pointer must be a pointer to +.Vt "unsigned int" . .It Cm d Matches an optionally signed decimal integer; the next pointer must be a pointer to @@ -282,7 +311,12 @@ the next pointer must be a pointer to Matches an optionally signed integer; the next pointer must be a pointer to .Vt int . -The integer is read in base 16 if it begins +The integer is read +in base 2 if it begins with +.Ql 0b +or +.Ql 0B , +in base 16 if it begins with .Ql 0x or diff --git a/lib/libc/stdio/scanf.c b/lib/libc/stdio/scanf.c index baffba9f9018..c0bd4dfe0c01 100644 --- a/lib/libc/stdio/scanf.c +++ b/lib/libc/stdio/scanf.c @@ -8,7 +8,7 @@ * Chris Torek. * * Copyright (c) 2011 The FreeBSD Foundation - * All rights reserved. + * * Portions of this software were developed by David Chisnall * under sponsorship from the FreeBSD Foundation. * @@ -37,12 +37,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)scanf.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <stdio.h> #include <stdarg.h> diff --git a/lib/libc/stdio/scanf_l.3 b/lib/libc/stdio/scanf_l.3 index 35a82418ec51..8470fd0cff38 100644 --- a/lib/libc/stdio/scanf_l.3 +++ b/lib/libc/stdio/scanf_l.3 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd April 8, 2012 .Dt SCANF_L 3 .Os diff --git a/lib/libc/stdio/setbuf.3 b/lib/libc/stdio/setbuf.3 index 3ca51d50eb8f..027564cadfb4 100644 --- a/lib/libc/stdio/setbuf.3 +++ b/lib/libc/stdio/setbuf.3 @@ -29,9 +29,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" @(#)setbuf.3 8.1 (Berkeley) 6/4/93 -.\" $FreeBSD$ -.\" .Dd May 1, 2020 .Dt SETBUF 3 .Os diff --git a/lib/libc/stdio/setbuf.c b/lib/libc/stdio/setbuf.c index 7c60c77dce9c..ec3c741947d8 100644 --- a/lib/libc/stdio/setbuf.c +++ b/lib/libc/stdio/setbuf.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)setbuf.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <stdio.h> #include "local.h" diff --git a/lib/libc/stdio/setbuffer.c b/lib/libc/stdio/setbuffer.c index b760e1a510f2..1838b84c1653 100644 --- a/lib/libc/stdio/setbuffer.c +++ b/lib/libc/stdio/setbuffer.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)setbuffer.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <stdio.h> void diff --git a/lib/libc/stdio/setvbuf.c b/lib/libc/stdio/setvbuf.c index 03a3c7263125..554d558e73df 100644 --- a/lib/libc/stdio/setvbuf.c +++ b/lib/libc/stdio/setvbuf.c @@ -32,13 +32,8 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)setvbuf.c 8.2 (Berkeley) 11/16/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" +#include <limits.h> #include <stdio.h> #include <stdlib.h> #include "un-namespace.h" @@ -62,7 +57,7 @@ setvbuf(FILE * __restrict fp, char * __restrict buf, int mode, size_t size) * when setting _IONBF. */ if (mode != _IONBF) - if ((mode != _IOFBF && mode != _IOLBF) || (int)size < 0) + if ((mode != _IOFBF && mode != _IOLBF) || size > INT_MAX) return (EOF); FLOCKFILE_CANCELSAFE(fp); diff --git a/lib/libc/stdio/snprintf.c b/lib/libc/stdio/snprintf.c index 8ee0b4429340..607bb3770ccd 100644 --- a/lib/libc/stdio/snprintf.c +++ b/lib/libc/stdio/snprintf.c @@ -5,7 +5,7 @@ * The Regents of the University of California. 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. * @@ -37,12 +37,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)snprintf.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <errno.h> #include <limits.h> #include <stdio.h> @@ -51,6 +45,8 @@ __FBSDID("$FreeBSD$"); #include "local.h" +#undef snprintf /* _FORTIFY_SOURCE */ + int snprintf(char * __restrict str, size_t n, char const * __restrict fmt, ...) { diff --git a/lib/libc/stdio/sprintf.c b/lib/libc/stdio/sprintf.c index 8a7611f384a2..1cac21e98a46 100644 --- a/lib/libc/stdio/sprintf.c +++ b/lib/libc/stdio/sprintf.c @@ -8,7 +8,7 @@ * Chris Torek. * * Copyright (c) 2011 The FreeBSD Foundation - * All rights reserved. + * * Portions of this software were developed by David Chisnall * under sponsorship from the FreeBSD Foundation. * @@ -37,18 +37,14 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)sprintf.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <stdio.h> #include <stdarg.h> #include <limits.h> #include "local.h" #include "xlocale_private.h" +#undef sprintf /* _FORTIFY_SOURCE */ + int sprintf(char * __restrict str, char const * __restrict fmt, ...) { diff --git a/lib/libc/stdio/sscanf.c b/lib/libc/stdio/sscanf.c index cab6408535a8..5dc9d2b13697 100644 --- a/lib/libc/stdio/sscanf.c +++ b/lib/libc/stdio/sscanf.c @@ -8,7 +8,7 @@ * Chris Torek. * * Copyright (c) 2011 The FreeBSD Foundation - * All rights reserved. + * * Portions of this software were developed by David Chisnall * under sponsorship from the FreeBSD Foundation. * @@ -37,12 +37,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)sscanf.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <stdio.h> #include <string.h> #include <stdarg.h> diff --git a/lib/libc/stdio/stdio.3 b/lib/libc/stdio/stdio.3 index 7b3dd364c79a..794baec5182f 100644 --- a/lib/libc/stdio/stdio.3 +++ b/lib/libc/stdio/stdio.3 @@ -25,9 +25,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" @(#)stdio.3 8.7 (Berkeley) 4/19/94 -.\" $FreeBSD$ -.\" .Dd March 3, 2009 .Dt STDIO 3 .Os diff --git a/lib/libc/stdio/stdio.c b/lib/libc/stdio/stdio.c index 4f093f12dc80..bffd7b1bfc3c 100644 --- a/lib/libc/stdio/stdio.c +++ b/lib/libc/stdio/stdio.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)stdio.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <errno.h> #include <fcntl.h> diff --git a/lib/libc/stdio/swprintf.c b/lib/libc/stdio/swprintf.c index 39bb7346099c..278f0e37d117 100644 --- a/lib/libc/stdio/swprintf.c +++ b/lib/libc/stdio/swprintf.c @@ -1,11 +1,11 @@ /*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2002 Tim J. Robbins * 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. * @@ -31,9 +31,6 @@ * SUCH DAMAGE. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <stdarg.h> #include <stdio.h> #include <wchar.h> diff --git a/lib/libc/stdio/swscanf.c b/lib/libc/stdio/swscanf.c index e45449c16d53..9b91acf56685 100644 --- a/lib/libc/stdio/swscanf.c +++ b/lib/libc/stdio/swscanf.c @@ -1,11 +1,11 @@ /*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2002 Tim J. Robbins * 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. * @@ -31,9 +31,6 @@ * SUCH DAMAGE. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <stdarg.h> #include <stdio.h> #include <wchar.h> diff --git a/lib/libc/stdio/tempnam.c b/lib/libc/stdio/tempnam.c index 2d7bd90e08a4..a3e6c6e3cf01 100644 --- a/lib/libc/stdio/tempnam.c +++ b/lib/libc/stdio/tempnam.c @@ -29,12 +29,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)tempnam.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <sys/param.h> #include <errno.h> #include <stdio.h> @@ -60,7 +54,7 @@ tempnam(const char *dir, const char *pfx) if (!pfx) pfx = "tmp."; - if (issetugid() == 0 && (f = getenv("TMPDIR"))) { + if ((f = secure_getenv("TMPDIR")) != NULL) { (void)snprintf(name, MAXPATHLEN, "%s%s%sXXXXXX", f, *(f + strlen(f) - 1) == '/'? "": "/", pfx); if ((f = _mktemp(name))) diff --git a/lib/libc/stdio/tmpfile.c b/lib/libc/stdio/tmpfile.c index e5ee1be2884e..d3331b8c2c2d 100644 --- a/lib/libc/stdio/tmpfile.c +++ b/lib/libc/stdio/tmpfile.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)tmpfile.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <sys/types.h> #include <signal.h> @@ -60,9 +54,7 @@ tmpfile(void) char *buf; const char *tmpdir; - tmpdir = NULL; - if (issetugid() == 0) - tmpdir = getenv("TMPDIR"); + tmpdir = secure_getenv("TMPDIR"); if (tmpdir == NULL) tmpdir = _PATH_TMP; diff --git a/lib/libc/stdio/tmpnam.3 b/lib/libc/stdio/tmpnam.3 index 6300a1725eba..3b9d93280e72 100644 --- a/lib/libc/stdio/tmpnam.3 +++ b/lib/libc/stdio/tmpnam.3 @@ -29,9 +29,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" @(#)tmpnam.3 8.2 (Berkeley) 11/17/93 -.\" $FreeBSD$ -.\" .Dd August 7, 2020 .Dt TMPFILE 3 .Os diff --git a/lib/libc/stdio/tmpnam.c b/lib/libc/stdio/tmpnam.c index c4d56778027d..d7c436928cd7 100644 --- a/lib/libc/stdio/tmpnam.c +++ b/lib/libc/stdio/tmpnam.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)tmpnam.c 8.3 (Berkeley) 3/28/94"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <sys/types.h> #include <stdio.h> diff --git a/lib/libc/stdio/ungetc.3 b/lib/libc/stdio/ungetc.3 index 77878d459bc8..946eceed9428 100644 --- a/lib/libc/stdio/ungetc.3 +++ b/lib/libc/stdio/ungetc.3 @@ -29,9 +29,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" @(#)ungetc.3 8.1 (Berkeley) 6/4/93 -.\" $FreeBSD$ -.\" .Dd June 4, 1993 .Dt UNGETC 3 .Os diff --git a/lib/libc/stdio/ungetc.c b/lib/libc/stdio/ungetc.c index 2e140c965a02..b494d462a19a 100644 --- a/lib/libc/stdio/ungetc.c +++ b/lib/libc/stdio/ungetc.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)ungetc.c 8.2 (Berkeley) 11/3/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <stdio.h> #include <stdlib.h> diff --git a/lib/libc/stdio/ungetwc.3 b/lib/libc/stdio/ungetwc.3 index 96bc4263de8b..e5d5560417a0 100644 --- a/lib/libc/stdio/ungetwc.3 +++ b/lib/libc/stdio/ungetwc.3 @@ -31,9 +31,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" @(#)ungetc.3 8.1 (Berkeley) 6/4/93 -.\" $FreeBSD$ -.\" .Dd March 3, 2004 .Dt UNGETWC 3 .Os diff --git a/lib/libc/stdio/ungetwc.c b/lib/libc/stdio/ungetwc.c index d7705c8199a2..0a72b6ea1705 100644 --- a/lib/libc/stdio/ungetwc.c +++ b/lib/libc/stdio/ungetwc.c @@ -1,11 +1,11 @@ /*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2002-2004 Tim J. Robbins. * 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. * @@ -31,9 +31,6 @@ * SUCH DAMAGE. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <errno.h> #include <limits.h> diff --git a/lib/libc/stdio/vasprintf.c b/lib/libc/stdio/vasprintf.c index f3545f149a73..c2c6170a2382 100644 --- a/lib/libc/stdio/vasprintf.c +++ b/lib/libc/stdio/vasprintf.c @@ -7,7 +7,7 @@ * 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. * @@ -34,9 +34,6 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <stdio.h> #include <stdlib.h> #include <errno.h> diff --git a/lib/libc/stdio/vdprintf.c b/lib/libc/stdio/vdprintf.c index 73f87b0f0cfa..3cff85aa9dc5 100644 --- a/lib/libc/stdio/vdprintf.c +++ b/lib/libc/stdio/vdprintf.c @@ -1,11 +1,11 @@ /*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * SPDX-License-Identifier: BSD-2-Clause * * 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. * @@ -31,9 +31,6 @@ * SUCH DAMAGE. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <errno.h> #include <limits.h> diff --git a/lib/libc/stdio/vfprintf.c b/lib/libc/stdio/vfprintf.c index 70f5074e2f72..7048315a8d78 100644 --- a/lib/libc/stdio/vfprintf.c +++ b/lib/libc/stdio/vfprintf.c @@ -8,7 +8,7 @@ * Chris Torek. * * Copyright (c) 2011 The FreeBSD Foundation - * All rights reserved. + * * Portions of this software were developed by David Chisnall * under sponsorship from the FreeBSD Foundation. * @@ -37,12 +37,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)vfprintf.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - /* * Actual printf innards. * @@ -318,6 +312,8 @@ __vfprintf(FILE *fp, locale_t locale, const char *fmt0, va_list ap) int width; /* width from format (%8d), or 0 */ int prec; /* precision from format; <0 for N/A */ int saved_errno; + int error; + char errnomsg[NL_TEXTMAX]; char sign; /* sign prefix (' ', '+', '-', or \0) */ struct grouping_state gs; /* thousands' grouping info */ @@ -612,9 +608,65 @@ reswitch: switch (ch) { case 't': flags |= PTRDIFFT; goto rflag; + case 'w': + /* + * Fixed-width integer types. On all platforms we + * support, int8_t is equivalent to char, int16_t + * is equivalent to short, int32_t is equivalent + * to int, int64_t is equivalent to long long int. + * Furthermore, int_fast8_t, int_fast16_t and + * int_fast32_t are equivalent to int, and + * int_fast64_t is equivalent to long long int. + */ + flags &= ~(CHARINT|SHORTINT|LONGINT|LLONGINT|INTMAXT); + if (fmt[0] == 'f') { + flags |= FASTINT; + fmt++; + } else { + flags &= ~FASTINT; + } + if (fmt[0] == '8') { + if (!(flags & FASTINT)) + flags |= CHARINT; + else + /* no flag set = 32 */ ; + fmt += 1; + } else if (fmt[0] == '1' && fmt[1] == '6') { + if (!(flags & FASTINT)) + flags |= SHORTINT; + else + /* no flag set = 32 */ ; + fmt += 2; + } else if (fmt[0] == '3' && fmt[1] == '2') { + /* no flag set = 32 */ ; + fmt += 2; + } else if (fmt[0] == '6' && fmt[1] == '4') { + flags |= LLONGINT; + fmt += 2; + } else { + if (flags & FASTINT) { + flags &= ~FASTINT; + fmt--; + } + goto invalid; + } + goto rflag; case 'z': flags |= SIZET; goto rflag; + case 'B': + case 'b': + if (flags & INTMAX_SIZE) + ujval = UJARG(); + else + ulval = UARG(); + base = 2; + /* leading 0b/B only if non-zero */ + if (flags & ALT && + (flags & INTMAX_SIZE ? ujval != 0 : ulval != 0)) + ox[1] = ch; + goto nosign; + break; case 'C': flags |= LONGINT; /*FALLTHROUGH*/ @@ -779,7 +831,9 @@ fp_common: break; #endif /* !NO_FLOATING_POINT */ case 'm': - cp = strerror(saved_errno); + error = __strerror_rl(saved_errno, errnomsg, + sizeof(errnomsg), locale); + cp = error == 0 ? errnomsg : "<strerror failure>"; size = (prec >= 0) ? strnlen(cp, prec) : strlen(cp); sign = '\0'; break; @@ -921,6 +975,7 @@ number: if ((dprec = prec) >= 0) default: /* "%?" prints ?, unless ? is NUL */ if (ch == '\0') goto done; +invalid: /* pretend it was %c with argument ch */ cp = buf; *cp = ch; diff --git a/lib/libc/stdio/vfscanf.c b/lib/libc/stdio/vfscanf.c index bd3830c19907..a678710e1ecb 100644 --- a/lib/libc/stdio/vfscanf.c +++ b/lib/libc/stdio/vfscanf.c @@ -5,7 +5,9 @@ * The Regents of the University of California. All rights reserved. * * Copyright (c) 2011 The FreeBSD Foundation - * All rights reserved. + * + * Copyright (c) 2023 Dag-Erling Smørgrav + * * Portions of this software were developed by David Chisnall * under sponsorship from the FreeBSD Foundation. * @@ -37,12 +39,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)vfscanf.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <ctype.h> #include <inttypes.h> @@ -75,6 +71,7 @@ __FBSDID("$FreeBSD$"); #define SUPPRESS 0x08 /* *: suppress assignment */ #define POINTER 0x10 /* p: void * (as hex) */ #define NOSKIP 0x20 /* [ or c: do not skip blanks */ +#define FASTINT 0x200 /* wfN: int_fastN_t */ #define LONGLONG 0x400 /* ll: long long (+ deprecated q: quad) */ #define INTMAXT 0x800 /* j: intmax_t */ #define PTRDIFFT 0x1000 /* t: ptrdiff_t */ @@ -83,16 +80,6 @@ __FBSDID("$FreeBSD$"); #define UNSIGNED 0x8000 /* %[oupxX] conversions */ /* - * The following are used in integral conversions only: - * SIGNOK, NDIGITS, PFXOK, and NZDIGITS - */ -#define SIGNOK 0x40 /* +/- is (still) legal */ -#define NDIGITS 0x80 /* no digits detected */ -#define PFXOK 0x100 /* 0x prefix is (still) legal */ -#define NZDIGITS 0x200 /* no zero digits detected */ -#define HAVESIGN 0x10000 /* sign detected */ - -/* * Conversion types. */ #define CT_CHAR 0 /* %c conversion */ @@ -309,129 +296,160 @@ convert_wstring(FILE *fp, wchar_t *wcp, int width, locale_t locale) return (n); } +enum parseint_state { + begin, + havesign, + havezero, + haveprefix, + any, +}; + +static __inline int +parseint_fsm(int c, enum parseint_state *state, int *base) +{ + switch (c) { + case '+': + case '-': + if (*state == begin) { + *state = havesign; + return 1; + } + break; + case '0': + if (*state == begin || *state == havesign) { + *state = havezero; + } else { + *state = any; + } + return 1; + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + if (*state == havezero && *base == 0) { + *base = 8; + } + /* FALL THROUGH */ + case '8': + case '9': + if (*state == begin || + *state == havesign) { + if (*base == 0) { + *base = 10; + } + } + if (*state == begin || + *state == havesign || + *state == havezero || + *state == haveprefix || + *state == any) { + if (*base > c - '0') { + *state = any; + return 1; + } + } + break; + case 'b': + if (*state == havezero) { + if (*base == 0 || *base == 2) { + *state = haveprefix; + *base = 2; + return 1; + } + } + /* FALL THROUGH */ + case 'a': + case 'c': + case 'd': + case 'e': + case 'f': + if (*state == begin || + *state == havesign || + *state == havezero || + *state == haveprefix || + *state == any) { + if (*base > c - 'a' + 10) { + *state = any; + return 1; + } + } + break; + case 'B': + if (*state == havezero) { + if (*base == 0 || *base == 2) { + *state = haveprefix; + *base = 2; + return 1; + } + } + /* FALL THROUGH */ + case 'A': + case 'C': + case 'D': + case 'E': + case 'F': + if (*state == begin || + *state == havesign || + *state == havezero || + *state == haveprefix || + *state == any) { + if (*base > c - 'A' + 10) { + *state = any; + return 1; + } + } + break; + case 'x': + case 'X': + if (*state == havezero) { + if (*base == 0 || *base == 16) { + *state = haveprefix; + *base = 16; + return 1; + } + } + break; + } + return 0; +} + /* - * Read an integer, storing it in buf. The only relevant bit in the - * flags argument is PFXOK. + * Read an integer, storing it in buf. * * Return 0 on a match failure, and the number of characters read * otherwise. */ static __inline int -parseint(FILE *fp, char * __restrict buf, int width, int base, int flags) +parseint(FILE *fp, char * __restrict buf, int width, int base) { - /* `basefix' is used to avoid `if' tests */ - static const short basefix[17] = - { 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }; + enum parseint_state state = begin; char *p; int c; - flags |= SIGNOK | NDIGITS | NZDIGITS; for (p = buf; width; width--) { - c = *fp->_p; - /* - * Switch on the character; `goto ok' if we accept it - * as a part of number. - */ - switch (c) { - - /* - * The digit 0 is always legal, but is special. For - * %i conversions, if no digits (zero or nonzero) have - * been scanned (only signs), we will have base==0. - * In that case, we should set it to 8 and enable 0x - * prefixing. Also, if we have not scanned zero - * digits before this, do not turn off prefixing - * (someone else will turn it off if we have scanned - * any nonzero digits). - */ - case '0': - if (base == 0) { - base = 8; - flags |= PFXOK; - } - if (flags & NZDIGITS) - flags &= ~(SIGNOK|NZDIGITS|NDIGITS); - else - flags &= ~(SIGNOK|PFXOK|NDIGITS); - goto ok; - - /* 1 through 7 always legal */ - case '1': case '2': case '3': - case '4': case '5': case '6': case '7': - base = basefix[base]; - flags &= ~(SIGNOK | PFXOK | NDIGITS); - goto ok; - - /* digits 8 and 9 ok iff decimal or hex */ - case '8': case '9': - base = basefix[base]; - if (base <= 8) - break; /* not legal here */ - flags &= ~(SIGNOK | PFXOK | NDIGITS); - goto ok; - - /* letters ok iff hex */ - case 'A': case 'B': case 'C': - case 'D': case 'E': case 'F': - case 'a': case 'b': case 'c': - case 'd': case 'e': case 'f': - /* no need to fix base here */ - if (base <= 10) - break; /* not legal here */ - flags &= ~(SIGNOK | PFXOK | NDIGITS); - goto ok; - - /* sign ok only as first character */ - case '+': case '-': - if (flags & SIGNOK) { - flags &= ~SIGNOK; - flags |= HAVESIGN; - goto ok; - } + c = __sgetc(fp); + if (c == EOF) break; - - /* - * x ok iff flag still set & 2nd char (or 3rd char if - * we have a sign). - */ - case 'x': case 'X': - if (flags & PFXOK && p == - buf + 1 + !!(flags & HAVESIGN)) { - base = 16; /* if %i */ - flags &= ~PFXOK; - goto ok; - } + if (!parseint_fsm(c, &state, &base)) break; - } - - /* - * If we got here, c is not a legal character for a - * number. Stop accumulating digits. - */ - break; - ok: - /* - * c is legal: store it and look at the next. - */ *p++ = c; - if (--fp->_r > 0) - fp->_p++; - else if (__srefill(fp)) - break; /* EOF */ } /* - * If we had only a sign, it is no good; push back the sign. - * If the number ends in `x', it was [sign] '0' 'x', so push - * back the x and treat it as [sign] '0'. + * If we only had a sign, push it back. If we only had a 0b or 0x + * prefix (possibly preceded by a sign), we view it as "0" and + * push back the letter. In all other cases, if we stopped + * because we read a non-number character, push it back. */ - if (flags & NDIGITS) { - if (p > buf) - (void) __ungetc(*(u_char *)--p, fp); - return (0); - } - c = ((u_char *)p)[-1]; - if (c == 'x' || c == 'X') { - --p; + if (state == havesign) { + p--; + (void) __ungetc(*(u_char *)p, fp); + } else if (state == haveprefix) { + p--; + (void) __ungetc(c, fp); + } else if (width && c != EOF) { (void) __ungetc(c, fp); } return (p - buf); @@ -534,6 +552,45 @@ literal: case 't': flags |= PTRDIFFT; goto again; + case 'w': + /* + * Fixed-width integer types. On all platforms we + * support, int8_t is equivalent to char, int16_t + * is equivalent to short, int32_t is equivalent + * to int, int64_t is equivalent to long long int. + * Furthermore, int_fast8_t, int_fast16_t and + * int_fast32_t are equivalent to int, and + * int_fast64_t is equivalent to long long int. + */ + flags &= ~(SHORTSHORT|SHORT|LONG|LONGLONG|SIZET|INTMAXT|PTRDIFFT); + if (fmt[0] == 'f') { + flags |= FASTINT; + fmt++; + } else { + flags &= ~FASTINT; + } + if (fmt[0] == '8') { + if (!(flags & FASTINT)) + flags |= SHORTSHORT; + else + /* no flag set = 32 */ ; + fmt += 1; + } else if (fmt[0] == '1' && fmt[1] == '6') { + if (!(flags & FASTINT)) + flags |= SHORT; + else + /* no flag set = 32 */ ; + fmt += 2; + } else if (fmt[0] == '3' && fmt[1] == '2') { + /* no flag set = 32 */ ; + fmt += 2; + } else if (fmt[0] == '6' && fmt[1] == '4') { + flags |= LONGLONG; + fmt += 2; + } else { + goto match_failure; + } + goto again; case 'z': flags |= SIZET; goto again; @@ -556,6 +613,13 @@ literal: /* * Conversions. */ + case 'B': + case 'b': + c = CT_INT; + flags |= UNSIGNED; + base = 2; + break; + case 'd': c = CT_INT; base = 10; @@ -580,7 +644,6 @@ literal: case 'X': case 'x': - flags |= PFXOK; /* enable 0x prefixing */ c = CT_INT; flags |= UNSIGNED; base = 16; @@ -615,7 +678,7 @@ literal: break; case 'p': /* pointer format is like hex */ - flags |= POINTER | PFXOK; + flags |= POINTER; c = CT_INT; /* assumes sizeof(uintmax_t) */ flags |= UNSIGNED; /* >= sizeof(uintptr_t) */ base = 16; @@ -740,7 +803,7 @@ literal: width = sizeof(buf) - 2; width++; #endif - nr = parseint(fp, buf, width, base, flags); + nr = parseint(fp, buf, width, base); if (nr == 0) goto match_failure; if ((flags & SUPPRESS) == 0) { diff --git a/lib/libc/stdio/vfwprintf.c b/lib/libc/stdio/vfwprintf.c index 91238fed138a..d43b472f7730 100644 --- a/lib/libc/stdio/vfwprintf.c +++ b/lib/libc/stdio/vfwprintf.c @@ -8,7 +8,7 @@ * Chris Torek. * * Copyright (c) 2011 The FreeBSD Foundation - * All rights reserved. + * * Portions of this software were developed by David Chisnall * under sponsorship from the FreeBSD Foundation. * @@ -37,14 +37,6 @@ * SUCH DAMAGE. */ -#if 0 -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)vfprintf.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#endif -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - /* * Actual wprintf innards. * @@ -683,9 +675,65 @@ reswitch: switch (ch) { case 't': flags |= PTRDIFFT; goto rflag; + case 'w': + /* + * Fixed-width integer types. On all platforms we + * support, int8_t is equivalent to char, int16_t + * is equivalent to short, int32_t is equivalent + * to int, int64_t is equivalent to long long int. + * Furthermore, int_fast8_t, int_fast16_t and + * int_fast32_t are equivalent to int, and + * int_fast64_t is equivalent to long long int. + */ + flags &= ~(CHARINT|SHORTINT|LONGINT|LLONGINT|INTMAXT); + if (fmt[0] == 'f') { + flags |= FASTINT; + fmt++; + } else { + flags &= ~FASTINT; + } + if (fmt[0] == '8') { + if (!(flags & FASTINT)) + flags |= CHARINT; + else + /* no flag set = 32 */ ; + fmt += 1; + } else if (fmt[0] == '1' && fmt[1] == '6') { + if (!(flags & FASTINT)) + flags |= SHORTINT; + else + /* no flag set = 32 */ ; + fmt += 2; + } else if (fmt[0] == '3' && fmt[1] == '2') { + /* no flag set = 32 */ ; + fmt += 2; + } else if (fmt[0] == '6' && fmt[1] == '4') { + flags |= LLONGINT; + fmt += 2; + } else { + if (flags & FASTINT) { + flags &= ~FASTINT; + fmt--; + } + goto invalid; + } + goto rflag; case 'z': flags |= SIZET; goto rflag; + case 'B': + case 'b': + if (flags & INTMAX_SIZE) + ujval = UJARG(); + else + ulval = UARG(); + base = 2; + /* leading 0b/B only if non-zero */ + if (flags & ALT && + (flags & INTMAX_SIZE ? ujval != 0 : ulval != 0)) + ox[1] = ch; + goto nosign; + break; case 'C': flags |= LONGINT; /*FALLTHROUGH*/ @@ -982,6 +1030,7 @@ number: if ((dprec = prec) >= 0) default: /* "%?" prints ?, unless ? is NUL */ if (ch == '\0') goto done; +invalid: /* pretend it was %c with argument ch */ cp = buf; *cp = ch; diff --git a/lib/libc/stdio/vfwscanf.c b/lib/libc/stdio/vfwscanf.c index 34488912171a..57206a8407d5 100644 --- a/lib/libc/stdio/vfwscanf.c +++ b/lib/libc/stdio/vfwscanf.c @@ -8,7 +8,9 @@ * Chris Torek. * * Copyright (c) 2011 The FreeBSD Foundation - * All rights reserved. + * + * Copyright (c) 2023 Dag-Erling Smørgrav + * * Portions of this software were developed by David Chisnall * under sponsorship from the FreeBSD Foundation. * @@ -37,14 +39,6 @@ * SUCH DAMAGE. */ -#if 0 -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)vfscanf.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#endif -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <ctype.h> #include <inttypes.h> @@ -73,6 +67,7 @@ __FBSDID("$FreeBSD$"); #define SUPPRESS 0x08 /* *: suppress assignment */ #define POINTER 0x10 /* p: void * (as hex) */ #define NOSKIP 0x20 /* [ or c: do not skip blanks */ +#define FASTINT 0x200 /* wfN: int_fastN_t */ #define LONGLONG 0x400 /* ll: long long (+ deprecated q: quad) */ #define INTMAXT 0x800 /* j: intmax_t */ #define PTRDIFFT 0x1000 /* t: ptrdiff_t */ @@ -81,16 +76,6 @@ __FBSDID("$FreeBSD$"); #define UNSIGNED 0x8000 /* %[oupxX] conversions */ /* - * The following are used in integral conversions only: - * SIGNOK, NDIGITS, PFXOK, and NZDIGITS - */ -#define SIGNOK 0x40 /* +/- is (still) legal */ -#define NDIGITS 0x80 /* no digits detected */ -#define PFXOK 0x100 /* 0x prefix is (still) legal */ -#define NZDIGITS 0x200 /* no zero digits detected */ -#define HAVESIGN 0x10000 /* sign detected */ - -/* * Conversion types. */ #define CT_CHAR 0 /* %c conversion */ @@ -291,128 +276,161 @@ convert_wstring(FILE *fp, wchar_t *wcp, int width, locale_t locale) return (nread); } +enum parseint_state { + begin, + havesign, + havezero, + haveprefix, + any, +}; + +static __inline int +parseint_fsm(wchar_t c, enum parseint_state *state, int *base) +{ + switch (c) { + case '+': + case '-': + if (*state == begin) { + *state = havesign; + return 1; + } + break; + case '0': + if (*state == begin || *state == havesign) { + *state = havezero; + } else { + *state = any; + } + return 1; + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + if (*state == havezero && *base == 0) { + *base = 8; + } + /* FALL THROUGH */ + case '8': + case '9': + if (*state == begin || + *state == havesign) { + if (*base == 0) { + *base = 10; + } + } + if (*state == begin || + *state == havesign || + *state == havezero || + *state == haveprefix || + *state == any) { + if (*base > c - '0') { + *state = any; + return 1; + } + } + break; + case 'b': + if (*state == havezero) { + if (*base == 0 || *base == 2) { + *state = haveprefix; + *base = 2; + return 1; + } + } + /* FALL THROUGH */ + case 'a': + case 'c': + case 'd': + case 'e': + case 'f': + if (*state == begin || + *state == havesign || + *state == havezero || + *state == haveprefix || + *state == any) { + if (*base > c - 'a' + 10) { + *state = any; + return 1; + } + } + break; + case 'B': + if (*state == havezero) { + if (*base == 0 || *base == 2) { + *state = haveprefix; + *base = 2; + return 1; + } + } + /* FALL THROUGH */ + case 'A': + case 'C': + case 'D': + case 'E': + case 'F': + if (*state == begin || + *state == havesign || + *state == havezero || + *state == haveprefix || + *state == any) { + if (*base > c - 'A' + 10) { + *state = any; + return 1; + } + } + break; + case 'x': + case 'X': + if (*state == havezero) { + if (*base == 0 || *base == 16) { + *state = haveprefix; + *base = 16; + return 1; + } + } + break; + } + return 0; +} + /* - * Read an integer, storing it in buf. The only relevant bit in the - * flags argument is PFXOK. + * Read an integer, storing it in buf. * * Return 0 on a match failure, and the number of characters read * otherwise. */ static __inline int -parseint(FILE *fp, wchar_t *buf, int width, int base, int flags, +parseint(FILE *fp, wchar_t * __restrict buf, int width, int base, locale_t locale) { - /* `basefix' is used to avoid `if' tests */ - static const short basefix[17] = - { 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }; + enum parseint_state state = begin; wchar_t *wcp; int c; - flags |= SIGNOK | NDIGITS | NZDIGITS; for (wcp = buf; width; width--) { c = __fgetwc(fp, locale); - /* - * Switch on the character; `goto ok' if we accept it - * as a part of number. - */ - switch (c) { - - /* - * The digit 0 is always legal, but is special. For - * %i conversions, if no digits (zero or nonzero) have - * been scanned (only signs), we will have base==0. - * In that case, we should set it to 8 and enable 0x - * prefixing. Also, if we have not scanned zero - * digits before this, do not turn off prefixing - * (someone else will turn it off if we have scanned - * any nonzero digits). - */ - case '0': - if (base == 0) { - base = 8; - flags |= PFXOK; - } - if (flags & NZDIGITS) - flags &= ~(SIGNOK|NZDIGITS|NDIGITS); - else - flags &= ~(SIGNOK|PFXOK|NDIGITS); - goto ok; - - /* 1 through 7 always legal */ - case '1': case '2': case '3': - case '4': case '5': case '6': case '7': - base = basefix[base]; - flags &= ~(SIGNOK | PFXOK | NDIGITS); - goto ok; - - /* digits 8 and 9 ok iff decimal or hex */ - case '8': case '9': - base = basefix[base]; - if (base <= 8) - break; /* not legal here */ - flags &= ~(SIGNOK | PFXOK | NDIGITS); - goto ok; - - /* letters ok iff hex */ - case 'A': case 'B': case 'C': - case 'D': case 'E': case 'F': - case 'a': case 'b': case 'c': - case 'd': case 'e': case 'f': - /* no need to fix base here */ - if (base <= 10) - break; /* not legal here */ - flags &= ~(SIGNOK | PFXOK | NDIGITS); - goto ok; - - /* sign ok only as first character */ - case '+': case '-': - if (flags & SIGNOK) { - flags &= ~SIGNOK; - flags |= HAVESIGN; - goto ok; - } + if (c == WEOF) break; - - /* - * x ok iff flag still set & 2nd char (or 3rd char if - * we have a sign). - */ - case 'x': case 'X': - if (flags & PFXOK && wcp == - buf + 1 + !!(flags & HAVESIGN)) { - base = 16; /* if %i */ - flags &= ~PFXOK; - goto ok; - } + if (!parseint_fsm(c, &state, &base)) break; - } - - /* - * If we got here, c is not a legal character for a - * number. Stop accumulating digits. - */ - if (c != WEOF) - __ungetwc(c, fp, locale); - break; - ok: - /* - * c is legal: store it and look at the next. - */ *wcp++ = (wchar_t)c; } /* - * If we had only a sign, it is no good; push back the sign. - * If the number ends in `x', it was [sign] '0' 'x', so push - * back the x and treat it as [sign] '0'. + * If we only had a sign, push it back. If we only had a 0b or 0x + * prefix (possibly preceded by a sign), we view it as "0" and + * push back the letter. In all other cases, if we stopped + * because we read a non-number character, push it back. */ - if (flags & NDIGITS) { - if (wcp > buf) - __ungetwc(*--wcp, fp, locale); - return (0); - } - c = wcp[-1]; - if (c == 'x' || c == 'X') { - --wcp; + if (state == havesign) { + wcp--; + __ungetwc(*wcp, fp, locale); + } else if (state == haveprefix) { + wcp--; + __ungetwc(c, fp, locale); + } else if (width && c != WEOF) { __ungetwc(c, fp, locale); } return (wcp - buf); @@ -516,6 +534,45 @@ literal: case 't': flags |= PTRDIFFT; goto again; + case 'w': + /* + * Fixed-width integer types. On all platforms we + * support, int8_t is equivalent to char, int16_t + * is equivalent to short, int32_t is equivalent + * to int, int64_t is equivalent to long long int. + * Furthermore, int_fast8_t, int_fast16_t and + * int_fast32_t are equivalent to int, and + * int_fast64_t is equivalent to long long int. + */ + flags &= ~(SHORTSHORT|SHORT|LONG|LONGLONG|SIZET|INTMAXT|PTRDIFFT); + if (fmt[0] == 'f') { + flags |= FASTINT; + fmt++; + } else { + flags &= ~FASTINT; + } + if (fmt[0] == '8') { + if (!(flags & FASTINT)) + flags |= SHORTSHORT; + else + /* no flag set = 32 */ ; + fmt += 1; + } else if (fmt[0] == '1' && fmt[1] == '6') { + if (!(flags & FASTINT)) + flags |= SHORT; + else + /* no flag set = 32 */ ; + fmt += 2; + } else if (fmt[0] == '3' && fmt[1] == '2') { + /* no flag set = 32 */ ; + fmt += 2; + } else if (fmt[0] == '6' && fmt[1] == '4') { + flags |= LONGLONG; + fmt += 2; + } else { + goto match_failure; + } + goto again; case 'z': flags |= SIZET; goto again; @@ -538,6 +595,13 @@ literal: /* * Conversions. */ + case 'B': + case 'b': + c = CT_INT; + flags |= UNSIGNED; + base = 2; + break; + case 'd': c = CT_INT; base = 10; @@ -562,7 +626,6 @@ literal: case 'X': case 'x': - flags |= PFXOK; /* enable 0x prefixing */ c = CT_INT; flags |= UNSIGNED; base = 16; @@ -608,7 +671,7 @@ literal: break; case 'p': /* pointer format is like hex */ - flags |= POINTER | PFXOK; + flags |= POINTER; c = CT_INT; /* assumes sizeof(uintmax_t) */ flags |= UNSIGNED; /* >= sizeof(uintptr_t) */ base = 16; @@ -718,7 +781,7 @@ literal: sizeof(*buf) - 1) width = sizeof(buf) / sizeof(*buf) - 1; - nr = parseint(fp, buf, width, base, flags, locale); + nr = parseint(fp, buf, width, base, locale); if (nr == 0) goto match_failure; if ((flags & SUPPRESS) == 0) { diff --git a/lib/libc/stdio/vprintf.c b/lib/libc/stdio/vprintf.c index 7a4cc69dec98..f49f3d5daff0 100644 --- a/lib/libc/stdio/vprintf.c +++ b/lib/libc/stdio/vprintf.c @@ -8,7 +8,7 @@ * Chris Torek. * * Copyright (c) 2011 The FreeBSD Foundation - * All rights reserved. + * * Portions of this software were developed by David Chisnall * under sponsorship from the FreeBSD Foundation. * @@ -37,12 +37,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)vprintf.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <stdio.h> #include <xlocale.h> diff --git a/lib/libc/stdio/vscanf.c b/lib/libc/stdio/vscanf.c index 15024fdfc09c..9011a44c8e25 100644 --- a/lib/libc/stdio/vscanf.c +++ b/lib/libc/stdio/vscanf.c @@ -8,7 +8,7 @@ * Donn Seeley at UUNET Technologies, Inc. * * Copyright (c) 2011 The FreeBSD Foundation - * All rights reserved. + * * Portions of this software were developed by David Chisnall * under sponsorship from the FreeBSD Foundation. * @@ -37,12 +37,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)vscanf.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include "namespace.h" #include <stdio.h> #include "un-namespace.h" diff --git a/lib/libc/stdio/vsnprintf.c b/lib/libc/stdio/vsnprintf.c index f108a6d7871a..1e25e6757459 100644 --- a/lib/libc/stdio/vsnprintf.c +++ b/lib/libc/stdio/vsnprintf.c @@ -8,7 +8,7 @@ * Chris Torek. * * Copyright (c) 2011 The FreeBSD Foundation - * All rights reserved. + * * Portions of this software were developed by David Chisnall * under sponsorship from the FreeBSD Foundation. * @@ -37,18 +37,14 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)vsnprintf.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <errno.h> #include <limits.h> #include <stdio.h> #include "local.h" #include "xlocale_private.h" +#undef vsnprintf /* _FORTIFY_SOURCE */ + int vsnprintf_l(char * __restrict str, size_t n, locale_t locale, const char * __restrict fmt, __va_list ap) diff --git a/lib/libc/stdio/vsprintf.c b/lib/libc/stdio/vsprintf.c index 9e03e7126d4a..298f969a1318 100644 --- a/lib/libc/stdio/vsprintf.c +++ b/lib/libc/stdio/vsprintf.c @@ -8,7 +8,7 @@ * Chris Torek. * * Copyright (c) 2011 The FreeBSD Foundation - * All rights reserved. + * * Portions of this software were developed by David Chisnall * under sponsorship from the FreeBSD Foundation. * @@ -37,17 +37,13 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)vsprintf.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <stdio.h> #include <limits.h> #include "local.h" #include "xlocale_private.h" +#undef vsprintf /* _FORTIFY_SOURCE */ + int vsprintf_l(char * __restrict str, locale_t locale, const char * __restrict fmt, __va_list ap) diff --git a/lib/libc/stdio/vsscanf.c b/lib/libc/stdio/vsscanf.c index 771dee0c1c42..f77928725f92 100644 --- a/lib/libc/stdio/vsscanf.c +++ b/lib/libc/stdio/vsscanf.c @@ -5,7 +5,7 @@ * The Regents of the University of California. 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. * @@ -37,12 +37,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)vsscanf.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <stdio.h> #include <string.h> #include "local.h" diff --git a/lib/libc/stdio/vswprintf.c b/lib/libc/stdio/vswprintf.c index 9bd31abe992c..e90a05c4cc14 100644 --- a/lib/libc/stdio/vswprintf.c +++ b/lib/libc/stdio/vswprintf.c @@ -7,7 +7,7 @@ * 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. * @@ -34,12 +34,6 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include <sys/cdefs.h> -#if 0 -__FBSDID("FreeBSD: src/lib/libc/stdio/vasprintf.c,v 1.16 2002/08/21 16:19:57 mike Exp "); -#endif -__FBSDID("$FreeBSD$"); - #include <errno.h> #include <limits.h> #include <stdio.h> diff --git a/lib/libc/stdio/vswscanf.c b/lib/libc/stdio/vswscanf.c index d3f96774a71c..be21f4a53f7b 100644 --- a/lib/libc/stdio/vswscanf.c +++ b/lib/libc/stdio/vswscanf.c @@ -8,7 +8,7 @@ * Donn Seeley at UUNET Technologies, Inc. * * Copyright (c) 2011 The FreeBSD Foundation - * All rights reserved. + * * Portions of this software were developed by David Chisnall * under sponsorship from the FreeBSD Foundation. * @@ -37,15 +37,6 @@ * SUCH DAMAGE. */ -#include <sys/cdefs.h> -#if 0 -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)vsscanf.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -__FBSDID("FreeBSD: src/lib/libc/stdio/vsscanf.c,v 1.11 2002/08/21 16:19:57 mike Exp "); -#endif -__FBSDID("$FreeBSD$"); - #include <limits.h> #include <stdarg.h> #include <stdio.h> diff --git a/lib/libc/stdio/vwprintf.c b/lib/libc/stdio/vwprintf.c index f0aca08ac65a..0647130f9732 100644 --- a/lib/libc/stdio/vwprintf.c +++ b/lib/libc/stdio/vwprintf.c @@ -1,11 +1,11 @@ /*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2002 Tim J. Robbins * 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. * @@ -31,9 +31,6 @@ * SUCH DAMAGE. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <stdarg.h> #include <stdio.h> #include <wchar.h> diff --git a/lib/libc/stdio/vwscanf.c b/lib/libc/stdio/vwscanf.c index 6f80c249d2d5..b4906184e2c0 100644 --- a/lib/libc/stdio/vwscanf.c +++ b/lib/libc/stdio/vwscanf.c @@ -1,11 +1,11 @@ /*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2002 Tim J. Robbins * 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. * @@ -31,9 +31,6 @@ * SUCH DAMAGE. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <stdarg.h> #include <stdio.h> #include <wchar.h> diff --git a/lib/libc/stdio/wbuf.c b/lib/libc/stdio/wbuf.c index 6cd75145a271..7993f3e3d38f 100644 --- a/lib/libc/stdio/wbuf.c +++ b/lib/libc/stdio/wbuf.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)wbuf.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <errno.h> #include <stdio.h> #include "local.h" @@ -52,7 +46,6 @@ __FBSDID("$FreeBSD$"); int __swbuf(int c, FILE *fp) { - unsigned char *old_p; int n; /* @@ -82,21 +75,14 @@ __swbuf(int c, FILE *fp) */ n = fp->_p - fp->_bf._base; if (n >= fp->_bf._size) { - if (__fflush(fp)) + if (__fflush(fp) != 0) return (EOF); n = 0; } fp->_w--; *fp->_p++ = c; - old_p = fp->_p; - if (++n == fp->_bf._size || (fp->_flags & __SLBF && c == '\n')) { - if (__fflush(fp)) { - if (fp->_p == old_p) { - fp->_p--; - fp->_w++; - } + if (++n == fp->_bf._size || (fp->_flags & __SLBF && c == '\n')) + if (__fflush(fp) != 0) return (EOF); - } - } return (c); } diff --git a/lib/libc/stdio/wprintf.3 b/lib/libc/stdio/wprintf.3 index 561aec8958f3..d1d2bdfaffd4 100644 --- a/lib/libc/stdio/wprintf.3 +++ b/lib/libc/stdio/wprintf.3 @@ -28,10 +28,7 @@ .\" 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. -.\" -.\" @(#)printf.3 8.1 (Berkeley) 6/4/93 .\" FreeBSD: src/lib/libc/stdio/printf.3,v 1.47 2002/09/06 11:23:55 tjr Exp -.\" $FreeBSD$ .\" .Dd July 5, 2003 .Dt WPRINTF 3 diff --git a/lib/libc/stdio/wprintf.c b/lib/libc/stdio/wprintf.c index c1d1f2656b7a..0aa33cc78770 100644 --- a/lib/libc/stdio/wprintf.c +++ b/lib/libc/stdio/wprintf.c @@ -1,11 +1,11 @@ /*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2002 Tim J. Robbins * 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. * @@ -31,9 +31,6 @@ * SUCH DAMAGE. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <stdarg.h> #include <stdio.h> #include <wchar.h> diff --git a/lib/libc/stdio/wscanf.3 b/lib/libc/stdio/wscanf.3 index e6a568b24087..6b428452e6aa 100644 --- a/lib/libc/stdio/wscanf.3 +++ b/lib/libc/stdio/wscanf.3 @@ -28,10 +28,7 @@ .\" 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. -.\" -.\" @(#)scanf.3 8.2 (Berkeley) 12/11/93 .\" FreeBSD: src/lib/libc/stdio/scanf.3,v 1.24 2003/06/28 09:03:25 das Exp -.\" $FreeBSD$ .\" .Dd July 5, 2003 .Dt WSCANF 3 diff --git a/lib/libc/stdio/wscanf.c b/lib/libc/stdio/wscanf.c index 33e0f3805d1c..8e2019c2c490 100644 --- a/lib/libc/stdio/wscanf.c +++ b/lib/libc/stdio/wscanf.c @@ -1,11 +1,11 @@ /*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2002 Tim J. Robbins * 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. * @@ -31,9 +31,6 @@ * SUCH DAMAGE. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <stdarg.h> #include <stdio.h> #include <wchar.h> diff --git a/lib/libc/stdio/wsetup.c b/lib/libc/stdio/wsetup.c index 1733d69ee44d..61797b035b33 100644 --- a/lib/libc/stdio/wsetup.c +++ b/lib/libc/stdio/wsetup.c @@ -32,12 +32,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)wsetup.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <errno.h> #include <stdio.h> #include <stdlib.h> diff --git a/lib/libc/stdio/xprintf.c b/lib/libc/stdio/xprintf.c index 2c7eb6ce9414..a5671db67f58 100644 --- a/lib/libc/stdio/xprintf.c +++ b/lib/libc/stdio/xprintf.c @@ -31,8 +31,6 @@ * 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. - * - * $FreeBSD$ */ #include "namespace.h" diff --git a/lib/libc/stdio/xprintf_errno.c b/lib/libc/stdio/xprintf_errno.c index 7312ac6e0694..f1e5421f60c8 100644 --- a/lib/libc/stdio/xprintf_errno.c +++ b/lib/libc/stdio/xprintf_errno.c @@ -1,5 +1,5 @@ /*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2005 Poul-Henning Kamp * All rights reserved. @@ -24,11 +24,10 @@ * 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. - * - * $FreeBSD$ */ #include <namespace.h> +#include <limits.h> #include <stdio.h> #include <string.h> #include <stdlib.h> @@ -40,7 +39,8 @@ #include "printf.h" int -__printf_arginfo_errno(const struct printf_info *pi __unused, size_t n, int *argt) +__printf_arginfo_errno(const struct printf_info *pi __unused, size_t n, + int *argt) { assert(n >= 1); @@ -49,17 +49,18 @@ __printf_arginfo_errno(const struct printf_info *pi __unused, size_t n, int *arg } int -__printf_render_errno(struct __printf_io *io, const struct printf_info *pi __unused, const void *const *arg) +__printf_render_errno(struct __printf_io *io, const struct printf_info *pi + __unused, const void *const *arg) { int ret, error; char buf[64]; - const char *p; + char errnomsg[NL_TEXTMAX]; ret = 0; error = *((const int *)arg[0]); if (error >= 0 && error < __hidden_sys_nerr) { - p = strerror(error); - return (__printf_out(io, pi, p, strlen(p))); + strerror_r(error, errnomsg, sizeof(errnomsg)); + return (__printf_out(io, pi, errnomsg, strlen(errnomsg))); } sprintf(buf, "errno=%d/0x%x", error, error); ret += __printf_out(io, pi, buf, strlen(buf)); diff --git a/lib/libc/stdio/xprintf_float.c b/lib/libc/stdio/xprintf_float.c index e07227526792..d87e7309dc9d 100644 --- a/lib/libc/stdio/xprintf_float.c +++ b/lib/libc/stdio/xprintf_float.c @@ -31,8 +31,6 @@ * 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. - * - * $FreeBSD$ */ #include <namespace.h> diff --git a/lib/libc/stdio/xprintf_hexdump.c b/lib/libc/stdio/xprintf_hexdump.c index 0b7dfb3ff221..3cc6ef3d0672 100644 --- a/lib/libc/stdio/xprintf_hexdump.c +++ b/lib/libc/stdio/xprintf_hexdump.c @@ -1,5 +1,5 @@ /*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2005 Poul-Henning Kamp * All rights reserved. @@ -24,8 +24,6 @@ * 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. - * - * $FreeBSD$ */ #include <namespace.h> diff --git a/lib/libc/stdio/xprintf_int.c b/lib/libc/stdio/xprintf_int.c index 3a5c2d81893a..9bf1bb3cd990 100644 --- a/lib/libc/stdio/xprintf_int.c +++ b/lib/libc/stdio/xprintf_int.c @@ -31,8 +31,6 @@ * 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. - * - * $FreeBSD$ */ #include <namespace.h> diff --git a/lib/libc/stdio/xprintf_quote.c b/lib/libc/stdio/xprintf_quote.c index 5b102b10c632..44bc24a980d2 100644 --- a/lib/libc/stdio/xprintf_quote.c +++ b/lib/libc/stdio/xprintf_quote.c @@ -1,5 +1,5 @@ /*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2005 Poul-Henning Kamp * All rights reserved. @@ -24,8 +24,6 @@ * 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. - * - * $FreeBSD$ */ #include <namespace.h> diff --git a/lib/libc/stdio/xprintf_str.c b/lib/libc/stdio/xprintf_str.c index 19b37a4c9816..53cfbeb1f930 100644 --- a/lib/libc/stdio/xprintf_str.c +++ b/lib/libc/stdio/xprintf_str.c @@ -31,8 +31,6 @@ * 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. - * - * $FreeBSD$ */ #include <namespace.h> diff --git a/lib/libc/stdio/xprintf_time.c b/lib/libc/stdio/xprintf_time.c index fc86fc56d01b..8e42624d7b8e 100644 --- a/lib/libc/stdio/xprintf_time.c +++ b/lib/libc/stdio/xprintf_time.c @@ -31,8 +31,6 @@ * 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. - * - * $FreeBSD$ */ #include <namespace.h> #include <stdio.h> diff --git a/lib/libc/stdio/xprintf_vis.c b/lib/libc/stdio/xprintf_vis.c index ab1735b8543d..1ea267543782 100644 --- a/lib/libc/stdio/xprintf_vis.c +++ b/lib/libc/stdio/xprintf_vis.c @@ -1,5 +1,5 @@ /*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2005 Poul-Henning Kamp * All rights reserved. @@ -24,8 +24,6 @@ * 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. - * - * $FreeBSD$ */ #include <namespace.h> |