Mercurial > syslog2iptables
annotate src/tokenizer.h @ 58:b45dddebe8fc
Add exponential increase in penalty for repeat offenders
author | Carl Byington <carl@five-ten-sg.com> |
---|---|
date | Tue, 10 Jun 2014 08:48:53 -0700 |
parents | ba0259c9e411 |
children |
rev | line source |
---|---|
36 | 1 /* |
1 | 2 |
36 | 3 Copyright (c) 2007 Carl Byington - 510 Software Group, released under |
4 the GPL version 3 or any later version at your choice available at | |
5 http://www.gnu.org/licenses/gpl-3.0.txt | |
6 | |
7 */ | |
1 | 8 |
9 using namespace std; | |
10 | |
11 struct ltstr { | |
48
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@five-ten-sg.com>
parents:
36
diff
changeset
|
12 bool operator()(const char* s1, const char* s2) const { |
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@five-ten-sg.com>
parents:
36
diff
changeset
|
13 return strcmp(s1, s2) < 0; |
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@five-ten-sg.com>
parents:
36
diff
changeset
|
14 } |
1 | 15 }; |
16 | |
48
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@five-ten-sg.com>
parents:
36
diff
changeset
|
17 typedef list<ifstream *> stream_list; |
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@five-ten-sg.com>
parents:
36
diff
changeset
|
18 typedef list<const char *> string_list; |
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@five-ten-sg.com>
parents:
36
diff
changeset
|
19 typedef set<const char *, ltstr> string_set; |
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@five-ten-sg.com>
parents:
36
diff
changeset
|
20 typedef list<int> line_list; |
1 | 21 |
22 class TOKEN { | |
48
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@five-ten-sg.com>
parents:
36
diff
changeset
|
23 stream_list streams; |
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@five-ten-sg.com>
parents:
36
diff
changeset
|
24 string_list filenames; |
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@five-ten-sg.com>
parents:
36
diff
changeset
|
25 string_set filenamess; |
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@five-ten-sg.com>
parents:
36
diff
changeset
|
26 line_list linenumbers; |
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@five-ten-sg.com>
parents:
36
diff
changeset
|
27 string_list pending_tokens; |
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@five-ten-sg.com>
parents:
36
diff
changeset
|
28 string_set *include_files; |
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@five-ten-sg.com>
parents:
36
diff
changeset
|
29 bool pushed; |
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@five-ten-sg.com>
parents:
36
diff
changeset
|
30 u_char pushed_char; |
1 | 31 |
48
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@five-ten-sg.com>
parents:
36
diff
changeset
|
32 void pop(); |
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@five-ten-sg.com>
parents:
36
diff
changeset
|
33 bool next_char(u_char &c); |
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@five-ten-sg.com>
parents:
36
diff
changeset
|
34 void push_char(u_char c); |
1 | 35 |
36 public: | |
48
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@five-ten-sg.com>
parents:
36
diff
changeset
|
37 TOKEN(const char *fn, string_set *includes); |
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@five-ten-sg.com>
parents:
36
diff
changeset
|
38 ~TOKEN(); |
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@five-ten-sg.com>
parents:
36
diff
changeset
|
39 bool include(const char *fn); |
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@five-ten-sg.com>
parents:
36
diff
changeset
|
40 const char *next(); // return next token |
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@five-ten-sg.com>
parents:
36
diff
changeset
|
41 int nextint(); |
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@five-ten-sg.com>
parents:
36
diff
changeset
|
42 void skipeol(); // skip to eol |
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@five-ten-sg.com>
parents:
36
diff
changeset
|
43 void push(const char *token) {pending_tokens.push_front(token);}; |
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@five-ten-sg.com>
parents:
36
diff
changeset
|
44 const char *cur_fn() {return filenames.empty() ? "" : filenames.front();}; |
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@five-ten-sg.com>
parents:
36
diff
changeset
|
45 int cur_line() {return linenumbers.empty() ? 0 : linenumbers.front();}; |
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@five-ten-sg.com>
parents:
36
diff
changeset
|
46 void token_error(const char *err); |
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@five-ten-sg.com>
parents:
36
diff
changeset
|
47 void token_error(const char *fmt, int d, const char *s); |
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@five-ten-sg.com>
parents:
36
diff
changeset
|
48 void token_error(const char *fmt, const char *t, const char *h); |
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@five-ten-sg.com>
parents:
36
diff
changeset
|
49 void token_error(const char *want, const char *have); |
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@five-ten-sg.com>
parents:
36
diff
changeset
|
50 void token_error(); |
1 | 51 }; |
52 |