rationnalize includes a lot:
[apps/madmutt.git] / lib-crypt / crypt-gpgme.c
index 3c2ded8..2711dd7 100644 (file)
  * please see the file GPL in the top level source directory.
  */
 
-#if HAVE_CONFIG_H
-# include "config.h"
-#endif
+#include <lib-lib/lib-lib.h>
 
 #ifdef CRYPT_BACKEND_GPGME
 
-#include <sys/wait.h>
-#include <string.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/stat.h>
-#include <errno.h>
-#include <ctype.h>
-
 #ifdef HAVE_LOCALE_H
 #  include <locale.h>
 #endif
 #ifdef HAVE_LANGINFO_D_T_FMT
 #  include <langinfo.h>
 #endif
-#ifdef HAVE_SYS_TIME_H
-#  include <sys/time.h>
-#endif
 #ifdef HAVE_SYS_RESOURCE_H
 #  include <sys/resource.h>
 #endif
 
 #include <gpgme.h>
 
-#include <lib-lib/mem.h>
-#include <lib-lib/str.h>
-#include <lib-lib/ascii.h>
-#include <lib-lib/macros.h>
-#include <lib-lib/file.h>
-#include <lib-lib/debug.h>
-
 #include <lib-mime/mime.h>
 
 #include <lib-ui/curses.h>
@@ -55,6 +35,7 @@
 #include <lib-ui/menu.h>
 
 #include "mutt.h"
+#include "lib.h"
 #include "alias.h"
 #include <lib-crypt/crypt.h>
 #include "handler.h"
@@ -758,34 +739,34 @@ static BODY *sign_message (BODY * a, int use_smime)
     return NULL;
   }
 
-  t = mutt_new_body ();
+  t = body_new();
   t->type = TYPEMULTIPART;
   t->subtype = m_strdup("signed");
   t->encoding = ENC7BIT;
   t->use_disp = 0;
   t->disposition = DISPINLINE;
 
-  mutt_generate_boundary (&t->parameter);
-  mutt_set_parameter ("protocol",
-                      use_smime ? "application/pkcs7-signature"
-                      : "application/pgp-signature", &t->parameter);
+  parameter_set_boundary(&t->parameter);
+  parameter_setval(&t->parameter, "protocol",
+                   use_smime ? "application/pkcs7-signature"
+                             : "application/pgp-signature");
   /* Get the micalg from gpgme.  Old gpgme versions don't support this
      for S/MIME so we assume sha-1 in this case. */
   if (!get_micalg (ctx, buf, sizeof buf))
-    mutt_set_parameter ("micalg", buf, &t->parameter);
+    parameter_setval(&t->parameter, "micalg", buf);
   else if (use_smime)
-    mutt_set_parameter ("micalg", "sha1", &t->parameter);
+    parameter_setval(&t->parameter, "micalg", "sha1");
   gpgme_release (ctx);
 
   t->parts = a;
   a = t;
 
