blob.h revision 6017:7e310503019e
112027Sjungma@eit.uni-kl.de/* 212027Sjungma@eit.uni-kl.de * blob.h 312027Sjungma@eit.uni-kl.de * 412027Sjungma@eit.uni-kl.de * Binary blob handling. 512027Sjungma@eit.uni-kl.de * 612027Sjungma@eit.uni-kl.de * Copyright (c) 2002 Dug Song <dugsong@monkey.org> 712027Sjungma@eit.uni-kl.de * 812027Sjungma@eit.uni-kl.de * $Id: blob.h,v 1.2 2002/04/05 03:06:44 dugsong Exp $ 912027Sjungma@eit.uni-kl.de */ 1012027Sjungma@eit.uni-kl.de 1112027Sjungma@eit.uni-kl.de#ifndef DNET_BLOB_H 1212027Sjungma@eit.uni-kl.de#define DNET_BLOB_H 1312027Sjungma@eit.uni-kl.de 1412027Sjungma@eit.uni-kl.detypedef struct blob { 1512027Sjungma@eit.uni-kl.de u_char *base; /* start of data */ 1612027Sjungma@eit.uni-kl.de int off; /* offset into data */ 1712027Sjungma@eit.uni-kl.de int end; /* end of data */ 1812027Sjungma@eit.uni-kl.de int size; /* size of allocation */ 1912027Sjungma@eit.uni-kl.de} blob_t; 2012027Sjungma@eit.uni-kl.de 2112027Sjungma@eit.uni-kl.de__BEGIN_DECLS 2212027Sjungma@eit.uni-kl.deblob_t *blob_new(void); 2312027Sjungma@eit.uni-kl.de 2412027Sjungma@eit.uni-kl.deint blob_read(blob_t *b, void *buf, int len); 2512027Sjungma@eit.uni-kl.deint blob_write(blob_t *b, const void *buf, int len); 2612027Sjungma@eit.uni-kl.de 2712027Sjungma@eit.uni-kl.deint blob_seek(blob_t *b, int off, int whence); 2812027Sjungma@eit.uni-kl.de#define blob_skip(b, l) blob_seek(b, l, SEEK_CUR) 2912027Sjungma@eit.uni-kl.de#define blob_rewind(b) blob_seek(b, 0, SEEK_SET) 3012027Sjungma@eit.uni-kl.de 3112027Sjungma@eit.uni-kl.de#define blob_offset(b) ((b)->off) 3212027Sjungma@eit.uni-kl.de#define blob_left(b) ((b)->end - (b)->off) 3312027Sjungma@eit.uni-kl.de 3412027Sjungma@eit.uni-kl.deint blob_index(blob_t *b, const void *buf, int len); 3512027Sjungma@eit.uni-kl.deint blob_rindex(blob_t *b, const void *buf, int len); 3612027Sjungma@eit.uni-kl.de 3712027Sjungma@eit.uni-kl.deint blob_pack(blob_t *b, const char *fmt, ...); 3812027Sjungma@eit.uni-kl.deint blob_unpack(blob_t *b, const char *fmt, ...); 3912027Sjungma@eit.uni-kl.de 4012027Sjungma@eit.uni-kl.deint blob_insert(blob_t *b, const void *buf, int len); 4112027Sjungma@eit.uni-kl.deint blob_delete(blob_t *b, void *buf, int len); 4212027Sjungma@eit.uni-kl.de 4312027Sjungma@eit.uni-kl.deint blob_print(blob_t *b, char *style, int len); 4412027Sjungma@eit.uni-kl.de 4512027Sjungma@eit.uni-kl.deblob_t *blob_free(blob_t *b); 4612027Sjungma@eit.uni-kl.de 4712027Sjungma@eit.uni-kl.deint blob_register_alloc(size_t size, void *(*bmalloc)(size_t), 4812027Sjungma@eit.uni-kl.de void (*bfree)(void *), void *(*brealloc)(void *, size_t)); 4912027Sjungma@eit.uni-kl.de#ifdef va_start 5012027Sjungma@eit.uni-kl.detypedef int (*blob_fmt_cb)(int pack, int len, blob_t *b, va_list *arg); 5112027Sjungma@eit.uni-kl.de 5212027Sjungma@eit.uni-kl.deint blob_register_pack(char c, blob_fmt_cb fmt_cb); 5312027Sjungma@eit.uni-kl.de#endif 5412027Sjungma@eit.uni-kl.de__END_DECLS 5512027Sjungma@eit.uni-kl.de 5612027Sjungma@eit.uni-kl.de#endif /* DNET_BLOB_H */ 5712027Sjungma@eit.uni-kl.de