--- setbuffer.c.EMPTY Sat Nov 17 18:55:11 2001 +++ setbuffer.c Sat Nov 17 17:44:23 2001 @@ -0,0 +1,125 @@ +/* + * 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 setbuffer and setlinebuf functions +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); +} + +int +_DEFUN (setlinebuf, (fp), + FILE * fp) +{ + return (setvbuf (fp, (char *) NULL, _IOLBF, (size_t) 0)); +}