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