|  | /* | 
|  | * Copyright (c) 1995 Danny Gasparovski. | 
|  | * | 
|  | * Please read the file COPYRIGHT for the | 
|  | * terms and conditions of the copyright. | 
|  | */ | 
|  |  | 
|  | #ifndef _SBUF_H_ | 
|  | #define _SBUF_H_ | 
|  |  | 
|  | #define sbflush(sb) sbdrop((sb),(sb)->sb_cc) | 
|  | #define sbspace(sb) ((sb)->sb_datalen - (sb)->sb_cc) | 
|  |  | 
|  | struct sbuf { | 
|  | u_int	sb_cc;		/* actual chars in buffer */ | 
|  | u_int	sb_datalen;	/* Length of data  */ | 
|  | char	*sb_wptr;	/* write pointer. points to where the next | 
|  | * bytes should be written in the sbuf */ | 
|  | char	*sb_rptr;	/* read pointer. points to where the next | 
|  | * byte should be read from the sbuf */ | 
|  | char	*sb_data;	/* Actual data */ | 
|  | }; | 
|  |  | 
|  | void sbfree(struct sbuf *); | 
|  | void sbdrop(struct sbuf *, int); | 
|  | void sbreserve(struct sbuf *, int); | 
|  | void sbappend(struct socket *, struct mbuf *); | 
|  | void sbcopy(struct sbuf *, int, int, char *); | 
|  |  | 
|  | #endif |