Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ setbuf(3s) — NEWS-os 5.0.1

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

fopen(3S)

getc(3S)

malloc(3C)

putc(3S)

stdio(3S)



setbuf(3S)              LIBRARY FUNCTIONS              setbuf(3S)



NAME
     setbuf, setvbuf - assign buffering to a stream

SYNOPSIS
     #include <stdio.h>

     void setbuf (FILE *stream, char *buf);

     int setvbuf (FILE  *stream,  char  *buf,  int  type,  sizet
     size);

DESCRIPTION
     setbuf may be used after a stream [see  intro(3)]  has  been
     opened  but  before  it  is  read or written.  It causes the
     array pointed to by buf to be used instead of  an  automati-
     cally   allocated  buffer.   If  buf  is  the  NULL  pointer
     input/output will be completely unbuffered.

     While there is no limititation on the size  of  the  buffer,
     the  constant  BUFSIZ, defined in the <stdio.h> header file,
     is typically a good buffer size:

          char buf[BUFSIZ];
     setvbuf may be used after  a  stream  has  been  opened  but
     before  it  is  read or written.  type determines how stream
     will  be  buffered.   Legal  values  for  type  (defined  in
     stdio.h) are:

     IOFBF      causes input/output to be fully buffered.

     IOLBF      causes output to be line  buffered;  the  buffer
                 will  be  flushed when a newline is written, the
                 buffer is full, or input is requested.

     IONBF      causes input/output to be completely unbuffered.
                 If  buf  is  not  the NULL pointer, the array it
                 points to will be used for buffering, instead of
                 an  automatically allocated buffer.  size speci-
                 fies the size of the  buffer  to  be  used.   If
                 input/output  is  unbuffered,  buf  and size are
                 ignored.  For a further discussion of buffering,
                 see stdio(3S).

SEE ALSO
     fopen(3S), getc(3S), malloc(3C), putc(3S), stdio(3S).

DIAGNOSTICS
     If an illegal value for type is provided, setvbuf returns  a
     non-zero value. Otherwise, it returns zero.

NOTES
     A common source of error is allocating buffer  space  as  an



                                                                1





setbuf(3S)              LIBRARY FUNCTIONS              setbuf(3S)



     ``automatic''  variable in a code block, and then failing to
     close the stream in the same block.

     The first four bytes of buf are used for internal  bookkeep-
     ing  of the stream and, therefore, buf contains size-4 bytes
     when full.  It is recommended to use the automatically allo-
     cated buffer when using setvbuf.
















































                                                                2



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026