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