.TH ERRSTR 2.SH NAMEerrstr, rerrstr, werrstr \- description of last system call error.SH SYNOPSIS.B #include <u.h>.br.B #include <libc.h>.PP.Bint errstr(char *err, uint nerr).PP.Bvoid rerrstr(char *err, uint nerr).PP.Bvoid werrstr(char *fmt, ...).SH DESCRIPTIONWhen a system call fails it returns \-1 andrecords a null terminated string describing the error in a per-process buffer..I Errstrswaps the contents of that buffer with the contents of the array.IR err ..I Errstrwill write at most .I nerrbytes into .IR 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.I errstrwill be called with an empty string,but the exchange property provides a mechanism forlibraries to set the return value for the next call to.IR errstr ..PPThe per-process buffer is.B ERRMAXbytes long. Any error string provided by the user willbe truncated at .B ERRMAX-1bytes..B ERRMAXis defined in.BR <libc.h> ..PPIf no system call has generated an error since the last call to.I errstrwith an empty string,the result is an empty string..PPThe verb.B rin.IR print (2)calls.I errstrand outputs the error string..PP.I Rerrstrreads the error string but does not modify the per-process buffer, soa subsequent.I errstrwill recover the same string..PP.I Werrstrtakes a.I printstyle format as its argument and uses it to formata string to pass to.IR errstr .The string returned from.I errstris discarded..SH SOURCE.B /sys/src/libc/9syscall.br.B /sys/src/libc/9sys/werrstr.c.SH DIAGNOSTICS.I Errstralways returns 0..SH SEE ALSO.IR intro (2),.IR perror (2)
.TH ERRSTR 2
.SH NAME
errstr, rerrstr, werrstr \- description of last system call error
.SH SYNOPSIS
.B #include <u.h>
.br
.B #include <libc.h>
.PP
.B
int errstr(char *err, uint nerr)
.PP
.B
void rerrstr(char *err, uint nerr)
.PP
.B
void werrstr(char *fmt, ...)
.SH DESCRIPTION
When a system call fails it returns \-1 and
records a null terminated string describing the error in a per-process buffer.
.I Errstr
swaps the contents of that buffer with the contents of the array
.IR err .
.I Errstr
will write at most
.I nerr
bytes into
.IR 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
.I 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
.IR errstr .
.PP
The per-process buffer is
.B ERRMAX
bytes long. Any error string provided by the user will
be truncated at
.B ERRMAX-1
bytes.
.B ERRMAX
is defined in
.BR <libc.h> .
.PP
If no system call has generated an error since the last call to
.I errstr
with an empty string,
the result is an empty string.
.PP
The verb
.B r
in
.IR print (2)
calls
.I errstr
and outputs the error string.
.PP
.I Rerrstr
reads the error string but does not modify the per-process buffer, so
a subsequent
.I errstr
will recover the same string.
.PP
.I Werrstr
takes a
.I print
style format as its argument and uses it to format
a string to pass to
.IR errstr .
The string returned from
.I errstr
is discarded.
.SH SOURCE
.B /sys/src/libc/9syscall
.br
.B /sys/src/libc/9sys/werrstr.c
.SH DIAGNOSTICS
.I Errstr
always returns 0.
.SH SEE ALSO
.IR intro (2),
.IR perror (2)