Subversion Repositories planix.SVN

Rev

Rev 2 | Blame | Compare with Previous | Last modification | View Log | RSS feed

enum {
        Maxbustedmx = 100,
        Maxdomain = 1024,
};

typedef struct Node Node;
typedef struct Field Field;
typedef Node *Nodeptr;
#define YYSTYPE Nodeptr

struct Node {
        Node    *next;
        int     c;      /* token type */
        char    addr;   /* true if this is an address */
        String  *s;     /* string representing token */
        String  *white; /* white space following token */
        char    *start; /* first byte for this token */
        char    *end;   /* next byte in input */
};

struct Field {
        Field   *next;
        Node    *node;
        int     source;
};

typedef struct DS       DS;
struct DS {
        /* dist string */
        char    buf[128];
        char    expand[128];
        char    *netdir;
        char    *proto;
        char    *host;
        char    *service;
};

extern Field    *firstfield;
extern Field    *lastfield;
extern Node     *usender;
extern Node     *usys;
extern Node     *udate;
extern int      originator;
extern int      destination;
extern int      date;
extern int      debug;
extern int      messageid;
extern char     *bustedmxs[Maxbustedmx];

Node*   address(Node*);
Node*   anonymous(Node*);
int     badfieldname(Node*);
Node*   bang(Node*, Node*);
int     cistrcmp(char*, char*);
Node*   colon(Node*, Node*);
void    dial_string_parse(char*, DS*);
void    freefield(Field*);
void    freenode(Node*);
Node*   link2(Node*, Node*);
Node*   link3(Node*, Node*, Node*);
int     mxdial(char*, char*, char*);
void    newfield(Node*, int);
Node*   whiten(Node*);
void    yycleanup(void);
void    yyinit(char*, int);
int     yylex(void);
int     yyparse(void);
String* yywhite(void);