Annotation of src/usr.bin/ssh/buffer.h, Revision 1.3
1.1 deraadt 1: /*
1.2 deraadt 2: *
3: * buffer.h
4: *
5: * Author: Tatu Ylonen <ylo@cs.hut.fi>
6: *
7: * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
8: * All rights reserved
9: *
10: * Created: Sat Mar 18 04:12:25 1995 ylo
11: *
12: * Code for manipulating FIFO buffers.
13: *
14: */
1.1 deraadt 15:
1.3 ! markus 16: /* RCSID("$Id: buffer.h,v 1.2 1999/11/24 00:26:01 deraadt Exp $"); */
1.1 deraadt 17:
18: #ifndef BUFFER_H
19: #define BUFFER_H
20:
1.2 deraadt 21: typedef struct {
22: char *buf; /* Buffer for data. */
23: unsigned int alloc; /* Number of bytes allocated for data. */
24: unsigned int offset; /* Offset of first byte containing data. */
25: unsigned int end; /* Offset of last byte containing data. */
26: } Buffer;
1.1 deraadt 27: /* Initializes the buffer structure. */
1.2 deraadt 28: void buffer_init(Buffer * buffer);
1.1 deraadt 29:
30: /* Frees any memory used for the buffer. */
1.2 deraadt 31: void buffer_free(Buffer * buffer);
1.1 deraadt 32:
33: /* Clears any data from the buffer, making it empty. This does not actually
34: zero the memory. */
1.2 deraadt 35: void buffer_clear(Buffer * buffer);
1.1 deraadt 36:
37: /* Appends data to the buffer, expanding it if necessary. */
1.2 deraadt 38: void buffer_append(Buffer * buffer, const char *data, unsigned int len);
1.1 deraadt 39:
1.3 ! markus 40: /*
! 41: * Appends space to the buffer, expanding the buffer if necessary. This does
! 42: * not actually copy the data into the buffer, but instead returns a pointer
! 43: * to the allocated region.
! 44: */
1.2 deraadt 45: void buffer_append_space(Buffer * buffer, char **datap, unsigned int len);
1.1 deraadt 46:
47: /* Returns the number of bytes of data in the buffer. */
1.2 deraadt 48: unsigned int buffer_len(Buffer * buffer);
1.1 deraadt 49:
50: /* Gets data from the beginning of the buffer. */
1.2 deraadt 51: void buffer_get(Buffer * buffer, char *buf, unsigned int len);
1.1 deraadt 52:
53: /* Consumes the given number of bytes from the beginning of the buffer. */
1.2 deraadt 54: void buffer_consume(Buffer * buffer, unsigned int bytes);
1.1 deraadt 55:
56: /* Consumes the given number of bytes from the end of the buffer. */
1.2 deraadt 57: void buffer_consume_end(Buffer * buffer, unsigned int bytes);
1.1 deraadt 58:
59: /* Returns a pointer to the first used byte in the buffer. */
1.2 deraadt 60: char *buffer_ptr(Buffer * buffer);
1.1 deraadt 61:
1.3 ! markus 62: /*
! 63: * Dumps the contents of the buffer to stderr in hex. This intended for
! 64: * debugging purposes only.
! 65: */
1.2 deraadt 66: void buffer_dump(Buffer * buffer);
1.1 deraadt 67:
1.2 deraadt 68: #endif /* BUFFER_H */