]> mj.ucw.cz Git - umpf.git/blobdiff - umpf.h
started with filtering mail
[umpf.git] / umpf.h
diff --git a/umpf.h b/umpf.h
index 926c4768b55efbf3a9f6920e383977e5d5f7d00c..32cd804e174d93edaa74863b07d8705e8d48e881 100644 (file)
--- a/umpf.h
+++ b/umpf.h
@@ -9,7 +9,8 @@ enum keyword {
        K_COPY,
        K_MAIL,
        K_PIPE,
-       K_EMPTY
+       K_EMPTY,
+       K_FILTER
 };
 
 struct tree {
@@ -81,7 +82,7 @@ struct tree* input_tree;
 #define CC(a,b) ((a<<8)|b)
 void* xmalloc(size_t size);
 void* xrealloc(void* buf, size_t size);
-char* xstrdup(char* s);
+char* xstrdup(const char* s);
 void __attribute__ ((noreturn)) die(char* msg, ...);
 void read_conf(char* filename);
 int line;
@@ -100,7 +101,6 @@ struct code {
                OPC_JUMP_IF,
                OPC_JUMP_UNLESS,
                OPC_DELIVER,
-               OPC_CALL_EXT,
                OPC_NOP,
                OPC_CAT,
                OPC_GT,
@@ -121,6 +121,7 @@ struct code {
                OPC_DIV,
                OPC_PIPE,
                OPC_MAIL,
+               OPC_FILTER,
                OPC_DISCARD
        } opcode;
 
@@ -168,11 +169,13 @@ struct variable {
 struct list input_code;
 struct list* var_hash;
 int current_varcode;
+int max_varcode;
 int temp_varcode_start;
 char** var_tab; 
 char** const_tab;
 int cur_const_n;
 int cur_const_s;
+char* empty;
 
 void init(void);
 void compile(struct tree* t, struct list* where);
@@ -193,21 +196,30 @@ struct hlist {
 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, ...);
 
 /* ham.c */
 char* default_mailbox;
+int chars_written;
 
 struct list* current_headers;
 struct email* current_body;
 struct list* make_hlist(void);
 void print_headers(struct list* l);
 struct email* get_body(void);
+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);