So here's my attempt at documenting errno for ober_read_elements.

martijn@

Index: ober_read_elements.3
===================================================================
RCS file: /cvs/src/lib/libutil/ober_read_elements.3,v
retrieving revision 1.1
diff -u -p -r1.1 ober_read_elements.3
--- ober_read_elements.3        24 Oct 2019 12:39:26 -0000      1.1
+++ ober_read_elements.3        3 Sep 2020 18:48:56 -0000
@@ -142,9 +142,10 @@ frees any dynamically allocated storage 
 .Fn ober_read_elements
 returns a pointer to a fully populated list of one or more
 .Vt ber_element
-structures or
-.Dv NULL
-on a type mismatch or read error.
+structures.
+Otherwise \-1 is returned and the global variable
+.Va errno
+is set to indicate the error.
 .Pp
 .Fn ober_get_writebuf
 returns the number of bytes contained within the buffer
@@ -155,7 +156,30 @@ or \-1 on failure.
 returns the number of bytes written.
 Otherwise \-1 is returned and the global variable
 .Va errno
-is set to indicate the error.
+is set to
+.Er ENOMEM
+to indicate the error.
+.Sh ERRORS
+.Fn ober_read_elements
+will fail if:
+.Bl -tag -width Er
+.It Bq Er ENOMEM
+No memory was available to create the full
+.Vt ber_element
+structure list.
+.It Bq Er ENOBUFS
+.Fn ober_read_elements
+was called before calling
+.Fn ober_set_readbuf .
+.It Bq Er ECANCELED
+.Fa buf
+does not contain enough data to complete the unpacking.
+.It Bq Er EINVAL
+.Fa buf
+does not contain a valid BER data structure.
+.It Bq Er ERANGE
+One of the values in the structure is larger then the library can unpack.
+.El
 .Sh SEE ALSO
 .Xr read 2 ,
 .Xr recv 2 ,

Reply via email to