~ubuntu-branches/ubuntu/raring/gnats/raring

« back to all changes in this revision

Viewing changes to .pc/debian-changes/gnats/fconfig.c

  • Committer: Package Import Robot
  • Author(s): Christian Perrier
  • Date: 2012-01-01 15:31:21 UTC
  • Revision ID: package-import@ubuntu.com-20120101153121-he0rkktsowsr94xd
Tags: 4.1.0-2
* QA upload
* Modernize package:
  - Use 3.0 source format
  - Bump debhelper compatibility to 8
  - No leading article in package description
  - Drop antique directory transition handling in
    preinst. This allows dropping two awfully worded
    debconf templates. Yay.
  - Drop antique upgrade debconf note for v3->v4. Yay (bis).
  - Turn gnats/user_multiple debconnf note into an error
  - I was that close to remove the stupid debconf notes in
    this package. Note to self: do it for next QA upload.
* Debconf translations:
  - Danish (Joe Hansen).  Closes: #628232

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* A Bison parser, made from ./fconfig.y
 
2
   by GNU bison 1.35.  */
 
3
 
 
4
#define YYBISON 1  /* Identify Bison output.  */
 
5
 
 
6
#define yyparse fconfparse
 
7
#define yylex fconflex
 
8
#define yyerror fconferror
 
9
#define yylval fconflval
 
10
#define yychar fconfchar
 
11
#define yydebug fconfdebug
 
12
#define yynerrs fconfnerrs
 
13
# define        FIELD   257
 
14
# define        STRINGTYPE      258
 
15
# define        QDEFAULT        259
 
16
# define        MATCHING        260
 
17
# define        ENUM    261
 
18
# define        MULTIENUMTOK    262
 
19
# define        VALUES  263
 
20
# define        DEFAULT 264
 
21
# define        EXACT_REGEXP    265
 
22
# define        INEXACT_REGEXP  266
 
23
# define        ALL     267
 
24
# define        FORMAT  268
 
25
# define        ENUMSEPARATORSTOK       269
 
26
# define        MULTITEXTTYPE   270
 
27
# define        DATETYPE        271
 
28
# define        ENUM_IN_FILE    272
 
29
# define        MULTI_ENUM_IN_FILE      273
 
30
# define        PATHTOK 274
 
31
# define        FIELDSTOK       275
 
32
# define        KEYTOK  276
 
33
# define        QSTRING 277
 
34
# define        INTVAL  278
 
35
# define        TEXTSEARCH      279
 
36
# define        QUERYTOK        280
 
37
# define        FORMATTOK       281
 
38
# define        INDEXTOK        282
 
39
# define        SEPARATORTOK    283
 
40
# define        RESTRICTEDTOK   284
 
41
# define        NOSPACESTOK     285
 
42
# define        INTEGERTOK      286
 
43
# define        INPUTDEFAULTTOK 287
 
44
# define        BUILTINTOK      288
 
45
# define        ALLOWANYVALUETOK        289
 
46
# define        REQUIRETOK      290
 
47
# define        APPENDFIELDTOK  291
 
48
# define        SETFIELDTOK     292
 
49
# define        CHANGETOK       293
 
50
# define        DESCRIPTIONTOK  294
 
51
# define        INPUTTOK        295
 
52
# define        DATABASEINFOTOK 296
 
53
# define        DEBUGMODETOK    297
 
54
# define        KEEPRECTOK      298
 
55
# define        NOTIFYEXPTOK    299
 
56
# define        LIBEXECDIRTOK   300
 
57
# define        SUBMITTERACKTOK 301
 
58
# define        BUSINESSDAYTOK  302
 
59
# define        BUSINESSWEEKTOK 303
 
60
# define        CREATECATEGORYDIRSTOK   304
 
61
# define        FALSETOK        305
 
62
# define        TRUETOK 306
 
63
# define        MAILFORMATTOK   307
 
64
# define        TOADDRESSESTOK  308
 
65
# define        FROMADDRESSTOK  309
 
66
# define        REPLYTOTOK      310
 
67
# define        FIXEDTOK        311
 
68
# define        BODYTOK 312
 
69
# define        HEADERTOK       313
 
70
# define        AUDITTRAILFMTTOK        314
 
71
# define        ADDAUDITTRAILTOK        315
 
72
# define        REQUIRECHANGEREASONTOK  316
 
73
# define        READONLYTOK     317
 
74
# define        BINARYINDEXTOK  318
 
75
# define        RAWTOK  319
 
76
# define        BADTOK  320
 
77
# define        AUXFLAGSTOK     321
 
78
# define        PRLISTTOK       322
 
79
# define        MAXPRSTOK       323
 
80
# define        EDITONLYTOK     324
 
81
# define        VIRTUALFORMATTOK        325
 
82
# define        CATPERMSTOK     326
 
83
 
 
84
#line 1 "./fconfig.y"
 
85
 
 
86
#include "gnats.h"
 
87
#include "index.h"
 
88
#include "field.h"
 
89
  extern DatabaseInfo databaseBeingDefined;
 
90
  static FieldDef currField;
 
91
  static ChangeActions currChange;
 
92
  static FieldEdit *currEdit;
 
93
  static QueryFormat *qformat;
 
94
  static FieldList requiredFlds;
 
95
  static InputTemplate *inputTemplate;
 
96
  static MailMessageFormat mailFormat;
 
97
  IndexDesc indexEntry;
 
98
  static int badFile;
 
99
  struct qstring;
 
100
 
 
101
  extern char *takeQString (struct qstring *str);
 
102
  extern char *qStrVal (struct qstring *str);
 
103
 
 
104
#line 21 "./fconfig.y"
 
105
#ifndef YYSTYPE
 
106
typedef union {
 
107
  int intval;
 
108
  char *sval;
 
109
  struct qstring *qstr;
 
110
  AdmFieldDesc *adm_field_des;
 
111
  FieldList flist;
 
112
  StringList *stringlist;
 
113
  InputTemplate *inputlist;
 
114
  MailAddress *mailaddr;
 
115
  MailAddressList *mailaddrlist;
 
116
} yystype;
 
117
# define YYSTYPE yystype
 
118
# define YYSTYPE_IS_TRIVIAL 1
 
119
#endif
 
120
#ifndef YYDEBUG
 
121
# define YYDEBUG 0
 
122
#endif
 
123
 
 
124
 
 
125
 
 
126
#define YYFINAL         348
 
127
#define YYFLAG          -32768
 
128
#define YYNTBASE        77
 
129
 
 
130
/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */
 
131
#define YYTRANSLATE(x) ((unsigned)(x) <= 326 ? yytranslate[x] : 165)
 
132
 
 
133
/* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */
 
134
static const char yytranslate[] =
 
135
{
 
136
       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
137
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
138
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
139
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
140
       2,     2,     2,     2,     2,    75,     2,     2,     2,     2,
 
141
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
142
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
143
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
144
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
145
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
146
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
147
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
148
       2,     2,     2,    73,    76,    74,     2,     2,     2,     2,
 
149
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
150
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
151
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
152
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
153
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
154
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
155
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
156
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
157
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
158
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
159
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
160
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
161
       2,     2,     2,     2,     2,     2,     1,     3,     4,     5,
 
162
       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
 
163
      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
 
164
      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
 
165
      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
 
166
      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
 
167
      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
 
168
      66,    67,    68,    69,    70,    71,    72
 
169
};
 
170
 
 
171
#if YYDEBUG
 
172
static const short yyprhs[] =
 
173
{
 
174
       0,     0,     2,     4,    13,    18,    23,    24,    26,    28,
 
175
      31,    34,    37,    40,    43,    46,    51,    56,    59,    62,
 
176
      64,    66,    68,    69,    71,    74,    79,    84,    87,    89,
 
177
      92,    94,    96,    98,   100,   103,   105,   107,   110,   112,
 
178
     115,   118,   120,   126,   132,   134,   137,   142,   147,   152,
 
179
     157,   162,   167,   168,   171,   175,   179,   183,   185,   186,
 
180
     188,   191,   196,   201,   204,   207,   209,   212,   214,   216,
 
181
     219,   221,   227,   232,   234,   236,   237,   239,   241,   244,
 
182
     245,   249,   253,   254,   258,   261,   263,   266,   268,   271,
 
183
     273,   276,   281,   286,   288,   290,   293,   295,   298,   301,
 
184
     308,   313,   315,   317,   319,   322,   324,   327,   330,   333,
 
185
     335,   338,   340,   343,   346,   348,   350,   352,   355,   357,
 
186
     360,   362,   367,   369,   371,   374,   375,   377,   379,   382,
 
187
     387,   392,   395,   398,   401,   404,   406,   409,   412,   413,
 
188
     415,   417,   420,   425,   430,   432,   435,   437,   442,   447,
 
189
     449,   451,   453,   456,   459,   464,   469,   471,   473,   476,
 
190
     479,   482,   487,   492,   495,   496,   501,   506,   508,   511,
 
191
     516,   521,   523,   526,   528,   531,   536,   541,   544,   546,
 
192
     549,   551,   553,   558,   563,   568,   571,   574,   578,   582,
 
193
     584,   586,   589,   592,   594,   596,   600,   602
 
194
};
 
195
static const short yyrhs[] =
 
196
{
 
197
      78,     0,    80,     0,    79,    84,   127,   164,   151,    95,
 
198
     139,   145,     0,    42,    73,    81,    74,     0,    42,    73,
 
199
      80,    74,     0,     0,     1,     0,    82,     0,    81,    82,
 
200
       0,    43,    83,     0,    44,    83,     0,    45,    83,     0,
 
201
      46,    23,     0,    47,    83,     0,    48,    24,    75,    24,
 
202
       0,    49,    24,    75,    24,     0,    50,    83,     0,    72,
 
203
      23,     0,    51,     0,    52,     0,    85,     0,     0,    86,
 
204
       0,    85,    86,     0,    87,    73,    88,    74,     0,    87,
 
205
      73,    80,    74,     0,     3,    23,     0,    89,     0,    88,
 
206
      89,     0,    91,     0,   125,     0,   124,     0,    90,     0,
 
207
      71,   158,     0,    92,     0,    94,     0,    16,   109,     0,
 
208
      17,     0,    32,   109,     0,    68,   110,     0,     4,     0,
 
209
       4,     6,    73,    93,    74,     0,     4,     6,    73,    80,
 
210
      74,     0,    23,     0,    93,    23,     0,     7,    73,   112,
 
211
      74,     0,    18,    73,   117,    74,     0,    19,    73,   119,
 
212
      74,     0,     8,    73,   113,    74,     0,     7,    73,    80,
 
213
      74,     0,    18,    73,    80,    74,     0,     0,    95,    96,
 
214
       0,    98,   100,    74,     0,    98,   100,    74,     0,    39,
 
215
      99,    73,     0,    23,     0,     0,   101,     0,   100,   101,
 
216
       0,    36,    73,   102,    74,     0,    36,    73,    80,    74,
 
217
       0,    38,   104,     0,    37,   104,     0,    61,     0,    60,
 
218
     158,     0,    62,     0,   103,     0,   102,   103,     0,    23,
 
219
       0,   105,    73,   106,   107,    74,     0,   105,    73,    80,
 
220
      74,     0,    23,     0,    23,     0,     0,   108,     0,    23,
 
221
       0,   108,    23,     0,     0,    73,   121,    74,     0,    73,
 
222
      80,    74,     0,     0,    73,   111,    74,     0,    69,    24,
 
223
       0,   115,     0,   112,   115,     0,   114,     0,   113,   114,
 
224
       0,   115,     0,    15,    23,     0,     9,    73,   116,    74,
 
225
       0,     9,    73,    80,    74,     0,   121,     0,    23,     0,
 
226
     116,    23,     0,   118,     0,   117,   118,     0,    20,    23,
 
227
       0,    21,    73,   122,    74,    22,    23,     0,    21,    73,
 
228
      80,    74,     0,   121,     0,    35,     0,   120,     0,   117,
 
229
     120,     0,   118,     0,    15,    23,     0,    10,    23,     0,
 
230
      33,    23,     0,   123,     0,   122,   123,     0,    23,     0,
 
231
       5,    11,     0,     5,    12,     0,    25,     0,    30,     0,
 
232
      31,     0,    34,    23,     0,    97,     0,    40,    23,     0,
 
233
      63,     0,    67,    73,   126,    74,     0,    70,     0,    23,
 
234
       0,   126,    23,     0,     0,   128,     0,   129,     0,   128,
 
235
     129,     0,   130,    73,   131,    74,     0,   130,    73,    80,
 
236
      74,     0,    26,    23,     0,   132,   133,     0,   134,   132,
 
237
       0,    21,    13,     0,   136,     0,   135,   136,     0,   136,
 
238
     135,     0,     0,   134,     0,    65,     0,    27,    23,     0,
 
239
      21,    73,   137,    74,     0,    21,    73,    80,    74,     0,
 
240
     138,     0,   137,   138,     0,    23,     0,   140,    73,   141,
 
241
      74,     0,   140,    73,    80,    74,     0,    80,     0,    28,
 
242
       0,   142,     0,   141,   142,     0,    20,    23,     0,    21,
 
243
      73,   143,    74,     0,    21,    73,    80,    74,     0,   144,
 
244
       0,   138,     0,   143,   138,     0,    29,    23,     0,    64,
 
245
      83,     0,    41,    73,   146,    74,     0,    41,    73,    80,
 
246
      74,     0,   149,   147,     0,     0,    36,    73,   148,    74,
 
247
       0,    36,    73,    80,    74,     0,   138,     0,   148,   138,
 
248
       0,    21,    73,   150,    74,     0,    21,    73,    80,    74,
 
249
       0,    23,     0,   150,    23,     0,   152,     0,   151,   152,
 
250
       0,   153,    73,   154,    74,     0,   153,    73,    80,    74,
 
251
       0,    53,    23,     0,   155,     0,   154,   155,     0,   156,
 
252
       0,   157,     0,    54,    73,   160,    74,     0,    55,    73,
 
253
     161,    74,     0,    56,    73,   160,    74,     0,    58,   158,
 
254
       0,    59,   158,     0,   159,   131,    74,     0,   159,    80,
 
255
      74,     0,    73,     0,   161,     0,   160,   161,     0,    57,
 
256
      23,     0,   162,     0,   163,     0,   162,    76,   163,     0,
 
257
      23,     0,    60,   158,     0
 
258
};
 
