Annotation of src/usr.bin/ssh/buffer.h, Revision 1.4
1.1 deraadt 1: /*
1.4 ! markus 2: *
1.2 deraadt 3: * buffer.h
1.4 ! markus 4: *
1.2 deraadt 5: * Author: Tatu Ylonen <ylo@cs.hut.fi>
1.4 ! markus 6: *
1.2 deraadt 7: * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
8: * All rights reserved
1.4 ! markus 9: *
1.2 deraadt 10: * Created: Sat Mar 18 04:12:25 1995 ylo
1.4 ! markus 11: *
1.2 deraadt 12: * Code for manipulating FIFO buffers.
1.4 ! markus 13: *
1.2 deraadt 14: */
1.1 deraadt 15:
1.4 ! markus 16: /* RCSID("$Id: buffer.h,v 1.3 1999/11/24 19:53:44 markus 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 */