diff --git a/sieve/tests/fileinto.sieve b/sieve/tests/fileinto.sieve new file mode 100644 index 0000000000000000000000000000000000000000..41ab6b6a8d727e858b2a2accd0b205b9b63df3ce --- /dev/null +++ b/sieve/tests/fileinto.sieve @@ -0,0 +1,8 @@ +require "fileinto"; + +if address :contains "to" "vestingbar" { + fileinto "INBOX.VB"; + stop; +} + +keep; diff --git a/src/lib-sieve/ext-fileinto.c b/src/lib-sieve/ext-fileinto.c index ccd218bc3890933ed99e93a81c4f3c01abf35b94..db9b4dee6a980bafb4874c8ac517f30771591139 100644 --- a/src/lib-sieve/ext-fileinto.c +++ b/src/lib-sieve/ext-fileinto.c @@ -116,9 +116,21 @@ static bool ext_fileinto_opcode_dump static bool ext_fileinto_opcode_execute (struct sieve_interpreter *interp ATTR_UNUSED, - struct sieve_binary *sbin ATTR_UNUSED, - sieve_size_t *address ATTR_UNUSED) + struct sieve_binary *sbin, + sieve_size_t *address) { + string_t *folder; + + t_push(); + + if ( !sieve_opr_string_read(sbin, address, &folder) ) { + t_pop(); + return FALSE; + } + + printf(">> FILEINTO \"%s\"\n", str_c(folder)); + + t_pop(); return TRUE; }