1 /* 2 * Copyright (C) 2000,2001 Florian Sander 3 * 4 * $Id: gseen.h (1.1.0) for AversE-XP v1.0+ 2003/12/06 [Xp-AvR] Exp $ 5 */ 6 7 // #define USE_MEMDEBUG 1 8 9 #define SEEN_JOIN 1 10 #define SEEN_PART 2 11 #define SEEN_SIGN 3 12 #define SEEN_NICK 4 13 #define SEEN_NCKF 5 14 #define SEEN_KICK 6 15 #define SEEN_SPLT 7 16 #define SEEN_REJN 8 17 #define SEEN_CHPT 9 18 #define SEEN_CHJN 10 19 20 typedef struct gseen_data { 21 int type; 22 char *nick; 23 char *host; 24 char *chan; 25 char *msg; 26 time_t when; 27 int spent; 28 } seendat; 29 30 typedef struct gseen_result { 31 struct gseen_result *next; 32 seendat *seen; 33 } gseenres; 34 35 typedef struct gseen_requests { 36 struct gseen_requests *next; 37 char *who; 38 char *host; 39 char *chan; 40 time_t when; 41 } seenreq_by; 42 43 typedef struct gseen_request { 44 struct gseen_request *next; 45 char *nick; 46 struct gseen_requests *by; 47 } seenreq; 48 49 typedef struct gseen_ignorewords { 50 struct gseen_ignorewords *next; 51 char *word; 52 } ignoredword; 53 54 #ifdef MAKING_GSEEN 55 static int gseen_expmem(); 56 static void free_gseen(); 57 static int get_spent(char *, char *); 58 static void write_seens(); 59 static void read_seens(); 60 static char *do_seen(char *, char *, char *, char *, int); 61 static void add_seenresult(seendat *); 62 static int expmem_seenresults(); 63 static void free_seenresults(); 64 static void sortresults(); 65 static char *do_seennick(seendat *); 66 static int onchan(char *, char *); 67 static char *handonchan(char *, char *); 68 static struct chanset_t *onanychan(char *); 69 static struct chanset_t *handonanychan(char *); 70 static char *do_seenstats(); 71 static void add_seenreq(char *, char *, char *, char *, time_t); 72 static int expmem_seenreq(); 73 static void free_seenreq(); 74 static void sortrequests(seenreq *); 75 static void report_seenreq(char *, char *); 76 static int count_seenreq(seenreq_by *b); 77 static int expmem_ignoredwords(); 78 static void free_ignoredwords(); 79 static void add_ignoredword(char *word); 80 static int word_is_ignored(char *word); 81 static void purge_seens(); 82 static int seenflood(); 83 static int secretchan(char *); 84 static int nopub(char *); 85 static int quietseen(char *); 86 static int quietaiseens(char *); 87 static int nolog(char *); 88 static void start_seentime_calc(); 89 static void end_seentime_calc(); 90 #endif 91 92 93 #ifdef MAKING_GSEEN 94 95 static void maskstricthost(const char *, char *); 96 #endif 97 98 #define WS_OK 0 99 #define WS_NORESULT 1 100 #define WS_NOPARAM 2 101 #define WS_NOWILDCARDS 3 102 #define WS_TOOLONGNICK 4 103 #define WS_TOOMANYMATCHES 5 104 #define WS_TOOLONGHOST 6 105 106 #ifndef MAKING_GSEEN 107 #define findseens ((gseenres *(*)(char *, int *, int))gseen_funcs[4]) 108 #define free_seenresults ((void (*)())gseen_funcs[5]) 109 #define gseen_duration ((char *(*)(int))gseen_funcs[6]) 110 #define numresults (*(int *)(gseen_funcs[12])) 111 #define fuzzy_search (*(int *)(gseen_funcs[13])) 112 #define numseens (*(int *)(gseen_funcs[15])) 113 #define glob_total_queries (*(int *)(gseen_funcs[16])) 114 #define glob_total_searchtime (*(double *)(gseen_funcs[17])) 115 #define gseen_numversion (*(int *)(gseen_funcs[19])) 116 #else 117 static gseenres *findseens(char *, int *, int); 118 static char *gseen_duration(int); 119 #endif 120 121 #ifdef MAKING_GSEEN 122 123 #ifdef malloc 124 #undef malloc 125 #endif 126 #ifdef free 127 #undef free 128 #endif 129 #ifdef realloc 130 #undef realloc 131 #endif 132 133 #ifdef USE_MEMDEBUG 134 #define my_malloc nmalloc 135 #define my_free nfree 136 #define my_realloc nrealloc 137 #else 138 #define my_malloc malloc 139 #define my_free free 140 #define my_realloc realloc 141 #endif 142 143 #endif 144