Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc/stdio')
-rw-r--r--newlib/libc/stdio/Makefile.am222
-rw-r--r--newlib/libc/stdio/Makefile.in604
-rw-r--r--newlib/libc/stdio/asprintf.c95
-rw-r--r--newlib/libc/stdio/clearerr.c65
-rw-r--r--newlib/libc/stdio/fclose.c88
-rw-r--r--newlib/libc/stdio/fcloseall.c88
-rw-r--r--newlib/libc/stdio/fdopen.c127
-rw-r--r--newlib/libc/stdio/feof.c44
-rw-r--r--newlib/libc/stdio/ferror.c71
-rw-r--r--newlib/libc/stdio/fflush.c106
-rw-r--r--newlib/libc/stdio/fgetc.c50
-rw-r--r--newlib/libc/stdio/fgetpos.c66
-rw-r--r--newlib/libc/stdio/fgets.c156
-rw-r--r--newlib/libc/stdio/fileno.c44
-rw-r--r--newlib/libc/stdio/findfp.c183
-rw-r--r--newlib/libc/stdio/fiprintf.c77
-rw-r--r--newlib/libc/stdio/flags.c87
-rw-r--r--newlib/libc/stdio/floatio.h32
-rw-r--r--newlib/libc/stdio/fopen.c178
-rw-r--r--newlib/libc/stdio/fprintf.c56
-rw-r--r--newlib/libc/stdio/fputc.c55
-rw-r--r--newlib/libc/stdio/fputs.c75
-rw-r--r--newlib/libc/stdio/fread.c165
-rw-r--r--newlib/libc/stdio/freopen.c162
-rw-r--r--newlib/libc/stdio/fscanf.c79
-rw-r--r--newlib/libc/stdio/fseek.c334
-rw-r--r--newlib/libc/stdio/fseeko.c28
-rw-r--r--newlib/libc/stdio/fsetpos.c54
-rw-r--r--newlib/libc/stdio/ftell.c142
-rw-r--r--newlib/libc/stdio/ftello.c26
-rw-r--r--newlib/libc/stdio/fvwrite.c232
-rw-r--r--newlib/libc/stdio/fvwrite.h38
-rw-r--r--newlib/libc/stdio/fwalk.c43
-rw-r--r--newlib/libc/stdio/fwrite.c109
-rw-r--r--newlib/libc/stdio/getc.c83
-rw-r--r--newlib/libc/stdio/getc_u.c68
-rw-r--r--newlib/libc/stdio/getchar.c99
-rw-r--r--newlib/libc/stdio/getchar_u.c79
-rw-r--r--newlib/libc/stdio/getdelim.c142
-rw-r--r--newlib/libc/stdio/getline.c54
-rw-r--r--newlib/libc/stdio/gets.c102
-rw-r--r--newlib/libc/stdio/getw.c67
-rw-r--r--newlib/libc/stdio/iprintf.c124
-rw-r--r--newlib/libc/stdio/local.h91
-rw-r--r--newlib/libc/stdio/makebuf.c96
-rw-r--r--newlib/libc/stdio/mktemp.c220
-rw-r--r--newlib/libc/stdio/perror.c83
-rw-r--r--newlib/libc/stdio/printf.c89
-rw-r--r--newlib/libc/stdio/putc.c87
-rw-r--r--newlib/libc/stdio/putc_u.c69
-rw-r--r--newlib/libc/stdio/putchar.c97
-rw-r--r--newlib/libc/stdio/putchar_u.c80
-rw-r--r--newlib/libc/stdio/puts.c104
-rw-r--r--newlib/libc/stdio/putw.c63
-rw-r--r--newlib/libc/stdio/refill.c113
-rw-r--r--newlib/libc/stdio/remove.c70
-rw-r--r--newlib/libc/stdio/rename.c86
-rw-r--r--newlib/libc/stdio/rewind.c60
-rw-r--r--newlib/libc/stdio/rget.c43
-rw-r--r--newlib/libc/stdio/scanf.c81
-rw-r--r--newlib/libc/stdio/setbuf.c79
-rw-r--r--newlib/libc/stdio/setbuffer.c118
-rw-r--r--newlib/libc/stdio/setlinebuf.c70
-rw-r--r--newlib/libc/stdio/setvbuf.c198
-rw-r--r--newlib/libc/stdio/siprintf.c70
-rw-r--r--newlib/libc/stdio/snprintf.c97
-rw-r--r--newlib/libc/stdio/sprintf.c370
-rw-r--r--newlib/libc/stdio/sscanf.c446
-rw-r--r--newlib/libc/stdio/stdio.c132
-rw-r--r--newlib/libc/stdio/stdio.tex192
-rw-r--r--newlib/libc/stdio/tmpfile.c77
-rw-r--r--newlib/libc/stdio/tmpnam.c209
-rw-r--r--newlib/libc/stdio/ungetc.c159
-rw-r--r--newlib/libc/stdio/vasprintf.c74
-rw-r--r--newlib/libc/stdio/vfieeefp.h284
-rw-r--r--newlib/libc/stdio/vfprintf.c1600
-rw-r--r--newlib/libc/stdio/vfscanf.c1137
-rw-r--r--newlib/libc/stdio/vprintf.c48
-rw-r--r--newlib/libc/stdio/vscanf.c56
-rw-r--r--newlib/libc/stdio/vsnprintf.c75
-rw-r--r--newlib/libc/stdio/vsprintf.c70
-rw-r--r--newlib/libc/stdio/vsscanf.c76
-rw-r--r--newlib/libc/stdio/wbuf.c81
-rw-r--r--newlib/libc/stdio/wsetup.c79
84 files changed, 0 insertions, 12128 deletions
diff --git a/newlib/libc/stdio/Makefile.am b/newlib/libc/stdio/Makefile.am
deleted file mode 100644
index 37911efb9..000000000
--- a/newlib/libc/stdio/Makefile.am
+++ /dev/null
@@ -1,222 +0,0 @@
-## Process this file with automake to generate Makefile.in
-
-AUTOMAKE_OPTIONS = cygnus
-
-INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
-
-GENERAL_SOURCES = \
- clearerr.c \
- fclose.c \
- fdopen.c \
- feof.c \
- ferror.c \
- fflush.c \
- fgetc.c \
- fgetpos.c \
- fgets.c \
- fileno.c \
- findfp.c \
- fiprintf.c \
- flags.c \
- fopen.c \
- fprintf.c \
- fputc.c \
- fputs.c \
- fread.c \
- freopen.c \
- fscanf.c \
- fseek.c \
- fsetpos.c \
- ftell.c \
- fvwrite.c \
- fwalk.c \
- fwrite.c \
- getc.c \
- getchar.c \
- getc_u.c \
- getchar_u.c \
- getdelim.c \
- getline.c \
- gets.c \
- iprintf.c \
- makebuf.c \
- perror.c \
- printf.c \
- putc.c \
- putchar.c \
- putc_u.c \
- putchar_u.c \
- puts.c \
- refill.c \
- remove.c \
- rename.c \
- rewind.c \
- rget.c \
- scanf.c \
- setbuf.c \
- setbuffer.c \
- setlinebuf.c \
- setvbuf.c \
- siprintf.c \
- snprintf.c \
- sprintf.c \
- sscanf.c \
- stdio.c \
- tmpfile.c \
- tmpnam.c \
- ungetc.c \
- vfscanf.c \
- vprintf.c \
- vscanf.c \
- vsnprintf.c \
- vsprintf.c \
- vsscanf.c \
- wbuf.c \
- wsetup.c
-
-## The following are EL/IX level 2 interfaces
-if ELIX_LEVEL_1
-LIB_OBJS =
-else
-LIB_OBJS = \
- asprintf.$(oext) \
- fcloseall.$(oext) \
- fseeko.$(oext) \
- ftello.$(oext) \
- getw.$(oext) \
- mktemp.$(oext) \
- putw.$(oext) \
- vasprintf.$(oext)
-endif
-
-LIBADD_OBJS = vfiprintf.$(oext) vfprintf.$(oext)
-
-libstdio_la_LDFLAGS = -Xcompiler -nostdlib
-
-if USE_LIBTOOL
-noinst_LTLIBRARIES = libstdio.la
-libstdio_la_SOURCES = $(GENERAL_SOURCES)
-libstdio_la_LIBADD = $(LIBADD_OBJS) $(LIB_OBJS)
-libstdio_la_DEPENDENCIES = $(LIBADD_OBJS) $(LIB_OBJS)
-LIB_COMPILE = $(LTCOMPILE)
-noinst_DATA = objectlist.awk.in
-else
-noinst_LIBRARIES = lib.a
-lib_a_SOURCES = $(GENERAL_SOURCES)
-lib_a_LIBADD = $(LIBADD_OBJS) $(LIB_OBJS)
-lib_a_DEPENDENCIES = $(LIBADD_OBJS) $(LIB_OBJS)
-LIB_COMPILE = $(COMPILE)
-noinst_DATA =
-endif # USE_LIBTOOL
-
-include $(srcdir)/../../Makefile.shared
-
-# This rule is needed so that libtool compiles vfiprintf before vfprintf. Otherwise
-# libtool moves vfprintf.o and subsequently can't find it.
-
-vfprintf.$(oext): vfprintf.c
- $(LIB_COMPILE) -fshort-enums -c $(srcdir)/vfprintf.c
-
-vfiprintf.$(oext): vfprintf.c
- $(LIB_COMPILE) -fshort-enums -DINTEGER_ONLY -c $(srcdir)/vfprintf.c -o $@
-
-CHEWOUT_FILES = \
- clearerr.def \
- fclose.def \
- fcloseall.def \
- fdopen.def \
- feof.def \
- ferror.def \
- fflush.def \
- fgetc.def \
- fgetpos.def \
- fgets.def \
- fileno.def \
- fiprintf.def \
- fopen.def \
- fputc.def \
- fputs.def \
- fread.def \
- freopen.def \
- fseek.def \
- fsetpos.def \
- ftell.def \
- fwrite.def \
- getc.def \
- getchar.def \
- getc_u.def \
- getchar_u.def \
- getdelim.def \
- getline.def \
- gets.def \
- getw.def \
- iprintf.def \
- mktemp.def \
- perror.def \
- putc.def \
- putchar.def \
- putc_u.def \
- putchar_u.def \
- puts.def \
- putw.def \
- remove.def \
- rename.def \
- rewind.def \
- setbuf.def \
- setbuffer.def \
- setlinebuf.def \
- setvbuf.def \
- siprintf.def \
- sprintf.def \
- sscanf.def \
- tmpfile.def \
- tmpnam.def \
- vfprintf.def \
- vfscanf.def
-
-SUFFIXES = .def
-
-CHEW = ../../doc/makedoc -f $(srcdir)/../../doc/doc.str
-
-.c.def:
- $(CHEW) < $< > $*.def 2> $*.ref
- touch stmp-def
-
-TARGETDOC = ../tmp.texi
-
-doc: $(CHEWOUT_FILES)
- cat $(srcdir)/stdio.tex >> $(TARGETDOC)
-
-CLEANFILES = $(CHEWOUT_FILES) *.ref
-
-fclose.$(oext): local.h
-fdopen.$(oext): local.h
-fflush.$(oext): local.h
-findfp.$(oext): local.h
-fopen.$(oext): local.h
-fputs.$(oext): fvwrite.h
-fread.$(oext): local.h
-freopen.$(oext): local.h
-fseek.$(oext): local.h
-ftell.$(oext): local.h
-fvwrite.$(oext): local.h fvwrite.h
-fwalk.$(oext): local.h
-fwrite.$(oext): local.h fvwrite.h
-makebuf.$(oext): local.h
-puts.$(oext): fvwrite.h
-refill.$(oext): local.h
-scanf.$(oext): local.h
-setbuf.$(oext): local.h
-setvbuf.$(oext): local.h
-siprintf.$(oext): local.h
-sprintf.$(oext): local.h
-sscanf.$(oext): local.h
-stdio.$(oext): local.h
-ungetc.$(oext): local.h
-vfiprintf.$(oext): local.h
-vfprintf.$(oext): local.h
-vfscanf.$(oext): local.h floatio.h
-vscanf.$(oext): local.h
-vsscanf.$(oext): local.h
-wbuf.$(oext): local.h fvwrite.h
-wsetup.$(oext): local.h
diff --git a/newlib/libc/stdio/Makefile.in b/newlib/libc/stdio/Makefile.in
deleted file mode 100644
index 4fa144998..000000000
--- a/newlib/libc/stdio/Makefile.in
+++ /dev/null
@@ -1,604 +0,0 @@
-# Makefile.in generated automatically by automake 1.4 from Makefile.am
-
-# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-
-
-SHELL = @SHELL@
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-bindir = @bindir@
-sbindir = @sbindir@
-libexecdir = @libexecdir@
-datadir = @datadir@
-sysconfdir = @sysconfdir@
-sharedstatedir = @sharedstatedir@
-localstatedir = @localstatedir@
-libdir = @libdir@
-infodir = @infodir@
-mandir = @mandir@
-includedir = @includedir@
-oldincludedir = /usr/include
-
-DESTDIR =
-
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-
-top_builddir = ..
-
-ACLOCAL = @ACLOCAL@
-AUTOCONF = @AUTOCONF@
-AUTOMAKE = @AUTOMAKE@
-AUTOHEADER = @AUTOHEADER@
-
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-transform = @program_transform_name@
-
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_alias = @build_alias@
-build_triplet = @build@
-host_alias = @host_alias@
-host_triplet = @host@
-target_alias = @target_alias@
-target_triplet = @target@
-AR = @AR@
-AS = @AS@
-CC = @CC@
-CPP = @CPP@
-CRT0 = @CRT0@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-DLLTOOL = @DLLTOOL@
-EXEEXT = @EXEEXT@
-GCJ = @GCJ@
-GCJFLAGS = @GCJFLAGS@
-LDFLAGS = @LDFLAGS@
-LIBC_EXTRA_DEF = @LIBC_EXTRA_DEF@
-LIBC_EXTRA_LIB = @LIBC_EXTRA_LIB@
-LIBC_MACHINE_LIB = @LIBC_MACHINE_LIB@
-LIBC_POSIX_LIB = @LIBC_POSIX_LIB@
-LIBC_SIGNAL_DEF = @LIBC_SIGNAL_DEF@
-LIBC_SIGNAL_LIB = @LIBC_SIGNAL_LIB@
-LIBC_STDIO64_DEF = @LIBC_STDIO64_DEF@
-LIBC_STDIO64_LIB = @LIBC_STDIO64_LIB@
-LIBC_SYSCALL_LIB = @LIBC_SYSCALL_LIB@
-LIBC_SYS_LIB = @LIBC_SYS_LIB@
-LIBC_UNIX_LIB = @LIBC_UNIX_LIB@
-LIBTOOL = @LIBTOOL@
-LN_S = @LN_S@
-MAINT = @MAINT@
-MAKEINFO = @MAKEINFO@
-NEWLIB_CFLAGS = @NEWLIB_CFLAGS@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-RANLIB = @RANLIB@
-STRIP = @STRIP@
-VERSION = @VERSION@
-aext = @aext@
-extra_dir = @extra_dir@
-libm_machine_dir = @libm_machine_dir@
-machine_dir = @machine_dir@
-newlib_basedir = @newlib_basedir@
-oext = @oext@
-sys_dir = @sys_dir@
-
-AUTOMAKE_OPTIONS = cygnus
-
-INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
-
-GENERAL_SOURCES = \
- clearerr.c \
- fclose.c \
- fdopen.c \
- feof.c \
- ferror.c \
- fflush.c \
- fgetc.c \
- fgetpos.c \
- fgets.c \
- fileno.c \
- findfp.c \
- fiprintf.c \
- flags.c \
- fopen.c \
- fprintf.c \
- fputc.c \
- fputs.c \
- fread.c \
- freopen.c \
- fscanf.c \
- fseek.c \
- fsetpos.c \
- ftell.c \
- fvwrite.c \
- fwalk.c \
- fwrite.c \
- getc.c \
- getchar.c \
- getc_u.c \
- getchar_u.c \
- getdelim.c \
- getline.c \
- gets.c \
- iprintf.c \
- makebuf.c \
- perror.c \
- printf.c \
- putc.c \
- putchar.c \
- putc_u.c \
- putchar_u.c \
- puts.c \
- refill.c \
- remove.c \
- rename.c \
- rewind.c \
- rget.c \
- scanf.c \
- setbuf.c \
- setbuffer.c \
- setlinebuf.c \
- setvbuf.c \
- siprintf.c \
- snprintf.c \
- sprintf.c \
- sscanf.c \
- stdio.c \
- tmpfile.c \
- tmpnam.c \
- ungetc.c \
- vfscanf.c \
- vprintf.c \
- vscanf.c \
- vsnprintf.c \
- vsprintf.c \
- vsscanf.c \
- wbuf.c \
- wsetup.c
-
-@ELIX_LEVEL_1_TRUE@LIB_OBJS =
-@ELIX_LEVEL_1_FALSE@LIB_OBJS = @ELIX_LEVEL_1_FALSE@\
-@ELIX_LEVEL_1_FALSE@ asprintf.$(oext) \
-@ELIX_LEVEL_1_FALSE@ fcloseall.$(oext) \
-@ELIX_LEVEL_1_FALSE@ fseeko.$(oext) \
-@ELIX_LEVEL_1_FALSE@ ftello.$(oext) \
-@ELIX_LEVEL_1_FALSE@ getw.$(oext) \
-@ELIX_LEVEL_1_FALSE@ mktemp.$(oext) \
-@ELIX_LEVEL_1_FALSE@ putw.$(oext) \
-@ELIX_LEVEL_1_FALSE@ vasprintf.$(oext)
-
-LIBADD_OBJS = vfiprintf.$(oext) vfprintf.$(oext)
-
-libstdio_la_LDFLAGS = -Xcompiler -nostdlib
-
-@USE_LIBTOOL_TRUE@noinst_LTLIBRARIES = @USE_LIBTOOL_TRUE@libstdio.la
-@USE_LIBTOOL_TRUE@libstdio_la_SOURCES = @USE_LIBTOOL_TRUE@$(GENERAL_SOURCES)
-@USE_LIBTOOL_TRUE@libstdio_la_LIBADD = @USE_LIBTOOL_TRUE@$(LIBADD_OBJS) $(LIB_OBJS)
-@USE_LIBTOOL_TRUE@libstdio_la_DEPENDENCIES = @USE_LIBTOOL_TRUE@$(LIBADD_OBJS) $(LIB_OBJS)
-@USE_LIBTOOL_TRUE@LIB_COMPILE = @USE_LIBTOOL_TRUE@$(LTCOMPILE)
-@USE_LIBTOOL_FALSE@LIB_COMPILE = @USE_LIBTOOL_FALSE@$(COMPILE)
-@USE_LIBTOOL_TRUE@noinst_DATA = @USE_LIBTOOL_TRUE@objectlist.awk.in
-@USE_LIBTOOL_FALSE@noinst_DATA =
-@USE_LIBTOOL_FALSE@noinst_LIBRARIES = @USE_LIBTOOL_FALSE@lib.a
-@USE_LIBTOOL_FALSE@lib_a_SOURCES = @USE_LIBTOOL_FALSE@$(GENERAL_SOURCES)
-@USE_LIBTOOL_FALSE@lib_a_LIBADD = @USE_LIBTOOL_FALSE@$(LIBADD_OBJS) $(LIB_OBJS)
-@USE_LIBTOOL_FALSE@lib_a_DEPENDENCIES = @USE_LIBTOOL_FALSE@$(LIBADD_OBJS) $(LIB_OBJS)
-
-CHEWOUT_FILES = \
- clearerr.def \
- fclose.def \
- fcloseall.def \
- fdopen.def \
- feof.def \
- ferror.def \
- fflush.def \
- fgetc.def \
- fgetpos.def \
- fgets.def \
- fileno.def \
- fiprintf.def \
- fopen.def \
- fputc.def \
- fputs.def \
- fread.def \
- freopen.def \
- fseek.def \
- fsetpos.def \
- ftell.def \
- fwrite.def \
- getc.def \
- getchar.def \
- getc_u.def \
- getchar_u.def \
- getdelim.def \
- getline.def \
- gets.def \
- getw.def \
- iprintf.def \
- mktemp.def \
- perror.def \
- putc.def \
- putchar.def \
- putc_u.def \
- putchar_u.def \
- puts.def \
- putw.def \
- remove.def \
- rename.def \
- rewind.def \
- setbuf.def \
- setbuffer.def \
- setlinebuf.def \
- setvbuf.def \
- siprintf.def \
- sprintf.def \
- sscanf.def \
- tmpfile.def \
- tmpnam.def \
- vfprintf.def \
- vfscanf.def
-
-
-SUFFIXES = .def
-
-CHEW = ../../doc/makedoc -f $(srcdir)/../../doc/doc.str
-
-TARGETDOC = ../tmp.texi
-
-CLEANFILES = $(CHEWOUT_FILES) *.ref
-mkinstalldirs = $(SHELL) $(top_srcdir)/../../mkinstalldirs
-CONFIG_CLEAN_FILES =
-LIBRARIES = $(noinst_LIBRARIES)
-
-
-DEFS = @DEFS@ -I. -I$(srcdir)
-CPPFLAGS = @CPPFLAGS@
-LIBS = @LIBS@
-@USE_LIBTOOL_FALSE@lib_a_OBJECTS = clearerr.$(OBJEXT) fclose.$(OBJEXT) \
-@USE_LIBTOOL_FALSE@fdopen.$(OBJEXT) feof.$(OBJEXT) ferror.$(OBJEXT) \
-@USE_LIBTOOL_FALSE@fflush.$(OBJEXT) fgetc.$(OBJEXT) fgetpos.$(OBJEXT) \
-@USE_LIBTOOL_FALSE@fgets.$(OBJEXT) fileno.$(OBJEXT) findfp.$(OBJEXT) \
-@USE_LIBTOOL_FALSE@fiprintf.$(OBJEXT) flags.$(OBJEXT) fopen.$(OBJEXT) \
-@USE_LIBTOOL_FALSE@fprintf.$(OBJEXT) fputc.$(OBJEXT) fputs.$(OBJEXT) \
-@USE_LIBTOOL_FALSE@fread.$(OBJEXT) freopen.$(OBJEXT) fscanf.$(OBJEXT) \
-@USE_LIBTOOL_FALSE@fseek.$(OBJEXT) fsetpos.$(OBJEXT) ftell.$(OBJEXT) \
-@USE_LIBTOOL_FALSE@fvwrite.$(OBJEXT) fwalk.$(OBJEXT) fwrite.$(OBJEXT) \
-@USE_LIBTOOL_FALSE@getc.$(OBJEXT) getchar.$(OBJEXT) getc_u.$(OBJEXT) \
-@USE_LIBTOOL_FALSE@getchar_u.$(OBJEXT) getdelim.$(OBJEXT) \
-@USE_LIBTOOL_FALSE@getline.$(OBJEXT) gets.$(OBJEXT) iprintf.$(OBJEXT) \
-@USE_LIBTOOL_FALSE@makebuf.$(OBJEXT) perror.$(OBJEXT) printf.$(OBJEXT) \
-@USE_LIBTOOL_FALSE@putc.$(OBJEXT) putchar.$(OBJEXT) putc_u.$(OBJEXT) \
-@USE_LIBTOOL_FALSE@putchar_u.$(OBJEXT) puts.$(OBJEXT) refill.$(OBJEXT) \
-@USE_LIBTOOL_FALSE@remove.$(OBJEXT) rename.$(OBJEXT) rewind.$(OBJEXT) \
-@USE_LIBTOOL_FALSE@rget.$(OBJEXT) scanf.$(OBJEXT) setbuf.$(OBJEXT) \
-@USE_LIBTOOL_FALSE@setbuffer.$(OBJEXT) setlinebuf.$(OBJEXT) \
-@USE_LIBTOOL_FALSE@setvbuf.$(OBJEXT) siprintf.$(OBJEXT) \
-@USE_LIBTOOL_FALSE@snprintf.$(OBJEXT) sprintf.$(OBJEXT) \
-@USE_LIBTOOL_FALSE@sscanf.$(OBJEXT) stdio.$(OBJEXT) tmpfile.$(OBJEXT) \
-@USE_LIBTOOL_FALSE@tmpnam.$(OBJEXT) ungetc.$(OBJEXT) vfscanf.$(OBJEXT) \
-@USE_LIBTOOL_FALSE@vprintf.$(OBJEXT) vscanf.$(OBJEXT) \
-@USE_LIBTOOL_FALSE@vsnprintf.$(OBJEXT) vsprintf.$(OBJEXT) \
-@USE_LIBTOOL_FALSE@vsscanf.$(OBJEXT) wbuf.$(OBJEXT) wsetup.$(OBJEXT)
-LTLIBRARIES = $(noinst_LTLIBRARIES)
-
-@USE_LIBTOOL_TRUE@libstdio_la_OBJECTS = clearerr.lo fclose.lo fdopen.lo \
-@USE_LIBTOOL_TRUE@feof.lo ferror.lo fflush.lo fgetc.lo fgetpos.lo \
-@USE_LIBTOOL_TRUE@fgets.lo fileno.lo findfp.lo fiprintf.lo flags.lo \
-@USE_LIBTOOL_TRUE@fopen.lo fprintf.lo fputc.lo fputs.lo fread.lo \
-@USE_LIBTOOL_TRUE@freopen.lo fscanf.lo fseek.lo fsetpos.lo ftell.lo \
-@USE_LIBTOOL_TRUE@fvwrite.lo fwalk.lo fwrite.lo getc.lo getchar.lo \
-@USE_LIBTOOL_TRUE@getc_u.lo getchar_u.lo getdelim.lo getline.lo gets.lo \
-@USE_LIBTOOL_TRUE@iprintf.lo makebuf.lo perror.lo printf.lo putc.lo \
-@USE_LIBTOOL_TRUE@putchar.lo putc_u.lo putchar_u.lo puts.lo refill.lo \
-@USE_LIBTOOL_TRUE@remove.lo rename.lo rewind.lo rget.lo scanf.lo \
-@USE_LIBTOOL_TRUE@setbuf.lo setbuffer.lo setlinebuf.lo setvbuf.lo \
-@USE_LIBTOOL_TRUE@siprintf.lo snprintf.lo sprintf.lo sscanf.lo stdio.lo \
-@USE_LIBTOOL_TRUE@tmpfile.lo tmpnam.lo ungetc.lo vfscanf.lo vprintf.lo \
-@USE_LIBTOOL_TRUE@vscanf.lo vsnprintf.lo vsprintf.lo vsscanf.lo wbuf.lo \
-@USE_LIBTOOL_TRUE@wsetup.lo
-CFLAGS = @CFLAGS@
-COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
-DATA = $(noinst_DATA)
-
-DIST_COMMON = Makefile.am Makefile.in
-
-
-DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
-TAR = gtar
-GZIP_ENV = --best
-SOURCES = $(lib_a_SOURCES) $(libstdio_la_SOURCES)
-OBJECTS = $(lib_a_OBJECTS) $(libstdio_la_OBJECTS)
-
-all: all-redirect
-.SUFFIXES:
-.SUFFIXES: .S .c .def .lo .o .obj .s
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) $(srcdir)/../../Makefile.shared
- cd $(top_srcdir) && $(AUTOMAKE) --cygnus stdio/Makefile
-
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-
-mostlyclean-noinstLIBRARIES:
-
-clean-noinstLIBRARIES:
- -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
-
-distclean-noinstLIBRARIES:
-
-maintainer-clean-noinstLIBRARIES:
-
-.c.o:
- $(COMPILE) -c $<
-
-# FIXME: We should only use cygpath when building on Windows,
-# and only if it is available.
-.c.obj:
- $(COMPILE) -c `cygpath -w $<`
-
-.s.o:
- $(COMPILE) -c $<
-
-.S.o:
- $(COMPILE) -c $<
-
-mostlyclean-compile:
- -rm -f *.o core *.core
- -rm -f *.$(OBJEXT)
-
-clean-compile:
-
-distclean-compile:
- -rm -f *.tab.c
-
-maintainer-clean-compile:
-
-.c.lo:
- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-
-.s.lo:
- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-
-.S.lo:
- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-distclean-libtool:
-
-maintainer-clean-libtool:
-
-lib.a: $(lib_a_OBJECTS) $(lib_a_DEPENDENCIES)
- -rm -f lib.a
- $(AR) cru lib.a $(lib_a_OBJECTS) $(lib_a_LIBADD)
- $(RANLIB) lib.a
-
-mostlyclean-noinstLTLIBRARIES:
-
-clean-noinstLTLIBRARIES:
- -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
-
-distclean-noinstLTLIBRARIES:
-
-maintainer-clean-noinstLTLIBRARIES:
-
-libstdio.la: $(libstdio_la_OBJECTS) $(libstdio_la_DEPENDENCIES)
- $(LINK) $(libstdio_la_LDFLAGS) $(libstdio_la_OBJECTS) $(libstdio_la_LIBADD) $(LIBS)
-
-tags: TAGS
-
-ID: $(HEADERS) $(SOURCES) $(LISP)
- list='$(SOURCES) $(HEADERS)'; \
- unique=`for i in $$list; do echo $$i; done | \
- awk ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- here=`pwd` && cd $(srcdir) \
- && mkid -f$$here/ID $$unique $(LISP)
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
- tags=; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS)'; \
- unique=`for i in $$list; do echo $$i; done | \
- awk ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
-
-mostlyclean-tags:
-
-clean-tags:
-
-distclean-tags:
- -rm -f TAGS ID
-
-maintainer-clean-tags:
-
-distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-
-subdir = stdio
-
-distdir: $(DISTFILES)
- @for file in $(DISTFILES); do \
- if test -f $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- cp -pr $$d/$$file $(distdir)/$$file; \
- else \
- test -f $(distdir)/$$file \
- || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
- || cp -p $$d/$$file $(distdir)/$$file || :; \
- fi; \
- done
-info-am:
-info: info-am
-dvi-am:
-dvi: dvi-am
-check-am:
-check: check-am
-installcheck-am:
-installcheck: installcheck-am
-install-info-am:
-install-info: install-info-am
-install-exec-am:
-install-exec: install-exec-am
-
-install-data-am:
-install-data: install-data-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-install: install-am
-uninstall-am:
-uninstall: uninstall-am
-all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(DATA)
-all-redirect: all-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
-installdirs:
-
-
-mostlyclean-generic:
-
-clean-generic:
- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
- -rm -f Makefile $(CONFIG_CLEAN_FILES)
- -rm -f config.cache config.log stamp-h stamp-h[0-9]*
-
-maintainer-clean-generic:
-mostlyclean-am: mostlyclean-noinstLIBRARIES mostlyclean-compile \
- mostlyclean-libtool mostlyclean-noinstLTLIBRARIES \
- mostlyclean-tags mostlyclean-generic
-
-mostlyclean: mostlyclean-am
-
-clean-am: clean-noinstLIBRARIES clean-compile clean-libtool \
- clean-noinstLTLIBRARIES clean-tags clean-generic \
- mostlyclean-am
-
-clean: clean-am
-
-distclean-am: distclean-noinstLIBRARIES distclean-compile \
- distclean-libtool distclean-noinstLTLIBRARIES \
- distclean-tags distclean-generic clean-am
- -rm -f libtool
-
-distclean: distclean-am
-
-maintainer-clean-am: maintainer-clean-noinstLIBRARIES \
- maintainer-clean-compile maintainer-clean-libtool \
- maintainer-clean-noinstLTLIBRARIES \
- maintainer-clean-tags maintainer-clean-generic \
- distclean-am
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
-
-maintainer-clean: maintainer-clean-am
-
-.PHONY: mostlyclean-noinstLIBRARIES distclean-noinstLIBRARIES \
-clean-noinstLIBRARIES maintainer-clean-noinstLIBRARIES \
-mostlyclean-compile distclean-compile clean-compile \
-maintainer-clean-compile mostlyclean-libtool distclean-libtool \
-clean-libtool maintainer-clean-libtool mostlyclean-noinstLTLIBRARIES \
-distclean-noinstLTLIBRARIES clean-noinstLTLIBRARIES \
-maintainer-clean-noinstLTLIBRARIES tags mostlyclean-tags distclean-tags \
-clean-tags maintainer-clean-tags distdir info-am info dvi-am dvi check \
-check-am installcheck-am installcheck install-info-am install-info \
-install-exec-am install-exec install-data-am install-data install-am \
-install uninstall-am uninstall all-redirect all-am all installdirs \
-mostlyclean-generic distclean-generic clean-generic \
-maintainer-clean-generic clean mostlyclean distclean maintainer-clean
-
-
-objectlist.awk.in: $(noinst_LTLIBRARIES)
- -rm -f objectlist.awk.in
- for i in `ls *.lo` ; \
- do \
- echo $$i `pwd`/$$i >> objectlist.awk.in ; \
- done
-
-# This rule is needed so that libtool compiles vfiprintf before vfprintf. Otherwise
-# libtool moves vfprintf.o and subsequently can't find it.
-
-vfprintf.$(oext): vfprintf.c
- $(LIB_COMPILE) -fshort-enums -c $(srcdir)/vfprintf.c
-
-vfiprintf.$(oext): vfprintf.c
- $(LIB_COMPILE) -fshort-enums -DINTEGER_ONLY -c $(srcdir)/vfprintf.c -o $@
-
-.c.def:
- $(CHEW) < $< > $*.def 2> $*.ref
- touch stmp-def
-
-doc: $(CHEWOUT_FILES)
- cat $(srcdir)/stdio.tex >> $(TARGETDOC)
-
-fclose.$(oext): local.h
-fdopen.$(oext): local.h
-fflush.$(oext): local.h
-findfp.$(oext): local.h
-fopen.$(oext): local.h
-fputs.$(oext): fvwrite.h
-fread.$(oext): local.h
-freopen.$(oext): local.h
-fseek.$(oext): local.h
-ftell.$(oext): local.h
-fvwrite.$(oext): local.h fvwrite.h
-fwalk.$(oext): local.h
-fwrite.$(oext): local.h fvwrite.h
-makebuf.$(oext): local.h
-puts.$(oext): fvwrite.h
-refill.$(oext): local.h
-scanf.$(oext): local.h
-setbuf.$(oext): local.h
-setvbuf.$(oext): local.h
-siprintf.$(oext): local.h
-sprintf.$(oext): local.h
-sscanf.$(oext): local.h
-stdio.$(oext): local.h
-ungetc.$(oext): local.h
-vfiprintf.$(oext): local.h
-vfprintf.$(oext): local.h
-vfscanf.$(oext): local.h floatio.h
-vscanf.$(oext): local.h
-vsscanf.$(oext): local.h
-wbuf.$(oext): local.h fvwrite.h
-wsetup.$(oext): local.h
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/newlib/libc/stdio/asprintf.c b/newlib/libc/stdio/asprintf.c
deleted file mode 100644
index d36781548..000000000
--- a/newlib/libc/stdio/asprintf.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/* This code was copied from sprintf.c */
-
-#include <stdio.h>
-#ifdef _HAVE_STDC
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-#include <limits.h>
-#include <_ansi.h>
-#include "local.h"
-
-int
-#ifdef _HAVE_STDC
-_DEFUN (_asprintf_r, (ptr, strp, fmt), struct _reent *ptr _AND char **strp _AND _CONST char *fmt _DOTS)
-#else
-_asprintf_r (ptr, strp, fmt, va_alist)
- struct _reent *ptr;
- char **strp;
- _CONST char *fmt;
- va_dcl
-#endif
-{
- int ret;
- va_list ap;
- FILE f;
-
- /* mark a zero-length reallocatable buffer */
- f._flags = __SWR | __SSTR | __SMBF;
- f._bf._base = f._p = NULL;
- f._bf._size = f._w = 0;
- f._data = ptr;
-#ifdef _HAVE_STDC
- va_start (ap, fmt);
-#else
- va_start (ap);
-#endif
- ret = vfprintf (&f, fmt, ap);
- va_end (ap);
- *f._p = 0;
- *strp = f._bf._base;
- return (ret);
-}
-
-#ifndef _REENT_ONLY
-
-int
-#ifdef _HAVE_STDC
-_DEFUN (asprintf, (strp, fmt), char **strp _AND _CONST char *fmt _DOTS)
-#else
-asprintf (strp, fmt, va_alist)
- char **strp;
- _CONST char *fmt;
- va_dcl
-#endif
-{
- int ret;
- va_list ap;
- FILE f;
-
- /* mark a zero-length reallocatable buffer */
- f._flags = __SWR | __SSTR | __SMBF;
- f._bf._base = f._p = NULL;
- f._bf._size = f._w = 0;
- f._data = _REENT;
-#ifdef _HAVE_STDC
- va_start (ap, fmt);
-#else
- va_start (ap);
-#endif
- ret = vfprintf (&f, fmt, ap);
- va_end (ap);
- *f._p = 0;
- *strp = f._bf._base;
- return (ret);
-}
-
-#endif
diff --git a/newlib/libc/stdio/clearerr.c b/newlib/libc/stdio/clearerr.c
deleted file mode 100644
index 6a1b0af3c..000000000
--- a/newlib/libc/stdio/clearerr.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
-FUNCTION
-<<clearerr>>---clear file or stream error indicator
-
-INDEX
- clearerr
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- void clearerr(FILE *<[fp]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- void clearerr(<[fp]>)
- FILE *<[fp]>;
-
-DESCRIPTION
-The <<stdio>> functions maintain an error indicator with each file
-pointer <[fp]>, to record whether any read or write errors have
-occurred on the associated file or stream. Similarly, it maintains an
-end-of-file indicator to record whether there is no more data in the
-file.
-
-Use <<clearerr>> to reset both of these indicators.
-
-See <<ferror>> and <<feof>> to query the two indicators.
-
-
-RETURNS
-<<clearerr>> does not return a result.
-
-PORTABILITY
-ANSI C requires <<clearerr>>.
-
-No supporting OS subroutines are required.
-*/
-
-#include <stdio.h>
-#undef clearerr
-
-_VOID
-_DEFUN (clearerr, (fp),
- FILE * fp)
-{
- _flockfile(fp);
- __sclearerr (fp);
- _funlockfile(fp);
-}
diff --git a/newlib/libc/stdio/fclose.c b/newlib/libc/stdio/fclose.c
deleted file mode 100644
index ad3d1e8e0..000000000
--- a/newlib/libc/stdio/fclose.c
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
-FUNCTION
-<<fclose>>---close a file
-
-INDEX
- fclose
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- int fclose(FILE *<[fp]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- int fclose(<[fp]>)
- FILE *<[fp]>;
-
-DESCRIPTION
-If the file or stream identified by <[fp]> is open, <<fclose>> closes
-it, after first ensuring that any pending data is written (by calling
-<<fflush(<[fp]>)>>).
-
-RETURNS
-<<fclose>> returns <<0>> if successful (including when <[fp]> is
-<<NULL>> or not an open file); otherwise, it returns <<EOF>>.
-
-PORTABILITY
-<<fclose>> is required by ANSI C.
-
-Required OS subroutines: <<close>>, <<fstat>>, <<isatty>>, <<lseek>>,
-<<read>>, <<sbrk>>, <<write>>.
-*/
-
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "local.h"
-
-/*
- * Close a file.
- */
-
-int
-_DEFUN (fclose, (fp),
- register FILE * fp)
-{
- int r;
-
- if (fp == NULL)
- return (0); /* on NULL */
-
- _flockfile(fp);
-
- CHECK_INIT (fp);
-
- if (fp->_flags == 0) /* not open! */
- {
- _funlockfile(fp);
- return (0);
- }
- r = fp->_flags & __SWR ? fflush (fp) : 0;
- if (fp->_close != NULL && (*fp->_close) (fp->_cookie) < 0)
- r = EOF;
- if (fp->_flags & __SMBF)
- _free_r (fp->_data, (char *) fp->_bf._base);
- if (HASUB (fp))
- FREEUB (fp);
- if (HASLB (fp))
- FREELB (fp);
- fp->_flags = 0; /* release this FILE for reuse */
- _funlockfile(fp);
- return (r);
-}
diff --git a/newlib/libc/stdio/fcloseall.c b/newlib/libc/stdio/fcloseall.c
deleted file mode 100644
index a34d8210c..000000000
--- a/newlib/libc/stdio/fcloseall.c
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
-FUNCTION
-<<fcloseall>>---close all files
-
-INDEX
- fcloseall
-INDEX
- _fcloseall_r
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- int fcloseall(void);
- int _fcloseall_r (struct _reent *<[ptr]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- int fcloseall()
-
- int _fcloseall_r (<[ptr]>)
- struct _reent *<[ptr]>;
-
-DESCRIPTION
-<<fcloseall>> closes all files in the current reentrancy struct's domain.
-The function <<_fcloseall_r>> is the same function, except the reentrancy
-struct is passed in as the <[ptr]> argument.
-
-This function is not recommended as it closes all streams, including
-the std streams.
-
-RETURNS
-<<fclose>> returns <<0>> if all closes are successful. Otherwise,
-EOF is returned.
-
-PORTABILITY
-<<fcloseall>> is a glibc extension.
-
-Required OS subroutines: <<close>>, <<fstat>>, <<isatty>>, <<lseek>>,
-<<read>>, <<sbrk>>, <<write>>.
-*/
-
-/* This file based upon fwalk.c. */
-
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-#include "local.h"
-
-int
-_fcloseall_r (ptr)
- struct _reent *ptr;
-{
- register FILE *fp;
- register int n, ret = 0;
- register struct _glue *g;
-
- for (g = &ptr->__sglue; g != NULL; g = g->_next)
- for (fp = g->_iobs, n = g->_niobs; --n >= 0; fp++)
- if (fp->_flags != 0)
- ret |= fclose (fp);
- return ret;
-}
-
-#ifndef _REENT_ONLY
-
-int
-fcloseall (void)
-{
- return _fcloseall_r (_REENT);
-}
-
-#endif
diff --git a/newlib/libc/stdio/fdopen.c b/newlib/libc/stdio/fdopen.c
deleted file mode 100644
index 0db6062dd..000000000
--- a/newlib/libc/stdio/fdopen.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
-FUNCTION
-<<fdopen>>---turn open file into a stream
-
-INDEX
- fdopen
-INDEX
- _fdopen_r
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- FILE *fdopen(int <[fd]>, const char *<[mode]>);
- FILE *_fdopen_r(void *<[reent]>,
- int <[fd]>, const char *<[mode]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- FILE *fdopen(<[fd]>, <[mode]>)
- int <[fd]>;
- char *<[mode]>;
-
- FILE *_fdopen_r(<[reent]>, <[fd]>, <[mode]>)
- char *<[reent]>;
- int <[fd]>;
- char *<[mode]>);
-
-DESCRIPTION
-<<fdopen>> produces a file descriptor of type <<FILE *>>, from a
-descriptor for an already-open file (returned, for example, by the
-system subroutine <<open>> rather than by <<fopen>>).
-The <[mode]> argument has the same meanings as in <<fopen>>.
-
-RETURNS
-File pointer or <<NULL>>, as for <<fopen>>.
-
-PORTABILITY
-<<fdopen>> is ANSI.
-*/
-
-#include <sys/types.h>
-#include <sys/fcntl.h>
-
-#include <stdio.h>
-#include <errno.h>
-#include "local.h"
-#include <_syslist.h>
-
-extern int __sflags ();
-
-FILE *
-_DEFUN (_fdopen_r, (ptr, fd, mode),
- struct _reent *ptr _AND
- int fd _AND
- _CONST char *mode)
-{
- register FILE *fp;
- int flags, oflags;
-#ifdef HAVE_FCNTL
- int fdflags, fdmode;
-#endif
-
- if ((flags = __sflags (ptr, mode, &oflags)) == 0)
- return 0;
-
- /* make sure the mode the user wants is a subset of the actual mode */
-#ifdef HAVE_FCNTL
- if ((fdflags = _fcntl_r (ptr, fd, F_GETFL, 0)) < 0)
- return 0;
- fdmode = fdflags & O_ACCMODE;
- if (fdmode != O_RDWR && (fdmode != (oflags & O_ACCMODE)))
- {
- ptr->_errno = EBADF;
- return 0;
- }
-#endif
-
- if ((fp = __sfp (ptr)) == 0)
- return 0;
- fp->_flags = flags;
- /*
- * If opened for appending, but underlying descriptor
- * does not have O_APPEND bit set, assert __SAPP so that
- * __swrite() will lseek to end before each write.
- */
- if ((oflags & O_APPEND)
-#ifdef HAVE_FCNTL
- && !(fdflags & O_APPEND)
-#endif
- )
- fp->_flags |= __SAPP;
- fp->_file = fd;
- fp->_cookie = (_PTR) fp;
-
-#undef _read
-#undef _write
-#undef _seek
-#undef _close
-
- fp->_read = __sread;
- fp->_write = __swrite;
- fp->_seek = __sseek;
- fp->_close = __sclose;
-
-#ifdef __SCLE
- /* Explicit given mode results in explicit setting mode on fd */
- if (oflags & O_BINARY)
- setmode(fp->_file, O_BINARY);
- else if (oflags & O_TEXT)
- setmode(fp->_file, O_TEXT);
- if (__stextmode(fp->_file))
- fp->_flags |= __SCLE;
-#endif
-
- return fp;
-}
-
-#ifndef _REENT_ONLY
-
-FILE *
-_DEFUN (fdopen, (fd, mode),
- int fd _AND
- _CONST char *mode)
-{
- return _fdopen_r (_REENT, fd, mode);
-}
-
-#endif
diff --git a/newlib/libc/stdio/feof.c b/newlib/libc/stdio/feof.c
deleted file mode 100644
index b7981bded..000000000
--- a/newlib/libc/stdio/feof.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-FUNCTION
-<<feof>>---test for end of file
-
-INDEX
- feof
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- int feof(FILE *<[fp]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- int feof(<[fp]>)
- FILE *<[fp]>;
-
-DESCRIPTION
-<<feof>> tests whether or not the end of the file identified by <[fp]>
-has been reached.
-
-RETURNS
-<<feof>> returns <<0>> if the end of file has not yet been reached; if
-at end of file, the result is nonzero.
-
-PORTABILITY
-<<feof>> is required by ANSI C.
-
-No supporting OS subroutines are required.
-*/
-
-#include <stdio.h>
-
-#undef feof
-
-int
-_DEFUN (feof, (fp),
- FILE * fp)
-{
- int result;
- _flockfile(fp);
- result = __sfeof (fp);
- _funlockfile(fp);
- return result;
-}
diff --git a/newlib/libc/stdio/ferror.c b/newlib/libc/stdio/ferror.c
deleted file mode 100644
index ef17fd89d..000000000
--- a/newlib/libc/stdio/ferror.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
-FUNCTION
-<<ferror>>---test whether read/write error has occurred
-
-INDEX
- ferror
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- int ferror(FILE *<[fp]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- int ferror(<[fp]>)
- FILE *<[fp]>;
-
-DESCRIPTION
-The <<stdio>> functions maintain an error indicator with each file
-pointer <[fp]>, to record whether any read or write errors have
-occurred on the associated file or stream.
-Use <<ferror>> to query this indicator.
-
-See <<clearerr>> to reset the error indicator.
-
-RETURNS
-<<ferror>> returns <<0>> if no errors have occurred; it returns a
-nonzero value otherwise.
-
-PORTABILITY
-ANSI C requires <<ferror>>.
-
-No supporting OS subroutines are required.
-*/
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "%W% (Berkeley) %G%";
-#endif /* LIBC_SCCS and not lint */
-
-#include <stdio.h>
-
-/* A subroutine version of the macro ferror. */
-
-#undef ferror
-
-int
-_DEFUN (ferror, (fp),
- FILE * fp)
-{
- int result;
- _flockfile(fp);
- result = __sferror (fp);
- _funlockfile(fp);
- return result;
-}
diff --git a/newlib/libc/stdio/fflush.c b/newlib/libc/stdio/fflush.c
deleted file mode 100644
index 866bc83aa..000000000
--- a/newlib/libc/stdio/fflush.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
-FUNCTION
-<<fflush>>---flush buffered file output
-
-INDEX
- fflush
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- int fflush(FILE *<[fp]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- int fflush(<[fp]>)
- FILE *<[fp]>;
-
-DESCRIPTION
-The <<stdio>> output functions can buffer output before delivering it
-to the host system, in order to minimize the overhead of system calls.
-
-Use <<fflush>> to deliver any such pending output (for the file
-or stream identified by <[fp]>) to the host system.
-
-If <[fp]> is <<NULL>>, <<fflush>> delivers pending output from all
-open files.
-
-RETURNS
-<<fflush>> returns <<0>> unless it encounters a write error; in that
-situation, it returns <<EOF>>.
-
-PORTABILITY
-ANSI C requires <<fflush>>.
-
-No supporting OS subroutines are required.
-*/
-
-#include <stdio.h>
-#include "local.h"
-
-/* Flush a single file, or (if fp is NULL) all files. */
-
-int
-_DEFUN (fflush, (fp),
- register FILE * fp)
-{
- register unsigned char *p;
- register int n, t;
-
-
-
-
- if (fp == NULL)
- return _fwalk (_REENT, fflush);
-
- _flockfile(fp);
-
- CHECK_INIT (fp);
-
- t = fp->_flags;
- if ((t & __SWR) == 0 || (p = fp->_bf._base) == NULL)
- {
- _funlockfile(fp);
- return 0;
- }
- n = fp->_p - p; /* write this much */
-
- /*
- * Set these immediately to avoid problems with longjmp
- * and to allow exchange buffering (via setvbuf) in user
- * write function.
- */
- fp->_p = p;
- fp->_w = t & (__SLBF | __SNBF) ? 0 : fp->_bf._size;
-
- while (n > 0)
- {
- t = (*fp->_write) (fp->_cookie, (char *) p, n);
- if (t <= 0)
- {
- fp->_flags |= __SERR;
- _funlockfile(fp);
- return EOF;
- }
- p += t;
- n -= t;
- }
- _funlockfile(fp);
- return 0;
-}
diff --git a/newlib/libc/stdio/fgetc.c b/newlib/libc/stdio/fgetc.c
deleted file mode 100644
index 1160b67a7..000000000
--- a/newlib/libc/stdio/fgetc.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-FUNCTION
-<<fgetc>>---get a character from a file or stream
-
-INDEX
- fgetc
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- int fgetc(FILE *<[fp]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- int fgetc(<[fp]>)
- FILE *<[fp]>;
-
-DESCRIPTION
-Use <<fgetc>> to get the next single character from the file or stream
-identified by <[fp]>. As a side effect, <<fgetc>> advances the file's
-current position indicator.
-
-For a macro version of this function, see <<getc>>.
-
-RETURNS
-The next character (read as an <<unsigned char>>, and cast to
-<<int>>), unless there is no more data, or the host system reports a
-read error; in either of these situations, <<fgetc>> returns <<EOF>>.
-
-You can distinguish the two situations that cause an <<EOF>> result by
-using the <<ferror>> and <<feof>> functions.
-
-PORTABILITY
-ANSI C requires <<fgetc>>.
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
-<<lseek>>, <<read>>, <<sbrk>>, <<write>>.
-*/
-
-#include <stdio.h>
-
-int
-_DEFUN (fgetc, (fp),
- FILE * fp)
-{
- int result;
- _flockfile(fp);
- result = __sgetc (fp);
- _funlockfile(fp);
- return result;
-}
diff --git a/newlib/libc/stdio/fgetpos.c b/newlib/libc/stdio/fgetpos.c
deleted file mode 100644
index ed6f5cfd3..000000000
--- a/newlib/libc/stdio/fgetpos.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
-FUNCTION
-<<fgetpos>>---record position in a stream or file
-
-INDEX
- fgetpos
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- int fgetpos(FILE *<[fp]>, fpos_t *<[pos]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- int fgetpos(<[fp]>, <[pos]>)
- FILE *<[fp]>;
- fpos_t *<[pos]>;
-
-DESCRIPTION
-Objects of type <<FILE>> can have a ``position'' that records how much
-of the file your program has already read. Many of the <<stdio>> functions
-depend on this position, and many change it as a side effect.
-
-You can use <<fgetpos>> to report on the current position for a file
-identified by <[fp]>; <<fgetpos>> will write a value
-representing that position at <<*<[pos]>>>. Later, you can
-use this value with <<fsetpos>> to return the file to this
-position.
-
-In the current implementation, <<fgetpos>> simply uses a character
-count to represent the file position; this is the same number that
-would be returned by <<ftell>>.
-
-RETURNS
-<<fgetpos>> returns <<0>> when successful. If <<fgetpos>> fails, the
-result is <<1>>. Failure occurs on streams that do not support
-positioning; the global <<errno>> indicates this condition with the
-value <<ESPIPE>>.
-
-PORTABILITY
-<<fgetpos>> is required by the ANSI C standard, but the meaning of the
-value it records is not specified beyond requiring that it be
-acceptable as an argument to <<fsetpos>>. In particular, other
-conforming C implementations may return a different result from
-<<ftell>> than what <<fgetpos>> writes at <<*<[pos]>>>.
-
-No supporting OS subroutines are required.
-*/
-
-#include <stdio.h>
-
-int
-_DEFUN (fgetpos, (fp, pos),
- FILE * fp _AND
- fpos_t * pos)
-{
- _flockfile(fp);
- *pos = ftell (fp);
-
- if (*pos != -1)
- {
- _funlockfile(fp);
- return 0;
- }
- _funlockfile(fp);
- return 1;
-}
diff --git a/newlib/libc/stdio/fgets.c b/newlib/libc/stdio/fgets.c
deleted file mode 100644
index 46e190077..000000000
--- a/newlib/libc/stdio/fgets.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
-
-FUNCTION
- <<fgets>>---get character string from a file or stream
-INDEX
- fgets
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- char *fgets(char *<[buf]>, int <[n]>, FILE *<[fp]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- char *fgets(<[buf]>,<[n]>,<[fp]>)
- char *<[buf]>;
- int <[n]>;
- FILE *<[fp]>;
-
-DESCRIPTION
- Reads at most <[n-1]> characters from <[fp]> until a newline
- is found. The characters including to the newline are stored
- in <[buf]>. The buffer is terminated with a 0.
-
-
-RETURNS
- <<fgets>> returns the buffer passed to it, with the data
- filled in. If end of file occurs with some data already
- accumulated, the data is returned with no other indication. If
- no data are read, NULL is returned instead.
-
-PORTABILITY
- <<fgets>> should replace all uses of <<gets>>. Note however
- that <<fgets>> returns all of the data, while <<gets>> removes
- the trailing newline (with no indication that it has done so.)
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
-<<lseek>>, <<read>>, <<sbrk>>, <<write>>.
-*/
-
-#include <stdio.h>
-#include <string.h>
-
-extern int __srefill ();
-
-/*
- * Read at most n-1 characters from the given file.
- * Stop when a newline has been read, or the count runs out.
- * Return first argument, or NULL if no characters were read.
- */
-
-char *
-_DEFUN (fgets, (buf, n, fp),
- char *buf _AND
- int n _AND
- FILE * fp)
-{
- size_t len;
- char *s;
- unsigned char *p, *t;
-
- if (n < 2) /* sanity check */
- return 0;
-
- s = buf;
-
- _flockfile(fp);
-#ifdef __SCLE
- if (fp->_flags & __SCLE)
- {
- int c;
- /* Sorry, have to do it the slow way */
- while (--n > 0 && (c = __sgetc(fp)) != EOF)
- {
- *s++ = c;
- if (c == '\n')
- break;
- }
- if (c == EOF && s == buf)
- {
- _funlockfile(fp);
- return NULL;
- }
- *s = 0;
- _funlockfile(fp);
- return buf;
- }
-#endif
-
- n--; /* leave space for NUL */
- do
- {
- /*
- * If the buffer is empty, refill it.
- */
- if ((len = fp->_r) <= 0)
- {
- if (__srefill (fp))
- {
- /* EOF: stop with partial or no line */
- if (s == buf)
- {
- _funlockfile(fp);
- return 0;
- }
- break;
- }
- len = fp->_r;
- }
- p = fp->_p;
-
- /*
- * Scan through at most n bytes of the current buffer,
- * looking for '\n'. If found, copy up to and including
- * newline, and stop. Otherwise, copy entire chunk
- * and loop.
- */
- if (len > n)
- len = n;
- t = (unsigned char *) memchr ((_PTR) p, '\n', len);
- if (t != 0)
- {
- len = ++t - p;
- fp->_r -= len;
- fp->_p = t;
- (void) memcpy ((_PTR) s, (_PTR) p, len);
- s[len] = 0;
- _funlockfile(fp);
- return (buf);
- }
- fp->_r -= len;
- fp->_p += len;
- (void) memcpy ((_PTR) s, (_PTR) p, len);
- s += len;
- }
- while ((n -= len) != 0);
- *s = 0;
- _funlockfile(fp);
- return buf;
-}
diff --git a/newlib/libc/stdio/fileno.c b/newlib/libc/stdio/fileno.c
deleted file mode 100644
index c9ecbb424..000000000
--- a/newlib/libc/stdio/fileno.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-FUNCTION
-<<fileno>>---return file descriptor associated with stream
-
-INDEX
- fileno
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- int fileno(FILE *<[fp]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- int fileno(<[fp]>)
- FILE *<[fp]>;
-
-DESCRIPTION
-You can use <<fileno>> to return the file descriptor identified by <[fp]>.
-
-RETURNS
-<<fileno>> returns a non-negative integer when successful.
-If <[fp]> is not an open stream, <<fileno>> returns -1.
-
-PORTABILITY
-<<fileno>> is not part of ANSI C.
-POSIX requires <<fileno>>.
-
-Supporting OS subroutines required: none.
-*/
-
-#include <stdio.h>
-#include "local.h"
-
-int
-_DEFUN (fileno, (f),
- FILE * f)
-{
- int result;
- _flockfile(f);
- CHECK_INIT (f);
- result = __sfileno (f);
- _funlockfile(f);
- return result;
-}
diff --git a/newlib/libc/stdio/findfp.c b/newlib/libc/stdio/findfp.c
deleted file mode 100644
index 4f1387ccb..000000000
--- a/newlib/libc/stdio/findfp.c
+++ /dev/null
@@ -1,183 +0,0 @@
-/* No user fns here. Pesch 15apr92. */
-
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <string.h>
-#include <fcntl.h>
-#include <sys/lock.h>
-#include "local.h"
-
-static void
-std (ptr, flags, file, data)
- FILE *ptr;
- int flags;
- int file;
- struct _reent *data;
-{
- ptr->_p = 0;
- ptr->_r = 0;
- ptr->_w = 0;
- ptr->_flags = flags;
- ptr->_file = file;
- ptr->_bf._base = 0;
- ptr->_bf._size = 0;
- ptr->_lbfsize = 0;
- ptr->_cookie = ptr;
- ptr->_read = __sread;
- ptr->_write = __swrite;
- ptr->_seek = __sseek;
- ptr->_close = __sclose;
- ptr->_data = data;
-#ifndef __SINGLE_THREAD__
- __lock_init_recursive (*(_LOCK_RECURSIVE_T *)&ptr->_lock);
-#endif
-
-#ifdef __SCLE
- if (__stextmode(ptr->_file))
- ptr->_flags |= __SCLE;
-#endif
-}
-
-struct _glue *
-__sfmoreglue (d, n)
- struct _reent *d;
- register int n;
-{
- struct _glue *g;
- FILE *p;
-
- g = (struct _glue *) _malloc_r (d, sizeof (*g) + n * sizeof (FILE));
- if (g == NULL)
- return NULL;
- p = (FILE *) (g + 1);
- g->_next = NULL;
- g->_niobs = n;
- g->_iobs = p;
- memset (p, 0, n * sizeof (FILE));
- return g;
-}
-
-/*
- * Find a free FILE for fopen et al.
- */
-
-FILE *
-__sfp (d)
- struct _reent *d;
-{
- FILE *fp;
- int n;
- struct _glue *g;
-
- if (!d->__sdidinit)
- __sinit (d);
- for (g = &d->__sglue;; g = g->_next)
- {
- for (fp = g->_iobs, n = g->_niobs; --n >= 0; fp++)
- if (fp->_flags == 0)
- goto found;
- if (g->_next == NULL &&
- (g->_next = __sfmoreglue (d, NDYNAMIC)) == NULL)
- break;
- }
- d->_errno = ENOMEM;
- return NULL;
-
-found:
- fp->_flags = 1; /* reserve this slot; caller sets real flags */
- fp->_p = NULL; /* no current pointer */
- fp->_w = 0; /* nothing to read or write */
- fp->_r = 0;
- fp->_bf._base = NULL; /* no buffer */
- fp->_bf._size = 0;
- fp->_lbfsize = 0; /* not line buffered */
- fp->_file = -1; /* no file */
- /* fp->_cookie = <any>; */ /* caller sets cookie, _read/_write etc */
- fp->_ub._base = NULL; /* no ungetc buffer */
- fp->_ub._size = 0;
- fp->_lb._base = NULL; /* no line buffer */
- fp->_lb._size = 0;
- fp->_data = d;
- return fp;
-}
-
-/*
- * exit() calls _cleanup() through *__cleanup, set whenever we
- * open or buffer a file. This chicanery is done so that programs
- * that do not use stdio need not link it all in.
- *
- * The name `_cleanup' is, alas, fairly well known outside stdio.
- */
-
-void
-_cleanup_r (ptr)
- struct _reent *ptr;
-{
- /* (void) _fwalk(fclose); */
- (void) _fwalk (ptr, fflush); /* `cheating' */
-}
-
-#ifndef _REENT_ONLY
-void
-_cleanup ()
-{
- _cleanup_r (_REENT);
-}
-#endif
-
-/*
- * __sinit() is called whenever stdio's internal variables must be set up.
- */
-
-void
-__sinit (s)
- struct _reent *s;
-{
- /* make sure we clean up on exit */
- s->__cleanup = _cleanup_r; /* conservative */
- s->__sdidinit = 1;
-
- s->__sglue._next = NULL;
-#ifndef _REENT_SMALL
- s->__sglue._niobs = 3;
- s->__sglue._iobs = &s->__sf[0];
-#else
- s->__sglue._niobs = 0;
- s->__sglue._iobs = NULL;
- s->_stdin = __sfp(s);
- s->_stdout = __sfp(s);
- s->_stderr = __sfp(s);
-#endif
-
- std (s->_stdin, __SRD, 0, s);
-
- /* on platforms that have true file system I/O, we can verify whether stdout
- is an interactive terminal or not. For all other platforms, we will
- default to line buffered mode here. */
-#ifdef HAVE_FCNTL
- std (s->_stdout, __SWR, 1, s);
-#else
- std (s->_stdout, __SWR | __SLBF, 1, s);
-#endif
-
- std (s->_stderr, __SWR | __SNBF, 2, s);
-
-}
diff --git a/newlib/libc/stdio/fiprintf.c b/newlib/libc/stdio/fiprintf.c
deleted file mode 100644
index d490ef403..000000000
--- a/newlib/libc/stdio/fiprintf.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
-FUNCTION
- <<fiprintf>>---format output to file (integer only)
-INDEX
- fiprintf
-
-ANSI_SYNOPSIS
- #include <stdio.h>
-
- int fiprintf(FILE *<[fd]>, const char *<[format]>, ...);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
-
- int fiprintf(<[fd]>, <[format]> [, <[arg]>, ...]);
- FILE *<[fd]>;
- char *<[format]>;
-
-DESCRIPTION
-<<fiprintf>> is a restricted version of <<fprintf>>: it has the same
-arguments and behavior, save that it cannot perform any floating-point
-formatting---the <<f>>, <<g>>, <<G>>, <<e>>, and <<F>> type specifiers
-are not recognized.
-
-RETURNS
- <<fiprintf>> returns the number of bytes in the output string,
- save that the concluding <<NULL>> is not counted.
- <<fiprintf>> returns when the end of the format string is
- encountered. If an error occurs, <<fiprintf>>
- returns <<EOF>>.
-
-PORTABILITY
-<<fiprintf>> is not required by ANSI C.
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
-<<lseek>>, <<read>>, <<sbrk>>, <<write>>.
-*/
-
-#include <_ansi.h>
-#include <stdio.h>
-
-#ifdef _HAVE_STDC
-
-#include <stdarg.h>
-
-int
-fiprintf (FILE * fp, const char *fmt,...)
-{
- int ret;
- va_list ap;
-
- va_start (ap, fmt);
- ret = vfiprintf (fp, fmt, ap);
- va_end (ap);
- return ret;
-}
-
-#else
-
-#include <varargs.h>
-
-int
-fiprintf (fp, fmt, va_alist)
- FILE *fp;
- char *fmt;
- va_dcl
-{
- int ret;
- va_list ap;
-
- va_start (ap);
- ret = vfiprintf (fp, fmt, ap);
- va_end (ap);
- return ret;
-}
-
-#endif
diff --git a/newlib/libc/stdio/flags.c b/newlib/libc/stdio/flags.c
deleted file mode 100644
index e448cca80..000000000
--- a/newlib/libc/stdio/flags.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/* No user fns here. Pesch 15apr92 */
-
-/*
- * Copyright (c) 1990 Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#include <stdio.h>
-#include <time.h>
-#include <fcntl.h>
-
-#include <errno.h>
-#include <sys/types.h>
-
-/*
- * Return the (stdio) flags for a given mode. Store the flags
- * to be passed to an open() syscall through *optr.
- * Return 0 on error.
- */
-
-int
-__sflags (ptr, mode, optr)
- struct _reent *ptr;
- register char *mode;
- int *optr;
-{
- register int ret, m, o;
-
- switch (mode[0])
- {
- case 'r': /* open for reading */
- ret = __SRD;
- m = O_RDONLY;
- o = 0;
- break;
-
- case 'w': /* open for writing */
- ret = __SWR;
- m = O_WRONLY;
- o = O_CREAT | O_TRUNC;
- break;
-
- case 'a': /* open for appending */
- ret = __SWR | __SAPP;
- m = O_WRONLY;
- o = O_CREAT | O_APPEND;
- break;
- default: /* illegal mode */
- ptr->_errno = EINVAL;
- return (0);
- }
- if (mode[1] && (mode[1] == '+' || mode[2] == '+'))
- {
- ret = __SRW;
- m = O_RDWR;
- }
- if (mode[1] && (mode[1] == 'b' || mode[2] == 'b'))
- {
-#ifdef O_BINARY
- m |= O_BINARY;
-#endif
- }
-#ifdef __CYGWIN__
- else if (mode[1] && (mode[1] == 't' || mode[2] == 't'))
-#else
- else
-#endif
- {
-#ifdef O_TEXT
- m |= O_TEXT;
-#endif
- }
- *optr = m | o;
- return ret;
-}
diff --git a/newlib/libc/stdio/floatio.h b/newlib/libc/stdio/floatio.h
deleted file mode 100644
index 496721b88..000000000
--- a/newlib/libc/stdio/floatio.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * %W% (Berkeley) %G%
- */
-
-/*
- * Floating point scanf/printf (input/output) definitions.
- */
-
-#ifdef _NO_LONGDBL
-/* 11-bit exponent (VAX G floating point) is 308 decimal digits */
-#define MAXEXP 308
-#else /* !_NO_LONGDBL */
-/* 15-bit exponent (Intel extended floating point) is 4932 decimal digits */
-#define MAXEXP 4932
-#endif /* !_NO_LONGDBL */
-/* 128 bit fraction takes up 39 decimal digits; max reasonable precision */
-#define MAXFRACT 39
diff --git a/newlib/libc/stdio/fopen.c b/newlib/libc/stdio/fopen.c
deleted file mode 100644
index ff2cbec46..000000000
--- a/newlib/libc/stdio/fopen.c
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
-FUNCTION
-<<fopen>>---open a file
-
-INDEX
- fopen
-INDEX
- _fopen_r
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- FILE *fopen(const char *<[file]>, const char *<[mode]>);
-
- FILE *_fopen_r(void *<[reent]>,
- const char *<[file]>, const char *<[mode]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- FILE *fopen(<[file]>, <[mode]>)
- char *<[file]>;
- char *<[mode]>;
-
- FILE *_fopen_r(<[reent]>, <[file]>, <[mode]>)
- char *<[reent]>;
- char *<[file]>;
- char *<[mode]>;
-
-DESCRIPTION
-<<fopen>> initializes the data structures needed to read or write a
-file. Specify the file's name as the string at <[file]>, and the kind
-of access you need to the file with the string at <[mode]>.
-
-The alternate function <<_fopen_r>> is a reentrant version.
-The extra argument <[reent]> is a pointer to a reentrancy structure.
-
-Three fundamental kinds of access are available: read, write, and append.
-<<*<[mode]>>> must begin with one of the three characters `<<r>>',
-`<<w>>', or `<<a>>', to select one of these:
-
-o+
-o r
-Open the file for reading; the operation will fail if the file does
-not exist, or if the host system does not permit you to read it.
-
-o w
-Open the file for writing @emph{from the beginning} of the file:
-effectively, this always creates a new file. If the file whose name you
-specified already existed, its old contents are discarded.
-
-o a
-Open the file for appending data, that is writing from the end of
-file. When you open a file this way, all data always goes to the
-current end of file; you cannot change this using <<fseek>>.
-o-
-
-Some host systems distinguish between ``binary'' and ``text'' files.
-Such systems may perform data transformations on data written to, or
-read from, files opened as ``text''.
-If your system is one of these, then you can append a `<<b>>' to any
-of the three modes above, to specify that you are opening the file as
-a binary file (the default is to open the file as a text file).
-
-`<<rb>>', then, means ``read binary''; `<<wb>>', ``write binary''; and
-`<<ab>>', ``append binary''.
-
-To make C programs more portable, the `<<b>>' is accepted on all
-systems, whether or not it makes a difference.
-
-Finally, you might need to both read and write from the same file.
-You can also append a `<<+>>' to any of the three modes, to permit
-this. (If you want to append both `<<b>>' and `<<+>>', you can do it
-in either order: for example, <<"rb+">> means the same thing as
-<<"r+b">> when used as a mode string.)
-
-Use <<"r+">> (or <<"rb+">>) to permit reading and writing anywhere in
-an existing file, without discarding any data; <<"w+">> (or <<"wb+">>)
-to create a new file (or begin by discarding all data from an old one)
-that permits reading and writing anywhere in it; and <<"a+">> (or
-<<"ab+">>) to permit reading anywhere in an existing file, but writing
-only at the end.
-
-RETURNS
-<<fopen>> returns a file pointer which you can use for other file
-operations, unless the file you requested could not be opened; in that
-situation, the result is <<NULL>>. If the reason for failure was an
-invalid string at <[mode]>, <<errno>> is set to <<EINVAL>>.
-
-PORTABILITY
-<<fopen>> is required by ANSI C.
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
-<<lseek>>, <<open>>, <<read>>, <<sbrk>>, <<write>>.
-*/
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "%W% (Berkeley) %G%";
-#endif /* LIBC_SCCS and not lint */
-
-#include <stdio.h>
-#include <errno.h>
-#include "local.h"
-#ifdef __CYGWIN__
-#include <fcntl.h>
-#endif
-#include <sys/lock.h>
-
-FILE *
-_DEFUN (_fopen_r, (ptr, file, mode),
- struct _reent *ptr _AND
- _CONST char *file _AND
- _CONST char *mode)
-{
- register FILE *fp;
- register int f;
- int flags, oflags;
-
- if ((flags = __sflags (ptr, mode, &oflags)) == 0)
- return NULL;
- if ((fp = __sfp (ptr)) == NULL)
- return NULL;
-
- if ((f = _open_r (fp->_data, file, oflags, 0666)) < 0)
- {
- fp->_flags = 0; /* release */
- return NULL;
- }
-
- fp->_file = f;
- fp->_flags = flags;
- fp->_cookie = (_PTR) fp;
- fp->_read = __sread;
- fp->_write = __swrite;
- fp->_seek = __sseek;
- fp->_close = __sclose;
-
- if (fp->_flags & __SAPP)
- fseek (fp, 0, SEEK_END);
-
-#ifdef __SCLE
- if (__stextmode (fp->_file))
- fp->_flags |= __SCLE;
-#endif
-
-#ifndef __SINGLE_THREAD__
- __lock_init_recursive (*(_LOCK_RECURSIVE_T *)&fp->_lock);
-#endif
-
- return fp;
-}
-
-#ifndef _REENT_ONLY
-
-FILE *
-_DEFUN (fopen, (file, mode),
- _CONST char *file _AND
- _CONST char *mode)
-{
- return _fopen_r (_REENT, file, mode);
-}
-
-#endif
diff --git a/newlib/libc/stdio/fprintf.c b/newlib/libc/stdio/fprintf.c
deleted file mode 100644
index de036605f..000000000
--- a/newlib/libc/stdio/fprintf.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#include <_ansi.h>
-#include <stdio.h>
-
-#ifdef _HAVE_STDC
-
-#include <stdarg.h>
-
-int
-fprintf (FILE * fp, const char *fmt,...)
-{
- int ret;
- va_list ap;
-
- va_start (ap, fmt);
- ret = vfprintf (fp, fmt, ap);
- va_end (ap);
- return ret;
-}
-
-#else
-
-#include <varargs.h>
-
-int
-fprintf (fp, fmt, va_alist)
- FILE *fp;
- char *fmt;
- va_dcl
-{
- int ret;
- va_list ap;
-
- va_start (ap);
- ret = vfprintf (fp, fmt, ap);
- va_end (ap);
- return ret;
-}
-
-#endif
diff --git a/newlib/libc/stdio/fputc.c b/newlib/libc/stdio/fputc.c
deleted file mode 100644
index b945095e5..000000000
--- a/newlib/libc/stdio/fputc.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
-FUNCTION
-<<fputc>>---write a character on a stream or file
-
-INDEX
- fputc
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- int fputc(int <[ch]>, FILE *<[fp]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- int fputc(<[ch]>, <[fp]>)
- int <[ch]>;
- FILE *<[fp]>;
-
-DESCRIPTION
-<<fputc>> converts the argument <[ch]> from an <<int>> to an
-<<unsigned char>>, then writes it to the file or stream identified by
-<[fp]>.
-
-If the file was opened with append mode (or if the stream cannot
-support positioning), then the new character goes at the end of the
-file or stream. Otherwise, the new character is written at the
-current value of the position indicator, and the position indicator
-oadvances by one.
-
-For a macro version of this function, see <<putc>>.
-
-RETURNS
-If successful, <<fputc>> returns its argument <[ch]>. If an error
-intervenes, the result is <<EOF>>. You can use `<<ferror(<[fp]>)>>' to
-query for errors.
-
-PORTABILITY
-<<fputc>> is required by ANSI C.
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
-<<lseek>>, <<read>>, <<sbrk>>, <<write>>.
-*/
-
-#include <stdio.h>
-
-int
-_DEFUN (fputc, (ch, file),
- int ch _AND
- FILE * file)
-{
- int result;
- _flockfile(file);
- result = putc (ch, file);
- _funlockfile(file);
- return result;
-}
diff --git a/newlib/libc/stdio/fputs.c b/newlib/libc/stdio/fputs.c
deleted file mode 100644
index 78758ce93..000000000
--- a/newlib/libc/stdio/fputs.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
-FUNCTION
-<<fputs>>---write a character string in a file or stream
-
-INDEX
- fputs
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- int fputs(const char *<[s]>, FILE *<[fp]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- int fputs(<[s]>, <[fp]>)
- char *<[s]>;
- FILE *<[fp]>;
-
-DESCRIPTION
-<<fputs>> writes the string at <[s]> (but without the trailing null)
-to the file or stream identified by <[fp]>.
-
-RETURNS
-If successful, the result is <<0>>; otherwise, the result is <<EOF>>.
-
-PORTABILITY
-ANSI C requires <<fputs>>, but does not specify that the result on
-success must be <<0>>; any non-negative value is permitted.
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
-<<lseek>>, <<read>>, <<sbrk>>, <<write>>.
-*/
-
-#include <stdio.h>
-#include <string.h>
-#include "fvwrite.h"
-
-/*
- * Write the given string to the given file.
- */
-
-int
-_DEFUN (fputs, (s, fp),
- char _CONST * s _AND
- FILE * fp)
-{
- int result;
- struct __suio uio;
- struct __siov iov;
-
- iov.iov_base = s;
- iov.iov_len = uio.uio_resid = strlen (s);
- uio.uio_iov = &iov;
- uio.uio_iovcnt = 1;
- _flockfile(fp);
- result = __sfvwrite (fp, &uio);
- _funlockfile(fp);
- return result;
-}
diff --git a/newlib/libc/stdio/fread.c b/newlib/libc/stdio/fread.c
deleted file mode 100644
index faca53735..000000000
--- a/newlib/libc/stdio/fread.c
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
-FUNCTION
-<<fread>>---read array elements from a file
-
-INDEX
- fread
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- size_t fread(void *<[buf]>, size_t <[size]>, size_t <[count]>,
- FILE *<[fp]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- size_t fread(<[buf]>, <[size]>, <[count]>, <[fp]>)
- char *<[buf]>;
- size_t <[size]>;
- size_t <[count]>;
- FILE *<[fp]>;
-
-DESCRIPTION
-<<fread>> attempts to copy, from the file or stream identified by
-<[fp]>, <[count]> elements (each of size <[size]>) into memory,
-starting at <[buf]>. <<fread>> may copy fewer elements than
-<[count]> if an error, or end of file, intervenes.
-
-<<fread>> also advances the file position indicator (if any) for
-<[fp]> by the number of @emph{characters} actually read.
-
-RETURNS
-The result of <<fread>> is the number of elements it succeeded in
-reading.
-
-PORTABILITY
-ANSI C requires <<fread>>.
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
-<<lseek>>, <<read>>, <<sbrk>>, <<write>>.
-*/
-
-#include <stdio.h>
-#include <string.h>
-#include "local.h"
-
-#ifdef __SCLE
-static size_t
-_DEFUN (crlf, (fp, buf, count, eof),
- FILE * fp _AND
- char * buf _AND
- size_t count _AND
- int eof)
-{
- int newcount = 0, r;
- char *s, *d, *e;
-
- if (count == 0)
- return 0;
-
- e = buf + count;
- for (s=d=buf; s<e-1; s++)
- {
- if (*s == '\r' && s[1] == '\n')
- s++;
- *d++ = *s;
- }
- if (s < e)
- {
- if (*s == '\r')
- {
- int c = __sgetc_raw(fp);
- if (c == '\n')
- *s = '\n';
- else
- ungetc(c, fp);
- }
- *d++ = *s++;
- }
-
-
- while (d < e)
- {
- r = getc(fp);
- if (r == EOF)
- return count - (e-d);
- *d++ = r;
- }
-
- return count;
-
-}
-
-#endif
-
-size_t
-_DEFUN (fread, (buf, size, count, fp),
- _PTR buf _AND
- size_t size _AND
- size_t count _AND
- FILE * fp)
-{
- register size_t resid;
- register char *p;
- register int r;
- size_t total;
-
- if ((resid = count * size) == 0)
- return 0;
-
- _flockfile(fp);
- if (fp->_r < 0)
- fp->_r = 0;
- total = resid;
- p = buf;
-
- while (resid > (r = fp->_r))
- {
- (void) memcpy ((void *) p, (void *) fp->_p, (size_t) r);
- fp->_p += r;
- /* fp->_r = 0 ... done in __srefill */
- p += r;
- resid -= r;
- if (__srefill (fp))
- {
- /* no more input: return partial result */
-#ifdef __SCLE
- if (fp->_flags & __SCLE)
- {
- _funlockfile(fp);
- return crlf(fp, buf, total-resid, 1) / size;
- }
-#endif
- _funlockfile(fp);
- return (total - resid) / size;
- }
- }
- (void) memcpy ((void *) p, (void *) fp->_p, resid);
- fp->_r -= resid;
- fp->_p += resid;
-#ifdef __SCLE
- if (fp->_flags & __SCLE)
- {
- _funlockfile(fp);
- return crlf(fp, buf, total, 0) / size;
- }
-#endif
- _funlockfile(fp);
- return count;
-}
diff --git a/newlib/libc/stdio/freopen.c b/newlib/libc/stdio/freopen.c
deleted file mode 100644
index ea61f0463..000000000
--- a/newlib/libc/stdio/freopen.c
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
-FUNCTION
-<<freopen>>---open a file using an existing file descriptor
-
-INDEX
- freopen
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- FILE *freopen(const char *<[file]>, const char *<[mode]>,
- FILE *<[fp]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- FILE *freopen(<[file]>, <[mode]>, <[fp]>)
- char *<[file]>;
- char *<[mode]>;
- FILE *<[fp]>;
-
-DESCRIPTION
-Use this variant of <<fopen>> if you wish to specify a particular file
-descriptor <[fp]> (notably <<stdin>>, <<stdout>>, or <<stderr>>) for
-the file.
-
-If <[fp]> was associated with another file or stream, <<freopen>>
-closes that other file or stream (but ignores any errors while closing
-it).
-
-<[file]> and <[mode]> are used just as in <<fopen>>.
-
-RETURNS
-If successful, the result is the same as the argument <[fp]>. If the
-file cannot be opened as specified, the result is <<NULL>>.
-
-PORTABILITY
-ANSI C requires <<freopen>>.
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
-<<lseek>>, <<open>>, <<read>>, <<sbrk>>, <<write>>.
-*/
-
-#include <time.h>
-#include <stdio.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include "local.h"
-
-/*
- * Re-direct an existing, open (probably) file to some other file.
- */
-
-FILE *
-_DEFUN (freopen, (file, mode, fp),
- _CONST char *file _AND
- _CONST char *mode _AND
- register FILE *fp)
-{
- register int f;
- int flags, oflags, e;
- struct _reent *ptr;
-
- _flockfile(fp);
-
- CHECK_INIT (fp);
- ptr = fp->_data;
-
- if ((flags = __sflags (ptr, mode, &oflags)) == 0)
- {
- (void) fclose (fp);
- _funlockfile(fp);
- return NULL;
- }
-
- /*
- * Remember whether the stream was open to begin with, and
- * which file descriptor (if any) was associated with it.
- * If it was attached to a descriptor, defer closing it,
- * so that, e.g., freopen("/dev/stdin", "r", stdin) works.
- * This is unnecessary if it was not a Unix file.
- */
-
- if (fp->_flags == 0)
- fp->_flags = __SEOF; /* hold on to it */
- else
- {
- if (fp->_flags & __SWR)
- (void) fflush (fp);
- /* if close is NULL, closing is a no-op, hence pointless */
- if (fp->_close != NULL)
- (void) (*fp->_close) (fp->_cookie);
- }
-
- /*
- * Now get a new descriptor to refer to the new file.
- */
-
- f = _open_r (ptr, (char *) file, oflags, 0666);
- e = ptr->_errno;
-
- /*
- * Finish closing fp. Even if the open succeeded above,
- * we cannot keep fp->_base: it may be the wrong size.
- * This loses the effect of any setbuffer calls,
- * but stdio has always done this before.
- */
-
- if (fp->_flags & __SMBF)
- _free_r (ptr, (char *) fp->_bf._base);
- fp->_w = 0;
- fp->_r = 0;
- fp->_p = NULL;
- fp->_bf._base = NULL;
- fp->_bf._size = 0;
- fp->_lbfsize = 0;
- if (HASUB (fp))
- FREEUB (fp);
- fp->_ub._size = 0;
- if (HASLB (fp))
- FREELB (fp);
- fp->_lb._size = 0;
-
- if (f < 0)
- { /* did not get it after all */
- fp->_flags = 0; /* set it free */
- ptr->_errno = e; /* restore in case _close clobbered */
- _funlockfile(fp);
- return NULL;
- }
-
- fp->_flags = flags;
- fp->_file = f;
- fp->_cookie = (_PTR) fp;
- fp->_read = __sread;
- fp->_write = __swrite;
- fp->_seek = __sseek;
- fp->_close = __sclose;
-
-#ifdef __SCLE
- if (__stextmode(fp->_file))
- fp->_flags |= __SCLE;
-#endif
-
- _funlockfile(fp);
- return fp;
-}
diff --git a/newlib/libc/stdio/fscanf.c b/newlib/libc/stdio/fscanf.c
deleted file mode 100644
index 92fc4ea7e..000000000
--- a/newlib/libc/stdio/fscanf.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#include <_ansi.h>
-#include <stdio.h>
-
-#ifdef _HAVE_STDC
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-
-#include "local.h"
-
-#ifndef _REENT_ONLY
-
-int
-#ifdef _HAVE_STDC
-fscanf (FILE *fp, const char *fmt, ...)
-#else
-fscanf (FILE *fp, fmt, va_alist)
- FILE *fp;
- char *fmt;
- va_dcl
-#endif
-{
- int ret;
- va_list ap;
-
-#ifdef _HAVE_STDC
- va_start (ap, fmt);
-#else
- va_start (ap);
-#endif
- ret = __svfscanf_r (_REENT, fp, fmt, ap);
- va_end (ap);
- return ret;
-}
-
-#endif /* !_REENT_ONLY */
-
-int
-#ifdef _HAVE_STDC
-_fscanf_r (struct _reent *ptr, FILE *fp, const char *fmt, ...)
-#else
-_fscanf_r (ptr, FILE *fp, fmt, va_alist)
- struct _reent *ptr;
- FILE *fp;
- char *fmt;
- va_dcl
-#endif
-{
- int ret;
- va_list ap;
-
-#ifdef _HAVE_STDC
- va_start (ap, fmt);
-#else
- va_start (ap);
-#endif
- ret = __svfscanf_r (ptr, fp, fmt, ap);
- va_end (ap);
- return (ret);
-}
-
diff --git a/newlib/libc/stdio/fseek.c b/newlib/libc/stdio/fseek.c
deleted file mode 100644
index 8912dd60c..000000000
--- a/newlib/libc/stdio/fseek.c
+++ /dev/null
@@ -1,334 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
-FUNCTION
-<<fseek>>, <<fseeko>>---set file position
-
-INDEX
- fseek
-INDEX
- fseeko
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- int fseek(FILE *<[fp]>, long <[offset]>, int <[whence]>)
- int fseeko(FILE *<[fp]>, off_t <[offset]>, int <[whence]>)
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- int fseek(<[fp]>, <[offset]>, <[whence]>)
- FILE *<[fp]>;
- long <[offset]>;
- int <[whence]>;
-
- int fseeko(<[fp]>, <[offset]>, <[whence]>)
- FILE *<[fp]>;
- off_t <[offset]>;
- int <[whence]>;
-
-DESCRIPTION
-Objects of type <<FILE>> can have a ``position'' that records how much
-of the file your program has already read. Many of the <<stdio>> functions
-depend on this position, and many change it as a side effect.
-
-You can use <<fseek>>/<<fseeko>> to set the position for the file identified by
-<[fp]>. The value of <[offset]> determines the new position, in one
-of three ways selected by the value of <[whence]> (defined as macros
-in `<<stdio.h>>'):
-
-<<SEEK_SET>>---<[offset]> is the absolute file position (an offset
-from the beginning of the file) desired. <[offset]> must be positive.
-
-<<SEEK_CUR>>---<[offset]> is relative to the current file position.
-<[offset]> can meaningfully be either positive or negative.
-
-<<SEEK_END>>---<[offset]> is relative to the current end of file.
-<[offset]> can meaningfully be either positive (to increase the size
-of the file) or negative.
-
-See <<ftell>>/<<ftello>> to determine the current file position.
-
-RETURNS
-<<fseek>>/<<fseeko>> return <<0>> when successful. On failure, the
-result is <<EOF>>. The reason for failure is indicated in <<errno>>:
-either <<ESPIPE>> (the stream identified by <[fp]> doesn't support
-repositioning) or <<EINVAL>> (invalid file position).
-
-PORTABILITY
-ANSI C requires <<fseek>>.
-
-<<fseeko>> is defined by the Single Unix specification.
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
-<<lseek>>, <<read>>, <<sbrk>>, <<write>>.
-*/
-
-#include <stdio.h>
-#include <time.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <sys/stat.h>
-#include "local.h"
-
-#define POS_ERR (-(fpos_t)1)
-
-/*
- * Seek the given file to the given offset.
- * `Whence' must be one of the three SEEK_* macros.
- */
-
-int
-fseek (fp, offset, whence)
- register FILE *fp;
- long offset;
- int whence;
-{
- struct _reent *ptr;
- fpos_t _EXFUN ((*seekfn), (void *, fpos_t, int));
- fpos_t target, curoff;
- size_t n;
- struct stat st;
- int havepos;
-
- _flockfile(fp);
-
- /* Make sure stdio is set up. */
-
- CHECK_INIT (fp);
- ptr = fp->_data;
-
- /* If we've been doing some writing, and we're in append mode
- then we don't really know where the filepos is. */
-
- if (fp->_flags & __SAPP && fp->_flags & __SWR)
- {
- /* So flush the buffer and seek to the end. */
- fflush (fp);
- }
-
- /* Have to be able to seek. */
-
- if ((seekfn = fp->_seek) == NULL)
- {
- ptr->_errno = ESPIPE; /* ??? */
- _funlockfile(fp);
- return EOF;
- }
-
- /*
- * Change any SEEK_CUR to SEEK_SET, and check `whence' argument.
- * After this, whence is either SEEK_SET or SEEK_END.
- */
-
- switch (whence)
- {
- case SEEK_CUR:
- /*
- * In order to seek relative to the current stream offset,
- * we have to first find the current stream offset a la
- * ftell (see ftell for details).
- */
- fflush(fp); /* may adjust seek offset on append stream */
- if (fp->_flags & __SOFF)
- curoff = fp->_offset;
- else
- {
- curoff = (*seekfn) (fp->_cookie, (fpos_t) 0, SEEK_CUR);
- if (curoff == -1L)
- {
- _funlockfile(fp);
- return EOF;
- }
- }
- if (fp->_flags & __SRD)
- {
- curoff -= fp->_r;
- if (HASUB (fp))
- curoff -= fp->_ur;
- }
- else if (fp->_flags & __SWR && fp->_p != NULL)
- curoff += fp->_p - fp->_bf._base;
-
- offset += curoff;
- whence = SEEK_SET;
- havepos = 1;
- break;
-
- case SEEK_SET:
- case SEEK_END:
- havepos = 0;
- break;
-
- default:
- ptr->_errno = EINVAL;
- _funlockfile(fp);
- return (EOF);
- }
-
- /*
- * Can only optimise if:
- * reading (and not reading-and-writing);
- * not unbuffered; and
- * this is a `regular' Unix file (and hence seekfn==__sseek).
- * We must check __NBF first, because it is possible to have __NBF
- * and __SOPT both set.
- */
-
- if (fp->_bf._base == NULL)
- __smakebuf (fp);
- if (fp->_flags & (__SWR | __SRW | __SNBF | __SNPT))
- goto dumb;
- if ((fp->_flags & __SOPT) == 0)
- {
- if (seekfn != __sseek
- || fp->_file < 0
- || _fstat_r (ptr, fp->_file, &st)
- || (st.st_mode & S_IFMT) != S_IFREG)
- {
- fp->_flags |= __SNPT;
- goto dumb;
- }
-#ifdef HAVE_BLKSIZE
- fp->_blksize = st.st_blksize;
-#else
- fp->_blksize = 1024;
-#endif
- fp->_flags |= __SOPT;
- }
-
- /*
- * We are reading; we can try to optimise.
- * Figure out where we are going and where we are now.
- */
-
- if (whence == SEEK_SET)
- target = offset;
- else
- {
- if (_fstat_r (ptr, fp->_file, &st))
- goto dumb;
- target = st.st_size + offset;
- }
-
- if (!havepos)
- {
- if (fp->_flags & __SOFF)
- curoff = fp->_offset;
- else
- {
- curoff = (*seekfn) (fp->_cookie, 0L, SEEK_CUR);
- if (curoff == POS_ERR)
- goto dumb;
- }
- curoff -= fp->_r;
- if (HASUB (fp))
- curoff -= fp->_ur;
- }
-
- /*
- * Compute the number of bytes in the input buffer (pretending
- * that any ungetc() input has been discarded). Adjust current
- * offset backwards by this count so that it represents the
- * file offset for the first byte in the current input buffer.
- */
-
- if (HASUB (fp))
- {
- curoff += fp->_r; /* kill off ungetc */
- n = fp->_up - fp->_bf._base;
- curoff -= n;
- n += fp->_ur;
- }
- else
- {
- n = fp->_p - fp->_bf._base;
- curoff -= n;
- n += fp->_r;
- }
-
- /*
- * If the target offset is within the current buffer,
- * simply adjust the pointers, clear EOF, undo ungetc(),
- * and return. (If the buffer was modified, we have to
- * skip this; see fgetline.c.)
- */
-
- if ((fp->_flags & __SMOD) == 0 &&
- target >= curoff && target < curoff + n)
- {
- register int o = target - curoff;
-
- fp->_p = fp->_bf._base + o;
- fp->_r = n - o;
- if (HASUB (fp))
- FREEUB (fp);
- fp->_flags &= ~__SEOF;
- _funlockfile(fp);
- return 0;
- }
-
- /*
- * The place we want to get to is not within the current buffer,
- * but we can still be kind to the kernel copyout mechanism.
- * By aligning the file offset to a block boundary, we can let
- * the kernel use the VM hardware to map pages instead of
- * copying bytes laboriously. Using a block boundary also
- * ensures that we only read one block, rather than two.
- */
-
- curoff = target & ~(fp->_blksize - 1);
- if ((*seekfn) (fp->_cookie, curoff, SEEK_SET) == POS_ERR)
- goto dumb;
- fp->_r = 0;
- fp->_p = fp->_bf._base;
- if (HASUB (fp))
- FREEUB (fp);
- fp->_flags &= ~__SEOF;
- n = target - curoff;
- if (n)
- {
- if (__srefill (fp) || fp->_r < n)
- goto dumb;
- fp->_p += n;
- fp->_r -= n;
- }
- _funlockfile(fp);
- return 0;
-
- /*
- * We get here if we cannot optimise the seek ... just
- * do it. Allow the seek function to change fp->_bf._base.
- */
-
-dumb:
- if (fflush (fp) || (*seekfn) (fp->_cookie, offset, whence) == POS_ERR)
- {
- _funlockfile(fp);
- return EOF;
- }
- /* success: clear EOF indicator and discard ungetc() data */
- if (HASUB (fp))
- FREEUB (fp);
- fp->_p = fp->_bf._base;
- fp->_r = 0;
- /* fp->_w = 0; *//* unnecessary (I think...) */
- fp->_flags &= ~__SEOF;
- _funlockfile(fp);
- return 0;
-}
diff --git a/newlib/libc/stdio/fseeko.c b/newlib/libc/stdio/fseeko.c
deleted file mode 100644
index 0697a5fc7..000000000
--- a/newlib/libc/stdio/fseeko.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2002, Red Hat Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#include <stdio.h>
-
-int
-fseeko (fp, offset, whence)
- register FILE *fp;
- off_t offset;
- int whence;
-{
- /* for now we simply cast since off_t should be long */
- return fseek (fp, (long)offset, whence);
-}
diff --git a/newlib/libc/stdio/fsetpos.c b/newlib/libc/stdio/fsetpos.c
deleted file mode 100644
index 28cd69ead..000000000
--- a/newlib/libc/stdio/fsetpos.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
-FUNCTION
-<<fsetpos>>---restore position of a stream or file
-
-INDEX
- fsetpos
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- int fsetpos(FILE *<[fp]>, const fpos_t *<[pos]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- int fsetpos(<[fp]>, <[pos]>)
- FILE *<[fp]>;
- fpos_t *<[pos]>;
-
-DESCRIPTION
-Objects of type <<FILE>> can have a ``position'' that records how much
-of the file your program has already read. Many of the <<stdio>> functions
-depend on this position, and many change it as a side effect.
-
-You can use <<fsetpos>> to return the file identified by <[fp]> to a previous
-position <<*<[pos]>>> (after first recording it with <<fgetpos>>).
-
-See <<fseek>> for a similar facility.
-
-RETURNS
-<<fgetpos>> returns <<0>> when successful. If <<fgetpos>> fails, the
-result is <<1>>. The reason for failure is indicated in <<errno>>:
-either <<ESPIPE>> (the stream identified by <[fp]> doesn't support
-repositioning) or <<EINVAL>> (invalid file position).
-
-PORTABILITY
-ANSI C requires <<fsetpos>>, but does not specify the nature of
-<<*<[pos]>>> beyond identifying it as written by <<fgetpos>>.
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
-<<lseek>>, <<read>>, <<sbrk>>, <<write>>.
-*/
-
-#include <stdio.h>
-
-int
-_DEFUN (fsetpos, (iop, pos),
- FILE * iop _AND
- _CONST fpos_t * pos)
-{
- int x = fseek (iop, *pos, SEEK_SET);
-
- if (x != 0)
- return 1;
- return 0;
-}
diff --git a/newlib/libc/stdio/ftell.c b/newlib/libc/stdio/ftell.c
deleted file mode 100644
index 5cd3987c0..000000000
--- a/newlib/libc/stdio/ftell.c
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
-FUNCTION
-<<ftell>>, <<ftello>>---return position in a stream or file
-
-INDEX
- ftell
-INDEX
- ftello
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- long ftell(FILE *<[fp]>);
- off_t ftello(FILE *<[fp]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- long ftell(<[fp]>)
- FILE *<[fp]>;
-
- off_t ftello(<[fp]>)
- FILE *<[fp]>;
-
-DESCRIPTION
-Objects of type <<FILE>> can have a ``position'' that records how much
-of the file your program has already read. Many of the <<stdio>> functions
-depend on this position, and many change it as a side effect.
-
-The result of <<ftell>>/<<ftello>> is the current position for a file
-identified by <[fp]>. If you record this result, you can later
-use it with <<fseek>>/<<fseeko>> to return the file to this
-position. The difference between <<ftell>> and <<ftello>> is that
-<<ftell>> returns <<long>> and <<ftello>> returns <<off_t>>.
-
-In the current implementation, <<ftell>>/<<ftello>> simply uses a character
-count to represent the file position; this is the same number that
-would be recorded by <<fgetpos>>.
-
-RETURNS
-<<ftell>>/<<ftello>> return the file position, if possible. If they cannot do
-this, they return <<-1L>>. Failure occurs on streams that do not support
-positioning; the global <<errno>> indicates this condition with the
-value <<ESPIPE>>.
-
-PORTABILITY
-<<ftell>> is required by the ANSI C standard, but the meaning of its
-result (when successful) is not specified beyond requiring that it be
-acceptable as an argument to <<fseek>>. In particular, other
-conforming C implementations may return a different result from
-<<ftell>> than what <<fgetpos>> records.
-
-<<ftello>> is defined by the Single Unix specification.
-
-No supporting OS subroutines are required.
-*/
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "%W% (Berkeley) %G%";
-#endif /* LIBC_SCCS and not lint */
-
-/*
- * ftell: return current offset.
- */
-
-#include <stdio.h>
-#include <errno.h>
-
-#include "local.h"
-
-long
-_DEFUN (ftell, (fp),
- register FILE * fp)
-{
- fpos_t pos;
-
- _flockfile(fp);
-
- /* Ensure stdio is set up. */
-
- CHECK_INIT (fp);
-
- if (fp->_seek == NULL)
- {
- fp->_data->_errno = ESPIPE;
- _funlockfile(fp);
- return -1L;
- }
-
- /* Find offset of underlying I/O object, then
- adjust for buffered bytes. */
- fflush(fp); /* may adjust seek offset on append stream */
- if (fp->_flags & __SOFF)
- pos = fp->_offset;
- else
- {
- pos = (*fp->_seek) (fp->_cookie, (fpos_t) 0, SEEK_CUR);
- if (pos == -1L)
- {
- _funlockfile(fp);
- return pos;
- }
- }
- if (fp->_flags & __SRD)
- {
- /*
- * Reading. Any unread characters (including
- * those from ungetc) cause the position to be
- * smaller than that in the underlying object.
- */
- pos -= fp->_r;
- if (HASUB (fp))
- pos -= fp->_ur;
- }
- else if (fp->_flags & __SWR && fp->_p != NULL)
- {
- /*
- * Writing. Any buffered characters cause the
- * position to be greater than that in the
- * underlying object.
- */
- pos += fp->_p - fp->_bf._base;
- }
-
- _funlockfile(fp);
- return pos;
-}
diff --git a/newlib/libc/stdio/ftello.c b/newlib/libc/stdio/ftello.c
deleted file mode 100644
index 474c78834..000000000
--- a/newlib/libc/stdio/ftello.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (c) 2002, Red Hat Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#include <stdio.h>
-
-off_t
-_DEFUN (ftello, (fp),
- register FILE * fp)
-{
- /* for now we simply cast since off_t should be long */
- return (off_t)ftell (fp);
-}
diff --git a/newlib/libc/stdio/fvwrite.c b/newlib/libc/stdio/fvwrite.c
deleted file mode 100644
index fe0e80111..000000000
--- a/newlib/libc/stdio/fvwrite.c
+++ /dev/null
@@ -1,232 +0,0 @@
-/* No user fns here. Pesch 15apr92. */
-
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include "local.h"
-#include "fvwrite.h"
-
-#define MIN(a, b) ((a) < (b) ? (a) : (b))
-#define COPY(n) (void) memmove((void *) fp->_p, (void *) p, (size_t) (n))
-
-#define GETIOV(extra_work) \
- while (len == 0) \
- { \
- extra_work; \
- p = iov->iov_base; \
- len = iov->iov_len; \
- iov++; \
- }
-
-/*
- * Write some memory regions. Return zero on success, EOF on error.
- *
- * This routine is large and unsightly, but most of the ugliness due
- * to the three different kinds of output buffering is handled here.
- */
-
-int
-__sfvwrite (fp, uio)
- register FILE *fp;
- register struct __suio *uio;
-{
- register size_t len;
- register _CONST char *p;
- register struct __siov *iov;
- register int w, s;
- char *nl;
- int nlknown, nldist;
-
- if ((len = uio->uio_resid) == 0)
- return 0;
-
- /* make sure we can write */
- if (cantwrite (fp))
- return EOF;
-
- iov = uio->uio_iov;
- len = 0;
-
-#ifdef __SCLE
- if (fp->_flags & __SCLE) /* text mode */
- {
- do
- {
- GETIOV (;);
- while (len > 0)
- {
- if (putc(*p, fp) == EOF)
- return EOF;
- p++;
- len--;
- uio->uio_resid--;
- }
- }
- while (uio->uio_resid > 0);
- return 0;
- }
-#endif
-
- if (fp->_flags & __SNBF)
- {
- /*
- * Unbuffered: write up to BUFSIZ bytes at a time.
- */
- do
- {
- GETIOV (;);
- w = (*fp->_write) (fp->_cookie, p, MIN (len, BUFSIZ));
- if (w <= 0)
- goto err;
- p += w;
- len -= w;
- }
- while ((uio->uio_resid -= w) != 0);
- }
- else if ((fp->_flags & __SLBF) == 0)
- {
- /*
- * Fully buffered: fill partially full buffer, if any,
- * and then flush. If there is no partial buffer, write
- * one _bf._size byte chunk directly (without copying).
- *
- * String output is a special case: write as many bytes
- * as fit, but pretend we wrote everything. This makes
- * snprintf() return the number of bytes needed, rather
- * than the number used, and avoids its write function
- * (so that the write function can be invalid). If
- * we are dealing with the asprintf routines, we will
- * dynamically increase the buffer size as needed.
- */
- do
- {
- GETIOV (;);
- w = fp->_w;
- if (fp->_flags & __SSTR)
- {
- if (len > w && fp->_flags & __SMBF)
- { /* must be asprintf family */
- unsigned char *ptr;
- int curpos = (fp->_p - fp->_bf._base);
- ptr = (unsigned char *)_realloc_r (fp->_data, fp->_bf._base,
- curpos + len);
- if (!ptr)
- goto err;
- fp->_bf._base = ptr;
- fp->_p = ptr + curpos;
- fp->_bf._size = curpos + len;
- w = fp->_w = len;
- }
- if (len < w)
- w = len;
- COPY (w); /* copy MIN(fp->_w,len), */
- fp->_w -= w;
- fp->_p += w;
- w = len; /* but pretend copied all */
- }
- else if (fp->_p > fp->_bf._base && len > w)
- {
- /* fill and flush */
- COPY (w);
- /* fp->_w -= w; *//* unneeded */
- fp->_p += w;
- if (fflush (fp))
- goto err;
- }
- else if (len >= (w = fp->_bf._size))
- {
- /* write directly */
- w = (*fp->_write) (fp->_cookie, p, w);
- if (w <= 0)
- goto err;
- }
- else
- {
- /* fill and done */
- w = len;
- COPY (w);
- fp->_w -= w;
- fp->_p += w;
- }
- p += w;
- len -= w;
- }
- while ((uio->uio_resid -= w) != 0);
- }
- else
- {
- /*
- * Line buffered: like fully buffered, but we
- * must check for newlines. Compute the distance
- * to the first newline (including the newline),
- * or `infinity' if there is none, then pretend
- * that the amount to write is MIN(len,nldist).
- */
- nlknown = 0;
- do
- {
- GETIOV (nlknown = 0);
- if (!nlknown)
- {
- nl = memchr ((void *) p, '\n', len);
- nldist = nl ? nl + 1 - p : len + 1;
- nlknown = 1;
- }
- s = MIN (len, nldist);
- w = fp->_w + fp->_bf._size;
- if (fp->_p > fp->_bf._base && s > w)
- {
- COPY (w);
- /* fp->_w -= w; */
- fp->_p += w;
- if (fflush (fp))
- goto err;
- }
- else if (s >= (w = fp->_bf._size))
- {
- w = (*fp->_write) (fp->_cookie, p, w);
- if (w <= 0)
- goto err;
- }
- else
- {
- w = s;
- COPY (w);
- fp->_w -= w;
- fp->_p += w;
- }
- if ((nldist -= w) == 0)
- {
- /* copied the newline: flush and forget */
- if (fflush (fp))
- goto err;
- nlknown = 0;
- }
- p += w;
- len -= w;
- }
- while ((uio->uio_resid -= w) != 0);
- }
- return 0;
-
-err:
- fp->_flags |= __SERR;
- return EOF;
-}
diff --git a/newlib/libc/stdio/fvwrite.h b/newlib/libc/stdio/fvwrite.h
deleted file mode 100644
index f27abdf81..000000000
--- a/newlib/libc/stdio/fvwrite.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/* %W% (Berkeley) %G% */
-#include <_ansi.h>
-
-/*
- * I/O descriptors for __sfvwrite().
- */
-struct __siov {
- _CONST _PTR iov_base;
- size_t iov_len;
-};
-struct __suio {
- struct __siov *uio_iov;
- int uio_iovcnt;
- int uio_resid;
-};
-
-
-extern int _EXFUN(__sfvwrite,(FILE *, struct __suio *));
-extern int _EXFUN(__swsetup,(FILE *));
-
-
diff --git a/newlib/libc/stdio/fwalk.c b/newlib/libc/stdio/fwalk.c
deleted file mode 100644
index 516283466..000000000
--- a/newlib/libc/stdio/fwalk.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* No user fns here. Pesch 15apr92. */
-
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "%W% (Berkeley) %G%";
-#endif /* LIBC_SCCS and not lint */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-#include "local.h"
-
-int
-_fwalk (ptr, function)
- struct _reent *ptr;
- register int (*function) ();
-{
- register FILE *fp;
- register int n, ret = 0;
- register struct _glue *g;
-
- for (g = &ptr->__sglue; g != NULL; g = g->_next)
- for (fp = g->_iobs, n = g->_niobs; --n >= 0; fp++)
- if (fp->_flags != 0)
- ret |= (*function) (fp);
- return ret;
-}
diff --git a/newlib/libc/stdio/fwrite.c b/newlib/libc/stdio/fwrite.c
deleted file mode 100644
index 1c91632b8..000000000
--- a/newlib/libc/stdio/fwrite.c
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
-FUNCTION
-<<fwrite>>---write array elements
-
-INDEX
- fwrite
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- size_t fwrite(const void *<[buf]>, size_t <[size]>,
- size_t <[count]>, FILE *<[fp]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- size_t fwrite(<[buf]>, <[size]>, <[count]>, <[fp]>)
- char *<[buf]>;
- size_t <[size]>;
- size_t <[count]>;
- FILE *<[fp]>;
-
-DESCRIPTION
-<<fwrite>> attempts to copy, starting from the memory location
-<[buf]>, <[count]> elements (each of size <[size]>) into the file or
-stream identified by <[fp]>. <<fwrite>> may copy fewer elements than
-<[count]> if an error intervenes.
-
-<<fwrite>> also advances the file position indicator (if any) for
-<[fp]> by the number of @emph{characters} actually written.
-
-RETURNS
-If <<fwrite>> succeeds in writing all the elements you specify, the
-result is the same as the argument <[count]>. In any event, the
-result is the number of complete elements that <<fwrite>> copied to
-the file.
-
-PORTABILITY
-ANSI C requires <<fwrite>>.
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
-<<lseek>>, <<read>>, <<sbrk>>, <<write>>.
-*/
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "%W% (Berkeley) %G%";
-#endif /* LIBC_SCCS and not lint */
-
-#include <stdio.h>
-#include <string.h>
-#if 0
-#include <sys/stdc.h>
-#endif
-#include "local.h"
-#if 1
-#include "fvwrite.h"
-#endif
-
-/*
- * Write `count' objects (each size `size') from memory to the given file.
- * Return the number of whole objects written.
- */
-
-size_t
-_DEFUN (fwrite, (buf, size, count, fp),
- _CONST _PTR buf _AND
- size_t size _AND
- size_t count _AND
- FILE * fp)
-{
- size_t n;
- struct __suio uio;
- struct __siov iov;
-
- iov.iov_base = buf;
- uio.uio_resid = iov.iov_len = n = count * size;
- uio.uio_iov = &iov;
- uio.uio_iovcnt = 1;
-
- /*
- * The usual case is success (__sfvwrite returns 0);
- * skip the divide if this happens, since divides are
- * generally slow and since this occurs whenever size==0.
- */
-
- _flockfile(fp);
- if (__sfvwrite (fp, &uio) == 0)
- {
- _funlockfile(fp);
- return count;
- }
- _funlockfile(fp);
- return (n - uio.uio_resid) / size;
-}
diff --git a/newlib/libc/stdio/getc.c b/newlib/libc/stdio/getc.c
deleted file mode 100644
index f7a2cac5a..000000000
--- a/newlib/libc/stdio/getc.c
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
-FUNCTION
-<<getc>>---read a character (macro)
-
-INDEX
- getc
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- int getc(FILE *<[fp]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- int getc(<[fp]>)
- FILE *<[fp]>;
-
-DESCRIPTION
-<<getc>> is a macro, defined in <<stdio.h>>. You can use <<getc>>
-to get the next single character from the file or stream
-identified by <[fp]>. As a side effect, <<getc>> advances the file's
-current position indicator.
-
-For a subroutine version of this macro, see <<fgetc>>.
-
-RETURNS
-The next character (read as an <<unsigned char>>, and cast to
-<<int>>), unless there is no more data, or the host system reports a
-read error; in either of these situations, <<getc>> returns <<EOF>>.
-
-You can distinguish the two situations that cause an <<EOF>> result by
-using the <<ferror>> and <<feof>> functions.
-
-PORTABILITY
-ANSI C requires <<getc>>; it suggests, but does not require, that
-<<getc>> be implemented as a macro. The standard explicitly permits
-macro implementations of <<getc>> to use the argument more than once;
-therefore, in a portable program, you should not use an expression
-with side effects as the <<getc>> argument.
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
-<<lseek>>, <<read>>, <<sbrk>>, <<write>>.
-*/
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "%W% (Berkeley) %G%";
-#endif /* LIBC_SCCS and not lint */
-
-#include <stdio.h>
-
-/*
- * A subroutine version of the macro getc.
- */
-
-#undef getc
-
-int
-getc (fp)
- register FILE *fp;
-{
- int result;
- _flockfile(fp);
- /* CHECK_INIT is called (eventually) by __srefill. */
- result = __sgetc (fp);
- _funlockfile(fp);
- return result;
-}
diff --git a/newlib/libc/stdio/getc_u.c b/newlib/libc/stdio/getc_u.c
deleted file mode 100644
index 877c7f8a0..000000000
--- a/newlib/libc/stdio/getc_u.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
-FUNCTION
-<<getc_unlocked>>---non-thread-safe version of getc (macro)
-
-INDEX
- getc_unlocked
-
-POSIX_SYNOPSIS
- #include <stdio.h>
- int getc_unlocked(FILE *<[fp]>);
-
-DESCRIPTION
-<<getc_unlocked>> is a non-thread-safe version of <<getc>> declared in
-<<stdio.h>>. <<getc_unlocked>> may only safely be used within a scope
-protected by flockfile() (or ftrylockfile()) and funlockfile(). These
-functions may safely be used in a multi-threaded program if and only
-if they are called while the invoking thread owns the ( FILE *)
-object, as is the case after a successful call to the flockfile() or
-ftrylockfile() functions. If threads are disabled, then
-<<getc_unlocked>> is equivalent to <<getc>>.
-
-RETURNS
-See <<getc>>.
-
-PORTABILITY
-POSIX 1003.1 requires <<getc_unlocked>>. <<getc_unlocked>> may be
-implemented as a macro, so arguments should not have side-effects.
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
-<<lseek>>, <<read>>, <<sbrk>>, <<write>>. */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "%W% (Berkeley) %G%";
-#endif /* LIBC_SCCS and not lint */
-
-#include <stdio.h>
-
-/*
- * A subroutine version of the macro getc_unlocked.
- */
-
-#undef getc_unlocked
-
-int
-getc_unlocked (fp)
- register FILE *fp;
-{
- /* CHECK_INIT is called (eventually) by __srefill. */
-
- return __sgetc (fp);
-}
diff --git a/newlib/libc/stdio/getchar.c b/newlib/libc/stdio/getchar.c
deleted file mode 100644
index 345932666..000000000
--- a/newlib/libc/stdio/getchar.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
-FUNCTION
-<<getchar>>---read a character (macro)
-
-INDEX
- getchar
-INDEX
- _getchar_r
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- int getchar(void);
-
- int _getchar_r(void *<[reent]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- int getchar();
-
- int _getchar_r(<[reent]>)
- char * <[reent]>;
-
-DESCRIPTION
-<<getchar>> is a macro, defined in <<stdio.h>>. You can use <<getchar>>
-to get the next single character from the standard input stream.
-As a side effect, <<getchar>> advances the standard input's
-current position indicator.
-
-The alternate function <<_getchar_r>> is a reentrant version. The
-extra argument <[reent]> is a pointer to a reentrancy structure.
-
-
-RETURNS
-The next character (read as an <<unsigned char>>, and cast to
-<<int>>), unless there is no more data, or the host system reports a
-read error; in either of these situations, <<getchar>> returns <<EOF>>.
-
-You can distinguish the two situations that cause an <<EOF>> result by
-using `<<ferror(stdin)>>' and `<<feof(stdin)>>'.
-
-PORTABILITY
-ANSI C requires <<getchar>>; it suggests, but does not require, that
-<<getchar>> be implemented as a macro.
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
-<<lseek>>, <<read>>, <<sbrk>>, <<write>>.
-*/
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "%W% (Berkeley) %G%";
-#endif /* LIBC_SCCS and not lint */
-
-/*
- * A subroutine version of the macro getchar.
- */
-
-#include <stdio.h>
-#include <reent.h>
-
-#include "local.h"
-
-#undef getchar
-
-int
-_getchar_r (f)
- struct _reent *f;
-{
- _REENT_SMALL_CHECK_INIT(_stdin_r (f));
- return getc (_stdin_r (f));
-}
-
-#ifndef _REENT_ONLY
-
-int
-getchar ()
-{
- /* CHECK_INIT is called (eventually) by __srefill. */
-
- return _getchar_r (_REENT);
-}
-
-#endif
diff --git a/newlib/libc/stdio/getchar_u.c b/newlib/libc/stdio/getchar_u.c
deleted file mode 100644
index f36f88810..000000000
--- a/newlib/libc/stdio/getchar_u.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
-FUNCTION
-<<getchar_unlocked>>---non-thread-safe version of getchar (macro)
-
-INDEX
- getchar_unlocked
-
-POSIX_SYNOPSIS
- #include <stdio.h>
- int getchar_unlocked();
-
-DESCRIPTION
-<<getchar_unlocked>> is a non-thread-safe version of <<getchar>>
-declared in <<stdio.h>>. <<getchar_unlocked>> may only safely be used
-within a scope protected by flockfile() (or ftrylockfile()) and
-funlockfile(). These functions may safely be used in a multi-threaded
-program if and only if they are called while the invoking thread owns
-the ( FILE *) object, as is the case after a successful call to the
-flockfile() or ftrylockfile() functions. If threads are disabled,
-then <<getchar_unlocked>> is equivalent to <<getchar>>.
-
-RETURNS
-See <<getchar>>.
-
-PORTABILITY
-POSIX 1003.1 requires <<getchar_unlocked>>. <<getchar_unlocked>> may
-be implemented as a macro.
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
-<<lseek>>, <<read>>, <<sbrk>>, <<write>>. */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "%W% (Berkeley) %G%";
-#endif /* LIBC_SCCS and not lint */
-
-/*
- * A subroutine version of the macro getchar_unlocked.
- */
-
-#include <stdio.h>
-#include <reent.h>
-
-#undef getchar_unlocked
-
-int
-_getchar_unlocked_r (f)
- struct _reent *f;
-{
- return getc_unlocked (_stdin_r (f));
-}
-
-#ifndef _REENT_ONLY
-
-int
-getchar_unlocked ()
-{
- /* CHECK_INIT is called (eventually) by __srefill. */
-
- return _getchar_unlocked_r (_REENT);
-}
-
-#endif
diff --git a/newlib/libc/stdio/getdelim.c b/newlib/libc/stdio/getdelim.c
deleted file mode 100644
index 64f60ee8c..000000000
--- a/newlib/libc/stdio/getdelim.c
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
-FUNCTION
-<<getdelim>>---read a line up to a specified line delimeter
-
-INDEX
- getdelim
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- int getdelim(char **<[bufptr]>, size_t *<[n]>,
- int <[delim]>, FILE *<[fp]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- int getdelim(<[bufptr]>, <[n]>, <[delim]>, <[fp]>)
- char **<[bufptr]>;
- size_t *<[n]>;
- int <[delim]>;
- FILE *<[fp]>;
-
-DESCRIPTION
-<<getdelim>> reads a file <[fp]> up to and possibly including a specified
-delimeter <[delim]>. The line is read into a buffer pointed to
-by <[bufptr]> and designated with size *<[n]>. If the buffer is
-not large enough, it will be dynamically grown by <<getdelim>>.
-As the buffer is grown, the pointer to the size <[n]> will be
-updated.
-
-RETURNS
-<<getdelim>> returns <<-1>> if no characters were successfully read,
-otherwise, it returns the number of bytes successfully read.
-at end of file, the result is nonzero.
-
-PORTABILITY
-<<getdelim>> is a glibc extension.
-
-No supporting OS subroutines are directly required.
-*/
-
-/* Copyright 2002, Red Hat Inc. - all rights reserved */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-#include "local.h"
-
-#define MIN_LINE_SIZE 4
-#define DEFAULT_LINE_SIZE 128
-
-ssize_t
-__getdelim (bufptr, n, delim, fp)
- char **bufptr;
- size_t *n;
- int delim;
- FILE *fp;
-{
- char *buf;
- char *ptr;
- size_t newsize, numbytes;
- int pos;
- int ch;
- int cont;
-
- if (fp == NULL || bufptr == NULL || n == NULL)
- {
- errno = EINVAL;
- return -1;
- }
-
- buf = *bufptr;
- if (buf == NULL || *n < MIN_LINE_SIZE)
- {
- buf = (char *)realloc (*bufptr, DEFAULT_LINE_SIZE);
- if (buf == NULL)
- {
- return -1;
- }
- *bufptr = buf;
- *n = DEFAULT_LINE_SIZE;
- }
-
- _flockfile(fp);
-
- CHECK_INIT(fp);
-
- numbytes = *n;
- ptr = buf;
-
- cont = 1;
-
- while (cont)
- {
- /* fill buffer - leaving room for nul-terminator */
- while (--numbytes > 0)
- {
- if ((ch = getc_unlocked (fp)) == EOF)
- {
- cont = 0;
- break;
- }
- else
- {
- *ptr++ = ch;
- if (ch == delim)
- {
- cont = 0;
- break;
- }
- }
- }
-
- if (cont)
- {
- /* Buffer is too small so reallocate a larger buffer. */
- pos = ptr - buf;
- newsize = (*n << 1);
- buf = realloc (buf, newsize);
- if (buf == NULL)
- {
- cont = 0;
- break;
- }
-
- /* After reallocating, continue in new buffer */
- *bufptr = buf;
- *n = newsize;
- ptr = buf + pos;
- numbytes = newsize - pos;
- }
- }
-
- _funlockfile (fp);
-
- /* if no input data, return failure */
- if (ptr == buf)
- return -1;
-
- /* otherwise, nul-terminate and return number of bytes read */
- *ptr = '\0';
- return (ssize_t)(ptr - buf);
-}
-
diff --git a/newlib/libc/stdio/getline.c b/newlib/libc/stdio/getline.c
deleted file mode 100644
index 741a7dc77..000000000
--- a/newlib/libc/stdio/getline.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
-FUNCTION
-<<getline>>---read a line from a file
-
-INDEX
- getline
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- ssize_t getline(char **<[bufptr]>, size_t *<[n]>, FILE *<[fp]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- ssize_t getline(<[bufptr]>, <[n]>, <[fp]>)
- char **<[bufptr]>;
- size_t *<[n]>;
- FILE *<[fp]>;
-
-DESCRIPTION
-<<getline>> reads a file <[fp]> up to and possibly including the
-newline character. The line is read into a buffer pointed to
-by <[bufptr]> and designated with size *<[n]>. If the buffer is
-not large enough, it will be dynamically grown by <<getdelim>>.
-As the buffer is grown, the pointer to the size <[n]> will be
-updated.
-
-<<getline>> is equivalent to getdelim(bufptr, n, '\n', fp);
-
-RETURNS
-<<getline>> returns <<-1>> if no characters were successfully read,
-otherwise, it returns the number of bytes successfully read.
-at end of file, the result is nonzero.
-
-PORTABILITY
-<<getline>> is a glibc extension.
-
-No supporting OS subroutines are directly required.
-*/
-
-/* Copyright 2002, Red Hat Inc. - all rights reserved */
-
-#include <stdio.h>
-
-extern ssize_t __getdelim (char **, size_t *, int, FILE *);
-
-ssize_t
-__getline (lptr, n, fp)
- char **lptr;
- size_t *n;
- FILE *fp;
-{
- return __getdelim (lptr, n, '\n', fp);
-}
-
diff --git a/newlib/libc/stdio/gets.c b/newlib/libc/stdio/gets.c
deleted file mode 100644
index 796100e32..000000000
--- a/newlib/libc/stdio/gets.c
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-
-/*
-
-FUNCTION
- <<gets>>---get character string (obsolete, use <<fgets>> instead)
-INDEX
- gets
-INDEX
- _gets_r
-
-ANSI_SYNOPSIS
- #include <stdio.h>
-
- char *gets(char *<[buf]>);
-
- char *_gets_r(void *<[reent]>, char *<[buf]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
-
- char *gets(<[buf]>)
- char *<[buf]>;
-
- char *_gets_r(<[reent]>, <[buf]>)
- char *<[reent]>;
- char *<[buf]>;
-
-DESCRIPTION
- Reads characters from standard input until a newline is found.
- The characters up to the newline are stored in <[buf]>. The
- newline is discarded, and the buffer is terminated with a 0.
-
- This is a @emph{dangerous} function, as it has no way of checking
- the amount of space available in <[buf]>. One of the attacks
- used by the Internet Worm of 1988 used this to overrun a
- buffer allocated on the stack of the finger daemon and
- overwrite the return address, causing the daemon to execute
- code downloaded into it over the connection.
-
- The alternate function <<_gets_r>> is a reentrant version. The extra
- argument <[reent]> is a pointer to a reentrancy structure.
-
-
-RETURNS
- <<gets>> returns the buffer passed to it, with the data filled
- in. If end of file occurs with some data already accumulated,
- the data is returned with no other indication. If end of file
- occurs with no data in the buffer, NULL is returned.
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
-<<lseek>>, <<read>>, <<sbrk>>, <<write>>.
-*/
-
-#include <stdio.h>
-
-char *
-_gets_r (ptr, buf)
- struct _reent *ptr;
- char *buf;
-{
- register int c;
- register char *s = buf;
-
- while ((c = _getchar_r (ptr)) != '\n')
- if (c == EOF)
- if (s == buf)
- return NULL;
- else
- break;
- else
- *s++ = c;
- *s = 0;
- return buf;
-}
-
-#ifndef _REENT_ONLY
-
-char *
-gets (buf)
- char *buf;
-{
- return _gets_r (_REENT, buf);
-}
-
-#endif
diff --git a/newlib/libc/stdio/getw.c b/newlib/libc/stdio/getw.c
deleted file mode 100644
index b6fd87313..000000000
--- a/newlib/libc/stdio/getw.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
-FUNCTION
-<<getw>>---read a word (int)
-
-INDEX
- getw
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- int getw(FILE *<[fp]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- int getw(<[fp]>)
- FILE *<[fp]>;
-
-DESCRIPTION
-<<getw>> is a function, defined in <<stdio.h>>. You can use <<getw>>
-to get the next word from the file or stream identified by <[fp]>. As
-a side effect, <<getw>> advances the file's current position
-indicator.
-
-RETURNS The next word (read as an <<int>>), unless there is no more
-data, or the host system reports a read error; in either of these
-situations, <<getw>> returns <<EOF>>. Since <<EOF>> is a valid
-<<int>>, you must use <<ferror>> or <<feof>> to distinguish these
-situations.
-
-PORTABILITY
-<<getw>> is a remnant of K&R C, it is not part of any ISO C Standard.
-<<fread>> should be used instead. In fact, this implementation of
-<<getw>> is based upon <<fread>>.
-
-Supporting OS subroutines required: <<fread>>. */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "%W% (Berkeley) %G%";
-#endif /* LIBC_SCCS and not lint */
-
-#include <stdio.h>
-
-int
-getw (fp)
- register FILE *fp;
-{
- int result;
- if (fread((char*)&result, sizeof(result), 1, fp) != 1)
- return EOF;
- return result;
-}
diff --git a/newlib/libc/stdio/iprintf.c b/newlib/libc/stdio/iprintf.c
deleted file mode 100644
index 5f6a57dc4..000000000
--- a/newlib/libc/stdio/iprintf.c
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
-FUNCTION
- <<iprintf>>---write formatted output (integer only)
-INDEX
- iprintf
-
-ANSI_SYNOPSIS
- #include <stdio.h>
-
- int iprintf(const char *<[format]>, ...);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
-
- int iprintf(<[format]> [, <[arg]>, ...])
- char *<[format]>;
-
-DESCRIPTION
-<<iprintf>> is a restricted version of <<printf>>: it has the same
-arguments and behavior, save that it cannot perform any floating-point
-formatting: the <<f>>, <<g>>, <<G>>, <<e>>, and <<F>> type specifiers
-are not recognized.
-
-RETURNS
- <<iprintf>> returns the number of bytes in the output string,
- save that the concluding <<NULL>> is not counted.
- <<iprintf>> returns when the end of the format string is
- encountered. If an error occurs, <<iprintf>>
- returns <<EOF>>.
-
-PORTABILITY
-<<iprintf>> is not required by ANSI C.
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
-<<lseek>>, <<read>>, <<sbrk>>, <<write>>.
-*/
-
-#include <_ansi.h>
-#include <stdio.h>
-
-#include "local.h"
-
-#ifndef _REENT_ONLY
-
-#ifdef _HAVE_STDC
-
-#include <stdarg.h>
-
-int
-iprintf (const char *fmt,...)
-{
- int ret;
- va_list ap;
-
- _REENT_SMALL_CHECK_INIT(_stdout_r (_REENT));
- va_start (ap, fmt);
- _stdout_r (_REENT)->_data = _REENT;
- ret = vfiprintf (stdout, fmt, ap);
- va_end (ap);
- return ret;
-}
-
-#else
-
-#include <varargs.h>
-
-int
-iprintf (fmt, va_alist)
- char *fmt;
- va_dcl
-{
- int ret;
- va_list ap;
-
- _REENT_SMALL_CHECK_INIT(_stdout_r (_REENT));
- va_start (ap);
- _stdout_r (_REENT)->_data = _REENT;
- ret = vfiprintf (stdout, fmt, ap);
- va_end (ap);
- return ret;
-}
-
-#endif /* ! _HAVE_STDC */
-#endif /* ! _REENT_ONLY */
-
-#ifdef _HAVE_STDC
-
-#include <stdarg.h>
-
-int
-_iprintf_r (struct _reent *ptr, const char *fmt, ...)
-{
- int ret;
- va_list ap;
-
- _REENT_SMALL_CHECK_INIT(_stdout_r (ptr));
- va_start (ap, fmt);
- ret = vfiprintf (_stdout_r (ptr), fmt, ap);
- va_end (ap);
- return ret;
-}
-
-#else
-
-#include <varargs.h>
-
-int
-_iprintf_r (data, fmt, va_alist)
- char *data;
- char *fmt;
- va_dcl
-{
- int ret;
- struct _reent *ptr = data;
- va_list ap;
-
- _REENT_SMALL_CHECK_INIT(_stdout_r (ptr));
- va_start (ap);
- ret = vfiprintf (_stdout_r (ptr), fmt, ap);
- va_end (ap);
- return ret;
-}
-
-#endif
diff --git a/newlib/libc/stdio/local.h b/newlib/libc/stdio/local.h
deleted file mode 100644
index 8b55503c8..000000000
--- a/newlib/libc/stdio/local.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * %W% (UofMD/Berkeley) %G%
- */
-
-/*
- * Information local to this implementation of stdio,
- * in particular, macros and private variables.
- */
-
-#include <_ansi.h>
-#include <stdarg.h>
-#include <reent.h>
-#include <unistd.h>
-
-extern int _EXFUN(__svfscanf_r,(struct _reent *,FILE *, _CONST char *,va_list));
-extern FILE *_EXFUN(__sfp,(struct _reent *));
-extern int _EXFUN(__sflags,(struct _reent *,_CONST char*, int*));
-extern int _EXFUN(__srefill,(FILE *));
-extern _READ_WRITE_RETURN_TYPE _EXFUN(__sread,(void *, char *, int));
-extern _READ_WRITE_RETURN_TYPE _EXFUN(__swrite,(void *, char const *, int));
-extern fpos_t _EXFUN(__sseek,(void *, fpos_t, int));
-extern int _EXFUN(__sclose,(void *));
-extern int _EXFUN(__stextmode,(int));
-extern void _EXFUN(__sinit,(struct _reent *));
-extern void _EXFUN(_cleanup_r,(struct _reent *));
-extern void _EXFUN(__smakebuf,(FILE *));
-extern int _EXFUN(_fwalk,(struct _reent *, int (*)(FILE *)));
-struct _glue * _EXFUN(__sfmoreglue,(struct _reent *,int n));
-extern int _EXFUN(__srefill,(FILE *fp));
-
-/* Called by the main entry point fns to ensure stdio has been initialized. */
-
-#define CHECK_INIT(fp) \
- do \
- { \
- if ((fp)->_data == 0) \
- (fp)->_data = _REENT; \
- if (!(fp)->_data->__sdidinit) \
- __sinit ((fp)->_data); \
- } \
- while (0)
-
-/* Return true iff the given FILE cannot be written now. */
-
-#define cantwrite(fp) \
- ((((fp)->_flags & __SWR) == 0 || (fp)->_bf._base == NULL) && \
- __swsetup(fp))
-
-/* Test whether the given stdio file has an active ungetc buffer;
- release such a buffer, without restoring ordinary unread data. */
-
-#define HASUB(fp) ((fp)->_ub._base != NULL)
-#define FREEUB(fp) { \
- if ((fp)->_ub._base != (fp)->_ubuf) \
- _free_r(fp->_data, (char *)(fp)->_ub._base); \
- (fp)->_ub._base = NULL; \
-}
-
-/* Test for an fgetline() buffer. */
-
-#define HASLB(fp) ((fp)->_lb._base != NULL)
-#define FREELB(fp) { _free_r(fp->_data,(char *)(fp)->_lb._base); (fp)->_lb._base = NULL; }
-
-/* WARNING: _dcvt is defined in the stdlib directory, not here! */
-
-char *_EXFUN(_dcvt,(struct _reent *, char *, double, int, int, char, int));
-char *_EXFUN(_sicvt,(char *, short, char));
-char *_EXFUN(_icvt,(char *, int, char));
-char *_EXFUN(_licvt,(char *, long, char));
-#ifdef __GNUC__
-char *_EXFUN(_llicvt,(char *, long long, char));
-#endif
-
-#define CVT_BUF_SIZE 128
-
-#define NDYNAMIC 4 /* add four more whenever necessary */
diff --git a/newlib/libc/stdio/makebuf.c b/newlib/libc/stdio/makebuf.c
deleted file mode 100644
index 4a09c4d50..000000000
--- a/newlib/libc/stdio/makebuf.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/* No user fns here. Pesch 15apr92. */
-
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <sys/unistd.h>
-
-#include "local.h"
-
-/*
- * Allocate a file buffer, or switch to unbuffered I/O.
- * Per the ANSI C standard, ALL tty devices default to line buffered.
- *
- * As a side effect, we set __SOPT or __SNPT (en/dis-able fseek
- * optimization) right after the _fstat() that finds the buffer size.
- */
-
-void
-__smakebuf (fp)
- register FILE *fp;
-{
- register size_t size, couldbetty;
- register _PTR p;
- struct stat st;
-
- if (fp->_flags & __SNBF)
- {
- fp->_bf._base = fp->_p = fp->_nbuf;
- fp->_bf._size = 1;
- return;
- }
- if (fp->_file < 0 || _fstat_r (fp->_data, fp->_file, &st) < 0)
- {
- couldbetty = 0;
- size = BUFSIZ;
- /* do not try to optimise fseek() */
- fp->_flags |= __SNPT;
- }
- else
- {
- couldbetty = (st.st_mode & S_IFMT) == S_IFCHR;
-#ifdef HAVE_BLKSIZE
- size = st.st_blksize <= 0 ? BUFSIZ : st.st_blksize;
-#else
- size = BUFSIZ;
-#endif
- /*
- * Optimize fseek() only if it is a regular file.
- * (The test for __sseek is mainly paranoia.)
- */
- if ((st.st_mode & S_IFMT) == S_IFREG && fp->_seek == __sseek)
- {
- fp->_flags |= __SOPT;
-#ifdef HAVE_BLKSIZE
- fp->_blksize = st.st_blksize;
-#else
- fp->_blksize = 1024;
-#endif
- }
- else
- fp->_flags |= __SNPT;
- }
- if ((p = _malloc_r (fp->_data, size)) == NULL)
- {
- fp->_flags |= __SNBF;
- fp->_bf._base = fp->_p = fp->_nbuf;
- fp->_bf._size = 1;
- }
- else
- {
- fp->_data->__cleanup = _cleanup_r;
- fp->_flags |= __SMBF;
- fp->_bf._base = fp->_p = (unsigned char *) p;
- fp->_bf._size = size;
- if (couldbetty && isatty (fp->_file))
- fp->_flags |= __SLBF;
- }
-}
diff --git a/newlib/libc/stdio/mktemp.c b/newlib/libc/stdio/mktemp.c
deleted file mode 100644
index f3eaa09ce..000000000
--- a/newlib/libc/stdio/mktemp.c
+++ /dev/null
@@ -1,220 +0,0 @@
-/* This is file MKTEMP.C */
-/* This file may have been modified by DJ Delorie (Jan 1991). If so,
-** these modifications are Copyright (C) 1991 DJ Delorie.
-*/
-
-/*
- * Copyright (c) 1987 Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that: (1) source distributions retain this entire copyright
- * notice and comment, and (2) distributions including binaries display
- * the following acknowledgement: ``This product includes software
- * developed by the University of California, Berkeley and its contributors''
- * in the documentation or other materials provided with the distribution
- * and in all advertising materials mentioning features or use of this
- * software. Neither the name of the University nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
-FUNCTION
-<<mktemp>>, <<mkstemp>>---generate unused file name
-
-INDEX
- mktemp
-INDEX
- mkstemp
-INDEX
- _mktemp_r
-INDEX
- _mkstemp_r
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- char *mktemp(char *<[path]>);
- int mkstemp(char *<[path]>);
-
- char *_mktemp_r(void *<[reent]>, char *<[path]>);
- int *_mkstemp_r(void *<[reent]>, char *<[path]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- char *mktemp(<[path]>)
- char *<[path]>;
-
- int mkstemp(<[path]>)
- char *<[path]>;
-
- char *_mktemp_r(<[reent]>, <[path]>)
- char *<[reent]>;
- char *<[path]>;
-
- int _mkstemp_r(<[reent]>, <[path]>)
- char *<[reent]>;
- char *<[path]>;
-
-DESCRIPTION
-<<mktemp>> and <<mkstemp>> attempt to generate a file name that is not
-yet in use for any existing file. <<mkstemp>> creates the file and
-opens it for reading and writing; <<mktemp>> simply generates the file name.
-
-You supply a simple pattern for the generated file name, as the string
-at <[path]>. The pattern should be a valid filename (including path
-information if you wish) ending with some number of `<<X>>'
-characters. The generated filename will match the leading part of the
-name you supply, with the trailing `<<X>>' characters replaced by some
-combination of digits and letters.
-
-The alternate functions <<_mktemp_r>> and <<_mkstemp_r>> are reentrant
-versions. The extra argument <[reent]> is a pointer to a reentrancy
-structure.
-
-RETURNS
-<<mktemp>> returns the pointer <[path]> to the modified string
-representing an unused filename, unless it could not generate one, or
-the pattern you provided is not suitable for a filename; in that case,
-it returns <<NULL>>.
-
-<<mkstemp>> returns a file descriptor to the newly created file,
-unless it could not generate an unused filename, or the pattern you
-provided is not suitable for a filename; in that case, it returns
-<<-1>>.
-
-PORTABILITY
-ANSI C does not require either <<mktemp>> or <<mkstemp>>; the System
-V Interface Definition requires <<mktemp>> as of Issue 2.
-
-Supporting OS subroutines required: <<getpid>>, <<open>>, <<stat>>.
-*/
-
-#include <sys/types.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-#include <errno.h>
-#include <stdio.h>
-#include <ctype.h>
-#include <reent.h>
-
-static int
-_DEFUN (_gettemp, (ptr, path, doopen),
- struct _reent *ptr _AND
- char *path _AND
- register int *doopen)
-{
- register char *start, *trv;
- struct stat sbuf;
- unsigned int pid;
-
- pid = _getpid_r (ptr);
- for (trv = path; *trv; ++trv) /* extra X's get set to 0's */
- continue;
- while (*--trv == 'X')
- {
- *trv = (pid % 10) + '0';
- pid /= 10;
- }
-
- /*
- * Check the target directory; if you have six X's and it
- * doesn't exist this runs for a *very* long time.
- */
-
- for (start = trv + 1;; --trv)
- {
- if (trv <= path)
- break;
- if (*trv == '/')
- {
- *trv = '\0';
- if (_stat_r (ptr, path, &sbuf))
- return (0);
- if (!(sbuf.st_mode & S_IFDIR))
- {
- ptr->_errno = ENOTDIR;
- return (0);
- }
- *trv = '/';
- break;
- }
- }
-
- for (;;)
- {
- if (doopen)
- {
- if ((*doopen = _open_r (ptr, path, O_CREAT | O_EXCL | O_RDWR, 0600))
- >= 0)
- return 1;
-#if defined(__CYGWIN32__) || defined(__CYGWIN__)
- if (ptr->_errno != EEXIST && ptr->_errno != EACCES)
-#else
- if (ptr->_errno != EEXIST)
-#endif
- return 0;
- }
- else if (_stat_r (ptr, path, &sbuf))
- return (ptr->_errno == ENOENT ? 1 : 0);
-
- /* tricky little algorithm for backward compatibility */
- for (trv = start;;)
- {
- if (!*trv)
- return 0;
- if (*trv == 'z')
- *trv++ = 'a';
- else
- {
- if (isdigit (*trv))
- *trv = 'a';
- else
- ++ * trv;
- break;
- }
- }
- }
- /*NOTREACHED*/
-}
-
-int
-_DEFUN (_mkstemp_r, (ptr, path),
- struct _reent *ptr _AND
- char *path)
-{
- int fd;
-
- return (_gettemp (ptr, path, &fd) ? fd : -1);
-}
-
-char *
-_DEFUN (_mktemp_r, (ptr, path),
- struct _reent *ptr _AND
- char *path)
-{
- return (_gettemp (ptr, path, (int *) NULL) ? path : (char *) NULL);
-}
-
-#ifndef _REENT_ONLY
-
-int
-_DEFUN (mkstemp, (path),
- char *path)
-{
- int fd;
-
- return (_gettemp (_REENT, path, &fd) ? fd : -1);
-}
-
-char *
-_DEFUN (mktemp, (path),
- char *path)
-{
- return (_gettemp (_REENT, path, (int *) NULL) ? path : (char *) NULL);
-}
-
-#endif /* ! defined (_REENT_ONLY) */
diff --git a/newlib/libc/stdio/perror.c b/newlib/libc/stdio/perror.c
deleted file mode 100644
index 19354c112..000000000
--- a/newlib/libc/stdio/perror.c
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
-FUNCTION
-<<perror>>---print an error message on standard error
-
-INDEX
- perror
-INDEX
- _perror_r
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- void perror(char *<[prefix]>);
-
- void _perror_r(void *<[reent]>, char *<[prefix]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- void perror(<[prefix]>)
- char *<[prefix]>;
-
- void _perror_r(<[reent]>, <[prefix]>)
- char *<[reent]>;
- char *<[prefix]>;
-
-DESCRIPTION
-Use <<perror>> to print (on standard error) an error message
-corresponding to the current value of the global variable <<errno>>.
-Unless you use <<NULL>> as the value of the argument <[prefix]>, the
-error message will begin with the string at <[prefix]>, followed by a
-colon and a space (<<: >>). The remainder of the error message is one
-of the strings described for <<strerror>>.
-
-The alternate function <<_perror_r>> is a reentrant version. The
-extra argument <[reent]> is a pointer to a reentrancy structure.
-
-
-RETURNS
-<<perror>> returns no result.
-
-PORTABILITY
-ANSI C requires <<perror>>, but the strings issued vary from one
-implementation to another.
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
-<<lseek>>, <<read>>, <<sbrk>>, <<write>>.
-*/
-
-#include <stddef.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "local.h"
-
-void
-_DEFUN (_perror_r, (ptr, s),
- struct _reent *ptr _AND
- _CONST char *s)
-{
- char *error;
-
- _REENT_SMALL_CHECK_INIT(_stderr_r (ptr));
- if (s != NULL && *s != '\0')
- {
- fputs (s, _stderr_r (ptr));
- fputs (": ", _stderr_r (ptr));
- }
-
- if ((error = strerror (ptr->_errno)) != NULL)
- fputs (error, _stderr_r (ptr));
-
- fputc ('\n', _stderr_r (ptr));
-}
-
-#ifndef _REENT_ONLY
-
-void
-_DEFUN (perror, (s),
- _CONST char *s)
-{
- _perror_r (_REENT, s);
-}
-
-#endif
diff --git a/newlib/libc/stdio/printf.c b/newlib/libc/stdio/printf.c
deleted file mode 100644
index e8ec5b475..000000000
--- a/newlib/libc/stdio/printf.c
+++ /dev/null
@@ -1,89 +0,0 @@
-
-#include <_ansi.h>
-#include <stdio.h>
-
-#include "local.h"
-
-#ifdef _HAVE_STDC
-
-#include <stdarg.h>
-
-int
-_printf_r (struct _reent *ptr, const char *fmt, ...)
-{
- int ret;
- va_list ap;
-
- _REENT_SMALL_CHECK_INIT(_stdout_r (ptr));
- va_start (ap, fmt);
- ret = _vfprintf_r (ptr, _stdout_r (ptr), fmt, ap);
- va_end (ap);
- return ret;
-}
-
-#else
-
-#include <varargs.h>
-
-int
-_printf_r (ptr, fmt, va_alist)
- struct _reent *ptr;
- char *fmt;
- va_dcl
-{
- int ret;
- va_list ap;
-
- _REENT_SMALL_CHECK_INIT(_stdout_r (ptr));
- va_start (ap);
- ret = _vfprintf_r (ptr, _stdout_r (ptr), fmt, ap);
- va_end (ap);
- return ret;
-}
-
-#endif
-
-
-#ifndef _REENT_ONLY
-
-#ifdef _HAVE_STDC
-
-#include <stdarg.h>
-
-int
-printf (const char *fmt, ...)
-{
- int ret;
- va_list ap;
-
- _REENT_SMALL_CHECK_INIT(_stdout_r (_REENT));
- va_start (ap, fmt);
- _stdout_r (_REENT)->_data = _REENT;
- ret = vfprintf (_stdout_r (_REENT), fmt, ap);
- va_end (ap);
- return ret;
-}
-
-#else
-
-#include <varargs.h>
-
-int
-printf (fmt, va_alist)
- char *fmt;
- va_dcl
-{
- int ret;
- va_list ap;
-
- _REENT_SMALL_CHECK_INIT(_stdout_r (_REENT));
- va_start (ap);
- _stdout_r (_REENT)->_data = _REENT;
- ret = vfprintf (_stdout_r (_REENT), fmt, ap);
- va_end (ap);
- return ret;
-}
-
-#endif /* ! _HAVE_STDC */
-
-#endif /* ! _REENT_ONLY */
diff --git a/newlib/libc/stdio/putc.c b/newlib/libc/stdio/putc.c
deleted file mode 100644
index 7e53868ab..000000000
--- a/newlib/libc/stdio/putc.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
-FUNCTION
-<<putc>>---write a character (macro)
-
-INDEX
- putc
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- int putc(int <[ch]>, FILE *<[fp]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- int putc(<[ch]>, <[fp]>)
- int <[ch]>;
- FILE *<[fp]>;
-
-DESCRIPTION
-<<putc>> is a macro, defined in <<stdio.h>>. <<putc>>
-writes the argument <[ch]> to the file or stream identified by
-<[fp]>, after converting it from an <<int>> to an <<unsigned char>>.
-
-If the file was opened with append mode (or if the stream cannot
-support positioning), then the new character goes at the end of the
-file or stream. Otherwise, the new character is written at the
-current value of the position indicator, and the position indicator
-advances by one.
-
-For a subroutine version of this macro, see <<fputc>>.
-
-RETURNS
-If successful, <<putc>> returns its argument <[ch]>. If an error
-intervenes, the result is <<EOF>>. You can use `<<ferror(<[fp]>)>>' to
-query for errors.
-
-PORTABILITY
-ANSI C requires <<putc>>; it suggests, but does not require, that
-<<putc>> be implemented as a macro. The standard explicitly permits
-macro implementations of <<putc>> to use the <[fp]> argument more than once;
-therefore, in a portable program, you should not use an expression
-with side effects as this argument.
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
-<<lseek>>, <<read>>, <<sbrk>>, <<write>>.
-*/
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "%W% (Berkeley) %G%";
-#endif /* LIBC_SCCS and not lint */
-
-#include <stdio.h>
-
-/*
- * A subroutine version of the macro putc.
- */
-
-#undef putc
-
-int
-putc (c, fp)
- int c;
- register FILE *fp;
-{
- int result;
- _flockfile(fp);
- /* CHECK_INIT is (eventually) called by __swbuf. */
- result = __sputc (c, fp);
- _funlockfile(fp);
- return result;
-}
diff --git a/newlib/libc/stdio/putc_u.c b/newlib/libc/stdio/putc_u.c
deleted file mode 100644
index a3c0e0864..000000000
--- a/newlib/libc/stdio/putc_u.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
-FUNCTION
-<<putc_unlocked>>---non-thread-safe version of putc (macro)
-
-INDEX
- putc_unlocked
-
-POSIX_SYNOPSIS
- #include <stdio.h>
- int putc_unlocked(int <[ch]>, FILE *<[fp]>);
-
-DESCRIPTION
-<<putc_unlocked>> is a non-thread-safe version of <<putc>> declared in
-<<stdio.h>>. <<putc_unlocked>> may only safely be used within a scope
-protected by flockfile() (or ftrylockfile()) and funlockfile(). These
-functions may safely be used in a multi-threaded program if and only
-if they are called while the invoking thread owns the ( FILE *)
-object, as is the case after a successful call to the flockfile() or
-ftrylockfile() functions. If threads are disabled, then
-<<putc_unlocked>> is equivalent to <<putc>>.
-
-RETURNS
-See <<putc>>.
-
-PORTABILITY
-POSIX 1003.1 requires <<putc_unlocked>>. <<putc_unlocked>> may be
-implemented as a macro, so arguments should not have side-effects.
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
-<<lseek>>, <<read>>, <<sbrk>>, <<write>>. */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "%W% (Berkeley) %G%";
-#endif /* LIBC_SCCS and not lint */
-
-#include <stdio.h>
-
-/*
- * A subroutine version of the macro putc_unlocked.
- */
-
-#undef putc_unlocked
-
-int
-putc_unlocked (c, fp)
- int c;
- register FILE *fp;
-{
- /* CHECK_INIT is (eventually) called by __swbuf. */
-
- return __sputc (c, fp);
-}
diff --git a/newlib/libc/stdio/putchar.c b/newlib/libc/stdio/putchar.c
deleted file mode 100644
index ff207f3d0..000000000
--- a/newlib/libc/stdio/putchar.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
-FUNCTION
-<<putchar>>---write a character (macro)
-
-INDEX
- putchar
-INDEX
- _putchar_r
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- int putchar(int <[ch]>);
-
- int _putchar_r(void *<[reent]>, int <[ch]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- int putchar(<[ch]>)
- int <[ch]>;
-
- int _putchar_r(<[reent]>, <[ch]>)
- char *<[reent]>;
- int <[ch]>;
-
-DESCRIPTION
-<<putchar>> is a macro, defined in <<stdio.h>>. <<putchar>>
-writes its argument to the standard output stream,
-after converting it from an <<int>> to an <<unsigned char>>.
-
-The alternate function <<_putchar_r>> is a reentrant version. The
-extra argument <[reent]> is a pointer to a reentrancy structure.
-
-RETURNS
-If successful, <<putchar>> returns its argument <[ch]>. If an error
-intervenes, the result is <<EOF>>. You can use `<<ferror(stdin)>>' to
-query for errors.
-
-PORTABILITY
-ANSI C requires <<putchar>>; it suggests, but does not require, that
-<<putchar>> be implemented as a macro.
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
-<<lseek>>, <<read>>, <<sbrk>>, <<write>>.
-*/
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "%W% (Berkeley) %G%";
-#endif /* LIBC_SCCS and not lint */
-
-/*
- * A subroutine version of the macro putchar.
- */
-
-#include <stdio.h>
-
-#include "local.h"
-
-#undef putchar
-
-int
-_putchar_r (ptr, c)
- struct _reent *ptr;
- int c;
-{
- _REENT_SMALL_CHECK_INIT(_stdout_r (ptr));
- return putc (c, _stdout_r (ptr));
-}
-
-#ifndef _REENT_ONLY
-
-int
-putchar (c)
- int c;
-{
- /* CHECK_INIT is (eventually) called by __swbuf. */
-
- return _putchar_r (_REENT, c);
-}
-
-#endif
diff --git a/newlib/libc/stdio/putchar_u.c b/newlib/libc/stdio/putchar_u.c
deleted file mode 100644
index 3542fe443..000000000
--- a/newlib/libc/stdio/putchar_u.c
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
-FUNCTION
-<<putchar_unlocked>>---non-thread-safe version of putchar (macro)
-
-INDEX
- putchar_unlocked
-
-POSIX_SYNOPSIS
- #include <stdio.h>
- int putchar_unlocked(int <[ch]>);
-
-DESCRIPTION
-<<putchar_unlocked>> is a non-thread-safe version of <<putchar>>
-declared in <<stdio.h>>. <<putchar_unlocked>> may only safely be used
-within a scope protected by flockfile() (or ftrylockfile()) and
-funlockfile(). These functions may safely be used in a multi-threaded
-program if and only if they are called while the invoking thread owns
-the ( FILE *) object, as is the case after a successful call to the
-flockfile() or ftrylockfile() functions. If threads are disabled,
-then <<putchar_unlocked>> is equivalent to <<putchar>>.
-
-RETURNS
-See <<putchar>>.
-
-PORTABILITY
-POSIX 1003.1 requires <<putchar_unlocked>>. <<putchar_unlocked>> may
-be implemented as a macro.
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
-<<lseek>>, <<read>>, <<sbrk>>, <<write>>. */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "%W% (Berkeley) %G%";
-#endif /* LIBC_SCCS and not lint */
-
-/*
- * A subroutine version of the macro putchar_unlocked.
- */
-
-#include <stdio.h>
-
-#undef putchar_unlocked
-
-int
-_putchar_unlocked_r (ptr, c)
- struct _reent *ptr;
- int c;
-{
- return putc_unlocked (c, _stdout_r (ptr));
-}
-
-#ifndef _REENT_ONLY
-
-int
-putchar_unlocked (c)
- int c;
-{
- /* CHECK_INIT is (eventually) called by __swbuf. */
-
- _putchar_unlocked_r (_REENT, c);
-}
-
-#endif
diff --git a/newlib/libc/stdio/puts.c b/newlib/libc/stdio/puts.c
deleted file mode 100644
index e270199d2..000000000
--- a/newlib/libc/stdio/puts.c
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
-FUNCTION
-<<puts>>---write a character string
-
-INDEX
- puts
-INDEX
- _puts_r
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- int puts(const char *<[s]>);
-
- int _puts_r(void *<[reent]>, const char *<[s]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- int puts(<[s]>)
- char *<[s]>;
-
- int _puts_r(<[reent]>, <[s]>)
- char *<[reent]>;
- char *<[s]>;
-
-DESCRIPTION
-<<puts>> writes the string at <[s]> (followed by a newline, instead of
-the trailing null) to the standard output stream.
-
-The alternate function <<_puts_r>> is a reentrant version. The extra
-argument <[reent]> is a pointer to a reentrancy structure.
-
-RETURNS
-If successful, the result is a nonnegative integer; otherwise, the
-result is <<EOF>>.
-
-PORTABILITY
-ANSI C requires <<puts>>, but does not specify that the result on
-success must be <<0>>; any non-negative value is permitted.
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
-<<lseek>>, <<read>>, <<sbrk>>, <<write>>. */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "%W% (Berkeley) %G%";
-#endif /* LIBC_SCCS and not lint */
-
-#include <stdio.h>
-#include <string.h>
-
-#include "fvwrite.h"
-#include "local.h"
-
-/*
- * Write the given string to stdout, appending a newline.
- */
-
-int
-_DEFUN (_puts_r, (ptr, s),
- struct _reent *ptr _AND
- _CONST char * s)
-{
- size_t c = strlen (s);
- struct __suio uio;
- struct __siov iov[2];
-
- iov[0].iov_base = s;
- iov[0].iov_len = c;
- iov[1].iov_base = "\n";
- iov[1].iov_len = 1;
- uio.uio_resid = c + 1;
- uio.uio_iov = &iov[0];
- uio.uio_iovcnt = 2;
-
- _REENT_SMALL_CHECK_INIT(_stdout_r (ptr));
- return (__sfvwrite (_stdout_r (ptr), &uio) ? EOF : '\n');
-}
-
-#ifndef _REENT_ONLY
-
-int
-_DEFUN (puts, (s),
- char _CONST * s)
-{
- return _puts_r (_REENT, s);
-}
-
-#endif
diff --git a/newlib/libc/stdio/putw.c b/newlib/libc/stdio/putw.c
deleted file mode 100644
index 19f4abc01..000000000
--- a/newlib/libc/stdio/putw.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
-FUNCTION
-<<putw>>---write a word (int)
-
-INDEX
- putw
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- int putw(int <[w]>, FILE *<[fp]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- int putw(<w>, <[fp]>)
- int <w>;
- FILE *<[fp]>;
-
-DESCRIPTION
-<<putw>> is a function, defined in <<stdio.h>>. You can use <<putw>>
-to write a word to the file or stream identified by <[fp]>. As a side
-effect, <<putw>> advances the file's current position indicator.
-
-RETURNS Zero on success, <<EOF>> on failure.
-
-PORTABILITY
-<<putw>> is a remnant of K&R C, it is not part of any ISO C Standard.
-<<fwrite>> should be used instead. In fact, this implementation of
-<<putw>> is based upon <<fwrite>>.
-
-Supporting OS subroutines required: <<fwrite>>. */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "%W% (Berkeley) %G%";
-#endif /* LIBC_SCCS and not lint */
-
-#include <stdio.h>
-
-int
-putw (w, fp)
- int w;
- register FILE *fp;
-{
- if (fwrite((const char*)&w, sizeof(w), 1, fp) != 1)
- return EOF;
- return 0;
-}
diff --git a/newlib/libc/stdio/refill.c b/newlib/libc/stdio/refill.c
deleted file mode 100644
index ca48a4500..000000000
--- a/newlib/libc/stdio/refill.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/* No user fns here. Pesch 15apr92. */
-
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#include <stdio.h>
-#include "local.h"
-#include <stdlib.h>
-
-static int
-lflush (fp)
- FILE *fp;
-{
- if ((fp->_flags & (__SLBF | __SWR)) == (__SLBF | __SWR))
- return fflush (fp);
- return 0;
-}
-
-/*
- * Refill a stdio buffer.
- * Return EOF on eof or error, 0 otherwise.
- */
-
-int
-_DEFUN (__srefill, (fp),
- register FILE * fp)
-{
- /* make sure stdio is set up */
-
- CHECK_INIT (fp);
-
- fp->_r = 0; /* largely a convenience for callers */
-
- /* SysV does not make this test; take it out for compatibility */
- if (fp->_flags & __SEOF)
- return EOF;
-
- /* if not already reading, have to be reading and writing */
- if ((fp->_flags & __SRD) == 0)
- {
- if ((fp->_flags & __SRW) == 0)
- return EOF;
- /* switch to reading */
- if (fp->_flags & __SWR)
- {
- if (fflush (fp))
- return EOF;
- fp->_flags &= ~__SWR;
- fp->_w = 0;
- fp->_lbfsize = 0;
- }
- fp->_flags |= __SRD;
- }
- else
- {
- /*
- * We were reading. If there is an ungetc buffer,
- * we must have been reading from that. Drop it,
- * restoring the previous buffer (if any). If there
- * is anything in that buffer, return.
- */
- if (HASUB (fp))
- {
- FREEUB (fp);
- if ((fp->_r = fp->_ur) != 0)
- {
- fp->_p = fp->_up;
- return 0;
- }
- }
- }
-
- if (fp->_bf._base == NULL)
- __smakebuf (fp);
-
- /*
- * Before reading from a line buffered or unbuffered file,
- * flush all line buffered output files, per the ANSI C
- * standard.
- */
-
- if (fp->_flags & (__SLBF | __SNBF))
- (void) _fwalk (fp->_data, lflush);
- fp->_p = fp->_bf._base;
- fp->_r = (*fp->_read) (fp->_cookie, (char *) fp->_p, fp->_bf._size);
- fp->_flags &= ~__SMOD; /* buffer contents are again pristine */
- if (fp->_r <= 0)
- {
- if (fp->_r == 0)
- fp->_flags |= __SEOF;
- else
- {
- fp->_r = 0;
- fp->_flags |= __SERR;
- }
- return EOF;
- }
- return 0;
-}
diff --git a/newlib/libc/stdio/remove.c b/newlib/libc/stdio/remove.c
deleted file mode 100644
index b24ce713f..000000000
--- a/newlib/libc/stdio/remove.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
-FUNCTION
-<<remove>>---delete a file's name
-
-INDEX
- remove
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- int remove(char *<[filename]>);
-
- int _remove_r(void *<[reent]>, char *<[filename]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- int remove(<[filename]>)
- char *<[filename]>;
-
- int _remove_r(<[reent]>, <[filename]>)
- char *<[reent]>;
- char *<[filename]>;
-
-DESCRIPTION
-Use <<remove>> to dissolve the association between a particular
-filename (the string at <[filename]>) and the file it represents.
-After calling <<remove>> with a particular filename, you will no
-longer be able to open the file by that name.
-
-In this implementation, you may use <<remove>> on an open file without
-error; existing file descriptors for the file will continue to access
-the file's data until the program using them closes the file.
-
-The alternate function <<_remove_r>> is a reentrant version. The
-extra argument <[reent]> is a pointer to a reentrancy structure.
-
-RETURNS
-<<remove>> returns <<0>> if it succeeds, <<-1>> if it fails.
-
-PORTABILITY
-ANSI C requires <<remove>>, but only specifies that the result on
-failure be nonzero. The behavior of <<remove>> when you call it on an
-open file may vary among implementations.
-
-Supporting OS subroutine required: <<unlink>>.
-*/
-
-#include <stdio.h>
-#include <reent.h>
-
-int
-_remove_r (ptr, filename)
- struct _reent *ptr;
- _CONST char *filename;
-{
- if (_unlink_r (ptr, filename) == -1)
- return -1;
-
- return 0;
-}
-
-#ifndef _REENT_ONLY
-
-int
-remove (filename)
- _CONST char *filename;
-{
- return _remove_r (_REENT, filename);
-}
-
-#endif
diff --git a/newlib/libc/stdio/rename.c b/newlib/libc/stdio/rename.c
deleted file mode 100644
index 19a6afdd3..000000000
--- a/newlib/libc/stdio/rename.c
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
-FUNCTION
-<<rename>>---rename a file
-
-INDEX
- rename
-INDEX
- _rename_r
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- int rename(const char *<[old]>, const char *<[new]>);
-
- int _rename_r(void *<[reent]>,
- const char *<[old]>, const char *<[new]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- int rename(<[old]>, <[new]>)
- char *<[old]>;
- char *<[new]>;
-
- int _rename_r(<[reent]>, <[old]>, <[new]>)
- char *<[reent]>;
- char *<[old]>;
- char *<[new]>;
-
-DESCRIPTION
-Use <<rename>> to establish a new name (the string at <[new]>) for a
-file now known by the string at <[old]>. After a successful
-<<rename>>, the file is no longer accessible by the string at <[old]>.
-
-If <<rename>> fails, the file named <<*<[old]>>> is unaffected. The
-conditions for failure depend on the host operating system.
-
-The alternate function <<_rename_r>> is a reentrant version. The
-extra argument <[reent]> is a pointer to a reentrancy structure.
-
-RETURNS
-The result is either <<0>> (when successful) or <<-1>> (when the file
-could not be renamed).
-
-PORTABILITY
-ANSI C requires <<rename>>, but only specifies that the result on
-failure be nonzero. The effects of using the name of an existing file
-as <<*<[new]>>> may vary from one implementation to another.
-
-Supporting OS subroutines required: <<link>>, <<unlink>>, or <<rename>>.
-*/
-
-#include <stdio.h>
-#include <sys/unistd.h>
-#include <reent.h>
-
-int
-_rename_r (ptr, old, new)
- struct _reent *ptr;
- _CONST char *old;
- _CONST char *new;
-{
-#ifdef HAVE_RENAME
- return _rename (old,new);
-#else
- if (_link_r (ptr, old, new) == -1)
- return -1;
-
- if (_unlink_r (ptr, old) == -1)
- {
- /* ??? Should we unlink new? (rhetorical question) */
- return -1;
- }
-#endif
- return 0;
-}
-
-#ifndef _REENT_ONLY
-
-int
-rename (old, new)
- _CONST char *old;
- _CONST char *new;
-{
- return _rename_r (_REENT, old, new);
-}
-
-#endif
diff --git a/newlib/libc/stdio/rewind.c b/newlib/libc/stdio/rewind.c
deleted file mode 100644
index 905275741..000000000
--- a/newlib/libc/stdio/rewind.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
-FUNCTION
-<<rewind>>---reinitialize a file or stream
-
-INDEX
- rewind
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- void rewind(FILE *<[fp]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- void rewind(<[fp]>)
- FILE *<[fp]>;
-
-DESCRIPTION
-<<rewind>> returns the file position indicator (if any) for the file
-or stream identified by <[fp]> to the beginning of the file. It also
-clears any error indicator and flushes any pending output.
-
-RETURNS
-<<rewind>> does not return a result.
-
-PORTABILITY
-ANSI C requires <<rewind>>.
-
-No supporting OS subroutines are required.
-*/
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "%W% (Berkeley) %G%";
-#endif /* LIBC_SCCS and not lint */
-
-#include <stdio.h>
-
-void
-_DEFUN (rewind, (fp),
- register FILE * fp)
-{
- (void) fseek(fp, 0L, SEEK_SET);
- clearerr(fp);
-}
diff --git a/newlib/libc/stdio/rget.c b/newlib/libc/stdio/rget.c
deleted file mode 100644
index ea29c2bce..000000000
--- a/newlib/libc/stdio/rget.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* No user fns here. Pesch 15apr92. */
-
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "%W% (Berkeley) %G%";
-#endif /* LIBC_SCCS and not lint */
-
-#include <stdio.h>
-#include "local.h"
-
-/*
- * Handle getc() when the buffer ran out:
- * Refill, then return the first character
- * in the newly-filled buffer.
- */
-
-int
-__srget (fp)
- register FILE *fp;
-{
- if (__srefill (fp) == 0)
- {
- fp->_r--;
- return *fp->_p++;
- }
- return EOF;
-}
diff --git a/newlib/libc/stdio/scanf.c b/newlib/libc/stdio/scanf.c
deleted file mode 100644
index 92473ad89..000000000
--- a/newlib/libc/stdio/scanf.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#include <_ansi.h>
-#include <stdio.h>
-#include "local.h"
-
-#ifdef _HAVE_STDC
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-
-#include "local.h"
-
-#ifndef _REENT_ONLY
-
-int
-#ifdef _HAVE_STDC
-scanf (const char *fmt, ...)
-#else
-scanf (fmt, va_alist)
- char *fmt;
- va_dcl
-#endif
-{
- int ret;
- va_list ap;
-
- _REENT_SMALL_CHECK_INIT(_stdin_r (_REENT));
-#ifdef _HAVE_STDC
- va_start (ap, fmt);
-#else
- va_start (ap);
-#endif
- ret = __svfscanf_r (_REENT, _stdin_r (_REENT), fmt, ap);
- va_end (ap);
- return ret;
-}
-
-#endif /* !_REENT_ONLY */
-
-int
-#ifdef _HAVE_STDC
-_scanf_r (struct _reent *ptr, const char *fmt, ...)
-#else
-_scanf_r (ptr, fmt, va_alist)
- struct _reent *ptr;
- char *fmt;
- va_dcl
-#endif
-{
- int ret;
- va_list ap;
-
- _REENT_SMALL_CHECK_INIT(_stdin_r (ptr));
-#ifdef _HAVE_STDC
- va_start (ap, fmt);
-#else
- va_start (ap);
-#endif
- ret = __svfscanf_r (ptr, _stdin_r (ptr), fmt, ap);
- va_end (ap);
- return (ret);
-}
-
-
diff --git a/newlib/libc/stdio/setbuf.c b/newlib/libc/stdio/setbuf.c
deleted file mode 100644
index 15d09e0f3..000000000
--- a/newlib/libc/stdio/setbuf.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
-FUNCTION
-<<setbuf>>---specify full buffering for a file or stream
-
-INDEX
- setbuf
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- void setbuf(FILE *<[fp]>, char *<[buf]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- void setbuf(<[fp]>, <[buf]>)
- FILE *<[fp]>;
- char *<[buf]>;
-
-DESCRIPTION
-<<setbuf>> specifies that output to the file or stream identified by <[fp]>
-should be fully buffered. All output for this file will go to a
-buffer (of size <<BUFSIZ>>, specified in `<<stdio.h>>'). Output will
-be passed on to the host system only when the buffer is full, or when
-an input operation intervenes.
-
-You may, if you wish, supply your own buffer by passing a pointer to
-it as the argument <[buf]>. It must have size <<BUFSIZ>>. You can
-also use <<NULL>> as the value of <[buf]>, to signal that the
-<<setbuf>> function is to allocate the buffer.
-
-WARNINGS
-You may only use <<setbuf>> before performing any file operation other
-than opening the file.
-
-If you supply a non-null <[buf]>, you must ensure that the associated
-storage continues to be available until you close the stream
-identified by <[fp]>.
-
-RETURNS
-<<setbuf>> does not return a result.
-
-PORTABILITY
-Both ANSI C and the System V Interface Definition (Issue 2) require
-<<setbuf>>. However, they differ on the meaning of a <<NULL>> buffer
-pointer: the SVID issue 2 specification says that a <<NULL>> buffer
-pointer requests unbuffered output. For maximum portability, avoid
-<<NULL>> buffer pointers.
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
-<<lseek>>, <<read>>, <<sbrk>>, <<write>>.
-*/
-
-#include <_ansi.h>
-#include <stdio.h>
-#include "local.h"
-
-void
-_DEFUN (setbuf, (fp, buf),
- FILE * fp _AND
- char *buf)
-{
- (void) setvbuf (fp, buf, buf ? _IOFBF : _IONBF, BUFSIZ);
-}
diff --git a/newlib/libc/stdio/setbuffer.c b/newlib/libc/stdio/setbuffer.c
deleted file mode 100644
index c74c7fce1..000000000
--- a/newlib/libc/stdio/setbuffer.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
-Modified copy of setbuf.c to support the setbuffer function
-defined as part of BSD.
-Modifications by Gareth Pearce, 2001.
-*/
-
-/*
-FUNCTION
-<<setbuffer>>---specify full buffering for a file or stream with size
-
-INDEX
- setbuffer
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- void setbuffer(FILE *<[fp]>, char *<[buf]>, int <[size]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- void setbuffer(<[fp]>, <[buf]>, <[size]>)
- FILE *<[fp]>;
- char *<[buf]>;
- int <[size]>;
-
-DESCRIPTION
-<<setbuffer>> specifies that output to the file or stream identified by
-<[fp]> should be fully buffered. All output for this file will go to a
-buffer (of size <[size]>). Output will be passed on to the host system
-only when the buffer is full, or when an input operation intervenes.
-
-You may, if you wish, supply your own buffer by passing a pointer to
-it as the argument <[buf]>. It must have size <[size]>. You can
-also use <<NULL>> as the value of <[buf]>, to signal that the
-<<setbuffer>> function is to allocate the buffer.
-
-WARNINGS
-You may only use <<setbuffer>> before performing any file operation
-other than opening the file.
-
-If you supply a non-null <[buf]>, you must ensure that the associated
-storage continues to be available until you close the stream
-identified by <[fp]>.
-
-RETURNS
-<<setbuffer>> does not return a result.
-
-PORTABILITY
-This function comes from BSD not ANSI or POSIX.
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
-<<lseek>>, <<read>>, <<sbrk>>, <<write>>.
-
-
-FUNCTION
-
-<<setlinebuf>>---specify line buffering for a file or stream
-
-INDEX
- setlinebuf
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- void setlinebuf(FILE *<[fp]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- void setlinebuf(<[fp]>)
- FILE *<[fp]>;
-
-DESCRIPTION
-<<setlinebuf>> specifies that output to the file or stream identified by
-<[fp]> should be line buffered. This causes the file or stream to pass
-on output to the host system at every newline, as well as when the
-buffer is full, or when an input operation intervenes.
-
-WARNINGS
-You may only use <<setlinebuf>> before performing any file operation
-other than opening the file.
-
-RETURNS
-<<setlinebuf>> returns as per setvbuf.
-
-PORTABILITY
-This function comes from BSD not ANSI or POSIX.
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
-<<lseek>>, <<read>>, <<sbrk>>, <<write>>.
-*/
-
-#include <_ansi.h>
-#include <stdio.h>
-#include "local.h"
-
-void
-_DEFUN (setbuffer, (fp, buf, size),
- FILE * fp _AND
- char *buf _AND
- int size)
-{
- (void) setvbuf (fp, buf, buf ? _IOFBF : _IONBF, (size_t) size);
-}
diff --git a/newlib/libc/stdio/setlinebuf.c b/newlib/libc/stdio/setlinebuf.c
deleted file mode 100644
index f27971357..000000000
--- a/newlib/libc/stdio/setlinebuf.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
-Modified copy of setbuf.c to support setlinebuf function
-defined as part of BSD.
-Modifications by Gareth Pearce, 2001.
-*/
-
-/*
-FUNCTION
-
-<<setlinebuf>>---specify line buffering for a file or stream
-
-INDEX
- setlinebuf
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- void setlinebuf(FILE *<[fp]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- void setlinebuf(<[fp]>)
- FILE *<[fp]>;
-
-DESCRIPTION
-<<setlinebuf>> specifies that output to the file or stream identified by
-<[fp]> should be line buffered. This causes the file or stream to pass
-on output to the host system at every newline, as well as when the
-buffer is full, or when an input operation intervenes.
-
-WARNINGS
-You may only use <<setlinebuf>> before performing any file operation
-other than opening the file.
-
-RETURNS
-<<setlinebuf>> returns as per setvbuf.
-
-PORTABILITY
-This function comes from BSD not ANSI or POSIX.
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
-<<lseek>>, <<read>>, <<sbrk>>, <<write>>.
-*/
-
-#include <_ansi.h>
-#include <stdio.h>
-#include "local.h"
-
-int
-_DEFUN (setlinebuf, (fp),
- FILE * fp)
-{
- return (setvbuf (fp, (char *) NULL, _IOLBF, (size_t) 0));
-}
diff --git a/newlib/libc/stdio/setvbuf.c b/newlib/libc/stdio/setvbuf.c
deleted file mode 100644
index d44cdba5f..000000000
--- a/newlib/libc/stdio/setvbuf.c
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
-FUNCTION
-<<setvbuf>>---specify file or stream buffering
-
-INDEX
- setvbuf
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- int setvbuf(FILE *<[fp]>, char *<[buf]>,
- int <[mode]>, size_t <[size]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- int setvbuf(<[fp]>, <[buf]>, <[mode]>, <[size]>)
- FILE *<[fp]>;
- char *<[buf]>;
- int <[mode]>;
- size_t <[size]>;
-
-DESCRIPTION
-Use <<setvbuf>> to specify what kind of buffering you want for the
-file or stream identified by <[fp]>, by using one of the following
-values (from <<stdio.h>>) as the <[mode]> argument:
-
-o+
-o _IONBF
-Do not use a buffer: send output directly to the host system for the
-file or stream identified by <[fp]>.
-
-o _IOFBF
-Use full output buffering: output will be passed on to the host system
-only when the buffer is full, or when an input operation intervenes.
-
-o _IOLBF
-Use line buffering: pass on output to the host system at every
-newline, as well as when the buffer is full, or when an input
-operation intervenes.
-o-
-
-Use the <[size]> argument to specify how large a buffer you wish. You
-can supply the buffer itself, if you wish, by passing a pointer to a
-suitable area of memory as <[buf]>. Otherwise, you may pass <<NULL>>
-as the <[buf]> argument, and <<setvbuf>> will allocate the buffer.
-
-WARNINGS
-You may only use <<setvbuf>> before performing any file operation other
-than opening the file.
-
-If you supply a non-null <[buf]>, you must ensure that the associated
-storage continues to be available until you close the stream
-identified by <[fp]>.
-
-RETURNS
-A <<0>> result indicates success, <<EOF>> failure (invalid <[mode]> or
-<[size]> can cause failure).
-
-PORTABILITY
-Both ANSI C and the System V Interface Definition (Issue 2) require
-<<setvbuf>>. However, they differ on the meaning of a <<NULL>> buffer
-pointer: the SVID issue 2 specification says that a <<NULL>> buffer
-pointer requests unbuffered output. For maximum portability, avoid
-<<NULL>> buffer pointers.
-
-Both specifications describe the result on failure only as a
-nonzero value.
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
-<<lseek>>, <<read>>, <<sbrk>>, <<write>>.
-*/
-
-#include <_ansi.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include "local.h"
-
-/*
- * Set one of the three kinds of buffering, optionally including a buffer.
- */
-
-int
-_DEFUN (setvbuf, (fp, buf, mode, size),
- register FILE * fp _AND
- char *buf _AND
- register int mode _AND
- register size_t size)
-{
- int ret = 0;
-
- _flockfile(fp);
-
- CHECK_INIT (fp);
-
- /*
- * Verify arguments. The `int' limit on `size' is due to this
- * particular implementation.
- */
-
- if ((mode != _IOFBF && mode != _IOLBF && mode != _IONBF) || (int)(_POINTER_INT) size < 0)
- {
- _funlockfile(fp);
- return (EOF);
- }
-
- /*
- * Write current buffer, if any; drop read count, if any.
- * Make sure putc() will not think fp is line buffered.
- * Free old buffer if it was from malloc(). Clear line and
- * non buffer flags, and clear malloc flag.
- */
-
- (void) fflush (fp);
- fp->_r = 0;
- fp->_lbfsize = 0;
- if (fp->_flags & __SMBF)
- _free_r (fp->_data, (void *) fp->_bf._base);
- fp->_flags &= ~(__SLBF | __SNBF | __SMBF);
-
- if (mode == _IONBF)
- goto nbf;
-
- /*
- * Allocate buffer if needed. */
- if (buf == NULL)
- {
- /* we need this here because malloc() may return a pointer
- even if size == 0 */
- if (!size) size = BUFSIZ;
- if ((buf = malloc (size)) == NULL)
- {
- ret = EOF;
- /* Try another size... */
- buf = malloc (BUFSIZ);
- size = BUFSIZ;
- }
- if (buf == NULL)
- {
- /* Can't allocate it, let's try another approach */
-nbf:
- fp->_flags |= __SNBF;
- fp->_w = 0;
- fp->_bf._base = fp->_p = fp->_nbuf;
- fp->_bf._size = 1;
- _funlockfile(fp);
- return (ret);
- }
- fp->_flags |= __SMBF;
- }
- /*
- * Now put back whichever flag is needed, and fix _lbfsize
- * if line buffered. Ensure output flush on exit if the
- * stream will be buffered at all.
- * If buf is NULL then make _lbfsize 0 to force the buffer
- * to be flushed and hence malloced on first use
- */
-
- switch (mode)
- {
- case _IOLBF:
- fp->_flags |= __SLBF;
- fp->_lbfsize = buf ? -size : 0;
- /* FALLTHROUGH */
-
- case _IOFBF:
- /* no flag */
- fp->_data->__cleanup = _cleanup_r;
- fp->_bf._base = fp->_p = (unsigned char *) buf;
- fp->_bf._size = size;
- break;
- }
-
- /*
- * Patch up write count if necessary.
- */
-
- if (fp->_flags & __SWR)
- fp->_w = fp->_flags & (__SLBF | __SNBF) ? 0 : size;
-
- _funlockfile(fp);
- return 0;
-}
diff --git a/newlib/libc/stdio/siprintf.c b/newlib/libc/stdio/siprintf.c
deleted file mode 100644
index 40bd01696..000000000
--- a/newlib/libc/stdio/siprintf.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
-FUNCTION
- <<siprintf>>---write formatted output (integer only)
-INDEX
- siprintf
-
-ANSI_SYNOPSIS
- #include <stdio.h>
-
- int siprintf(char *<[str]>, const char *<[format]> [, <[arg]>, ...]);
-
-
-DESCRIPTION
-<<siprintf>> is a restricted version of <<sprintf>>: it has the same
-arguments and behavior, save that it cannot perform any floating-point
-formatting: the <<f>>, <<g>>, <<G>>, <<e>>, and <<F>> type specifiers
-are not recognized.
-
-RETURNS
- <<siprintf>> returns the number of bytes in the output string,
- save that the concluding <<NULL>> is not counted.
- <<siprintf>> returns when the end of the format string is
- encountered.
-
-PORTABILITY
-<<siprintf>> is not required by ANSI C.
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
-<<lseek>>, <<read>>, <<sbrk>>, <<write>>.
-*/
-
-#include <stdio.h>
-#ifdef _HAVE_STDC
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-#include <limits.h>
-#include <_ansi.h>
-#include <reent.h>
-#include "local.h"
-
-int
-#ifdef _HAVE_STDC
-_DEFUN (siprintf, (str, fmt), char *str _AND _CONST char *fmt _DOTS)
-#else
-siprintf (str, fmt, va_alist)
- char *str;
- _CONST char *fmt;
- va_dcl
-#endif
-{
- int ret;
- va_list ap;
- FILE f;
-
- f._flags = __SWR | __SSTR;
- f._bf._base = f._p = (unsigned char *) str;
- f._bf._size = f._w = INT_MAX;
- f._data = _REENT;
-#ifdef _HAVE_STDC
- va_start (ap, fmt);
-#else
- va_start (ap);
-#endif
- ret = vfiprintf (&f, fmt, ap);
- va_end (ap);
- *f._p = 0;
- return (ret);
-}
diff --git a/newlib/libc/stdio/snprintf.c b/newlib/libc/stdio/snprintf.c
deleted file mode 100644
index c67f8e49b..000000000
--- a/newlib/libc/stdio/snprintf.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/* doc in sprintf.c */
-
-/* This code created by modifying sprintf.c so copyright inherited. */
-
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#include <stdio.h>
-#ifdef _HAVE_STDC
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-#include <limits.h>
-#include <_ansi.h>
-#include "local.h"
-
-int
-#ifdef _HAVE_STDC
-_DEFUN (_snprintf_r, (ptr, str, size, fmt), struct _reent *ptr _AND char *str _AND size_t size _AND _CONST char *fmt _DOTS)
-#else
-_snprintf_r (ptr, str, size, fmt, va_alist)
- struct _reent *ptr;
- char *str;
- size_t size;
- _CONST char *fmt;
- va_dcl
-#endif
-{
- int ret;
- va_list ap;
- FILE f;
-
- f._flags = __SWR | __SSTR;
- f._bf._base = f._p = (unsigned char *) str;
- f._bf._size = f._w = (size > 0 ? size - 1 : 0);
- f._data = ptr;
-#ifdef _HAVE_STDC
- va_start (ap, fmt);
-#else
- va_start (ap);
-#endif
- ret = vfprintf (&f, fmt, ap);
- va_end (ap);
- if (size > 0)
- *f._p = 0;
- return (ret);
-}
-
-#ifndef _REENT_ONLY
-
-int
-#ifdef _HAVE_STDC
-_DEFUN (snprintf, (str, size, fmt), char *str _AND size_t size _AND _CONST char *fmt _DOTS)
-#else
-snprintf (str, size, fmt, va_alist)
- char *str;
- size_t size;
- _CONST char *fmt;
- va_dcl
-#endif
-{
- int ret;
- va_list ap;
- FILE f;
-
- f._flags = __SWR | __SSTR;
- f._bf._base = f._p = (unsigned char *) str;
- f._bf._size = f._w = (size > 0 ? size - 1 : 0);
- f._data = _REENT;
-#ifdef _HAVE_STDC
- va_start (ap, fmt);
-#else
- va_start (ap);
-#endif
- ret = vfprintf (&f, fmt, ap);
- va_end (ap);
- if (size > 0)
- *f._p = 0;
- return (ret);
-}
-
-#endif
diff --git a/newlib/libc/stdio/sprintf.c b/newlib/libc/stdio/sprintf.c
deleted file mode 100644
index 879b480c9..000000000
--- a/newlib/libc/stdio/sprintf.c
+++ /dev/null
@@ -1,370 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
-
-FUNCTION
- <<printf>>, <<fprintf>>, <<asprintf>>, <<sprintf>>, <<snprintf>>---format output
-INDEX
- fprintf
-INDEX
- printf
-INDEX
- asprintf
-INDEX
- sprintf
-INDEX
- snprintf
-
-ANSI_SYNOPSIS
- #include <stdio.h>
-
- int printf(const char *<[format]> [, <[arg]>, ...]);
- int fprintf(FILE *<[fd]>, const char *<[format]> [, <[arg]>, ...]);
- int sprintf(char *<[str]>, const char *<[format]> [, <[arg]>, ...]);
- int asprintf(char **<[strp]>, const char *<[format]> [, <[arg]>, ...]);
- int snprintf(char *<[str]>, size_t <[size]>, const char *<[format]> [, <[arg]>, ...]);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
-
- int printf(<[format]> [, <[arg]>, ...])
- char *<[format]>;
-
- int fprintf(<[fd]>, <[format]> [, <[arg]>, ...]);
- FILE *<[fd]>;
- char *<[format]>;
-
- int asprintf(<[strp]>, <[format]> [, <[arg]>, ...]);
- char **<[strp]>;
- char *<[format]>;
-
- int sprintf(<[str]>, <[format]> [, <[arg]>, ...]);
- char *<[str]>;
- char *<[format]>;
-
- int snprintf(<[str]>, size_t <[size]>, <[format]> [, <[arg]>, ...]);
- char *<[str]>;
- size_t <[size]>;
- char *<[format]>;
-
-DESCRIPTION
- <<printf>> accepts a series of arguments, applies to each a
- format specifier from <<*<[format]>>>, and writes the
- formatted data to <<stdout>>, terminated with a null character.
- The behavior of <<printf>> is undefined if there are not enough
- arguments for the format.
- <<printf>> returns when it reaches the end of the format string.
- If there are more arguments than the format requires, excess
- arguments are ignored.
-
- <<fprintf>>, <<asprintf>>, <<sprintf>> and <<snprintf>> are identical
- to <<printf>>, other than the destination of the formatted output:
- <<fprintf>> sends the output to a specified file <[fd]>, while
- <<asprintf>> stores the output in a dynamically allocated buffer,
- while <<sprintf>> stores the output in the specified char array
- <[str]> and <<snprintf>> limits number of characters written to
- <[str]> to at most <[size]> (including terminating <<0>>). For
- <<sprintf>> and <<snprintf>>, the behavior is undefined if the
- output <<*<[str]>>> overlaps with one of the arguments. For
- <<asprintf>>, <[strp]> points to a pointer to char which is filled
- in with the dynamically allocated buffer. <[format]> is a pointer
- to a charater string containing two types of objects: ordinary
- characters (other than <<%>>), which are copied unchanged to the
- output, and conversion specifications, each of which is introduced
- by <<%>>. (To include <<%>> in the output, use <<%%>> in the format
- string.) A conversion specification has the following form:
-
-. %[<[flags]>][<[width]>][.<[prec]>][<[size]>][<[type]>]
-
- The fields of the conversion specification have the following meanings:
-
- O+
- o <[flags]>
-
- an optional sequence of characters which control
- output justification, numeric signs, decimal points,
- trailing zeroes, and octal and hex prefixes.
- The flag characters are minus (<<->>), plus (<<+>>),
- space ( ), zero (<<0>>), and sharp (<<#>>). They can
- appear in any combination.
-
- o+
- o -
- The result of the conversion is left justified, and the right is
- padded with blanks. If you do not use this flag, the result is right
- justified, and padded on the left.
-
- o +
- The result of a signed conversion (as determined by <[type]>)
- will always begin with a plus or minus sign. (If you do not use
- this flag, positive values do not begin with a plus sign.)
-
- o " " (space)
- If the first character of a signed conversion specification
- is not a sign, or if a signed conversion results in no
- characters, the result will begin with a space. If the
- space ( ) flag and the plus (<<+>>) flag both appear,
- the space flag is ignored.
-
- o 0
- If the <[type]> character is <<d>>, <<i>>, <<o>>, <<u>>,
- <<x>>, <<X>>, <<e>>, <<E>>, <<f>>, <<g>>, or <<G>>: leading zeroes,
- are used to pad the field width (following any indication of sign or
- base); no spaces are used for padding. If the zero (<<0>>) and
- minus (<<->>) flags both appear, the zero (<<0>>) flag will
- be ignored. For <<d>>, <<i>>, <<o>>, <<u>>, <<x>>, and <<X>>
- conversions, if a precision <[prec]> is specified, the zero (<<0>>)
- flag is ignored.
-
- Note that <<0>> is interpreted as a flag, not as the beginning
- of a field width.
-
- o #
- The result is to be converted to an alternative form, according
- to the next character:
-
- o+
- o 0
- increases precision to force the first digit
- of the result to be a zero.
-
- o x
- a non-zero result will have a <<0x>> prefix.
-
- o X
- a non-zero result will have a <<0X>> prefix.
-
- o e, E or f
- The result will always contain a decimal point
- even if no digits follow the point.
- (Normally, a decimal point appears only if a
- digit follows it.) Trailing zeroes are removed.
-
- o g or G
- same as <<e>> or <<E>>, but trailing zeroes
- are not removed.
-
- o all others
- undefined.
-
- o-
- o-
-
- o <[width]>
-
- <[width]> is an optional minimum field width. You can either
- specify it directly as a decimal integer, or indirectly by
- using instead an asterisk (<<*>>), in which case an <<int>>
- argument is used as the field width. Negative field widths
- are not supported; if you attempt to specify a negative field
- width, it is interpreted as a minus (<<->>) flag followed by a
- positive field width.
-
- o <[prec]>
-
- an optional field; if present, it is introduced with `<<.>>'
- (a period). This field gives the maximum number of
- characters to print in a conversion; the minimum number of
- digits of an integer to print, for conversions with <[type]>
- <<d>>, <<i>>, <<o>>, <<u>>, <<x>>, and <<X>>; the maximum number of
- significant digits, for the <<g>> and <<G>> conversions;
- or the number of digits to print after the decimal
- point, for <<e>>, <<E>>, and <<f>> conversions. You can specify
- the precision either directly as a decimal integer or
- indirectly by using an asterisk (<<*>>), in which case
- an <<int>> argument is used as the precision. Supplying a negative
- precision is equivalent to omitting the precision.
- If only a period is specified the precision is zero.
- If a precision appears with any other conversion <[type]>
- than those listed here, the behavior is undefined.
-
- o <[size]>
-
- <<h>>, <<l>>, and <<L>> are optional size characters which
- override the default way that <<printf>> interprets the
- data type of the corresponding argument. <<h>> forces
- the following <<d>>, <<i>>, <<o>>, <<u>>, <<x>> or <<X>> conversion
- <[type]> to apply to a <<short>> or <<unsigned short>>. <<h>> also
- forces a following <<n>> <[type]> to apply to
- a pointer to a <<short>>. Similarily, an
- <<l>> forces the following <<d>>, <<i>>, <<o>>, <<u>>,
- <<x>> or <<X>> conversion <[type]> to apply to a <<long>> or
- <<unsigned long>>. <<l>> also forces a following <<n>> <[type]> to
- apply to a pointer to a <<long>>. If an <<h>>
- or an <<l>> appears with another conversion
- specifier, the behavior is undefined. <<L>> forces a
- following <<e>>, <<E>>, <<f>>, <<g>> or <<G>> conversion <[type]> to
- apply to a <<long double>> argument. If <<L>> appears with
- any other conversion <[type]>, the behavior is undefined.
-
- o <[type]>
-
- <[type]> specifies what kind of conversion <<printf>> performs.
- Here is a table of these:
-
- o+
- o %
- prints the percent character (<<%>>)
-
- o c
- prints <[arg]> as single character
-
- o s
- prints characters until precision is reached or a null terminator
- is encountered; takes a string pointer
-
- o d
- prints a signed decimal integer; takes an <<int>> (same as <<i>>)
-
- o i
- prints a signed decimal integer; takes an <<int>> (same as <<d>>)
-
- o o
- prints a signed octal integer; takes an <<int>>
-
- o u
- prints an unsigned decimal integer; takes an <<int>>
-
- o x
- prints an unsigned hexadecimal integer (using <<abcdef>> as
- digits beyond <<9>>); takes an <<int>>
-
- o X
- prints an unsigned hexadecimal integer (using <<ABCDEF>> as
- digits beyond <<9>>); takes an <<int>>
-
- o f
- prints a signed value of the form <<[-]9999.9999>>; takes
- a floating point number
-
- o e
- prints a signed value of the form <<[-]9.9999e[+|-]999>>; takes a
- floating point number
-
- o E
- prints the same way as <<e>>, but using <<E>> to introduce the
- exponent; takes a floating point number
-
- o g
- prints a signed value in either <<f>> or <<e>> form, based on given
- value and precision---trailing zeros and the decimal point are
- printed only if necessary; takes a floating point number
-
- o G
- prints the same way as <<g>>, but using <<E>> for the exponent if an
- exponent is needed; takes a floating point number
-
- o n
- stores (in the same object) a count of the characters written;
- takes a pointer to <<int>>
-
- o p
- prints a pointer in an implementation-defined format.
- This implementation treats the pointer as an
- <<unsigned long>> (same as <<Lu>>).
- o-
-O-
-
-
-RETURNS
-<<sprintf>> and <<asprintf>> return the number of bytes in the output string,
-save that the concluding <<NULL>> is not counted.
-<<printf>> and <<fprintf>> return the number of characters transmitted.
-If an error occurs, <<printf>> and <<fprintf>> return <<EOF>> and
-<<asprintf>> returns -1. No error returns occur for <<sprintf>>.
-
-PORTABILITY
- The ANSI C standard specifies that implementations must
- support at least formatted output of up to 509 characters.
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
-<<lseek>>, <<read>>, <<sbrk>>, <<write>>.
-*/
-
-#include <stdio.h>
-#ifdef _HAVE_STDC
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-#include <limits.h>
-#include <_ansi.h>
-#include "local.h"
-
-int
-#ifdef _HAVE_STDC
-_DEFUN (_sprintf_r, (ptr, str, fmt), struct _reent *ptr _AND char *str _AND _CONST char *fmt _DOTS)
-#else
-_sprintf_r (ptr, str, fmt, va_alist)
- struct _reent *ptr;
- char *str;
- _CONST char *fmt;
- va_dcl
-#endif
-{
- int ret;
- va_list ap;
- FILE f;
-
- f._flags = __SWR | __SSTR;
- f._bf._base = f._p = (unsigned char *) str;
- f._bf._size = f._w = INT_MAX;
- f._data = ptr;
-#ifdef _HAVE_STDC
- va_start (ap, fmt);
-#else
- va_start (ap);
-#endif
- ret = vfprintf (&f, fmt, ap);
- va_end (ap);
- *f._p = 0;
- return (ret);
-}
-
-#ifndef _REENT_ONLY
-
-int
-#ifdef _HAVE_STDC
-_DEFUN (sprintf, (str, fmt), char *str _AND _CONST char *fmt _DOTS)
-#else
-sprintf (str, fmt, va_alist)
- char *str;
- _CONST char *fmt;
- va_dcl
-#endif
-{
- int ret;
- va_list ap;
- FILE f;
-
- f._flags = __SWR | __SSTR;
- f._bf._base = f._p = (unsigned char *) str;
- f._bf._size = f._w = INT_MAX;
- f._data = _REENT;
-#ifdef _HAVE_STDC
- va_start (ap, fmt);
-#else
- va_start (ap);
-#endif
- ret = vfprintf (&f, fmt, ap);
- va_end (ap);
- *f._p = 0;
- return (ret);
-}
-
-#endif
diff --git a/newlib/libc/stdio/sscanf.c b/newlib/libc/stdio/sscanf.c
deleted file mode 100644
index 7cf897c5b..000000000
--- a/newlib/libc/stdio/sscanf.c
+++ /dev/null
@@ -1,446 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
-
-FUNCTION
- <<scanf>>, <<fscanf>>, <<sscanf>>---scan and format input
-
-INDEX
- scanf
-INDEX
- fscanf
-INDEX
- sscanf
-
-ANSI_SYNOPSIS
- #include <stdio.h>
-
- int scanf(const char *<[format]> [, <[arg]>, ...]);
- int fscanf(FILE *<[fd]>, const char *<[format]> [, <[arg]>, ...]);
- int sscanf(const char *<[str]>, const char *<[format]>
- [, <[arg]>, ...]);
-
- int _scanf_r(struct _reent *<[ptr]>, const char *<[format]> [, <[arg]>, ...]);
- int _fscanf_r(struct _reent *<[ptr]>, FILE *<[fd]>, const char *<[format]> [, <[arg]>, ...]);
- int _sscanf_r(struct _reent *<[ptr]>, const char *<[str]>, const char *<[format]>
- [, <[arg]>, ...]);
-
-
-TRAD_SYNOPSIS
- #include <stdio.h>
-
- int scanf(<[format]> [, <[arg]>, ...])
- char *<[format]>;
-
- int fscanf(<[fd]>, <[format]> [, <[arg]>, ...]);
- FILE *<[fd]>;
- char *<[format]>;
-
- int sscanf(<[str]>, <[format]> [, <[arg]>, ...]);
- char *<[str]>;
- char *<[format]>;
-
- int _scanf_r(<[ptr]>, <[format]> [, <[arg]>, ...])
- struct _reent *<[ptr]>;
- char *<[format]>;
-
- int _fscanf_r(<[ptr]>, <[fd]>, <[format]> [, <[arg]>, ...]);
- struct _reent *<[ptr]>;
- FILE *<[fd]>;
- char *<[format]>;
-
- int _sscanf_r(<[ptr]>, <[str]>, <[format]> [, <[arg]>, ...]);
- struct _reent *<[ptr]>;
- char *<[str]>;
- char *<[format]>;
-
-
-DESCRIPTION
- <<scanf>> scans a series of input fields from standard input,
- one character at a time. Each field is interpreted according to
- a format specifier passed to <<scanf>> in the format string at
- <<*<[format]>>>. <<scanf>> stores the interpreted input from
- each field at the address passed to it as the corresponding argument
- following <[format]>. You must supply the same number of
- format specifiers and address arguments as there are input fields.
-
- There must be sufficient address arguments for the given format
- specifiers; if not the results are unpredictable and likely
- disasterous. Excess address arguments are merely ignored.
-
- <<scanf>> often produces unexpected results if the input diverges from
- an expected pattern. Since the combination of <<gets>> or <<fgets>>
- followed by <<sscanf>> is safe and easy, that is the preferred way
- to be certain that a program is synchronized with input at the end
- of a line.
-
- <<fscanf>> and <<sscanf>> are identical to <<scanf>>, other than the
- source of input: <<fscanf>> reads from a file, and <<sscanf>>
- from a string.
-
- The routines <<_scanf_r>>, <<_fscanf_r>>, and <<_sscanf_r>> are reentrant
- versions of <<scanf>>, <<fscanf>>, and <<sscanf>> that take an additional
- first argument pointing to a reentrancy structure.
-
- The string at <<*<[format]>>> is a character sequence composed
- of zero or more directives. Directives are composed of
- one or more whitespace characters, non-whitespace characters,
- and format specifications.
-
- Whitespace characters are blank (<< >>), tab (<<\t>>), or
- newline (<<\n>>).
- When <<scanf>> encounters a whitespace character in the format string
- it will read (but not store) all consecutive whitespace characters
- up to the next non-whitespace character in the input.
-
- Non-whitespace characters are all other ASCII characters except the
- percent sign (<<%>>). When <<scanf>> encounters a non-whitespace
- character in the format string it will read, but not store
- a matching non-whitespace character.
-
- Format specifications tell <<scanf>> to read and convert characters
- from the input field into specific types of values, and store then
- in the locations specified by the address arguments.
-
- Trailing whitespace is left unread unless explicitly
- matched in the format string.
-
- The format specifiers must begin with a percent sign (<<%>>)
- and have the following form:
-
-. %[*][<[width]>][<[size]>]<[type]>
-
- Each format specification begins with the percent character (<<%>>).
- The other fields are:
- o+
- o *
- an optional marker; if present, it suppresses interpretation and
- assignment of this input field.
-
- o <[width]>
- an optional maximum field width: a decimal integer,
- which controls the maximum number of characters that
- will be read before converting the current input field. If the
- input field has fewer than <[width]> characters, <<scanf>>
- reads all the characters in the field, and then
- proceeds with the next field and its format specification.
-
- If a whitespace or a non-convertable character occurs
- before <[width]> character are read, the characters up
- to that character are read, converted, and stored.
- Then <<scanf>> proceeds to the next format specification.
-
- o size
- <<h>>, <<l>>, and <<L>> are optional size characters which
- override the default way that <<scanf>> interprets the
- data type of the corresponding argument.
-
-
-.Modifier Type(s)
-. h d, i, o, u, x convert input to short,
-. store in short object
-.
-. h D, I, O, U, X no effect
-. e, f, c, s, n, p
-.
-. l d, i, o, u, x convert input to long,
-. store in long object
-.
-. l e, f, g convert input to double
-. store in a double object
-.
-. l D, I, O, U, X no effect
-. c, s, n, p
-.
-. L d, i, o, u, x convert to long double,
-. store in long double
-.
-. L all others no effect
-
-
- o <[type]>
-
- A character to specify what kind of conversion
- <<scanf>> performs. Here is a table of the conversion
- characters:
-
- o+
- o %
- No conversion is done; the percent character (<<%>>) is stored.
-
- o c
- Scans one character. Corresponding <[arg]>: <<(char *arg)>>.
-
- o s
- Reads a character string into the array supplied.
- Corresponding <[arg]>: <<(char arg[])>>.
-
- o [<[pattern]>]
- Reads a non-empty character string into memory
- starting at <[arg]>. This area must be large
- enough to accept the sequence and a
- terminating null character which will be added
- automatically. (<[pattern]> is discussed in the paragraph following
- this table). Corresponding <[arg]>: <<(char *arg)>>.
-
- o d
- Reads a decimal integer into the corresponding <[arg]>: <<(int *arg)>>.
-
- o D
- Reads a decimal integer into the corresponding
- <[arg]>: <<(long *arg)>>.
-
- o o
- Reads an octal integer into the corresponding <[arg]>: <<(int *arg)>>.
-
- o O
- Reads an octal integer into the corresponding <[arg]>: <<(long *arg)>>.
-
- o u
- Reads an unsigned decimal integer into the corresponding
- <[arg]>: <<(unsigned int *arg)>>.
-
-
- o U
- Reads an unsigned decimal integer into the corresponding <[arg]>:
- <<(unsigned long *arg)>>.
-
- o x,X
- Read a hexadecimal integer into the corresponding <[arg]>:
- <<(int *arg)>>.
-
- o e, f, g
- Read a floating point number into the corresponding <[arg]>:
- <<(float *arg)>>.
-
- o E, F, G
- Read a floating point number into the corresponding <[arg]>:
- <<(double *arg)>>.
-
- o i
- Reads a decimal, octal or hexadecimal integer into the
- corresponding <[arg]>: <<(int *arg)>>.
-
- o I
- Reads a decimal, octal or hexadecimal integer into the
- corresponding <[arg]>: <<(long *arg)>>.
-
- o n
- Stores the number of characters read in the corresponding
- <[arg]>: <<(int *arg)>>.
-
- o p
- Stores a scanned pointer. ANSI C leaves the details
- to each implementation; this implementation treats
- <<%p>> exactly the same as <<%U>>. Corresponding
- <[arg]>: <<(void **arg)>>.
- o-
-
- A <[pattern]> of characters surrounded by square brackets can be used
- instead of the <<s>> type character. <[pattern]> is a set of
- characters which define a search set of possible characters making up
- the <<scanf>> input field. If the first character in the brackets is a
- caret (<<^>>), the search set is inverted to include all ASCII characters
- except those between the brackets. There is also a range facility
- which you can use as a shortcut. <<%[0-9] >> matches all decimal digits.
- The hyphen must not be the first or last character in the set.
- The character prior to the hyphen must be lexically less than the
- character after it.
-
- Here are some <[pattern]> examples:
- o+
- o %[abcd]
- matches strings containing only <<a>>, <<b>>, <<c>>, and <<d>>.
-
- o %[^abcd]
- matches strings containing any characters except <<a>>, <<b>>,
- <<c>>, or <<d>>
-
- o %[A-DW-Z]
- matches strings containing <<A>>, <<B>>, <<C>>, <<D>>, <<W>>,
- <<X>>, <<Y>>, <<Z>>
-
- o %[z-a]
- matches the characters <<z>>, <<->>, and <<a>>
- o-
-
- Floating point numbers (for field types <<e>>, <<f>>, <<g>>, <<E>>,
- <<F>>, <<G>>) must correspond to the following general form:
-
-. [+/-] ddddd[.]ddd [E|e[+|-]ddd]
-
- where objects inclosed in square brackets are optional, and <<ddd>>
- represents decimal, octal, or hexadecimal digits.
- o-
-
-RETURNS
- <<scanf>> returns the number of input fields successfully
- scanned, converted and stored; the return value does
- not include scanned fields which were not stored.
-
- If <<scanf>> attempts to read at end-of-file, the return
- value is <<EOF>>.
-
- If no fields were stored, the return value is <<0>>.
-
- <<scanf>> might stop scanning a particular field before
- reaching the normal field end character, or may
- terminate entirely.
-
- <<scanf>> stops scanning and storing the current field
- and moves to the next input field (if any)
- in any of the following situations:
-
- O+
- o The assignment suppressing character (<<*>>) appears
- after the <<%>> in the format specification; the current
- input field is scanned but not stored.
-
- o <[width]> characters have been read (<[width]> is a
- width specification, a positive decimal integer).
-
- o The next character read cannot be converted
- under the the current format (for example,
- if a <<Z>> is read when the format is decimal).
-
- o The next character in the input field does not appear
- in the search set (or does appear in the inverted search set).
- O-
-
- When <<scanf>> stops scanning the current input field for one of
- these reasons, the next character is considered unread and
- used as the first character of the following input field, or the
- first character in a subsequent read operation on the input.
-
- <<scanf>> will terminate under the following circumstances:
-
- O+
- o The next character in the input field conflicts
- with a corresponding non-whitespace character in the
- format string.
-
- o The next character in the input field is <<EOF>>.
-
- o The format string has been exhausted.
- O-
-
- When the format string contains a character sequence that is
- not part of a format specification, the same character
- sequence must appear in the input; <<scanf>> will
- scan but not store the matched characters. If a
- conflict occurs, the first conflicting character remains in the input
- as if it had never been read.
-
-PORTABILITY
-<<scanf>> is ANSI C.
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
-<<lseek>>, <<read>>, <<sbrk>>, <<write>>.
-*/
-
-#include <_ansi.h>
-#include <reent.h>
-#include <stdio.h>
-#include <string.h>
-#ifdef _HAVE_STDC
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-#include "local.h"
-
-/* | ARGSUSED */
-/*SUPPRESS 590*/
-static
-_READ_WRITE_RETURN_TYPE
-eofread (cookie, buf, len)
- _PTR cookie;
- char *buf;
- int len;
-{
- return 0;
-}
-
-#ifndef _REENT_ONLY
-
-#ifdef _HAVE_STDC
-int
-_DEFUN (sscanf, (str, fmt), _CONST char *str _AND _CONST char *fmt _DOTS)
-#else
-int
-sscanf (str, fmt, va_alist)
- _CONST char *str;
- _CONST char *fmt;
- va_dcl
-#endif
-{
- int ret;
- va_list ap;
- FILE f;
-
- f._flags = __SRD;
- f._bf._base = f._p = (unsigned char *) str;
- f._bf._size = f._r = strlen (str);
- f._read = eofread;
- f._ub._base = NULL;
- f._lb._base = NULL;
- f._data = _REENT;
-#ifdef _HAVE_STDC
- va_start (ap, fmt);
-#else
- va_start (ap);
-#endif
- ret = __svfscanf_r (_REENT, &f, fmt, ap);
- va_end (ap);
- return ret;
-}
-
-#endif /* !_REENT_ONLY */
-
-#ifdef _HAVE_STDC
-int
-_DEFUN (_sscanf_r, (ptr, str, fmt), struct _reent *ptr _AND _CONST char *str _AND _CONST char *fmt _DOTS)
-#else
-int
-_sscanf_r (ptr, str, fmt, va_alist)
- struct _reent *ptr;
- _CONST char *str;
- _CONST char *fmt;
- va_dcl
-#endif
-{
- int ret;
- va_list ap;
- FILE f;
-
- f._flags = __SRD;
- f._bf._base = f._p = (unsigned char *) str;
- f._bf._size = f._r = strlen (str);
- f._read = eofread;
- f._ub._base = NULL;
- f._lb._base = NULL;
- f._data = _REENT;
-#ifdef _HAVE_STDC
- va_start (ap, fmt);
-#else
- va_start (ap);
-#endif
- ret = __svfscanf_r (ptr, &f, fmt, ap);
- va_end (ap);
- return ret;
-}
diff --git a/newlib/libc/stdio/stdio.c b/newlib/libc/stdio/stdio.c
deleted file mode 100644
index b0c759fdb..000000000
--- a/newlib/libc/stdio/stdio.c
+++ /dev/null
@@ -1,132 +0,0 @@
-/* No user fns here. Pesch 15apr92. */
-
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <fcntl.h>
-#include <sys/unistd.h>
-#include "local.h"
-
-/*
- * Small standard I/O/seek/close functions.
- * These maintain the `known seek offset' for seek optimisation.
- */
-
-_READ_WRITE_RETURN_TYPE
-__sread (cookie, buf, n)
- _PTR cookie;
- char *buf;
- int n;
-{
- register FILE *fp = (FILE *) cookie;
- register int ret;
-
-#ifdef __SCLE
- int oldmode = 0;
- if (fp->_flags & __SCLE)
- oldmode = setmode(fp->_file, O_BINARY);
-#endif
-
- ret = _read_r (fp->_data, fp->_file, buf, n);
-
-#ifdef __SCLE
- if (oldmode)
- setmode(fp->_file, oldmode);
-#endif
-
- /* If the read succeeded, update the current offset. */
-
- if (ret >= 0)
- fp->_offset += ret;
- else
- fp->_flags &= ~__SOFF; /* paranoia */
- return ret;
-}
-
-_READ_WRITE_RETURN_TYPE
-__swrite (cookie, buf, n)
- _PTR cookie;
- char _CONST *buf;
- int n;
-{
- register FILE *fp = (FILE *) cookie;
- int w;
-#ifdef __SCLE
- int oldmode=0;
-#endif
-
- if (fp->_flags & __SAPP)
- (void) _lseek_r (fp->_data, fp->_file, (off_t) 0, SEEK_END);
- fp->_flags &= ~__SOFF; /* in case O_APPEND mode is set */
-
-#ifdef __SCLE
- if (fp->_flags & __SCLE)
- oldmode = setmode(fp->_file, O_BINARY);
-#endif
-
- w = _write_r (fp->_data, fp->_file, buf, n);
-
-#ifdef __SCLE
- if (oldmode)
- setmode(fp->_file, oldmode);
-#endif
-
- return w;
-}
-
-fpos_t
-__sseek (cookie, offset, whence)
- _PTR cookie;
- fpos_t offset;
- int whence;
-{
- register FILE *fp = (FILE *) cookie;
- register off_t ret;
-
- ret = _lseek_r (fp->_data, fp->_file, (off_t) offset, whence);
- if (ret == -1L)
- fp->_flags &= ~__SOFF;
- else
- {
- fp->_flags |= __SOFF;
- fp->_offset = ret;
- }
- return ret;
-}
-
-int
-__sclose (cookie)
- _PTR cookie;
-{
- FILE *fp = (FILE *) cookie;
-
- return _close_r (fp->_data, fp->_file);
-}
-
-#ifdef __SCLE
-int
-__stextmode (int fd)
-{
-#ifdef __CYGWIN__
- return _cygwin_istext_for_stdio (fd);
-#else
- return 0;
-#endif
-}
-#endif
diff --git a/newlib/libc/stdio/stdio.tex b/newlib/libc/stdio/stdio.tex
deleted file mode 100644
index 217aed1ef..000000000
--- a/newlib/libc/stdio/stdio.tex
+++ /dev/null
@@ -1,192 +0,0 @@
-@node Stdio
-@chapter Input and Output (@file{stdio.h})
-
-This chapter comprises functions to manage files
-or other input/output streams. Among these functions are subroutines
-to generate or scan strings according to specifications from a format string.
-
-The underlying facilities for input and output depend on the host
-system, but these functions provide a uniform interface.
-
-The corresponding declarations are in @file{stdio.h}.
-
-The reentrant versions of these functions use macros
-
-@example
-_stdin_r(@var{reent})
-_stdout_r(@var{reent})
-_stderr_r(@var{reent})
-@end example
-
-@noindent
-instead of the globals @code{stdin}, @code{stdout}, and
-@code{stderr}. The argument <[reent]> is a pointer to a reentrancy
-structure.
-
-@menu
-* clearerr:: Clear file or stream error indicator
-* fclose:: Close a file
-* feof:: Test for end of file
-* ferror:: Test whether read/write error has occurred
-* fflush:: Flush buffered file output
-* fgetc:: Get a character from a file or stream
-* fgetpos:: Record position in a stream or file
-* fgets:: Get character string from a file or stream
-* fiprintf:: Write formatted output to file (integer only)
-* fopen:: Open a file
-* fdopen:: Turn an open file into a stream
-* fputc:: Write a character on a stream or file
-* fputs:: Write a character string in a file or stream
-* fread:: Read array elements from a file
-* freopen:: Open a file using an existing file descriptor
-* fseek:: Set file position
-* fsetpos:: Restore position of a stream or file
-* ftell:: Return position in a stream or file
-* fwrite:: Write array elements from memory to a file or stream
-* getc:: Get a character from a file or stream (macro)
-* getchar:: Get a character from standard input (macro)
-* gets:: Get character string from standard input (obsolete)
-* getw:: Get a word (int) from a file or stream
-* iprintf:: Write formatted output (integer only)
-* mktemp:: Generate unused file name
-* perror:: Print an error message on standard error
-* putc:: Write a character on a stream or file (macro)
-* putchar:: Write a character on standard output (macro)
-* puts:: Write a character string on standard output
-* putw:: Write a word (int) to a file or stream
-* remove:: Delete a file's name
-* rename:: Rename a file
-* rewind:: Reinitialize a file or stream
-* setbuf:: Specify full buffering for a file or stream
-* setvbuf:: Specify buffering for a file or stream
-* siprintf:: Write formatted output (integer only)
-* printf:: Write formatted output
-* scanf:: Scan and format input
-* tmpfile:: Create a temporary file
-* tmpnam:: Generate name for a temporary file
-* vprintf:: Format variable argument list
-@end menu
-
-@page
-@include stdio/clearerr.def
-
-@page
-@include stdio/fclose.def
-
-@page
-@include stdio/feof.def
-
-@page
-@include stdio/ferror.def
-
-@page
-@include stdio/fflush.def
-
-@page
-@include stdio/fgetc.def
-
-@page
-@include stdio/fgetpos.def
-
-@page
-@include stdio/fgets.def
-
-@page
-@include stdio/fiprintf.def
-
-@page
-@include stdio/fopen.def
-
-@page
-@include stdio/fdopen.def
-
-@page
-@include stdio/fputc.def
-
-@page
-@include stdio/fputs.def
-
-@page
-@include stdio/fread.def
-
-@page
-@include stdio/freopen.def
-
-@page
-@include stdio/fseek.def
-
-@page
-@include stdio/fsetpos.def
-
-@page
-@include stdio/ftell.def
-
-@page
-@include stdio/fwrite.def
-
-@page
-@include stdio/getc.def
-
-@page
-@include stdio/getchar.def
-
-@page
-@include stdio/gets.def
-
-@page
-@include stdio/getw.def
-
-@page
-@include stdio/iprintf.def
-
-@page
-@include stdio/mktemp.def
-
-@page
-@include stdio/perror.def
-
-@page
-@include stdio/putc.def
-
-@page
-@include stdio/putchar.def
-
-@page
-@include stdio/puts.def
-
-@page
-@include stdio/putw.def
-
-@page
-@include stdio/remove.def
-
-@page
-@include stdio/rename.def
-
-@page
-@include stdio/rewind.def
-
-@page
-@include stdio/setbuf.def
-
-@page
-@include stdio/setvbuf.def
-
-@page
-@include stdio/siprintf.def
-
-@page
-@include stdio/sprintf.def
-
-@page
-@include stdio/sscanf.def
-
-@page
-@include stdio/tmpfile.def
-
-@page
-@include stdio/tmpnam.def
-
-@page
-@include stdio/vfprintf.def
-
diff --git a/newlib/libc/stdio/tmpfile.c b/newlib/libc/stdio/tmpfile.c
deleted file mode 100644
index 4b31396e2..000000000
--- a/newlib/libc/stdio/tmpfile.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
-FUNCTION
-<<tmpfile>>---create a temporary file
-
-INDEX
- tmpfile
-INDEX
- _tmpfile_r
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- FILE *tmpfile(void);
-
- FILE *_tmpfile_r(void *<[reent]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- FILE *tmpfile();
-
- FILE *_tmpfile_r(<[reent]>)
- char *<[reent]>;
-
-DESCRIPTION
-Create a temporary file (a file which will be deleted automatically),
-using a name generated by <<tmpnam>>. The temporary file is opened with
-the mode <<"wb+">>, permitting you to read and write anywhere in it
-as a binary file (without any data transformations the host system may
-perform for text files).
-
-The alternate function <<_tmpfile_r>> is a reentrant version. The
-argument <[reent]> is a pointer to a reentrancy structure.
-
-RETURNS
-<<tmpfile>> normally returns a pointer to the temporary file. If no
-temporary file could be created, the result is NULL, and <<errno>>
-records the reason for failure.
-
-PORTABILITY
-Both ANSI C and the System V Interface Definition (Issue 2) require
-<<tmpfile>>.
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<getpid>>,
-<<isatty>>, <<lseek>>, <<open>>, <<read>>, <<sbrk>>, <<write>>.
-
-<<tmpfile>> also requires the global pointer <<environ>>.
-*/
-
-#include <stdio.h>
-#include <errno.h>
-
-FILE *
-_DEFUN (_tmpfile_r, (ptr),
- struct _reent *ptr)
-{
- FILE *fp;
- int e;
- char *f;
- char buf[L_tmpnam];
-
- if ((f = _tmpnam_r (ptr, buf)) == NULL)
- return NULL;
- fp = fopen (f, "wb+");
- e = ptr->_errno;
- _CAST_VOID remove (f);
- ptr->_errno = e;
- return fp;
-}
-
-#ifndef _REENT_ONLY
-
-FILE *
-_DEFUN_VOID (tmpfile)
-{
- return _tmpfile_r (_REENT);
-}
-
-#endif
diff --git a/newlib/libc/stdio/tmpnam.c b/newlib/libc/stdio/tmpnam.c
deleted file mode 100644
index ec346c878..000000000
--- a/newlib/libc/stdio/tmpnam.c
+++ /dev/null
@@ -1,209 +0,0 @@
-/*
- * tmpname.c
- * Original Author: G. Haley
- */
-
-/*
-FUNCTION
-<<tmpnam>>, <<tempnam>>---name for a temporary file
-
-INDEX
- tmpnam
-INDEX
- tempnam
-INDEX
- _tmpnam_r
-INDEX
- _tempnam_r
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- char *tmpnam(char *<[s]>);
- char *tempnam(char *<[dir]>, char *<[pfx]>);
- char *_tmpnam_r(void *<[reent]>, char *<[s]>);
- char *_tempnam_r(void *<[reent]>, char *<[dir]>, char *<[pfx]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- char *tmpnam(<[s]>)
- char *<[s]>;
-
- char *tempnam(<[dir]>, <[pfx]>)
- char *<[dir]>;
- char *<[pfx]>;
-
- char *_tmpnam_r(<[reent]>, <[s]>)
- char *<[reent]>;
- char *<[s]>;
-
- char *_tempnam_r(<[reent]>, <[dir]>, <[pfx]>)
- char *<[reent]>;
- char *<[dir]>;
- char *<[pfx]>;
-
-DESCRIPTION
-Use either of these functions to generate a name for a temporary file.
-The generated name is guaranteed to avoid collision with other files
-(for up to <<TMP_MAX>> calls of either function).
-
-<<tmpnam>> generates file names with the value of <<P_tmpdir>>
-(defined in `<<stdio.h>>') as the leading directory component of the path.
-
-You can use the <<tmpnam>> argument <[s]> to specify a suitable area
-of memory for the generated filename; otherwise, you can call
-<<tmpnam(NULL)>> to use an internal static buffer.
-
-<<tempnam>> allows you more control over the generated filename: you
-can use the argument <[dir]> to specify the path to a directory for
-temporary files, and you can use the argument <[pfx]> to specify a
-prefix for the base filename.
-
-If <[dir]> is <<NULL>>, <<tempnam>> will attempt to use the value of
-environment variable <<TMPDIR>> instead; if there is no such value,
-<<tempnam>> uses the value of <<P_tmpdir>> (defined in `<<stdio.h>>').
-
-If you don't need any particular prefix to the basename of temporary
-files, you can pass <<NULL>> as the <[pfx]> argument to <<tempnam>>.
-
-<<_tmpnam_r>> and <<_tempnam_r>> are reentrant versions of <<tmpnam>>
-and <<tempnam>> respectively. The extra argument <[reent]> is a
-pointer to a reentrancy structure.
-
-WARNINGS
-The generated filenames are suitable for temporary files, but do not
-in themselves make files temporary. Files with these names must still
-be explicitly removed when you no longer want them.
-
-If you supply your own data area <[s]> for <<tmpnam>>, you must ensure
-that it has room for at least <<L_tmpnam>> elements of type <<char>>.
-
-RETURNS
-Both <<tmpnam>> and <<tempnam>> return a pointer to the newly
-generated filename.
-
-PORTABILITY
-ANSI C requires <<tmpnam>>, but does not specify the use of
-<<P_tmpdir>>. The System V Interface Definition (Issue 2) requires
-both <<tmpnam>> and <<tempnam>>.
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<getpid>>,
-<<isatty>>, <<lseek>>, <<open>>, <<read>>, <<sbrk>>, <<write>>.
-
-The global pointer <<environ>> is also required.
-*/
-
-#include <_ansi.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <fcntl.h>
-#include <reent.h>
-#include <errno.h>
-
-/* Try to open the file specified, if it can't be opened then try
- another one. Return nonzero if successful, otherwise zero. */
-
-static int
-worker (ptr, result, part1, part2, part3, part4)
- struct _reent *ptr;
- char *result;
- _CONST char *part1;
- _CONST char *part2;
- int part3;
- int *part4;
-{
- /* Generate the filename and make sure that there isn't one called
- it already. */
-
- while (1)
- {
- int t;
- _sprintf_r (ptr, result, "%s/%s%x.%x", part1, part2, part3, *part4);
- (*part4)++;
- t = _open_r (ptr, result, O_RDONLY, 0);
- if (t == -1)
- {
- if (ptr->_errno == ENOSYS)
- {
- result[0] = '\0';
- return 0;
- }
- break;
- }
- _close_r (ptr, t);
- }
- return 1;
-}
-
-char *
-_DEFUN (_tmpnam_r, (p, s),
- struct _reent *p _AND
- char *s)
-{
- char *result;
- int pid;
-
- if (s == NULL)
- {
- /* ANSI states we must use an internal static buffer if s is NULL */
- _REENT_CHECK_EMERGENCY(p);
- result = _REENT_EMERGENCY(p);
- }
- else
- {
- result = s;
- }
- pid = _getpid_r (p);
-
- if (worker (p, result, P_tmpdir, "t", pid, &p->_inc))
- {
- p->_inc++;
- return result;
- }
-
- return NULL;
-}
-
-char *
-_DEFUN (_tempnam_r, (p, dir, pfx),
- struct _reent *p _AND
- _CONST char *dir _AND
- _CONST char *pfx)
-{
- char *filename;
- int length;
- _CONST char *prefix = (pfx) ? pfx : "";
- if (dir == NULL && (dir = getenv ("TMPDIR")) == NULL)
- dir = P_tmpdir;
-
- /* two 8 digit numbers + . / */
- length = strlen (dir) + strlen (prefix) + (4 * sizeof (int)) + 2 + 1;
-
- filename = _malloc_r (p, length);
- if (filename)
- {
- if (! worker (p, filename, dir, prefix,
- _getpid_r (p) ^ (int) (_POINTER_INT) p, &p->_inc))
- return NULL;
- }
- return filename;
-}
-
-#ifndef _REENT_ONLY
-
-char *
-_DEFUN (tempnam, (dir, pfx),
- _CONST char *dir _AND
- _CONST char *pfx)
-{
- return _tempnam_r (_REENT, dir, pfx);
-}
-
-char *
-_DEFUN (tmpnam, (s),
- char *s)
-{
- return _tmpnam_r (_REENT, s);
-}
-
-#endif
diff --git a/newlib/libc/stdio/ungetc.c b/newlib/libc/stdio/ungetc.c
deleted file mode 100644
index 9e54e5ebf..000000000
--- a/newlib/libc/stdio/ungetc.c
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "%W% (Berkeley) %G%";
-#endif /* LIBC_SCCS and not lint */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "local.h"
-
-/*
- * Expand the ungetc buffer `in place'. That is, adjust fp->_p when
- * the buffer moves, so that it points the same distance from the end,
- * and move the bytes in the buffer around as necessary so that they
- * are all at the end (stack-style).
- */
-
-/*static*/
-int
-__submore (fp)
- register FILE *fp;
-{
- register int i;
- register unsigned char *p;
-
- if (fp->_ub._base == fp->_ubuf)
- {
- /*
- * Get a new buffer (rather than expanding the old one).
- */
- if ((p = (unsigned char *) _malloc_r (fp->_data, (size_t) BUFSIZ)) == NULL)
- return EOF;
- fp->_ub._base = p;
- fp->_ub._size = BUFSIZ;
- p += BUFSIZ - sizeof (fp->_ubuf);
- for (i = sizeof (fp->_ubuf); --i >= 0;)
- p[i] = fp->_ubuf[i];
- fp->_p = p;
- return 0;
- }
- i = fp->_ub._size;
- p = (unsigned char *) _realloc_r (fp->_data, (_PTR) (fp->_ub._base), i << 1);
- if (p == NULL)
- return EOF;
- (void) memcpy ((void *) (p + i), (void *) p, (size_t) i);
- fp->_p = p + i;
- fp->_ub._base = p;
- fp->_ub._size = i << 1;
- return 0;
-}
-
-int
-ungetc (c, fp)
- int c;
- register FILE *fp;
-{
- if (c == EOF)
- return (EOF);
-
- _flockfile(fp);
-
- /* Ensure stdio has been initialized.
- ??? Might be able to remove this as some other stdio routine should
- have already been called to get the char we are un-getting. */
-
- CHECK_INIT (fp);
-
- /* After ungetc, we won't be at eof anymore */
- fp->_flags &= ~__SEOF;
-
- if ((fp->_flags & __SRD) == 0)
- {
- /*
- * Not already reading: no good unless reading-and-writing.
- * Otherwise, flush any current write stuff.
- */
- if ((fp->_flags & __SRW) == 0)
- {
- _funlockfile(fp);
- return EOF;
- }
- if (fp->_flags & __SWR)
- {
- if (fflush (fp))
- {
- _funlockfile(fp);
- return EOF;
- }
- fp->_flags &= ~__SWR;
- fp->_w = 0;
- fp->_lbfsize = 0;
- }
- fp->_flags |= __SRD;
- }
- c = (unsigned char) c;
-
- /*
- * If we are in the middle of ungetc'ing, just continue.
- * This may require expanding the current ungetc buffer.
- */
-
- if (HASUB (fp))
- {
- if (fp->_r >= fp->_ub._size && __submore (fp))
- {
- _funlockfile(fp);
- return EOF;
- }
- *--fp->_p = c;
- fp->_r++;
- _funlockfile(fp);
- return c;
- }
-
- /*
- * If we can handle this by simply backing up, do so,
- * but never replace the original character.
- * (This makes sscanf() work when scanning `const' data.)
- */
-
- if (fp->_bf._base != NULL && fp->_p > fp->_bf._base && fp->_p[-1] == c)
- {
- fp->_p--;
- fp->_r++;
- _funlockfile(fp);
- return c;
- }
-
- /*
- * Create an ungetc buffer.
- * Initially, we will use the `reserve' buffer.
- */
-
- fp->_ur = fp->_r;
- fp->_up = fp->_p;
- fp->_ub._base = fp->_ubuf;
- fp->_ub._size = sizeof (fp->_ubuf);
- fp->_ubuf[sizeof (fp->_ubuf) - 1] = c;
- fp->_p = &fp->_ubuf[sizeof (fp->_ubuf) - 1];
- fp->_r = 1;
- _funlockfile(fp);
- return c;
-}
diff --git a/newlib/libc/stdio/vasprintf.c b/newlib/libc/stdio/vasprintf.c
deleted file mode 100644
index 7f35752c7..000000000
--- a/newlib/libc/stdio/vasprintf.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/* doc in vfprintf.c */
-
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/* This code was based on vsprintf.c */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "%W% (Berkeley) %G%";
-#endif /* LIBC_SCCS and not lint */
-
-#include <_ansi.h>
-#include <reent.h>
-#include <stdio.h>
-#include <limits.h>
-#ifdef _HAVE_STDC
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-
-int
-_DEFUN (vasprintf, (strp, fmt, ap),
- char **strp _AND
- _CONST char *fmt _AND
- va_list ap)
-{
- int ret;
- FILE f;
-
- f._flags = __SWR | __SSTR | __SMBF;
- f._bf._base = f._p = NULL;
- f._bf._size = f._w = 0;
- f._data = _REENT;
- ret = vfprintf (&f, fmt, ap);
- *f._p = 0;
- *strp = f._bf._base;
- return ret;
-}
-
-int
-_DEFUN (_vasprintf_r, (ptr, strp, fmt, ap),
- struct _reent *ptr _AND
- char **strp _AND
- _CONST char *fmt _AND
- va_list ap)
-{
- int ret;
- FILE f;
-
- f._flags = __SWR | __SSTR | __SMBF ;
- f._bf._base = f._p = NULL;
- f._bf._size = f._w = 0;
- f._data = ptr;
- ret = _vfprintf_r (ptr, &f, fmt, ap);
- *f._p = 0;
- *strp = f._bf._base;
- return ret;
-}
-
diff --git a/newlib/libc/stdio/vfieeefp.h b/newlib/libc/stdio/vfieeefp.h
deleted file mode 100644
index 1b240fcde..000000000
--- a/newlib/libc/stdio/vfieeefp.h
+++ /dev/null
@@ -1,284 +0,0 @@
-/****************************************************************
- *
- * The author of this software is David M. Gay.
- *
- * Copyright (c) 1991 by AT&T.
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose without fee is hereby granted, provided that this entire notice
- * is included in all copies of any software which is or includes a copy
- * or modification of this software and in all copies of the supporting
- * documentation for such software.
- *
- * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR AT&T MAKES ANY
- * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
- * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
- *
- ***************************************************************/
-
-/* Please send bug reports to
- David M. Gay
- AT&T Bell Laboratories, Room 2C-463
- 600 Mountain Avenue
- Murray Hill, NJ 07974-2070
- U.S.A.
- dmg@research.att.com or research!dmg
- */
-
-/* This header file is a modification of mprec.h that only contains floating
- point union code. */
-
-#include <ieeefp.h>
-#include <math.h>
-#include <float.h>
-#include <errno.h>
-#include <sys/config.h>
-
-#ifdef __IEEE_LITTLE_ENDIAN
-#define IEEE_8087
-#endif
-
-#ifdef __IEEE_BIG_ENDIAN
-#define IEEE_MC68k
-#endif
-
-#ifdef __Z8000__
-#define Just_16
-#endif
-
-#ifdef Unsigned_Shifts
-#define Sign_Extend(a,b) if (b < 0) a |= (__uint32_t)0xffff0000;
-#else
-#define Sign_Extend(a,b) /*no-op*/
-#endif
-
-#if defined(IEEE_8087) + defined(IEEE_MC68k) + defined(VAX) + defined(IBM) != 1
-Exactly one of IEEE_8087, IEEE_MC68k, VAX, or IBM should be defined.
-#endif
-
-#ifdef WANT_IO_LONG_DBL
-/* If we are going to examine or modify specific bits in a long double using
- the lword0 or lwordx macros, then we must wrap the long double inside
- a union. This is necessary to avoid undefined behavior according to
- the ANSI C spec. */
-
-#ifdef IEEE_8087
-#if LDBL_MANT_DIG == 24
-struct ldieee
-{
- unsigned manh:23;
- unsigned exp:8;
- unsigned sign:1;
-};
-#elif LDBL_MANT_DIG == 53
-struct ldieee
-{
- unsigned manl:20;
- unsigned manh:32;
- unsigned exp:11;
- unsigned sign:1;
-};
-#elif LDBL_MANT_DIG == 64
-struct ldieee
-{
- unsigned manl:32;
- unsigned manh:32;
- unsigned exp:15;
- unsigned sign:1;
-};
-#elif LDBL_MANT_DIG > 64
-struct ldieee
-{
- unsigned manl3:16;
- unsigned manl2:32;
- unsigned manl:32;
- unsigned manh:32;
- unsigned exp:15;
- unsigned sign:1;
-};
-#endif /* LDBL_MANT_DIG */
-#else /* !IEEE_8087 */
-#if LDBL_MANT_DIG == 24
-struct ldieee
-{
- unsigned sign:1;
- unsigned exp:8;
- unsigned manh:23;
-};
-#elif LDBL_MANT_DIG == 53
-struct ldieee
-{
- unsigned sign:1;
- unsigned exp:11;
- unsigned manh:32;
- unsigned manl:20;
-};
-#elif LDBL_MANT_DIG == 64
-struct ldieee
-{
- unsigned sign:1;
- unsigned exp:15;
- unsigned manh:32;
- unsigned manl:32;
-};
-#elif LDBL_MANT_DIG > 64
-struct ldieee
-{
- unsigned sign:1;
- unsigned exp:15;
- unsigned manh:32;
- unsigned manl:32;
- unsigned manl2:32;
- unsigned manl3;16;
-};
-#endif /* LDBL_MANT_DIG */
-#endif /* !IEEE_8087 */
-#endif /* WANT_IO_LONG_DBL */
-
-/* If we are going to examine or modify specific bits in a double using
- the word0 and/or word1 macros, then we must wrap the double inside
- a union. This is necessary to avoid undefined behavior according to
- the ANSI C spec. */
-union double_union
-{
- double d;
- __uint32_t i[2];
-};
-
-#ifdef IEEE_8087
-#define word0(x) (x.i[1])
-#define word1(x) (x.i[0])
-#else
-#define word0(x) (x.i[0])
-#define word1(x) (x.i[1])
-#endif
-
-/* #define P DBL_MANT_DIG */
-/* Ten_pmax = floor(P*log(2)/log(5)) */
-/* Bletch = (highest power of 2 < DBL_MAX_10_EXP) / 16 */
-/* Quick_max = floor((P-1)*log(FLT_RADIX)/log(10) - 1) */
-/* Int_max = floor(P*log(FLT_RADIX)/log(10) - 1) */
-
-#if defined(IEEE_8087) + defined(IEEE_MC68k)
-#if defined (_DOUBLE_IS_32BITS)
-#define Exp_shift 23
-#define Exp_shift1 23
-#define Exp_msk1 ((__uint32_t)0x00800000L)
-#define Exp_msk11 ((__uint32_t)0x00800000L)
-#define Exp_mask ((__uint32_t)0x7f800000L)
-#define P 24
-#define Bias 127
-#if 0
-#define IEEE_Arith /* it is, but the code doesn't handle IEEE singles yet */
-#endif
-#define Emin (-126)
-#define Exp_1 ((__uint32_t)0x3f800000L)
-#define Exp_11 ((__uint32_t)0x3f800000L)
-#define Ebits 8
-#define Frac_mask ((__uint32_t)0x007fffffL)
-#define Frac_mask1 ((__uint32_t)0x007fffffL)
-#define Ten_pmax 10
-#define Sign_bit ((__uint32_t)0x80000000L)
-#define Ten_pmax 10
-#define Bletch 2
-#define Bndry_mask ((__uint32_t)0x007fffffL)
-#define Bndry_mask1 ((__uint32_t)0x007fffffL)
-#define LSB 1
-#define Sign_bit ((__uint32_t)0x80000000L)
-#define Log2P 1
-#define Tiny0 0
-#define Tiny1 1
-#define Quick_max 5
-#define Int_max 6
-#define Infinite(x) (word0(x) == ((__uint32_t)0x7f800000L))
-#undef word0
-#undef word1
-
-#define word0(x) (x.i[0])
-#define word1(x) 0
-#else
-
-#define Exp_shift 20
-#define Exp_shift1 20
-#define Exp_msk1 ((__uint32_t)0x100000L)
-#define Exp_msk11 ((__uint32_t)0x100000L)
-#define Exp_mask ((__uint32_t)0x7ff00000L)
-#define P 53
-#define Bias 1023
-#define IEEE_Arith
-#define Emin (-1022)
-#define Exp_1 ((__uint32_t)0x3ff00000L)
-#define Exp_11 ((__uint32_t)0x3ff00000L)
-#define Ebits 11
-#define Frac_mask ((__uint32_t)0xfffffL)
-#define Frac_mask1 ((__uint32_t)0xfffffL)
-#define Ten_pmax 22
-#define Bletch 0x10
-#define Bndry_mask ((__uint32_t)0xfffffL)
-#define Bndry_mask1 ((__uint32_t)0xfffffL)
-#define LSB 1
-#define Sign_bit ((__uint32_t)0x80000000L)
-#define Log2P 1
-#define Tiny0 0
-#define Tiny1 1
-#define Quick_max 14
-#define Int_max 14
-#define Infinite(x) (word0(x) == ((__uint32_t)0x7ff00000L)) /* sufficient test for here */
-#endif
-
-#else
-#undef Sudden_Underflow
-#define Sudden_Underflow
-#ifdef IBM
-#define Exp_shift 24
-#define Exp_shift1 24
-#define Exp_msk1 ((__uint32_t)0x1000000L)
-#define Exp_msk11 ((__uint32_t)0x1000000L)
-#define Exp_mask ((__uint32_t)0x7f000000L)
-#define P 14
-#define Bias 65
-#define Exp_1 ((__uint32_t)0x41000000L)
-#define Exp_11 ((__uint32_t)0x41000000L)
-#define Ebits 8 /* exponent has 7 bits, but 8 is the right value in b2d */
-#define Frac_mask ((__uint32_t)0xffffffL)
-#define Frac_mask1 ((__uint32_t)0xffffffL)
-#define Bletch 4
-#define Ten_pmax 22
-#define Bndry_mask ((__uint32_t)0xefffffL)
-#define Bndry_mask1 ((__uint32_t)0xffffffL)
-#define LSB 1
-#define Sign_bit ((__uint32_t)0x80000000L)
-#define Log2P 4
-#define Tiny0 ((__uint32_t)0x100000L)
-#define Tiny1 0
-#define Quick_max 14
-#define Int_max 15
-#else /* VAX */
-#define Exp_shift 23
-#define Exp_shift1 7
-#define Exp_msk1 0x80
-#define Exp_msk11 ((__uint32_t)0x800000L)
-#define Exp_mask ((__uint32_t)0x7f80L)
-#define P 56
-#define Bias 129
-#define Exp_1 ((__uint32_t)0x40800000L)
-#define Exp_11 ((__uint32_t)0x4080L)
-#define Ebits 8
-#define Frac_mask ((__uint32_t)0x7fffffL)
-#define Frac_mask1 ((__uint32_t)0xffff007fL)
-#define Ten_pmax 24
-#define Bletch 2
-#define Bndry_mask ((__uint32_t)0xffff007fL)
-#define Bndry_mask1 ((__uint32_t)0xffff007fL)
-#define LSB ((__uint32_t)0x10000L)
-#define Sign_bit ((__uint32_t)0x8000L)
-#define Log2P 1
-#define Tiny0 0x80
-#define Tiny1 0
-#define Quick_max 15
-#define Int_max 15
-#endif
-#endif
-
-
diff --git a/newlib/libc/stdio/vfprintf.c b/newlib/libc/stdio/vfprintf.c
deleted file mode 100644
index 82255735e..000000000
--- a/newlib/libc/stdio/vfprintf.c
+++ /dev/null
@@ -1,1600 +0,0 @@
-/*
-FUNCTION
-<<vprintf>>, <<vfprintf>>, <<vsprintf>>---format argument list
-
-INDEX
- vprintf
-INDEX
- vfprintf
-INDEX
- vsprintf
-INDEX
- vsnprintf
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- #include <stdarg.h>
- int vprintf(const char *<[fmt]>, va_list <[list]>);
- int vfprintf(FILE *<[fp]>, const char *<[fmt]>, va_list <[list]>);
- int vsprintf(char *<[str]>, const char *<[fmt]>, va_list <[list]>);
- int vasprintf(char **<[strp]>, const char *<[fmt]>, va_list <[list]>);
- int vsnprintf(char *<[str]>, size_t <[size]>, const char *<[fmt]>, va_list <[list]>);
-
- int _vprintf_r(void *<[reent]>, const char *<[fmt]>,
- va_list <[list]>);
- int _vfprintf_r(void *<[reent]>, FILE *<[fp]>, const char *<[fmt]>,
- va_list <[list]>);
- int _vasprintf_r(void *<[reent]>, char **<[str]>, const char *<[fmt]>,
- va_list <[list]>);
- int _vsprintf_r(void *<[reent]>, char *<[str]>, const char *<[fmt]>,
- va_list <[list]>);
- int _vsnprintf_r(void *<[reent]>, char *<[str]>, size_t <[size]>, const char *<[fmt]>,
- va_list <[list]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- #include <varargs.h>
- int vprintf( <[fmt]>, <[list]>)
- char *<[fmt]>;
- va_list <[list]>;
-
- int vfprintf(<[fp]>, <[fmt]>, <[list]>)
- FILE *<[fp]>;
- char *<[fmt]>;
- va_list <[list]>;
-
- int vasprintf(<[strp]>, <[fmt]>, <[list]>)
- char **<[strp]>;
- char *<[fmt]>;
- va_list <[list]>;
-
- int vsprintf(<[str]>, <[fmt]>, <[list]>)
- char *<[str]>;
- char *<[fmt]>;
- va_list <[list]>;
-
- int vsnprintf(<[str]>, <[size]>, <[fmt]>, <[list]>)
- char *<[str]>;
- size_t <[size]>;
- char *<[fmt]>;
- va_list <[list]>;
-
- int _vprintf_r(<[reent]>, <[fmt]>, <[list]>)
- char *<[reent]>;
- char *<[fmt]>;
- va_list <[list]>;
-
- int _vfprintf_r(<[reent]>, <[fp]>, <[fmt]>, <[list]>)
- char *<[reent]>;
- FILE *<[fp]>;
- char *<[fmt]>;
- va_list <[list]>;
-
- int _vasprintf_r(<[reent]>, <[strp]>, <[fmt]>, <[list]>)
- char *<[reent]>;
- char **<[strp]>;
- char *<[fmt]>;
- va_list <[list]>;
-
- int _vsprintf_r(<[reent]>, <[str]>, <[fmt]>, <[list]>)
- char *<[reent]>;
- char *<[str]>;
- char *<[fmt]>;
- va_list <[list]>;
-
- int _vsnprintf_r(<[reent]>, <[str]>, <[size]>, <[fmt]>, <[list]>)
- char *<[reent]>;
- char *<[str]>;
- size_t <[size]>;
- char *<[fmt]>;
- va_list <[list]>;
-
-DESCRIPTION
-<<vprintf>>, <<vfprintf>>, <<vasprintf>>, <<vsprintf>> and <<vsnprintf>> are
-(respectively) variants of <<printf>>, <<fprintf>>, <<asprintf>>, <<sprintf>>,
-and <<snprintf>>. They differ only in allowing their caller to pass the
-variable argument list as a <<va_list>> object (initialized by <<va_start>>)
-rather than directly accepting a variable number of arguments.
-
-RETURNS
-The return values are consistent with the corresponding functions:
-<<vasprintf>>/<<vsprintf>> returns the number of bytes in the output string,
-save that the concluding <<NULL>> is not counted.
-<<vprintf>> and <<vfprintf>> return the number of characters transmitted.
-If an error occurs, <<vprintf>> and <<vfprintf>> return <<EOF>> and
-<<vasprintf>> returns -1. No error returns occur for <<vsprintf>>.
-
-PORTABILITY
-ANSI C requires all three functions.
-
-Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
-<<lseek>>, <<read>>, <<sbrk>>, <<write>>.
-*/
-
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Chris Torek.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-/*static char *sccsid = "from: @(#)vfprintf.c 5.50 (Berkeley) 12/16/92";*/
-static char *rcsid = "$Id$";
-#endif /* LIBC_SCCS and not lint */
-
-/*
- * Actual printf innards.
- *
- * This code is large and complicated...
- */
-
-#ifdef INTEGER_ONLY
-#define VFPRINTF vfiprintf
-#define _VFPRINTF_R _vfiprintf_r
-#else
-#define VFPRINTF vfprintf
-#define _VFPRINTF_R _vfprintf_r
-#ifndef NO_FLOATING_POINT
-#define FLOATING_POINT
-#endif
-#endif
-
-#define _NO_LONGLONG
-#if defined WANT_PRINTF_LONG_LONG && defined __GNUC__
-# undef _NO_LONGLONG
-#endif
-
-#define _NO_POS_ARGS
-#if defined WANT_IO_POS_ARGS
-# undef _NO_POS_ARGS
-#endif
-
-#include <_ansi.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <reent.h>
-#include <wchar.h>
-#include <string.h>
-
-#ifdef _HAVE_STDC
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-
-#include "local.h"
-#include "fvwrite.h"
-#include "vfieeefp.h"
-
-/* Currently a test is made to see if long double processing is warranted.
- This could be changed in the future should the _ldtoa_r code be
- preferred over _dtoa_r. */
-#define _NO_LONGDBL
-#if defined WANT_IO_LONG_DBL && (LDBL_MANT_DIG > DBL_MANT_DIG)
-#undef _NO_LONGDBL
-#endif
-
-/*
- * Flush out all the vectors defined by the given uio,
- * then reset it so that it can be reused.
- */
-static int
-__sprint(fp, uio)
- FILE *fp;
- register struct __suio *uio;
-{
- register int err;
-
- if (uio->uio_resid == 0) {
- uio->uio_iovcnt = 0;
- return (0);
- }
- err = __sfvwrite(fp, uio);
- uio->uio_resid = 0;
- uio->uio_iovcnt = 0;
- return (err);
-}
-
-/*
- * Helper function for `fprintf to unbuffered unix file': creates a
- * temporary buffer. We only work on write-only files; this avoids
- * worries about ungetc buffers and so forth.
- */
-static int
-__sbprintf(fp, fmt, ap)
- register FILE *fp;
- const char *fmt;
- va_list ap;
-{
- int ret;
- FILE fake;
- unsigned char buf[BUFSIZ];
-
- /* copy the important variables */
- fake._data = fp->_data;
- fake._flags = fp->_flags & ~__SNBF;
- fake._file = fp->_file;
- fake._cookie = fp->_cookie;
- fake._write = fp->_write;
-
- /* set up the buffer */
- fake._bf._base = fake._p = buf;
- fake._bf._size = fake._w = sizeof(buf);
- fake._lbfsize = 0; /* not actually used, but Just In Case */
-
- /* do the work, then copy any error status */
- ret = VFPRINTF(&fake, fmt, ap);
- if (ret >= 0 && fflush(&fake))
- ret = EOF;
- if (fake._flags & __SERR)
- fp->_flags |= __SERR;
- return (ret);
-}
-
-
-#ifdef FLOATING_POINT
-#include <locale.h>
-#include <math.h>
-#include "floatio.h"
-
-#define BUF (MAXEXP+MAXFRACT+1) /* + decimal point */
-#define DEFPREC 6
-
-#ifdef _NO_LONGDBL
-static char *cvt _PARAMS((struct _reent *, double, int, int, char *, int *, int, int *));
-#else
-static char *cvt _PARAMS((struct _reent *, _LONG_DOUBLE, int, int, char *, int *, int, int *));
-extern int _ldcheck _PARAMS((_LONG_DOUBLE *));
-#endif
-
-static int exponent _PARAMS((char *, int, int));
-
-#else /* no FLOATING_POINT */
-
-#define BUF 40
-
-#endif /* FLOATING_POINT */
-
-#ifndef _NO_LONG_LONG
-#define quad_t long long
-#define u_quad_t unsigned long long
-#else
-#define quad_t long
-#define u_quad_t unsigned long
-#endif
-
-typedef quad_t * quad_ptr_t;
-typedef void * void_ptr_t;
-typedef char * char_ptr_t;
-typedef long * long_ptr_t;
-typedef int * int_ptr_t;
-typedef short * short_ptr_t;
-
-#ifndef _NO_POS_ARGS
-#define MAX_POS_ARGS 32
-
-union arg_val
-{
- int val_int;
- u_int val_u_int;
- long val_long;
- u_long val_u_long;
- float val_float;
- double val_double;
- _LONG_DOUBLE val__LONG_DOUBLE;
- int_ptr_t val_int_ptr_t;
- short_ptr_t val_short_ptr_t;
- long_ptr_t val_long_ptr_t;
- char_ptr_t val_char_ptr_t;
- quad_ptr_t val_quad_ptr_t;
- void_ptr_t val_void_ptr_t;
- quad_t val_quad_t;
- u_quad_t val_u_quad_t;
-};
-
-static union arg_val *get_arg (int n, char *fmt, va_list *ap, int *numargs, union arg_val *args,
- int *arg_type, char **last_fmt);
-#endif /* !_NO_POS_ARGS */
-
-/*
- * Macros for converting digits to letters and vice versa
- */
-#define to_digit(c) ((c) - '0')
-#define is_digit(c) ((unsigned)to_digit(c) <= 9)
-#define to_char(n) ((n) + '0')
-
-/*
- * Flags used during conversion.
- */
-#define ALT 0x001 /* alternate form */
-#define HEXPREFIX 0x002 /* add 0x or 0X prefix */
-#define LADJUST 0x004 /* left adjustment */
-#define LONGDBL 0x008 /* long double */
-#define LONGINT 0x010 /* long integer */
-#ifndef _NO_LONGLONG
-#define QUADINT 0x020 /* quad integer */
-#else /* ifdef _NO_LONGLONG, make QUADINT equivalent to LONGINT, so
- that %lld behaves the same as %ld, not as %d, as expected if:
- sizeof (long long) = sizeof long > sizeof int */
-#define QUADINT LONGINT
-#endif
-#define SHORTINT 0x040 /* short integer */
-#define ZEROPAD 0x080 /* zero (as opposed to blank) pad */
-#define FPT 0x100 /* Floating point number */
-
-int _EXFUN (_VFPRINTF_R, (struct _reent *, FILE *, _CONST char *, va_list));
-
-int
-_DEFUN (VFPRINTF, (fp, fmt0, ap),
- FILE * fp _AND
- _CONST char *fmt0 _AND
- va_list ap)
-{
- int result;
- _flockfile(fp);
- CHECK_INIT (fp);
- result = _VFPRINTF_R (fp->_data, fp, fmt0, ap);
- _funlockfile(fp);
- return result;
-}
-
-int
-_DEFUN (_VFPRINTF_R, (data, fp, fmt0, ap),
- struct _reent *data _AND
- FILE * fp _AND
- _CONST char *fmt0 _AND
- va_list ap)
-{
- register char *fmt; /* format string */
- register int ch; /* character from fmt */
- register int n, m; /* handy integers (short term usage) */
- register char *cp; /* handy char pointer (short term usage) */
- register struct __siov *iovp;/* for PRINT macro */
- register int flags; /* flags as above */
- char *fmt_anchor; /* current format spec being processed */
- int N; /* arg number */
- int arg_index; /* index into args processed directly */
-#ifndef _NO_POS_ARGS
- int numargs; /* number of varargs read */
- char *saved_fmt; /* saved fmt pointer */
- union arg_val args[MAX_POS_ARGS];
- int arg_type[MAX_POS_ARGS];
- int is_pos_arg; /* is current format positional? */
- int old_is_pos_arg; /* is current format positional? */
-#endif
- int ret; /* return value accumulator */
- int width; /* width from format (%8d), or 0 */
- int prec; /* precision from format (%.3d), or -1 */
- char sign; /* sign prefix (' ', '+', '-', or \0) */
- wchar_t wc;
-#ifdef FLOATING_POINT
- char *decimal_point = localeconv()->decimal_point;
- char softsign; /* temporary negative sign for floats */
-#ifdef _NO_LONGDBL
- union { int i; double d; } _double_ = {0};
- #define _fpvalue (_double_.d)
-#else
- union { int i; _LONG_DOUBLE ld; } _long_double_ = {0};
- #define _fpvalue (_long_double_.ld)
- int tmp;
-#endif
- int expt; /* integer value of exponent */
- int expsize = 0; /* character count for expstr */
- int ndig; /* actual number of digits returned by cvt */
- char expstr[7]; /* buffer for exponent string */
-#endif
-
-
- u_quad_t _uquad; /* integer arguments %[diouxX] */
-
- enum { OCT, DEC, HEX } base;/* base for [diouxX] conversion */
- int dprec; /* a copy of prec if [diouxX], 0 otherwise */
- int realsz; /* field size expanded by dprec */
- int size; /* size of converted field or string */
- char *xdigs = NULL; /* digits for [xX] conversion */
-#define NIOV 8
- struct __suio uio; /* output information: summary */
- struct __siov iov[NIOV];/* ... and individual io vectors */
- char buf[BUF]; /* space for %c, %[diouxX], %[eEfgG] */
- char ox[2]; /* space for 0x hex-prefix */
- mbstate_t state; /* mbtowc calls from library must not change state */
-
- /*
- * Choose PADSIZE to trade efficiency vs. size. If larger printf
- * fields occur frequently, increase PADSIZE and make the initialisers
- * below longer.
- */
-#define PADSIZE 16 /* pad chunk size */
- static _CONST char blanks[PADSIZE] =
- {' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '};
- static _CONST char zeroes[PADSIZE] =
- {'0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'};
-
- memset (&state, '\0', sizeof (state));
- /*
- * BEWARE, these `goto error' on error, and PAD uses `n'.
- */
-#define PRINT(ptr, len) { \
- iovp->iov_base = (ptr); \
- iovp->iov_len = (len); \
- uio.uio_resid += (len); \
- iovp++; \
- if (++uio.uio_iovcnt >= NIOV) { \
- if (__sprint(fp, &uio)) \
- goto error; \
- iovp = iov; \
- } \
-}
-#define PAD(howmany, with) { \
- if ((n = (howmany)) > 0) { \
- while (n > PADSIZE) { \
- PRINT(with, PADSIZE); \
- n -= PADSIZE; \
- } \
- PRINT(with, n); \
- } \
-}
-#define FLUSH() { \
- if (uio.uio_resid && __sprint(fp, &uio)) \
- goto error; \
- uio.uio_iovcnt = 0; \
- iovp = iov; \
-}
-
- /* Macros to support positional arguments */
-#ifndef _NO_POS_ARGS
-#define GET_ARG(n, ap, type) \
- ( is_pos_arg \
- ? n < numargs \
- ? args[n].val_##type \
- : get_arg (n, fmt_anchor, &ap, &numargs, args, arg_type, &saved_fmt)->val_##type \
- : arg_index++ < numargs \
- ? args[n].val_##type \
- : numargs < MAX_POS_ARGS \
- ? args[numargs++].val_##type = va_arg(ap, type) \
- : va_arg(ap, type) \
- )
-#else
-#define GET_ARG(n, ap, type) (va_arg(ap, type))
-#endif
-
- /*
- * To extend shorts properly, we need both signed and unsigned
- * argument extraction methods.
- */
-#ifndef _NO_LONGLONG
-#define SARG() \
- (flags&QUADINT ? GET_ARG(N, ap, quad_t) : \
- flags&LONGINT ? GET_ARG(N, ap, long) : \
- flags&SHORTINT ? (long)(short)GET_ARG(N, ap, int) : \
- (long)GET_ARG(N, ap, int))
-#define UARG() \
- (flags&QUADINT ? GET_ARG(N, ap, u_quad_t) : \
- flags&LONGINT ? GET_ARG(N, ap, u_long) : \
- flags&SHORTINT ? (u_long)(u_short)GET_ARG(N, ap, int) : \
- (u_long)GET_ARG(N, ap, u_int))
-#else
-#define SARG() \
- (flags&LONGINT ? GET_ARG(N, ap, long) : \
- flags&SHORTINT ? (long)(short)GET_ARG(N, ap, int) : \
- (long)GET_ARG(N, ap, int))
-#define UARG() \
- (flags&LONGINT ? GET_ARG(N, ap, u_long) : \
- flags&SHORTINT ? (u_long)(u_short)GET_ARG(N, ap, int) : \
- (u_long)GET_ARG(N, ap, u_int))
-#endif
-
- /* sorry, fprintf(read_only_file, "") returns EOF, not 0 */
- if (cantwrite(fp))
- return (EOF);
-
- /* optimise fprintf(stderr) (and other unbuffered Unix files) */
- if ((fp->_flags & (__SNBF|__SWR|__SRW)) == (__SNBF|__SWR) &&
- fp->_file >= 0)
- return (__sbprintf(fp, fmt0, ap));
-
- fmt = (char *)fmt0;
- uio.uio_iov = iovp = iov;
- uio.uio_resid = 0;
- uio.uio_iovcnt = 0;
- ret = 0;
- arg_index = 0;
-#ifndef _NO_POS_ARGS
- saved_fmt = NULL;
- arg_type[0] = -1;
- numargs = 0;
- is_pos_arg = 0;
-#endif
-
- /*
- * Scan the format for conversions (`%' character).
- */
- for (;;) {
- cp = fmt;
- while ((n = _mbtowc_r(_REENT, &wc, fmt, MB_CUR_MAX, &state)) > 0) {
- fmt += n;
- if (wc == '%') {
- fmt--;
- break;
- }
- }
- if ((m = fmt - cp) != 0) {
- PRINT(cp, m);
- ret += m;
- }
- if (n <= 0)
- goto done;
-
- fmt_anchor = fmt;
- fmt++; /* skip over '%' */
-
- flags = 0;
- dprec = 0;
- width = 0;
- prec = -1;
- sign = '\0';
- N = arg_index;
-#ifndef _NO_POS_ARGS
- is_pos_arg = 0;
-#endif
-
-rflag: ch = *fmt++;
-reswitch: switch (ch) {
- case ' ':
- /*
- * ``If the space and + flags both appear, the space
- * flag will be ignored.''
- * -- ANSI X3J11
- */
- if (!sign)
- sign = ' ';
- goto rflag;
- case '#':
- flags |= ALT;
- goto rflag;
- case '*':
- n = N;
-#ifndef _NO_POS_ARGS
- /* we must check for positional arg used for dynamic width */
- old_is_pos_arg = is_pos_arg;
- is_pos_arg = 0;
- if (is_digit(*fmt)) {
- char *old_fmt = fmt;
-
- n = 0;
- ch = *fmt++;
- do {
- n = 10 * n + to_digit(ch);
- ch = *fmt++;
- } while (is_digit(ch));
-
- if (ch == '$') {
- if (n <= MAX_POS_ARGS) {
- n -= 1;
- is_pos_arg = 1;
- }
- else
- goto error;
- }
- else {
- fmt = old_fmt;
- goto rflag;
- }
- }
-#endif /* !_NO_POS_ARGS */
-
- /*
- * ``A negative field width argument is taken as a
- * - flag followed by a positive field width.''
- * -- ANSI X3J11
- * They don't exclude field widths read from args.
- */
- width = GET_ARG(n, ap, int);
-#ifndef _NO_POS_ARGS
- is_pos_arg = old_is_pos_arg;
-#endif
- if (width >= 0)
- goto rflag;
- width = -width;
- /* FALLTHROUGH */
- case '-':
- flags |= LADJUST;
- goto rflag;
- case '+':
- sign = '+';
- goto rflag;
- case '.':
- if ((ch = *fmt++) == '*') {
- n = N;
-#ifndef _NO_POS_ARGS
- /* we must check for positional arg used for dynamic width */
- old_is_pos_arg = is_pos_arg;
- is_pos_arg = 0;
- if (is_digit(*fmt)) {
- char *old_fmt = fmt;
-
- n = 0;
- ch = *fmt++;
- do {
- n = 10 * n + to_digit(ch);
- ch = *fmt++;
- } while (is_digit(ch));
-
- if (ch == '$') {
- if (n <= MAX_POS_ARGS) {
- n -= 1;
- is_pos_arg = 1;
- }
- else
- goto error;
- }
- else {
- fmt = old_fmt;
- goto rflag;
- }
- }
-#endif /* !_NO_POS_ARGS */
- prec = GET_ARG(n, ap, int);
-#ifndef _NO_POS_ARGS
- is_pos_arg = old_is_pos_arg;
-#endif
- if (prec < 0)
- prec = -1;
- goto rflag;
- }
- n = 0;
- while (is_digit(ch)) {
- n = 10 * n + to_digit(ch);
- ch = *fmt++;
- }
- prec = n < 0 ? -1 : n;
- goto reswitch;
- case '0':
- /*
- * ``Note that 0 is taken as a flag, not as the
- * beginning of a field width.''
- * -- ANSI X3J11
- */
- flags |= ZEROPAD;
- goto rflag;
- case '1': case '2': case '3': case '4':
- case '5': case '6': case '7': case '8': case '9':
- n = 0;
- do {
- n = 10 * n + to_digit(ch);
- ch = *fmt++;
- } while (is_digit(ch));
-#ifndef _NO_POS_ARGS
- if (ch == '$') {
- if (n <= MAX_POS_ARGS) {
- N = n - 1;
- is_pos_arg = 1;
- goto rflag;
- }
- else
- goto error;
- }
-#endif /* !_NO_POS_ARGS */
- width = n;
- goto reswitch;
-#ifdef FLOATING_POINT
- case 'L':
- flags |= LONGDBL;
- goto rflag;
-#endif
- case 'h':
- flags |= SHORTINT;
- goto rflag;
- case 'l':
- if (*fmt == 'l') {
- fmt++;
- flags |= QUADINT;
- } else {
- flags |= LONGINT;
- }
- goto rflag;
- case 'q':
- flags |= QUADINT;
- goto rflag;
- case 'c':
- *(cp = buf) = GET_ARG(N, ap, int);
- size = 1;
- sign = '\0';
- break;
- case 'D':
- flags |= LONGINT;
- /*FALLTHROUGH*/
- case 'd':
- case 'i':
- _uquad = SARG();
-#ifndef _NO_LONGLONG
- if ((quad_t)_uquad < 0)
-#else
- if ((long) _uquad < 0)
-#endif
- {
-
- _uquad = -_uquad;
- sign = '-';
- }
- base = DEC;
- goto number;
-#ifdef FLOATING_POINT
- case 'e':
- case 'E':
- case 'f':
- case 'g':
- case 'G':
- if (prec == -1) {
- prec = DEFPREC;
- } else if ((ch == 'g' || ch == 'G') && prec == 0) {
- prec = 1;
- }
-
-#ifdef _NO_LONGDBL
- if (flags & LONGDBL) {
- _fpvalue = (double) GET_ARG(N, ap, _LONG_DOUBLE);
- } else {
- _fpvalue = GET_ARG(N, ap, double);
- }
-
- /* do this before tricky precision changes */
- if (isinf(_fpvalue)) {
- if (_fpvalue < 0)
- sign = '-';
- cp = "Inf";
- size = 3;
- break;
- }
- if (isnan(_fpvalue)) {
- cp = "NaN";
- size = 3;
- break;
- }
-
-#else /* !_NO_LONGDBL */
-
- if (flags & LONGDBL) {
- _fpvalue = GET_ARG(N, ap, _LONG_DOUBLE);
- } else {
- _fpvalue = (_LONG_DOUBLE)GET_ARG(N, ap, double);
- }
-
- /* do this before tricky precision changes */
- tmp = _ldcheck (&_fpvalue);
- if (tmp == 2) {
- if (_fpvalue < 0)
- sign = '-';
- cp = "Inf";
- size = 3;
- break;
- }
- if (tmp == 1) {
- cp = "NaN";
- size = 3;
- break;
- }
-#endif /* !_NO_LONGDBL */
-
- flags |= FPT;
-
- cp = cvt(data, _fpvalue, prec, flags, &softsign,
- &expt, ch, &ndig);
-
- if (ch == 'g' || ch == 'G') {
- if (expt <= -4 || expt > prec)
- ch = (ch == 'g') ? 'e' : 'E';
- else
- ch = 'g';
- }
- if (ch <= 'e') { /* 'e' or 'E' fmt */
- --expt;
- expsize = exponent(expstr, expt, ch);
- size = expsize + ndig;
- if (ndig > 1 || flags & ALT)
- ++size;
- } else if (ch == 'f') { /* f fmt */
- if (expt > 0) {
- size = expt;
- if (prec || flags & ALT)
- size += prec + 1;
- } else /* "0.X" */
- size = prec + 2;
- } else if (expt >= ndig) { /* fixed g fmt */
- size = expt;
- if (flags & ALT)
- ++size;
- } else
- size = ndig + (expt > 0 ?
- 1 : 2 - expt);
-
- if (softsign)
- sign = '-';
- break;
-#endif /* FLOATING_POINT */
- case 'n':
-#ifndef _NO_LONGLONG
- if (flags & QUADINT)
- *GET_ARG(N, ap, quad_ptr_t *) = ret;
- else
-#endif
- if (flags & LONGINT)
- *GET_ARG(N, ap, long_ptr_t) = ret;
- else if (flags & SHORTINT)
- *GET_ARG(N, ap, short_ptr_t) = ret;
- else
- *GET_ARG(N, ap, int_ptr_t) = ret;
- continue; /* no output */
- case 'O':
- flags |= LONGINT;
- /*FALLTHROUGH*/
- case 'o':
- _uquad = UARG();
- base = OCT;
- goto nosign;
- case 'p':
- /*
- * ``The argument shall be a pointer to void. The
- * value of the pointer is converted to a sequence
- * of printable characters, in an implementation-
- * defined manner.''
- * -- ANSI X3J11
- */
- /* NOSTRICT */
- _uquad = (u_long)(unsigned _POINTER_INT)GET_ARG(N, ap, void_ptr_t);
- base = HEX;
- xdigs = "0123456789abcdef";
- flags |= HEXPREFIX;
- ch = 'x';
- goto nosign;
- case 's':
- if ((cp = GET_ARG(N, ap, char_ptr_t)) == NULL)
- cp = "(null)";
- if (prec >= 0) {
- /*
- * can't use strlen; can only look for the
- * NUL in the first `prec' characters, and
- * strlen() will go further.
- */
- char *p = memchr(cp, 0, prec);
-
- if (p != NULL) {
- size = p - cp;
- if (size > prec)
- size = prec;
- } else
- size = prec;
- } else
- size = strlen(cp);
- sign = '\0';
- break;
- case 'U':
- flags |= LONGINT;
- /*FALLTHROUGH*/
- case 'u':
- _uquad = UARG();
- base = DEC;
- goto nosign;
- case 'X':
- xdigs = "0123456789ABCDEF";
- goto hex;
- case 'x':
- xdigs = "0123456789abcdef";
-hex: _uquad = UARG();
- base = HEX;
- /* leading 0x/X only if non-zero */
- if (flags & ALT && _uquad != 0)
- flags |= HEXPREFIX;
-
- /* unsigned conversions */
-nosign: sign = '\0';
- /*
- * ``... diouXx conversions ... if a precision is
- * specified, the 0 flag will be ignored.''
- * -- ANSI X3J11
- */
-number: if ((dprec = prec) >= 0)
- flags &= ~ZEROPAD;
-
- /*
- * ``The result of converting a zero value with an
- * explicit precision of zero is no characters.''
- * -- ANSI X3J11
- */
- cp = buf + BUF;
- if (_uquad != 0 || prec != 0) {
- /*
- * Unsigned mod is hard, and unsigned mod
- * by a constant is easier than that by
- * a variable; hence this switch.
- */
- switch (base) {
- case OCT:
- do {
- *--cp = to_char(_uquad & 7);
- _uquad >>= 3;
- } while (_uquad);
- /* handle octal leading 0 */
- if (flags & ALT && *cp != '0')
- *--cp = '0';
- break;
-
- case DEC:
- /* many numbers are 1 digit */
- while (_uquad >= 10) {
- *--cp = to_char(_uquad % 10);
- _uquad /= 10;
- }
- *--cp = to_char(_uquad);
- break;
-
- case HEX:
- do {
- *--cp = xdigs[_uquad & 15];
- _uquad >>= 4;
- } while (_uquad);
- break;
-
- default:
- cp = "bug in vfprintf: bad base";
- size = strlen(cp);
- goto skipsize;
- }
- }
- /*
- * ...result is to be converted to an 'alternate form'.
- * For o conversion, it increases the precision to force
- * the first digit of the result to be a zero."
- * -- ANSI X3J11
- *
- * To demonstrate this case, compile and run:
- * printf ("%#.0o",0);
- */
- else if (base == OCT && (flags & ALT))
- *--cp = '0';
-
- size = buf + BUF - cp;
- skipsize:
- break;
- default: /* "%?" prints ?, unless ? is NUL */
- if (ch == '\0')
- goto done;
- /* pretend it was %c with argument ch */
- cp = buf;
- *cp = ch;
- size = 1;
- sign = '\0';
- break;
- }
-
- /*
- * All reasonable formats wind up here. At this point, `cp'
- * points to a string which (if not flags&LADJUST) should be
- * padded out to `width' places. If flags&ZEROPAD, it should
- * first be prefixed by any sign or other prefix; otherwise,
- * it should be blank padded before the prefix is emitted.
- * After any left-hand padding and prefixing, emit zeroes
- * required by a decimal [diouxX] precision, then print the
- * string proper, then emit zeroes required by any leftover
- * floating precision; finally, if LADJUST, pad with blanks.
- *
- * Compute actual size, so we know how much to pad.
- * size excludes decimal prec; realsz includes it.
- */
- realsz = dprec > size ? dprec : size;
- if (sign)
- realsz++;
- else if (flags & HEXPREFIX)
- realsz+= 2;
-
- /* right-adjusting blank padding */
- if ((flags & (LADJUST|ZEROPAD)) == 0)
- PAD(width - realsz, blanks);
-
- /* prefix */
- if (sign) {
- PRINT(&sign, 1);
- } else if (flags & HEXPREFIX) {
- ox[0] = '0';
- ox[1] = ch;
- PRINT(ox, 2);
- }
-
- /* right-adjusting zero padding */
- if ((flags & (LADJUST|ZEROPAD)) == ZEROPAD)
- PAD(width - realsz, zeroes);
-
- /* leading zeroes from decimal precision */
- PAD(dprec - size, zeroes);
-
- /* the string or number proper */
-#ifdef FLOATING_POINT
- if ((flags & FPT) == 0) {
- PRINT(cp, size);
- } else { /* glue together f_p fragments */
- if (ch >= 'f') { /* 'f' or 'g' */
- if (_fpvalue == 0) {
- /* kludge for __dtoa irregularity */
- PRINT("0", 1);
- if (expt < ndig || (flags & ALT) != 0) {
- PRINT(decimal_point, 1);
- PAD(ndig - 1, zeroes);
- }
- } else if (expt <= 0) {
- PRINT("0", 1);
- if(expt || ndig) {
- PRINT(decimal_point, 1);
- PAD(-expt, zeroes);
- PRINT(cp, ndig);
- }
- } else if (expt >= ndig) {
- PRINT(cp, ndig);
- PAD(expt - ndig, zeroes);
- if (flags & ALT)
- PRINT(".", 1);
- } else {
- PRINT(cp, expt);
- cp += expt;
- PRINT(".", 1);
- PRINT(cp, ndig-expt);
- }
- } else { /* 'e' or 'E' */
- if (ndig > 1 || flags & ALT) {
- ox[0] = *cp++;
- ox[1] = '.';
- PRINT(ox, 2);
- if (_fpvalue) {
- PRINT(cp, ndig-1);
- } else /* 0.[0..] */
- /* __dtoa irregularity */
- PAD(ndig - 1, zeroes);
- } else /* XeYYY */
- PRINT(cp, 1);
- PRINT(expstr, expsize);
- }
- }
-#else
- PRINT(cp, size);
-#endif
- /* left-adjusting padding (always blank) */
- if (flags & LADJUST)
- PAD(width - realsz, blanks);
-
- /* finally, adjust ret */
- ret += width > realsz ? width : realsz;
-
- FLUSH(); /* copy out the I/O vectors */
- }
-done:
- FLUSH();
-error:
- return (__sferror(fp) ? EOF : ret);
- /* NOTREACHED */
-}
-
-#ifdef FLOATING_POINT
-
-#ifdef _NO_LONGDBL
-extern char *_dtoa_r _PARAMS((struct _reent *, double, int,
- int, int *, int *, char **));
-#else
-extern char *_ldtoa_r _PARAMS((struct _reent *, _LONG_DOUBLE, int,
- int, int *, int *, char **));
-#undef word0
-#define word0(x) ldword0(x)
-#endif
-
-static char *
-cvt(data, value, ndigits, flags, sign, decpt, ch, length)
- struct _reent *data;
-#ifdef _NO_LONGDBL
- double value;
-#else
- _LONG_DOUBLE value;
-#endif
- int ndigits, flags, *decpt, ch, *length;
- char *sign;
-{
- int mode, dsgn;
- char *digits, *bp, *rve;
-#ifdef _NO_LONGDBL
- union double_union tmp;
-#else
- struct ldieee *ldptr;
-#endif
-
- if (ch == 'f') {
- mode = 3; /* ndigits after the decimal point */
- } else {
- /* To obtain ndigits after the decimal point for the 'e'
- * and 'E' formats, round to ndigits + 1 significant
- * figures.
- */
- if (ch == 'e' || ch == 'E') {
- ndigits++;
- }
- mode = 2; /* ndigits significant digits */
- }
-
-#ifdef _NO_LONGDBL
- tmp.d = value;
-
- if (word0(tmp) & Sign_bit) { /* this will check for < 0 and -0.0 */
- value = -value;
- *sign = '-';
- } else
- *sign = '\000';
-
- digits = _dtoa_r(data, value, mode, ndigits, decpt, &dsgn, &rve);
-#else /* !_NO_LONGDBL */
- ldptr = (struct ldieee *)&value;
- if (ldptr->sign) { /* this will check for < 0 and -0.0 */
- value = -value;
- *sign = '-';
- } else
- *sign = '\000';
-
- digits = _ldtoa_r(data, value, mode, ndigits, decpt, &dsgn, &rve);
-#endif /* !_NO_LONGDBL */
-
- if ((ch != 'g' && ch != 'G') || flags & ALT) { /* Print trailing zeros */
- bp = digits + ndigits;
- if (ch == 'f') {
- if (*digits == '0' && value)
- *decpt = -ndigits + 1;
- bp += *decpt;
- }
- if (value == 0) /* kludge for __dtoa irregularity */
- rve = bp;
- while (rve < bp)
- *rve++ = '0';
- }
- *length = rve - digits;
- return (digits);
-}
-
-static int
-exponent(p0, exp, fmtch)
- char *p0;
- int exp, fmtch;
-{
- register char *p, *t;
- char expbuf[40];
-
- p = p0;
- *p++ = fmtch;
- if (exp < 0) {
- exp = -exp;
- *p++ = '-';
- }
- else
- *p++ = '+';
- t = expbuf + 40;
- if (exp > 9) {
- do {
- *--t = to_char(exp % 10);
- } while ((exp /= 10) > 9);
- *--t = to_char(exp);
- for (; t < expbuf + 40; *p++ = *t++);
- }
- else {
- *p++ = '0';
- *p++ = to_char(exp);
- }
- return (p - p0);
-}
-#endif /* FLOATING_POINT */
-
-
-#ifndef _NO_POS_ARGS
-
-/* Positional argument support.
- Written by Jeff Johnston
-
- Copyright (c) 2002 Red Hat Incorporated.
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- The name of Red Hat Incorporated may not be used to endorse
- or promote products derived from this software without specific
- prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY
- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
-
-typedef enum {
- ZERO, /* '0' */
- DIGIT, /* '1-9' */
- DOLLAR, /* '$' */
- MODFR, /* spec modifier */
- SPEC, /* format specifier */
- DOT, /* '.' */
- STAR, /* '*' */
- FLAG, /* format flag */
- OTHER, /* all other chars */
- MAX_CH_CLASS /* place-holder */
-} CH_CLASS;
-
-typedef enum {
- START, /* start */
- SFLAG, /* seen a flag */
- WDIG, /* seen digits in width area */
- WIDTH, /* processed width */
- SMOD, /* seen spec modifier */
- SDOT, /* seen dot */
- VARW, /* have variable width specifier */
- VARP, /* have variable precision specifier */
- PREC, /* processed precision */
- VWDIG, /* have digits in variable width specification */
- VPDIG, /* have digits in variable precision specification */
- DONE, /* done */
- MAX_STATE, /* place-holder */
-} STATE;
-
-typedef enum {
- NOOP, /* do nothing */
- NUMBER, /* build a number from digits */
- SKIPNUM, /* skip over digits */
- GETMOD, /* get and process format modifier */
- GETARG, /* get and process argument */
- GETPW, /* get variable precision or width */
- GETPWB, /* get variable precision or width and pushback fmt char */
- GETPOS, /* get positional parameter value */
- PWPOS, /* get positional parameter value for variable width or precision */
-} ACTION;
-
-const static CH_CLASS chclass[256] = {
- /* 00-07 */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER,
- /* 08-0f */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER,
- /* 10-17 */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER,
- /* 18-1f */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER,
- /* 20-27 */ FLAG, OTHER, OTHER, FLAG, DOLLAR, OTHER, OTHER, OTHER,
- /* 28-2f */ OTHER, OTHER, STAR, FLAG, OTHER, FLAG, DOT, OTHER,
- /* 30-37 */ ZERO, DIGIT, DIGIT, DIGIT, DIGIT, DIGIT, DIGIT, DIGIT,
- /* 38-3f */ DIGIT, DIGIT, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER,
- /* 40-47 */ OTHER, OTHER, OTHER, OTHER, SPEC, SPEC, OTHER, SPEC,
- /* 48-4f */ OTHER, OTHER, OTHER, OTHER, MODFR, OTHER, OTHER, SPEC,
- /* 50-57 */ OTHER, OTHER, OTHER, OTHER, OTHER, SPEC, OTHER, SPEC,
- /* 58-5f */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER,
- /* 60-67 */ OTHER, OTHER, OTHER, SPEC, SPEC, SPEC, SPEC, SPEC,
- /* 68-6f */ MODFR, SPEC, OTHER, OTHER, MODFR, OTHER, OTHER, SPEC,
- /* 70-77 */ SPEC, MODFR, OTHER, SPEC, OTHER, SPEC, OTHER, OTHER,
- /* 78-7f */ SPEC, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER,
- /* 80-87 */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER,
- /* 88-8f */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER,
- /* 90-97 */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER,
- /* 98-9f */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER,
- /* a0-a7 */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER,
- /* a8-af */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER,
- /* b0-b7 */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER,
- /* b8-bf */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER,
- /* c0-c7 */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER,
- /* c8-cf */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER,
- /* d0-d7 */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER,
- /* d8-df */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER,
- /* e0-e7 */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER,
- /* e8-ef */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER,
- /* f0-f7 */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER,
- /* f8-ff */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER,
-};
-
-const static STATE state_table[MAX_STATE][MAX_CH_CLASS] = {
- /* '0' '1-9' '$' MODFR SPEC '.' '*' FLAG OTHER */
- /* START */ { SFLAG, WDIG, DONE, SMOD, DONE, SDOT, VARW, SFLAG, DONE },
- /* SFLAG */ { SFLAG, WDIG, DONE, SMOD, DONE, SDOT, VARW, SFLAG, DONE },
- /* WDIG */ { DONE, DONE, WIDTH, SMOD, DONE, SDOT, DONE, DONE, DONE },
- /* WIDTH */ { DONE, DONE, DONE, SMOD, DONE, SDOT, DONE, DONE, DONE },
- /* SMOD */ { DONE, DONE, DONE, DONE, DONE, DONE, DONE, DONE, DONE },
- /* SDOT */ { SDOT, PREC, DONE, SMOD, DONE, DONE, VARP, DONE, DONE },
- /* VARW */ { DONE, VWDIG, DONE, SMOD, DONE, SDOT, DONE, DONE, DONE },
- /* VARP */ { DONE, VPDIG, DONE, SMOD, DONE, DONE, DONE, DONE, DONE },
- /* PREC */ { DONE, DONE, DONE, SMOD, DONE, DONE, DONE, DONE, DONE },
- /* VWDIG */ { DONE, DONE, WIDTH, DONE, DONE, DONE, DONE, DONE, DONE },
- /* VPDIG */ { DONE, DONE, PREC, DONE, DONE, DONE, DONE, DONE, DONE },
-};
-
-const static ACTION action_table[MAX_STATE][MAX_CH_CLASS] = {
- /* '0' '1-9' '$' MODFR SPEC '.' '*' FLAG OTHER */
- /* START */ { NOOP, NUMBER, NOOP, GETMOD, GETARG, NOOP, NOOP, NOOP, NOOP },
- /* SFLAG */ { NOOP, NUMBER, NOOP, GETMOD, GETARG, NOOP, NOOP, NOOP, NOOP },
- /* WDIG */ { NOOP, NOOP, GETPOS, GETMOD, GETARG, NOOP, NOOP, NOOP, NOOP },
- /* WIDTH */ { NOOP, NOOP, NOOP, GETMOD, GETARG, NOOP, NOOP, NOOP, NOOP },
- /* SMOD */ { NOOP, NOOP, NOOP, NOOP, GETARG, NOOP, NOOP, NOOP, NOOP },
- /* SDOT */ { NOOP, SKIPNUM, NOOP, GETMOD, GETARG, NOOP, NOOP, NOOP, NOOP },
- /* VARW */ { NOOP, NUMBER, NOOP, GETPW, GETPWB, GETPW, NOOP, NOOP, NOOP },
- /* VARP */ { NOOP, NUMBER, NOOP, GETPW, GETPWB, NOOP, NOOP, NOOP, NOOP },
- /* PREC */ { NOOP, NOOP, NOOP, GETMOD, GETARG, NOOP, NOOP, NOOP, NOOP },
- /* VWDIG */ { NOOP, NOOP, PWPOS, NOOP, NOOP, NOOP, NOOP, NOOP, NOOP },
- /* VPDIG */ { NOOP, NOOP, PWPOS, NOOP, NOOP, NOOP, NOOP, NOOP, NOOP },
-};
-
-/* function to get positional parameter N where n = N - 1 */
-static union arg_val *
-get_arg (int n, char *fmt, va_list *ap, int *numargs_p, union arg_val *args,
- int *arg_type, char **last_fmt)
-{
- int ch;
- wchar_t wc;
- int nbytes, number, flags;
- int spec_type;
- int numargs = *numargs_p;
- CH_CLASS chtype;
- STATE state, next_state;
- ACTION action;
- int pos, last_arg;
- mbstate_t wc_state;
- int max_pos_arg = n;
- enum types { INT, LONG_INT, SHORT_INT, QUAD_INT, CHAR, CHAR_PTR, DOUBLE, LONG_DOUBLE };
-
- /* if this isn't the first call, pick up where we left off last time */
- if (*last_fmt != NULL)
- fmt = *last_fmt;
-
- memset (&wc_state, '\0', sizeof (wc_state));
-
- /* we need to process either to end of fmt string or until we have actually
- read the desired parameter from the vararg list. */
- while (*fmt && n >= numargs)
- {
- while ((nbytes = _mbtowc_r(_REENT, &wc, fmt, MB_CUR_MAX, &wc_state)) > 0)
- {
- fmt += nbytes;
- if (wc == '%')
- break;
- }
-
- if (nbytes <= 0)
- break;
-
- state = START;
- flags = 0;
- pos = -1;
- number = 0;
- spec_type = INT;
-
- /* Use state/action table to process format specifiers. We ignore invalid
- formats and we are only interested in information that tells us how to
- read the vararg list. */
- while (state != DONE)
- {
- ch = *fmt++;
- chtype = chclass[ch];
- next_state = state_table[state][chtype];
- action = action_table[state][chtype];
- state = next_state;
-
- switch (action)
- {
- case GETMOD: /* we have format modifier */
- switch (ch)
- {
- case 'h':
- flags |= SHORTINT;
- break;
- case 'L':
- flags |= LONGDBL;
- break;
- case 'q':
- flags |= QUADINT;
- break;
- case 'l':
- default:
- if (*fmt == 'l')
- {
- flags |= QUADINT;
- ++fmt;
- }
- else
- flags |= LONGINT;
- break;
- }
- break;
- case GETARG: /* we have format specifier */
- {
- numargs &= (MAX_POS_ARGS - 1);
- /* process the specifier and translate it to a type to fetch from varargs */
- switch (ch)
- {
- case 'd':
- case 'i':
- case 'o':
- case 'x':
- case 'X':
- case 'u':
- if (flags & LONGINT)
- spec_type = LONG_INT;
- else if (flags & SHORTINT)
- spec_type = SHORT_INT;
-#ifndef _NO_LONG_LONG
- else if (flags & QUADINT)
- spec_type = QUAD_INT;
-#endif
- else
- spec_type = INT;
- break;
- case 'D':
- case 'U':
- case 'O':
- spec_type = LONG_INT;
- break;
- case 'f':
- case 'g':
- case 'G':
- case 'E':
- case 'e':
-#ifndef _NO_LONGDBL
- if (flags & LONGDBL)
- spec_type = LONG_DOUBLE;
- else
-#endif
- spec_type = DOUBLE;
- break;
- case 's':
- case 'p':
- spec_type = CHAR_PTR;
- break;
- case 'c':
- spec_type = CHAR;
- break;
- }
-
- /* if we have a positional parameter, just store the type, otherwise
- fetch the parameter from the vararg list */
- if (pos != -1)
- arg_type[pos] = spec_type;
- else
- {
- switch (spec_type)
- {
- case LONG_INT:
- args[numargs++].val_long = va_arg(*ap, long);
- break;
- case QUAD_INT:
- args[numargs++].val_quad_t = va_arg(*ap, quad_t);
- break;
- case CHAR:
- case SHORT_INT:
- case INT:
- args[numargs++].val_int = va_arg(*ap, int);
- break;
- case CHAR_PTR:
- args[numargs++].val_char_ptr_t = va_arg(*ap, char *);
- break;
- case DOUBLE:
- args[numargs++].val_double = va_arg(*ap, double);
- break;
- case LONG_DOUBLE:
- args[numargs++].val__LONG_DOUBLE = va_arg(*ap, _LONG_DOUBLE);
- break;
- }
- }
- }
- break;
- case GETPOS: /* we have positional specifier */
- if (arg_type[0] == -1)
- memset (arg_type, 0, sizeof(int) * MAX_POS_ARGS);
- pos = number - 1;
- max_pos_arg = (max_pos_arg > pos ? max_pos_arg : pos);
- break;
- case PWPOS: /* we have positional specifier for width or precision */
- if (arg_type[0] == -1)
- memset (arg_type, 0, sizeof(int) * MAX_POS_ARGS);
- number -= 1;
- arg_type[number] = INT;
- max_pos_arg = (max_pos_arg > number ? max_pos_arg : number);
- break;
- case GETPWB: /* we require format pushback */
- --fmt;
- /* fallthrough */
- case GETPW: /* we have a variable precision or width to acquire */
- args[numargs++].val_int = va_arg(*ap, int);
- break;
- case NUMBER: /* we have a number to process */
- number = (ch - '0');
- while ((ch = *fmt) != '\0' && is_digit(ch))
- {
- number = number * 10 + (ch - '0');
- ++fmt;
- }
- break;
- case SKIPNUM: /* we have a number to skip */
- while ((ch = *fmt) != '\0' && is_digit(ch))
- ++fmt;
- break;
- case NOOP:
- default:
- break; /* do nothing */
- }
- }
- }
-
- /* process all arguments up to at least the one we are looking for and if we
- have seen the end of the string, then process up to the max argument needed */
- if (*fmt == '\0')
- last_arg = max_pos_arg;
- else
- last_arg = n;
-
- while (numargs <= last_arg)
- {
- switch (arg_type[numargs])
- {
- case LONG_INT:
- args[numargs++].val_long = va_arg(*ap, long);
- break;
- case QUAD_INT:
- args[numargs++].val_quad_t = va_arg(*ap, quad_t);
- break;
- case CHAR_PTR:
- args[numargs++].val_char_ptr_t = va_arg(*ap, char *);
- break;
- case DOUBLE:
- args[numargs++].val_double = va_arg(*ap, double);
- break;
- case LONG_DOUBLE:
- args[numargs++].val__LONG_DOUBLE = va_arg(*ap, _LONG_DOUBLE);
- break;
- case INT:
- case SHORT_INT:
- case CHAR:
- default:
- args[numargs++].val_int = va_arg(*ap, int);
- break;
- }
- }
-
- /* alter the global numargs value and keep a reference to the last bit of the fmt
- string we processed here because the caller will continue processing where we started */
- *numargs_p = numargs;
- *last_fmt = fmt;
- return &args[n];
-}
-#endif /* !_NO_POS_ARGS */
diff --git a/newlib/libc/stdio/vfscanf.c b/newlib/libc/stdio/vfscanf.c
deleted file mode 100644
index 61a901ea3..000000000
--- a/newlib/libc/stdio/vfscanf.c
+++ /dev/null
@@ -1,1137 +0,0 @@
-/*
-FUNCTION
-<<vscanf>>, <<vfscanf>>, <<vsscanf>>---format argument list
-
-INDEX
- vscanf
-INDEX
- vfscanf
-INDEX
- vsscanf
-
-ANSI_SYNOPSIS
- #include <stdio.h>
- #include <stdarg.h>
- int vscanf(const char *<[fmt]>, va_list <[list]>);
- int vfscanf(FILE *<[fp]>, const char *<[fmt]>, va_list <[list]>);
- int vsscanf(const char *<[str]>, const char *<[fmt]>, va_list <[list]>);
-
- int _vscanf_r(void *<[reent]>, const char *<[fmt]>,
- va_list <[list]>);
- int _vfscanf_r(void *<[reent]>, FILE *<[fp]>, const char *<[fmt]>,
- va_list <[list]>);
- int _vsscanf_r(void *<[reent]>, const char *<[str]>, const char *<[fmt]>,
- va_list <[list]>);
-
-TRAD_SYNOPSIS
- #include <stdio.h>
- #include <varargs.h>
- int vscanf( <[fmt]>, <[ist]>)
- char *<[fmt]>;
- va_list <[list]>;
-
- int vfscanf( <[fp]>, <[fmt]>, <[list]>)
- FILE *<[fp]>;
- char *<[fmt]>;
- va_list <[list]>;
-
- int vsscanf( <[str]>, <[fmt]>, <[list]>)
- char *<[str]>;
- char *<[fmt]>;
- va_list <[list]>;
-
- int _vscanf_r( <[reent]>, <[fmt]>, <[ist]>)
- char *<[reent]>;
- char *<[fmt]>;
- va_list <[list]>;
-
- int _vfscanf_r( <[reent]>, <[fp]>, <[fmt]>, <[list]>)
- char *<[reent]>;
- FILE *<[fp]>;
- char *<[fmt]>;
- va_list <[list]>;
-
- int _vsscanf_r( <[reent]>, <[str]>, <[fmt]>, <[list]>)
- char *<[reent]>;
- char *<[str]>;
- char *<[fmt]>;
- va_list <[list]>;
-
-DESCRIPTION
-<<vscanf>>, <<vfscanf>>, and <<vsscanf>> are (respectively) variants
-of <<scanf>>, <<fscanf>>, and <<sscanf>>. They differ only in
-allowing their caller to pass the variable argument list as a
-<<va_list>> object (initialized by <<va_start>>) rather than
-directly accepting a variable number of arguments.
-
-RETURNS
-The return values are consistent with the corresponding functions:
-<<vscanf>> returns the number of input fields successfully scanned,
-converted, and stored; the return value does not include scanned
-fields which were not stored.
-
-If <<vscanf>> attempts to read at end-of-file, the return value
-is <<EOF>>.
-
-If no fields were stored, the return value is <<0>>.
-
-The routines <<_vscanf_r>>, <<_vfscanf_f>>, and <<_vsscanf_r>> are
-reentrant versions which take an additional first parameter which points to the
-reentrancy structure.
-
-PORTABILITY
-These are GNU extensions.
-
-Supporting OS subroutines required:
-*/
-
-/*-
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#include <_ansi.h>
-#include <ctype.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <limits.h>
-#include <wchar.h>
-#include <string.h>
-#ifdef _HAVE_STDC
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-#include "local.h"
-
-#ifndef NO_FLOATING_POINT
-#define FLOATING_POINT
-#endif
-
-#ifdef FLOATING_POINT
-#include <float.h>
-
-/* Currently a test is made to see if long double processing is warranted.
- This could be changed in the future should the _ldtoa_r code be
- preferred over _dtoa_r. */
-#define _NO_LONGDBL
-#if defined WANT_IO_LONG_DBL && (LDBL_MANT_DIG > DBL_MANT_DIG)
-#undef _NO_LONGDBL
-extern _LONG_DOUBLE _strtold _PARAMS((char *s, char **sptr));
-#endif
-
-#define _NO_LONGLONG
-#if defined WANT_PRINTF_LONG_LONG && defined __GNUC__
-# undef _NO_LONGLONG
-#endif
-
-#include "floatio.h"
-#define BUF (MAXEXP+MAXFRACT+3) /* 3 = sign + decimal point + NUL */
-/* An upper bound for how long a long prints in decimal. 4 / 13 approximates
- log (2). Add one char for roundoff compensation and one for the sign. */
-#define MAX_LONG_LEN ((CHAR_BIT * sizeof (long) - 1) * 4 / 13 + 2)
-#else
-#define BUF 40
-#endif
-
-/*
- * Flags used during conversion.
- */
-
-#define LONG 0x01 /* l: long or double */
-#define LONGDBL 0x02 /* L: long double or long long */
-#define SHORT 0x04 /* h: short */
-#define SUPPRESS 0x08 /* suppress assignment */
-#define POINTER 0x10 /* weird %p pointer (`fake hex') */
-#define NOSKIP 0x20 /* do not skip blanks */
-
-/*
- * The following are used in numeric conversions only:
- * SIGNOK, NDIGITS, DPTOK, and EXPOK are for floating point;
- * SIGNOK, NDIGITS, PFXOK, and NZDIGITS are for integral.
- */
-
-#define SIGNOK 0x40 /* +/- is (still) legal */
-#define NDIGITS 0x80 /* no digits detected */
-
-#define DPTOK 0x100 /* (float) decimal point is still legal */
-#define EXPOK 0x200 /* (float) exponent (e+3, etc) still legal */
-
-#define PFXOK 0x100 /* 0x prefix is (still) legal */
-#define NZDIGITS 0x200 /* no zero digits detected */
-
-/*
- * Conversion types.
- */
-
-#define CT_CHAR 0 /* %c conversion */
-#define CT_CCL 1 /* %[...] conversion */
-#define CT_STRING 2 /* %s conversion */
-#define CT_INT 3 /* integer, i.e., strtol or strtoul */
-#define CT_FLOAT 4 /* floating, i.e., strtod */
-
-#if 0
-#define u_char unsigned char
-#endif
-#define u_char char
-#define u_long unsigned long
-
-#ifndef _NO_LONGLONG
-typedef unsigned long long u_long_long;
-#endif
-
-/*static*/ u_char *__sccl ();
-
-/*
- * vfscanf
- */
-
-#define BufferEmpty (fp->_r <= 0 && __srefill(fp))
-
-#ifndef _REENT_ONLY
-
-int
-_DEFUN (vfscanf, (fp, fmt, ap),
- register FILE *fp _AND
- _CONST char *fmt _AND
- va_list ap)
-{
- CHECK_INIT(fp);
- return __svfscanf_r (fp->_data, fp, fmt, ap);
-}
-
-int
-__svfscanf (fp, fmt0, ap)
- register FILE *fp;
- char _CONST *fmt0;
- va_list ap;
-{
- return __svfscanf_r (_REENT, fp, fmt0, ap);
-}
-
-#endif /* !_REENT_ONLY */
-
-int
-_DEFUN (_vfscanf_r, (data, fp, fmt, ap),
- struct _reent *data _AND
- register FILE *fp _AND
- _CONST char *fmt _AND
- va_list ap)
-{
- return __svfscanf_r (data, fp, fmt, ap);
-}
-
-
-int
-__svfscanf_r (rptr, fp, fmt0, ap)
- struct _reent *rptr;
- register FILE *fp;
- char _CONST *fmt0;
- va_list ap;
-{
- register u_char *fmt = (u_char *) fmt0;
- register int c; /* character from format, or conversion */
- register size_t width; /* field width, or 0 */
- register char *p; /* points into all kinds of strings */
- register int n; /* handy integer */
- register int flags; /* flags as defined above */
- register char *p0; /* saves original value of p when necessary */
- int nassigned; /* number of fields assigned */
- int nread; /* number of characters consumed from fp */
- int base = 0; /* base argument to strtol/strtoul */
- int nbytes = 1; /* number of bytes read from fmt string */
- wchar_t wc; /* wchar to use to read format string */
-
- u_long (*ccfn) () = 0; /* conversion function (strtol/strtoul) */
- char ccltab[256]; /* character class table for %[...] */
- char buf[BUF]; /* buffer for numeric conversions */
- char *lptr; /* literal pointer */
-#ifdef MB_CAPABLE
- mbstate_t state; /* value to keep track of multibyte state */
-#endif
-
- short *sp;
- int *ip;
- float *flp;
- _LONG_DOUBLE *ldp;
- double *dp;
- long *lp;
-#ifndef _NO_LONGLONG
- long long *llp;
-#else
- u_long _uquad;
-#endif
-
- /* `basefix' is used to avoid `if' tests in the integer scanner */
- static _CONST short basefix[17] =
- {10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};
-
- nassigned = 0;
- nread = 0;
- for (;;)
- {
-#ifndef MB_CAPABLE
- wc = *fmt;
-#else
- memset (&state, '\0', sizeof (state));
- nbytes = _mbtowc_r (rptr, &wc, fmt, MB_CUR_MAX, &state);
-#endif
- fmt += nbytes;
- if (wc == 0)
- return nassigned;
- if (nbytes == 1 && isspace (wc))
- {
- for (;;)
- {
- if (BufferEmpty || !isspace (*fp->_p))
- break;
- nread++, fp->_r--, fp->_p++;
- }
- continue;
- }
- if (wc != '%')
- goto literal;
- width = 0;
- flags = 0;
-
- /*
- * switch on the format. continue if done; break once format
- * type is derived.
- */
-
- again:
- c = *fmt++;
-
- switch (c)
- {
- case '%':
- literal:
- lptr = fmt - nbytes;
- for (n = 0; n < nbytes; ++n)
- {
- if (BufferEmpty)
- goto input_failure;
- if (*fp->_p != *lptr)
- goto match_failure;
- fp->_r--, fp->_p++;
- nread++;
- ++lptr;
- }
- continue;
-
- case '*':
- flags |= SUPPRESS;
- goto again;
- case 'l':
- flags |= LONG;
- goto again;
- case 'L':
- flags |= LONGDBL;
- goto again;
- case 'h':
- flags |= SHORT;
- goto again;
-
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- width = width * 10 + c - '0';
- goto again;
-
- /*
- * Conversions. Those marked `compat' are for
- * 4.[123]BSD compatibility.
- *
- * (According to ANSI, E and X formats are supposed to
- * the same as e and x. Sorry about that.)
- */
-
- case 'D': /* compat */
- flags |= LONG;
- /* FALLTHROUGH */
- case 'd':
- c = CT_INT;
- ccfn = (u_long (*)())_strtol_r;
- base = 10;
- break;
-
- case 'i':
- c = CT_INT;
- ccfn = (u_long (*)())_strtol_r;
- base = 0;
- break;
-
- case 'O': /* compat */
- flags |= LONG;
- /* FALLTHROUGH */
- case 'o':
- c = CT_INT;
- ccfn = _strtoul_r;
- base = 8;
- break;
-
- case 'u':
- c = CT_INT;
- ccfn = _strtoul_r;
- base = 10;
- break;
-
- case 'X': /* compat XXX */
- case 'x':
- flags |= PFXOK; /* enable 0x prefixing */
- c = CT_INT;
- ccfn = _strtoul_r;
- base = 16;
- break;
-
-#ifdef FLOATING_POINT
- case 'E': /* compat XXX */
- case 'G': /* compat XXX */
-/* ANSI says that E,G and X behave the same way as e,g,x */
- /* FALLTHROUGH */
- case 'e':
- case 'f':
- case 'g':
- c = CT_FLOAT;
- break;
-#endif
-
- case 's':
- c = CT_STRING;
- break;
-
- case '[':
- fmt = __sccl (ccltab, fmt);
- flags |= NOSKIP;
- c = CT_CCL;
- break;
-
- case 'c':
- flags |= NOSKIP;
- c = CT_CHAR;
- break;
-
- case 'p': /* pointer format is like hex */
- flags |= POINTER | PFXOK;
- c = CT_INT;
- ccfn = _strtoul_r;
- base = 16;
- break;
-
- case 'n':
- if (flags & SUPPRESS) /* ??? */
- continue;
- if (flags & SHORT)
- {
- sp = va_arg (ap, short *);
- *sp = nread;
- }
- else if (flags & LONG)
- {
- lp = va_arg (ap, long *);
- *lp = nread;
- }
-#ifndef _NO_LONGLONG
- else if (flags & LONGDBL)
- {
- llp = va_arg (ap, long long*);
- *llp = nread;
- }
-#endif
- else
- {
- ip = va_arg (ap, int *);
- *ip = nread;
- }
- continue;
-
- /*
- * Disgusting backwards compatibility hacks. XXX
- */
- case '\0': /* compat */
- return EOF;
-
- default: /* compat */
- if (isupper (c))
- flags |= LONG;
- c = CT_INT;
- ccfn = (u_long (*)())_strtol_r;
- base = 10;
- break;
- }
-
- /*
- * We have a conversion that requires input.
- */
- if (BufferEmpty)
- goto input_failure;
-
- /*
- * Consume leading white space, except for formats that
- * suppress this.
- */
- if ((flags & NOSKIP) == 0)
- {
- while (isspace (*fp->_p))
- {
- nread++;
- if (--fp->_r > 0)
- fp->_p++;
- else
-#ifndef CYGNUS_NEC
- if (__srefill (fp))
-#endif
- goto input_failure;
- }
- /*
- * Note that there is at least one character in the
- * buffer, so conversions that do not set NOSKIP ca
- * no longer result in an input failure.
- */
- }
-
- /*
- * Do the conversion.
- */
- switch (c)
- {
-
- case CT_CHAR:
- /* scan arbitrary characters (sets NOSKIP) */
- if (width == 0)
- width = 1;
- if (flags & SUPPRESS)
- {
- size_t sum = 0;
-
- for (;;)
- {
- if ((n = fp->_r) < (int)width)
- {
- sum += n;
- width -= n;
- fp->_p += n;
-#ifndef CYGNUS_NEC
- if (__srefill (fp))
- {
-#endif
- if (sum == 0)
- goto input_failure;
- break;
-#ifndef CYGNUS_NEC
- }
-#endif
- }
- else
- {
- sum += width;
- fp->_r -= width;
- fp->_p += width;
- break;
- }
- }
- nread += sum;
- }
- else
- {
-#ifdef CYGNUS_NEC
- /* Kludge city for the moment */
- char *dest = va_arg (ap, char *);
- int n = width;
- if (fp->_r == 0)
- goto input_failure;
-
- while (n && fp->_r)
- {
- *dest++ = *(fp->_p++);
- n--;
- fp->_r--;
- nread++;
- }
-#else
- size_t r = fread ((_PTR) va_arg (ap, char *), 1, width, fp);
-
- if (r == 0)
- goto input_failure;
- nread += r;
-#endif
- nassigned++;
- }
- break;
-
- case CT_CCL:
- /* scan a (nonempty) character class (sets NOSKIP) */
- if (width == 0)
- width = ~0; /* `infinity' */
- /* take only those things in the class */
- if (flags & SUPPRESS)
- {
- n = 0;
- while (ccltab[*fp->_p])
- {
- n++, fp->_r--, fp->_p++;
- if (--width == 0)
- break;
- if (BufferEmpty)
- {
- if (n == 0)
- goto input_failure;
- break;
- }
- }
- if (n == 0)
- goto match_failure;
- }
- else
- {
- p0 = p = va_arg (ap, char *);
- while (ccltab[*fp->_p])
- {
- fp->_r--;
- *p++ = *fp->_p++;
- if (--width == 0)
- break;
- if (BufferEmpty)
- {
- if (p == p0)
- goto input_failure;
- break;
- }
- }
- n = p - p0;
- if (n == 0)
- goto match_failure;
- *p = 0;
- nassigned++;
- }
- nread += n;
- break;
-
- case CT_STRING:
- /* like CCL, but zero-length string OK, & no NOSKIP */
- if (width == 0)
- width = ~0;
- if (flags & SUPPRESS)
- {
- n = 0;
- while (!isspace (*fp->_p))
- {
- n++, fp->_r--, fp->_p++;
- if (--width == 0)
- break;
- if (BufferEmpty)
- break;
- }
- nread += n;
- }
- else
- {
- p0 = p = va_arg (ap, char *);
- while (!isspace (*fp->_p))
- {
- fp->_r--;
- *p++ = *fp->_p++;
- if (--width == 0)
- break;
- if (BufferEmpty)
- break;
- }
- *p = 0;
- nread += p - p0;
- nassigned++;
- }
- continue;
-
- case CT_INT:
- /* scan an integer as if by strtol/strtoul */
-#ifdef hardway
- if (width == 0 || width > sizeof (buf) - 1)
- width = sizeof (buf) - 1;
-#else
- /* size_t is unsigned, hence this optimisation */
- if (--width > sizeof (buf) - 2)
- width = sizeof (buf) - 2;
- width++;
-#endif
- 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;
- goto ok;
- }
- break;
-
- /* x ok iff flag still set & 2nd char */
- case 'x':
- case 'X':
- if (flags & PFXOK && p == buf + 1)
- {
- base = 16;/* if %i */
- flags &= ~PFXOK;
- goto ok;
- }
- 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
-#ifndef CYGNUS_NEC
- if (__srefill (fp))
-#endif
- 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 (flags & NDIGITS)
- {
- if (p > buf)
- _CAST_VOID ungetc (*(u_char *)-- p, fp);
- goto match_failure;
- }
- c = ((u_char *) p)[-1];
- if (c == 'x' || c == 'X')
- {
- --p;
- /*(void)*/ ungetc (c, fp);
- }
- if ((flags & SUPPRESS) == 0)
- {
- u_long res;
-
- *p = 0;
- res = (*ccfn) (rptr, buf, (char **) NULL, base);
- if (flags & POINTER)
- *(va_arg (ap, _PTR *)) = (_PTR) (unsigned _POINTER_INT) res;
- else if (flags & SHORT)
- {
- sp = va_arg (ap, short *);
- *sp = res;
- }
- else if (flags & LONG)
- {
- lp = va_arg (ap, long *);
- *lp = res;
- }
-#ifndef _NO_LONGLONG
- else if (flags & LONGDBL)
- {
- u_long_long resll;
- if (ccfn == _strtoul_r)
- resll = _strtoull_r (rptr, buf, (char **) NULL, base);
- else
- resll = _strtoll_r (rptr, buf, (char **) NULL, base);
- llp = va_arg (ap, long long*);
- *llp = resll;
- }
-#endif
- else
- {
- ip = va_arg (ap, int *);
- *ip = res;
- }
- nassigned++;
- }
- nread += p - buf;
- break;
-
-#ifdef FLOATING_POINT
- case CT_FLOAT:
- {
- /* scan a floating point number as if by strtod */
- /* This code used to assume that the number of digits is reasonable.
- However, ANSI / ISO C makes no such stipulation; we have to get
- exact results even when there is an unreasonable amount of
- leading zeroes. */
- long leading_zeroes = 0;
- long zeroes, exp_adjust;
- char *exp_start = NULL;
-#ifdef hardway
- if (width == 0 || width > sizeof (buf) - 1)
- width = sizeof (buf) - 1;
-#else
- /* size_t is unsigned, hence this optimisation */
- if (--width > sizeof (buf) - 2)
- width = sizeof (buf) - 2;
- width++;
-#endif
- flags |= SIGNOK | NDIGITS | DPTOK | EXPOK;
- zeroes = 0;
- exp_adjust = 0;
- for (p = buf; width; )
- {
- c = *fp->_p;
- /*
- * This code mimicks the integer conversion
- * code, but is much simpler.
- */
- switch (c)
- {
-
- case '0':
- if (flags & NDIGITS)
- {
- flags &= ~SIGNOK;
- zeroes++;
- goto fskip;
- }
- /* Fall through. */
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- flags &= ~(SIGNOK | NDIGITS);
- goto fok;
-
- case '+':
- case '-':
- if (flags & SIGNOK)
- {
- flags &= ~SIGNOK;
- goto fok;
- }
- break;
- case '.':
- if (flags & DPTOK)
- {
- flags &= ~(SIGNOK | DPTOK);
- leading_zeroes = zeroes;
- goto fok;
- }
- break;
- case 'e':
- case 'E':
- /* no exponent without some digits */
- if ((flags & (NDIGITS | EXPOK)) == EXPOK
- || ((flags & EXPOK) && zeroes))
- {
- if (! (flags & DPTOK))
- {
- exp_adjust = zeroes - leading_zeroes;
- exp_start = p;
- }
- flags =
- (flags & ~(EXPOK | DPTOK)) |
- SIGNOK | NDIGITS;
- zeroes = 0;
- goto fok;
- }
- break;
- }
- break;
- fok:
- *p++ = c;
- width--;
- fskip:
- ++nread;
- if (--fp->_r > 0)
- fp->_p++;
- else
-#ifndef CYGNUS_NEC
- if (__srefill (fp))
-#endif
- break; /* EOF */
- }
- if (zeroes)
- flags &= ~NDIGITS;
- /*
- * If no digits, might be missing exponent digits
- * (just give back the exponent) or might be missing
- * regular digits, but had sign and/or decimal point.
- */
- if (flags & NDIGITS)
- {
- if (flags & EXPOK)
- {
- /* no digits at all */
- while (p > buf)
- {
- ungetc (*(u_char *)-- p, fp);
- --nread;
- }
- goto match_failure;
- }
- /* just a bad exponent (e and maybe sign) */
- c = *(u_char *)-- p;
- --nread;
- if (c != 'e' && c != 'E')
- {
- _CAST_VOID ungetc (c, fp); /* sign */
- c = *(u_char *)-- p;
- --nread;
- }
- _CAST_VOID ungetc (c, fp);
- }
- if ((flags & SUPPRESS) == 0)
- {
-#ifdef _NO_LONGDBL
- double res;
-#else /* !_NO_LONG_DBL */
- long double res;
-#endif /* !_NO_LONG_DBL */
- long new_exp = 0;
-
- *p = 0;
- if ((flags & (DPTOK | EXPOK)) == EXPOK)
- {
- exp_adjust = zeroes - leading_zeroes;
- new_exp = -exp_adjust;
- exp_start = p;
- }
- else if (exp_adjust)
- new_exp = _strtol_r (rptr, (exp_start + 1), NULL, 10) - exp_adjust;
- if (exp_adjust)
- {
-
- /* If there might not be enough space for the new exponent,
- truncate some trailing digits to make room. */
- if (exp_start >= buf + sizeof (buf) - MAX_LONG_LEN)
- exp_start = buf + sizeof (buf) - MAX_LONG_LEN - 1;
- sprintf (exp_start, "e%ld", new_exp);
- }
-#ifdef _NO_LONGDBL
- res = _strtod_r (rptr, buf, NULL);
-#else /* !_NO_LONGDBL */
- res = _strtold (buf, NULL);
-#endif /* !_NO_LONGDBL */
- if (flags & LONG)
- {
- dp = va_arg (ap, double *);
- *dp = res;
- }
- else if (flags & LONGDBL)
- {
- ldp = va_arg (ap, _LONG_DOUBLE *);
- *ldp = res;
- }
- else
- {
- flp = va_arg (ap, float *);
- *flp = res;
- }
- nassigned++;
- }
- break;
- }
-#endif /* FLOATING_POINT */
- }
- }
-input_failure:
- return nassigned ? nassigned : -1;
-match_failure:
- return nassigned;
-}
-
-/*
- * Fill in the given table from the scanset at the given format
- * (just after `['). Return a pointer to the character past the
- * closing `]'. The table has a 1 wherever characters should be
- * considered part of the scanset.
- */
-
-/*static*/
-u_char *
-__sccl (tab, fmt)
- register char *tab;
- register u_char *fmt;
-{
- register int c, n, v;
-
- /* first `clear' the whole table */
- c = *fmt++; /* first char hat => negated scanset */
- if (c == '^')
- {
- v = 1; /* default => accept */
- c = *fmt++; /* get new first char */
- }
- else
- v = 0; /* default => reject */
- /* should probably use memset here */
- for (n = 0; n < 256; n++)
- tab[n] = v;
- if (c == 0)
- return fmt - 1; /* format ended before closing ] */
-
- /*
- * Now set the entries corresponding to the actual scanset to the
- * opposite of the above.
- *
- * The first character may be ']' (or '-') without being special; the
- * last character may be '-'.
- */
-
- v = 1 - v;
- for (;;)
- {
- tab[c] = v; /* take character c */
- doswitch:
- n = *fmt++; /* and examine the next */
- switch (n)
- {
-
- case 0: /* format ended too soon */
- return fmt - 1;
-
- case '-':
- /*
- * A scanset of the form [01+-] is defined as `the digit 0, the
- * digit 1, the character +, the character -', but the effect of a
- * scanset such as [a-zA-Z0-9] is implementation defined. The V7
- * Unix scanf treats `a-z' as `the letters a through z', but treats
- * `a-a' as `the letter a, the character -, and the letter a'.
- *
- * For compatibility, the `-' is not considerd to define a range if
- * the character following it is either a close bracket (required by
- * ANSI) or is not numerically greater than the character we just
- * stored in the table (c).
- */
- n = *fmt;
- if (n == ']' || n < c)
- {
- c = '-';
- break; /* resume the for(;;) */
- }
- fmt++;
- do
- { /* fill in the range */
- tab[++c] = v;
- }
- while (c < n);
-#if 1 /* XXX another disgusting compatibility hack */
- /*
- * Alas, the V7 Unix scanf also treats formats such
- * as [a-c-e] as `the letters a through e'. This too
- * is permitted by the standard....
- */
- goto doswitch;
-#else
- c = *fmt++;
- if (c == 0)
- return fmt - 1;
- if (c == ']')
- return fmt;
-#endif
-
- break;
-
-
- case ']': /* end of scanset */
- return fmt;
-
- default: /* just another character */
- c = n;
- break;
- }
- }
- /* NOTREACHED */
-}
diff --git a/newlib/libc/stdio/vprintf.c b/newlib/libc/stdio/vprintf.c
deleted file mode 100644
index e82306eaa..000000000
--- a/newlib/libc/stdio/vprintf.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* doc in vfprintf.c */
-
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#include <_ansi.h>
-#include <stdio.h>
-
-#ifdef _HAVE_STDC
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-
-#include "local.h"
-
-int
-_DEFUN (vprintf, (fmt, ap),
- _CONST char *fmt _AND
- va_list ap)
-{
- _REENT_SMALL_CHECK_INIT(_stdout_r (_REENT));
- return vfprintf (_stdout_r (_REENT), fmt, ap);
-}
-
-int
-_DEFUN (_vprintf_r, (ptr, fmt, ap),
- struct _reent *ptr _AND
- _CONST char *fmt _AND
- va_list ap)
-{
- _REENT_SMALL_CHECK_INIT(_stdout_r (ptr));
- return _vfprintf_r (ptr, _stdout_r (ptr), fmt, ap);
-}
diff --git a/newlib/libc/stdio/vscanf.c b/newlib/libc/stdio/vscanf.c
deleted file mode 100644
index e494aaf60..000000000
--- a/newlib/libc/stdio/vscanf.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/*-
- * Code created by modifying scanf.c which has following copyright.
- *
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#include <_ansi.h>
-#include <stdio.h>
-#include "local.h"
-
-#ifdef _HAVE_STDC
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-
-/*
- * vscanf
- */
-
-#ifndef _REENT_ONLY
-
-int
-_DEFUN (vscanf, (fmt, ap),
- _CONST char *fmt _AND
- va_list ap)
-{
- _REENT_SMALL_CHECK_INIT(_stdin_r (_REENT));
- return __svfscanf_r (_REENT, _stdin_r (_REENT), fmt, ap);
-}
-
-#endif /* !_REENT_ONLY */
-
-int
-_DEFUN (_vscanf_r, (ptr, fmt, ap),
- struct _reent *ptr _AND
- _CONST char *fmt _AND
- va_list ap)
-{
- _REENT_SMALL_CHECK_INIT(_stdin_r (ptr));
- return __svfscanf_r (ptr, _stdin_r (ptr), fmt, ap);
-}
-
diff --git a/newlib/libc/stdio/vsnprintf.c b/newlib/libc/stdio/vsnprintf.c
deleted file mode 100644
index 4e9c283bb..000000000
--- a/newlib/libc/stdio/vsnprintf.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* doc in vfprintf.c */
-
-/* This code created by modifying vsprintf.c so copyright inherited. */
-
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "%W% (Berkeley) %G%";
-#endif /* LIBC_SCCS and not lint */
-
-#include <_ansi.h>
-#include <reent.h>
-#include <stdio.h>
-#include <limits.h>
-#ifdef _HAVE_STDC
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-
-int
-_DEFUN (vsnprintf, (str, size, fmt, ap),
- char *str _AND
- size_t size _AND
- _CONST char *fmt _AND
- va_list ap)
-{
- int ret;
- FILE f;
-
- f._flags = __SWR | __SSTR;
- f._bf._base = f._p = (unsigned char *) str;
- f._bf._size = f._w = (size > 0 ? size - 1 : 0);
- f._data = _REENT;
- ret = vfprintf (&f, fmt, ap);
- if (size > 0)
- *f._p = 0;
- return ret;
-}
-
-int
-_DEFUN (_vsnprintf_r, (ptr, str, size, fmt, ap),
- struct _reent *ptr _AND
- char *str _AND
- size_t size _AND
- _CONST char *fmt _AND
- va_list ap)
-{
- int ret;
- FILE f;
-
- f._flags = __SWR | __SSTR;
- f._bf._base = f._p = (unsigned char *) str;
- f._bf._size = f._w = (size > 0 ? size - 1 : 0);
- f._data = ptr;
- ret = _vfprintf_r (ptr, &f, fmt, ap);
- if (size > 0)
- *f._p = 0;
- return ret;
-}
diff --git a/newlib/libc/stdio/vsprintf.c b/newlib/libc/stdio/vsprintf.c
deleted file mode 100644
index b440ac506..000000000
--- a/newlib/libc/stdio/vsprintf.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/* doc in vfprintf.c */
-
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "%W% (Berkeley) %G%";
-#endif /* LIBC_SCCS and not lint */
-
-#include <_ansi.h>
-#include <reent.h>
-#include <stdio.h>
-#include <limits.h>
-#ifdef _HAVE_STDC
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-
-int
-_DEFUN (vsprintf, (str, fmt, ap),
- char *str _AND
- _CONST char *fmt _AND
- va_list ap)
-{
- int ret;
- FILE f;
-
- f._flags = __SWR | __SSTR;
- f._bf._base = f._p = (unsigned char *) str;
- f._bf._size = f._w = INT_MAX;
- f._data = _REENT;
- ret = vfprintf (&f, fmt, ap);
- *f._p = 0;
- return ret;
-}
-
-int
-_DEFUN (_vsprintf_r, (ptr, str, fmt, ap),
- struct _reent *ptr _AND
- char *str _AND
- _CONST char *fmt _AND
- va_list ap)
-{
- int ret;
- FILE f;
-
- f._flags = __SWR | __SSTR;
- f._bf._base = f._p = (unsigned char *) str;
- f._bf._size = f._w = INT_MAX;
- f._data = ptr;
- ret = _vfprintf_r (ptr, &f, fmt, ap);
- *f._p = 0;
- return ret;
-}
-
diff --git a/newlib/libc/stdio/vsscanf.c b/newlib/libc/stdio/vsscanf.c
deleted file mode 100644
index 5ac6d098f..000000000
--- a/newlib/libc/stdio/vsscanf.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Code created by modifying scanf.c which has following copyright.
- *
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#include <_ansi.h>
-#include <reent.h>
-#include <stdio.h>
-#include <string.h>
-#ifdef _HAVE_STDC
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-#include "local.h"
-
-static
-_READ_WRITE_RETURN_TYPE
-eofread1 (cookie, buf, len)
- _PTR cookie;
- char *buf;
- int len;
-{
- return 0;
-}
-
-/*
- * vsscanf
- */
-
-#ifndef _REENT_ONLY
-
-int
-_DEFUN (vsscanf, (str, fmt, ap),
- _CONST char *str _AND
- _CONST char *fmt _AND
- va_list ap)
-{
- return _vsscanf_r (_REENT, str, fmt, ap);
-}
-
-#endif /* !_REENT_ONLY */
-
-int
-_DEFUN (_vsscanf_r, (ptr, str, fmt, ap),
- struct _reent *ptr _AND
- _CONST char *str _AND
- _CONST char *fmt _AND
- va_list ap)
-{
- FILE f;
-
- f._flags = __SRD;
- f._bf._base = f._p = (unsigned char *) str;
- f._bf._size = f._r = strlen (str);
- f._read = eofread1;
- f._ub._base = NULL;
- f._lb._base = NULL;
- f._data = ptr;
- return __svfscanf_r (ptr, &f, fmt, ap);
-}
-
diff --git a/newlib/libc/stdio/wbuf.c b/newlib/libc/stdio/wbuf.c
deleted file mode 100644
index 110682971..000000000
--- a/newlib/libc/stdio/wbuf.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/* No user fns here. Pesch 15apr92. */
-
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "%W% (Berkeley) %G%";
-#endif /* LIBC_SCCS and not lint */
-
-#include <stdio.h>
-#include "local.h"
-#include "fvwrite.h"
-
-/*
- * Write the given character into the (probably full) buffer for
- * the given file. Flush the buffer out if it is or becomes full,
- * or if c=='\n' and the file is line buffered.
- */
-
-int
-__swbuf (c, fp)
- register int c;
- register FILE *fp;
-{
- register int n;
-
- /* Ensure stdio has been initialized. */
-
- CHECK_INIT (fp);
-
- /*
- * In case we cannot write, or longjmp takes us out early,
- * make sure _w is 0 (if fully- or un-buffered) or -_bf._size
- * (if line buffered) so that we will get called again.
- * If we did not do this, a sufficient number of putc()
- * calls might wrap _w from negative to positive.
- */
-
- fp->_w = fp->_lbfsize;
- if (cantwrite (fp))
- return EOF;
- c = (unsigned char) c;
-
- /*
- * If it is completely full, flush it out. Then, in any case,
- * stuff c into the buffer. If this causes the buffer to fill
- * completely, or if c is '\n' and the file is line buffered,
- * flush it (perhaps a second time). The second flush will always
- * happen on unbuffered streams, where _bf._size==1; fflush()
- * guarantees that putc() will always call wbuf() by setting _w
- * to 0, so we need not do anything else.
- */
-
- n = fp->_p - fp->_bf._base;
- if (n >= fp->_bf._size)
- {
- if (fflush (fp))
- return EOF;
- n = 0;
- }
- fp->_w--;
- *fp->_p++ = c;
- if (++n == fp->_bf._size || (fp->_flags & __SLBF && c == '\n'))
- if (fflush (fp))
- return EOF;
- return c;
-}
diff --git a/newlib/libc/stdio/wsetup.c b/newlib/libc/stdio/wsetup.c
deleted file mode 100644
index 23b032efe..000000000
--- a/newlib/libc/stdio/wsetup.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/* No user fns here. Pesch 15apr92. */
-
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "local.h"
-
-/*
- * Various output routines call wsetup to be sure it is safe to write,
- * because either _flags does not include __SWR, or _buf is NULL.
- * _wsetup returns 0 if OK to write, nonzero otherwise.
- */
-
-int
-_DEFUN (__swsetup, (fp),
- register FILE * fp)
-{
- /* Make sure stdio is set up. */
-
- CHECK_INIT (fp);
-
- /*
- * If we are not writing, we had better be reading and writing.
- */
-
- if ((fp->_flags & __SWR) == 0)
- {
- if ((fp->_flags & __SRW) == 0)
- return EOF;
- if (fp->_flags & __SRD)
- {
- /* clobber any ungetc data */
- if (HASUB (fp))
- FREEUB (fp);
- fp->_flags &= ~(__SRD | __SEOF);
- fp->_r = 0;
- fp->_p = fp->_bf._base;
- }
- fp->_flags |= __SWR;
- }
-
- /*
- * Make a buffer if necessary, then set _w.
- */
- /* NOT NEEDED FOR CYGNUS SPRINTF ONLY jpg */
- if (fp->_bf._base == NULL)
- __smakebuf (fp);
-
- if (fp->_flags & __SLBF)
- {
- /*
- * It is line buffered, so make _lbfsize be -_bufsize
- * for the putc() macro. We will change _lbfsize back
- * to 0 whenever we turn off __SWR.
- */
- fp->_w = 0;
- fp->_lbfsize = -fp->_bf._size;
- }
- else
- fp->_w = fp->_flags & __SNBF ? 0 : fp->_bf._size;
-
- return 0;
-}