.BI "size_t pkbuf_free(pkbuf *" pk ", octet **" p );
.BI "void pkbuf_snarf(pkbuf *" pk ", const void *" p ", size_t " sz );
.BI "void pkbuf_want(pkbuf *" pk ", size_t " want );
-.BI "void pkbuf_init(pkbuf *" pk ,
-.BI " void (*" func ")(octet *" b ", size_t " sz ", pkbuf *" pk ,
-.BI " size_t *" keep ", void *" p ),
-.BI " void *" pk );
+.BI "void pkbuf_init(pkbuf *" pk ", pkbuf_func *" func ", void *" p );
.BI "void pkbuf_destroy(pkbuf *" pk );
.fi
.SH "DESCRIPTION"
buffer will allocate memory to store incoming data automatically: this
structure just contains bookkeeping information.
.TP
-.nf
-.BI "void (*" func ")(octet *" b ", size_t " sz ", pkbuf *" p ,
-.BI " size_t *" keep ", void *" p )
-.fi
+.BI "pkbuf_func *" func
The
.I packet-handler
function to which the packet buffer should pass packets of data when
-they're received.
+they're received. See
+.B "Packet breaking and the handler function"
+below.
.TP
.BI "void *" p
A pointer argument to be passed to the function when a packet arrives.
function is trivially implemented in terms of the more complex
.B pkbuf_free / pkbuf_flush
interface.
-.SS "Packet breaking and the handler fucntion"
+.SS "Packet breaking and the handler function"
The function
.B pkbuf_want
is used to inform the packet buffer of the expected length of the next
.I sz
of the packet.
.PP
-When enough data has arrived, the packet-handler function is called, and
-passed:
+When enough data has arrived, the packet-handler function is called.
+This has the signature
+.IP
+.nf
+.BI "void (*" func ")(octet *" b ", size_t " sz ", pkbuf *" p ,
+.BI " size_t *" keep ", void *" p );
+.fi
+.PP
+It is passed:
.TP
.BI "octet *" b
A pointer to the packet data in the buffer, or zero to signify