Skip to content
Snippets Groups Projects
Commit cfb4d2b6 authored by Stephan Bosch's avatar Stephan Bosch Committed by aki.tuomi
Browse files

plugins: doveadm-sieve: Reformat doveadm-sieve-cmd-put.c.

parent 890b0b35
No related branches found
No related tags found
No related merge requests found
...@@ -15,12 +15,11 @@ struct doveadm_sieve_put_cmd_context { ...@@ -15,12 +15,11 @@ struct doveadm_sieve_put_cmd_context {
struct doveadm_sieve_cmd_context ctx; struct doveadm_sieve_cmd_context ctx;
const char *scriptname; const char *scriptname;
bool activate:1; bool activate:1;
}; };
static int cmd_sieve_put_run static int cmd_sieve_put_run(struct doveadm_sieve_cmd_context *_ctx)
(struct doveadm_sieve_cmd_context *_ctx)
{ {
struct doveadm_sieve_put_cmd_context *ctx = struct doveadm_sieve_put_cmd_context *ctx =
(struct doveadm_sieve_put_cmd_context *)_ctx; (struct doveadm_sieve_put_cmd_context *)_ctx;
...@@ -31,17 +30,16 @@ static int cmd_sieve_put_run ...@@ -31,17 +30,16 @@ static int cmd_sieve_put_run
ssize_t ret; ssize_t ret;
bool save_failed = FALSE; bool save_failed = FALSE;
save_ctx = sieve_storage_save_init save_ctx = sieve_storage_save_init(storage, ctx->scriptname, input);
(storage, ctx->scriptname, input); if (save_ctx == NULL) {
if ( save_ctx == NULL ) {
i_error("Saving failed: %s", i_error("Saving failed: %s",
sieve_storage_get_last_error(storage, &error)); sieve_storage_get_last_error(storage, &error));
doveadm_sieve_cmd_failed_error(_ctx, error); doveadm_sieve_cmd_failed_error(_ctx, error);
return -1; return -1;
} }
while ( (ret = i_stream_read(input)) > 0 || ret == -2 ) { while ((ret = i_stream_read(input)) > 0 || ret == -2) {
if ( sieve_storage_save_continue(save_ctx) < 0 ) { if (sieve_storage_save_continue(save_ctx) < 0) {
save_failed = TRUE; save_failed = TRUE;
ret = -1; ret = -1;
break; break;
...@@ -49,15 +47,16 @@ static int cmd_sieve_put_run ...@@ -49,15 +47,16 @@ static int cmd_sieve_put_run
} }
i_assert(ret == -1); i_assert(ret == -1);
if ( input->stream_errno != 0 ) { if (input->stream_errno != 0) {
i_error("read(script input) failed: %s", i_stream_get_error(input)); i_error("read(script input) failed: %s",
doveadm_sieve_cmd_failed_error i_stream_get_error(input));
(&ctx->ctx, SIEVE_ERROR_TEMP_FAILURE); doveadm_sieve_cmd_failed_error(&ctx->ctx,
} else if ( save_failed ) { SIEVE_ERROR_TEMP_FAILURE);
} else if (save_failed) {
i_error("Saving failed: %s", i_error("Saving failed: %s",
sieve_storage_get_last_error(storage, NULL)); sieve_storage_get_last_error(storage, NULL));
doveadm_sieve_cmd_failed_storage(&ctx->ctx, storage); doveadm_sieve_cmd_failed_storage(&ctx->ctx, storage);
} else if ( sieve_storage_save_finish(save_ctx) < 0 ) { } else if (sieve_storage_save_finish(save_ctx) < 0) {
i_error("Saving failed: %s", i_error("Saving failed: %s",
sieve_storage_get_last_error(storage, NULL)); sieve_storage_get_last_error(storage, NULL));
doveadm_sieve_cmd_failed_storage(&ctx->ctx, storage); doveadm_sieve_cmd_failed_storage(&ctx->ctx, storage);
...@@ -66,10 +65,11 @@ static int cmd_sieve_put_run ...@@ -66,10 +65,11 @@ static int cmd_sieve_put_run
} }
/* Verify that script compiles */ /* Verify that script compiles */
if ( ret == 0 ) { if (ret == 0) {
struct sieve_error_handler *ehandler; struct sieve_error_handler *ehandler;
enum sieve_compile_flags cpflags = enum sieve_compile_flags cpflags =
SIEVE_COMPILE_FLAG_NOGLOBAL | SIEVE_COMPILE_FLAG_UPLOADED; SIEVE_COMPILE_FLAG_NOGLOBAL |
SIEVE_COMPILE_FLAG_UPLOADED;
struct sieve_script *script; struct sieve_script *script;
struct sieve_binary *sbin; struct sieve_binary *sbin;
...@@ -77,21 +77,26 @@ static int cmd_sieve_put_run ...@@ -77,21 +77,26 @@ static int cmd_sieve_put_run
script = sieve_storage_save_get_tempscript(save_ctx); script = sieve_storage_save_get_tempscript(save_ctx);
/* Check result */ /* Check result */
if ( script == NULL ) { if (script == NULL) {
i_error("Saving failed: %s", i_error("Saving failed: %s",
sieve_storage_get_last_error(storage, &error)); sieve_storage_get_last_error(storage, &error));
doveadm_sieve_cmd_failed_error(_ctx, error); doveadm_sieve_cmd_failed_error(_ctx, error);
ret = -1; ret = -1;
} else { } else {
/* Mark this as an activation when we are replacing the active script */ /* Mark this as an activation when we are replacing the
if ( ctx->activate || sieve_storage_save_will_activate(save_ctx) ) active script.
*/
if (ctx->activate ||
sieve_storage_save_will_activate(save_ctx))
cpflags |= SIEVE_COMPILE_FLAG_ACTIVATED; cpflags |= SIEVE_COMPILE_FLAG_ACTIVATED;
/* Compile */ /* Compile */
ehandler = sieve_master_ehandler_create(ctx->ctx.svinst, 0); ehandler = sieve_master_ehandler_create(
if ( (sbin=sieve_compile_script ctx->ctx.svinst, 0);
(script, ehandler, cpflags, &error)) == NULL ) { sbin = sieve_compile_script(script, ehandler, cpflags,
&error);
if (sbin == NULL) {
doveadm_sieve_cmd_failed_error(_ctx, error); doveadm_sieve_cmd_failed_error(_ctx, error);
ret = -1; ret = -1;
} else { } else {
...@@ -101,8 +106,10 @@ static int cmd_sieve_put_run ...@@ -101,8 +106,10 @@ static int cmd_sieve_put_run
ret = sieve_storage_save_commit(&save_ctx); ret = sieve_storage_save_commit(&save_ctx);
if (ret < 0) { if (ret < 0) {
i_error("Saving failed: %s", i_error("Saving failed: %s",
sieve_storage_get_last_error(storage, &error)); sieve_storage_get_last_error(
doveadm_sieve_cmd_failed_error(_ctx, error); storage, &error));
doveadm_sieve_cmd_failed_error(
_ctx, error);
ret = -1; ret = -1;
} }
} }
...@@ -110,14 +117,15 @@ static int cmd_sieve_put_run ...@@ -110,14 +117,15 @@ static int cmd_sieve_put_run
} }
} }
if ( save_ctx != NULL ) if (save_ctx != NULL)
sieve_storage_save_cancel(&save_ctx); sieve_storage_save_cancel(&save_ctx);
if ( ctx->activate && ret == 0 ) { if (ctx->activate && ret == 0) {
struct sieve_script *script = sieve_storage_open_script struct sieve_script *script =
(storage, ctx->scriptname, NULL); sieve_storage_open_script(storage, ctx->scriptname,
if ( script == NULL || NULL);
sieve_script_activate(script, (time_t)-1) < 0) { if (script == NULL ||
sieve_script_activate(script, (time_t)-1) < 0) {
i_error("Failed to activate Sieve script: %s", i_error("Failed to activate Sieve script: %s",
sieve_storage_get_last_error(storage, &error)); sieve_storage_get_last_error(storage, &error));
doveadm_sieve_cmd_failed_error(_ctx, error); doveadm_sieve_cmd_failed_error(_ctx, error);
...@@ -131,14 +139,14 @@ static int cmd_sieve_put_run ...@@ -131,14 +139,14 @@ static int cmd_sieve_put_run
return ret < 0 ? -1 : 0; return ret < 0 ? -1 : 0;
} }
static void cmd_sieve_put_init static void
(struct doveadm_mail_cmd_context *_ctx, cmd_sieve_put_init(struct doveadm_mail_cmd_context *_ctx,
const char *const args[]) const char *const args[])
{ {
struct doveadm_sieve_put_cmd_context *ctx = struct doveadm_sieve_put_cmd_context *ctx =
(struct doveadm_sieve_put_cmd_context *)_ctx; (struct doveadm_sieve_put_cmd_context *)_ctx;
if ( str_array_length(args) != 1 ) if (str_array_length(args) != 1)
doveadm_mail_help_name("sieve put"); doveadm_mail_help_name("sieve put");
doveadm_sieve_cmd_scriptnames_check(args); doveadm_sieve_cmd_scriptnames_check(args);
...@@ -153,7 +161,7 @@ cmd_sieve_put_parse_arg(struct doveadm_mail_cmd_context *_ctx, int c) ...@@ -153,7 +161,7 @@ cmd_sieve_put_parse_arg(struct doveadm_mail_cmd_context *_ctx, int c)
struct doveadm_sieve_put_cmd_context *ctx = struct doveadm_sieve_put_cmd_context *ctx =
(struct doveadm_sieve_put_cmd_context *)_ctx; (struct doveadm_sieve_put_cmd_context *)_ctx;
switch ( c ) { switch (c) {
case 'a': case 'a':
ctx->activate = TRUE; ctx->activate = TRUE;
break; break;
...@@ -163,8 +171,7 @@ cmd_sieve_put_parse_arg(struct doveadm_mail_cmd_context *_ctx, int c) ...@@ -163,8 +171,7 @@ cmd_sieve_put_parse_arg(struct doveadm_mail_cmd_context *_ctx, int c)
return TRUE; return TRUE;
} }
static struct doveadm_mail_cmd_context * static struct doveadm_mail_cmd_context *cmd_sieve_put_alloc(void)
cmd_sieve_put_alloc(void)
{ {
struct doveadm_sieve_put_cmd_context *ctx; struct doveadm_sieve_put_cmd_context *ctx;
......
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.