errstr, rerrstr, werrstr – description of last system call error
int errstr(char *err, uint nerr)
void rerrstr(char *err, uint nerr)
void werrstr(char *fmt, ...)
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.
Errstr always returns 0.