/** Line Driven Socket Functions **/

#define _ARISA_LINE_DRIVE_H

typedef struct linebuf_t {
	char	*buffer;
	size_t	msgsize;
	size_t	bufsize;
	int	pos;
	int	used;
} linebuf_t;

linebuf_t	*alloc_linebuf(size_t msgsize);
void		free_linebuf(linebuf_t *lb);
void		clear_linebuf(linebuf_t *lb);
int		linebuf_inuse(linebuf_t *lb);
size_t		copy_linebuf(linebuf_t *lb, char *dst, size_t dstsize);
void		load_linebuf(linebuf_t *lb, char *src);
char		*dup_linebuf(linebuf_t *lb);
int		recv_line(int sok, linebuf_t *lb);
int		send_line(int sok, linebuf_t *lb);
