Commit ad98cad1 ad98cad1ba758ed988a39f763ecc2ecda4eedb20 by Sergey Poznyakoff

Option -M none disables creating the mailer.

1 parent 28a860df
......@@ -49,7 +49,7 @@ sieve script interpreter.
#include <mailutils/registrar.h>
#include <mailutils/stream.h>
void mutil_register_all_mbox_formats(void);
void mutil_register_all_mbox_formats (void);
const char *argp_program_version = "sieve (" PACKAGE_STRING ")";
......@@ -63,8 +63,7 @@ static char doc[] =
" P - network protocols (MU_DEBUG_PROT)\n"
" t - sieve trace (SV_DEBUG_TRACE)\n"
" h - sieve header filling (SV_DEBUG_HDR_FILL)\n"
" q - sieve message queries (SV_DEBUG_MSG_QUERY)\n"
;
" q - sieve message queries (SV_DEBUG_MSG_QUERY)\n";
#define D_DEFAULT "TPt"
......@@ -85,7 +84,7 @@ static struct argp_option options[] = {
"Ticket file for mailbox authentication", 0},
{"mailer-url", 'M', "MAILER", 0,
"Mailer URL (defaults to \"sendmail:\")", 0},
"Mailer URL (defaults to \"sendmail:\"). Use `--mailer-url none' to disable creating the mailer (it will disable reject and redirect actions as well)", 0},
{"debug", 'd', "FLAGS", OPTION_ARG_OPTIONAL,
"Debug flags (defaults to \"" D_DEFAULT "\")", 0},
......@@ -215,17 +214,17 @@ static const char *sieve_argp_capa[] = {
};
char *sieve_license_text =
" Copyright 1999 by Carnegie Mellon University\n"
" Copyright 1999,2001,2002 by Free Software Foundation\n"
"\n"
" Permission to use, copy, modify, and distribute this software and its\n"
" documentation for any purpose and without fee is hereby granted,\n"
" provided that the above copyright notice appear in all copies and that\n"
" both that copyright notice and this permission notice appear in\n"
" supporting documentation, and that the name of Carnegie Mellon\n"
" University not be used in advertising or publicity pertaining to\n"
" distribution of the software without specific, written prior\n"
" permission.\n";
" Copyright 1999 by Carnegie Mellon University\n"
" Copyright 1999,2001,2002 by Free Software Foundation\n"
"\n"
" Permission to use, copy, modify, and distribute this software and its\n"
" documentation for any purpose and without fee is hereby granted,\n"
" provided that the above copyright notice appear in all copies and that\n"
" both that copyright notice and this permission notice appear in\n"
" supporting documentation, and that the name of Carnegie Mellon\n"
" University not be used in advertising or publicity pertaining to\n"
" distribution of the software without specific, written prior\n"
" permission.\n";
static void
......@@ -292,10 +291,11 @@ main (int argc, char *argv[])
/* Override license text: */
mu_license_text = sieve_license_text;
rc = mu_argp_parse(&argp, &argc, &argv, ARGP_IN_ORDER, sieve_argp_capa,
rc = mu_argp_parse (&argp, &argc, &argv, ARGP_IN_ORDER, sieve_argp_capa,
0, &opts);
if (rc) {
if (rc)
{
fprintf (stderr, "arg parsing failed: %s\n", sv_strerror (rc));
return 1;
}
......@@ -353,18 +353,22 @@ main (int argc, char *argv[])
}
if ((rc = mu_debug_set_level (debug, opts.debug_level)))
{
fprintf (stderr, "mu_debug_set_level failed: %s\n", mu_errstring (rc));
fprintf (stderr, "mu_debug_set_level failed: %s\n",
mu_errstring (rc));
goto cleanup;
}
if ((rc = mu_debug_set_print (debug, debug_print, interp)))
{
fprintf (stderr, "mu_debug_set_print failed: %s\n", mu_errstring (rc));
fprintf (stderr, "mu_debug_set_print failed: %s\n",
mu_errstring (rc));
goto cleanup;
}
}
/* Create a mailer. */
if ((rc = mailer_create(&mailer, opts.mailer)))
if (strcmp (opts.mailer, "none"))
{
if ((rc = mailer_create (&mailer, opts.mailer)))
{
fprintf (stderr, "mailer create <%s> failed: %s\n",
opts.mailer, mu_errstring (rc));
......@@ -372,10 +376,11 @@ main (int argc, char *argv[])
}
if (debug && (rc = mailer_set_debug (mailer, debug)))
{
fprintf (stderr, "mailer_set_debug failed: %s\n", mu_errstring (rc));
fprintf (stderr, "mailer_set_debug failed: %s\n",
mu_errstring (rc));
goto cleanup;
}
}
/* Create, give a ticket to, and open the mailbox. */
if ((rc = mailbox_create_default (&mbox, opts.mbox)) != 0)
{
......@@ -397,20 +402,23 @@ main (int argc, char *argv[])
if ((rc = mailbox_get_folder (mbox, &folder)))
{
fprintf (stderr, "mailbox_get_folder failed: %s", mu_errstring (rc));
fprintf (stderr, "mailbox_get_folder failed: %s",
mu_errstring (rc));
goto cleanup;
}
if ((rc = folder_get_authority (folder, &auth)))
{
fprintf (stderr, "folder_get_authority failed: %s", mu_errstring (rc));
fprintf (stderr, "folder_get_authority failed: %s",
mu_errstring (rc));
goto cleanup;
}
/* Authentication-less folders don't have authorities. */
if (auth && (rc = authority_set_ticket (auth, ticket)))
{
fprintf (stderr, "authority_set_ticket failed: %s", mu_errstring (rc));
fprintf (stderr, "authority_set_ticket failed: %s",
mu_errstring (rc));
goto cleanup;
}
}
......@@ -445,11 +453,14 @@ main (int argc, char *argv[])
if ((rc = mailbox_get_message (mbox, msgno, &msg)) != 0)
{
fprintf (stderr, "get message on %s (msg %d) failed: %s\n",
opts.mbox ? opts.mbox : "default", msgno, mu_errstring (rc));
opts.mbox ? opts.mbox : "default", msgno,
mu_errstring (rc));
goto cleanup;
}
rc = sv_script_execute (script, msg, ticket, debug, mailer, opts.no_actions);
rc =
sv_script_execute (script, msg, ticket, debug, mailer,
opts.no_actions);
if (rc)
{
......@@ -476,13 +487,13 @@ cleanup:
fprintf (stderr, "expunge on %s failed: %s\n",
opts.mbox ? opts.mbox : "default", mu_errstring (e));
if(e && !rc)
if (e && !rc)
rc = e;
}
mailbox_close (mbox);
mailbox_destroy (&mbox);
mu_debug_destroy(&debug, interp);
mu_debug_destroy (&debug, interp);
sv_script_free (&script);
sv_interp_free (&interp);
......@@ -503,4 +514,3 @@ mutil_register_all_mbox_formats (void)
list_append (bookie, sendmail_record);
list_append (bookie, smtp_record);
}
......