+
+/* int.c */
+struct hlist {
+ struct node car;
+ char* name;
+ char* value;
+ int have_var;
+};
+
+struct email {
+ struct list* headers;
+ char* body;
+ char* tmpfile;
+ int fd;
+ int body_len;
+};
+
+void save_current_headers(struct list* hash);
+void print_vars(struct list* hash);
+void interp(struct list* ins, struct list* hash);
+void free_string(char* c);
+void __attribute__ ((noreturn)) bye(int code, char* msg, ...);
+void set_cur_mail_length_var(int len, struct list* hash);
+
+/* ham.c */
+char* default_mailbox;
+int chars_written;
+int curr_email_len;
+
+struct list* current_headers;
+struct email* current_body;
+struct list* make_hlist(int fd);
+void new_header(char* buf, struct list* h);
+void print_headers(struct list* l);
+struct email* get_body(int fd);
+int deliver_local_email(char* folder, struct email* email);
+int write_email_to_fd(int fd, struct email* email);
+char* read_email(struct email* em);
+void open_email(void);
+
+/* lock.c */
+void save_gids(void);
+void close_mailbox(int fd, char* path, int is_default_mailbox);
+int open_mailbox(char* path, int is_default_mailbox);
+char* cat(char* l, char* r);
+
+