aboutsummaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2002-04-30 22:00:59 +0000
committerRoland McGrath <roland@gnu.org>2002-04-30 22:00:59 +0000
commita8c017767721fec8fd4ee53c1937e31e35dfac08 (patch)
tree11c43b6158f98ebcce0ab0b5555faa3a35d43187 /sysdeps
parent8543f93de2a52f1e314051aa20f7394a7c13366f (diff)
downloadglibc-a8c017767721fec8fd4ee53c1937e31e35dfac08.zip
glibc-a8c017767721fec8fd4ee53c1937e31e35dfac08.tar.gz
glibc-a8c017767721fec8fd4ee53c1937e31e35dfac08.tar.bz2
2002-04-30 Roland McGrath <roland@frob.com>
Removed old GNU stdio implementation; GNU libio is now the only option. * configure.in: Removed --enable-libio option and @stdio@ subst var. Define USE_IN_LIBIO unconditionally. * configure: Regenerated. * Makeconfig (stdio): Set to libio by default. * config.make.in (stdio): Variable removed. * sysdeps/unix/sysv/linux/configure.in: Don't set $stdio. * sysdeps/unix/sysv/linux/configure: Regenerated. * sysdeps/mach/hurd/configure.in: Don't test $stdio. * sysdeps/mach/hurd/configure: Regenerated. * stdio/.cvsignore: File removed. * stdio/Makefile: File removed. * stdio/Versions: File removed. * stdio/__fbufsize.c: File removed. * stdio/__flbf.c: File removed. * stdio/__fpending.c: File removed. * stdio/__fpurge.c: File removed. * stdio/__freadable.c: File removed. * stdio/__freading.c: File removed. * stdio/__fsetlocking.c: File removed. * stdio/__fwritable.c: File removed. * stdio/__fwriting.c: File removed. * stdio/clearerr.c: File removed. * stdio/fclose.c: File removed. * stdio/fcloseall.c: File removed. * stdio/feof.c: File removed. * stdio/ferror.c: File removed. * stdio/fflush.c: File removed. * stdio/fgetc.c: File removed. * stdio/fgetpos.c: File removed. * stdio/fgets.c: File removed. * stdio/fileno.c: File removed. * stdio/fmemopen.c: File removed. * stdio/fopen.c: File removed. * stdio/fopncook.c: File removed. * stdio/fputc.c: File removed. * stdio/fputs.c: File removed. * stdio/fread.c: File removed. * stdio/freopen.c: File removed. * stdio/fseek.c: File removed. * stdio/fsetpos.c: File removed. * stdio/ftell.c: File removed. * stdio/fwrite.c: File removed. * stdio/getc.c: File removed. * stdio/getchar.c: File removed. * stdio/getdelim.c: File removed. * stdio/gets.c: File removed. * stdio/glue.c: File removed. * stdio/internals.c: File removed. * stdio/linewrap.c: File removed. * stdio/linewrap.h: File removed. * stdio/memstream.c: File removed. * stdio/newstream.c: File removed. * stdio/obstream.c: File removed. * stdio/putc.c: File removed. * stdio/putchar.c: File removed. * stdio/puts.c: File removed. * stdio/rewind.c: File removed. * stdio/setbuf.c: File removed. * stdio/setbuffer.c: File removed. * stdio/setlinebuf.c: File removed. * stdio/setvbuf.c: File removed. * stdio/stdio.h: File removed. * stdio/ungetc.c: File removed. * stdio/vasprintf.c: File removed. * stdio/vscanf.c: File removed. * stdio/vsnprintf.c: File removed. * stdio/vsprintf.c: File removed. * stdio/vsscanf.c: File removed. * sysdeps/generic/defs.c: File removed. * sysdeps/generic/fdopen.c: File removed. * sysdeps/generic/pipestream.c: File removed. * sysdeps/generic/stdio_init.c: File removed. * sysdeps/generic/sysd-stdio.c: File removed. * sysdeps/generic/vdprintf.c: File removed. * sysdeps/mach/hurd/defs.c: File removed. * sysdeps/mach/hurd/fdopen.c: File removed. * sysdeps/mach/hurd/pipestream.c: File removed. * sysdeps/mach/hurd/stdio_init.c: File removed. * sysdeps/mach/hurd/sysd-stdio.c: File removed. * sysdeps/mach/hurd/vdprintf.c: File removed. * sysdeps/posix/defs.c: File removed. * sysdeps/posix/fdopen.c: File removed. * sysdeps/posix/pipestream.c: File removed. * sysdeps/posix/stdio_init.c: File removed. * sysdeps/posix/vdprintf.c: File removed. * sysdeps/unix/pipestream.c: File removed. * sysdeps/unix/sysv/sysd-stdio.c: File removed. * sysdeps/unix/sysv/sco3.2.4/pipestream.c: File removed. * sysdeps/unix/sysv/sysv4/pipestream.c: File removed.
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/generic/defs.c47
-rw-r--r--sysdeps/generic/fdopen.c34
-rw-r--r--sysdeps/generic/pipestream.c60
-rw-r--r--sysdeps/generic/stdio_init.c30
-rw-r--r--sysdeps/generic/sysd-stdio.c191
-rw-r--r--sysdeps/generic/vdprintf.c33
-rwxr-xr-xsysdeps/mach/hurd/configure13
-rw-r--r--sysdeps/mach/hurd/configure.in9
-rw-r--r--sysdeps/mach/hurd/defs.c87
-rw-r--r--sysdeps/mach/hurd/fdopen.c72
-rw-r--r--sysdeps/mach/hurd/pipestream.c2
-rw-r--r--sysdeps/mach/hurd/stdio_init.c62
-rw-r--r--sysdeps/mach/hurd/sysd-stdio.c257
-rw-r--r--sysdeps/mach/hurd/vdprintf.c57
-rw-r--r--sysdeps/posix/defs.c74
-rw-r--r--sysdeps/posix/fdopen.c75
-rw-r--r--sysdeps/posix/pipestream.c221
-rw-r--r--sysdeps/posix/stdio_init.c69
-rw-r--r--sysdeps/posix/vdprintf.c49
-rw-r--r--sysdeps/unix/pipestream.c2
-rw-r--r--sysdeps/unix/sysv/linux/configure.in3
-rw-r--r--sysdeps/unix/sysv/sco3.2.4/pipestream.c3
-rw-r--r--sysdeps/unix/sysv/sysd-stdio.c2
-rw-r--r--sysdeps/unix/sysv/sysv4/pipestream.c2
24 files changed, 6 insertions, 1448 deletions
diff --git a/sysdeps/generic/defs.c b/sysdeps/generic/defs.c
deleted file mode 100644
index c71235d..0000000
--- a/sysdeps/generic/defs.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Definitions of global stdio data structures.
- Copyright (C) 1991, 1995, 1997 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 Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <stdio.h>
-
-/* This file should define the following
- variables as appropriate for the system. */
-
-FILE *stdin, *stdout, *stderr;
-
-/* Pointer to the first stream in the list. */
-FILE *__stdio_head;
-
-/* This function MUST be in this file!
- This is because we want _cleanup to go into the __libc_atexit set
- when any stdio code is used (and to use any stdio code, one must reference
- something defined in this file), and since only local symbols can be made
- set elements, having the set element stab entry here and _cleanup elsewhere
- loses; and having them both elsewhere loses because there is no reference
- to cause _cleanup to be linked in. */
-
-void
-_cleanup ()
-{
- __fcloseall ();
-}
-
-
-#ifdef HAVE_GNU_LD
-text_set_element (__libc_atexit, _cleanup);
-#endif
diff --git a/sysdeps/generic/fdopen.c b/sysdeps/generic/fdopen.c
deleted file mode 100644
index d856d04..0000000
--- a/sysdeps/generic/fdopen.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Copyright (C) 1991, 1995, 1996, 1997 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 Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <errno.h>
-#include <stdio.h>
-
-/* Open a new stream on a given system file descriptor. */
-FILE *
-__fdopen (fd, mode)
- int fd;
- const char *mode;
-{
- __set_errno (ENOSYS);
- return NULL;
-}
-weak_alias (__fdopen, fdopen)
-
-stub_warning (fdopen)
-#include <stub-tag.h>
diff --git a/sysdeps/generic/pipestream.c b/sysdeps/generic/pipestream.c
deleted file mode 100644
index f30dbdd..0000000
--- a/sysdeps/generic/pipestream.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/* Copyright (C) 1991, 1993, 1995, 1996, 1997 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 Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <stddef.h>
-#include <signal.h>
-#include <stdio.h>
-#include <errno.h>
-
-
-/* Open a new stream that is a one-way pipe to a
- child process running the given shell command. */
-FILE *
-popen (command, mode)
- const char *command;
- const char *mode;
-{
- if (command == NULL || mode == NULL || (*mode != 'r' && *mode != 'w'))
- {
- __set_errno (EINVAL);
- return NULL;
- }
-
- __set_errno (ENOSYS);
- return NULL;
-}
-
-/* Close a stream opened by popen and return its status.
- Returns -1 if the stream was not opened by popen. */
-int
-pclose (stream)
- register FILE *stream;
-{
- if (!__validfp (stream) || !stream->__ispipe)
- {
- __set_errno (EINVAL);
- return -1;
- }
-
- __set_errno (ENOSYS);
- return -1;
-}
-
-stub_warning (popen)
-stub_warning (pclose)
-#include <stub-tag.h>
diff --git a/sysdeps/generic/stdio_init.c b/sysdeps/generic/stdio_init.c
deleted file mode 100644
index 4269343..0000000
--- a/sysdeps/generic/stdio_init.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright (C) 1991, 1997 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 Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <stdio.h>
-
-/* Initialize STREAM as necessary.
- This may change I/O functions, give a buffer, etc.
- If no buffer is allocated, but the bufsize is set,
- the bufsize will be used to allocate the buffer. */
-void
-__stdio_init_stream (stream)
- FILE *stream;
-{
- stream->__bufsize = BUFSIZ;
-}
diff --git a/sysdeps/generic/sysd-stdio.c b/sysdeps/generic/sysd-stdio.c
deleted file mode 100644
index 032ea60..0000000
--- a/sysdeps/generic/sysd-stdio.c
+++ /dev/null
@@ -1,191 +0,0 @@
-/* Copyright (C) 1991, 92, 93, 94, 95, 96, 97 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 Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <errno.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-
-extern __io_read_fn __stdio_read;
-extern __io_write_fn __stdio_write;
-extern __io_seek_fn __stdio_seek;
-extern __io_close_fn __stdio_close;
-extern __io_fileno_fn __stdio_fileno;
-
-/* Read N bytes into BUF from COOKIE. */
-int
-__stdio_read (void *cookie, char *buf, size_t n)
-{
- const int fd = (int) cookie;
-#if defined EINTR && defined EINTR_REPEAT
- int save = errno;
- int nread;
-
- try:;
- __set_errno (0);
- nread = __read (fd, buf, (int) n);
- if (nread < 0)
- {
- if (errno == EINTR)
- goto try;
- return -1;
- }
- __set_errno (save);
- return nread;
-
-#else /* No EINTR. */
- return __read (fd, buf, n);
-#endif
-}
-
-
-/* Write N bytes from BUF to COOKIE. */
-int
-__stdio_write (void *cookie, const char *buf, size_t n)
-{
- const int fd = (int) cookie;
- register size_t written = 0;
-
- while (n > 0)
- {
- int count = __write (fd, buf, (int) n);
- if (count > 0)
- {
- buf += count;
- written += count;
- n -= count;
- }
- else if (count < 0
-#if defined EINTR && defined EINTR_REPEAT
- && errno != EINTR
-#endif
- )
- /* Write error. */
- return -1;
- }
-
- return (int) written;
-}
-
-
-/* Move COOKIE's file position *POS bytes, according to WHENCE.
- The new file position is stored in *POS.
- Returns zero if successful, nonzero if not. */
-int
-__stdio_seek (void *cookie, fpos_t *pos, int whence)
-{
- off_t new;
- new = __lseek ((int) cookie, (off_t) *pos, whence);
- if (new < 0)
- return 1;
- *pos = (fpos_t) new;
- return 0;
-}
-
-
-/* Close COOKIE. */
-int
-__stdio_close (void *cookie)
-{
- return __close ((int) cookie);
-}
-
-/* Return the POSIX.1 file descriptor associated with COOKIE,
- or -1 for errors. If COOKIE does not relate to any POSIX.1 file
- descriptor, this should return -1 with errno set to EOPNOTSUPP. */
-int
-__stdio_fileno (void *cookie)
-{
- return (int) cookie;
-}
-
-
-/* Open the given file with the mode given in the __io_mode argument. */
-int
-__stdio_open (const char *filename, __io_mode m, void **cookieptr)
-{
- int fd;
- int mode;
-
- if (m.__read && m.__write)
- mode = O_RDWR;
- else
- mode = m.__read ? O_RDONLY : O_WRONLY;
-
- if (m.__append)
- mode |= O_APPEND;
- if (m.__exclusive)
- mode |= O_EXCL;
- if (m.__truncate)
- mode |= O_TRUNC;
-
- if (m.__create)
- fd = __open (filename, mode | O_CREAT,
- S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH);
- else
- fd = __open (filename, mode);
-
- if (fd < 0)
- return -1;
-
- *cookieptr = (void *) fd;
- return 0;
-}
-
-
-/* Open FILENAME with the mode in M. Use the same magic cookie
- already in *COOKIEPTR if possible, closing the old cookie with CLOSEFN. */
-int
-__stdio_reopen (const char *filename, __io_mode m, void **cookieptr,
- __io_close_fn closefn)
-{
- void *newcookie;
-
- /* We leave the old descriptor open while we open the file.
- That way ``freopen ("/dev/stdin", "r", stdin)'' works. */
-
- if (__stdio_open (filename, m, &newcookie))
- {
- if (errno == ENFILE || errno == EMFILE)
- {
- /* We are out of file descriptors. Try closing the old one and
- retrying the open. */
- (void) (*closefn) (*cookieptr);
- if (__stdio_open (filename, m, &newcookie))
- return -1;
- }
- else
- return -1;
- }
-
- if (newcookie != *cookieptr)
- {
- if (closefn != __stdio_close ||
- /* Try to move the descriptor to the desired one. */
- __dup2 ((int) newcookie, (int) *cookieptr) < 0)
- /* Didn't work. Give the caller the new cookie. */
- *cookieptr = newcookie;
- }
-
- return 0;
-}
diff --git a/sysdeps/generic/vdprintf.c b/sysdeps/generic/vdprintf.c
deleted file mode 100644
index d8bd3bc..0000000
--- a/sysdeps/generic/vdprintf.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Copyright (C) 1997 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 Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <errno.h>
-#include <stdio.h>
-#include <stdarg.h>
-
-/* Write formatted output to file descriptor D according to the format string
- FORMAT, using the argument list in ARG. */
-int
-vdprintf (int d, const char *format, va_list arg)
-{
- __set_errno (ENOSYS);
- return 0;
-}
-
-stub_warning (vdprintf)
-#include <stub-tag.h>
diff --git a/sysdeps/mach/hurd/configure b/sysdeps/mach/hurd/configure
index 93434c0..7017ea4 100755
--- a/sysdeps/mach/hurd/configure
+++ b/sysdeps/mach/hurd/configure
@@ -12,14 +12,9 @@ fi
case "$machine" in
i386*)
- # With --enable-libio, the default oldest ABI is 2.2.6;
- # without --enable-libio, the default oldest ABI is 2.0.
+ # The default oldest ABI is 2.2.6.
# We only need a "yes" here if the oldest ABI supported will be < 2.2.6.
- if if test "$stdio" = libio; then
- test "$oldest_abi" != default && test "$oldest_abi" \< "2.2.6"
- else
- test "$oldest_abi" = default || test "$oldest_abi" \< "2.2.6"
- fi; then
+ if test "$oldest_abi" != default && test "$oldest_abi" \< "2.2.6"; then
libc_cv_gcc_unwind_find_fde=yes
fi
;;
@@ -29,7 +24,7 @@ esac
# See if mig groks `retcode'.
echo $ac_n "checking whether $MIG supports the retcode keyword""... $ac_c" 1>&6
-echo "configure:33: checking whether $MIG supports the retcode keyword" >&5
+echo "configure:28: checking whether $MIG supports the retcode keyword" >&5
if eval "test \"`echo '$''{'hurd_cv_mig_retcode'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -43,7 +38,7 @@ simpleroutine foobar_reply (
reply_port: reply_port_t;
err: kern_return_t, RetCode);
EOF
-if { ac_try='CC="${CC}" ${MIG-false} -n conftest.defs 1>&5'; { (eval echo configure:47: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+if { ac_try='CC="${CC}" ${MIG-false} -n conftest.defs 1>&5'; { (eval echo configure:42: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
hurd_cv_mig_retcode=yes
else
hurd_cv_mig_retcode=no
diff --git a/sysdeps/mach/hurd/configure.in b/sysdeps/mach/hurd/configure.in
index 26bdaf6..f5afe2f 100644
--- a/sysdeps/mach/hurd/configure.in
+++ b/sysdeps/mach/hurd/configure.in
@@ -14,14 +14,9 @@ fi
case "$machine" in
i386*)
- # With --enable-libio, the default oldest ABI is 2.2.6;
- # without --enable-libio, the default oldest ABI is 2.0.
+ # The default oldest ABI is 2.2.6.
# We only need a "yes" here if the oldest ABI supported will be < 2.2.6.
- if if test "$stdio" = libio; then
- test "$oldest_abi" != default && test "$oldest_abi" \< "2.2.6"
- else
- test "$oldest_abi" = default || test "$oldest_abi" \< "2.2.6"
- fi; then
+ if test "$oldest_abi" != default && test "$oldest_abi" \< "2.2.6"; then
libc_cv_gcc_unwind_find_fde=yes
fi
;;
diff --git a/sysdeps/mach/hurd/defs.c b/sysdeps/mach/hurd/defs.c
deleted file mode 100644
index 3999957..0000000
--- a/sysdeps/mach/hurd/defs.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/* Definitions of global stdio data structures.
- Copyright (C) 1991,92,93,94,95,97,2000 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 Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <stdio.h>
-#include <hurd/fd.h>
-#include <unistd.h>
-
-FILE *stdin, *stdout, *stderr;
-
-/* Pointer to the first stream in the list. */
-FILE *__stdio_head = NULL;
-
-/* XXX should be __init_stdio? */
-static void
-init_stdio (void)
-{
- inline void init (FILE **streamptr, int fd)
- {
- /* We want to use the existing FILE object if one has been allocated.
- (This will only be the case if our image came from something like
- Emacs's unexec, where we were called in the first run.) */
- FILE *s = *streamptr ?: __newstream ();
- struct hurd_fd *d = _hurd_fd_get (fd);
- if (d == NULL)
- {
- /* There is no file descriptor allocated. We want the standard
- streams to always refer to their standard file descriptors, even
- if those descriptors are not set up until later. So allocate
- the descriptor structure with no ports and store it in the
- stream. Operations will fail until ports are installed in the
- file descriptor. */
- if (d = _hurd_alloc_fd (NULL, fd))
- __spin_unlock (&d->port.lock);
- }
- if (s)
- s->__cookie = d;
- *streamptr = s;
- }
-#define S(NAME, FD, MODE) \
- init (&NAME, FD); if (NAME) NAME->__mode.__##MODE = 1;
-
- S (stdin, STDIN_FILENO, read);
- S (stdout, STDOUT_FILENO, write);
- S (stderr, STDERR_FILENO, write);
-
-#undef S
-
- if (stderr)
- stderr->__userbuf = 1; /* stderr is always unbuffered. */
-
- (void) &init_stdio; /* Avoid "defined but not used" warning. */
-}
-/* This initializer will be run along with other vanilla libc initializers
- in a normal Posixoid environment. The earlier Hurd-speciifc initializer
- phases cannot use normal facilities like malloc (which stdio uses). */
-text_set_element (__libc_subinit, init_stdio);
-
-/* This function MUST be in this file!
- This is because we want _cleanup to go into the __libc_atexit set
- when any stdio code is used (and to use any stdio code, one must reference
- something defined in this file), and since only local symbols can be made
- set elements, having the set element stab entry here and _cleanup elsewhere
- loses; and having them both elsewhere loses because there is no reference
- to cause _cleanup to be linked in. */
-
-void
-_cleanup (void)
-{
- __fcloseall ();
-}
-text_set_element (__libc_atexit, _cleanup);
diff --git a/sysdeps/mach/hurd/fdopen.c b/sysdeps/mach/hurd/fdopen.c
deleted file mode 100644
index 49cf0e6..0000000
--- a/sysdeps/mach/hurd/fdopen.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Copyright (C) 1991, 1994, 1995, 1997, 2000 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 Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <errno.h>
-#include <stdio.h>
-#include <hurd/fd.h>
-#include <fcntl.h>
-#include <hurd/io.h>
-
-/* Defined in fopen.c. */
-extern int __getmode (const char *mode, __io_mode *mptr);
-
-/* Open a new stream on a given system file descriptor. */
-FILE *
-__fdopen (fd, mode)
- int fd;
- const char *mode;
-{
- FILE *stream;
- __io_mode m;
- struct hurd_fd *d;
- error_t err;
- int openmodes;
-
- if (!__getmode (mode, &m))
- return NULL;
-
- HURD_CRITICAL_BEGIN;
- d = _hurd_fd_get (fd);
- if (d == NULL)
- err = EBADF;
- else
- err = HURD_FD_PORT_USE (d, __io_get_openmodes (port, &openmodes));
- HURD_CRITICAL_END;
-
- if (err)
- return __hurd_dfail (fd, err), NULL;
-
- /* Check the access mode. */
- if ((m.__read && !(openmodes & O_READ)) ||
- (m.__write && !(openmodes & O_WRITE)))
- {
- errno = EBADF;
- return NULL;
- }
-
- stream = __newstream ();
- if (stream == NULL)
- return NULL;
-
- stream->__cookie = d;
- stream->__mode = m;
-
- return stream;
-}
-
-weak_alias (__fdopen, fdopen)
diff --git a/sysdeps/mach/hurd/pipestream.c b/sysdeps/mach/hurd/pipestream.c
deleted file mode 100644
index 548e1e7..0000000
--- a/sysdeps/mach/hurd/pipestream.c
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Make sure NO_WAITPID is not set; sysdeps/unix/pipestream.c defines it. */
-#include <sysdeps/posix/pipestream.c>
diff --git a/sysdeps/mach/hurd/stdio_init.c b/sysdeps/mach/hurd/stdio_init.c
deleted file mode 100644
index 2da15ce..0000000
--- a/sysdeps/mach/hurd/stdio_init.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* Copyright (C) 1995, 1997, 1998 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 Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <hurd/fd.h>
-#include <hurd/io.h>
-#include <hurd/term.h>
-
-/* Initialize STREAM as necessary.
- This may change I/O functions, give a buffer, etc.
- If no buffer is allocated, but the bufsize is set,
- the bufsize will be used to allocate the buffer. */
-void
-__stdio_init_stream (FILE *stream)
-{
- struct hurd_fd *const d = stream->__cookie;
- struct stat statb;
- error_t err;
-
- if (stream->__buffer != NULL || stream->__userbuf)
- /* If's unbuffered by request, we can't do anything useful. */
- return;
-
- /* Find out what sort of file this is. */
- if (err = HURD_FD_PORT_USE (d, __io_stat (port, &statb)))
- return;
-
- if (S_ISCHR (statb.st_mode))
- {
- /* It's a character device.
- Make it line-buffered if it's a terminal. */
- mach_port_t cttyid;
- err = HURD_FD_PORT_USE (d, __term_getctty (port, &cttyid));
- if (! err)
- {
- __mach_port_deallocate (__mach_task_self (), cttyid);
- stream->__linebuf = 1;
- }
- }
-
- /* Use the block-size field to determine
- the system's optimal buffering size. */
- stream->__bufsize = statb.st_blksize;
-}
diff --git a/sysdeps/mach/hurd/sysd-stdio.c b/sysdeps/mach/hurd/sysd-stdio.c
deleted file mode 100644
index 14a2aee..0000000
--- a/sysdeps/mach/hurd/sysd-stdio.c
+++ /dev/null
@@ -1,257 +0,0 @@
-/* Copyright (C) 1994,95,96,97,98,2001 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 Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <errno.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <hurd.h>
-#include <fcntl.h>
-#include <hurd/fd.h>
-
-extern __io_read_fn __stdio_read;
-extern __io_write_fn __stdio_write;
-extern __io_seek_fn __stdio_seek;
-extern __io_close_fn __stdio_close;
-extern __io_fileno_fn __stdio_fileno;
-
-
-/* Check ERR for wanting to generate a signal. */
-
-static inline int
-fd_fail (struct hurd_fd *fd, error_t err)
-{
- int signo = _hurd_fd_error_signal (err);
- if (signo)
- {
- const struct hurd_signal_detail detail
- = { code: __stdio_fileno (fd), error: err, exc: 0 };
- _hurd_raise_signal (NULL, signo, &detail);
- }
- errno = err;
- return -1;
-}
-
-
-/* Read up to N chars into BUF from COOKIE.
- Return how many chars were read, 0 for EOF or -1 for error. */
-ssize_t
-__stdio_read (cookie, buf, n)
- void *cookie;
- char *buf;
- size_t n;
-{
- error_t err;
- struct hurd_fd *fd = cookie;
-
- if (! fd)
- return __hurd_fail (EBADF);
-
- if (err = _hurd_fd_read (fd, buf, &n, -1))
- return fd_fail (fd, err);
-
- return n;
-}
-
-/* Write up to N chars from BUF to COOKIE.
- Return how many chars were written or -1 for error. */
-ssize_t
-__stdio_write (cookie, buf, n)
- void *cookie;
- const char *buf;
- size_t n;
-{
- error_t err;
- size_t wrote, nleft;
- struct hurd_fd *fd = cookie;
-
- if (! fd)
- return __hurd_fail (EBADF);
-
- nleft = n;
- do
- {
- wrote = nleft;
- if (err = _hurd_fd_write (fd, buf, &wrote, -1))
- return fd_fail (fd, err);
- buf += wrote;
- nleft -= wrote;
- } while (nleft > 0);
-
- return wrote;
-}
-
-/* Move COOKIE's file position *POS bytes, according to WHENCE.
- The current file position is stored in *POS.
- Returns zero if successful, nonzero if not. */
-int
-__stdio_seek (cookie, pos, whence)
- void *cookie;
- fpos_t *pos;
- int whence;
-{
- error_t err;
- struct hurd_fd *fd = cookie;
- if (! fd)
- return __hurd_fail (EBADF);
- err = HURD_FD_PORT_USE (fd, __io_seek (port, *pos, whence, pos));
- return err ? fd_fail (fd, err) : 0;
-}
-
-/* Close the file associated with COOKIE.
- Return 0 for success or -1 for failure. */
-int
-__stdio_close (cookie)
- void *cookie;
-{
- error_t error = cookie ? _hurd_fd_close (cookie) : EBADF;
- return error ? fd_fail (cookie, error) : 0;
-}
-
-
-static inline int
-modeflags (__io_mode m)
-{
- int flags = 0;
- if (m.__read)
- flags |= O_READ;
- if (m.__write)
- flags |= O_WRITE;
- if (m.__append)
- flags |= O_APPEND;
- if (m.__create)
- flags |= O_CREAT;
- if (m.__truncate)
- flags |= O_TRUNC;
- if (m.__exclusive)
- flags |= O_EXCL;
- return flags;
-}
-
-/* Open FILENAME with the mode in M. */
-int
-__stdio_open (filename, m, cookieptr)
- const char *filename;
- __io_mode m;
- void **cookieptr;
-{
- int flags;
- file_t port;
- struct hurd_fd *d;
-
- flags = modeflags (m);
- port = __file_name_lookup (filename, flags, 0666 & ~_hurd_umask);
- if (port == MACH_PORT_NULL)
- return -1;
-
- HURD_CRITICAL_BEGIN;
- d = _hurd_alloc_fd (NULL, 0);
- if (d != NULL)
- {
- _hurd_port2fd (d, port, flags);
- __spin_unlock (&d->port.lock);
- }
- HURD_CRITICAL_END;
-
- *cookieptr = d;
- return 0;
-}
-
-
-/* Open FILENAME with the mode in M. Use the same magic cookie
- already in *COOKIEPTR if possible, closing the old cookie with CLOSEFN. */
-int
-__stdio_reopen (const char *filename,
- __io_mode m,
- void **cookieptr,
- __io_close_fn closefn)
-{
- int flags;
- file_t port;
- struct hurd_fd *d;
-
- if (closefn != __stdio_close)
- {
- /* The old cookie is Not Of The Body.
- Just close it and do a normal open. */
- (*closefn) (*cookieptr);
- return __stdio_open (filename, m, cookieptr);
- }
-
- /* Open a new port on the file. */
- flags = modeflags (m);
- port = __file_name_lookup (filename, flags, 0666 & ~_hurd_umask);
-
- /* Install the new port in the same file descriptor slot the old cookie
- points to. If opening the file failed, PORT will be MACH_PORT_NULL
- and installing it in the descriptor will have the effect of closing
- the old descriptor. */
-
- d = *cookieptr;
- HURD_CRITICAL_BEGIN;
- __spin_lock (&d->port.lock);
- _hurd_port2fd (d, port, flags);
- __spin_unlock (&d->port.lock);
- HURD_CRITICAL_END;
-
- return port == MACH_PORT_NULL ? -1 : 0;
-}
-
-
-/* Write a message to the error output.
- Try hard to make it really get out. */
-void
-__stdio_errmsg (msg, len)
- const char *msg;
- size_t len;
-{
- io_t server;
- mach_msg_type_number_t wrote;
-
- server = __getdport (2);
- __io_write (server, msg, len, -1, &wrote);
- __mach_port_deallocate (__mach_task_self (), server);
-}
-
-
-/* Return the POSIX.1 file descriptor associated with COOKIE,
- or -1 for errors. If COOKIE does not relate to any POSIX.1 file
- descriptor, this should return -1 with errno set to EOPNOTSUPP. */
-int
-__stdio_fileno (cookie)
- void *cookie;
-{
- int fd;
-
- if (! cookie)
- return __hurd_fail (EBADF);
-
- __mutex_lock (&_hurd_dtable_lock);
- for (fd = 0; fd < _hurd_dtablesize; ++fd)
- if (_hurd_dtable[fd] == cookie)
- {
- __mutex_unlock (&_hurd_dtable_lock);
- return fd;
- }
- __mutex_unlock (&_hurd_dtable_lock);
-
- /* This should never happen, because this function should not be
- installed as a stream's __fileno function unless that stream's cookie
- points to a file descriptor. */
- errno = EGRATUITOUS;
- return -1;
-}
diff --git a/sysdeps/mach/hurd/vdprintf.c b/sysdeps/mach/hurd/vdprintf.c
deleted file mode 100644
index 568fb6b..0000000
--- a/sysdeps/mach/hurd/vdprintf.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Copyright (C) 1991, 1992, 1993, 1997 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 Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <errno.h>
-#include <limits.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <string.h>
-#include <hurd/fd.h>
-
-/* Write formatted output to file descriptor D according to the format string
- FORMAT, using the argument list in ARG. */
-int
-vdprintf (int d, const char *format, va_list arg)
-{
- int done;
- FILE f;
- struct hurd_fd *fd;
-
- HURD_CRITICAL_BEGIN;
- fd = _hurd_fd_get (d);
- HURD_CRITICAL_END;
-
- if (!fd)
- return 0;
-
- /* Create an unbuffered stream talking to D on the stack. */
- memset ((void *) &f, 0, sizeof (f));
- f.__magic = _IOMAGIC;
- f.__mode.__write = 1;
- f.__cookie = fd;
- f.__room_funcs = __default_room_functions;
- f.__io_funcs = __default_io_functions;
- f.__seen = 1;
- f.__userbuf = 1;
-
- /* vfprintf will use a buffer on the stack for the life of the call,
- and flush it when finished. */
- done = vfprintf (&f, format, arg);
-
- return done;
-}
diff --git a/sysdeps/posix/defs.c b/sysdeps/posix/defs.c
deleted file mode 100644
index 7fe1908..0000000
--- a/sysdeps/posix/defs.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/* Definitions of global stdio data structures.
- Copyright (C) 1991, 1993, 1997 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 Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <stddef.h>
-#include <stdio.h>
-#include <unistd.h>
-
-/* This file defines all the global internal variables for stdio. */
-
-/* Standard streams. */
-#define READ 1, 0
-#define WRITE 0, 1
-#define BUFFERED 0
-#define UNBUFFERED 1
-#define stdstream(name, next, fd, readwrite, unbuffered) \
- { \
- _IOMAGIC, \
- NULL, NULL, NULL, NULL, 0, \
- (void *) fd, \
- { readwrite, /* ... */ }, \
- { NULL, NULL, NULL, NULL, NULL }, \
- { NULL, NULL }, \
- -1, -1, \
- (next), \
- NULL, '\0', 0, \
- 0, 0, unbuffered, 0, 0, 0, 0 \
- }
-static FILE stdstreams[3] =
- {
- stdstream (&stdstreams[0], &stdstreams[1], STDIN_FILENO, READ, BUFFERED),
- stdstream (&stdstreams[1], &stdstreams[2], STDOUT_FILENO, WRITE, BUFFERED),
- stdstream (&stdstreams[2], NULL, STDERR_FILENO, WRITE, UNBUFFERED),
- };
-FILE *stdin = &stdstreams[0];
-FILE *stdout = &stdstreams[1];
-FILE *stderr = &stdstreams[2];
-
-/* Pointer to the first stream in the list. */
-FILE *__stdio_head = &stdstreams[0];
-
-/* This function MUST be in this file!
- This is because we want _cleanup to go into the __libc_atexit set
- when any stdio code is used (and to use any stdio code, one must reference
- something defined in this file), and since only local symbols can be made
- set elements, having the set element stab entry here and _cleanup elsewhere
- loses; and having them both elsewhere loses because there is no reference
- to cause _cleanup to be linked in. */
-
-void
-_cleanup (void)
-{
- __fcloseall ();
-}
-
-
-#ifdef HAVE_GNU_LD
-text_set_element(__libc_atexit, _cleanup);
-#endif
diff --git a/sysdeps/posix/fdopen.c b/sysdeps/posix/fdopen.c
deleted file mode 100644
index af951db..0000000
--- a/sysdeps/posix/fdopen.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Copyright (C) 1991, 1992, 1993, 1996 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 Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <errno.h>
-#include <stdio.h>
-#include <fcntl.h>
-
-/* Defined in fopen.c. */
-extern int __getmode (const char *mode, __io_mode *mptr);
-
-/* Open a new stream on a given system file descriptor. */
-FILE *
-__fdopen (fd, mode)
- int fd;
- const char *mode;
-{
- register FILE *stream;
- __io_mode m;
- int dflags;
-
- if (!__getmode (mode, &m))
- return NULL;
-
- /* Verify the FD is valid and allows the access MODE specifies. */
-
- dflags = __fcntl (fd, F_GETFL);
- if (dflags == -1)
- /* FD was invalid; fcntl has already set errno. */
- return NULL;
-
- /* Check the access mode. */
- switch (dflags & O_ACCMODE)
- {
- case O_RDONLY:
- if (!m.__read)
- {
- __set_errno (EBADF);
- return NULL;
- }
- break;
- case O_WRONLY:
- if (!m.__write)
- {
- __set_errno (EBADF);
- return NULL;
- }
- break;
- }
-
- stream = __newstream ();
- if (stream == NULL)
- return NULL;
-
- stream->__cookie = (void *) fd;
- stream->__mode = m;
-
- return stream;
-}
-
-weak_alias (__fdopen, fdopen)
diff --git a/sysdeps/posix/pipestream.c b/sysdeps/posix/pipestream.c
deleted file mode 100644
index 94e09f1..0000000
--- a/sysdeps/posix/pipestream.c
+++ /dev/null
@@ -1,221 +0,0 @@
-/* Copyright (C) 1991, 1992, 1993, 1996, 1997 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 Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <errno.h>
-#include <stddef.h>
-#include <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <unistd.h>
-#include <fcntl.h>
-
-#define SH_PATH "/bin/sh" /* Shell to run. */
-#define SH_NAME "sh" /* Name to give it. */
-
-/* Structure describing a popen child. */
-struct child
- {
- pid_t pid; /* PID of the child. */
- __ptr_t cookie; /* Original cookie from fdopen. */
- __io_functions funcs; /* Original functions from fdopen. */
- };
-
-/* io_functions for pipe streams.
- These all simply call the corresponding
- original function with the original cookie. */
-
-#define FUNC(type, name, proto, args) \
- static type __CONCAT(child_,name) proto \
- { \
- struct child *c = (struct child *) cookie; \
- { \
- __ptr_t cookie = c->cookie; \
- return (*c->funcs.__CONCAT(__,name)) args; \
- } \
- }
-
-FUNC (int, read, (void *cookie, char *buf, size_t n), (cookie, buf, n))
-FUNC (int, write, (void *cookie, const char *buf, size_t n), (cookie, buf, n))
-FUNC (int, seek, (void *cookie, fpos_t *pos, int whence),
- (cookie, pos, whence))
-FUNC (int, close, (void *cookie), (cookie))
-FUNC (int, fileno, (void *cookie), (cookie))
-
-static const __io_functions child_funcs
- = { child_read, child_write, child_seek, child_close, child_fileno };
-
-/* Open a new stream that is a one-way pipe to a
- child process running the given shell command. */
-FILE *
-popen (command, mode)
- const char *command;
- const char *mode;
-{
- pid_t pid;
- int pipedes[2];
- FILE *stream;
- struct child *child;
-
- if (command == NULL || mode == NULL || (*mode != 'r' && *mode != 'w'))
- {
- __set_errno (EINVAL);
- return NULL;
- }
-
- /* Create the pipe. */
- if (pipe (pipedes) < 0)
- return NULL;
-
- /* Fork off the child. */
- pid = __vfork ();
- if (pid == (pid_t) -1)
- {
- /* The fork failed. */
- (void) close (pipedes[0]);
- (void) close (pipedes[1]);
- return NULL;
- }
- else if (pid == (pid_t) 0)
- {
- /* We are the child side. Make the write side of
- the pipe be stdin or the read side be stdout. */
-
- const char *new_argv[4];
-
- if ((*mode == 'w' ? dup2(pipedes[STDIN_FILENO], STDIN_FILENO) :
- dup2 (pipedes[STDOUT_FILENO], STDOUT_FILENO)) < 0)
- _exit (127);
-
- /* Close the pipe descriptors. */
- (void) close (pipedes[STDIN_FILENO]);
- (void) close (pipedes[STDOUT_FILENO]);
-
- /* Exec the shell. */
- new_argv[0] = SH_NAME;
- new_argv[1] = "-c";
- new_argv[2] = command;
- new_argv[3] = NULL;
- (void) execve (SH_PATH, (char *const *) new_argv, environ);
- /* Die if it failed. */
- _exit (127);
- }
-
- /* We are the parent side. */
-
- /* Close the irrelevant side of the pipe and open the relevant side as a
- new stream. Mark our side of the pipe to close on exec, so new children
- won't see it. */
- if (*mode == 'r')
- {
- (void) close (pipedes[STDOUT_FILENO]);
- (void) fcntl (pipedes[STDIN_FILENO], F_SETFD, FD_CLOEXEC);
- stream = fdopen (pipedes[STDIN_FILENO], mode);
- }
- else
- {
- (void) close (pipedes[STDIN_FILENO]);
- (void) fcntl (pipedes[STDOUT_FILENO], F_SETFD, FD_CLOEXEC);
- stream = fdopen (pipedes[STDOUT_FILENO], mode);
- }
-
- if (stream == NULL)
- goto error;
-
- child = (struct child *) malloc (sizeof (struct child));
- if (child == NULL)
- goto error;
-
- {
- /* Make sure STREAM has its functions set before
- we try to squirrel them away in CHILD. */
- extern void __stdio_check_funcs __P ((FILE *));
- __stdio_check_funcs (stream);
- }
-
- child->pid = pid;
- child->cookie = stream->__cookie;
- child->funcs = stream->__io_funcs;
- stream->__cookie = (void *) child;
- stream->__io_funcs = child_funcs;
- stream->__ispipe = 1;
- return stream;
-
- error:
- {
- /* The stream couldn't be opened or the child structure couldn't be
- allocated. Kill the child and close the other side of the pipe. */
- int save = errno;
- (void) kill (pid, SIGKILL);
- if (stream == NULL)
- (void) close (pipedes[*mode == 'r' ? STDOUT_FILENO : STDIN_FILENO]);
- else
- (void) fclose (stream);
-#ifndef NO_WAITPID
- (void) waitpid (pid, (int *) NULL, 0);
-#else
- {
- pid_t dead;
- do
- dead = wait ((int *) NULL);
- while (dead > 0 && dead != pid);
- }
-#endif
- __set_errno (save);
- return NULL;
- }
-}
-
-/* Close a stream opened by popen and return its status.
- Returns -1 if the stream was not opened by popen. */
-int
-pclose (stream)
- register FILE *stream;
-{
- struct child *c;
- pid_t pid, dead;
- int status;
-
- if (!__validfp (stream) || !stream->__ispipe)
- {
- __set_errno (EINVAL);
- return -1;
- }
-
- c = (struct child *) stream->__cookie;
- pid = c->pid;
- stream->__cookie = c->cookie;
- stream->__io_funcs = c->funcs;
- free ((void *) c);
- stream->__ispipe = 0;
- if (fclose (stream))
- return -1;
-
-#ifndef NO_WAITPID
- dead = waitpid (pid, &status, 0);
-#else
- do
- dead = wait (&status);
- while (dead > 0 && dead != pid);
-#endif
- if (dead != pid)
- status = -1;
-
- return status;
-}
diff --git a/sysdeps/posix/stdio_init.c b/sysdeps/posix/stdio_init.c
deleted file mode 100644
index 99b4e80..0000000
--- a/sysdeps/posix/stdio_init.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/* Copyright (C) 1991, 1992, 1993, 1995, 1997 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 Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-
-/* Initialize STREAM as necessary.
- This may change I/O functions, give a buffer, etc.
- If no buffer is allocated, but the bufsize is set,
- the bufsize will be used to allocate the buffer. */
-void
-__stdio_init_stream (FILE *stream)
-{
- const int fd = (int) stream->__cookie;
- struct stat statb;
-
- if (stream->__buffer != NULL || stream->__userbuf)
- /* If's unbuffered by request, we can't do anything useful. */
- return;
-
- /* Find out what sort of file this is. */
- if (__fstat (fd, &statb) < 0)
- return;
-
- if (S_ISCHR (statb.st_mode))
- {
- /* It's a character device.
- Make it line-buffered if it's a terminal. */
- if (__isatty (fd))
- {
- stream->__linebuf = 1;
-
- /* Unix terminal devices have the bad habit of claiming to be
- seekable. On systems I have tried, seeking on a terminal
- device seems to set its file position as specified, such that
- a later tell says the same thing. This is in no way related
- to actual seekability--the ability to seek back and read old
- data. Unix terminal devices will let you "seek back", and
- then read more new data from the terminal. I can think of
- nothing to do about this lossage except to preemptively disable
- seeking on terminal devices. */
-
- stream->__io_funcs.__seek = NULL; /* Seeks get ESPIPE. */
- }
- }
-
-#ifdef _STATBUF_ST_BLKSIZE
- /* Use the block-size field to determine
- the system's optimal buffering size. */
- stream->__bufsize = statb.st_blksize;
-#endif
-}
diff --git a/sysdeps/posix/vdprintf.c b/sysdeps/posix/vdprintf.c
deleted file mode 100644
index f28bfdf..0000000
--- a/sysdeps/posix/vdprintf.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Copyright (C) 1991, 1992, 1993, 1997 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 Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <errno.h>
-#include <limits.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <string.h>
-
-
-/* Write formatted output to file descriptor D according to the format string
- FORMAT, using the argument list in ARG. */
-int
-vdprintf (int d, const char *format, va_list arg)
-{
- int done;
- FILE f;
-
- /* Create an unbuffered stream talking to D on the stack. */
- memset ((void *) &f, 0, sizeof(f));
- f.__magic = _IOMAGIC;
- f.__mode.__write = 1;
- f.__cookie = (void *) (long int) d; /* Casting to long quiets GCC on Alpha.*/
- f.__room_funcs = __default_room_functions;
- f.__io_funcs = __default_io_functions;
- f.__seen = 1;
- f.__userbuf = 1;
-
- /* vfprintf will use a buffer on the stack for the life of the call,
- and flush it when finished. */
- done = vfprintf (&f, format, arg);
-
- return done;
-}
diff --git a/sysdeps/unix/pipestream.c b/sysdeps/unix/pipestream.c
deleted file mode 100644
index 1d3308f..0000000
--- a/sysdeps/unix/pipestream.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#define NO_WAITPID
-#include <sysdeps/posix/pipestream.c>
diff --git a/sysdeps/unix/sysv/linux/configure.in b/sysdeps/unix/sysv/linux/configure.in
index d1d0d32..486b10d 100644
--- a/sysdeps/unix/sysv/linux/configure.in
+++ b/sysdeps/unix/sysv/linux/configure.in
@@ -2,9 +2,6 @@ sinclude(./aclocal.m4)dnl Autoconf lossage
GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
# Local configure fragment for sysdeps/unix/sysv/linux.
-# On Linux, the default is to use libio instead of stdio.
-test $stdio = default && stdio=libio
-
# Don't bother trying to generate any glue code to be compatible with the
# existing system library, because we are the only system library.
inhibit_glue=yes
diff --git a/sysdeps/unix/sysv/sco3.2.4/pipestream.c b/sysdeps/unix/sysv/sco3.2.4/pipestream.c
deleted file mode 100644
index b768e62..0000000
--- a/sysdeps/unix/sysv/sco3.2.4/pipestream.c
+++ /dev/null
@@ -1,3 +0,0 @@
-/* SCO 3.2v4 does have `waitpid'.
- Avoid unix/pipestream.c, which says we don't. */
-#include <sysdeps/posix/pipestream.c>
diff --git a/sysdeps/unix/sysv/sysd-stdio.c b/sysdeps/unix/sysv/sysd-stdio.c
deleted file mode 100644
index 7f82340..0000000
--- a/sysdeps/unix/sysv/sysd-stdio.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#define EINTR_REPEAT
-#include <sysdeps/generic/sysd-stdio.c>
diff --git a/sysdeps/unix/sysv/sysv4/pipestream.c b/sysdeps/unix/sysv/sysv4/pipestream.c
deleted file mode 100644
index 6a32f95..0000000
--- a/sysdeps/unix/sysv/sysv4/pipestream.c
+++ /dev/null
@@ -1,2 +0,0 @@
-/* We deliberately avoid having NO_WAITPID set. */
-#include <sysdeps/posix/pipestream.c>