5 void yyerror (char const *);
32 } st; /* subtree type */
35 struct tree* c; /* condition */
36 struct tree* i; /* if */
37 struct tree* e; /* else */
44 JUST_BOOL /* value only in left, no op */
49 } cond; /* binary operator */
85 struct tree* input_tree;
88 #define CC(a,b) ((a<<8)|b)
89 void* xmalloc(size_t size);
90 void* xrealloc(void* buf, size_t size);
91 char* xstrdup(const char* s);
92 void __attribute__ ((noreturn)) die(char* msg, ...);
93 void read_conf(char* filename);
153 int res; /* result */
157 int res; /* result */
176 struct list input_code;
177 struct list* var_hash;
180 int temp_varcode_start;
188 void compile(struct tree* t, struct list* where);
189 int find_var(char* name, enum var_type type, struct list* hash);
190 struct variable* get_var_struct(char* name, enum var_type type, struct list* hash);
191 int store_const(char* c);
192 struct list* new_var_hash(void);
193 int get_bucket_number(char* name);
194 void print_code(void);
205 struct list* headers;
212 void save_current_headers(struct list* hash);
213 void print_vars(struct list* hash);
214 void interp(struct list* ins, struct list* hash);
215 void free_string(char* c);
216 void __attribute__ ((noreturn)) bye(int code, char* msg, ...);
219 char* default_mailbox;
223 struct list* current_headers;
224 struct email* current_body;
225 struct list* make_hlist(int fd);
226 void print_headers(struct list* l);
227 struct email* get_body(int fd);
228 int deliver_local_email(char* folder, struct email* email);
229 int write_email_to_fd(int fd, struct email* email);
230 char* read_email(struct email* em);
231 void open_email(void);
234 void save_gids(void);
235 void close_mailbox(int fd, char* path, int is_default_mailbox);
236 int open_mailbox(char* path, int is_default_mailbox);
237 char* cat(char* l, char* r);