|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T t
Length: 2150 (0x866)
Types: TextFile
Names: »tjoin.y«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0
└─⟦dc59850a2⟧ »EurOpenD22/pp5.0/pp-5.tar.Z«
└─⟦e5a54fb17⟧
└─⟦this⟧ »pp-5.0/Tools/tables/tjoin/tjoin.y«
%union {
char *str;
}
%token <str> STRING
%type <str> host
%%
file : line
| file line
;
line : '\n'
| STRING ':' hostlist '\n' {
/* Direct Connet or AR hosts */
if (CheckHost ($1) != 0)
StoreHost ($1);
else
FreeHostInfo (HostList);
free ($1);
HostList = NULL;
}
| STRING ':' '(' chanlist ')' '\n' {
if (CheckChan (ChanList) != 0)
StoreChans ($1);
else
FreeChanInfo (ChanList);
free ($1);
ChanList = NULL;
}
| error '\n' {
crapline ();
HostList = NULL;
ChanList = NULL;
}
;
hostlist : host {
StartHostList ($1);
ChanList = NULL;
}
| hostlist ',' host {
AddToHostList ($3);
ChanList = NULL;
}
;
host : STRING '(' ')' {
/* This is an Application Relay */
$$ = $1;
}
| STRING '(' chanlist ')' {
/* This is a Direct Connect */
$$ = $1;
}
;
chanlist : STRING {
StartChanList ($1);
}
| chanlist ',' STRING {
AddToChanList ($3);
}
;
%%
#include <stdio.h>
#include "tjoin.h"
extern int yylineno;
int PrintNode (), CheckARs ();
SBUFF *InitStringStore ();
char *av0, *MyName;
HOST *HostList = NULL; /* Stores Host info on input line basis */
CHAN *ChanList = NULL; /* Stores Chan info on input host basis */
CHAN *ValidChanList = NULL;
MTA *MtaTree = NULL; /* Root of in core database */
SBUFF *ARStringStore, *HostStringStore;
int Debug = 0, PrintRoute = 0, DirectFirst = 0, ComplexOutput = 0;
main (argc, argv)
int argc;
char *argv [];
{
register int i;
av0 = argv [0];
MyName = NULL;
for (i = 1; i < argc; i++) {
if (*argv [i] == '-')
DoFlag (&argv [i][1]);
else
if (MyName == NULL)
MyName = argv [i];
else
DefineChan (argv [i]);
}
if (ValidChanList == NULL)
Usage ();
ARStringStore = InitStringStore ();
HostStringStore = InitStringStore ();
yyparse ();
WalkTree (MtaTree, CheckARs);
/*
* Now that all AR names point to MTA structs - Zap space used
* to store names.
*/
FreeStringStore (ARStringStore);
if (Debug == 2) DebugTree (MtaTree, 0);
WalkTree (MtaTree, PrintNode);
exit (0);
}