1617c0e1eSDavid du Colombier enum { 2617c0e1eSDavid du Colombier Maxbustedmx = 100, 3*ab6a5be1SDavid du Colombier Maxdomain = 1024, 4617c0e1eSDavid du Colombier }; 5617c0e1eSDavid du Colombier 63e12c5d1SDavid du Colombier typedef struct Node Node; 73e12c5d1SDavid du Colombier typedef struct Field Field; 83e12c5d1SDavid du Colombier typedef Node *Nodeptr; 93e12c5d1SDavid du Colombier #define YYSTYPE Nodeptr 103e12c5d1SDavid du Colombier 113e12c5d1SDavid du Colombier struct Node { 123e12c5d1SDavid du Colombier Node *next; 133e12c5d1SDavid du Colombier int c; /* token type */ 143e12c5d1SDavid du Colombier char addr; /* true if this is an address */ 153e12c5d1SDavid du Colombier String *s; /* string representing token */ 163e12c5d1SDavid du Colombier String *white; /* white space following token */ 17332d2f58SDavid du Colombier char *start; /* first byte for this token */ 183e12c5d1SDavid du Colombier char *end; /* next byte in input */ 193e12c5d1SDavid du Colombier }; 203e12c5d1SDavid du Colombier 213e12c5d1SDavid du Colombier struct Field { 223e12c5d1SDavid du Colombier Field *next; 233e12c5d1SDavid du Colombier Node *node; 243e12c5d1SDavid du Colombier int source; 253e12c5d1SDavid du Colombier }; 263e12c5d1SDavid du Colombier 279863c128SDavid du Colombier typedef struct DS DS; 289863c128SDavid du Colombier struct DS { 299863c128SDavid du Colombier /* dist string */ 309863c128SDavid du Colombier char buf[128]; 319863c128SDavid du Colombier char expand[128]; 329863c128SDavid du Colombier char *netdir; 339863c128SDavid du Colombier char *proto; 349863c128SDavid du Colombier char *host; 359863c128SDavid du Colombier char *service; 369863c128SDavid du Colombier }; 379863c128SDavid du Colombier 383e12c5d1SDavid du Colombier extern Field *firstfield; 393e12c5d1SDavid du Colombier extern Field *lastfield; 403e12c5d1SDavid du Colombier extern Node *usender; 413e12c5d1SDavid du Colombier extern Node *usys; 423e12c5d1SDavid du Colombier extern Node *udate; 433e12c5d1SDavid du Colombier extern int originator; 44219b2ee8SDavid du Colombier extern int destination; 453e12c5d1SDavid du Colombier extern int date; 46617c0e1eSDavid du Colombier extern int debug; 479a747e4fSDavid du Colombier extern int messageid; 48617c0e1eSDavid du Colombier extern char *bustedmxs[Maxbustedmx]; 493e12c5d1SDavid du Colombier 503e12c5d1SDavid du Colombier Node* address(Node*); 51*ab6a5be1SDavid du Colombier Node* anonymous(Node*); 527dd7cddfSDavid du Colombier int badfieldname(Node*); 533e12c5d1SDavid du Colombier Node* bang(Node*, Node*); 543e12c5d1SDavid du Colombier int cistrcmp(char*, char*); 55*ab6a5be1SDavid du Colombier Node* colon(Node*, Node*); 56*ab6a5be1SDavid du Colombier void dial_string_parse(char*, DS*); 57*ab6a5be1SDavid du Colombier void freefield(Field*); 58*ab6a5be1SDavid du Colombier void freenode(Node*); 593e12c5d1SDavid du Colombier Node* link2(Node*, Node*); 603e12c5d1SDavid du Colombier Node* link3(Node*, Node*, Node*); 61*ab6a5be1SDavid du Colombier int mxdial(char*, char*, char*); 623e12c5d1SDavid du Colombier void newfield(Node*, int); 633e12c5d1SDavid du Colombier Node* whiten(Node*); 64219b2ee8SDavid du Colombier void yycleanup(void); 65*ab6a5be1SDavid du Colombier void yyinit(char*, int); 66*ab6a5be1SDavid du Colombier int yylex(void); 67*ab6a5be1SDavid du Colombier int yyparse(void); 68*ab6a5be1SDavid du Colombier String* yywhite(void); 69