259
 
 
260
#endif
 
261
 
 
262
#if YYDEBUG
 
263
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
 
264
static const short yyrline[] =
 
265
{
 
266
       0,    62,    63,    66,    69,    70,    71,    76,    78,    79,
 
267
      82,    85,    88,    91,    94,    97,   100,   103,   106,   111,
 
268
     112,   115,   116,   121,   122,   125,   128,   133,   148,   149,
 
269
     152,   153,   154,   155,   158,   164,   165,   166,   170,   174,
 
270
     178,   184,   187,   190,   193,   197,   203,   207,   212,   217,
 
271
     226,   227,   230,   231,   234,   240,   251,   260,   263,   268,
 
272
     269,   272,   273,   274,   278,   283,   286,   290,   295,   296,
 
273
     299,   307,   308,   311,   322,   327,   330,   334,   339,   346,
 
274
     347,   348,   351,   352,   355,   360,   361,   364,   365,   368,
 
275
     369,   374,   375,   376,   379,   383,   389,   390,   393,   396,
 
276
     423,   424,   425,   430,   431,   434,   435,   440,   443,   448,
 
277
     453,   460,   468,   471,   476,   479,   482,   485,   495,   496,
 
278
     499,   502,   505,   510,   514,   520,   521,   524,   525,   528,
 
279
     532,   538,   548,   549,   552,   553,   554,   555,   558,   559,
 
280
     562,   567,   572,   573,   576,   579,   585,   599,   603,   607,
 
281
     610,   615,   616,   619,   622,   623,   624,   627,   630,   635,
 
282
     638,   643,   644,   647,   652,   653,   656,   662,   665,   671,
 
283
     675,   680,   702,   729,   730,   733,   737,   743,   757,   758,
 
284
     761,   765,   769,   772,   775,   780,   783,   786,   787,   793,
 
285
     803,   808,   818,   823,   830,   833,   843,   849
 
286
};
 
287
#endif
 
288
 
 
289
 
 
290
#if (YYDEBUG) || defined YYERROR_VERBOSE
 
291
 
 
292
/* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */
 
293
static const char *const yytname[] =
 
294
{
 
295
  "$", "error", "$undefined.", "FIELD", "STRINGTYPE", "QDEFAULT", 
 
296
  "MATCHING", "ENUM", "MULTIENUMTOK", "VALUES", "DEFAULT", "EXACT_REGEXP", 
 
297
  "INEXACT_REGEXP", "ALL", "FORMAT", "ENUMSEPARATORSTOK", "MULTITEXTTYPE", 
 
298
  "DATETYPE", "ENUM_IN_FILE", "MULTI_ENUM_IN_FILE", "PATHTOK", 
 
299
  "FIELDSTOK", "KEYTOK", "QSTRING", "INTVAL", "TEXTSEARCH", "QUERYTOK", 
 
300
  "FORMATTOK", "INDEXTOK", "SEPARATORTOK", "RESTRICTEDTOK", "NOSPACESTOK", 
 
301
  "INTEGERTOK", "INPUTDEFAULTTOK", "BUILTINTOK", "ALLOWANYVALUETOK", 
 
302
  "REQUIRETOK", "APPENDFIELDTOK", "SETFIELDTOK", "CHANGETOK", 
 
303
  "DESCRIPTIONTOK", "INPUTTOK", "DATABASEINFOTOK", "DEBUGMODETOK", 
 
304
  "KEEPRECTOK", "NOTIFYEXPTOK", "LIBEXECDIRTOK", "SUBMITTERACKTOK", 
 
305
  "BUSINESSDAYTOK", "BUSINESSWEEKTOK", "CREATECATEGORYDIRSTOK", 
 
306
  "FALSETOK", "TRUETOK", "MAILFORMATTOK", "TOADDRESSESTOK", 
 
307
  "FROMADDRESSTOK", "REPLYTOTOK", "FIXEDTOK", "BODYTOK", "HEADERTOK", 
 
308
  "AUDITTRAILFMTTOK", "ADDAUDITTRAILTOK", "REQUIRECHANGEREASONTOK", 
 
309
  "READONLYTOK", "BINARYINDEXTOK", "RAWTOK", "BADTOK", "AUXFLAGSTOK", 
 
310
  "PRLISTTOK", "MAXPRSTOK", "EDITONLYTOK", "VIRTUALFORMATTOK", 
 
311
  "CATPERMSTOK", "'{'", "'}'", "'-'", "'|'", "config", "configEnts", 
 
312
  "databaseInfo", "parseError", "databaseInfoList", "databaseInfoEnt", 
 
313
  "booleanVal", "fieldDecStmt", "fieldDecList", "fieldDec", 
 
314
  "startFieldDec", "fieldDataList", "fieldData", "virtualFieldFormat", 
 
315
  "fieldDataType", "stringType", "regexpList", "enumType", 
 
316
  "globalChangeEnts", "globalChangeEnt", "changeClause", "changeHeader", 
 
317
  "optChangeExpr", "changeOpts", "changeOpt", "reqFieldNameList", 
 
318
  "reqFieldNameEnt", "fieldEditOpts", "fieldEditName", "fieldEditFormat", 
 
319
  "optFieldEditFieldList", "fieldEditFieldList", "optSimple", 
 
320
  "prListOpts", "prListOptList", "enumcontents", "multienumcontents", 
 
321
  "multiEnumItem", "enumItem", "enumValueList", "enumFileContents", 
 
322
  "enumFileItem", "multiEnumFileContents", "multiEnumFileItem", 
 
323
  "defaultFieldVal", "enumFieldList", "enumFieldMember", "queryDefault", 
 
324
  "miscOptions", "auxFlagsList", "optQueryList", "queryList", "query", 
 
325
  "queryBegin", "queryFmt", "queryFieldDesc", "optQueryOpts", "queryOpts", 
 
326
  "queryPrintf", "queryfields", "queryFieldsList", "FieldListMember", 
 
327
  "indexDescription", "indexheader", "indexlist", "indexEnt", 
 
328
  "indexFieldList", "indexSep", "inputDescription", "inputEnt", 
 
329
  "requiredFields", "requiredFieldsList", "inputFields", 
 
330
  "inputFieldsList", "mailFormatList", "mailFormat", "mailFormatHeader", 
 
331
  "mailFormatBody", "mailFormatEnt", "bodyFormat", "headerFormat", 
 
332
  "plainFormat", "plainFormatHeader", "mailAddressList", "mailAddress", 
 
333
  "mailAddressTries", "MailAddressMember", "auditTrailFmt", 0
 
334
};
 
335
#endif
 
336
 
 
337
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
 
338
static const short yyr1[] =
 
339
{
 
340
       0,    77,    77,    78,    79,    79,    79,    80,    81,    81,
 
341
      82,    82,    82,    82,    82,    82,    82,    82,    82,    83,
 
342
      83,    84,    84,    85,    85,    86,    86,    87,    88,    88,
 
343
      89,    89,    89,    89,    90,    91,    91,    91,    91,    91,
 
344
      91,    92,    92,    92,    93,    93,    94,    94,    94,    94,
 
345
      94,    94,    95,    95,    96,    97,    98,    99,    99,   100,
 
346
     100,   101,   101,   101,   101,   101,   101,   101,   102,   102,
 
347
     103,   104,   104,   105,   106,   107,   107,   108,   108,   109,
 
348
     109,   109,   110,   110,   111,   112,   112,   113,   113,   114,
 
349
     114,   115,   115,   115,   116,   116,   117,   117,   118,   118,
 
350
     118,   118,   118,   119,   119,   120,   120,   121,   121,   122,
 
351
     122,   123,   124,   124,   125,   125,   125,   125,   125,   125,
 
352
     125,   125,   125,   126,   126,   127,   127,   128,   128,   129,
 
353
     129,   130,   131,   131,   132,   132,   132,   132,   133,   133,
 
354
     134,   135,   136,   136,   137,   137,   138,   139,   139,   139,
 
355
     140,   141,   141,   142,   142,   142,   142,   143,   143,   144,
 
356
     144,   145,   145,   146,   147,   147,   147,   148,   148,   149,
 
357
     149,   150,   150,   151,   151,   152,   152,   153,   154,   154,
 
358
     155,   155,   155,   155,   155,   156,   157,   158,   158,   159,
 
359
     160,   160,   161,   161,   162,   162,   163,   164
 
360
};
 
361
 
 
362
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
 
363
static const short yyr2[] =
 
364
{
 
365
       0,     1,     1,     8,     4,     4,     0,     1,     1,     2,
 
366
       2,     2,     2,     2,     2,     4,     4,     2,     2,     1,
 
367
       1,     1,     0,     1,     2,     4,     4,     2,     1,     2,
 
368
       1,     1,     1,     1,     2,     1,     1,     2,     1,     2,
 
369
       2,     1,     5,     5,     1,     2,     4,     4,     4,     4,
 
370
       4,     4,     0,     2,     3,     3,     3,     1,     0,     1,
 
371
       2,     4,     4,     2,     2,     1,     2,     1,     1,     2,
 
372
       1,     5,     4,     1,     1,     0,     1,     1,     2,     0,
 
373
       3,     3,     0,     3,     2,     1,     2,     1,     2,     1,
 
374
       2,     4,     4,     1,     1,     2,     1,     2,     2,     6,
 
375
       4,     1,     1,     1,     2,     1,     2,     2,     2,     1,
 
376
       2,     1,     2,     2,     1,     1,     1,     2,     1,     2,
 
377
       1,     4,     1,     1,     2,     0,     1,     1,     2,     4,
 
378
       4,     2,     2,     2,     2,     1,     2,     2,     0,     1,
 
379
       1,     2,     4,     4,     1,     2,     1,     4,     4,     1,
 
380
       1,     1,     2,     2,     4,     4,     1,     1,     2,     2,
 
381
       2,     4,     4,     2,     0,     4,     4,     1,     2,     4,
 
382
       4,     1,     2,     1,     2,     4,     4,     2,     1,     2,
 
383
       1,     1,     4,     4,     4,     2,     2,     3,     3,     1,
 
384
       1,     2,     2,     1,     1,     3,     1,     2
 
385
};
 
386
 
 
387
/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
 
388
   doesn't specify something else to do.  Zero means the default is an
 
389
   error. */
 
390
static const short yydefact[] =
 
391
{
 
392
       0,     7,     0,     1,    22,     2,     0,     0,   125,    21,
 
393
      23,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
394
       0,     0,     0,     8,    27,     0,     0,   126,   127,     0,
 
395
      24,     0,    19,    20,    10,    11,    12,    13,    14,     0,
 
396
       0,    17,    18,     5,     4,     9,   131,     0,     0,   128,
 
397
       0,    41,     0,     0,     0,    79,    38,     0,     0,   114,
 
398
     115,   116,    79,     0,    58,     0,   120,     0,    82,   122,
 
399
       0,     0,     0,    28,    33,    30,    35,    36,   118,     0,
 
400
      32,    31,     0,     0,   189,   197,     0,     0,    52,   173,
 
401
       0,     0,     0,   140,     0,     0,   138,     0,     0,   135,
 
402
       0,   112,   113,     0,     0,     0,    37,     0,     0,    39,
 
403
     117,    57,     0,   119,     0,     0,    40,    34,    26,    25,
 
404
      29,     0,     0,     0,     0,    65,    67,     0,    59,    15,
 
405
      16,     0,     0,   177,     0,   174,     0,   134,     0,   141,
 
406
     130,   129,   132,   139,   133,     0,   136,   137,     0,     0,
 
407
       0,     0,     0,     0,    85,    93,     0,     0,    87,    89,
 
408
       0,     0,     0,     0,   102,     0,     0,    96,   101,     0,
 
409
       0,    96,     0,   103,    56,   123,     0,     0,     0,     0,
 
410
      73,    64,     0,    63,    66,    55,    60,   188,   187,   150,
 
411
     149,    53,     0,     0,     0,     0,     0,     0,     0,     0,
 
412
       0,     0,   178,   180,   181,   146,     0,     0,   144,    44,
 
413
       0,     0,     0,   107,   108,    50,    46,    86,    90,    49,
 
414
      88,    81,    80,    98,     0,    51,    47,    97,   106,    97,
 
415
     104,    48,   124,   121,    84,    83,    70,     0,     0,    68,
 
416
       0,     0,     0,     3,     0,     0,     0,     0,   185,   186,
 
417
     176,   175,   179,   143,   142,   145,    43,    45,    42,    94,
 
418
       0,     0,   111,     0,     0,   109,    62,    61,    69,    74,
 
419
       0,    75,    54,     0,     0,     0,     0,     0,     0,     0,
 
420
     151,   156,   196,     0,     0,   190,   193,   194,     0,     0,
 
421
      92,    95,    91,   100,     0,   110,    72,    77,     0,    76,
 
422
       0,     0,     0,   164,   153,     0,   159,   160,   148,   147,
 
423
     152,   192,   182,   191,     0,   183,   184,     0,    71,    78,
 
424
       0,   162,   161,     0,   163,     0,   157,     0,   195,    99,
 
425
     171,     0,     0,     0,   155,   154,   158,   170,   172,   169,
 
426
       0,   167,     0,   166,   165,   168,     0,     0,     0
 
427
};
 
428
 
 
429
static const short yydefgoto[] =
 
