plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

smtp.h (1270B)


      1 typedef struct Node Node;
      2 typedef struct Field Field;
      3 typedef Node *Nodeptr;
      4 #define YYSTYPE Nodeptr
      5 
      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 };
     15 
     16 struct Field {
     17 	Field	*next;
     18 	Node	*node;
     19 	int	source;
     20 };
     21 
     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 };
     32 
     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;
     42 
     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*);