diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2010-01-02 22:37:49 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2010-01-02 22:38:13 +0200 |
commit | e113d685f81852992a08b5dabab93dd97f0fee59 (patch) | |
tree | 7bf55540c9aa51f80e8f0c38d33a8b2a6da25d42 | |
parent | c44f0f83448b426935e9aeb07c5d761299144d14 (diff) | |
download | wydawca-e113d685f81852992a08b5dabab93dd97f0fee59.tar.gz wydawca-e113d685f81852992a08b5dabab93dd97f0fee59.tar.bz2 |
New email-related meta-variables.
These variables make it possible to avoid setting
`recipient' statement in `notify' blocks, instead
specifying recipients directly in the message
headers and using the default recipient setting, which
is `read'.
* src/mail.c (expand_email_admin)
(expand_email_owner): New functions.
* src/triplet.c (triplet_processor): Remove the
triplet if process_directives returns !0.
(expand_email_user): New function.
(triplet_meta): New keywords email:user (not to
be confused with user:email), email:admin and
email:owner.
* src/wydawca.h (expand_email_admin)
(expand_email_owner): New functions.
* NEWS, doc/wydawca.texi: Updated.
-rw-r--r-- | NEWS | 17 | ||||
-rw-r--r-- | doc/wydawca.texi | 11 | ||||
-rw-r--r-- | src/mail.c | 45 | ||||
-rw-r--r-- | src/triplet.c | 19 | ||||
-rw-r--r-- | src/wydawca.h | 3 |
5 files changed, 94 insertions, 1 deletions
@@ -38,2 +38,19 @@ verify the submitted tarball. See the documentation, section +* New meta-variables + + email:admin Full email address of the systems administrator. + email:owner Full email address of the project administrator. + email:user Full email address of the user who did the upload. + +Note: `email:user' is not to be confused with `user:email'. The latter +is expanded to email address only, while the former yields full email +address, i.e. an address with a personal part, e.g.: + + "Ty Coon" <ty@coon.org> + +* New meta-construct + +The special construct $-, when used in message texts, causes removal +of the character following it. Its intended use is primarily to +remove the following newline character (like dnl in m4). diff --git a/doc/wydawca.texi b/doc/wydawca.texi index e9e63be..581004b 100644 --- a/doc/wydawca.texi +++ b/doc/wydawca.texi @@ -2601,2 +2601,13 @@ $@{triplet:ls:dir@} @item user:email @tab Email of the user who uploaded the triplet. +@kwindex email:admin +@item email:admin @tab Full@footnote{@dfn{Full} here means +an email address with eventual personal part}. email address of the systems +administrator, as set by the @samp{admin-address} +(@pxref{notification,,admin-address}). +@kwindex email:owner +@item email:owner @tab Full email address of the project +administrator (@dfn{owner}). +@kwindex email:user +@item email:user @tab Full email address of the user who did +the upload. Not to be confused with @samp{user:email}. @kwindex check:result @@ -687 +687,46 @@ notify (struct notification *notification_list, } + +const char * +expand_email_admin (struct metadef *def, void *data) +{ + size_t size; + if (mu_address_to_string (admin_address, NULL, 0, &size) == 0) + { + size++; + def->storage = xmalloc (size); + mu_address_to_string (admin_address, def->storage, size, NULL); + def->value = def->storage; + } + else + def->value = ""; + return def->value; +} + +const char * +expand_email_owner (struct metadef *def, void *data) +{ + struct file_triplet *trp = data; + mu_address_t addr; + const char *errp; + size_t size; + + addr = get_recipient (trp->spool->dictionary[project_owner_dict], + trp, &errp); + if (!addr) + { + logmsg (LOG_ERR, _("cannot get email of the %s's owner: %s"), + trp->project, gettext (errp)); + def->value = ""; + } + else if (mu_address_to_string (addr, NULL, 0, &size) == 0) + { + size++; + def->storage = xmalloc (size); + mu_address_to_string (addr, def->storage, size, NULL); + def->value = def->storage; + mu_address_destroy (&addr); + } + else + def->value = ""; + return def->value; +} diff --git a/src/triplet.c b/src/triplet.c index 7f6ac68..0744daa 100644 --- a/src/triplet.c +++ b/src/triplet.c @@ -195,3 +195,4 @@ triplet_processor (void *data, void *proc_data) logmsg (LOG_DEBUG, _("processing triplet `%s'"), trp->name); - process_directives (trp, spool); + if (process_directives (trp, spool)) + remove_triplet (trp); return true; @@ -517,2 +518,15 @@ expand_user_email (struct metadef *def, void *data) static const char * +expand_email_user (struct metadef *def, void *data) +{ + struct file_triplet *trp = data; + if (trp->uploader) + { + asprintf (&def->storage, "\"%s\" <%s>", + trp->uploader->realname, trp->uploader->email); + def->value = def->storage; + } + return def->value; +} + +static const char * expand_report (struct metadef *def, void *data) @@ -628,2 +642,5 @@ struct metadef triplet_meta[] = { { "user:email", NULL, expand_user_email, NULL }, + { "email:user", NULL, expand_email_user, NULL }, + { "email:admin", NULL, expand_email_admin, NULL }, + { "email:owner", NULL, expand_email_owner, NULL }, { "report", NULL, expand_report, NULL }, diff --git a/src/wydawca.h b/src/wydawca.h index af24e47..54ecf00 100644 --- a/src/wydawca.h +++ b/src/wydawca.h @@ -314,2 +314,5 @@ void meta_free (struct metadef *def); +const char *expand_email_admin (struct metadef *def, void *data); +const char *expand_email_owner (struct metadef *def, void *data); + |