430
{
 
431
     346,     3,     4,     5,    22,    23,    34,     8,     9,    10,
 
432
      11,    72,    73,    74,    75,    76,   211,    77,   134,   191,
 
433
      78,    79,   112,   127,   128,   238,   239,   181,   182,   271,
 
434
     298,   299,   106,   116,   178,   153,   157,   158,   159,   261,
 
435
     166,   167,   172,   173,   155,   264,   265,    80,    81,   176,
 
436
      26,    27,    28,    29,    95,    96,   142,    97,    98,    99,
 
437
     207,   208,   193,   194,   279,   280,   327,   281,   243,   302,
 
438
     324,   342,   303,   332,    88,    89,    90,   201,   202,   203,
 
439
     204,    85,    86,   284,   285,   286,   287,    48
 
440
};
 
441
 
 
442
static const short yypact[] =
 
443
{
 
444
      23,-32768,   -52,-32768,    25,-32768,     7,     9,    12,    25,
 
445
  -32768,    -9,   -15,   -15,   -15,    71,   -15,    80,    82,   -15,
 
446
      85,    36,   212,-32768,-32768,    96,    61,    12,-32768,    54,
 
447
  -32768,   140,-32768,-32768,-32768,-32768,-32768,-32768,-32768,    94,
 
448
     119,-32768,-32768,-32768,-32768,-32768,-32768,    79,    70,-32768,
 
449
      21,   154,   175,   108,   124,   127,-32768,   129,   131,-32768,
 
450
  -32768,-32768,   127,   190,   213,   214,-32768,   162,   169,-32768,
 
451
      79,   171,   159,-32768,-32768,-32768,-32768,-32768,-32768,   187,
 
452
  -32768,-32768,   219,   228,-32768,-32768,    21,   240,    70,-32768,
 
453
     193,    14,   245,-32768,   196,   197,   207,     2,   259,   256,
 
454
     215,-32768,-32768,   152,   186,   106,-32768,   211,   254,-32768,
 
455
  -32768,-32768,   217,-32768,   262,   222,-32768,-32768,-32768,-32768,
 
456
  -32768,   220,   269,   269,    79,-32768,-32768,    76,-32768,-32768,
 
457
  -32768,   221,   224,-32768,   181,-32768,    34,-32768,    95,-32768,
 
458
  -32768,-32768,-32768,-32768,-32768,   229,-32768,-32768,   132,   230,
 
459
     271,   273,   226,     8,-32768,-32768,   278,     0,-32768,-32768,
 
460
     231,   232,   281,   234,-32768,   235,    10,-32768,-32768,   285,
 
461
     254,   236,   237,-32768,-32768,-32768,    17,   288,   239,   182,
 
462
  -32768,-32768,   242,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 
463
  -32768,-32768,   187,   275,   244,   246,   247,   248,    79,    79,
 
464
     249,   223,-32768,-32768,-32768,-32768,   251,    24,-32768,-32768,
 
465
     252,    46,   191,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 
466
  -32768,-32768,-32768,-32768,   227,-32768,-32768,-32768,-32768,   236,
 
467
  -32768,-32768,-32768,-32768,-32768,-32768,-32768,   255,    48,-32768,
 
468
     250,   179,   257,-32768,    38,    86,    86,    86,-32768,-32768,
 
469
  -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 
470
     258,    50,-32768,   260,    52,-32768,-32768,-32768,-32768,-32768,
 
471
     261,   295,-32768,   167,   299,   263,   301,   -15,   264,    41,
 
472
  -32768,-32768,-32768,   305,   -11,-32768,   265,-32768,   266,    11,
 
473
  -32768,-32768,-32768,-32768,   309,-32768,-32768,-32768,   268,   310,
 
474
     270,   272,   274,   303,-32768,    95,-32768,-32768,-32768,-32768,
 
475
  -32768,-32768,-32768,-32768,   314,-32768,-32768,   321,-32768,-32768,
 
476
     253,-32768,-32768,   276,-32768,   277,-32768,    55,-32768,-32768,
 
477
  -32768,   279,    72,    95,-32768,-32768,-32768,-32768,-32768,-32768,
 
478
     280,-32768,    77,-32768,-32768,-32768,   345,   347,-32768
 
479
};
 
480
 
 
481
static const short yypgoto[] =
 
482
{
 
483
  -32768,-32768,-32768,    -6,-32768,   328,   -12,-32768,-32768,   343,
 
484
  -32768,-32768,   283,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 
485
  -32768,   225,-32768,   164,  -124,-32768,   120,   238,-32768,-32768,
 
486
  -32768,-32768,   298,-32768,-32768,-32768,-32768,   200,   -87,-32768,
 
487
     267,   -89,-32768,   192,   -94,-32768,    99,-32768,-32768,-32768,
 
488
  -32768,-32768,   337,-32768,   282,   284,-32768,   286,   287,   289,
 
489
  -32768,  -202,-32768,-32768,-32768,    87,-32768,-32768,-32768,-32768,
 
490
  -32768,-32768,-32768,-32768,-32768,   290,-32768,-32768,   166,-32768,
 
491
  -32768,   -64,-32768,   118,  -135,-32768,    56,-32768
 
492
};
 
493
 
 
494
 
 
495
#define YYLAST          387
 
496
 
 
497
 
 
498
static const short yytable[] =
 
499
{
 
500
      21,    35,    36,   186,    38,   255,   117,    41,     1,   149,
 
501
     150,   161,   282,   168,   168,   156,   154,   149,   150,   171,
 
502
     150,     6,     1,    91,     1,    71,    -6,   137,     7,    92,
 
503
     162,   163,    24,   151,   282,     1,    32,    33,    25,     1,
 
504
     232,   151,    91,   151,    94,   164,   283,   205,    92,    -6,
 
505
      12,    13,    14,    15,    16,    17,    18,    19,   274,   275,
 
506
     184,   274,   275,   312,    31,     2,   217,   276,   283,   257,
 
507
     276,   236,   168,   291,   219,   262,   168,   227,   205,    20,
 
508
     131,   229,   216,    -6,   226,   316,    93,   138,   195,   196,
 
509
     197,   233,   198,   199,    37,   338,     1,   152,   254,   160,
 
510
     205,   165,   277,   326,    39,   277,    40,     1,    42,   282,
 
511
      43,   288,   121,   122,   123,   309,   150,   186,   205,    46,
 
512
     258,    47,   267,    87,   292,   336,   294,    50,   190,   335,
 
513
     200,   341,   206,     1,   248,   249,   124,   125,   126,   151,
 
514
     345,     1,   210,   283,    51,    52,   339,    53,    54,   313,
 
515
     185,   344,    84,     1,   313,   209,    55,    56,    57,    58,
 
516
     100,   149,   150,    51,    52,    59,    53,    54,     1,    82,
 
517
      60,    61,    62,   237,    63,    55,    56,    57,    58,    64,
 
518
      65,   103,     1,     1,    59,   151,   101,   102,   300,    60,
 
519
      61,    62,     1,    63,    83,   149,   150,   104,    64,    65,
 
520
     105,   156,   107,    66,   108,   236,   260,    67,    68,   189,
 
521
      69,    70,     1,   110,   259,   121,   122,   123,   263,   151,
 
522
      64,   150,    66,   121,   122,   123,    67,    68,     1,    69,
 
523
      70,   162,   163,   119,   270,   114,   111,   113,   278,   124,
 
524
     125,   126,   115,   129,   151,   118,   164,   124,   125,   126,
 
525
     262,     1,   130,   272,     1,    12,    13,    14,    15,    16,
 
526
      17,    18,    19,   133,   150,   307,   136,   301,   139,   169,
 
527
     140,   141,    93,   269,   162,   163,   330,   195,   196,   197,
 
528
     145,   198,   199,    92,    20,   175,    44,   151,   148,   164,
 
529
     174,   177,   180,   179,   213,   187,   214,   251,   188,   325,
 
530
     215,   218,   138,   212,   223,   221,   222,   224,   228,   225,
 
531
    -105,   231,   234,   235,   331,   240,   242,   244,   297,   245,
 
532
     246,   247,   304,   250,   306,   253,   256,   340,   311,   266,
 
533
     273,   317,   290,   319,   293,   296,   305,   282,   308,   323,
 
534
     315,   314,   318,   320,   329,   347,   321,   348,   322,   333,
 
535
      45,   334,    30,   337,   343,   120,   241,   220,   268,   192,
 
536
     109,   183,   230,   295,    49,   289,   310,   252,   132,     0,
 
537
     328,     0,     0,     0,     0,   170,     0,     0,   135,     0,
 
538
       0,   144,   143,     0,     0,     0,   147,   146
 
539
};
 
540
 
 
541
static const short yycheck[] =
 
542
{
 
543
       6,    13,    14,   127,    16,   207,    70,    19,     1,     9,
 
544
      10,   105,    23,   107,   108,    15,   103,     9,    10,   108,
 
545
      10,    73,     1,    21,     1,    31,     3,    13,     3,    27,
 
546
      20,    21,    23,    33,    23,     1,    51,    52,    26,     1,
 
547
      23,    33,    21,    33,    50,    35,    57,    23,    27,    26,
 
548
      43,    44,    45,    46,    47,    48,    49,    50,    20,    21,
 
549
     124,    20,    21,    74,    73,    42,   153,    29,    57,    23,
 
550
      29,    23,   166,    23,    74,    23,   170,   166,    23,    72,
 
551
      86,   170,    74,    60,    74,    74,    65,    73,    54,    55,
 
552
      56,    74,    58,    59,    23,    23,     1,   103,    74,   105,
 
553
      23,   107,    64,   305,    24,    64,    24,     1,    23,    23,
 
554
      74,   246,    36,    37,    38,    74,    10,   241,    23,    23,
 
555
      74,    60,    74,    53,    74,   327,    74,    73,   134,    74,
 
556
     136,   333,   138,     1,   198,   199,    60,    61,    62,    33,
 
557
     342,     1,   148,    57,     4,     5,    74,     7,     8,   284,
 
558
      74,    74,    73,     1,   289,    23,    16,    17,    18,    19,
 
559
       6,     9,    10,     4,     5,    25,     7,     8,     1,    75,
 
560
      30,    31,    32,   179,    34,    16,    17,    18,    19,    39,
 
561
      40,    73,     1,     1,    25,    33,    11,    12,    21,    30,
 
562
      31,    32,     1,    34,    75,     9,    10,    73,    39,    40,
 
563
      73,    15,    73,    63,    73,    23,   212,    67,    68,    28,
 
564
      70,    71,     1,    23,    23,    36,    37,    38,   224,    33,
 
565
      39,    10,    63,    36,    37,    38,    67,    68,     1,    70,
 
566
      71,    20,    21,    74,   240,    73,    23,    23,   244,    60,
 
567
      61,    62,    73,    24,    33,    74,    35,    60,    61,    62,
 
568
      23,     1,    24,    74,     1,    43,    44,    45,    46,    47,
 
569
      48,    49,    50,    23,    10,   277,    73,   273,    23,    15,
 
570
      74,    74,    65,    23,    20,    21,    23,    54,    55,    56,
 
571
      21,    58,    59,    27,    72,    23,    74,    33,    73,    35,
 
572
      73,    69,    23,    73,    23,    74,    23,    74,    74,   305,
 
573
      74,    23,    73,    73,    23,    74,    74,    73,    23,    74,
 
574
      74,    74,    24,    74,   320,    73,    41,    73,    23,    73,
 
575
      73,    73,    23,    74,    23,    74,    74,   333,    23,    74,
 
576
      73,    22,    74,    23,    74,    74,    73,    23,    74,    36,
 
577
      74,    76,    74,    73,    23,     0,    74,     0,    74,    73,
 
578
      22,    74,     9,    74,    74,    72,   192,   157,   238,   134,
 
579
      62,   123,   170,   264,    27,   247,   279,   201,    86,    -1,
 
580
     314,    -1,    -1,    -1,    -1,   108,    -1,    -1,    88,    -1,
 
581
      -1,    97,    96,    -1,    -1,    -1,    99,    98
 
582
};
 
583
/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
 
584
#line 3 "/usr/share/bison/bison.simple"
 
585
 
 
586
/* Skeleton output parser for bison,
 
587
 
 
588
   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software
 
589
   Foundation, Inc.
 
590
 
 
591
   This program is free software; you can redistribute it and/or modify
 
592
   it under the terms of the GNU General Public License as published by
 
593
   the Free Software Foundation; either version 2, or (at your option)
 
594
   any later version.
 
595
 
 
596
   This program is distributed in the hope that it will be useful,
 
597
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 
598
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
599
   GNU General Public License for more details.
 
600
 
 
601
   You should have received a copy of the GNU General Public License
 
602
   along with this program; if not, write to the Free Software
 
603
   Foundation, Inc., 59 Temple Place - Suite 330,
 
604
   Boston, MA 02111-1307, USA.  */
 
605
 
 
606
/* As a special exception, when this file is copied by Bison into a
 
607
   Bison output file, you may use that output file without restriction.
 
608
   This special exception was added by the Free Software Foundation
 
609
   in version 1.24 of Bison.  */
 
610
 
 
611
/* This is the parser code that is written into each bison parser when
 
612
   the %semantic_parser declaration is not specified in the grammar.
 
613
   It was written by Richard Stallman by simplifying the hairy parser
 
614
   used when %semantic_parser is specified.  */
 
615
 
 
616
/* All symbols defined below should begin with yy or YY, to avoid
 
617
   infringing on user name space.  This should be done even for local
 
618
   variables, as they might otherwise be expanded by user macros.
 
619
   There are some unavoidable exceptions within include files to
 
620
   define necessary library symbols; they are noted "INFRINGES ON
 
621
   USER NAME SPACE" below.  */
 
622
 
 
623
#if ! defined (yyoverflow) || defined (YYERROR_VERBOSE)
 
624
 
 
625
/* The parser invokes alloca or malloc; define the necessary symbols.  */
 
626
 
 
627
# if YYSTACK_USE_ALLOCA
 
628
#  define YYSTACK_ALLOC alloca
 
629
# else
 
