From 164ee5b054159adfb4acb394ca8a0760f67d63a2 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Thu, 23 May 2002 22:05:54 +0000 Subject: [PATCH] 2002-05-23 Gareth Pearce * libc/stdio/Makefile.am: Modify to add setbuffer.c and setlinebuf.c. * libc/stdio/Makefile.in: Regenerated. * libc/stdio/setbuffer.c: New file. * libc/stdio/setlinebuf.c: New file. --- newlib/ChangeLog | 7 ++ newlib/libc/stdio/Makefile.am | 4 ++ newlib/libc/stdio/Makefile.in | 22 +++--- newlib/libc/stdio/setbuffer.c | 118 +++++++++++++++++++++++++++++++++ newlib/libc/stdio/setlinebuf.c | 70 +++++++++++++++++++ 5 files changed, 213 insertions(+), 8 deletions(-) create mode 100644 newlib/libc/stdio/setbuffer.c create mode 100644 newlib/libc/stdio/setlinebuf.c diff --git a/newlib/ChangeLog b/newlib/ChangeLog index 9f245b8b9..3aa09e495 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,10 @@ +2002-05-23 Gareth Pearce + + * libc/stdio/Makefile.am: Modify to add setbuffer.c and setlinebuf.c. + * libc/stdio/Makefile.in: Regenerated. + * libc/stdio/setbuffer.c: New file. + * libc/stdio/setlinebuf.c: New file. + 2002-05-23 Jeff Johnston * libc/sys/linux/Makefile.am: Add resource.c. diff --git a/newlib/libc/stdio/Makefile.am b/newlib/libc/stdio/Makefile.am index c859cbfc0..e7d4fea21 100644 --- a/newlib/libc/stdio/Makefile.am +++ b/newlib/libc/stdio/Makefile.am @@ -55,6 +55,8 @@ LIB_SOURCES = \ rget.c \ scanf.c \ setbuf.c \ + setbuffer.c \ + setlinebuf.c \ setvbuf.c \ siprintf.c \ snprintf.c \ @@ -142,6 +144,8 @@ CHEWOUT_FILES = \ rename.def \ rewind.def \ setbuf.def \ + setbuffer.def \ + setlinebuf.def \ setvbuf.def \ siprintf.def \ sprintf.def \ diff --git a/newlib/libc/stdio/Makefile.in b/newlib/libc/stdio/Makefile.in index aff17a32a..8d69f4eb4 100644 --- a/newlib/libc/stdio/Makefile.in +++ b/newlib/libc/stdio/Makefile.in @@ -153,6 +153,8 @@ LIB_SOURCES = \ rget.c \ scanf.c \ setbuf.c \ + setbuffer.c \ + setlinebuf.c \ setvbuf.c \ siprintf.c \ snprintf.c \ @@ -227,6 +229,8 @@ CHEWOUT_FILES = \ rename.def \ rewind.def \ setbuf.def \ + setbuffer.def \ + setlinebuf.def \ setvbuf.def \ siprintf.def \ sprintf.def \ @@ -263,10 +267,11 @@ LIBS = @LIBS@ @USE_LIBTOOL_FALSE@iprintf.o makebuf.o mktemp.o perror.o printf.o \ @USE_LIBTOOL_FALSE@putc.o putchar.o putc_u.o putchar_u.o puts.o putw.o \ @USE_LIBTOOL_FALSE@refill.o remove.o rename.o rewind.o rget.o scanf.o \ -@USE_LIBTOOL_FALSE@setbuf.o setvbuf.o siprintf.o snprintf.o sprintf.o \ -@USE_LIBTOOL_FALSE@sscanf.o stdio.o tmpfile.o tmpnam.o ungetc.o \ -@USE_LIBTOOL_FALSE@vfscanf.o vprintf.o vscanf.o vsnprintf.o vsprintf.o \ -@USE_LIBTOOL_FALSE@vsscanf.o wbuf.o wsetup.o +@USE_LIBTOOL_FALSE@setbuf.o setbuffer.o setlinebuf.o setvbuf.o \ +@USE_LIBTOOL_FALSE@siprintf.o snprintf.o sprintf.o sscanf.o stdio.o \ +@USE_LIBTOOL_FALSE@tmpfile.o tmpnam.o ungetc.o vfscanf.o vprintf.o \ +@USE_LIBTOOL_FALSE@vscanf.o vsnprintf.o vsprintf.o vsscanf.o wbuf.o \ +@USE_LIBTOOL_FALSE@wsetup.o LTLIBRARIES = $(noinst_LTLIBRARIES) @USE_LIBTOOL_TRUE@libstdio_la_DEPENDENCIES = vfiprintf.$(oext) \ @@ -281,10 +286,11 @@ LTLIBRARIES = $(noinst_LTLIBRARIES) @USE_LIBTOOL_TRUE@makebuf.lo mktemp.lo perror.lo printf.lo putc.lo \ @USE_LIBTOOL_TRUE@putchar.lo putc_u.lo putchar_u.lo puts.lo putw.lo \ @USE_LIBTOOL_TRUE@refill.lo remove.lo rename.lo rewind.lo rget.lo \ -@USE_LIBTOOL_TRUE@scanf.lo setbuf.lo setvbuf.lo siprintf.lo snprintf.lo \ -@USE_LIBTOOL_TRUE@sprintf.lo sscanf.lo stdio.lo tmpfile.lo tmpnam.lo \ -@USE_LIBTOOL_TRUE@ungetc.lo vfscanf.lo vprintf.lo vscanf.lo \ -@USE_LIBTOOL_TRUE@vsnprintf.lo vsprintf.lo vsscanf.lo wbuf.lo wsetup.lo +@USE_LIBTOOL_TRUE@scanf.lo setbuf.lo setbuffer.lo setlinebuf.lo \ +@USE_LIBTOOL_TRUE@setvbuf.lo siprintf.lo snprintf.lo sprintf.lo \ +@USE_LIBTOOL_TRUE@sscanf.lo stdio.lo tmpfile.lo tmpnam.lo ungetc.lo \ +@USE_LIBTOOL_TRUE@vfscanf.lo vprintf.lo vscanf.lo vsnprintf.lo \ +@USE_LIBTOOL_TRUE@vsprintf.lo vsscanf.lo wbuf.lo 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) diff --git a/newlib/libc/stdio/setbuffer.c b/newlib/libc/stdio/setbuffer.c new file mode 100644 index 000000000..c74c7fce1 --- /dev/null +++ b/newlib/libc/stdio/setbuffer.c @@ -0,0 +1,118 @@ +/* + * 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 +<>---specify full buffering for a file or stream with size + +INDEX + setbuffer + +ANSI_SYNOPSIS + #include + void setbuffer(FILE *<[fp]>, char *<[buf]>, int <[size]>); + +TRAD_SYNOPSIS + #include + void setbuffer(<[fp]>, <[buf]>, <[size]>) + FILE *<[fp]>; + char *<[buf]>; + int <[size]>; + +DESCRIPTION +<> 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 <> as the value of <[buf]>, to signal that the +<> function is to allocate the buffer. + +WARNINGS +You may only use <> 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 +<> does not return a result. + +PORTABILITY +This function comes from BSD not ANSI or POSIX. + +Supporting OS subroutines required: <>, <>, <>, +<>, <>, <>, <>. + + +FUNCTION + +<>---specify line buffering for a file or stream + +INDEX + setlinebuf + +ANSI_SYNOPSIS + #include + void setlinebuf(FILE *<[fp]>); + +TRAD_SYNOPSIS + #include + void setlinebuf(<[fp]>) + FILE *<[fp]>; + +DESCRIPTION +<> 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 <> before performing any file operation +other than opening the file. + +RETURNS +<> returns as per setvbuf. + +PORTABILITY +This function comes from BSD not ANSI or POSIX. + +Supporting OS subroutines required: <>, <>, <>, +<>, <>, <>, <>. +*/ + +#include <_ansi.h> +#include +#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 new file mode 100644 index 000000000..f27971357 --- /dev/null +++ b/newlib/libc/stdio/setlinebuf.c @@ -0,0 +1,70 @@ +/* + * 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 + +<>---specify line buffering for a file or stream + +INDEX + setlinebuf + +ANSI_SYNOPSIS + #include + void setlinebuf(FILE *<[fp]>); + +TRAD_SYNOPSIS + #include + void setlinebuf(<[fp]>) + FILE *<[fp]>; + +DESCRIPTION +<> 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 <> before performing any file operation +other than opening the file. + +RETURNS +<> returns as per setvbuf. + +PORTABILITY +This function comes from BSD not ANSI or POSIX. + +Supporting OS subroutines required: <>, <>, <>, +<>, <>, <>, <>. +*/ + +#include <_ansi.h> +#include +#include "local.h" + +int +_DEFUN (setlinebuf, (fp), + FILE * fp) +{ + return (setvbuf (fp, (char *) NULL, _IOLBF, (size_t) 0)); +}