+/* $OpenBSD: buffer.h,v 1.13 2005/03/14 11:46:56 markus Exp $ */
+
/*
- *
- * buffer.h
- *
* Author: Tatu Ylonen <ylo@cs.hut.fi>
- *
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
* All rights reserved
- *
- * Created: Sat Mar 18 04:12:25 1995 ylo
- *
* Code for manipulating FIFO buffers.
- *
+ *
+ * As far as I am concerned, the code I have written for this software
+ * can be used freely for any purpose. Any derived versions of this
+ * software must be clearly marked as such, and if the derived work is
+ * incompatible with the protocol description in the RFC file, it must be
+ * called by a name other than "ssh" or "Secure Shell".
*/
-/* RCSID("$Id$"); */
-
#ifndef BUFFER_H
#define BUFFER_H
typedef struct {
- char *buf; /* Buffer for data. */
- unsigned int alloc; /* Number of bytes allocated for data. */
- unsigned int offset; /* Offset of first byte containing data. */
- unsigned int end; /* Offset of last byte containing data. */
+ u_char *buf; /* Buffer for data. */
+ u_int alloc; /* Number of bytes allocated for data. */
+ u_int offset; /* Offset of first byte containing data. */
+ u_int end; /* Offset of last byte containing data. */
} Buffer;
-/* Initializes the buffer structure. */
-void buffer_init(Buffer * buffer);
-
-/* Frees any memory used for the buffer. */
-void buffer_free(Buffer * buffer);
-
-/* Clears any data from the buffer, making it empty. This does not actually
- zero the memory. */
-void buffer_clear(Buffer * buffer);
-/* Appends data to the buffer, expanding it if necessary. */
-void buffer_append(Buffer * buffer, const char *data, unsigned int len);
+#define BUFFER_MAX_CHUNK 0x100000
+#define BUFFER_MAX_LEN 0xa00000
-/*
- * Appends space to the buffer, expanding the buffer if necessary. This does
- * not actually copy the data into the buffer, but instead returns a pointer
- * to the allocated region.
- */
-void buffer_append_space(Buffer * buffer, char **datap, unsigned int len);
+void buffer_init(Buffer *);
+void buffer_clear(Buffer *);
+void buffer_free(Buffer *);
-/* Returns the number of bytes of data in the buffer. */
-unsigned int buffer_len(Buffer * buffer);
+u_int buffer_len(Buffer *);
+void *buffer_ptr(Buffer *);
-/* Gets data from the beginning of the buffer. */
-void buffer_get(Buffer * buffer, char *buf, unsigned int len);
+void buffer_append(Buffer *, const void *, u_int);
+void *buffer_append_space(Buffer *, u_int);
-/* Consumes the given number of bytes from the beginning of the buffer. */
-void buffer_consume(Buffer * buffer, unsigned int bytes);
+void buffer_get(Buffer *, void *, u_int);
-/* Consumes the given number of bytes from the end of the buffer. */
-void buffer_consume_end(Buffer * buffer, unsigned int bytes);
+void buffer_consume(Buffer *, u_int);
+void buffer_consume_end(Buffer *, u_int);
-/* Returns a pointer to the first used byte in the buffer. */
-char *buffer_ptr(Buffer * buffer);
+void buffer_dump(Buffer *);
-/*
- * Dumps the contents of the buffer to stderr in hex. This intended for
- * debugging purposes only.
- */
-void buffer_dump(Buffer * buffer);
+int buffer_get_ret(Buffer *, void *, u_int);
+int buffer_consume_ret(Buffer *, u_int);
+int buffer_consume_end_ret(Buffer *, u_int);
#endif /* BUFFER_H */