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@cs.hut.fi> 15 * Copyright (c) 1995 Tatu Ylonen <ylo@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 */