1 /*
2     AWFFull - A Webalizer Fork, Full o' features
3 
4     linklist.h
5         definitions for dealing with linked lists in awffull
6 
7     Copyright (C) 1997-2001  Bradford L. Barrett (brad@mrunix.net)
8     Copyright (C) 2006, 2008 by Stephen McInerney (spm@stedee.id.au)
9 
10     This file is part of AWFFull.
11 
12     AWFFull is free software: you can redistribute it and/or modify
13     it under the terms of the GNU General Public License as published by
14     the Free Software Foundation, either version 3 of the License, or
15     (at your option) any later version.
16 
17     AWFFull is distributed in the hope that it will be useful,
18     but WITHOUT ANY WARRANTY; without even the implied warranty of
19     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20     GNU General Public License for more details.
21 
22     You should have received a copy of the GNU General Public License
23     along with AWFFull.  If not, see <http://www.gnu.org/licenses/>.
24 
25 */
26 
27 #ifndef AWFFULL_LINKLIST_H
28 #define AWFFULL_LINKLIST_H
29 
30 #include <limits.h>
31 
32 #define LARGE 32767                             /* A really big number for dealing with B-M-H */
33 
34 struct nlist {
35     char string[80];                            /* list struct for HIDE & GROUP items   */
36     char name[80];
37     size_t length;
38     int last[UCHAR_MAX + 1];
39     int HorspoolSkip2;
40     bool wildcard_start;
41     bool wildcard_end;
42     unsigned long matched;                      /* how often have this entry matched? */
43     struct nlist *next;
44 };
45 typedef struct nlist *LISTPTR;
46 
47 extern LISTPTR group_sites;                     /* "group" lists            */
48 extern LISTPTR group_urls;
49 extern LISTPTR group_refs;
50 extern LISTPTR group_agents;
51 extern LISTPTR group_users;
52 extern LISTPTR hidden_sites;                    /* "hidden" lists           */
53 extern LISTPTR hidden_urls;
54 extern LISTPTR hidden_refs;
55 extern LISTPTR hidden_agents;
56 extern LISTPTR hidden_users;
57 extern LISTPTR ignored_sites;                   /* "Ignored" lists          */
58 extern LISTPTR ignored_urls;
59 extern LISTPTR ignored_refs;
60 extern LISTPTR ignored_agents;
61 extern LISTPTR ignored_users;
62 extern LISTPTR include_sites;                   /* "Include" lists          */
63 extern LISTPTR include_urls;
64 extern LISTPTR include_refs;
65 extern LISTPTR include_agents;
66 extern LISTPTR include_users;
67 extern LISTPTR index_alias;                     /* index. aliases            */
68 extern LISTPTR html_pre;                        /* before anything else :)   */
69 extern LISTPTR html_head;                       /* top HTML code             */
70 extern LISTPTR html_body;                       /* body HTML code            */
71 extern LISTPTR html_post;                       /* middle HTML code          */
72 extern LISTPTR html_tail;                       /* tail HTML code            */
73 extern LISTPTR html_end;                        /* after everything else     */
74 extern LISTPTR page_type;                       /* page view types           */
75 extern LISTPTR not_page_type;                   /* NOT page view types       */
76 extern LISTPTR search_list;                     /* Search engine list        */
77 extern LISTPTR assign_country;                  /* Assign Address to Country */
78 
79 extern LISTPTR seg_countries;                   /* Segment by Countries     */
80 extern LISTPTR seg_referers;                    /* Segment by Referers     */
81 
82 extern char *isinlist(LISTPTR, char *);         /* scan list for str   */
83 
84 extern int add_list_member(char *, LISTPTR *, bool);    /* add group list item */
85 extern void show_matched(LISTPTR, char *);
86 
87 #endif          /* AWFFULL_LINKLIST_H */
88