static int cmd_sieve_deactivate_run (struct doveadm_sieve_cmd_context *_ctx) { struct sieve_storage *storage = _ctx->storage; enum sieve_error error; if (sieve_storage_deactivate(storage, (time_t)-1) < 0) { i_error("Failed to deactivate Sieve script: %s", sieve_storage_get_last_error(storage, &error)); doveadm_sieve_cmd_failed_error(_ctx, error); return -1; } return 0; }
static int sieve_attribute_set_active(struct mail_storage *storage, struct sieve_storage *svstorage, const struct mail_attribute_value *value) { const char *scriptname; struct sieve_script *script; int ret; if (mailbox_attribute_value_to_string(storage, value, &scriptname) < 0) return -1; if (scriptname == NULL) { /* don't affect non-link active script */ if ((ret=sieve_storage_is_singular(svstorage)) != 0) { if (ret < 0) { mail_storage_set_internal_error(storage); return -1; } return 0; } /* deactivate current script */ if (sieve_storage_deactivate(svstorage, value->last_change) < 0) { mail_storage_set_critical(storage, "Failed to deactivate Sieve: %s", sieve_storage_get_last_error(svstorage, NULL)); return -1; } return 0; } i_assert(scriptname[0] == MAILBOX_ATTRIBUTE_SIEVE_DEFAULT_LINK); scriptname++; /* activate specified script */ script = sieve_storage_open_script(svstorage, scriptname, NULL); ret = script == NULL ? -1 : sieve_script_activate(script, value->last_change); if (ret < 0) { mail_storage_set_critical(storage, "Failed to activate Sieve script '%s': %s", scriptname, sieve_storage_get_last_error(svstorage, NULL)); } if (script != NULL) sieve_script_unref(&script); sieve_storage_set_modified(svstorage, value->last_change); return ret; }
static int sieve_attribute_unset_active_script(struct mail_storage *storage, struct sieve_storage *svstorage, time_t last_change) { int ret; if ((ret=sieve_storage_is_singular(svstorage)) != 0) { if (ret < 0) mail_storage_set_internal_error(storage); return ret; } if (sieve_storage_deactivate(svstorage, last_change) < 0) { mail_storage_set_critical(storage, "Failed to deactivate sieve: %s", sieve_storage_get_last_error(svstorage, NULL)); return -1; } return 0; }