1 #ifndef __UTIL__H
2 #define __UTIL__H
3 #include <errno.h>
4 #include <sys/types.h>
5 #include <inttypes.h>
6 
7 #define DIE(msg) die(__FILE__, __LINE__, msg, 0)
8 #define SYSDIE(msg) die(__FILE__, __LINE__, msg, errno)
9 #define DIE_UNLESS(expr) (void)((expr) || die(__FILE__, __LINE__, #expr, 0))
10 
11 #if !WIN32
12 typedef int64_t _int64;
13 typedef int32_t  _int32;
14 typedef int16_t _int16;
15 typedef int8_t _int8;
16 #endif
17 _int64 htonll( _int64 src);
18 _int64 ntohll( _int64 src);
19 
20 /* SHIFT Macros */
21 #define SHIFT_INT64(ptr,nboll,llval) \
22     (nboll=htonll(llval), memcpy(ptr,&nboll, sizeof(_int64)), ptr+=sizeof(_int64))
23 #define SHIFT_INT32(ptr,nbo,ival) \
24     (nbo=htonl(ival), memcpy(ptr,&nbo,sizeof(int32_t)), ptr+=sizeof(int32_t))
25 #define SHIFT_INT16(ptr,nbo,hval) \
26     (nbo=htonl(hval), memcpy(ptr,&nbo,sizeof(int16_t)), ptr+=sizeof(int16_t))
27 #define SHIFT_BYTE(ptr,ival) ((*ptr = ival), ptr++)
28 
29 /* UNSHIFT Macros */
30 #define UNSHIFT_INT64(ptr,nboll,llval) \
31     (memcpy(&nboll,ptr,sizeof(_int64)), llval=ntohll(nboll), ptr+=sizeof(_int64))
32 #define UNSHIFT_INT32(ptr,nbo,ival) \
33     (memcpy(&nbo,ptr,sizeof(int32_t)), ival=ntohl(nbo), ptr+=sizeof(int32_t))
34 #define UNSHIFT_INT16(ptr,nbo,hval) \
35     (memcpy(&nbo,ptr,sizeof(int16_t)), hval=ntohs(nbo), ptr+=sizeof(int16_t))
36 #define UNSHIFT_BYTE(ptr,ival) (ival = (*((unsigned char *)(ptr)),ptr++)
37 
38 void *btmalloc( size_t size);
39 void *btcalloc( size_t nmemb, size_t size);
40 void *btrealloc( void *buf, size_t size);
41 void btfree( void *buf);
42 
43 
44 char *bts_strerror( int err);
45 void bts_perror( int err, char *msg);
46 int die( char *file, int line, char *msg, int err);
47 int openPath( char *path, int flags);
48 int cacheopen( char *path, int flags, int mode);
49 void cacheclose( void);
50 void hexencode (const unsigned char *digest, int len, char *buf, int buflen);
51 int hexdecode (unsigned char *digest, int len, const char *buf, int buflen);
52 #if WIN32 || !HAVE_ON_EXIT
53 	typedef void (*exitfn_ptr) (int,void*);
54 	int on_exit( exitfn_ptr exitfn, void* data) ;
55 #endif
56 /*
57  #define malloc(s) use_btmalloc_instead
58  #define calloc(n,s) use_btcalloc_instead
59  #define realloc(p,s) use_btrealloc_instead
60 /*
61 #undef free
62 /*
63 #define free(p) use_btfree_instead
64 */
65 
66 void hexdump( void *buf, int buflen);
67 
68 #endif
69