Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ setbuf(S) — Xenix 2.3.4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

fopen(S)

getc(S)

malloc(S)

putc(S)

stdio(S)



     SETBUF(S)                XENIX System V                 SETBUF(S)



     Name
          setbuf, setvbuf - Assigns buffering to a stream.

     Syntax
          #include <stdio.h>

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

     Description
          setbuf is used after a stream has been opened but before it
          is read or written.  It causes the character array buf to be
          used instead of an automatically allocated buffer.  If buf
          is the constant pointer NULL, input/output will be
          completely unbuffered.

          A manifest constant BUFSIZ, defined in the <stdio.h> file,
          tells how big an array is needed:

               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 specifies the size of the buffer to be used.
          The constant BUFSIZ in <stdio.h> is suggested as a good
          buffer size.  If input/output is unbuffered, buf and size
          are ignored.

          By default, output to a terminal is line buffered and all
          other input/output is fully buffered.

          A buffer is normally obtained from malloc(S) upon the first
          getc(S) or putc(S) on the file, except that output streams
          directed to terminals, and the standard error stream stderr



     Page 1                                           (printed 8/7/87)





     SETBUF(S)                XENIX System V                 SETBUF(S)



          are normally not buffered.  A common source of error is
          allocation of buffer space as an ``automatic'' variable in a
          code block, and then failing to close the stream in the same
          block.

     See Also
          fopen(S), getc(S), malloc(S), putc(S), stdio(S)

     Diagnostics
          If an illegal value for type or size is provided, setvbuf
          returns a non-zero value.  Otherwise, the value returned
          will be zero.











































     Page 2                                           (printed 8/7/87)



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