summaryrefslogtreecommitdiff
path: root/libsieve
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2004-01-05 13:49:03 +0000
committerSergey Poznyakoff <gray@gnu.org.ua>2004-01-05 13:49:03 +0000
commit027cbe8852675b47f629be971f46df21ad4e311b (patch)
tree261d1fb8b0b4a0e2199c011388917d5cf93ce52b /libsieve
parent0c4f6a6918d7caf825a6cfd70c453f2cbc014807 (diff)
downloadmailutils-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.c31
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);
}

Return to:

Send suggestions and report system problems to the System administrator.