iobuf/common.h

00001 #ifndef IO_BUF__COMMON__H__
00002 #define IO_BUF__COMMON__H__
00003 
00004 #include <fcntl.h>
00005 
00006 #define LF ((char)10)
00007 #define CR ((char)13)
00008 #define CRLF "\015\012"
00009 
00010 struct str;
00011 
00025 #define IOBUF_EOF 1
00026 
00027 #define IOBUF_ERROR 2
00028 
00029 #define IOBUF_TIMEOUT 4
00030 
00031 #define IOBUF_BADFLAGS 0xf
00032 
00033 #define IOBUF_SEEKABLE 0x10
00034 
00035 #define IOBUF_NEEDSCLOSE 0x20
00036 
00037 #define IOBUF_NEEDSFREE 0x40
00038 
00039 #define IOBUF_NEEDSMUNMAP 0x80
00040 extern unsigned iobuf_bufsize;
00041 
00048 struct iobuf
00049 {
00051   int fd;
00053   char* buffer;
00055   unsigned bufsize;
00057   unsigned buflen;
00059   unsigned bufstart;
00061   unsigned offset;
00063   unsigned timeout;
00065   unsigned flags;
00067   int errnum;
00068 };
00069 typedef struct iobuf iobuf;
00070 
00072 #define IOBUF_SET_ERROR(io) \
00073 do{ \
00074   io->flags |= IOBUF_ERROR; \
00075   io->errnum = errno; \
00076   return 0; \
00077 }while(0)
00078 
00079 int iobuf_init(iobuf* io, int fd, unsigned bufsize, char* buffer,
00080                unsigned flags);
00081 int iobuf_close(iobuf* io);
00083 #define iobuf_closed(io) ((io)->fd == -1)
00084 
00085 #define iobuf_error(io) ((io)->flags & IOBUF_ERROR)
00086 
00087 #define iobuf_timedout(io) ((io)->flags & IOBUF_TIMEOUT)
00088 
00089 #define iobuf_bad(io) ((io)->flags & IOBUF_BADFLAGS)
00090 int iobuf_timeout(iobuf* io, int poll_out);
00095 #endif

Generated on Thu Feb 19 11:11:50 2009 for bglibs by  doxygen 1.5.4