1 /* 2 * $Id: tools.h,v 1.12 2005/08/10 19:45:50 mitry Exp $ 3 * 4 * $Log: tools.h,v $ 5 * Revision 1.12 2005/08/10 19:45:50 mitry 6 * Added param to qscandir() to return full path with file name 7 * 8 * Revision 1.11 2005/05/17 18:17:42 mitry 9 * Removed system basename() usage. 10 * Added qbasename() implementation. 11 * 12 * Revision 1.10 2005/05/16 11:20:13 mitry 13 * Updated function prototypes. Changed code a bit. 14 * 15 * Revision 1.9 2005/05/06 20:48:55 mitry 16 * Misc code cleanup 17 * 18 * Revision 1.8 2005/04/14 18:04:26 mitry 19 * Changed scandir() to qscandir() 20 * 21 * Revision 1.7 2005/04/05 09:33:41 mitry 22 * Update write_debug_log() prototype 23 * 24 * Revision 1.6 2005/03/31 19:40:38 mitry 25 * Update function prototypes and it's duplication 26 * 27 */ 28 29 #ifndef __TOOLS_H__ 30 #define __TOOLS_H__ 31 32 #define EXT_OK 0 33 #define EXT_DID_WORK 1 34 #define EXT_YOURSELF 2 35 36 #define C_INT 1 37 #define C_STR 2 38 #define C_ADDR 3 39 #define C_ADRSTR 4 40 #define C_PATH 5 41 #define C_YESNO 6 42 #define C_ADDRL 7 43 #define C_ADRSTRL 8 44 #define C_STRL 9 45 #define C_OCT 10 46 47 typedef struct _cfgitem_t { 48 slist_t *condition; 49 union { 50 int v_int; 51 char *v_char; 52 falist_t *v_al; 53 faslist_t *v_fasl; 54 slist_t *v_sl; 55 } value; 56 struct _cfgitem_t *next; 57 } cfgitem_t; 58 59 typedef struct { 60 char *keyword; 61 int type, flags; 62 cfgitem_t *items; 63 char *def_val; 64 } cfgstr_t; 65 66 extern char *sigs[]; 67 68 void recode_to_remote(char *); 69 void recode_to_local(char *); 70 char *mappath(const char *); 71 char *mapname(char *, char *, size_t); 72 char *qbasename(const char *); 73 int hexdcd(char, char); 74 char *qver(int); 75 unsigned 76 long sequencer(void); 77 off_t filesize(const char *); 78 int lunlink(const char *); 79 int lockpid(const char *); 80 int islocked(const char *); 81 82 FILE *mdfopen(char *, const char *); 83 int fexist(const char *); 84 int mkdirs(char *); 85 void rmdirs(char *); 86 int qalphasort(const void *, const void *); 87 int qscandir(const char *, char ***, int, 88 int (*)(const char *), int (*)(const void *, const void *)); 89 int fmatchcase(const char *, char ***); 90 char *fnc(char *); 91 int isdos83name(char *); 92 size_t getfreespace(const char *); 93 void to_dev_null(void); 94 int randper(int, int); 95 int execsh(const char *); 96 int execnowait(const char *, const char *, const char *, const char *); 97 void qsleep(int); 98 99 100 /* config.c */ 101 int cfgi(int); 102 char *cfgs(int); 103 slist_t *cfgsl(int); 104 faslist_t *cfgfasl(int); 105 falist_t *cfgal(int); 106 int readconfig(const char *); 107 void rereadconfig(int); 108 void killconfig(void); 109 #ifdef NEED_DEBUG 110 void dumpconfig(void); 111 #endif 112 113 114 /* log.c */ 115 extern void (*log_callback)(const char *str); 116 117 int log_init(const char *, const char *); 118 void vwrite_log(const char *, int); 119 void write_log(const char *, ...); 120 121 #ifdef NEED_DEBUG 122 extern int facilities_levels[256]; 123 124 void parse_log_levels(void); 125 void write_debug_log(unsigned char, int, const char *, ...); 126 127 #ifdef __GNUC__ 128 #define DEBUG(all) __DEBUG all 129 #define __DEBUG(F,L,A...) do { if(facilities_levels[(unsigned char)(F)]>=(L)) write_debug_log((unsigned char)(F),(L),##A); } while(0) 130 #else 131 #define DEBUG(all) write_debug_log all 132 #endif 133 #else 134 #define DEBUG(all) 135 #endif 136 137 void log_done(void); 138 139 int chatlog_init(const char *, const ftnaddr_t *, int); 140 void chatlog_write(const char *, int); 141 void chatlog_done(void); 142 143 144 /* main.c */ 145 RETSIGTYPE sigerr(int); 146 void stopit(int); 147 148 /* daemon.c */ 149 void daemon_mode(void); 150 151 /* flagexp.y */ 152 int flagexp(slist_t *, int); 153 154 #endif 155