[BACK]Return to buffer.h CVS log [TXT][DIR] Up to [local] / src / usr.bin / ssh

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 */