static bool cmd_test_imap_metadata_operation_dump (const struct sieve_dumptime_env *denv, sieve_size_t *address) { int opt_code = 0; sieve_code_dumpf(denv, "%s:", sieve_operation_mnemonic(denv->oprtn)); sieve_code_descend(denv); /* Dump optional operands */ for (;;) { int opt; bool opok = TRUE; if ( (opt=sieve_opr_optional_dump(denv, address, &opt_code)) < 0 ) return FALSE; if ( opt == 0 ) break; switch ( opt_code ) { case OPT_MAILBOX: opok = sieve_opr_string_dump(denv, address, "mailbox"); break; default: return FALSE; } if ( !opok ) return FALSE; } return ( sieve_opr_string_dump(denv, address, "annotation") && sieve_opr_string_dump(denv, address, "value") ); }
static bool opc_global_dump (const struct sieve_dumptime_env *denv, sieve_size_t *address) { const struct sieve_extension *this_ext = denv->oprtn->ext; unsigned int count, i, var_count; struct sieve_variable_scope_binary *global_vars; struct sieve_variable_scope *global_scope; struct sieve_variable * const *vars; if ( !sieve_binary_read_unsigned(denv->sblock, address, &count) ) return FALSE; sieve_code_dumpf(denv, "GLOBAL (count: %u):", count); global_vars = ext_include_binary_get_global_scope(this_ext, denv->sbin); global_scope = sieve_variable_scope_binary_get(global_vars); vars = sieve_variable_scope_get_variables(global_scope, &var_count); sieve_code_descend(denv); for ( i = 0; i < count; i++ ) { unsigned int index; sieve_code_mark(denv); if ( !sieve_binary_read_unsigned(denv->sblock, address, &index) || index >= var_count ) return FALSE; sieve_code_dumpf(denv, "%d: VAR[%d]: '%s'", i, index, vars[index]->identifier); } return TRUE; }
static bool cmd_test_config_reload_operation_dump (const struct sieve_dumptime_env *denv, sieve_size_t *address) { int opt_code = 0; sieve_code_dumpf(denv, "TEST_CONFIG_RELOAD:"); sieve_code_descend(denv); /* Dump optional operands */ for (;;) { int opt; bool opok = TRUE; if ( (opt=sieve_opr_optional_dump(denv, address, &opt_code)) < 0 ) return FALSE; if ( opt == 0 ) break; switch ( opt_code ) { case OPT_EXTENSION: opok = sieve_opr_string_dump(denv, address, "extensions"); break; default: opok = FALSE; break; } if ( !opok ) return FALSE; } return TRUE; }
static bool cmd_report_operation_dump (const struct sieve_dumptime_env *denv, sieve_size_t *address) { int opt_code = 0; sieve_code_dumpf(denv, "REPORT"); sieve_code_descend(denv); /* Dump optional operands */ for (;;) { int opt; if ( (opt=sieve_opr_optional_dump (denv, address, &opt_code)) < 0 ) return FALSE; if ( opt == 0 ) break; switch ( opt_code ) { case OPT_HEADERS_ONLY: sieve_code_dumpf(denv, "headers_only"); break; default: return FALSE; } } return sieve_opr_string_dump(denv, address, "feedback-type") && sieve_opr_string_dump(denv, address, "message") && sieve_opr_string_dump(denv, address, "address"); }
static bool tst_spamvirustest_operation_dump (const struct sieve_dumptime_env *denv, sieve_size_t *address) { int opt_code = 0; const struct sieve_operation *op = denv->oprtn; sieve_code_dumpf(denv, "%s", sieve_operation_mnemonic(op)); sieve_code_descend(denv); /* Optional operands */ for (;;) { int opt; if ( (opt=sieve_match_opr_optional_dump(denv, address, &opt_code)) < 0 ) return FALSE; if ( opt == 0 ) break; switch ( opt_code ) { case OPT_SPAMTEST_PERCENT: sieve_code_dumpf(denv, "percent"); break; default: return FALSE; } } return sieve_opr_string_dump(denv, address, "value"); }
static bool cmd_error_operation_dump (const struct sieve_dumptime_env *denv, sieve_size_t *address) { sieve_code_dumpf(denv, "ERROR"); sieve_code_descend(denv); return sieve_opr_string_dump(denv, address, "message"); }
static bool tst_exists_operation_dump (const struct sieve_dumptime_env *denv, sieve_size_t *address) { sieve_code_dumpf(denv, "EXISTS"); sieve_code_descend(denv); return sieve_opr_stringlist_dump(denv, address, "header names"); }
static bool cmd_test_binary_operation_dump (const struct sieve_dumptime_env *denv, sieve_size_t *address) { sieve_code_dumpf(denv, "%s:", sieve_operation_mnemonic(denv->oprtn)); sieve_code_descend(denv); return sieve_opr_string_dump(denv, address, "binary-name"); }
static bool tst_vnotifym_operation_dump (const struct sieve_dumptime_env *denv, sieve_size_t *address) { sieve_code_dumpf(denv, "VALID_NOTIFY_METHOD"); sieve_code_descend(denv); return sieve_opr_stringlist_dump(denv, address, "notify-uris"); }
static bool cmd_test_config_unset_operation_dump (const struct sieve_dumptime_env *denv, sieve_size_t *address) { sieve_code_dumpf(denv, "TEST_CONFIG_UNSET:"); sieve_code_descend(denv); return sieve_opr_string_dump(denv, address, "setting"); }
static bool cmd_test_set_operation_dump (const struct sieve_dumptime_env *denv, sieve_size_t *address) { sieve_code_dumpf(denv, "TEST SET:"); sieve_code_descend(denv); return testsuite_object_dump(denv, address) && sieve_opr_string_dump(denv, address, "value"); }
static bool ext_fileinto_operation_dump (const struct sieve_dumptime_env *denv, sieve_size_t *address) { sieve_code_dumpf(denv, "FILEINTO"); sieve_code_descend(denv); if ( sieve_action_opr_optional_dump(denv, address, NULL) != 0 ) return FALSE; return sieve_opr_string_dump(denv, address, "folder"); }
static bool tst_test_multiscript_operation_dump (const struct sieve_dumptime_env *denv, sieve_size_t *address) { sieve_code_dumpf(denv, "TEST_MULTISCRIPT:"); sieve_code_descend(denv); if ( !sieve_opr_stringlist_dump(denv, address, "scripts") ) return FALSE; return TRUE; }
static bool cmd_execute_operation_dump (const struct sieve_dumptime_env *denv, sieve_size_t *address) { int opt_code = 0; unsigned int is_test = 0; /* Read is_test flag */ if ( !sieve_binary_read_byte(denv->sblock, address, &is_test) ) return FALSE; sieve_code_dumpf(denv, "EXECUTE (%s)", (is_test ? "test" : "command")); sieve_code_descend(denv); /* Dump optional operands */ for (;;) { int opt; bool opok = TRUE; if ( (opt=sieve_action_opr_optional_dump(denv, address, &opt_code)) < 0 ) return FALSE; if ( opt == 0 ) break; switch ( opt_code ) { case OPT_INPUT: opok = sieve_opr_string_dump_ex(denv, address, "input", "PIPE"); break; case OPT_OUTPUT: opok = sieve_opr_string_dump(denv, address, "output"); break; default: return FALSE; } if ( !opok ) return FALSE; } if ( !sieve_opr_string_dump(denv, address, "program-name") ) return FALSE; return sieve_opr_stringlist_dump_ex(denv, address, "arguments", ""); }
static bool cmd_filter_operation_dump (const struct sieve_dumptime_env *denv, sieve_size_t *address) { unsigned int is_test = 0; /* Read is_test flag */ if ( !sieve_binary_read_byte(denv->sblock, address, &is_test) ) return FALSE; sieve_code_dumpf(denv, "FILTER (%s)", (is_test ? "test" : "command")); sieve_code_descend(denv); /* Dump optional operands */ if ( sieve_action_opr_optional_dump(denv, address, NULL) != 0 ) return FALSE; if ( !sieve_opr_string_dump(denv, address, "program-name") ) return FALSE; return sieve_opr_stringlist_dump_ex(denv, address, "arguments", ""); }
bool sieve_opr_side_effect_dump (const struct sieve_dumptime_env *denv, sieve_size_t *address) { struct sieve_side_effect seffect; const struct sieve_side_effect_def *sdef; if ( !sieve_opr_object_dump (denv, &sieve_side_effect_operand_class, address, &seffect.object) ) return FALSE; sdef = seffect.def = (const struct sieve_side_effect_def *) seffect.object.def; if ( sdef->dump_context != NULL ) { sieve_code_descend(denv); if ( !sdef->dump_context(&seffect, denv, address) ) { return FALSE; } sieve_code_ascend(denv); } return TRUE; }