.nf
.B "#include <mLib/pkbuf.h>"
+.B "enum {"
+.B "\h'4n'PKBUF_ENABLE = ..."
+.B "};"
+
+.B "typedef struct {"
+.B "\h'4n'unsigned f;"
+.B "\h'4n'..."
+.B "} pkbuf;"
+
+.ds mT \fBtypedef void pkbuf_func(
+.B "\*(mToctet *" b ", size_t " sz ", pkbuf *" p ,
+.BI "\h'\w'\*(mT'u'size_t *" keep ", void *" p );
+
.BI "void pkbuf_flush(pkbuf *" pk ", octet *" p ", size_t " len );
.BI "void pkbuf_close(pkbuf *" pk );
.BI "size_t pkbuf_free(pkbuf *" pk ", octet **" p );
.I sz
of the packet.
.PP
-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:
+When enough data has arrived, the packet-handler function is called. It
+is passed:
.TP
.BI "octet *" b
A pointer to the packet data in the buffer, or zero to signify