ucspi-ssl  0.99e
TLS encryption for IPv6 communication
buffer.h
Go to the documentation of this file.
1 /* Public domain. */
2 
3 #ifndef BUFFER_H
4 #define BUFFER_H
5 
6 typedef struct buffer {
7  char *x;
8  unsigned int p;
9  unsigned int n;
10  int fd;
11  int (*op)();
12 } buffer;
13 
14 #define BUFFER_INIT(op,fd,buf,len) { (buf), 0, (len), (fd), (op) }
15 #define BUFFER_INSIZE 8192
16 #define BUFFER_OUTSIZE 8192
17 
18 extern void buffer_init(buffer *,int (*)(),int,char *,unsigned int);
19 
20 extern int buffer_flush(buffer *);
21 extern int buffer_put(buffer *,const char *,unsigned int);
22 extern int buffer_putalign(buffer *,const char *,unsigned int);
23 extern int buffer_putflush(buffer *,const char *,unsigned int);
24 extern int buffer_puts(buffer *,const char *);
25 extern int buffer_putsalign(buffer *,const char *);
26 extern int buffer_putsflush(buffer *,const char *);
27 
28 #define buffer_PUTC(s,c) \
29  ( ((s)->n != (s)->p) \
30  ? ( (s)->x[(s)->p++] = (c), 0 ) \
31  : buffer_put((s),&(c),1) \
32  )
33 
34 extern int buffer_get(buffer *,char *,unsigned int);
35 extern int buffer_bget(buffer *,char *,unsigned int);
36 extern int buffer_feed(buffer *);
37 
38 extern char *buffer_peek(buffer *);
39 extern void buffer_seek(buffer *,unsigned int);
40 
41 #define buffer_PEEK(s) ( (s)->x + (s)->n )
42 #define buffer_SEEK(s,len) ( ( (s)->p -= (len) ) , ( (s)->n += (len) ) )
43 
44 #define buffer_GETC(s,c) \
45  ( ((s)->p > 0) \
46  ? ( *(c) = (s)->x[(s)->n], buffer_SEEK((s),1), 1 ) \
47  : buffer_get((s),(c),1) \
48  )
49 
50 extern int buffer_copy(buffer *,buffer *);
51 
52 extern int buffer_unixread(int,char *,unsigned int);
53 extern int buffer_unixwrite(int,const char *,unsigned int);
54 
55 extern buffer *buffer_0;
56 extern buffer *buffer_0small;
57 extern buffer *buffer_1;
58 extern buffer *buffer_1small;
59 extern buffer *buffer_2;
60 
61 #endif
int buffer_unixread(int, char *, unsigned int)
Definition: buffer_read.c:6
buffer * buffer_1small
int buffer_feed(buffer *)
Definition: buffer_get.c:27
int buffer_unixwrite(int, const char *, unsigned int)
Definition: buffer_write.c:6
int buffer_puts(buffer *, const char *)
Definition: buffer_put.c:82
int buffer_bget(buffer *, char *, unsigned int)
Definition: buffer_get.c:40
char * buffer_peek(buffer *)
Definition: buffer_get.c:60
int buffer_put(buffer *, const char *, unsigned int)
Definition: buffer_put.c:49
int buffer_putalign(buffer *, const char *, unsigned int)
Definition: buffer_put.c:35
unsigned int p
Definition: buffer.h:8
int buffer_putsalign(buffer *, const char *)
Definition: buffer_put.c:77
buffer * buffer_2
Definition: buffer_2.c:7
int(* op)()
Definition: buffer.h:11
char * x
Definition: buffer.h:7
int buffer_putflush(buffer *, const char *, unsigned int)
Definition: buffer_put.c:71
buffer * buffer_0
Definition: buffer_0.c:13
buffer * buffer_0small
int buffer_copy(buffer *, buffer *)
Definition: buffer_copy.c:3
int fd
Definition: buffer.h:10
int buffer_putsflush(buffer *, const char *)
Definition: buffer_put.c:87
Definition: buffer.h:6
void buffer_seek(buffer *, unsigned int)
Definition: buffer_get.c:65
int buffer_get(buffer *, char *, unsigned int)
Definition: buffer_get.c:50
void buffer_init(buffer *, int(*)(), int, char *, unsigned int)
Definition: buffer.c:5
unsigned int
Definition: stralloc.h:10
struct buffer buffer
unsigned int n
Definition: buffer.h:9
int buffer_flush(buffer *)
Definition: buffer_put.c:25
buffer * buffer_1
Definition: buffer_1.c:7