X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/mLib/blobdiff_plain/b6b9d458c78364bdbbd7fbd7ec543bc364014b45..fbf20b5bd30e237c383ed290428261f28dfa5803:/man/selbuf.3 diff --git a/man/selbuf.3 b/man/selbuf.3 index 386a718..cc7c884 100644 --- a/man/selbuf.3 +++ b/man/selbuf.3 @@ -1,57 +1,62 @@ .\" -*-nroff-*- -.TH selbuf 3mLib "23 May 1999" mLib +.TH selbuf 3 "23 May 1999" "Straylight/Edgeware" "mLib utilities library" .SH NAME selbuf \- line-buffering input selector +.\" @selbuf_enable +.\" @selbuf_disable +.\" @selbuf_setsize +.\" @selbuf_init +.\" @selbuf_destroy .SH SYNOPSIS .nf .B "#include " .BI "void selbuf_enable(selbuf *" b ); .BI "void selbuf_disable(selbuf *" b ); +.BI "void selbuf_setsize(selbuf *" b ", size_t " sz ); .BI "void selbuf_init(selbuf *" b , .BI " sel_state *" s , .BI " int " fd , .BI " void (*" func ")(char *" s ", void *" p ), .BI " void *" p ); +.BI "void selbuf_destroy(selbuf *" b ); .fi .SH DESCRIPTION The .B selbuf subsystem is a selector which integrates with the -.BR sel (3mLib) +.BR sel (3) system for I/O multiplexing. It reads entire text lines from a file descriptor and passes them to a caller-defined function. It uses the line buffer described in -.BR lbuf (3mLib) +.BR lbuf (3) to do its work: you should read about it in order to understand exactly what gets considered to be a line of text and what doesn't, and the exact rules about what your line handling function should and shouldn't do. .PP -All the data for a -.B selbuf -selector is stored in an object of type +The data for a line selector is stored in an object of type .BR selbuf . This object must be allocated by the caller, and initialized using the .B selbuf_init function. This requires a fair few arguments: .TP -.I b +.BI "selbuf *" b Pointer to the .B selbuf object to initialize. .TP -.I s +.BI "sel_state *" s Pointer to a multiplexor object (type .BR sel_state ) to which this selector should be attached. See -.BR sel (3mLib) +.BR sel (3) for more details about multiplexors, and how this whole system works. .TP -.I fd +.BI "int " fd The file descriptor of the stream the selector should read from. .TP -.I func +.BI "void (*" func ")(char *" s ", void *" p ) The .I "line handler" function. It is passed a pointer to each line read from the file (or @@ -61,7 +66,7 @@ argument to .B selbuf_init described below). .TP -.I p +.BI "void *" p A pointer argument passed to .I func for each line read from the file. Apart from this, the pointer is not @@ -85,5 +90,18 @@ queued up from the last I/O operation: it doesn't necessarily wait for the next .B sel_select call. +.PP +The line buffer has a finite amount of memory for reading strings. The +size of this buffer is set by calling +.B selbuf_setsize +with the requested size. The default buffer size is 256 bytes. +.PP +When it's finished with, a line buffer selector must be destroyed by +calling +.BR selbuf_destroy . +.SH "SEE ALSO" +.BR lbuf (3), +.BR sel (3), +.BR mLib (3). .SH AUTHOR Mark Wooding,