summaryrefslogtreecommitdiff
path: root/sieve
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2016-11-24 14:20:54 +0200
committerSergey Poznyakoff <gray@gnu.org.ua>2016-11-24 14:31:08 +0200
commita4c1a0e88bdeb8372ae66e27da4009a49b0f8009 (patch)
tree9411a617c166d5be779a86791b39c2d61dac6af9 /sieve
parentd282d8e74e30328586a7c8e9a72a47a8f1fbce79 (diff)
downloadmailutils-a4c1a0e88bdeb8372ae66e27da4009a49b0f8009.tar.gz
mailutils-a4c1a0e88bdeb8372ae66e27da4009a49b0f8009.tar.bz2
sieve: provide a separate stream for debugging output
* include/mailutils/sieve.h (MU_SIEVE_DEBUG_TRACE) (MU_SIEVE_DEBUG_INSTR,MU_SIEVE_DEBUG_DISAS) (MU_SIEVE_DRY_RUN): Remove. (mu_sieve_machine_init_ex): Remove proto. (mu_sieve_set_dbg_stream,mu_sieve_get_dbg_stream) (mu_sieve_stream_save) (mu_sieve_stream_restore): New protos. * libmu_sieve/runtime.c (INSTR_DISASS,INSTR_DEBUG): Reimplement. * libmu_sieve/sieve-priv.h (MU_SV_SAVED_ERR_STATE) (MU_SV_SAVED_DBG_STATE,MU_SV_SAVED_STATE): New bitflags. (mu_sieve_state_disass): New constant. (mu_sieve_machine)<state_flags, err_mode> <err_locus,dbg_mode,dbg_locus>: New members. <dbgstream>: New member. * libmu_sieve/sieve.y (mu_sieve_machine_init_ex): Remove. (mu_sieve_machine_dup, mu_sieve_machine_inherit): Fix. (mu_sieve_set_dbg_stream) (mu_sieve_get_dbg_stream): New functions. (mu_sieve_machine_destroy): Destroy dbgstream. (with_machine): Preserve stream state (mode & locus). * libmu_sieve/util.c (mu_i_sv_debug,mu_i_sv_debug_command): Use ioctl instead of format strings. (mu_sieve_stream_save, mu_sieve_stream_restore): New functions. * python/libmu_py/sieve.c (api_sieve_machine_init): Use mu_sieve_machine_init. * sieve/sieve.c: Improve help output. (main): Dump disassembled code to standard output.
Diffstat (limited to 'sieve')
-rw-r--r--sieve/sieve.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/sieve/sieve.c b/sieve/sieve.c
index 0f7789a20..4a77b122a 100644
--- a/sieve/sieve.c
+++ b/sieve/sieve.c
@@ -247,12 +247,20 @@ static struct mu_cli_setup cli = {
N_("GNU sieve -- a mail filtering tool."),
"SCRIPT",
NULL,
- N_("Debug flags:\n\
+ N_("Sieve-specific debug levels:\n\
+\n\
+ trace1 - print parse tree before optimization\n\
+ trace2 - print parse tree after optimization\n\
+ trace3 - print parser traces\n\
+ trace4 - print tests and actions being executed\n\
+ trace9 - print each Sieve instruction being executed\n\
+\n\
+Compatibility debug flags:\n\
g - main parser traces\n\
T - mailutils traces (same as --debug-level=sieve.trace0-trace1)\n\
P - network protocols (same as --debug-level=sieve.=prot)\n\
- t - sieve trace (MU_SIEVE_DEBUG_TRACE)\n\
- i - sieve instructions trace (MU_SIEVE_DEBUG_INSTR)\n")
+ t - sieve trace (same as --debug-level=sieve.=trace4)\n\
+ i - sieve instructions trace (same as --debug-level=sieve.=trace9)\n")
};
static void
@@ -440,7 +448,10 @@ main (int argc, char *argv[])
if (compile_only)
{
if (compile_only == 2)
- mu_sieve_disass (mach);
+ {
+ mu_sieve_set_dbg_stream (mach, mu_strout);
+ mu_sieve_disass (mach);
+ }
return EX_OK;
}

Return to:

Send suggestions and report system problems to the System administrator.