Blob


1 typedef struct Node Node;
2 typedef struct Field Field;
3 typedef Node *Nodeptr;
4 #define YYSTYPE Nodeptr
6 struct Node {
7 Node *next;
8 int c; /* token type */
9 char addr; /* true if this is an address */
10 String *s; /* string representing token */
11 String *white; /* white space following token */
12 char *start; /* first byte for this token */
13 char *end; /* next byte in input */
14 };
16 struct Field {
17 Field *next;
18 Node *node;
19 int source;
20 };
22 typedef struct DS DS;
23 struct DS {
24 /* dist string */
25 char buf[128];
26 char expand[128];
27 char *netdir;
28 char *proto;
29 char *host;
30 char *service;
31 };
33 extern Field *firstfield;
34 extern Field *lastfield;
35 extern Node *usender;
36 extern Node *usys;
37 extern Node *udate;
38 extern int originator;
39 extern int destination;
40 extern int date;
41 extern int messageid;
43 Node* anonymous(Node*);
44 Node* address(Node*);
45 int badfieldname(Node*);
46 Node* bang(Node*, Node*);
47 Node* colon(Node*, Node*);
48 int cistrcmp(char*, char*);
49 Node* link2(Node*, Node*);
50 Node* link3(Node*, Node*, Node*);
51 void freenode(Node*);
52 void newfield(Node*, int);
53 void freefield(Field*);
54 void yyinit(char*, int);
55 int yyparse(void);
56 int yylex(void);
57 String* yywhite(void);
58 Node* whiten(Node*);
59 void yycleanup(void);
60 int mxdial(char*, char*, char*);
61 void dial_string_parse(char*, DS*);