~ubuntu-branches/ubuntu/feisty/syslog-ng/feisty-updates

« back to all changes in this revision

Viewing changes to src/macros-gperf.c

  • Committer: Bazaar Package Importer
  • Author(s): Magosányi Árpád (mag)
  • Date: 2004-03-13 18:35:37 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20040313183537-g0fsc2j2y1wbxage
Tags: 1.6.2-3
* changed manpage to better reflect -v. Closes: #228377
* fixed build-depends, hopefully correctly now:( Closes: #237668

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* ANSI-C code produced by gperf version 2.7.2 */
 
2
/* Command-line: gperf -LANSI-C -t -c -l -k1,3,5 -N find_macro  */
 
3
#include "macros.h"
 
4
struct macro_def { char *name; int id; int len; };
 
5
 
 
6
#define TOTAL_KEYWORDS 51
 
7
#define MIN_WORD_LENGTH 2
 
8
#define MAX_WORD_LENGTH 13
 
9
#define MIN_HASH_VALUE 2
 
10
#define MAX_HASH_VALUE 140
 
11
/* maximum key range = 139, duplicates = 0 */
 
12
 
 
13
#ifdef __GNUC__
 
14
__inline
 
15
#else
 
16
#ifdef __cplusplus
 
17
inline
 
18
#endif
 
19
#endif
 
20
static unsigned int
 
21
hash (register const char *str, register unsigned int len)
 
22
{
 
23
  static unsigned char asso_values[] =
 
24
    {
 
25
      141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
 
26
      141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
 
27
      141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
 
28
      141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
 
29
      141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
 
30
      141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
 
31
      141, 141, 141, 141, 141,  55, 141,  22,  60,   0,
 
32
        0,  35,  10,  15, 141, 141,   0,  11,  25,   5,
 
33
       25, 141,  50,   0,   0,  10,  15,   0, 141,  25,
 
34
      141, 141, 141, 141, 141,   0, 141, 141, 141, 141,
 
35
      141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
 
36
      141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
 
37
      141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
 
38
      141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
 
39
      141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
 
40
      141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
 
41
      141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
 
42
      141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
 
43
      141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
 
44
      141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
 
45
      141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
 
46
      141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
 
47
      141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
 
48
      141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
 
49
      141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
 
50
      141, 141, 141, 141, 141, 141
 
51
    };
 
52
  register int hval = len;
 
53
 
 
54
  switch (hval)
 
55
    {
 
56
      default:
 
57
      case 5:
 
58
        hval += asso_values[(unsigned char)str[4]];
 
59
      case 4:
 
60
      case 3:
 
61
        hval += asso_values[(unsigned char)str[2]];
 
62
      case 2:
 
63
      case 1:
 
64
        hval += asso_values[(unsigned char)str[0]];
 
65
        break;
 
66
    }
 
67
  return hval;
 
68
}
 
69
 
 
70
#ifdef __GNUC__
 
71
__inline
 
72
#endif
 
73
struct macro_def *
 
74
find_macro (register const char *str, register unsigned int len)
 
75
{
 
76
  static unsigned char lengthtable[] =
 
77
    {
 
78
       0,  0,  2,  0,  4,  0,  0,  0,  0,  9, 10,  0,  0,  8,
 
79
       4, 10,  0,  0,  8,  9,  5,  0,  0, 13,  4,  3,  6,  5,
 
80
       0,  9,  8,  0,  0,  8,  0, 10,  0,  0,  3,  3,  8,  5,
 
81
       0,  7,  0,  0,  0,  0,  0,  3,  0,  5,  0,  0,  4,  0,
 
82
       0,  0,  0,  9, 10,  0,  0,  0,  4, 10,  6,  7,  8,  0,
 
83
       0,  0,  0,  7,  0,  0,  6,  5,  0,  9,  0,  0,  7,  0,
 
84
       4, 10,  6,  7,  3,  0,  5,  5,  0,  7,  0,  0,  0,  0,
 
85
       8,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
 
86
       0,  0,  0,  0,  6,  0,  0,  0,  0,  0,  0,  0,  0,  0,
 
87
       0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  6,  0,  0,  0,
 
88
       5
 
89
    };
 
90
  static struct macro_def wordlist[] =
 
91
    {
 
92
      {""}, {""},
 
93
      {"TZ", M_TZ},
 
94
      {""},
 
95
      {"S_TZ", M_TZ_STAMP},
 
96
      {""}, {""}, {""}, {""},
 
97
      {"S_WEEKDAY", M_WEEKDAY_STAMP},
 
98
      {"S_FULLDATE", M_FULLDATE_STAMP},
 
99
      {""}, {""},
 
100
      {"TZOFFSET", M_TZOFFSET},
 
101
      {"HOST", M_HOST},
 
102
      {"S_TZOFFSET", M_TZOFFSET_STAMP},
 
103
      {""}, {""},
 
104
      {"FULLHOST", M_FULLHOST},
 
105
      {"HOST_FROM", M_HOST_FROM},
 
106
      {"LEVEL", M_LEVEL},
 
107
      {""}, {""},
 
108
      {"FULLHOST_FROM", M_FULLHOST_FROM},
 
109
      {"HOUR", M_HOUR},
 
110
      {"SEC", M_SEC},
 
111
      {"S_HOUR", M_HOUR_STAMP},
 
112
      {"S_SEC", M_SEC_STAMP},
 
113
      {""},
 
114
      {"S_ISODATE", M_ISODATE_STAMP},
 
115
      {"FACILITY", M_FACILITY},
 
116
      {""}, {""},
 
117
      {"UNIXTIME", M_UNIXTIME},
 
118
      {""},
 
119
      {"S_UNIXTIME", M_UNIXTIME_STAMP},
 
120
      {""}, {""},
 
121
      {"TAG", M_TAG},
 
122
      {"MIN", M_MIN},
 
123
      {"SOURCEIP", M_SOURCE_IP},
 
124
      {"S_MIN", M_MIN_STAMP},
 
125
      {""},
 
126
      {"S_MONTH", M_MONTH_STAMP},
 
127
      {""}, {""}, {""}, {""}, {""},
 
128
      {"MSG", M_MESSAGE},
 
129
      {""},
 
130
      {"MONTH", M_MONTH},
 
131
      {""}, {""},
 
132
      {"R_TZ", M_TZ_RECVD},
 
133
      {""}, {""}, {""}, {""},
 
134
      {"R_WEEKDAY", M_WEEKDAY_RECVD},
 
135
      {"R_FULLDATE", M_FULLDATE_RECVD},
 
136
      {""}, {""}, {""},
 
137
      {"DATE", M_DATE},
 
138
      {"R_TZOFFSET", M_TZOFFSET_RECVD},
 
139
      {"S_DATE", M_DATE_STAMP},
 
140
      {"WEEKDAY", M_WEEKDAY},
 
141
      {"FULLDATE", M_FULLDATE},
 
142
      {""}, {""}, {""}, {""},
 
143
      {"MESSAGE", M_MESSAGE},
 
144
      {""}, {""},
 
145
      {"R_HOUR", M_HOUR_RECVD},
 
146
      {"R_SEC", M_SEC_RECVD},
 
147
      {""},
 
148
      {"R_ISODATE", M_ISODATE_RECVD},
 
149
      {""}, {""},
 
150
      {"ISODATE", M_ISODATE},
 
151
      {""},
 
152
      {"YEAR", M_YEAR},
 
153
      {"R_UNIXTIME", M_UNIXTIME_RECVD},
 
154
      {"S_YEAR", M_YEAR_STAMP},
 
155
      {"PROGRAM", M_PROGRAM},
 
156
      {"DAY", M_DAY},
 
157
      {""},
 
158
      {"S_DAY", M_DAY_STAMP},
 
159
      {"R_MIN", M_MIN_RECVD},
 
160
      {""},
 
161
      {"R_MONTH", M_MONTH_RECVD},
 
162
      {""}, {""}, {""}, {""},
 
163
      {"PRIORITY", M_LEVEL},
 
164
      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
165
      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
166
      {"R_DATE", M_DATE_RECVD},
 
167
      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
168
      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
169
      {""},
 
170
      {"R_YEAR", M_YEAR_RECVD},
 
171
      {""}, {""}, {""},
 
172
      {"R_DAY", M_DAY_RECVD}
 
173
    };
 
174
 
 
175
  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
 
176
    {
 
177
      register int key = hash (str, len);
 
178
 
 
179
      if (key <= MAX_HASH_VALUE && key >= 0)
 
180
        if (len == lengthtable[key])
 
181
          {
 
182
            register const char *s = wordlist[key].name;
 
183
 
 
184
            if (*str == *s && !memcmp (str + 1, s + 1, len - 1))
 
185
              return &wordlist[key];
 
186
          }
 
187
    }
 
188
  return 0;
 
189
}