Move the event loop to evtloop.c, and wake up sleeping jobs every 10 seconds.
[apps/madmutt.git] / crypt.cpkg
index 00a3285..203e685 100644 (file)
@@ -1910,9 +1910,9 @@ int crypt_pgp_application_pgp_handler(BODY *m, STATE *s)
   if (needpass == -1) {
     state_attach_puts (_("[-- Error: could not find beginning"
                          " of PGP message! --]\n\n"), s);
-    return (-1);
+    return -1;
   }
-  return (err);
+  return err;
 }
 
 /* MIME handler for pgp/mime encrypted messages. */
@@ -1933,7 +1933,7 @@ int crypt_pgp_encrypted_handler (BODY * a, STATE * s)
     if (s->flags & M_DISPLAY)
       state_attach_puts (_("[-- Error: malformed PGP/MIME message! --]\n\n"),
                          s);
-    return (-1);
+    return -1;
   }
 
   /* Move forward to the application/pgp-encrypted body. */
@@ -1944,7 +1944,7 @@ int crypt_pgp_encrypted_handler (BODY * a, STATE * s)
     if (s->flags & M_DISPLAY)
       state_attach_puts (_("[-- Error: could not create temporary file! "
                            "--]\n"), s);
-    return (-1);
+    return -1;
   }
 
   tattach = decrypt_part (a, s, fpout, 0, &is_signed);
@@ -1986,7 +1986,7 @@ int crypt_pgp_encrypted_handler (BODY * a, STATE * s)
 
   m_fclose(&fpout);
   mutt_unlink (tempfile);
-  return (rc);
+  return rc;
 }
 
 /* Support for application/smime */
@@ -2004,7 +2004,7 @@ int crypt_smime_application_smime_handler (BODY * a, STATE * s)
     if (s->flags & M_DISPLAY)
       state_attach_puts (_("[-- Error: could not create temporary file! "
                            "--]\n"), s);
-    return (-1);
+    return -1;
   }
 
   tattach = decrypt_part (a, s, fpout, 1, &is_signed);
@@ -2050,7 +2050,7 @@ int crypt_smime_application_smime_handler (BODY * a, STATE * s)
 
   m_fclose(&fpout);
   mutt_unlink (tempfile);
-  return (rc);
+  return rc;
 }
 
 
@@ -2288,8 +2288,7 @@ static int _crypt_compare_address (const void *a, const void *b)
 
 static int crypt_compare_address (const void *a, const void *b)
 {
-  return ((PgpSortKeys & SORT_REVERSE) ? !_crypt_compare_address (a, b)
-          : _crypt_compare_address (a, b));
+  return !(PgpSortKeys & SORT_REVERSE) == _crypt_compare_address(a, b);
 }
 
 
@@ -2308,8 +2307,7 @@ static int _crypt_compare_keyid (const void *a, const void *b)
 
 static int crypt_compare_keyid (const void *a, const void *b)
 {
-  return ((PgpSortKeys & SORT_REVERSE) ? !_crypt_compare_keyid (a, b)
-          : _crypt_compare_keyid (a, b));
+  return !(PgpSortKeys & SORT_REVERSE) == _crypt_compare_keyid(a, b);
 }
 
 /* Compare 2 creation dates and the addresses.  For sorting. */
