1 /* This module contains the parameter parses. All functions
2 have the same calling parameters. */
3
4 #ifndef OS_2
5 #pragma warn -par
6 #endif
7
8 int Packet2Except=0;
9
ProcParCheckFile(char * Token,S_FQAddress Main)10 int ProcParCheckFile (char *Token, S_FQAddress Main)
11 {
12 return (CheckFiles.AddString (Token));
13 }
14
ProcParPassword(char * Token,S_FQAddress Main)15 int ProcParPassword (char *Token, S_FQAddress Main)
16 {
17 if (PasswordHandler.Process (Token)!=SUCCESS)
18 {
19 printf ("Fatal: %s can't be parsed.\n",Token);
20 return FATAL;
21 }
22 return SUCCESS;
23 }
24
ProcParInbound(char * Token,S_FQAddress Main)25 int ProcParInbound (char *Token, S_FQAddress Main)
26 {
27 if (InboundHandler.AddItem(Token) != SUCCESS)
28 {
29 printf ("Fatal: Out of memory.\n");
30 return FATAL;
31 }
32 return SUCCESS;
33 }
34
35
ProcParNetmail(char * Token,S_FQAddress Main)36 int ProcParNetmail (char *Token, S_FQAddress Main)
37 {
38 int Result=SUCCESS;
39 char NetmailDirectory[256];
40 strcpy (NetmailDirectory,Token);
41 if (NetmailDirectory[strlen (NetmailDirectory)-1]!=':' &&
42 NetmailDirectory[strlen (NetmailDirectory)-1]!=DIRSEPC)
43 strcat (NetmailDirectory,DIRSEPS);
44 SL_NetmailDir.AddString (NetmailDirectory);
45 #ifdef DEBUG
46 printf ("Added Netmail directory %s.\n",NetmailDirectory);
47 #endif
48 return Result;
49 }
50
51 #ifdef SQUISHCFS
ProcParNetSquish(char * Token,S_FQAddress Main)52 int ProcParNetSquish (char *Token, S_FQAddress Main)
53 {
54 int Result=SUCCESS;
55 char SquishBase[256];
56 strcpy (SquishBase,"!");
57 strcat (SquishBase,Token);
58 SL_NetmailDir.AddString (SquishBase);
59 UseSquish=1;
60 #ifdef DEBUG
61 printf ("Added Squishbase %s.\n",SquishBase);
62 #endif
63 return Result;
64 }
65
ProcParNetJam(char * Token,S_FQAddress Main)66 int ProcParNetJam (char *Token, S_FQAddress Main)
67 {
68 int Result=SUCCESS;
69 char SquishBase[256];
70 strcpy (SquishBase,"?");
71 strcat (SquishBase,Token);
72 SL_NetmailDir.AddString (SquishBase);
73 UseSquish=1;
74 #ifdef DEBUG
75 printf ("Added Jambase %s.\n",SquishBase);
76 #endif
77 return Result;
78 }
79 #endif
80
ProcParOutboundDir(char * Token,S_FQAddress Main)81 int ProcParOutboundDir (char *Token, S_FQAddress Main)
82 {
83 if (OutboundDirSetup)
84 {
85 printf ("Warning: already had outbound directory (%s)\n",OutboundDirectory);
86 WarningCount++;
87 }
88 strcpy (OutboundDirectory,Token);
89 if (OutboundDirectory[strlen (OutboundDirectory)-1]==DIRSEPC)
90 OutboundDirectory[strlen (OutboundDirectory)-1]=0;
91 #ifdef DEBUG
92 printf ("Outbound directory is %s.\n",OutboundDirectory);
93 #endif
94 OutboundDirSetup=1;
95 return SUCCESS;
96 }
97
ProcParQQQOutboundDir(char * Token,S_FQAddress Main)98 int ProcParQQQOutboundDir (char *Token, S_FQAddress Main)
99 {
100 if (QQQOutboundDirSetup)
101 {
102 printf ("Warning: already had QQQ outbound directory (%s)\n",QQQOutboundDirectory);
103 WarningCount++;
104 }
105 strcpy (QQQOutboundDirectory,Token);
106 if (QQQOutboundDirectory[strlen (QQQOutboundDirectory)-1]==DIRSEPC)
107 QQQOutboundDirectory[strlen (QQQOutboundDirectory)-1]=0;
108 #ifdef DEBUG
109 printf ("QQQ Outbound directory is %s.\n",QQQOutboundDirectory);
110 #endif
111 QQQOutboundDirSetup=1;
112 return SUCCESS;
113 }
114
115
116
117
InitComPassword(S_FQAddress Main)118 int InitComPassword (S_FQAddress Main)
119 {
120 PasswordHandler.NewPassword ();
121 return SUCCESS;
122 }
123
InitComTopdown(S_FQAddress Main)124 int InitComTopdown (S_FQAddress Main)
125 {
126 RouteHandler.SetTopDownMode ();
127 return SUCCESS;
128 }
129
130 // Route-to
InitComRouteTo(S_FQAddress Main)131 int InitComRouteTo (S_FQAddress Main)
132 {
133 if (RouteHandler.SetupNewVia (NV_Routed,True,True)!=SUCCESS)
134 return FATAL;
135 return SUCCESS;
136 }
137
InitComRouteMail(S_FQAddress Main)138 int InitComRouteMail (S_FQAddress Main)
139 {
140 if (RouteHandler.SetupNewVia (NV_Routed,True,False)!=SUCCESS)
141 return FATAL;
142 return SUCCESS;
143 }
144
InitComRouteFiles(S_FQAddress Main)145 int InitComRouteFiles (S_FQAddress Main)
146 {
147 if (RouteHandler.SetupNewVia (NV_Routed,False,True)!=SUCCESS)
148 return FATAL;
149 return SUCCESS;
150 }
151 // Nopack
InitComNoPack(S_FQAddress Main)152 int InitComNoPack (S_FQAddress Main)
153 {
154 if (RouteHandler.SetupNewVia (NV_NoPack,True,True)!=SUCCESS)
155 return FATAL;
156 return SUCCESS;
157 }
158
InitComNoPackMail(S_FQAddress Main)159 int InitComNoPackMail (S_FQAddress Main)
160 {
161 if (RouteHandler.SetupNewVia (NV_NoPack,True,False)!=SUCCESS)
162 return FATAL;
163 return SUCCESS;
164 }
165
InitComNoPackFiles(S_FQAddress Main)166 int InitComNoPackFiles (S_FQAddress Main)
167 {
168 if (RouteHandler.SetupNewVia (NV_NoPack,False,True)!=SUCCESS)
169 return FATAL;
170 return SUCCESS;
171 }
172
173 // Direct
InitComDirect(S_FQAddress Main)174 int InitComDirect (S_FQAddress Main)
175 {
176 if (RouteHandler.SetupNewVia (NV_Direct,True,True)!=SUCCESS)
177 return FATAL;
178 return SUCCESS;
179 }
180
InitComDirectMail(S_FQAddress Main)181 int InitComDirectMail (S_FQAddress Main)
182 {
183 if (RouteHandler.SetupNewVia (NV_Direct,True,False)!=SUCCESS)
184 return FATAL;
185 return SUCCESS;
186 }
187
InitComDirectFiles(S_FQAddress Main)188 int InitComDirectFiles (S_FQAddress Main)
189 {
190 if (RouteHandler.SetupNewVia (NV_Direct,False,True)!=SUCCESS)
191 return FATAL;
192 return SUCCESS;
193 }
194
195 // Route-boss
InitComNoroute(S_FQAddress Main)196 int InitComNoroute (S_FQAddress Main)
197 {
198 if (RouteHandler.SetupNewVia (NV_Noroute,True,True)!=SUCCESS)
199 return FATAL;
200 return SUCCESS;
201 }
202
InitComNorouteMail(S_FQAddress Main)203 int InitComNorouteMail (S_FQAddress Main)
204 {
205 if (RouteHandler.SetupNewVia (NV_Noroute,True,False)!=SUCCESS)
206 return FATAL;
207 return SUCCESS;
208 }
209
InitComNorouteFiles(S_FQAddress Main)210 int InitComNorouteFiles (S_FQAddress Main)
211 {
212 if (RouteHandler.SetupNewVia (NV_Noroute,False,True)!=SUCCESS)
213 return FATAL;
214 return SUCCESS;
215 }
216
ProcParRoute(char * Token,S_FQAddress Main)217 int ProcParRoute (char *Token, S_FQAddress Main)
218 {
219 S_Codes Info;
220 GetTokenInfo (Token,&Info);
221 switch (Info.Group)
222 {
223 case PT_DOW:
224 return (RouteHandler.SetDayOfTheWeek (Token));
225 case PT_ADDRESS:
226 switch (RouteHandler.Process (Token))
227 {
228 case EVH_CANTRESOLVE:
229 printf ("Error: %s is not correct as via system address - route-to ignored.\n",Token);
230 return WARNING;
231 case EVH_INVALID:
232 printf ("Error: %s is not a valid address - ignored.\n",Token);
233 return WARNING;
234 case WARNING:
235 return WARNING;
236 case FATAL:
237 return FATAL;
238 }
239 return SUCCESS;
240 case PT_ENC:
241 if (RouteHandler.SetEncryption (Info.Code)!=SUCCESS)
242 {
243 printf ("Warning: Nonsense encryption construction");
244 return WARNING;
245 }
246 break;
247 case PT_FLAVOUR:
248 if (RouteHandler.SetAttrib (Info.Code)!=SUCCESS)
249 {
250 printf ("Unexpected error handling attribute %s",Token);
251 return WARNING;
252 }
253 break;
254 case PT_FROM:
255 RouteHandler.SetOnFrom ();
256 break;
257 case PT_EXCEPT:
258 RouteHandler.SwitchExcept ();
259 break;
260 default:
261 printf ("%s can't be used with route statements ",Token);
262 return WARNING;
263 }
264 return SUCCESS;
265 }
266
ProcParLogFilename(char * Token,S_FQAddress Main)267 int ProcParLogFilename (char *Token, S_FQAddress Main)
268 {
269 if (Log.SetLogFileName (Token)!=SUCCESS)
270 {
271 printf ("Warning: Log filename already established.\n");
272 WarningCount++;
273 }
274 else
275 if (Log.OpenLog ()!=SUCCESS)
276 {
277 printf ("Warning: Unable to open log.\n");
278 WarningCount++;
279 }
280 return SUCCESS;
281 }
282
ProcParRecode(char * Token,S_FQAddress Main)283 int ProcParRecode (char *Token, S_FQAddress Main)
284 {
285 return getctab (outtab, Token);
286 }
287
ProcParInclude(char * Token,S_FQAddress Main)288 int ProcParInclude (char *Token, S_FQAddress Main)
289 {
290 return (ReadRouteFile (Token));
291 }
292
InitComPacket2(S_FQAddress Main)293 int InitComPacket2 (S_FQAddress Main)
294 {
295 Packet2Except=0;
296 return SUCCESS;
297 }
298
InitComProductInfo(S_FQAddress Main)299 int InitComProductInfo (S_FQAddress Main)
300 {
301 IDENTString[0]=0;
302 return SUCCESS;
303 }
304
ProcParProductInfo(char * Token,S_FQAddress Main)305 int ProcParProductInfo (char *Token,S_FQAddress Main)
306 {
307 if (strlen (IDENTString)+strlen (Token)<80)
308 strcat (IDENTString,Token);
309 strcat (IDENTString," ");
310 return SUCCESS;
311 }
312
ProcParPacket2(char * Token,S_FQAddress Main)313 int ProcParPacket2 (char *Token,S_FQAddress Main)
314 {
315 S_WAddress Packet2work;
316 S_Codes Info;
317 GetTokenInfo (Token,&Info);
318 switch (Info.Group)
319 {
320 case PT_ADDRESS:
321 if (Packet2Handler.WAHandler.ParseAddress (Token,&Packet2work)!=SUCCESS)
322 {
323 printf ("Warning: Unable to use %s as packet2 system",Token);
324 return WARNING;
325 }
326 else
327 {
328 Packet2work.Reverse=Packet2Except;
329 Packet2Handler.AddNewRoutedAddress (Packet2work,0);
330 }
331 break;
332 case PT_EXCEPT:
333 Packet2Except=!Packet2Except;
334 break;
335 default:
336 printf ("%s Can't be used with Packet2",Token);
337 return WARNING;
338 }
339 return SUCCESS;
340 }
341
ProcParMain(char * Token,S_FQAddress Main)342 int ProcParMain (char *Token,S_FQAddress Main)
343 {
344 S_FQAddress OnProcess;
345 if (GetFullQualifiedAddress (Token,&OnProcess,&Main)!=SUCCESS)
346 {
347 printf ("%s is not a correct specification for a main address",Token);
348 return WARNING;
349 }
350 else
351 {
352 if (AddressHandler.StoreMain (OnProcess)!=SUCCESS)
353 {
354 printf ("Error: Two main addresses\n");
355 return FATAL;
356 }
357 }
358 return SUCCESS;
359 }
360
ProcParAKA(char * Token,S_FQAddress Main)361 int ProcParAKA (char *Token,S_FQAddress Main)
362 {
363 S_FQAddress OnProcess;
364 if (GetFullQualifiedAddress (Token,&OnProcess,AddressHandler.GetLastAKA())!=SUCCESS)
365 {
366 printf ("%s is not a complete address. Make sure you have defined your main aka.\n",Token);
367 return FATAL;
368 }
369 else
370 if (AddressHandler.StoreAKA (OnProcess)!=SUCCESS)
371 {
372 printf ("Error: Failed to store AKA %s",Token);
373 return FATAL;
374 }
375 return SUCCESS;
376 }
377
ProcParDefine(char * Token,S_FQAddress Main)378 int ProcParDefine (char *Token,S_FQAddress Main)
379 {
380 return (MacroHandler.Process (Token));
381 }
382
ProcParFEConfig(char * Token,S_FQAddress Main)383 int ProcParFEConfig (char *Token,S_FQAddress Main)
384 {
385 strcpy (FEConfDir,Token);
386 return SUCCESS;
387 }
388
InitComEndDefine(S_FQAddress Main)389 int InitComEndDefine (S_FQAddress Main)
390 {
391 printf ("Fatal: Unexpected ENDDEFINE.\n");
392 return FATAL;
393 }
394
InitComAssumePoints(S_FQAddress Main)395 int InitComAssumePoints (S_FQAddress Main)
396 {
397 RouteHandler.SetAssumePoints (1);
398 return SUCCESS;
399 }
400
InitComAssumeWaypoints(S_FQAddress Main)401 int InitComAssumeWaypoints (S_FQAddress Main)
402 {
403 RouteHandler.SetAssumeWaypoints (1);
404 return SUCCESS;
405 }
406
InitComEOLEndsCommand(S_FQAddress Main)407 int InitComEOLEndsCommand (S_FQAddress Main)
408 {
409 EOLEndsCommand=1;
410 return SUCCESS;
411 }
412
InitComViaBossHold(S_FQAddress Main)413 int InitComViaBossHold (S_FQAddress Main)
414 {
415 RouteBossHold=1;
416 return SUCCESS;
417 }
418
InitComViaBossDirect(S_FQAddress Main)419 int InitComViaBossDirect (S_FQAddress Main)
420 {
421 RouteBossDirect=1;
422 return SUCCESS;
423 }
424
InitComIgnoreBSY(S_FQAddress Main)425 int InitComIgnoreBSY (S_FQAddress Main)
426 {
427 IgnoreBSY=1;
428 return SUCCESS;
429 }
430
InitComKillInTransit(S_FQAddress Main)431 int InitComKillInTransit (S_FQAddress Main)
432 {
433 KillInTransit=1;
434 return SUCCESS;
435 }
436
InitComKillInTransitFiles(S_FQAddress Main)437 int InitComKillInTransitFiles (S_FQAddress Main)
438 {
439 KillInTransitFiles=1;
440 return SUCCESS;
441 }
442
InitComLogpath(S_FQAddress Main)443 int InitComLogpath (S_FQAddress Main)
444 {
445 PathLogStyle=1;
446 return SUCCESS;
447 }
448
InitComFastechoPack(S_FQAddress Main)449 int InitComFastechoPack (S_FQAddress Main)
450 {
451 FastechoPack=1;
452 return SUCCESS;
453 }
454
ProcParFastechoPack(char * Token,S_FQAddress Main)455 int ProcParFastechoPack (char *Token, S_FQAddress Main)
456 {
457 S_Codes Info;
458 GetTokenInfo (Token,&Info);
459 switch (Info.Group)
460 {
461 case PT_QQQMODE:
462 FastechoPack = 2;
463 return SUCCESS;
464 break;
465 default:
466 printf ("%s can't be used as parameter to "
467 "FASTECHOPACK ",Token);
468 return WARNING;
469 }
470 return SUCCESS;
471 }
472
473
474
InitComNoDomainDir(S_FQAddress Main)475 int InitComNoDomainDir (S_FQAddress Main)
476 {
477 NoDomainDir=1;
478 return SUCCESS;
479 }
480
InitComNoLoopRoute(S_FQAddress Main)481 int InitComNoLoopRoute (S_FQAddress Main)
482 {
483 NoLoopRoute=1;
484 return SUCCESS;
485 }
486
487
InitComIgnoreUnknownAttribs(S_FQAddress Main)488 int InitComIgnoreUnknownAttribs (S_FQAddress Main)
489 {
490 IgnoreUnknownAttribs=1;
491 return SUCCESS;
492 }
493
InitComFEConfig(S_FQAddress Main)494 int InitComFEConfig (S_FQAddress Main)
495 {
496 ReadFEConfig=1;
497 FEConfDir[0]=0;
498 return SUCCESS;
499 }
500
501 #ifndef OS_2
502 #pragma warn +par
503 #endif
504