-  t->parts->next = mutt_new_body ();
+  t->parts->next = body_new();
   t = t->parts->next;
   t->type = TYPEAPPLICATION;
   if (use_smime) {
     t->subtype = m_strdup("pkcs7-signature");
-    mutt_set_parameter ("name", "smime.p7s", &t->parameter);
+    parameter_setval(&t->parameter, "name", "smime.p7s");
     t->encoding = ENCBASE64;
     t->use_disp = 1;
     t->disposition = DISPATTACH;
@@ -845,22 +826,22 @@ BODY *pgp_gpgme_encrypt_message (BODY * a, char *keylist, int sign)
   if (!outfile)
     return NULL;
 
-  t = mutt_new_body ();
+  t = body_new();
   t->type = TYPEMULTIPART;
   t->subtype = m_strdup("encrypted");
   t->encoding = ENC7BIT;
   t->use_disp = 0;
   t->disposition = DISPINLINE;
 
-  mutt_generate_boundary (&t->parameter);
-  mutt_set_parameter ("protocol", "application/pgp-encrypted", &t->parameter);
+  parameter_set_boundary(&t->parameter);
+  parameter_setval(&t->parameter, "protocol", "application/pgp-encrypted");
 
-  t->parts = mutt_new_body ();
+  t->parts = body_new();
   t->parts->type = TYPEAPPLICATION;
   t->parts->subtype = m_strdup("pgp-encrypted");
   t->parts->encoding = ENC7BIT;
 
-  t->parts->next = mutt_new_body ();
+  t->parts->next = body_new();
   t->parts->next->type = TYPEAPPLICATION;
   t->parts->next->subtype = m_strdup("octet-stream");
   t->parts->next->encoding = ENC7BIT;
@@ -903,11 +884,11 @@ BODY *smime_gpgme_build_smime_entity (BODY * a, char *keylist)
   if (!outfile)
     return NULL;
 
-  t = mutt_new_body ();
+  t = body_new();
   t->type = TYPEAPPLICATION;
   t->subtype = m_strdup("pkcs7-mime");
-  mutt_set_parameter ("name", "smime.p7m", &t->parameter);
-  mutt_set_parameter ("smime-type", "enveloped-data", &t->parameter);
+  parameter_setval(&t->parameter, "name", "smime.p7m");
+  parameter_setval(&t->parameter, "smime-type", "enveloped-data");
   t->encoding = ENCBASE64;      /* The output of OpenSSL SHOULD be binary */
   t->use_disp = 1;
   t->disposition = DISPATTACH;
@@ -1314,7 +1295,6 @@ static int verify_one (BODY * sigbdy, STATE * s,
   gpgme_release (ctx);
 
   state_attach_puts (_("[-- End signature information --]\n\n"), s);
-  debug_print (1, ("returning %d.\n", badsig));
 
   return badsig ? 1 : anywarn ? 2 : 0;
 }
@@ -1619,7 +1599,7 @@ int smime_gpgme_decrypt_mime (FILE * fpin, FILE ** fpout, BODY * b,
     bb->offset = saved_b_offset;
     fclose (tmpfp);
     rewind (*fpout);
-    mutt_free_body (cur);
+    body_list_wipe(cur);
     *cur = tmp_b;
   }
   return *cur ? 0 : -1;
@@ -1673,10 +1653,9 @@ static int pgp_check_traditional_one_body (FILE * fp, BODY * b,
 
   /* fix the content type */
 
-  mutt_set_parameter ("format", "fixed", &b->parameter);
-  mutt_set_parameter ("x-action", enc ? "pgp-encrypted" : "pgp-signed",
-                      &b->parameter);
-
+  parameter_setval(&b->parameter, "format", "fixed");
+  parameter_setval(&b->parameter, "x-action",
+                   enc ? "pgp-encrypted" : "pgp-signed");
   return 1;
 }
 
@@ -1719,7 +1698,7 @@ static void copy_clearsigned (gpgme_data_t data, STATE * s, char *charset)
 {
   char buf[HUGE_STRING];
   short complete, armor_header;
-  FGETCONV *fc;
+  fgetconv_t *fc;
   char *fname;
   FILE *fp;
 
@@ -1782,8 +1761,6 @@ int pgp_gpgme_application_handler (BODY * m, STATE * s)
 
   char body_charset[STRING];    /* Only used for clearsigned messages. */
 
-  debug_print (2, ("Entering pgp_application_pgp handler\n"));
-
   /* For clearsigned messages we won't be able to get a character set
      but we know that this may only be text thus we assume Latin-1
      here. */
@@ -1945,7 +1922,7 @@ int pgp_gpgme_application_handler (BODY * m, STATE * s)
         copy_clearsigned (armored_data, s, body_charset);
       }
       else if (pgpout) {
-        FGETCONV *fc;
+        fgetconv_t *fc;
         int c;
 
         rewind (pgpout);
@@ -1987,7 +1964,6 @@ int pgp_gpgme_application_handler (BODY * m, STATE * s)
                          " of PGP message! --]\n\n"), s);
     return (-1);
   }
