Skip to content
Snippets Groups Projects
Commit 09775f2c authored by Stephan Bosch's avatar Stephan Bosch
Browse files

Updated documentation.

parent 4fccec75
No related branches found
No related tags found
No related merge requests found
......@@ -24,10 +24,19 @@ that exist in the src/sieve-bin/ directory:
--
sievec <sieve-file>
sievec [-d] <sieve-file> <out-file>
Compiles the script and produces various dumps of intermittent compilation
results. This already works pretty good for all supported features.
Compiles the script and produces a sieve binary. However, when the -d option is
provided a code dump is written to the output file. When the output file is '-'
the dump output is written to stdout (only if -d is specified).
--
sieved <bin-file> [<dump-file>]
Reads a sieve binary and produces a code dump. The optional dump-file parameter
provides the means to specify a file to which the dump is to be written.
Otherwise, the dump is printed to stdout.
--
......@@ -74,33 +83,34 @@ What works:
* Scripts can be parsed, the grammar is fully supported.
* Script validation (contextual analysis) works almost completely. Outgoing mail
addresses are not verified yet as required.
* Script code generation works for most core commands. Comparators, match-types
and address-part modifiers already work.
* Interpreter runs and dumps core commands and tests. Comparators, match-types
and address-part modifiers have the desired effect. Most test commands work as
* Script code generation works for all core commands. Comparators, match-types
and address-part modifiers work as required.
* Interpreter runs core commands and tests. Comparators, match-types and
address-part modifiers have the desired effect. Most test commands work as
specified (see list below).
* The interpreter produces a result containing a set of actions to execute.
Duplicate actions can now be avoided and conflicts can be detected.
* Execution is now also supported for all core commands.
* This sieve implementation is available as an alternative plugin to dovecot's
deliver. Hopefully this will soon be able to replace the current cmusieve
implementation.
Duplicate actions can be avoided and conflicts can be detected.
* Execution of the result is supported for all core action commands and all
fully implemented extensions (see list below).
* This sieve implementation is now available as an alternative plugin to
dovecot's deliver. It is not completely useful yet, but hopefully this will
soon be able to replace the current cmusieve implementation.
Base tests and their implementation status:
false, true: trivial, full
address: full
header: full
exists: full
size: full
not, anyof, allof: full
false, true: trivial, full
address: full
header: full
exists: full
size: full
not, anyof, allof: full
Base commands and their implementation status:
require: full
if,elsif,else: full
discard: full
keep: full
redirect: full
stop: trivial, full
require: full
if,elsif,else: full
discard: full
keep: full
redirect: full
stop: trivial, full
Extensions and their implementation status:
......@@ -114,11 +124,11 @@ Extensions and their implementation status:
subaddress: full
comparator-i;ascii-numeric: full
relational: full
copy: full
regex: full, but suboptimal
vacation: almost complete; no support for required References header
imapflags: flag management works, but flags are not stored
copy: full
include: skeleton (* first leave out variables support)
include: basic functionality: validation, and included scripts are compiled
variables: planned (* also amend previously implemented extensions)
body: planned
notify: planned (- lowest priority)
......@@ -163,7 +173,17 @@ RESULT: sieve-result.c sieve-actions.c
everything succeeds or everything fails. This is only possible to some extent:
transmitted responses can of course not be rolled back. However, these are
executed in the commit phase, meaning that they will only be performed if all
other actions were successful.
other actions were successful.
Debugging:
CODE-DUMPER: sieve-code-dumper.c
A loaded binary can be dumped to a stream in human-readable form using the
code-dumper. It's implementation is similar to the interpreter, with the
exception that it performs no actions and just sequentially wanders through
the byte code printing instructions along the way. The term human-readable is
a bit optimistic though; currently the presented data looks like an assembly
language.
TODO
----
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment

Consent

On this website, we use the web analytics service Matomo to analyze and review the use of our website. Through the collected statistics, we can improve our offerings and make them more appealing for you. Here, you can decide whether to allow us to process your data and set corresponding cookies for these purposes, in addition to technically necessary cookies. Further information on data protection—especially regarding "cookies" and "Matomo"—can be found in our privacy policy. You can withdraw your consent at any time.