1 /*================================================================ 2 * utility routines 3 *================================================================*/ 4 5 #ifndef UTIL_H_DEF 6 #define UTIL_H_DEF 7 8 #ifndef TRUE 9 #define TRUE 1 10 #endif 11 #ifndef FALSE 12 #define FALSE 0 13 #endif 14 15 #define numberof(ary) (sizeof(ary)/sizeof(ary[0])) 16 #ifndef offsetof 17 #define offsetof(s_type,field) ((int)(((char*)(&(((s_type*)NULL)->field)))-((char*)NULL))) 18 #endif 19 20 #define BITON(var,flag) ((var) |= (flag)) 21 #define BITOFF(var,flag) ((var) &= ~(flag)) 22 #define BITSWT(var,flag) ((var) ^= (flag)) 23 24 extern int verbose, debug; 25 #define DEBUG(LVL,XXX) {if (verbose > LVL) { XXX; }} 26 27 /* cmpopen.c */ 28 int CmpSearchFile(char *name); 29 char *CmpExtension(int type); 30 FILE *CmpOpenFile(char *name, int *flag); 31 void CmpCloseFile(FILE *fp, int flag); 32 33 /* malloc.c */ 34 void *safe_malloc(int size); 35 void safe_free(void *ptr); 36 37 /* signal.c */ 38 void add_signal(int sig, void (*handler)(), int exit_after); 39 40 /* fskip.c */ 41 void fskip(int size, FILE *fd, int seekable); 42 43 #endif 44