aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2009-12-06 12:20:08 +0200
committerSergey Poznyakoff <gray@gnu.org.ua>2009-12-06 12:20:08 +0200
commita1d560a878d1dfe4ed751cb3f99b1ee67755f489 (patch)
tree0c7e45d5ba14c309fe67929245d8a75df6d3692a /src
parent565650272f219fd372347f0ff3375b09caa18952 (diff)
downloadwydawca-a1d560a878d1dfe4ed751cb3f99b1ee67755f489.tar.gz
wydawca-a1d560a878d1dfe4ed751cb3f99b1ee67755f489.tar.bz2
Allow to specify arbitrary notification recipients.
* src/wydawca.h (enum notification_target): New value notify_read, meaning "read recipient addresses from the message headers". * src/config.c (target_args): New values: "read" and "message". (target_types): New value 'notify_read'. * src/mail.c (mail_send_message): Handle NULL rcpt. (do_notify): Handle notify_read.
Diffstat (limited to 'src')
-rw-r--r--src/config.c4
-rw-r--r--src/mail.c15
-rw-r--r--src/vtab.c2
-rw-r--r--src/wydawca.h1
4 files changed, 20 insertions, 2 deletions
diff --git a/src/config.c b/src/config.c
index c877c26..559f766 100644
--- a/src/config.c
+++ b/src/config.c
@@ -182,6 +182,8 @@ string_to_notification_event (grecs_locus_t *locus, const char *val,
}
static const char *target_args[] = {
+ "read",
+ "message",
"admin",
"owner",
"user",
@@ -189,6 +191,8 @@ static const char *target_args[] = {
};
static int target_types[] = {
+ notify_read, /* Read recipients from the message headers */
+ notify_read,
notify_admin, /* System administrator */
notify_owner, /* Project admin */
notify_user /* User (uploader) */
diff --git a/src/mail.c b/src/mail.c
index a40e4b4..91ea502 100644
--- a/src/mail.c
+++ b/src/mail.c
@@ -64,6 +64,8 @@ mail_send_message (mu_address_t rcpt, const char *text)
mu_message_get_header (msg, &hdr);
mu_header_append (hdr, "X-Mailer", x_mailer);
+ if (rcpt)
+ {
mu_address_to_string (rcpt, NULL, 0, &size);
buf = xmalloc (size + 1);
mu_address_to_string (rcpt, buf, size + 1, NULL);
@@ -79,6 +81,7 @@ mail_send_message (mu_address_t rcpt, const char *text)
mu_header_set_value (hdr, "From", buf, 1);
free (buf);
}
+ }
if (debug_level > 1)
{
@@ -365,6 +368,10 @@ do_notify (struct file_triplet *trp, enum notification_event ev,
const char *errp;
switch (ntf->tgt)
{
+ case notify_read:
+ rcpt = NULL;
+ break;
+
case notify_admin:
rcpt = mu_address_dup (admin_address);
break;
@@ -378,7 +385,7 @@ do_notify (struct file_triplet *trp, enum notification_event ev,
trp, &errp);
}
- if (!rcpt)
+ if (!rcpt && ntf->tgt != notify_read)
{
logmsg (LOG_ERR, _("not notifying %s (project %s) about %s: %s"),
notification_target_str (ntf->tgt),
@@ -389,6 +396,8 @@ do_notify (struct file_triplet *trp, enum notification_event ev,
if (debug_level)
{
+ if (rcpt)
+ {
size_t size;
char *buf;
mu_address_to_string (rcpt, NULL, 0, &size);
@@ -398,6 +407,10 @@ do_notify (struct file_triplet *trp, enum notification_event ev,
buf, trp->project, notification_event_str (ev));
free (buf);
}
+ else
+ logmsg (LOG_DEBUG, _("notifying message recipients (project %s) about %s"),
+ trp->project, notification_event_str (ev));
+ }
if (!dry_run_mode)
{
diff --git a/src/vtab.c b/src/vtab.c
index 2852d04..70f11d2 100644
--- a/src/vtab.c
+++ b/src/vtab.c
@@ -54,7 +54,7 @@ url_to_vtab (mu_url_t url, struct virt_tab *vtab)
int
-move_file (struct file_triplet *trp, const const struct spool *spool,
+move_file (struct file_triplet *trp, const struct spool *spool,
enum file_type file_id, const char *reldir)
{
int rc = spool->vtab.move_file (trp, spool, file_id, reldir);
diff --git a/src/wydawca.h b/src/wydawca.h
index bd81b88..805b72b 100644
--- a/src/wydawca.h
+++ b/src/wydawca.h
@@ -270,6 +270,7 @@ enum notification_event
enum notification_target
{
+ notify_read, /* Read recipients from the message headers */
notify_admin, /* System administrator */
notify_owner, /* Project admin */
notify_user /* User (uploader) */

Return to:

Send suggestions and report system problems to the System administrator.