630
#  ifndef YYSTACK_USE_ALLOCA
 
631
#   if defined (alloca) || defined (_ALLOCA_H)
 
632
#    define YYSTACK_ALLOC alloca
 
633
#   else
 
634
#    ifdef __GNUC__
 
635
#     define YYSTACK_ALLOC __builtin_alloca
 
636
#    endif
 
637
#   endif
 
638
#  endif
 
639
# endif
 
640
 
 
641
# ifdef YYSTACK_ALLOC
 
642
   /* Pacify GCC's `empty if-body' warning. */
 
643
#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
 
644
# else
 
645
#  if defined (__STDC__) || defined (__cplusplus)
 
646
#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
 
647
#   define YYSIZE_T size_t
 
648
#  endif
 
649
#  define YYSTACK_ALLOC malloc
 
650
#  define YYSTACK_FREE free
 
651
# endif
 
652
#endif /* ! defined (yyoverflow) || defined (YYERROR_VERBOSE) */
 
653
 
 
654
 
 
655
#if (! defined (yyoverflow) \
 
656
     && (! defined (__cplusplus) \
 
657
         || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
 
658
 
 
659
/* A type that is properly aligned for any stack member.  */
 
660
union yyalloc
 
661
{
 
662
  short yyss;
 
663
  YYSTYPE yyvs;
 
664
# if YYLSP_NEEDED
 
665
  YYLTYPE yyls;
 
666
# endif
 
667
};
 
668
 
 
669
/* The size of the maximum gap between one aligned stack and the next.  */
 
670
# define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1)
 
671
 
 
672
/* The size of an array large to enough to hold all stacks, each with
 
673
   N elements.  */
 
674
# if YYLSP_NEEDED
 
675
#  define YYSTACK_BYTES(N) \
 
676
     ((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE))      \
 
677
      + 2 * YYSTACK_GAP_MAX)
 
678
# else
 
679
#  define YYSTACK_BYTES(N) \
 
680
     ((N) * (sizeof (short) + sizeof (YYSTYPE))                         \
 
681
      + YYSTACK_GAP_MAX)
 
682
# endif
 
683
 
 
684
/* Copy COUNT objects from FROM to TO.  The source and destination do
 
685
   not overlap.  */
 
686
# ifndef YYCOPY
 
687
#  if 1 < __GNUC__
 
688
#   define YYCOPY(To, From, Count) \
 
689
      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
 
690
#  else
 
691
#   define YYCOPY(To, From, Count)              \
 
692
      do                                        \
 
693
        {                                       \
 
694
          register YYSIZE_T yyi;                \
 
695
          for (yyi = 0; yyi < (Count); yyi++)   \
 
696
            (To)[yyi] = (From)[yyi];            \
 
697
        }                                       \
 
698
      while (0)
 
699
#  endif
 
700
# endif
 
701
 
 
702
/* Relocate STACK from its old location to the new one.  The
 
703
   local variables YYSIZE and YYSTACKSIZE give the old and new number of
 
704
   elements in the stack, and YYPTR gives the new location of the
 
705
   stack.  Advance YYPTR to a properly aligned location for the next
 
706
   stack.  */
 
707
# define YYSTACK_RELOCATE(Stack)                                        \
 
708
    do                                                                  \
 
709
      {                                                                 \
 
710
        YYSIZE_T yynewbytes;                                            \
 
711
        YYCOPY (&yyptr->Stack, Stack, yysize);                          \
 
712
        Stack = &yyptr->Stack;                                          \
 
713
        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAX;   \
 
714
        yyptr += yynewbytes / sizeof (*yyptr);                          \
 
715
      }                                                                 \
 
716
    while (0)
 
717
 
 
718
#endif
 
719
 
 
720
 
 
721
#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
 
722
# define YYSIZE_T __SIZE_TYPE__
 
723
#endif
 
724
#if ! defined (YYSIZE_T) && defined (size_t)
 
725
# define YYSIZE_T size_t
 
726
#endif
 
727
#if ! defined (YYSIZE_T)
 
728
# if defined (__STDC__) || defined (__cplusplus)
 
729
#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 
730
#  define YYSIZE_T size_t
 
731
# endif
 
732
#endif
 
733
#if ! defined (YYSIZE_T)
 
734
# define YYSIZE_T unsigned int
 
735
#endif
 
736
 
 
737
#define yyerrok         (yyerrstatus = 0)
 
738
#define yyclearin       (yychar = YYEMPTY)
 
739
#define YYEMPTY         -2
 
740
#define YYEOF           0
 
741
#define YYACCEPT        goto yyacceptlab
 
742
#define YYABORT         goto yyabortlab
 
743
#define YYERROR         goto yyerrlab1
 
744
/* Like YYERROR except do call yyerror.  This remains here temporarily
 
745
   to ease the transition to the new meaning of YYERROR, for GCC.
 
746
   Once GCC version 2 has supplanted version 1, this can go.  */
 
747
#define YYFAIL          goto yyerrlab
 
748
#define YYRECOVERING()  (!!yyerrstatus)
 
749
#define YYBACKUP(Token, Value)                                  \
 
750
do                                                              \
 
751
  if (yychar == YYEMPTY && yylen == 1)                          \
 
752
    {                                                           \
 
753
      yychar = (Token);                                         \
 
754
      yylval = (Value);                                         \
 
755
      yychar1 = YYTRANSLATE (yychar);                           \
 
756
      YYPOPSTACK;                                               \
 
757
      goto yybackup;                                            \
 
758
    }                                                           \
 
759
  else                                                          \
 
760
    {                                                           \
 
761
      yyerror ("syntax error: cannot back up");                 \
 
762
      YYERROR;                                                  \
 
763
    }                                                           \
 
764
while (0)
 
765
 
 
766
#define YYTERROR        1
 
767
#define YYERRCODE       256
 
768
 
 
769
 
 
770
/* YYLLOC_DEFAULT -- Compute the default location (before the actions
 
771
   are run).
 
772
 
 
773
   When YYLLOC_DEFAULT is run, CURRENT is set the location of the
 
774
   first token.  By default, to implement support for ranges, extend
 
775
   its range to the last symbol.  */
 
776
 
 
777
#ifndef YYLLOC_DEFAULT
 
778
# define YYLLOC_DEFAULT(Current, Rhs, N)        \
 
779
   Current.last_line   = Rhs[N].last_line;      \
 
780
   Current.last_column = Rhs[N].last_column;
 
781
#endif
 
782
 
 
783
 
 
784
/* YYLEX -- calling `yylex' with the right arguments.  */
 
785
 
 
786
#if YYPURE
 
787
# if YYLSP_NEEDED
 
788
#  ifdef YYLEX_PARAM
 
789
#   define YYLEX                yylex (&yylval, &yylloc, YYLEX_PARAM)
 
790
#  else
 
791
#   define YYLEX                yylex (&yylval, &yylloc)
 
792
#  endif
 
793
# else /* !YYLSP_NEEDED */
 
794
#  ifdef YYLEX_PARAM
 
795
#   define YYLEX                yylex (&yylval, YYLEX_PARAM)
 
796
#  else
 
797
#   define YYLEX                yylex (&yylval)
 
798
#  endif
 
799
# endif /* !YYLSP_NEEDED */
 
800
#else /* !YYPURE */
 
801
# define YYLEX                  yylex ()
 
802
#endif /* !YYPURE */
 
803
 
 
804
 
 
805
/* Enable debugging if requested.  */
 
806
#if YYDEBUG
 
807
 
 
808
# ifndef YYFPRINTF
 
809
#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
 
810
#  define YYFPRINTF fprintf
 
811
# endif
 
812
 
 
813
# define YYDPRINTF(Args)                        \
 
814
do {                                            \
 
815
  if (yydebug)                                  \
 
816
    YYFPRINTF Args;                             \
 
817
} while (0)
 
818
/* Nonzero means print parse trace.  It is left uninitialized so that
 
819
   multiple parsers can coexist.  */
 
820
int yydebug;
 
821
#else /* !YYDEBUG */
 
822
# define YYDPRINTF(Args)
 
823
#endif /* !YYDEBUG */
 
824
 
 
825
/* YYINITDEPTH -- initial size of the parser's stacks.  */
 
826
#ifndef YYINITDEPTH
 
827
# define YYINITDEPTH 200
 
828
#endif
 
829
 
 
830
/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
 
831
   if the built-in stack extension method is used).
 
832
 
 
833
   Do not make this value too large; the results are undefined if
 
834
   SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
 
835
   evaluated with infinite-precision integer arithmetic.  */
 
836
 
 
837
#if YYMAXDEPTH == 0
 
838
# undef YYMAXDEPTH
 
839
#endif
 
840
 
 
841
#ifndef YYMAXDEPTH
 
842
# define YYMAXDEPTH 10000
 
843
#endif
 
844
 
 
845
#ifdef YYERROR_VERBOSE
 
846
 
 
847
# ifndef yystrlen
 
848
#  if defined (__GLIBC__) && defined (_STRING_H)
 
849
#   define yystrlen strlen
 
850
#  else
 
851
/* Return the length of YYSTR.  */
 
852
static YYSIZE_T
 
853
#   if defined (__STDC__) || defined (__cplusplus)
 
854
yystrlen (const char *yystr)
 
855
#   else
 
856
yystrlen (yystr)
 
857
     const char *yystr;
 
858
#   endif
 
859
{
 
860
  register const char *yys = yystr;
 
861
 
 
862
  while (*yys++ != '\0')
 
863
    continue;
 
864
 
 
865
  return yys - yystr - 1;
 
866
}
 
867
#  endif
 
868
# endif
 
869
 
 
870
# ifndef yystpcpy
 
871
#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
 
872
#   include <string.h>
 
873
#   define yystpcpy stpcpy
 
874
#  else
 
875
/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
 
876
   YYDEST.  */
 
877
static char *
 
878
#   if defined (__STDC__) || defined (__cplusplus)
 
879
yystpcpy (char *yydest, const char *yysrc)
 
880
#   else
 
881
yystpcpy (yydest, yysrc)
 
882
     char *yydest;
 
883
     const char *yysrc;
 
884
#   endif
 
885
{
 
886
  register char *yyd = yydest;
 
887
  register const char *yys = yysrc;
 
888
 
 
889
  while ((*yyd++ = *yys++) != '\0')
 
890
    continue;
 
891
 
 
892
  return yyd - 1;
 
893
}
 
894
#  endif
 
895
# endif
 
896
#endif
 
897
 
 
898
#line 316 "/usr/share/bison/bison.simple"
 
899
 
 
900
 
 
901
/* The user can define YYPARSE_PARAM as the name of an argument to be passed
 
902
   into yyparse.  The argument should have type void *.
 
903
   It should actually point to an object.
 
904
   Grammar actions can access the variable by casting it
 
905
   to the proper pointer type.  */
 
906
 
 
907
#ifdef YYPARSE_PARAM
 
908
# if defined (__STDC__) || defined (__cplusplus)
 
909
#  define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
 
910
#  define YYPARSE_PARAM_DECL
 
911
# else
 
912
#  define YYPARSE_PARAM_ARG YYPARSE_PARAM
 
913
#  define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
 
914
# endif
 
915
#else /* !YYPARSE_PARAM */
 
916
# define YYPARSE_PARAM_ARG
 
917
# define YYPARSE_PARAM_DECL
 
918
#endif /* !YYPARSE_PARAM */
 
919
 
 
920
/* Prevent warning if -Wstrict-prototypes.  */
 
921
#ifdef __GNUC__
 
922
# ifdef YYPARSE_PARAM
 
923
int yyparse (void *);
 
924
# else
 
925
int yyparse (void);
 
926
# endif
 
927
#endif
 
928
 
 
929
/* YY_DECL_VARIABLES -- depending whether we use a pure parser,
 
930
   variables are global, or local to YYPARSE.  */
 
931
 
 
932
#define YY_DECL_NON_LSP_VARIABLES                       \
 
933
/* The lookahead symbol.  */                            \
 
934
int yychar;                                             \
 
935
                                                        \
 
936
/* The semantic value of the lookahead symbol. */       \
 
937
YYSTYPE yylval;                                         \
 
938
                                                        \
 
939
/* Number of parse errors so far.  */                   \
 
940
int yynerrs;
 
941
 
 
942
#if YYLSP_NEEDED
 
943
# define YY_DECL_VARIABLES                      \
 
944
YY_DECL_NON_LSP_VARIABLES                       \
 
945
                                                \
 
946
/* Location data for the lookahead symbol.  */  \
 
947
YYLTYPE yylloc;
 
948
#else
 
949
# define YY_DECL_VARIABLES                      \
 
950
YY_DECL_NON_LSP_VARIABLES
 
951
#endif
 
952
 
 
953
 
 
954
/* If nonreentrant, generate the variables here. */
 
955
 
 
956
#if !YYPURE
 
957
YY_DECL_VARIABLES
 
958
#endif  /* !YYPURE */
 
959
 
 
960
int
 
961
yyparse (YYPARSE_PARAM_ARG)
 
962
     YYPARSE_PARAM_DECL
 
