diff options
Diffstat (limited to 'mh/mh_whom.c')
-rw-r--r-- | mh/mh_whom.c | 86 |
1 files changed, 57 insertions, 29 deletions
diff --git a/mh/mh_whom.c b/mh/mh_whom.c index bbdef7ac5..f3067d1ab 100644 --- a/mh/mh_whom.c +++ b/mh/mh_whom.c @@ -263,3 +263,42 @@ read_header (mu_stream_t stream) int -mh_whom (const char *filename, int check) +mh_whom_header (mu_header_t hdr) +{ + size_t count = 0; + int rc; + const char *val; + + mh_read_aliases (); + + if (mu_header_sget_value (hdr, MU_HEADER_TO, &val) == 0) + scan_addrs (val, 0); + if (mu_header_sget_value (hdr, MU_HEADER_CC, &val) == 0) + scan_addrs (val, 0); + if (mu_header_sget_value (hdr, MU_HEADER_BCC, &val) == 0) + scan_addrs (val, 1); + + if (local_rcp) + { + printf (" %s\n", _("-- Local Recipients --")); + mu_list_foreach (local_rcp, _print_local_recipient, &count); + } + + if (network_rcp) + { + printf (" %s\n", _("-- Network Recipients --")); + mu_list_foreach (network_rcp, _print_recipient, &count); + } + + if (count == 0) + { + mu_error(_("no recipients")); + rc = -1; + } + + destroy_addrs (&network_rcp); + destroy_addrs (&local_rcp); + return rc; +} + +int +mh_whom_file (const char *filename, int check) { @@ -274,3 +313,2 @@ mh_whom (const char *filename, int check) { - size_t count = 0; mu_header_t hdr; @@ -278,3 +316,2 @@ mh_whom (const char *filename, int check) int rc; - const char *val; @@ -290,33 +327,24 @@ mh_whom (const char *filename, int check) - mh_read_aliases (); - - if (mu_header_sget_value (hdr, MU_HEADER_TO, &val) == 0) - scan_addrs (val, 0); - if (mu_header_sget_value (hdr, MU_HEADER_CC, &val) == 0) - scan_addrs (val, 0); - if (mu_header_sget_value (hdr, MU_HEADER_BCC, &val) == 0) - scan_addrs (val, 1); - - if (local_rcp) - { - printf (" %s\n", _("-- Local Recipients --")); - mu_list_foreach (local_rcp, _print_local_recipient, &count); - } + rc = mh_whom_header (hdr); + mu_header_destroy (&hdr); + } + return rc; +} - if (network_rcp) - { - printf (" %s\n", _("-- Network Recipients --")); - mu_list_foreach (network_rcp, _print_recipient, &count); - } +int +mh_whom_message (mu_message_t msg, int check) +{ + mu_header_t hdr; + int rc; - if (count == 0) - { - mu_error(_("no recipients")); - rc = -1; - } + rc = mu_message_get_header (msg, &hdr); + if (rc) + mu_error (_("can't get headers: %s"), mu_strerror (rc)); + else + { + rc = mh_whom_header (hdr); mu_header_destroy (&hdr); } - destroy_addrs (&network_rcp); - destroy_addrs (&local_rcp); return rc; } + |