diff options
author | Roland McGrath <roland@gnu.org> | 2002-04-30 22:00:59 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 2002-04-30 22:00:59 +0000 |
commit | a8c017767721fec8fd4ee53c1937e31e35dfac08 (patch) | |
tree | 11c43b6158f98ebcce0ab0b5555faa3a35d43187 /stdio/obstream.c | |
parent | 8543f93de2a52f1e314051aa20f7394a7c13366f (diff) | |
download | glibc-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 'stdio/obstream.c')
-rw-r--r-- | stdio/obstream.c | 185 |
1 files changed, 0 insertions, 185 deletions
diff --git a/stdio/obstream.c b/stdio/obstream.c deleted file mode 100644 index 06118f5..0000000 --- a/stdio/obstream.c +++ /dev/null @@ -1,185 +0,0 @@ -/* Copyright (C) 1992, 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 <stdio.h> -#include <obstack.h> -#include <stdarg.h> -#include <string.h> - -/* Output-room function for obstack streams. */ - -static void -grow (FILE *stream, int c) -{ - struct obstack *const obstack = (struct obstack *) stream->__cookie; - - /* Move the end of the object back to include only the portion - of the buffer which the user has already written into. */ - obstack_blank_fast (obstack, - (stream->__put_limit - stream->__bufp)); - - if ((size_t) stream->__target > obstack_object_size (obstack)) - { - /* Our target (where the buffer maps to) is always zero except when - the user just did a SEEK_END fseek. If he sought within the - buffer, we need do nothing and will zero the target below. If he - sought past the end of the object, grow and zero-fill the object - up to the target address. */ - - obstack_blank (obstack, - stream->__target - obstack_object_size (obstack)); - /* fseek has just flushed us, so the put limit points - to the end of the written data. */ - bzero (stream->__put_limit, - stream->__target - stream->__bufsize); - } - - if (c != EOF) - obstack_1grow (obstack, (unsigned char) c); - - /* The stream buffer always maps exactly to the object on the top - of the obstack. The start of the buffer is the start of the object. - The put limit points just past the end of the object. On fflush, the - obstack is sync'd so the end of the object points just past the last - character written to the stream. */ - - stream->__target = stream->__offset = 0; - stream->__buffer = obstack_base (obstack); - stream->__bufsize = obstack_room (obstack); - stream->__bufp = obstack_next_free (obstack); - stream->__get_limit = stream->__bufp; - - if (c == EOF) - /* This is fflush. Make the stream buffer, the object, - and the characters actually written all match. */ - stream->__put_limit = stream->__get_limit; - else - { - /* Extend the buffer (and the object) to include - the rest of the obstack chunk (which is uninitialized). - Data past bufp is undefined. */ - stream->__put_limit = stream->__buffer + stream->__bufsize; - obstack_blank_fast (obstack, stream->__put_limit - stream->__bufp); - } -} - -/* Seek function for obstack streams. - There is no external state to munge. */ - -static int -seek (void *cookie, fpos_t *pos, int whence) -{ - switch (whence) - { - case SEEK_SET: - case SEEK_CUR: - return 0; - - case SEEK_END: - /* Return the position relative to the end of the object. - fseek has just flushed us, so the obstack is consistent. */ - *pos += obstack_object_size ((struct obstack *) cookie); - return 0; - - default: - __libc_fatal ("obstream::seek called with bogus WHENCE\n"); - return -1; - } -} - -/* Input room function for obstack streams. - Only what has been written to the stream can be read back. */ - -static int -input (FILE *stream) -{ - /* Re-sync with the obstack, growing the object if necessary. */ - grow (stream, EOF); - - if (stream->__bufp < stream->__get_limit) - return (unsigned char) *stream->__bufp++; - - stream->__eof = 1; - return EOF; -} - -/* Initialize STREAM to talk to OBSTACK. */ - -static void -init_obstream (FILE *stream, struct obstack *obstack) -{ - stream->__mode.__write = 1; - stream->__mode.__read = 1; - - /* Input can read only what has been written. */ - stream->__room_funcs.__input = input; - - /* Do nothing for close. */ - stream->__io_funcs.__close = NULL; - - /* When the buffer is full, grow the obstack. */ - stream->__room_funcs.__output = grow; - - /* Seek within the object, and extend it. */ - stream->__io_funcs.__seek = seek; - stream->__target = stream->__offset = 0; - - stream->__seen = 1; - - /* Don't deallocate that buffer! */ - stream->__userbuf = 1; - - /* We don't have to initialize the buffer. - The first read attempt will call grow, which will do all the work. */ -} - -FILE * -open_obstack_stream (obstack) - struct obstack *obstack; -{ - register FILE *stream; - - stream = __newstream (); - if (stream == NULL) - return NULL; - - init_obstream (stream, obstack); - return stream; -} - -int -obstack_vprintf (obstack, format, args) - struct obstack *obstack; - const char *format; - va_list args; -{ - FILE f; - bzero (&f, sizeof (f)); - init_obstream (&f, obstack); - return vfprintf (&f, format, args); -} - -int -obstack_printf (struct obstack *obstack, const char *format, ...) -{ - int result; - va_list ap; - va_start (ap, format); - result = obstack_vprintf (obstack, format, ap); - va_end (ap); - return result; -} |