int print_envelope (msgset_t *mspec, mu_message_t msg, void *data) { int status; mu_envelope_t env = NULL; const char *sender = NULL, *date = NULL; status = mu_message_get_envelope (msg, &env); if (status) { mu_error (_("%lu: Cannot get envelope"), (unsigned long) mspec->msg_part[0]); } else { mu_envelope_sget_sender (env, &sender); mu_envelope_sget_date (env, &date); if (data) mu_printf ("%s ", (char*) data); mu_printf ("%s %s", sender, date); } return 0; }
/* %f */ static char * hdr_from (struct header_call_args *args, void *data) { char *from = NULL; if (mailvar_get (NULL, "fromfield", mailvar_type_boolean, 0) == 0) { mu_header_t hdr; mu_message_get_header (args->msg, &hdr); if (mu_header_aget_value_unfold (hdr, MU_HEADER_FROM, &from) == 0) { mu_address_t address = NULL; if (mu_address_create (&address, from) == 0) { char *name; const char *email; if (mu_address_sget_email (address, 1, &email) == 0) { if (mailvar_get (NULL, "showto", mailvar_type_boolean, 0) == 0 && mail_is_my_name (email)) { char *tmp; if (mu_header_aget_value_unfold (hdr, MU_HEADER_TO, &tmp) == 0) { mu_address_t addr_to; if (mu_address_create (&addr_to, tmp) == 0) { mu_address_destroy (&address); address = addr_to; } free (tmp); } } } if ((mu_address_aget_personal (address, 1, &name) == 0 && name) || (mu_address_aget_email (address, 1, &name) == 0 && name)) { free (from); from = name; } mu_address_destroy (&address); } } util_rfc2047_decode (&from); } else { mu_envelope_t env = NULL; const char *sender = ""; if (mu_message_get_envelope (args->msg, &env) == 0) mu_envelope_sget_sender (env, &sender); from = strdup (sender); } header_buf_string (args, from); free (from); return args->buf; }