diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2004-01-05 13:49:03 +0000 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2004-01-05 13:49:03 +0000 |
commit | 027cbe8852675b47f629be971f46df21ad4e311b (patch) | |
tree | 261d1fb8b0b4a0e2199c011388917d5cf93ce52b /libsieve | |
parent | 0c4f6a6918d7caf825a6cfd70c453f2cbc014807 (diff) | |
download | mailutils-027cbe8852675b47f629be971f46df21ad4e311b.tar.gz mailutils-027cbe8852675b47f629be971f46df21ad4e311b.tar.bz2 |
(sieve_code_source,sieve_code_line): New
functions.
(sieve_code_action,sieve_code_test): Include line info before
coding the instruction.
Diffstat (limited to 'libsieve')
-rw-r--r-- | libsieve/prog.c | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/libsieve/prog.c b/libsieve/prog.c index 5a2fcf5f9..5d1c2aeb7 100644 --- a/libsieve/prog.c +++ b/libsieve/prog.c @@ -304,16 +304,43 @@ sieve_code_command (sieve_register_t *reg, list_t arglist) } int +sieve_code_source (const char *name) +{ + char *s; + + if (list_locate (sieve_machine->source_list, (void*) name, (void **) &s)) + { + s = sieve_mstrdup (sieve_machine, name); + list_append (sieve_machine->source_list, s); + } + + return sieve_code_instr (instr_source) + || sieve_code_string (s); +} + +int +sieve_code_line (size_t line) +{ + sieve_op_t op; + + op.line = line; + return sieve_code_instr (instr_line) + || sieve_code (&op); +} + +int sieve_code_action (sieve_register_t *reg, list_t arglist) { - return sieve_code_instr (instr_action) + return sieve_code_line (sieve_line_num) + || sieve_code_instr (instr_action) || sieve_code_command (reg, arglist); } int sieve_code_test (sieve_register_t *reg, list_t arglist) { - return sieve_code_instr (instr_test) + return sieve_code_line (sieve_line_num) + || sieve_code_instr (instr_test) || sieve_code_command (reg, arglist); } |