]> git.pld-linux.org Git - packages/mutt.git/blobdiff - mutt-pgp_hook.patch
- merged DEVEL
[packages/mutt.git] / mutt-pgp_hook.patch
diff --git a/mutt-pgp_hook.patch b/mutt-pgp_hook.patch
deleted file mode 100644 (file)
index 8c77a61..0000000
+++ /dev/null
@@ -1,245 +0,0 @@
---- crypt-hook-both/PATCHES Dec 2002 17:44:54 -0000    3.6
-+++ crypt-hook-both/PATCHES Feb 2004 13:19:43 -0000
-@@ -0,0 +1,2 @@
-+patch-1.5.6.dw.confirm-crypt-hook.1
-+patch-1.5.6.dw.multiple-crypt-hook.2
---- mutt-1.5.15/hook.c.orig    2007-06-03 14:10:28.090351677 +0200
-+++ mutt-1.5.15/hook.c 2007-06-03 14:12:17.468584787 +0200
-@@ -139,7 +139,11 @@ int mutt_parse_hook (BUFFER *buf, BUFFER
-       ptr->rx.not == not &&
-       !mutt_strcmp (pattern.data, ptr->rx.pattern))
-     {
-+#ifdef M_CRYPTHOOK
-+      if (data & (M_FOLDERHOOK | M_SENDHOOK | M_SEND2HOOK | M_MESSAGEHOOK | M_ACCOUNTHOOK | M_REPLYHOOK | M_CRYPTHOOK))
-+#else
-       if (data & (M_FOLDERHOOK | M_SENDHOOK | M_SEND2HOOK | M_MESSAGEHOOK | M_ACCOUNTHOOK | M_REPLYHOOK))
-+#endif
-       {
-       /* these hooks allow multiple commands with the same
-        * pattern, so if we've already seen this pattern/command pair, just
-@@ -466,9 +470,25 @@ char *mutt_iconv_hook (const char *chs)
-   return _mutt_string_hook (chs, M_ICONVHOOK);
- }
--char *mutt_crypt_hook (ADDRESS *adr)
-+LIST *mutt_crypt_hook (ADDRESS *adr)
- {
--  return _mutt_string_hook (adr->mailbox, M_CRYPTHOOK);
-+  HOOK *hook;
-+  LIST *key_list = NULL;
-+
-+  if (!adr && !adr->mailbox)
-+    return (NULL);
-+
-+  for (hook = Hooks; hook; hook = hook->next)
-+  {
-+    if (!hook->command)
-+      continue;
-+    if (!(hook->type & M_CRYPTHOOK))
-+      continue;
-+
-+    if ((regexec (hook->rx.rx, adr->mailbox, 0, NULL, 0) == 0) ^ hook->rx.not)
-+      key_list = mutt_add_list (key_list, hook->command);
-+  }
-+  return (key_list);
- }
- #ifdef USE_SOCKET
---- crypt-hook-both/init.h Feb 2004 17:10:43 -0000     3.43
-+++ crypt-hook-both/init.h Feb 2004 13:19:43 -0000
-@@ -1230,2 +1230,11 @@ struct option_t MuttVars[] = {
-   */
-+  { "pgp_confirmhook",                DT_SYN, R_NONE, UL "crypt_confirmhook", 1 },
-+  { "crypt_confirmhook",      DT_BOOL, R_NONE, OPTCRYPTCONFIRMHOOK, 1 },
-+  /*
-+  ** .pp
-+  ** If set, then you will be prompted for confirmation of keys when using
-+  ** the \fIcrypt-hook\fP command.  If unset, no such confirmation prompt will
-+  ** be presented.  This is generally considered unsafe, especially where
-+  ** typos are concerned.
-+  */
-   { "pgp_ignore_subkeys", DT_BOOL, R_NONE, OPTPGPIGNORESUB, 1},
---- crypt-hook-both/mutt.h Feb 2004 17:10:43 -0000     3.23
-+++ crypt-hook-both/mutt.h Feb 2004 13:19:44 -0000
-@@ -442,2 +442,3 @@ enum
-   OPTSDEFAULTDECRYPTKEY,
-+  OPTCRYPTCONFIRMHOOK,
-   OPTPGPIGNORESUB,
---- crypt-hook-both/pgp.c Sep 2003 13:03:26 -0000      3.26
-+++ crypt-hook-both/pgp.c Feb 2004 13:19:44 -0000
-@@ -1018,2 +1018,4 @@ char *pgp_findKeys (ADDRESS *to, ADDRESS
-   size_t keylist_used = 0;
-+  LIST *hook_list = NULL;
-+  LIST *hook = NULL;
-   ADDRESS *tmp = NULL, *addr = NULL;
-@@ -1051,66 +1053,93 @@ char *pgp_findKeys (ADDRESS *to, ADDRESS
-     q = p;
--    k_info = NULL;
--    if ((keyID = mutt_crypt_hook (p)) != NULL)
-+    /*
-+     * grab the list of matching hooks (matching on recipient address)
-+     * process each entry singly so that auto key selection still works
-+     */
-+    hook_list = mutt_crypt_hook (p);
-+    hook = hook_list;
-+    while (1)
-     {
-       int r;
--      snprintf (buf, sizeof (buf), _("Use keyID = \"%s\" for %s?"), keyID, p->mailbox);
--      if ((r = mutt_yesorno (buf, M_YES)) == M_YES)
-+
-+      k_info = NULL;
-+      key = NULL;
-+
-+      if (hook)
-       {
--      if (is_numerical_keyid (keyID))
-+      keyID = (char *)hook->data;
-+      snprintf (buf, sizeof (buf), _("Use keyID = \"%s\" for %s?"), keyID, p->mailbox);
-+      if (!option(OPTCRYPTCONFIRMHOOK) || (r = mutt_yesorno (buf, M_YES)) == M_YES)
-       {
--        if (strncmp (keyID, "0x", 2) == 0)
--          keyID += 2;
--        goto bypass_selection;                /* you don't see this. */
-+        if (is_numerical_keyid (keyID))
-+        {
-+          if (strncmp (keyID, "0x", 2) == 0)
-+            keyID += 2;
-+          goto bypass_selection;              /* you don't see this. */
-+        }
-+
-+        /* check for e-mail address */
-+        if ((t = strchr (keyID, '@')) && 
-+            (addr = rfc822_parse_adrlist (NULL, keyID)))
-+        {
-+          if (fqdn) rfc822_qualify (addr, fqdn);
-+          q = addr;
-+        }
-+        else
-+          k_info = pgp_getkeybystr (keyID, KEYFLAG_CANENCRYPT, PGP_PUBRING);
-       }
--      
--      /* check for e-mail address */
--      if ((t = strchr (keyID, '@')) && 
--          (addr = rfc822_parse_adrlist (NULL, keyID)))
-+      else if (r == -1)
-       {
--        if (fqdn) rfc822_qualify (addr, fqdn);
--        q = addr;
-+        /*
-+         * yes, this implies that if one key fails they all do
-+         */
-+        FREE (&keylist);
-+        rfc822_free_address (&tmp);
-+        rfc822_free_address (&addr);
-+        mutt_free_list (&hook_list);
-+        return NULL;
-       }
--      else
--        k_info = pgp_getkeybystr (keyID, KEYFLAG_CANENCRYPT, PGP_PUBRING);
-       }
--      else if (r == -1)
--      {
--      FREE (&keylist);
--      rfc822_free_address (&tmp);
--      rfc822_free_address (&addr);
--      return NULL;
--      }
--    }
--    if (k_info == NULL)
--      pgp_invoke_getkeys (q);
--
--    if (k_info == NULL && (k_info = pgp_getkeybyaddr (q, KEYFLAG_CANENCRYPT, PGP_PUBRING)) == NULL)
--    {
--      snprintf (buf, sizeof (buf), _("Enter keyID for %s: "), q->mailbox);
-+      if (k_info == NULL)
-+      pgp_invoke_getkeys (q);
--      if ((key = pgp_ask_for_key (buf, q->mailbox,
--                                KEYFLAG_CANENCRYPT, PGP_PUBRING)) == NULL)
-+      if (k_info == NULL && (k_info = pgp_getkeybyaddr (q, KEYFLAG_CANENCRYPT, PGP_PUBRING)) == NULL)
-       {
--      FREE (&keylist);
--      rfc822_free_address (&tmp);
--      rfc822_free_address (&addr);
--      return NULL;
-+      snprintf (buf, sizeof (buf), _("Enter keyID for %s: "), q->mailbox);
-+
-+      if ((key = pgp_ask_for_key (buf, q->mailbox,
-+                                  KEYFLAG_CANENCRYPT, PGP_PUBRING)) == NULL)
-+      {
-+        FREE (&keylist);
-+        rfc822_free_address (&tmp);
-+        rfc822_free_address (&addr);
-+        mutt_free_list (&hook_list);
-+        return NULL;
-+      }
-       }
--    }
--    else
--      key = k_info;
-+      else
-+      key = k_info;
--    keyID = pgp_keyid (key);
-+      keyID = pgp_keyid (key);
-     
-   bypass_selection:
--    keylist_size += mutt_strlen (keyID) + 4;
--    safe_realloc (&keylist, keylist_size);
--    sprintf (keylist + keylist_used, "%s0x%s", keylist_used ? " " : "",       /* __SPRINTF_CHECKED__ */
--           keyID);
--    keylist_used = mutt_strlen (keylist);
-+      keylist_size += mutt_strlen (keyID) + 4;
-+      safe_realloc (&keylist, keylist_size);
-+      sprintf (keylist + keylist_used, "%s0x%s", keylist_used ? " " : "",     /* __SPRINTF_CHECKED__ */
-+             keyID);
-+      keylist_used = mutt_strlen (keylist);
--    pgp_free_key (&key);
--    rfc822_free_address (&addr);
-+      pgp_free_key (&key);
-+      rfc822_free_address (&addr);
-+
-+      if (!hook_list)
-+      break;
-+
-+      hook = hook->next;
-+      if (!hook)
-+      break;
-+
-+    }
-+    mutt_free_list (&hook_list);
---- crypt-hook-both/protos.h Feb 2004 17:10:43 -0000   3.19
-+++ crypt-hook-both/protos.h Feb 2004 13:19:44 -0000
-@@ -131,3 +131,3 @@ const char *mutt_get_name (ADDRESS *);
- char *mutt_get_parameter (const char *, PARAMETER *);
--char *mutt_crypt_hook (ADDRESS *);
-+LIST *mutt_crypt_hook (ADDRESS *);
- char *mutt_make_date (char *, size_t);
---- crypt-hook-both/doc/manual.xml.head Feb 2004 17:45:33 -0000        3.26
-+++ crypt-hook-both/doc/manual.xml.head Feb 2004 13:19:44 -0000
-@@ -3293,7 +3293,9 @@
- or because, for some reasons, you need to override the key Mutt would
- normally use.  The <literal>crypt-hook</literal> command provides a
- method by which you can specify the ID of the public key to be used
--when encrypting messages to a certain recipient.
-+when encrypting messages to a certain recipient. You may use multiple pgp-hook's
-+with the same pattern; multiple matching pgp-hook's result in the use of multiple
-+keyids for recipient.
- </para>
- <para>
---- crypt-hook-both/doc/muttrc.man.head Feb 2004 17:10:43 -0000        3.10
-+++ crypt-hook-both/doc/muttrc.man.head Feb 2004 13:19:44 -0000
-@@ -297,3 +297,6 @@ to a certain recipient.  The meaning of 
- broadly: This can be a different e-mail address, a numerical key ID,
--or even just an arbitrary search string.
-+or even just an arbitrary search string.  You may use multiple
-+\fBpgp-hook\fPs with the same \fIpattern\fP; multiple matching
-+\fBpgp-hook\fPs result in the use of multiple \fIkey-id\fPs for
-+recipient.
- .TP
This page took 0.033796 seconds and 4 git commands to generate.