963
{
 
964
  /* If reentrant, generate the variables here. */
 
965
#if YYPURE
 
966
  YY_DECL_VARIABLES
 
967
#endif  /* !YYPURE */
 
968
 
 
969
  register int yystate;
 
970
  register int yyn;
 
971
  int yyresult;
 
972
  /* Number of tokens to shift before error messages enabled.  */
 
973
  int yyerrstatus;
 
974
  /* Lookahead token as an internal (translated) token number.  */
 
975
  int yychar1 = 0;
 
976
 
 
977
  /* Three stacks and their tools:
 
978
     `yyss': related to states,
 
979
     `yyvs': related to semantic values,
 
980
     `yyls': related to locations.
 
981
 
 
982
     Refer to the stacks thru separate pointers, to allow yyoverflow
 
983
     to reallocate them elsewhere.  */
 
984
 
 
985
  /* The state stack. */
 
986
  short yyssa[YYINITDEPTH];
 
987
  short *yyss = yyssa;
 
988
  register short *yyssp;
 
989
 
 
990
  /* The semantic value stack.  */
 
991
  YYSTYPE yyvsa[YYINITDEPTH];
 
992
  YYSTYPE *yyvs = yyvsa;
 
993
  register YYSTYPE *yyvsp;
 
994
 
 
995
#if YYLSP_NEEDED
 
996
  /* The location stack.  */
 
997
  YYLTYPE yylsa[YYINITDEPTH];
 
998
  YYLTYPE *yyls = yylsa;
 
999
  YYLTYPE *yylsp;
 
1000
#endif
 
1001
 
 
1002
#if YYLSP_NEEDED
 
1003
# define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
 
1004
#else
 
1005
# define YYPOPSTACK   (yyvsp--, yyssp--)
 
1006
#endif
 
1007
 
 
1008
  YYSIZE_T yystacksize = YYINITDEPTH;
 
1009
 
 
1010
 
 
1011
  /* The variables used to return semantic value and location from the
 
1012
     action routines.  */
 
1013
  YYSTYPE yyval;
 
1014
#if YYLSP_NEEDED
 
1015
  YYLTYPE yyloc;
 
1016
#endif
 
1017
 
 
1018
  /* When reducing, the number of symbols on the RHS of the reduced
 
1019
     rule. */
 
1020
  int yylen;
 
1021
 
 
1022
  YYDPRINTF ((stderr, "Starting parse\n"));
 
1023
 
 
1024
  yystate = 0;
 
1025
  yyerrstatus = 0;
 
1026
  yynerrs = 0;
 
1027
  yychar = YYEMPTY;             /* Cause a token to be read.  */
 
1028
 
 
1029
  /* Initialize stack pointers.
 
1030
     Waste one element of value and location stack
 
1031
     so that they stay on the same level as the state stack.
 
1032
     The wasted elements are never initialized.  */
 
1033
 
 
1034
  yyssp = yyss;
 
1035
  yyvsp = yyvs;
 
1036
#if YYLSP_NEEDED
 
1037
  yylsp = yyls;
 
1038
#endif
 
1039
  goto yysetstate;
 
1040
 
 
1041
/*------------------------------------------------------------.
 
1042
| yynewstate -- Push a new state, which is found in yystate.  |
 
1043
`------------------------------------------------------------*/
 
1044
 yynewstate:
 
1045
  /* In all cases, when you get here, the value and location stacks
 
1046
     have just been pushed. so pushing a state here evens the stacks.
 
1047
     */
 
1048
  yyssp++;
 
1049
 
 
1050
 yysetstate:
 
1051
  *yyssp = yystate;
 
1052
 
 
1053
  if (yyssp >= yyss + yystacksize - 1)
 
1054
    {
 
1055
      /* Get the current used size of the three stacks, in elements.  */
 
1056
      YYSIZE_T yysize = yyssp - yyss + 1;
 
1057
 
 
1058
#ifdef yyoverflow
 
1059
      {
 
1060
        /* Give user a chance to reallocate the stack. Use copies of
 
1061
           these so that the &'s don't force the real ones into
 
1062
           memory.  */
 
1063
        YYSTYPE *yyvs1 = yyvs;
 
1064
        short *yyss1 = yyss;
 
1065
 
 
1066
        /* Each stack pointer address is followed by the size of the
 
1067
           data in use in that stack, in bytes.  */
 
1068
# if YYLSP_NEEDED
 
1069
        YYLTYPE *yyls1 = yyls;
 
1070
        /* This used to be a conditional around just the two extra args,
 
1071
           but that might be undefined if yyoverflow is a macro.  */
 
1072
        yyoverflow ("parser stack overflow",
 
1073
                    &yyss1, yysize * sizeof (*yyssp),
 
1074
                    &yyvs1, yysize * sizeof (*yyvsp),
 
1075
                    &yyls1, yysize * sizeof (*yylsp),
 
1076
                    &yystacksize);
 
1077
        yyls = yyls1;
 
1078
# else
 
1079
        yyoverflow ("parser stack overflow",
 
1080
                    &yyss1, yysize * sizeof (*yyssp),
 
1081
                    &yyvs1, yysize * sizeof (*yyvsp),
 
1082
                    &yystacksize);
 
1083
# endif
 
1084
        yyss = yyss1;
 
1085
        yyvs = yyvs1;
 
1086
      }
 
1087
#else /* no yyoverflow */
 
1088
# ifndef YYSTACK_RELOCATE
 
1089
      goto yyoverflowlab;
 
1090
# else
 
1091
      /* Extend the stack our own way.  */
 
1092
      if (yystacksize >= YYMAXDEPTH)
 
1093
        goto yyoverflowlab;
 
1094
      yystacksize *= 2;
 
1095
      if (yystacksize > YYMAXDEPTH)
 
1096
        yystacksize = YYMAXDEPTH;
 
1097
 
 
1098
      {
 
1099
        short *yyss1 = yyss;
 
1100
        union yyalloc *yyptr =
 
1101
          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
 
1102
        if (! yyptr)
 
1103
          goto yyoverflowlab;
 
1104
        YYSTACK_RELOCATE (yyss);
 
1105
        YYSTACK_RELOCATE (yyvs);
 
1106
# if YYLSP_NEEDED
 
1107
        YYSTACK_RELOCATE (yyls);
 
1108
# endif
 
1109
# undef YYSTACK_RELOCATE
 
1110
        if (yyss1 != yyssa)
 
1111
          YYSTACK_FREE (yyss1);
 
1112
      }
 
1113
# endif
 
1114
#endif /* no yyoverflow */
 
1115
 
 
1116
      yyssp = yyss + yysize - 1;
 
1117
      yyvsp = yyvs + yysize - 1;
 
1118
#if YYLSP_NEEDED
 
1119
      yylsp = yyls + yysize - 1;
 
1120
#endif
 
1121
 
 
1122
      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
 
1123
                  (unsigned long int) yystacksize));
 
1124
 
 
1125
      if (yyssp >= yyss + yystacksize - 1)
 
1126
        YYABORT;
 
1127
    }
 
1128
 
 
1129
  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
 
1130
 
 
1131
  goto yybackup;
 
1132
 
 
1133
 
 
1134
/*-----------.
 
1135
| yybackup.  |
 
1136
`-----------*/
 
1137
yybackup:
 
1138
 
 
1139
/* Do appropriate processing given the current state.  */
 
1140
/* Read a lookahead token if we need one and don't already have one.  */
 
1141
/* yyresume: */
 
1142
 
 
1143
  /* First try to decide what to do without reference to lookahead token.  */
 
1144
 
 
1145
  yyn = yypact[yystate];
 
1146
  if (yyn == YYFLAG)
 
1147
    goto yydefault;
 
1148
 
 
1149
  /* Not known => get a lookahead token if don't already have one.  */
 
1150
 
 
1151
  /* yychar is either YYEMPTY or YYEOF
 
1152
     or a valid token in external form.  */
 
1153
 
 
1154
  if (yychar == YYEMPTY)
 
1155
    {
 
1156
      YYDPRINTF ((stderr, "Reading a token: "));
 
1157
      yychar = YYLEX;
 
1158
    }
 
1159
 
 
1160
  /* Convert token to internal form (in yychar1) for indexing tables with */
 
1161
 
 
1162
  if (yychar <= 0)              /* This means end of input. */
 
1163
    {
 
1164
      yychar1 = 0;
 
1165
      yychar = YYEOF;           /* Don't call YYLEX any more */
 
1166
 
 
1167
      YYDPRINTF ((stderr, "Now at end of input.\n"));
 
1168
    }
 
1169
  else
 
1170
    {
 
1171
      yychar1 = YYTRANSLATE (yychar);
 
1172
 
 
1173
#if YYDEBUG
 
1174
     /* We have to keep this `#if YYDEBUG', since we use variables
 
1175
        which are defined only if `YYDEBUG' is set.  */
 
1176
      if (yydebug)
 
1177
        {
 
1178
          YYFPRINTF (stderr, "Next token is %d (%s",
 
1179
                     yychar, yytname[yychar1]);
 
1180
          /* Give the individual parser a way to print the precise
 
1181
             meaning of a token, for further debugging info.  */
 
1182
# ifdef YYPRINT
 
1183
          YYPRINT (stderr, yychar, yylval);
 
1184
# endif
 
1185
          YYFPRINTF (stderr, ")\n");
 
1186
        }
 
1187
#endif
 
1188
    }
 
1189
 
 
1190
  yyn += yychar1;
 
1191
  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
 
1192
    goto yydefault;
 
1193
 
 
1194
  yyn = yytable[yyn];
 
1195
 
 
1196
  /* yyn is what to do for this token type in this state.
 
1197
     Negative => reduce, -yyn is rule number.
 
1198
     Positive => shift, yyn is new state.
 
1199
       New state is final state => don't bother to shift,
 
1200
       just return success.
 
1201
     0, or most negative number => error.  */
 
1202
 
 
1203
  if (yyn < 0)
 
1204
    {
 
1205
      if (yyn == YYFLAG)
 
1206
        goto yyerrlab;
 
1207
      yyn = -yyn;
 
1208
      goto yyreduce;
 
1209
    }
 
1210
  else if (yyn == 0)
 
1211
    goto yyerrlab;
 
1212
 
 
1213
  if (yyn == YYFINAL)
 
1214
    YYACCEPT;
 
1215
 
 
1216
  /* Shift the lookahead token.  */
 
1217
  YYDPRINTF ((stderr, "Shifting token %d (%s), ",
 
1218
              yychar, yytname[yychar1]));
 
1219
 
 
1220
  /* Discard the token being shifted unless it is eof.  */
 
1221
  if (yychar != YYEOF)
 
1222
    yychar = YYEMPTY;
 
1223
 
 
1224
  *++yyvsp = yylval;
 
1225
#if YYLSP_NEEDED
 
1226
  *++yylsp = yylloc;
 
1227
#endif
 
1228
 
 
1229
  /* Count tokens shifted since error; after three, turn off error
 
1230
     status.  */
 
1231
  if (yyerrstatus)
 
1232
    yyerrstatus--;
 
1233
 
 
1234
  yystate = yyn;
 
1235
  goto yynewstate;
 
1236
 
 
1237
 
 
1238
/*-----------------------------------------------------------.
 
1239
| yydefault -- do the default action for the current state.  |
 
1240
`-----------------------------------------------------------*/
 
1241
yydefault:
 
1242
  yyn = yydefact[yystate];
 
1243
  if (yyn == 0)
 
1244
    goto yyerrlab;
 
1245
  goto yyreduce;
 
1246
 
 
1247
 
 
1248
/*-----------------------------.
 
1249
| yyreduce -- Do a reduction.  |
 
1250
`-----------------------------*/
 
1251
yyreduce:
 
1252
  /* yyn is the number of a rule to reduce with.  */
 
1253
  yylen = yyr2[yyn];
 
1254
 
 
1255
  /* If YYLEN is nonzero, implement the default value of the action:
 
1256
     `$$ = $1'.
 
1257
 
 
1258
     Otherwise, the following line sets YYVAL to the semantic value of
 
1259
     the lookahead token.  This behavior is undocumented and Bison
 
1260
     users should not rely upon it.  Assigning to YYVAL
 
1261
     unconditionally makes the parser a bit smaller, and it avoids a
 
1262
     GCC warning that YYVAL may be used uninitialized.  */
 
1263
  yyval = yyvsp[1-yylen];
 
1264
 
 
1265
#if YYLSP_NEEDED
 
1266
  /* Similarly for the default location.  Let the user run additional
 
1267
     commands if for instance locations are ranges.  */
 
1268
  yyloc = yylsp[1-yylen];
 
1269
  YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
 
1270
#endif
 
1271
 
 
1272
#if YYDEBUG
 
1273
  /* We have to keep this `#if YYDEBUG', since we use variables which
 
1274
     are defined only if `YYDEBUG' is set.  */
 
1275
  if (yydebug)
 
1276
    {
 
1277
      int yyi;
 
1278
 
 
1279
      YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",
 
1280
                 yyn, yyrline[yyn]);
 
1281
 
 
1282
      /* Print the symbols being reduced, and their result.  */
 
1283
      for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++)
 
1284
        YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
 
1285
      YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);
 
1286
    }
 
1287
#endif
 
1288
 
 
1289
  switch (yyn) {
 
1290
 
 
1291
case 6:
 
1292
#line 71 "./fconfig.y"
 
1293
{
 
1294
                    fconferror ("Missing/bad database info section");
 
1295
                ;
 
1296
    break;}
 
1297
case 7:
 
1298
#line 76 "./fconfig.y"
 
1299
{ badFile = 1; ;
 
1300
    break;}
 
1301
case 10:
 
1302
#line 82 "./fconfig.y"
 
1303
 
1304
                    setDebugMode (databaseBeingDefined, yyvsp[0].intval);
 
1305
                ;
 
1306
    break;}
 
1307
case 11:
 
1308
#line 85 "./fconfig.y"
 
1309
{
 
1310
                    setKeepReceivedHeaders (databaseBeingDefined, yyvsp[0].intval);
 
1311
                ;
 
1312
    break;}
 
1313
case 12:
 
1314
#line 88 "./fconfig.y"
 
1315
{
 
1316
                    setNotifyExpire (databaseBeingDefined, yyvsp[0].intval);
 
1317
                ;
 
1318
    break;}
 
1319
case 13:
 
1320
#line 91 "./fconfig.y"
 
1321
{
 
1322
                    setBinDir (databaseBeingDefined, qStrVal (yyvsp[0].qstr)); 
 
1323
                ;
 
1324
    break;}
 
1325
case 14:
 
1326
#line 94 "./fconfig.y"
 
1327
{
 
1328
                    setSubmitterAck (databaseBeingDefined, yyvsp[0].intval); 
 
1329
                ;
 
1330
    break;}
 
