Mercurial > libpst
view src/vbuf.h @ 118:0f1492b7fe8b
patch from Fridrich Strba for building on mingw and general cleanup of autoconf files
add processing for pst files of type 0x0f
start adding support for properly building and installing libpst.so and the header files required to use it.
remove version.h since the version number is now in config.h
more const correctness issues regarding getopt()
author | Carl Byington <carl@five-ten-sg.com> |
---|---|
date | Sat, 31 Jan 2009 12:12:36 -0800 |
parents | ed2a260bbb98 |
children | 6395ced2b8b2 |
line wrap: on
line source
/* vbuf.h - variable length buffer functions * * Functions that try to make dealing with buffers easier. * * vbuf * * vstr * - should always contain a valid string * */ #ifndef VBUF_H #define VBUF_H #define SZ_MAX 4096 #include <stdlib.h> #include <stdio.h> #include <stdarg.h> /***************************************************/ // Variable-length buffers struct varbuf { size_t dlen; //length of data stored in buffer size_t blen; //length of buffer char *buf; //buffer char *b; //start of stored data }; // The exact same thing as a varbuf but should always contain at least '\0' struct varstr { size_t dlen; //length of data stored in buffer size_t blen; //length of buffer char *buf; //buffer char *b; //start of stored data }; typedef struct varbuf vbuf; typedef struct varstr vstr; #define VBUF_STATIC(x,y) static vbuf *x = NULL; if(!x) x = vballoc(y); #define VSTR_STATIC(x,y) static vstr *x = NULL; if(!x) x = vsalloc(y); int skip_nl( char *s ); // returns the width of the newline at s[0] int find_nl( vstr *vs ); // find newline of type type in b // vbuf functions struct varbuf *vballoc( size_t len ); void vbfree( vbuf *vb ); void vbclear( vbuf *vb ); //ditch the data, keep the buffer void vbresize( vbuf *vb, size_t len ); size_t vbavail( vbuf *vb ); void vbdump( vbuf *vb ); void vbgrow( vbuf *vb, size_t len ); // grow buffer by len bytes, data are preserved void vbset( vbuf *vb, void *data, size_t len ); void vbskipws( vbuf *vb ); void vbappend( vbuf *vb, void *data, size_t length ); void vbskip( vbuf *vb, size_t skip ); void vboverwrite( vbuf *vbdest, vbuf *vbsrc ); // vstr functions vstr *vsalloc( size_t len ); char *vsb( vstr *vs ); size_t vslen( vstr *vs ); //strlen void vsfree( vstr *vs ); void vsset( vstr *vs, char *s ); // Store string s in vb void vsnset( vstr *vs, char *s, size_t n ); // Store string s in vb void vsgrow( vstr *vs, size_t len ); // grow buffer by len bytes, data are preserved size_t vsavail( vstr *vs ); void vscat( vstr *vs, char *str ); void vsncat( vstr *vs, char *str, size_t len ); void vsnprepend( vstr *vs, char *str, size_t len ) ; void vsskip( vstr *vs, size_t len ); int vscmp( vstr *vs, char *str ); void vsskipws( vstr *vs ); void vs_printf( vstr *vs, char *fmt, ... ); void vs_printfa( vstr *vs, char *fmt, ... ); void vshexdump( vstr *vs, const char *b, size_t start, size_t stop, int ascii ); int vscatprintf( vstr *vs, char *fmt, ... ); void vsvprintf( vstr *vs, char *fmt, va_list ap ); void vstrunc( vstr *vs, size_t off ); // Drop chars [off..dlen] int vslast( vstr *vs ); // returns the last character stored in a vstr string void vscharcat( vstr *vs, int ch ); void unicode_init(); void unicode_close(); size_t vb_utf16to8(vbuf *dest, const char *inbuf, int iblen); size_t vb_utf8to8bit(vbuf *dest, const char *inbuf, int iblen, const char* charset); int vb_skipline( struct varbuf *vb ); // in: vb->b == "stuff\nmore_stuff"; out: vb->b == "more_stuff" #endif