- for (i = 0; i < 3; i++) {
- switch (i) {
- case 0:
- p = to;
- break;
- case 1:
- p = cc;
- break;
- case 2:
- p = bcc;
- break;
- default:
- abort ();
- }
-
- *last = address_list_dup (p);
- while (*last)
- last = &((*last)->next);
- }
-
- rfc822_qualify(tmp, fqdn);
- address_list_uniq(tmp);
-
- for (p = tmp; p; p = p->next) {
- char buf[LONG_STRING];
- int forced_valid = 0;
-
- q = p;
- k_info = NULL;
+ {
+ address_t **last = &lst;
+ *last = address_list_dup(env->to);
+ last = address_list_last(last);
+ *last = address_list_dup(env->cc);
+ last = address_list_last(last);
+ *last = address_list_dup(env->bcc);
+
+ rfc822_qualify(lst, mutt_fqdn(1));
+ address_list_uniq(lst);
+ }
+
+ while ((addr = address_list_pop(&lst))) {
+ char buf[STRING];
+ int forced_valid = 0;
+ const char *keyID;
+ cryptkey_t *key = NULL;
+
+ if ((keyID = mutt_crypt_hook(addr))) {
+ int r;
+
+ snprintf(buf, sizeof(buf), _("Use keyID = \"%s\" for %s?"), keyID,
+ addr->mailbox);
+ r = mutt_yesorno(buf, M_YES);
+
+ if (r == -1) {
+ address_list_wipe(&lst);
+ address_list_wipe(&addr);
+ buffer_delete(&keylist);
+ return NULL;
+ }