1331
case 15:
 
1332
#line 97 "./fconfig.y"
 
1333
{
 
1334
                  setBusinessDay (databaseBeingDefined, yyvsp[-2].intval, yyvsp[0].intval);
 
1335
                ;
 
1336
    break;}
 
1337
case 16:
 
1338
#line 100 "./fconfig.y"
 
1339
{
 
1340
                    setBusinessWeek(databaseBeingDefined,yyvsp[-2].intval, yyvsp[0].intval);
 
1341
                ;
 
1342
    break;}
 
1343
case 17:
 
1344
#line 103 "./fconfig.y"
 
1345
{
 
1346
                    setCreateCategoryDirs (databaseBeingDefined, yyvsp[0].intval);
 
1347
                ;
 
1348
    break;}
 
1349
case 18:
 
1350
#line 106 "./fconfig.y"
 
1351
{
 
1352
                    setCategoryDirPerms (databaseBeingDefined, qStrVal (yyvsp[0].qstr));
 
1353
                ;
 
1354
    break;}
 
1355
case 19:
 
1356
#line 111 "./fconfig.y"
 
1357
{ yyval.intval = 0; ;
 
1358
    break;}
 
1359
case 20:
 
1360
#line 112 "./fconfig.y"
 
1361
{ yyval.intval = 1; ;
 
1362
    break;}
 
1363
case 22:
 
1364
#line 116 "./fconfig.y"
 
1365
{
 
1366
                    fconferror ("Missing/bad field declarations");
 
1367
                ;
 
1368
    break;}
 
1369
case 25:
 
1370
#line 125 "./fconfig.y"
 
1371
{
 
1372
                    currField = NULL;
 
1373
                ;
 
1374
    break;}
 
1375
case 26:
 
1376
#line 128 "./fconfig.y"
 
1377
{
 
1378
                    currField = NULL;
 
1379
                ;
 
1380
    break;}
 
1381
case 27:
 
1382
#line 133 "./fconfig.y"
 
1383
{
 
1384
                    char *fname = takeQString (yyvsp[0].qstr);
 
1385
                    currField = newFieldDef (databaseBeingDefined, fname);
 
1386
                    if (currField == NULL)
 
1387
                      {
 
1388
                        char *msg;
 
1389
                        asprintf (&msg, "Duplicate field definition for %s\n",
 
1390
                                  fname);
 
1391
                        fconferror (msg);
 
1392
                        free (msg);
 
1393
                      }
 
1394
                    currField->default_value = NULL;
 
1395
                ;
 
1396
    break;}
 
1397
case 34:
 
1398
#line 158 "./fconfig.y"
 
1399
{
 
1400
                    currField->virtualFormat = qformat;
 
1401
                    qformat = NULL;
 
1402
                ;
 
1403
    break;}
 
1404
case 37:
 
1405
#line 166 "./fconfig.y"
 
1406
{
 
1407
                    currField->datatype = MultiText;
 
1408
                    currField->defaultSearchType = NilSearch;
 
1409
                ;
 
1410
    break;}
 
1411
case 38:
 
1412
#line 170 "./fconfig.y"
 
1413
{
 
1414
                  currField->datatype = Date;
 
1415
                  currField->defaultSearchType = LessThan;
 
1416
                ;
 
1417
    break;}
 
1418
case 39:
 
1419
#line 174 "./fconfig.y"
 
1420
{
 
1421
                    currField->datatype = Integer;
 
1422
                    currField->defaultSearchType = NilSearch;
 
1423
                ;
 
1424
    break;}
 
1425
case 40:
 
1426
#line 178 "./fconfig.y"
 
1427
{
 
1428
                    currField->datatype = PRListType;
 
1429
                    currField->defaultSearchType = RegCmp;
 
1430
                ;
 
1431
    break;}
 
1432
case 41:
 
1433
#line 184 "./fconfig.y"
 
1434
{
 
1435
                    currField->datatype = Text;
 
1436
                ;
 
1437
    break;}
 
1438
case 42:
 
1439
#line 187 "./fconfig.y"
 
1440
{
 
1441
                    currField->datatype = TextWithRegex;
 
1442
                ;
 
1443
    break;}
 
1444
case 44:
 
1445
#line 193 "./fconfig.y"
 
1446
{
 
1447
                    yyval.stringlist = new_string_list_ent (takeQString (yyvsp[0].qstr), NULL);
 
1448
                    currField->regex = yyval.stringlist;
 
1449
                ;
 
1450
    break;}
 
1451
case 45:
 
1452
#line 197 "./fconfig.y"
 
1453
{
 
1454
                    yyvsp[-1].stringlist->next = new_string_list_ent (takeQString (yyvsp[0].qstr), NULL);
 
1455
                    yyval.stringlist = yyvsp[-1].stringlist->next;
 
1456
                ;
 
1457
    break;}
 
1458
case 46:
 
1459
#line 203 "./fconfig.y"
 
1460
{
 
1461
                    currField->datatype = Enum;
 
1462
                    currField->defaultSearchType = RegCmp;
 
1463
                ;
 
1464
    break;}
 
1465
case 47:
 
1466
#line 207 "./fconfig.y"
 
1467
{
 
1468
                    currField->datatype = Enum;
 
1469
                    currField->defaultSearchType = RegCmp;
 
1470
                    initAdmField (currField);
 
1471
                ;
 
1472
    break;}
 
1473
case 48:
 
1474
#line 212 "./fconfig.y"
 
1475
{
 
1476
                    currField->datatype = MultiEnum;
 
1477
                    currField->defaultSearchType = RegCmp;
 
1478
                    initAdmField (currField);
 
1479
                ;
 
1480
    break;}
 
1481
case 49:
 
1482
#line 217 "./fconfig.y"
 
1483
{
 
1484
                   currField->datatype = MultiEnum;
 
1485
                   currField->defaultSearchType = RegCmp;
 
1486
                   if (currField->multiEnumSeparator == NULL)
 
1487
                     {
 
1488
                       currField->multiEnumSeparator
 
1489
                         = xstrdup (DEFAULT_MULTIENUM_SEPARATOR);
 
1490
                     }
 
1491
                ;
 
1492
    break;}
 
1493
case 54:
 
1494
#line 234 "./fconfig.y"
 
1495
{
 
1496
                    addGlobalChangeActions (databaseBeingDefined, currChange);
 
1497
                    currChange = NULL;
 
1498
                ;
 
1499
    break;}
 
1500
case 55:
 
1501
#line 240 "./fconfig.y"
 
1502
{
 
1503
                    ChangeActions *p = &(currField->changeActions);
 
1504
                    while (*p != NULL)
 
1505
                      {
 
1506
                        p = &((*p)->next);
 
1507
                      }
 
1508
                    *p = currChange;
 
1509
                    currChange = NULL;
 
1510
                ;
 
1511
    break;}
 
1512
case 56:
 
1513
#line 251 "./fconfig.y"
 
1514
{
 
1515
                    currChange = newChangeAction (databaseBeingDefined, yyvsp[-1].sval);
 
1516
                    if (yyvsp[-1].sval != NULL) 
 
1517
                      {
 
1518
                        free (yyvsp[-1].sval);
 
1519
                      }
 
1520
                ;
 
1521
    break;}
 
1522
case 57:
 
1523
#line 260 "./fconfig.y"
 
1524
{
 
1525
                    yyval.sval = takeQString (yyvsp[0].qstr);
 
1526
                ;
 
1527
    break;}
 
1528
case 58:
 
1529
#line 263 "./fconfig.y"
 
1530
{
 
1531
                    yyval.sval = NULL;
 
1532
                ;
 
1533
    break;}
 
1534
case 63:
 
1535
#line 274 "./fconfig.y"
 
1536
{
 
1537
                    currChange->edits = currEdit;
 
1538
                    currEdit = NULL;
 
1539
                ;
 
1540
    break;}
 
1541
case 64:
 
1542
#line 278 "./fconfig.y"
 
1543
{
 
1544
                    currEdit->append = 1;
 
1545
                    currChange->edits = currEdit;
 
1546
                    currEdit = NULL;
 
1547
                ;
 
1548
    break;}
 
1549
case 65:
 
1550
#line 283 "./fconfig.y"
 
1551
{
 
1552
                    currChange->addAuditTrail = 1;
 
1553
                ;
 
1554
    break;}
 
1555
case 66:
 
1556
#line 286 "./fconfig.y"
 
1557
{
 
1558
                    currChange->auditTrailFormat = qformat;
 
1559
                    qformat = NULL;
 
1560
                ;
 
1561
    break;}
 
1562
case 67:
 
1563
#line 290 "./fconfig.y"
 
1564
{
 
1565
                    currChange->requireChangeReason = 1;
 
1566
                ;
 
1567
    break;}
 
1568
case 70:
 
1569
#line 299 "./fconfig.y"
 
1570
{
 
1571
                    FieldList foo 
 
1572
                      = newFieldListEnt (databaseBeingDefined, qStrVal (yyvsp[0].qstr),
 
1573
                                         currChange->requiredFields);
 
1574
                    currChange->requiredFields = foo;
 
1575
                ;
 
1576
    break;}
 
1577
case 73:
 
1578
#line 311 "./fconfig.y"
 
1579
{
 
1580
                    currEdit = (FieldEdit *) xmalloc (sizeof (FieldEdit));
 
1581
                    currEdit->expr = NULL;
 
1582
                    currEdit->fieldToEditName = takeQString (yyvsp[0].qstr);
 
1583
                    currEdit->append = 0;
 
1584
                    currEdit->textFormat = NULL;
 
1585
                    currEdit->fieldsForFormat = NULL;
 
1586
                    currEdit->next = NULL;
 
1587
                ;
 
1588
    break;}
 
1589
case 74:
 
1590
#line 322 "./fconfig.y"
 
1591
{
 
1592
                    currEdit->textFormat = takeQString (yyvsp[0].qstr);
 
1593
                ;
 
1594
    break;}
 
1595
case 75:
 
1596
#line 327 "./fconfig.y"
 
1597
{
 
1598
                    currEdit->fieldsForFormat = NULL;
 
1599
                ;
 
1600
    break;}
 
1601
case 76:
 
1602
#line 330 "./fconfig.y"
 
1603
{
 
1604
                ;
 
1605
    break;}
 
1606
case 77:
 
1607
#line 334 "./fconfig.y"
 
1608
{
 
1609
                    yyval.flist = newFieldListEnt (databaseBeingDefined, qStrVal (yyvsp[0].qstr),
 
1610
                                          NULL);
 
1611
                    currEdit->fieldsForFormat = yyval.flist;
 
1612
                ;
 
1613
    break;}
 
1614
case 78:
 
1615
#line 339 "./fconfig.y"
 
1616
{
 
1617
                    yyval.flist = newFieldListEnt (databaseBeingDefined, qStrVal (yyvsp[0].qstr),
 
1618
                                          NULL);
 
1619
                    yyvsp[-1].flist->next = yyval.flist;
 
1620
                ;
 
1621
    break;}
 
1622
case 84:
 
1623
#line 355 "./fconfig.y"
 
1624
{
 
1625
                    currField->maxPrsPerLine = yyvsp[0].intval;
 
1626
                ;
 
1627
    break;}
 
1628
case 90:
 
1629
#line 369 "./fconfig.y"
 
1630
{
 
1631
                   currField->multiEnumSeparator = takeQString (yyvsp[0].qstr);
 
1632
                ;
 
1633
    break;}
 
1634
case 94:
 
1635
#line 379 "./fconfig.y"
 
1636
{
 
1637
                    yyval.stringlist = new_string_list_ent (takeQString (yyvsp[0].qstr), NULL);
 
1638
                    currField->enumValues = yyval.stringlist;
 
1639
                ;
 
1640
    break;}
 
1641
case 95:
 
1642
#line 383 "./fconfig.y"
 
1643
{
 
1644
                    yyvsp[-1].stringlist->next = new_string_list_ent (takeQString (yyvsp[0].qstr), NULL);
 
1645
                    yyval.stringlist = yyvsp[-1].stringlist->next;
 
1646
                ;
 
1647
    break;}
 
1648
case 98:
 
1649
#line 393 "./fconfig.y"
 
1650
{
 
1651
                    currField->adm_db_name = takeQString (yyvsp[0].qstr);
 
1652
                ;
 
1653
    break;}
 
1654
case 99:
 
1655
#line 396 "./fconfig.y"
 
1656
{
 
1657
                    AdmFieldDesc *p;
 
1658
                    int which = 0;
 
1659
 
 
1660
                    for (p = currField->adm_field_des; p != NULL; p = p->next)
 
1661
                      {
 
1662
                        if (strcmp (p->name, qStrVal (yyvsp[0].qstr)) == 0)
 
1663
                          {
 
1664
                            break;
 
1665
                          }
 
1666
                        which++;
 
1667
                      }
 
1668
 
 
1669
                    if (p != NULL)
 
1670
                      {
 
1671
                        currField->key_field = which;
 
1672
                      }
 
1673
                    else
 
1674
                      {
 
1675
                        char *msg;
 
1676
 
 
1677
                        asprintf (&msg, "Invalid adm subfield %s\n",
 
1678
                                  qStrVal (yyvsp[0].qstr));
 
1679
                        fconferror (msg);
 
1680
                        free (msg);
 
1681
                      }
 
1682
                ;
 
1683
    break;}
 
1684
case 102:
 
1685
#line 425 "./fconfig.y"
 
1686
{
 
1687
                    currField->allow_any_value = 1;
 
1688
                ;
 
1689
    break;}
 
1690
case 106:
 
1691
#line 435 "./fconfig.y"
 
1692
{
 
1693
                   currField->multiEnumSeparator = takeQString (yyvsp[0].qstr);
 
1694
                ;
 
1695
    break;}
 
1696
case 107:
 
1697
#line 440 "./fconfig.y"
 