-  debug_print (2, ("Leaving pgp_application_pgp handler\n"));
   return (err);
 }
 
@@ -2005,7 +1981,6 @@ int pgp_gpgme_encrypted_handler (BODY * a, STATE * s)
   int is_signed;
   int rc = 0;
 
-  debug_print (2, ("Entering pgp_encrypted handler\n"));
   a = a->parts;
   if (!a || a->type != TYPEAPPLICATION || !a->subtype
       || ascii_strcasecmp ("pgp-encrypted", a->subtype)
@@ -2062,12 +2037,11 @@ int pgp_gpgme_encrypted_handler (BODY * a, STATE * s)
                          : _("[-- End of PGP/MIME encrypted data --]\n"), s);
     }
 
-    mutt_free_body (&tattach);
+    body_list_wipe(&tattach);
   }
 
   fclose (fpout);
   mutt_unlink (tempfile);
-  debug_print (2, ("Leaving pgp_encrypted handler\n"));
   return (rc);
 }
 
@@ -2080,8 +2054,6 @@ int smime_gpgme_application_handler (BODY * a, STATE * s)
   int is_signed;
   int rc = 0;
 
-  debug_print (2, ("Entering smime_encrypted handler\n"));
-
   a->warnsig = 0;
   mutt_mktemp (tempfile);
   if (!(fpout = safe_fopen (tempfile, "w+"))) {
@@ -2129,12 +2101,11 @@ int smime_gpgme_application_handler (BODY * a, STATE * s)
                          _("[-- End of S/MIME encrypted data --]\n"), s);
     }
 
-    mutt_free_body (&tattach);
+    body_list_wipe(&tattach);
   }
 
   fclose (fpout);
   mutt_unlink (tempfile);
-  debug_print (2, ("Leaving smime_encrypted handler\n"));
   return (rc);
 }
 
@@ -3453,13 +3424,8 @@ static crypt_key_t *crypt_getkeybyaddr (address_t * a, short abilities,
   if (!keys)
     return NULL;
 
-  debug_print (5, ("looking for %s <%s>.\n", a->personal, a->mailbox));
-
   for (k = keys; k; k = k->next) {
-    debug_print (5, ("  looking at key: %s `%.15s'\n", crypt_keyid (k), k->uid));
-
     if (abilities && !(k->flags & abilities)) {
-      debug_print (5, ("  insufficient abilities: Has %x, want %x\n", k->flags, abilities));
       continue;
     }
 
@@ -3563,7 +3529,6 @@ static crypt_key_t *crypt_getkeybystr (char *p, short abilities,
       continue;
 
     match = 0;
-    debug_print (5, ("matching \"%s\" against " "key %s, \"%s\":\n", p, crypt_keyid (k), k->uid));
 
     if (!*p || !m_strcasecmp(p, crypt_keyid (k))
         || (!m_strncasecmp(p, "0x", 2)
@@ -3574,8 +3539,6 @@ static crypt_key_t *crypt_getkeybystr (char *p, short abilities,
         || m_stristr(k->uid, p)) {
       crypt_key_t *tmp;
 
-      debug_print (5, ("match.\n"));
-
       *matches_endp = tmp = crypt_copy_key (k);
       matches_endp = &tmp->next;
     }
@@ -3691,7 +3654,7 @@ static char *find_keys (address_t * to, address_t * cc, address_t * bcc,
   if (fqdn)
     rfc822_qualify (tmp, fqdn);
 
-  tmp = mutt_remove_duplicates (tmp);
+  address_list_uniq(tmp);
 
   for (p = tmp; p; p = p->next) {
     char buf[LONG_STRING];