diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mail.c | 45 | ||||
-rw-r--r-- | src/triplet.c | 19 | ||||
-rw-r--r-- | src/wydawca.h | 3 |
3 files changed, 66 insertions, 1 deletions
@@ -685,3 +685,48 @@ notify (struct notification *notification_list, do_notify (trp, ev, p); /* FIXME */ } + +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 @@ -193,7 +193,8 @@ triplet_processor (void *data, void *proc_data) case triplet_complete: if (debug_level) logmsg (LOG_DEBUG, _("processing triplet `%s'"), trp->name); - process_directives (trp, spool); + if (process_directives (trp, spool)) + remove_triplet (trp); return true; case triplet_incomplete: @@ -515,6 +516,19 @@ 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) { return report_string; @@ -626,6 +640,9 @@ struct metadef triplet_meta[] = { { "user:name", NULL, expand_user_name, NULL }, { "user:real-name", NULL, expand_user_real_name, NULL }, { "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 }, { "comment", NULL, expand_comment, NULL }, DECL_FULL_TIMER(wydawca), diff --git a/src/wydawca.h b/src/wydawca.h index af24e47..54ecf00 100644 --- a/src/wydawca.h +++ b/src/wydawca.h @@ -312,6 +312,9 @@ char *meta_expand_string (const char *string, struct metadef *def, void *data, struct dictionary *dict, void *handle); 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); + /* Global variables */ extern uid_t wydawca_uid; |