1698
{
 
1699
                    currField->default_value = takeQString (yyvsp[0].qstr);
 
1700
                ;
 
1701
    break;}
 
1702
case 108:
 
1703
#line 443 "./fconfig.y"
 
1704
{
 
1705
                    currField->input_default_value = takeQString (yyvsp[0].qstr);
 
1706
                ;
 
1707
    break;}
 
1708
case 109:
 
1709
#line 448 "./fconfig.y"
 
1710
{
 
1711
                    currField->adm_db_fields = 1;
 
1712
                    currField->adm_field_des = yyvsp[0].adm_field_des;
 
1713
                    yyval.adm_field_des = yyvsp[0].adm_field_des;
 
1714
                ;
 
1715
    break;}
 
1716
case 110:
 
1717
#line 453 "./fconfig.y"
 
1718
{
 
1719
                    yyvsp[-1].adm_field_des->next = yyvsp[0].adm_field_des;
 
1720
                    yyval.adm_field_des = yyvsp[0].adm_field_des;
 
1721
                    currField->adm_db_fields++;
 
1722
                ;
 
1723
    break;}
 
1724
case 111:
 
1725
#line 460 "./fconfig.y"
 
1726
{
 
1727
                    yyval.adm_field_des = (AdmFieldDesc *) 
 
1728
                      xmalloc (sizeof (AdmFieldDesc));
 
1729
                    yyval.adm_field_des->name = takeQString (yyvsp[0].qstr);
 
1730
                    yyval.adm_field_des->next = NULL;
 
1731
                ;
 
1732
    break;}
 
1733
case 112:
 
1734
#line 468 "./fconfig.y"
 
1735
{
 
1736
                    currField->defaultSearchType = RegCmp;
 
1737
                ;
 
1738
    break;}
 
1739
case 113:
 
1740
#line 471 "./fconfig.y"
 
1741
{
 
1742
                    currField->defaultSearchType = RegFind;
 
1743
                ;
 
1744
    break;}
 
1745
case 114:
 
1746
#line 476 "./fconfig.y"
 
1747
{
 
1748
                    currField->textsearch = 1;
 
1749
                ;
 
1750
    break;}
 
1751
case 115:
 
1752
#line 479 "./fconfig.y"
 
1753
{
 
1754
                    currField->restricted = 1;
 
1755
                ;
 
1756
    break;}
 
1757
case 116:
 
1758
#line 482 "./fconfig.y"
 
1759
{
 
1760
                     currField->nospaces = 1;
 
1761
                ;
 
1762
    break;}
 
1763
case 117:
 
1764
#line 485 "./fconfig.y"
 
1765
{
 
1766
                    if (setBuiltinField (currField, qStrVal (yyvsp[0].qstr)) != 0)
 
1767
                      {
 
1768
                        char *msg;
 
1769
                        asprintf (&msg, "Invalid builtin fieldname %s",
 
1770
                                  qStrVal (yyvsp[0].qstr));
 
1771
                        fconferror (msg);
 
1772
                        free (msg);
 
1773
                      }
 
1774
                ;
 
1775
    break;}
 
1776
case 119:
 
1777
#line 496 "./fconfig.y"
 
1778
{
 
1779
                    currField->description = takeQString (yyvsp[0].qstr);
 
1780
                ;
 
1781
    break;}
 
1782
case 120:
 
1783
#line 499 "./fconfig.y"
 
1784
{
 
1785
                    currField->readonly = 1;
 
1786
                ;
 
1787
    break;}
 
1788
case 121:
 
1789
#line 502 "./fconfig.y"
 
1790
{
 
1791
                    currField->auxFlags = yyvsp[-1].stringlist;
 
1792
                ;
 
1793
    break;}
 
1794
case 122:
 
1795
#line 505 "./fconfig.y"
 
1796
{
 
1797
                    currField->editonly = 1;
 
1798
                ;
 
1799
    break;}
 
1800
case 123:
 
1801
#line 510 "./fconfig.y"
 
1802
{
 
1803
                    yyval.stringlist = new_string_list_ent (takeQString (yyvsp[0].qstr), NULL);
 
1804
                    currField->auxFlags = yyval.stringlist;
 
1805
                ;
 
1806
    break;}
 
1807
case 124:
 
1808
#line 514 "./fconfig.y"
 
1809
{
 
1810
                    yyvsp[-1].stringlist->next = new_string_list_ent (takeQString (yyvsp[0].qstr), NULL);
 
1811
                    yyval.stringlist = yyvsp[-1].stringlist->next;
 
1812
                ;
 
1813
    break;}
 
1814
case 129:
 
1815
#line 528 "./fconfig.y"
 
1816
{
 
1817
                    addQueryFormat (databaseBeingDefined, qformat);
 
1818
                    qformat = NULL;
 
1819
                ;
 
1820
    break;}
 
1821
case 130:
 
1822
#line 532 "./fconfig.y"
 
1823
{
 
1824
                    freeQueryFormat (qformat);
 
1825
                    qformat = NULL;
 
1826
                ;
 
1827
    break;}
 
1828
case 131:
 
1829
#line 538 "./fconfig.y"
 
1830
{
 
1831
                    qformat = (QueryFormat *) xmalloc (sizeof (QueryFormat));
 
1832
                    qformat->name = takeQString (yyvsp[0].qstr);
 
1833
                    qformat->printf = NULL;
 
1834
                    qformat->separator = NULL;
 
1835
                    qformat->fields = NULL;
 
1836
                    qformat->next = NULL;
 
1837
                ;
 
1838
    break;}
 
1839
case 140:
 
1840
#line 562 "./fconfig.y"
 
1841
{
 
1842
                    qformat->rawQuery = 1;
 
1843
                ;
 
1844
    break;}
 
1845
case 141:
 
1846
#line 567 "./fconfig.y"
 
1847
{
 
1848
                    qformat->printf = takeQString (yyvsp[0].qstr);
 
1849
                ;
 
1850
    break;}
 
1851
case 144:
 
1852
#line 576 "./fconfig.y"
 
1853
{
 
1854
                    qformat->fields = yyvsp[0].flist;
 
1855
                ;
 
1856
    break;}
 
1857
case 145:
 
1858
#line 579 "./fconfig.y"
 
1859
{
 
1860
                    yyvsp[-1].flist->next = yyvsp[0].flist;
 
1861
                    yyval.flist = yyvsp[0].flist;
 
1862
                ;
 
1863
    break;}
 
1864
case 146:
 
1865
#line 585 "./fconfig.y"
 
1866
{
 
1867
                    yyval.flist = newFieldListEnt (databaseBeingDefined, qStrVal (yyvsp[0].qstr),
 
1868
                                          NULL);
 
1869
                    if (parseComplexFieldIndex (yyval.flist->ent) != 0)
 
1870
                      {
 
1871
                        char *msg;
 
1872
 
 
1873
                        asprintf (&msg, "Field %s is invalid\n", qStrVal (yyvsp[0].qstr));
 
1874
                        fconferror (msg);
 
1875
                        free (msg);
 
1876
                      }
 
1877
                ;
 
1878
    break;}
 
1879
case 147:
 
1880
#line 599 "./fconfig.y"
 
1881
{
 
1882
                    setIndexDesc (databaseBeingDefined, indexEntry);
 
1883
                    indexEntry = NULL;
 
1884
                ;
 
1885
    break;}
 
1886
case 148:
 
1887
#line 603 "./fconfig.y"
 
1888
{
 
1889
                    freeIndexDesc (indexEntry);
 
1890
                    indexEntry = NULL;
 
1891
                ;
 
1892
    break;}
 
1893
case 150:
 
1894
#line 610 "./fconfig.y"
 
1895
{
 
1896
                    indexEntry = newIndexDesc (databaseBeingDefined);
 
1897
                ;
 
1898
    break;}
 
1899
case 153:
 
1900
#line 619 "./fconfig.y"
 
1901
{
 
1902
                    setIndexDescPath (indexEntry, qStrVal (yyvsp[0].qstr));
 
1903
                ;
 
1904
    break;}
 
1905
case 157:
 
1906
#line 627 "./fconfig.y"
 
1907
{
 
1908
                    addFieldToIndex (indexEntry, yyvsp[0].flist);
 
1909
                ;
 
1910
    break;}
 
1911
case 158:
 
1912
#line 630 "./fconfig.y"
 
1913
{
 
1914
                    addFieldToIndex (indexEntry, yyvsp[0].flist);
 
1915
                ;
 
1916
    break;}
 
1917
case 159:
 
1918
#line 635 "./fconfig.y"
 
1919
{
 
1920
                    setIndexDescSeparator (indexEntry, takeQString (yyvsp[0].qstr));
 
1921
                ;
 
1922
    break;}
 
1923
case 160:
 
1924
#line 638 "./fconfig.y"
 
1925
{
 
1926
                    setIndexDescBinary (indexEntry, yyvsp[0].intval);
 
1927
                ;
 
1928
    break;}
 
1929
case 163:
 
1930
#line 647 "./fconfig.y"
 
1931
{
 
1932
                    setInputTemplate (databaseBeingDefined, yyvsp[-1].inputlist);
 
1933
                ;
 
1934
    break;}
 
1935
case 165:
 
1936
#line 653 "./fconfig.y"
 
1937
{
 
1938
                    setRequiredInputFields (databaseBeingDefined, requiredFlds);
 
1939
                ;
 
1940
    break;}
 
1941
case 166:
 
1942
#line 656 "./fconfig.y"
 
1943
{
 
1944
                    freeFieldList (requiredFlds);
 
1945
                    requiredFlds = NULL;
 
1946
                ;
 
1947
    break;}
 
1948
case 167:
 
1949
#line 662 "./fconfig.y"
 
1950
{
 
1951
                    requiredFlds = yyvsp[0].flist;
 
1952
                ;
 
1953
    break;}
 
1954
case 168:
 
1955
#line 665 "./fconfig.y"
 
1956
{
 
1957
                    yyvsp[-1].flist->next = yyvsp[0].flist;
 
1958
                    yyval.flist = yyvsp[0].flist;
 
1959
                ;
 
1960
    break;}
 
1961
case 169:
 
1962
#line 671 "./fconfig.y"
 
1963
{
 
1964
                    yyval.inputlist = inputTemplate;
 
1965
                    inputTemplate = NULL;
 
1966
                ;
 
1967
    break;}
 
1968
case 170:
 
1969
#line 675 "./fconfig.y"
 
1970
{
 
1971
                    yyval.inputlist = NULL;
 
1972
                ;
 
1973
    break;}
 
1974
case 171:
 
1975
#line 680 "./fconfig.y"
 
1976
{
 
1977
                     yyval.inputlist = (InputTemplate *) 
 
1978
                       xmalloc (sizeof (InputTemplate));
 
1979
                     yyval.inputlist->index = find_field_index (databaseBeingDefined,
 
1980
                                                   qStrVal (yyvsp[0].qstr));
 
1981
                     if (yyval.inputlist->index == InvalidFieldIndex)
 
1982
                       {
 
1983
                         char *msg;
 
1984
 
 
1985
                         asprintf (&msg, "Field %s is invalid\n",
 
1986
                                   qStrVal (yyvsp[0].qstr));
 
1987
                         fconferror (msg);
 
1988
                         free (yyval.inputlist);
 
1989
                         free (msg);
 
1990
                         inputTemplate = NULL;
 
1991
                       }
 
1992
                     else
 
1993
                       {
 
1994
                         inputTemplate = yyval.inputlist;
 
1995
                         yyval.inputlist->next = NULL;
 
1996
                       }
 
1997
                ;
 
1998
    break;}
 
1999
case 172:
 
2000
#line 702 "./fconfig.y"
 
2001
{
 
2002
                     yyval.inputlist = (InputTemplate *)
 
2003
                       xmalloc (sizeof (InputTemplate));
 
2004
                     yyval.inputlist->index = find_field_index (databaseBeingDefined,
 
2005
                                                   qStrVal (yyvsp[0].qstr));
 
2006
                     if (yyval.inputlist->index == InvalidFieldIndex)
 
2007
                       {
 
2008
                         char *msg;
 
2009
 
 
2010
                         asprintf (&msg, "Field %s is invalid\n",
 
2011
                                   qStrVal (yyvsp[0].qstr));
 
2012
                         fconferror (msg);
 
2013
                         free (msg);
 
2014
                         free (yyval.inputlist);
 
2015
                       }
 
2016
                     else
 
2017
                       {
 
2018
                         yyval.inputlist->next = NULL;
 
2019
                         yyvsp[-1].inputlist->next = yyval.inputlist;
 
2020
                         if (inputTemplate == NULL)
 
2021
                           {
 
2022
                             inputTemplate = yyval.inputlist;
 
2023
                           }
 
2024
                       }
 
2025
                ;
 
2026
    break;}
 
2027
case 175:
 
2028
#line 733 "./fconfig.y"
 
2029
{
 
2030
                    addMessageFormat (databaseBeingDefined, mailFormat);
 
2031
                    mailFormat = NULL;
 
2032
                ;
 
2033
    break;}
 
2034
case 176:
 
2035
#line 737 "./fconfig.y"
 
2036
{
 
2037
                    freeMessageFormat (mailFormat);
 
2038
                    mailFormat = NULL;
 
2039
                ;
 
2040
    break;}
 
2041
case 177:
 
2042
#line 743 "./fconfig.y"
 
2043
{
 
2044
                    mailFormat 
 
2045
                      = (MailMessageFormat)
 
2046
                      xmalloc (sizeof (struct mail_message_format));
 
2047
                    mailFormat->name = takeQString (yyvsp[0].qstr);
 
2048
                    mailFormat->toAddresses = NULL;
 
2049
                    mailFormat->fromAddress = NULL;
 
2050
                    mailFormat->replyTo = NULL;
 
2051
                    mailFormat->body = NULL;
 
2052
                    mailFormat->header = NULL;
 
2053
                    mailFormat->next = NULL;
 
2054
                ;
 
2055
    break;}
 
