diff options
-rw-r--r-- | newlib/ChangeLog | 7 | ||||
-rw-r--r-- | newlib/libc/stdio/Makefile.am | 4 | ||||
-rw-r--r-- | newlib/libc/stdio/Makefile.in | 22 | ||||
-rw-r--r-- | newlib/libc/stdio/setbuffer.c | 118 | ||||
-rw-r--r-- | newlib/libc/stdio/setlinebuf.c | 70 |
5 files changed, 213 insertions, 8 deletions
diff --git a/newlib/ChangeLog b/newlib/ChangeLog index 9f245b8..3aa09e4 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,10 @@ +2002-05-23 Gareth Pearce <tilps@hotmail.com> + + * 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 <jjohnstn@redhat.com> * libc/sys/linux/Makefile.am: Add resource.c. diff --git a/newlib/libc/stdio/Makefile.am b/newlib/libc/stdio/Makefile.am index c859cbf..e7d4fea 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 aff17a3..8d69f4e 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 0000000..c74c7fc --- /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 +<<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 new file mode 100644 index 0000000..f279713 --- /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 + +<<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)); +} |