@@ -2334,8 +2332,7 @@ static int _crypt_compare_date (const void *a, const void *b)
 
 static int crypt_compare_date (const void *a, const void *b)
 {
-  return ((PgpSortKeys & SORT_REVERSE) ? !_crypt_compare_date (a, b)
-          : _crypt_compare_date (a, b));
+  return !(PgpSortKeys & SORT_REVERSE) == _crypt_compare_date(a, b);
 }
 
 /* Compare two trust values, the key length, the creation dates. the
@@ -2376,13 +2373,12 @@ static int _crypt_compare_trust (const void *a, const void *b)
 
   if ((r = m_strcasecmp((*s)->uid, (*t)->uid)))
     return r > 0;
-  return (m_strcasecmp(crypt_keyid ((*s)), crypt_keyid ((*t)))) > 0;
+  return m_strcasecmp(crypt_keyid(*s), crypt_keyid(*t)) > 0;
 }
 
 static int crypt_compare_trust (const void *a, const void *b)
 {
-  return ((PgpSortKeys & SORT_REVERSE) ? !_crypt_compare_trust (a, b)
-          : _crypt_compare_trust (a, b));
+  return !(PgpSortKeys & SORT_REVERSE) == _crypt_compare_trust(a, b);
 }
 
 /* Print the X.500 Distinguished Name part KEY from the array of parts
@@ -3402,6 +3398,23 @@ crypt_ask_for_key(const char *tag, int abilities, int app, int *forced_valid)
     }
 }
 
+static char *crypt_hook(address_t *adr)
+{
+    char *res = NULL;
+    lua_State *L = luaM_getruntime();
+    lua_getglobal(L, "mod_core");             /* push mod_core        1 */
+    lua_getfield(L, -1, "crypt_hook");        /* push folder_hook()   2 */
+    if (lua_isfunction(L, -1)) {
+        lua_pushstring(L, adr->mailbox);
+        if (!lua_pcall(L, 1, 1, 0)) {
+            res = m_strdup(lua_tostring(L, -1));
+        }
+        lua_pop(L, 1);
+    }
+    lua_pop(L, 2);
+    return res;
+}
+
 /* This routine attempts to find the keyids of the recipients of a
    message.  It returns NULL if any of the keys can not be found.  */
 static char *find_keys(ENVELOPE *env, unsigned int app)
@@ -3424,10 +3437,10 @@ static char *find_keys(ENVELOPE *env, unsigned int app)
     while ((addr = address_list_pop(&lst))) {
         char buf[STRING];
         int forced_valid = 0;
-        const char *keyID;
+        char *keyID;
         cryptkey_t *key = NULL;
 
-        if ((keyID = mutt_crypt_hook(addr))) {
+        if ((keyID = crypt_hook(addr))) {
             int r;
 
             snprintf(buf, sizeof(buf), _("Use keyID = \"%s\" for %s?"), keyID,
@@ -3438,6 +3451,7 @@ static char *find_keys(ENVELOPE *env, unsigned int app)
                 address_list_wipe(&lst);
                 address_list_wipe(&addr);
                 buffer_delete(&keylist);
+                p_delete(&keyID);
                 return NULL;
             }
 
@@ -3454,6 +3468,7 @@ static char *find_keys(ENVELOPE *env, unsigned int app)
                 }
             }
         }
+        p_delete(&keyID);
 
         if (!key) {
             key = crypt_getkeybyaddr(addr, KEYFLAG_CANENCRYPT, app, &forced_valid);
@@ -3685,16 +3700,6 @@ void crypt_pgp_extract_keys_from_attachment_list(FILE * fp, int tag, BODY * top)
     }
 }
 
-void crypt_invoke_message (int type)
-{
-    if (type & APPLICATION_PGP) {
-        mutt_message _("Invoking PGP...");
-    }
-    else if (type & APPLICATION_SMIME) {
-        mutt_message _("Invoking S/MIME...");
-    }
-}
-
 int mutt_protect (HEADER * msg, char *keylist)
 {
   BODY *pbody = NULL, *tmp_pbody = NULL;
@@ -3736,7 +3741,7 @@ int mutt_protect (HEADER * msg, char *keylist)
       if (!(tmp_pbody = crypt_smime_build_smime_entity (tmp_smime_pbody,
                                                         keylist))) {
         /* signed ? free it! */
-        return (-1);
+        return -1;
       }
       /* free tmp_body if messages was signed AND encrypted ... */
       if (tmp_smime_pbody != msg->content && tmp_smime_pbody != tmp_pbody) {
@@ -3761,7 +3766,7 @@ int mutt_protect (HEADER * msg, char *keylist)
           body_list_wipe(&tmp_pgp_pbody->next);
         }
 
-        return (-1);
+        return -1;
       }
 
       /* destroy temporary signature envelope when doing retainable 
@@ -4026,7 +4031,7 @@ int mutt_signed_handler(BODY *a, STATE *s)
   if (s->flags & M_DISPLAY && sigcnt)
     state_attach_puts (_("\n[-- End of signed data --]\n"), s);
 
-  return (rc);
+  return rc;
 }
 
 static int _mutt_check_traditional_pgp (HEADER * h, int *redraw)