2056
case 180:
 
2057
#line 761 "./fconfig.y"
 
2058
{
 
2059
                    mailFormat->body = qformat;
 
2060
                    qformat = NULL;
 
2061
                ;
 
2062
    break;}
 
2063
case 181:
 
2064
#line 765 "./fconfig.y"
 
2065
{
 
2066
                    mailFormat->header = qformat;
 
2067
                    qformat = NULL;
 
2068
                ;
 
2069
    break;}
 
2070
case 182:
 
2071
#line 769 "./fconfig.y"
 
2072
{
 
2073
                    mailFormat->toAddresses = yyvsp[-1].mailaddrlist;
 
2074
                ;
 
2075
    break;}
 
2076
case 183:
 
2077
#line 772 "./fconfig.y"
 
2078
{
 
2079
                    mailFormat->fromAddress = yyvsp[-1].mailaddr;
 
2080
                ;
 
2081
    break;}
 
2082
case 184:
 
2083
#line 775 "./fconfig.y"
 
2084
{
 
2085
                  mailFormat->replyTo = yyvsp[-1].mailaddrlist;
 
2086
                ;
 
2087
    break;}
 
2088
case 188:
 
2089
#line 787 "./fconfig.y"
 
2090
{
 
2091
                    freeQueryFormat (qformat);
 
2092
                    qformat = NULL;
 
2093
                ;
 
2094
    break;}
 
2095
case 189:
 
2096
#line 793 "./fconfig.y"
 
2097
{
 
2098
                    qformat = (QueryFormat *) xmalloc (sizeof (QueryFormat));
 
2099
                    qformat->name = NULL;
 
2100
                    qformat->printf = NULL;
 
2101
                    qformat->separator = NULL;
 
2102
                    qformat->fields = NULL;
 
2103
                    qformat->next = NULL;
 
2104
                ;
 
2105
    break;}
 
2106
case 190:
 
2107
#line 803 "./fconfig.y"
 
2108
{
 
2109
                   yyval.mailaddrlist = (MailAddressList *) xmalloc (sizeof (MailAddressList));
 
2110
                   yyval.mailaddrlist->address = yyvsp[0].mailaddr;
 
2111
                   yyval.mailaddrlist->next = NULL;
 
2112
                ;
 
2113
    break;}
 
2114
case 191:
 
2115
#line 808 "./fconfig.y"
 
2116
{
 
2117
                   MailAddressList *lp = yyval.mailaddrlist;
 
2118
                   while (lp->next != NULL) { lp = lp->next; }
 
2119
                   lp->next =
 
2120
                     (MailAddressList *) xmalloc (sizeof (MailAddressList));
 
2121
                   lp->next->address = yyvsp[0].mailaddr;
 
2122
                   lp->next->next = NULL;
 
2123
                ;
 
2124
    break;}
 
2125
case 192:
 
2126
#line 818 "./fconfig.y"
 
2127
{
 
2128
                    yyval.mailaddr = (MailAddress *) xmalloc (sizeof (MailAddress));
 
2129
                    yyval.mailaddr->fixedAddress = takeQString (yyvsp[0].qstr);
 
2130
                    yyval.mailaddr->addresses = NULL;
 
2131
                ;
 
2132
    break;}
 
2133
case 193:
 
2134
#line 823 "./fconfig.y"
 
2135
{
 
2136
                    yyval.mailaddr = (MailAddress *) xmalloc (sizeof (MailAddress));
 
2137
                    yyval.mailaddr->fixedAddress = NULL;
 
2138
                    yyval.mailaddr->addresses = yyvsp[0].flist;
 
2139
                ;
 
2140
    break;}
 
2141
case 194:
 
2142
#line 830 "./fconfig.y"
 
2143
{
 
2144
                    yyval.flist = yyvsp[0].flist;
 
2145
                ;
 
2146
    break;}
 
2147
case 195:
 
2148
#line 833 "./fconfig.y"
 
2149
{
 
2150
                    FieldList p = yyval.flist;
 
2151
                    while (p->next != NULL) 
 
2152
                      {
 
2153
                        p = p->next;
 
2154
                      }
 
2155
                    p->next = yyvsp[0].flist;
 
2156
                ;
 
2157
    break;}
 
2158
case 196:
 
2159
#line 843 "./fconfig.y"
 
2160
{
 
2161
                    yyval.flist = newFieldListEnt (databaseBeingDefined, qStrVal (yyvsp[0].qstr),
 
2162
                                          NULL);
 
2163
                ;
 
2164
    break;}
 
2165
case 197:
 
2166
#line 849 "./fconfig.y"
 
2167
{
 
2168
                    setAuditTrailFormat (databaseBeingDefined, qformat);
 
2169
                ;
 
2170
    break;}
 
2171
}
 
2172
 
 
2173
#line 706 "/usr/share/bison/bison.simple"
 
2174
 
 
2175
 
 
2176
  yyvsp -= yylen;
 
2177
  yyssp -= yylen;
 
2178
#if YYLSP_NEEDED
 
2179
  yylsp -= yylen;
 
2180
#endif
 
2181
 
 
2182
#if YYDEBUG
 
2183
  if (yydebug)
 
2184
    {
 
2185
      short *yyssp1 = yyss - 1;
 
2186
      YYFPRINTF (stderr, "state stack now");
 
2187
      while (yyssp1 != yyssp)
 
2188
        YYFPRINTF (stderr, " %d", *++yyssp1);
 
2189
      YYFPRINTF (stderr, "\n");
 
2190
    }
 
2191
#endif
 
2192
 
 
2193
  *++yyvsp = yyval;
 
2194
#if YYLSP_NEEDED
 
2195
  *++yylsp = yyloc;
 
2196
#endif
 
2197
 
 
2198
  /* Now `shift' the result of the reduction.  Determine what state
 
2199
     that goes to, based on the state we popped back to and the rule
 
2200
     number reduced by.  */
 
2201
 
 
2202
  yyn = yyr1[yyn];
 
2203
 
 
2204
  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
 
2205
  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
 
2206
    yystate = yytable[yystate];
 
2207
  else
 
2208
    yystate = yydefgoto[yyn - YYNTBASE];
 
2209
 
 
2210
  goto yynewstate;
 
2211
 
 
2212
 
 
2213
/*------------------------------------.
 
2214
| yyerrlab -- here on detecting error |
 
2215
`------------------------------------*/
 
2216
yyerrlab:
 
2217
  /* If not already recovering from an error, report this error.  */
 
2218
  if (!yyerrstatus)
 
2219
    {
 
2220
      ++yynerrs;
 
2221
 
 
2222
#ifdef YYERROR_VERBOSE
 
2223
      yyn = yypact[yystate];
 
2224
 
 
2225
      if (yyn > YYFLAG && yyn < YYLAST)
 
2226
        {
 
2227
          YYSIZE_T yysize = 0;
 
2228
          char *yymsg;
 
2229
          int yyx, yycount;
 
2230
 
 
2231
          yycount = 0;
 
2232
          /* Start YYX at -YYN if negative to avoid negative indexes in
 
2233
             YYCHECK.  */
 
2234
          for (yyx = yyn < 0 ? -yyn : 0;
 
2235
               yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
 
2236
            if (yycheck[yyx + yyn] == yyx)
 
2237
              yysize += yystrlen (yytname[yyx]) + 15, yycount++;
 
2238
          yysize += yystrlen ("parse error, unexpected ") + 1;
 
2239
          yysize += yystrlen (yytname[YYTRANSLATE (yychar)]);
 
2240
          yymsg = (char *) YYSTACK_ALLOC (yysize);
 
2241
          if (yymsg != 0)
 
2242
            {
 
2243
              char *yyp = yystpcpy (yymsg, "parse error, unexpected ");
 
2244
              yyp = yystpcpy (yyp, yytname[YYTRANSLATE (yychar)]);
 
2245
 
 
2246
              if (yycount < 5)
 
2247
                {
 
2248
                  yycount = 0;
 
2249
                  for (yyx = yyn < 0 ? -yyn : 0;
 
2250
                       yyx < (int) (sizeof (yytname) / sizeof (char *));
 
2251
                       yyx++)
 
2252
                    if (yycheck[yyx + yyn] == yyx)
 
2253
                      {
 
2254
                        const char *yyq = ! yycount ? ", expecting " : " or ";
 
2255
                        yyp = yystpcpy (yyp, yyq);
 
2256
                        yyp = yystpcpy (yyp, yytname[yyx]);
 
2257
                        yycount++;
 
2258
                      }
 
2259
                }
 
2260
              yyerror (yymsg);
 
2261
              YYSTACK_FREE (yymsg);
 
2262
            }
 
2263
          else
 
2264
            yyerror ("parse error; also virtual memory exhausted");
 
2265
        }
 
2266
      else
 
2267
#endif /* defined (YYERROR_VERBOSE) */
 
2268
        yyerror ("parse error");
 
2269
    }
 
2270
  goto yyerrlab1;
 
2271
 
 
2272
 
 
2273
/*--------------------------------------------------.
 
2274
| yyerrlab1 -- error raised explicitly by an action |
 
2275
`--------------------------------------------------*/
 
2276
yyerrlab1:
 
2277
  if (yyerrstatus == 3)
 
2278
    {
 
2279
      /* If just tried and failed to reuse lookahead token after an
 
2280
         error, discard it.  */
 
2281
 
 
2282
      /* return failure if at end of input */
 
2283
      if (yychar == YYEOF)
 
2284
        YYABORT;
 
2285
      YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
 
2286
                  yychar, yytname[yychar1]));
 
2287
      yychar = YYEMPTY;
 
2288
    }
 
2289
 
 
2290
  /* Else will try to reuse lookahead token after shifting the error
 
2291
     token.  */
 
2292
 
 
2293
  yyerrstatus = 3;              /* Each real token shifted decrements this */
 
2294
 
 
2295
  goto yyerrhandle;
 
2296
 
 
2297
 
 
2298
/*-------------------------------------------------------------------.
 
2299
| yyerrdefault -- current state does not do anything special for the |
 
2300
| error token.                                                       |
 
2301
`-------------------------------------------------------------------*/
 
2302
yyerrdefault:
 
2303
#if 0
 
2304
  /* This is wrong; only states that explicitly want error tokens
 
2305
     should shift them.  */
 
2306
 
 
2307
  /* If its default is to accept any token, ok.  Otherwise pop it.  */
 
2308
  yyn = yydefact[yystate];
 
2309
  if (yyn)
 
2310
    goto yydefault;
 
2311
#endif
 
2312
 
 
2313
 
 
2314
/*---------------------------------------------------------------.
 
2315
| yyerrpop -- pop the current state because it cannot handle the |
 
2316
| error token                                                    |
 
2317
`---------------------------------------------------------------*/
 
2318
yyerrpop:
 
2319
  if (yyssp == yyss)
 
2320
    YYABORT;
 
2321
  yyvsp--;
 
2322
  yystate = *--yyssp;
 
2323
#if YYLSP_NEEDED
 
2324
  yylsp--;
 
2325
#endif
 
2326
 
 
2327
#if YYDEBUG
 
2328
  if (yydebug)
 
2329
    {
 
2330
      short *yyssp1 = yyss - 1;
 
2331
      YYFPRINTF (stderr, "Error: state stack now");
 
2332
      while (yyssp1 != yyssp)
 
2333
        YYFPRINTF (stderr, " %d", *++yyssp1);
 
2334
      YYFPRINTF (stderr, "\n");
 
2335
    }
 
2336
#endif
 
2337
 
 
2338
/*--------------.
 
2339
| yyerrhandle.  |
 
2340
`--------------*/
 
2341
yyerrhandle:
 
2342
  yyn = yypact[yystate];
 
2343
  if (yyn == YYFLAG)
 
2344
    goto yyerrdefault;
 
2345
 
 
2346
  yyn += YYTERROR;
 
2347
  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
 
2348
    goto yyerrdefault;
 
2349
 
 
2350
  yyn = yytable[yyn];
 
2351
  if (yyn < 0)
 
2352
    {
 
2353
      if (yyn == YYFLAG)
 
2354
        goto yyerrpop;
 
2355
      yyn = -yyn;
 
2356
      goto yyreduce;
 
2357
    }
 
2358
  else if (yyn == 0)
 
2359
    goto yyerrpop;
 
2360
 
 
2361
  if (yyn == YYFINAL)
 
2362
    YYACCEPT;
 
2363
 
 
2364
  YYDPRINTF ((stderr, "Shifting error token, "));
 
2365
 
 
2366
  *++yyvsp = yylval;
 
2367
#if YYLSP_NEEDED
 
2368
  *++yylsp = yylloc;
 
2369
#endif
 
2370
 
 
2371
  yystate = yyn;
 
2372
  goto yynewstate;
 
2373
 
 
2374
 
 
2375
/*-------------------------------------.
 
2376
| yyacceptlab -- YYACCEPT comes here.  |
 
2377
`-------------------------------------*/
 
2378
yyacceptlab:
 
2379
  yyresult = 0;
 
2380
  goto yyreturn;
 
2381
 
 
2382
/*-----------------------------------.
 
2383
| yyabortlab -- YYABORT comes here.  |
 
2384
`-----------------------------------*/
 
2385
yyabortlab:
 
2386
  yyresult = 1;
 
2387
  goto yyreturn;
 
2388
 
 
2389
/*---------------------------------------------.
 
2390
| yyoverflowab -- parser overflow comes here.  |
 
2391
`---------------------------------------------*/
 
2392
yyoverflowlab:
 
2393
  yyerror ("parser stack overflow");
 
2394
  yyresult = 2;
 
2395
  /* Fall through.  */
 
2396
 
 
2397
yyreturn:
 
2398
#ifndef yyoverflow
 
2399
  if (yyss != yyssa)
 
2400
    YYSTACK_FREE (yyss);
 
2401
#endif
 
2402
  return yyresult;
 
2403
}
 
2404
#line 853 "./fconfig.y"