Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ setbuf(3s) — AIX PS/2 1.2.1

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

fopen, freopen, fdopen

getc, fgetc, getchar, getw, getwc, fgetwc, getwchar

malloc, free, realloc, calloc, valloc, alloca, mallopt, mallinfo

putc, putchar, fputc, putw, putwc, putwchar, fputwc

setbuffer, setlinebuf

stdio



SETBUF(3s,L)                AIX Technical Reference                SETBUF(3s,L)



-------------------------------------------------------------------------------
setbuf, setvbuf



PURPOSE

Assigns buffering to a stream.

LIBRARY

Standard I/O Library (libc.a)

SYNTAX

#include <stdio.h>

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

int setvbuf (stream, buf, mode, size)
FILE *stream;
char *buf;
int mode;
size_t size;

DESCRIPTION

The setbuf and setvbuf functions override the default buffering on the
specified stream.  These functions may be used only after the stream pointed to
by stream has been associated with an open file and before any other operation
is performed on the stream.

If setbuf and setvbuf are not called prior to the first time the stream is read
or written, a buffer will be allocated automatically.  For streams directed to
terminals, this will enable line buffering; except for stderr which is
unbuffered by default.

The setbuf subroutine causes the user supplied buffer buf to be used instead of
the default buffer.  This buffer must be of size BUFSIZ characters, as defined
in <stdio.h>.  If the buf parameter is a NULL pointer, the stream will be
unbuffered.

For the setvbuf function, mode determines how stream is buffered:

_IOFBF  Causes input/output to be fully buffered.

_IOLBF  Causes input/output to be line buffered.  The buffer is flushed when a
        new line is written, the buffer is full, or input is requested.

_IONBF  Causes input/output to be completely unbuffered.



Processed November 7, 1990       SETBUF(3s,L)                                 1





SETBUF(3s,L)                AIX Technical Reference                SETBUF(3s,L)




For fully buffered and line buffered streams, a non-null buf parameter may be
specified.  It must point to an array of size characters to be used for the
buffering; or a null buf parameter may be specified to request that setvbuf,
allocate its own buffer of size size.  A good value for size is the constant
BUFSIZ defined in <stdio.h>.  If input/output is unbuffered, the buf and size
parameters are ignored.

Note:  A common source of error is allocating buffer space as an automatic
       variable in a code block and then failing to close the stream in the
       same block.

ERROR CONDITIONS

The setvbuf function fails if the following is true:

EBADF     The file descriptor underlying stream is not valid.

RELATED INFORMATION

In this book:  "fopen, freopen, fdopen,"  "getc, fgetc, getchar, getw, getwc,
fgetwc, getwchar,"  "malloc, free, realloc, calloc, valloc, alloca, mallopt,
mallinfo," "putc, putchar, fputc, putw, putwc, putwchar, fputwc," "setbuffer,
setlinebuf," and "stdio."































Processed November 7, 1990       SETBUF(3s,L)                                 2



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