aboutsummaryrefslogtreecommitdiff
path: root/libio
diff options
context:
space:
mode:
Diffstat (limited to 'libio')
-rw-r--r--libio/Makefile44
-rw-r--r--libio/cleanup.c15
-rw-r--r--libio/clearerr.c10
-rw-r--r--libio/feof.c34
-rw-r--r--libio/ferror.c34
-rw-r--r--libio/fgetc.c34
-rw-r--r--libio/filedoalloc.c103
-rw-r--r--libio/fileno.c38
-rw-r--r--libio/fileops.c738
-rw-r--r--libio/fputc.c35
-rw-r--r--libio/freopen.c38
-rw-r--r--libio/fseek.c36
-rw-r--r--libio/genops.c837
-rw-r--r--libio/getc.c35
-rw-r--r--libio/getchar.c34
-rw-r--r--libio/iofclose.c51
-rw-r--r--libio/iofdopen.c124
-rw-r--r--libio/iofflush.c40
-rw-r--r--libio/iofgetpos.c49
-rw-r--r--libio/iofgets.c44
-rw-r--r--libio/iofopen.c52
-rw-r--r--libio/iofopncook.c163
-rw-r--r--libio/iofprintf.c48
-rw-r--r--libio/iofputs.c40
-rw-r--r--libio/iofread.c42
-rw-r--r--libio/iofscanf.c50
-rw-r--r--libio/iofsetpos.c46
-rw-r--r--libio/ioftell.c47
-rw-r--r--libio/iofwrite.c48
-rw-r--r--libio/iogetdelim.c105
-rw-r--r--libio/iogetline.c74
-rw-r--r--libio/iogets.c49
-rw-r--r--libio/iolibio.h53
-rw-r--r--libio/iopadn.c65
-rw-r--r--libio/ioprims.c73
-rw-r--r--libio/ioputs.c38
-rw-r--r--libio/ioseekoff.c43
-rw-r--r--libio/ioseekpos.c39
-rw-r--r--libio/iosetbuffer.c38
-rw-r--r--libio/iosetvbuf.c80
-rw-r--r--libio/iosprintf.c47
-rw-r--r--libio/ioungetc.c38
-rw-r--r--libio/iovsprintf.c44
-rw-r--r--libio/iovsscanf.c38
-rw-r--r--libio/libio.h272
-rw-r--r--libio/libioP.h397
-rw-r--r--libio/memstream.c129
-rw-r--r--libio/putc.c30
-rw-r--r--libio/putchar.c29
-rw-r--r--libio/rewind.c33
-rw-r--r--libio/setbuf.c33
-rw-r--r--libio/setlinebuf.c35
-rw-r--r--libio/stdfiles.c44
-rw-r--r--libio/stdio.c12
-rw-r--r--libio/stdio.h196
-rw-r--r--libio/strfile.h46
-rw-r--r--libio/strops.c285
-rw-r--r--libio/vasprintf.c61
-rw-r--r--libio/vdprintf.c60
-rw-r--r--libio/vscanf.c37
-rw-r--r--libio/vsnprintf.c44
61 files changed, 5476 insertions, 0 deletions
diff --git a/libio/Makefile b/libio/Makefile
new file mode 100644
index 0000000000..8d09a5ecce
--- /dev/null
+++ b/libio/Makefile
@@ -0,0 +1,44 @@
+# Copyright (C) 1995 Free Software Foundation, Inc.
+# This file is part of the GNU C Library.
+
+# The GNU C Library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public License as
+# published by the Free Software Foundation; either version 2 of the
+# License, or (at your option) any later version.
+
+# The GNU C Library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with the GNU C Library; see the file COPYING.LIB. If
+# not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+# Cambridge, MA 02139, USA.
+
+#
+# Specific makefile for libio.
+#
+subdir := libio
+
+headers := stdio.h libio.h
+
+routines := \
+ filedoalloc iofclose iofdopen iofflush iofgetpos iofgets iofopen \
+ iofopncook iofprintf iofputs iofread iofscanf iofsetpos ioftell \
+ iofwrite iogetdelim iogetline iogets iopadn ioprims ioputs \
+ ioseekoff ioseekpos iosetbuffer iosetvbuf iosprintf ioungetc \
+ iovsprintf iovsscanf \
+ \
+ clearerr feof ferror fgetc fileno fputc freopen fseek getc getchar \
+ memstream putc putchar rewind setbuf setlinebuf vasprintf vdprintf \
+ vscanf vsnprintf \
+ \
+ libc_fatal
+
+aux := \
+ cleanup fileops genops stdfiles stdio strops
+
+distribute := iolibio.h libioP.h strfile.h
+
+include ../Rules
diff --git a/libio/cleanup.c b/libio/cleanup.c
new file mode 100644
index 0000000000..b4c8be927f
--- /dev/null
+++ b/libio/cleanup.c
@@ -0,0 +1,15 @@
+#include "libioP.h"
+#if _G_HAVE_ATEXIT
+#include <stdlib.h>
+
+typedef void (*voidfunc) __P((void));
+
+static void
+DEFUN_VOID(_IO_register_cleanup)
+{
+ atexit ((voidfunc)_IO_cleanup);
+ _IO_cleanup_registration_needed = 0;
+}
+
+void (*_IO_cleanup_registration_needed)() = _IO_register_cleanup;
+#endif /* _G_HAVE_ATEXIT */
diff --git a/libio/clearerr.c b/libio/clearerr.c
new file mode 100644
index 0000000000..ee9780bdaf
--- /dev/null
+++ b/libio/clearerr.c
@@ -0,0 +1,10 @@
+#include "libioP.h"
+#include "stdio.h"
+
+void
+clearerr(fp)
+ FILE* fp;
+{
+ CHECK_FILE(fp, /*nothing*/);
+ _IO_clearerr(fp);
+}
diff --git a/libio/feof.c b/libio/feof.c
new file mode 100644
index 0000000000..bd30c175f3
--- /dev/null
+++ b/libio/feof.c
@@ -0,0 +1,34 @@
+/*
+Copyright (C) 1993 Free Software Foundation
+
+This file is part of the GNU IO Library. This library is free
+software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this library; see the file COPYING. If not, write to the Free
+Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+As a special exception, if you link this library with files
+compiled with a GNU compiler to produce an executable, this does not cause
+the resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why
+the executable file might be covered by the GNU General Public License. */
+
+#include "libioP.h"
+#include "stdio.h"
+
+int
+feof(fp)
+ _IO_FILE* fp;
+{
+ CHECK_FILE(fp, EOF);
+ return _IO_feof(fp);
+}
diff --git a/libio/ferror.c b/libio/ferror.c
new file mode 100644
index 0000000000..d0159818e8
--- /dev/null
+++ b/libio/ferror.c
@@ -0,0 +1,34 @@
+/*
+Copyright (C) 1993, 1995 Free Software Foundation
+
+This file is part of the GNU IO Library. This library is free
+software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this library; see the file COPYING. If not, write to the Free
+Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+As a special exception, if you link this library with files
+compiled with a GNU compiler to produce an executable, this does not cause
+the resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why
+the executable file might be covered by the GNU General Public License. */
+
+#include "libioP.h"
+#include "stdio.h"
+
+int
+ferror (fp)
+ _IO_FILE* fp;
+{
+ CHECK_FILE (fp, EOF);
+ return _IO_ferror (fp);
+}
diff --git a/libio/fgetc.c b/libio/fgetc.c
new file mode 100644
index 0000000000..19c0a589d9
--- /dev/null
+++ b/libio/fgetc.c
@@ -0,0 +1,34 @@
+/*
+Copyright (C) 1993, 1995 Free Software Foundation
+
+This file is part of the GNU IO Library. This library is free
+software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this library; see the file COPYING. If not, write to the Free
+Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+As a special exception, if you link this library with files
+compiled with a GNU compiler to produce an executable, this does not cause
+the resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why
+the executable file might be covered by the GNU General Public License. */
+
+#include "libioP.h"
+#include "stdio.h"
+
+int
+fgetc (fp)
+ FILE *fp;
+{
+ CHECK_FILE (fp, EOF);
+ return _IO_getc (fp);
+}
diff --git a/libio/filedoalloc.c b/libio/filedoalloc.c
new file mode 100644
index 0000000000..8ab1738a7c
--- /dev/null
+++ b/libio/filedoalloc.c
@@ -0,0 +1,103 @@
+/*
+Copyright (C) 1993 Free Software Foundation
+
+This file is part of the GNU IO Library. This library is free
+software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this library; see the file COPYING. If not, write to the Free
+Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+As a special exception, if you link this library with files
+compiled with a GNU compiler to produce an executable, this does not cause
+the resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why
+the executable file might be covered by the GNU General Public License. */
+
+/*
+ * 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 for GNU iostream by Per Bothner 1991, 1992. */
+
+#define _POSIX_SOURCE
+#include "libioP.h"
+#include <sys/types.h>
+#include <sys/stat.h>
+#ifdef __STDC__
+#include <stdlib.h>
+#endif
+
+/* If this function pointer is non-zero, we should call it.
+ It's supposed to make sure _IO_cleanup gets called on exit.
+ We call it from _IO_file_doallocate, since that is likely
+ to get called by any program that does buffered I/O. */
+void (*_IO_cleanup_registration_needed)();
+
+/*
+ * 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
+ * optimisation) right after the _fstat() that finds the buffer size.
+ */
+
+int
+DEFUN(_IO_file_doallocate, (fp),
+ register _IO_FILE *fp)
+{
+ register _IO_size_t size;
+ int couldbetty;
+ register char *p;
+ struct stat st;
+
+ if (_IO_cleanup_registration_needed)
+ (*_IO_cleanup_registration_needed)();
+
+ if (fp->_fileno < 0 || _IO_SYSSTAT (fp, &st) < 0)
+ {
+ couldbetty = 0;
+ size = _IO_BUFSIZ;
+#if 0
+ /* do not try to optimise fseek() */
+ fp->_flags |= __SNPT;
+#endif
+ }
+ else
+ {
+ couldbetty = S_ISCHR(st.st_mode);
+#if _IO_HAVE_ST_BLKSIZE
+ size = st.st_blksiz