ERRSTR(2)ERRSTR(2)
NAME
errstr, rerrstr, werrstr – description of last system call error
SYNOPSIS
#include <u.h>
#include <libc.h>
int errstr(char *err, uint nerr)
void rerrstr(char *err, uint nerr)
void werrstr(char *fmt, ...)
DESCRIPTION
When a system call fails it returns –1 and
records a null terminated string describing the error in a per-process buffer.
Errstr
swaps the contents of that buffer with the contents of the array
err.
Errstr
will write at most
nerr
bytes into
err;
if the per-process error string does not fit,
it is silently truncated at a UTF character boundary.
The returned string is NUL-terminated.
Usually
errstr
will be called with an empty string,
but the exchange property provides a mechanism for
libraries to set the return value for the next call to
errstr.
The per-process buffer is
ERRMAX
bytes long. Any error string provided by the user will
be truncated at
ERRMAX-1
bytes.
ERRMAX
is defined in
<libc.h>.
If no system call has generated an error since the last call to
errstr
with an empty string,
the result is an empty string.
The verb
r
in
print(2)
calls
errstr
and outputs the error string.
Rerrstr
reads the error string but does not modify the per-process buffer, so
a subsequent
errstr
will recover the same string.
Werrstr
takes a
print
style format as its argument and uses it to format
a string to pass to
errstr.
The string returned from
errstr
is discarded.
SOURCE
/sys/src/libc/9syscall
/sys/src/libc/9sys/rerrstr.c
/sys/src/libc/9sys/werrstr.c
DIAGNOSTICS
Errstr
always returns 0.
SEE
intro(2),
perror(2)