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