/* -*-c-*-
*
- * $Id: lbuf.h,v 1.4 2000/06/17 10:38:14 mdw Exp $
+ * $Id: lbuf.h,v 1.8 2004/04/08 01:36:13 mdw Exp $
*
* Block-to-line buffering
*
* MA 02111-1307, USA.
*/
-/*----- Revision history --------------------------------------------------*
- *
- * $Log: lbuf.h,v $
- * Revision 1.4 2000/06/17 10:38:14 mdw
- * Add support for variable buffer sizes.
- *
- * Revision 1.3 1999/12/10 23:42:04 mdw
- * Change header file guard names.
- *
- * Revision 1.2 1999/05/17 20:36:08 mdw
- * Make the magical constants for the buffer flags uppercase.
- *
- * Revision 1.1 1999/05/14 21:01:14 mdw
- * Integrated `select' handling bits from the background resolver project.
- *
- */
-
#ifndef MLIB_LBUF_H
#define MLIB_LBUF_H
* that.
*/
+struct lbuf;
+
+typedef void lbuf_func(char */*s*/, size_t /*len*/, void */*p*/);
+
typedef struct lbuf {
- void (*func)(char */*s*/, void */*p*/); /* Handler function */
+ lbuf_func *func; /* Handler function */
void *p; /* Argument for handler */
size_t len; /* Length of data in buffer */
size_t sz; /* Buffer size */
+ unsigned delim; /* Delimiter to look for */
unsigned f; /* Various useful state flags */
arena *a; /* Memory allocation arena */
char *buf; /* The actual buffer */
} lbuf;
+#define LBUF_CR 1u /* Read a carriage return */
+#define LBUF_ENABLE 2u /* Buffer is currently enabled */
+#define LBUF_CLOSE 4u /* Buffer is now closed */
+
enum {
- LBUF_CR = 1, /* Read a carriage return */
- LBUF_ENABLE = 2 /* Buffer is currently enabled */
+ LBUF_CRLF = 256,
+ LBUF_STRICTCRLF = 257
};
/*----- Functions provided ------------------------------------------------*/
/* --- @lbuf_init@ --- *
*
* Arguments: @lbuf *b@ = pointer to buffer block
- * @void (*func)(char *s, void *p)@ = handler function
+ * @lbuf_func *func@ = handler function
* @void *p@ = argument pointer for @func@
*
* Returns: ---
* passed to @func@ for processing.
*/
-extern void lbuf_init(lbuf */*b*/,
- void (*/*func*/)(char */*s*/, void */*p*/),
- void */*p*/);
+extern void lbuf_init(lbuf */*b*/, lbuf_func */*func*/, void */*p*/);
/* --- @lbuf_destroy@ --- *
*