Home | History | Annotate | Download | only in include
      1 /*	$OpenBSD: buffer.h,v 1.11 2002/03/04 17:27:39 stevesk Exp $	*/
      2 
      3 #ifndef	_BUFFER_H
      4 #define	_BUFFER_H
      5 
      6 #pragma ident	"%Z%%M%	%I%	%E% SMI"
      7 
      8 #ifdef __cplusplus
      9 extern "C" {
     10 #endif
     11 
     12 
     13 /*
     14  * Author: Tatu Ylonen <ylo (at) cs.hut.fi>
     15  * Copyright (c) 1995 Tatu Ylonen <ylo (at) cs.hut.fi>, Espoo, Finland
     16  *                    All rights reserved
     17  * Code for manipulating FIFO buffers.
     18  *
     19  * As far as I am concerned, the code I have written for this software
     20  * can be used freely for any purpose.  Any derived versions of this
     21  * software must be clearly marked as such, and if the derived work is
     22  * incompatible with the protocol description in the RFC file, it must be
     23  * called by a name other than "ssh" or "Secure Shell".
     24  */
     25 
     26 typedef struct {
     27 	u_char	*buf;		/* Buffer for data. */
     28 	u_int	 alloc;		/* Number of bytes allocated for data. */
     29 	u_int	 offset;	/* Offset of first byte containing data. */
     30 	u_int	 end;		/* Offset of last byte containing data. */
     31 }       Buffer;
     32 
     33 void	 buffer_init(Buffer *);
     34 void	 buffer_clear(Buffer *);
     35 void	 buffer_free(Buffer *);
     36 
     37 u_int	 buffer_len(Buffer *);
     38 void	*buffer_ptr(Buffer *);
     39 
     40 void	 buffer_append(Buffer *, const void *, u_int);
     41 void	*buffer_append_space(Buffer *, u_int);
     42 
     43 int	 buffer_check_alloc(Buffer *, u_int);
     44 
     45 void	 buffer_get(Buffer *, void *, u_int);
     46 
     47 void	 buffer_consume(Buffer *, u_int);
     48 void	 buffer_consume_end(Buffer *, u_int);
     49 
     50 void     buffer_dump(Buffer *);
     51 
     52 int	 buffer_get_ret(Buffer *, void *, u_int);
     53 int	 buffer_consume_ret(Buffer *, u_int);
     54 int	 buffer_consume_end_ret(Buffer *, u_int);
     55 
     56 #ifdef __cplusplus
     57 }
     58 #endif
     59 
     60 #endif /* _BUFFER_H */
     61