continue the include dance
[apps/madmutt.git] / lib-crypt / crypt-gpgme.c
index 809cec0..43907ca 100644 (file)
 
 #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>
 #include <lib-ui/enter.h>
+#include <lib-ui/menu.h>
 
 #include "mutt.h"
+#include "lib.h"
+#include "alias.h"
 #include <lib-crypt/crypt.h>
-#include "mutt_menu.h"
 #include "handler.h"
 #include "copy.h"
 #include "pager.h"
 #include "recvattach.h"
 #include "sort.h"
 
-#include "lib/debug.h"
-
-#include <sys/wait.h>
-#include <string.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/stat.h>
-#include <errno.h>
-#include <ctype.h>
-
-#include <gpgme.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
-
 /*
  * Helper macros.
  */
@@ -109,7 +108,7 @@ typedef struct crypt_keyinfo {
 } crypt_key_t;
 
 typedef struct crypt_entry {
-  size_t num;
+  ssize_t num;
   crypt_key_t *key;
 } crypt_entry_t;
 
@@ -132,7 +131,7 @@ static int digit_or_letter (const unsigned char *s)
 
 /* Print the utf-8 encoded string BUF of length LEN bytes to stream
    FP. Convert the character set. */
-static void print_utf8 (FILE * fp, const char *buf, size_t len)
+static void print_utf8 (FILE * fp, const char *buf, ssize_t len)
 {
   char *tstr;
 
@@ -253,8 +252,8 @@ static int crypt_id_is_strong (crypt_key_t * key)
 {
   gpgme_validity_t val = GPGME_VALIDITY_UNKNOWN;
   gpgme_user_id_t uid = NULL;
-  unsigned int is_strong = 0;
-  unsigned int i = 0;
+  int is_strong = 0;
+  int i = 0;
 
   if ((key->flags & KEYFLAG_ISX509))
     return 1;
@@ -476,7 +475,7 @@ static char *data_object_to_tempfile (gpgme_data_t data, FILE ** ret_fp)
   int err;
   char tempfile[_POSIX_PATH_MAX];
   FILE *fp;
-  size_t nread = 0;
+  ssize_t nread = 0;
 
   mutt_mktemp (tempfile);
   fp = safe_fopen (tempfile, "w+");
@@ -538,7 +537,7 @@ static gpgme_key_t *create_recipient_set (const char *keylist,
     do {
       while (*s == ' ')
         s++;
-      for (i = 0; *s && *s != ' ' && i < sizeof (buf) - 1;)
+      for (i = 0; *s && *s != ' ' && i < ssizeof(buf) - 1;)
         buf[i++] = *s++;
       buf[i] = 0;
       if (*buf) {
@@ -676,7 +675,7 @@ static char *encrypt_gpgme_object (gpgme_data_t plaintext, gpgme_key_t * rset,
    which must have been allocated by the caller with size BUFLEN.
    Returns 0 on success or -1 in case of an error.  The return string
    is truncted to BUFLEN - 1. */
-static int get_micalg (gpgme_ctx_t ctx, char *buf, size_t buflen)
+static int get_micalg (gpgme_ctx_t ctx, char *buf, ssize_t buflen)
 {
   gpgme_sign_result_t result = NULL;
   const char *algorithm_name = NULL;
@@ -958,7 +957,7 @@ static int show_sig_summary (unsigned long sum,
   if ((sum & GPGME_SIGSUM_SIG_EXPIRED)) {
     gpgme_verify_result_t result;
     gpgme_signature_t sig;
-    unsigned int i;
+    int i;
 
     result = gpgme_op_verify_result (ctx);
 
@@ -991,7 +990,7 @@ static int show_sig_summary (unsigned long sum,
     const char *t0 = NULL, *t1 = NULL;
     gpgme_verify_result_t result;
     gpgme_signature_t sig;
-    unsigned int i;
+    int i;
 
     state_attach_puts (_("A system error occurred"), s);
 
@@ -1284,18 +1283,17 @@ static int verify_one (BODY * sigbdy, STATE * s,
   if (!badsig) {
     gpgme_verify_result_t result;
     gpgme_sig_notation_t notation;
-    gpgme_signature_t signature;
+    gpgme_signature_t sig;
 
     result = gpgme_op_verify_result (ctx);
     if (result) {
-      for (signature = result->signatures; signature;
-           signature = signature->next) {
-        if (signature->notations) {
+      for (sig = result->signatures; sig; sig = sig->next) {
+        if (sig->notations) {
           state_attach_puts ("*** Begin Notation (signature by: ", s);
-          state_attach_puts (signature->fpr, s);
+          state_attach_puts (sig->fpr, s);
           state_attach_puts (") ***\n", s);
-          for (notation = signature->notations; notation;
-               notation = notation->next) {
+          for (notation = sig->notations; notation; notation = notation->next)
+          {
             if (notation->name) {
               state_attach_puts (notation->name, s);
               state_attach_puts ("=", s);
@@ -1347,7 +1345,7 @@ static BODY *decrypt_part (BODY * a, STATE * s, FILE * fpout, int is_smime,
 {
   struct stat info;
   BODY *tattach;
-  int err;
+  int err = 0;
   gpgme_ctx_t ctx;
   gpgme_data_t ciphertext, plaintext;
   int maybe_signed = 0;
@@ -1518,7 +1516,7 @@ int smime_gpgme_decrypt_mime (FILE * fpin, FILE ** fpout, BODY * b,
   FILE *tmpfp = NULL;
   int is_signed;
   long saved_b_offset;
-  size_t saved_b_length;
+  ssize_t saved_b_length;
   int saved_b_type;
 
   if (!mutt_is_application_smime (b))
@@ -2157,14 +2155,11 @@ int smime_gpgme_application_handler (BODY * a, STATE * s)
  * %[...] date of key using strftime(3)
  */
 
-static const char *crypt_entry_fmt (char *dest,
-                                    size_t destlen,
-                                    char op,
-                                    const char *src,
-                                    const char *prefix,
-                                    const char *ifstring,
-                                    const char *elsestring,
-                                    unsigned long data, format_flag flags)
+static const char *
+crypt_entry_fmt (char *dest, ssize_t destlen, char op,
+                 const char *src, const char *prefix,
+                 const char *ifstring, const char *elsestring,
+                 unsigned long data, format_flag flags)
 {
   char fmt[16];
   crypt_entry_t *entry;
@@ -2190,7 +2185,7 @@ static const char *crypt_entry_fmt (char *dest,
       char buf2[SHORT_STRING], *p;
       int do_locales;
       struct tm *tm;
-      size_t len;
+      ssize_t len;
 
       p = dest;
 
@@ -2305,7 +2300,7 @@ static const char *crypt_entry_fmt (char *dest,
       s = "x";
     else {
       gpgme_user_id_t uid = NULL;
-      unsigned int i = 0;
+      int i = 0;
 
       for (i = 0, uid = key->kobj->uids; uid && (i < key->idx);
            i++, uid = uid->next);
@@ -2353,7 +2348,7 @@ static const char *crypt_entry_fmt (char *dest,
 }
 
 /* Used by the display fucntion to format a line. */
-static void crypt_entry (char *s, size_t l, MUTTMENU * menu, int num)
+static void crypt_entry (char *s, ssize_t l, MUTTMENU * menu, int num)
 {
   crypt_key_t **key_table = (crypt_key_t **) menu->data;
   crypt_entry_t entry;
@@ -2532,7 +2527,7 @@ static const unsigned char *parse_dn_part (struct dn_array_s *array,
                                            const unsigned char *string)
 {
   const unsigned char *s, *s1;
-  size_t n;
+  ssize_t n;
   unsigned char *p;
 
   /* parse attributeType */
@@ -2611,7 +2606,7 @@ static const unsigned char *parse_dn_part (struct dn_array_s *array,
 static struct dn_array_s *parse_dn (const unsigned char *string)
 {
   struct dn_array_s *array;
-  size_t arrayidx, arraysize;
+  ssize_t arrayidx, arraysize;
   int i;
 
   arraysize = 7;                /* C,ST,L,O,OU,CN,email */
@@ -3018,15 +3013,15 @@ leave:
  */
 
 
-/* Convert LIST into a pattern string suitable to be passed to GPGME.
+/* Convert string_list_t into a pattern string suitable to be passed to GPGME.
    We need to convert spaces in an item into a '+' and '%' into
    "%25". */
-static char *list_to_pattern (LIST * list)
+static char *list_to_pattern (string_list_t * list)
 {
-  LIST *l;
+  string_list_t *l;
   char *pattern, *p;
   const char *s;
-  size_t n;
+  ssize_t n;
 
   n = 0;
   for (l = list; l; l = l->next) {
@@ -3068,7 +3063,7 @@ static char *list_to_pattern (LIST * list)
 
 /* Return a list of keys which are candidates for the selection.
    Select by looking at the HINTS list. */
-static crypt_key_t *get_candidates (LIST * hints, unsigned int app,
+static crypt_key_t *get_candidates (string_list_t * hints, unsigned int app,
                                     int secret)
 {
   crypt_key_t *db, *k, **kend;
@@ -3098,8 +3093,8 @@ static crypt_key_t *get_candidates (LIST * hints, unsigned int app,
        depending on the protocol.  For gpg we don' t need percent
        escaped pappert but simple strings passed in an array to the
        keylist_ext_start function. */
-    LIST *l;
-    size_t n;
+    string_list_t *l;
+    ssize_t n;
     char **patarr;
 
     for (l = hints, n = 0; l; l = l->next) {
@@ -3212,7 +3207,7 @@ static crypt_key_t *get_candidates (LIST * hints, unsigned int app,
 
 /* Add the string STR to the list HINTS.  This list is later used to
    match addresses. */
-static LIST *crypt_add_string_to_hints (LIST * hints, const char *str)
+static string_list_t *crypt_add_string_to_hints (string_list_t * hints, const char *str)
 {
   char *scratch;
   char *t;
@@ -3369,7 +3364,7 @@ static crypt_key_t *crypt_select_key (crypt_key_t * keys,
         else {
           gpgme_validity_t val = GPGME_VALIDITY_UNKNOWN;
           gpgme_user_id_t uid = NULL;
-          unsigned int j = 0;
+          int j = 0;
 
           warn_s = "??";
 
@@ -3429,7 +3424,7 @@ static crypt_key_t *crypt_getkeybyaddr (address_t * a, short abilities,
                                         unsigned int app, int *forced_valid)
 {
   address_t *r, *p;
-  LIST *hints = NULL;
+  string_list_t *hints = NULL;
 
   int weak = 0;
   int invalid = 0;
@@ -3454,7 +3449,7 @@ static crypt_key_t *crypt_getkeybyaddr (address_t * a, short abilities,
   mutt_message (_("Looking for keys matching \"%s\"..."), a->mailbox);
   keys = get_candidates (hints, app, (abilities & KEYFLAG_CANSIGN));
 
-  mutt_free_list (&hints);
+  string_list_wipe(&hints);
 
   if (!keys)
     return NULL;
@@ -3498,7 +3493,7 @@ static crypt_key_t *crypt_getkeybyaddr (address_t * a, short abilities,
                    || !(validity & CRYPT_KV_ADDR)))
         this_key_has_weak = 1;
     }
-    address_delete (&r);
+    address_list_wipe(&r);
 
     if (match) {
       crypt_key_t *tmp;
@@ -3546,7 +3541,7 @@ static crypt_key_t *crypt_getkeybyaddr (address_t * a, short abilities,
 static crypt_key_t *crypt_getkeybystr (char *p, short abilities,
                                        unsigned int app, int *forced_valid)
 {
-  LIST *hints = NULL;
+  string_list_t *hints = NULL;
   crypt_key_t *keys;
   crypt_key_t *matches = NULL;
   crypt_key_t **matches_endp = &matches;
@@ -3559,7 +3554,7 @@ static crypt_key_t *crypt_getkeybystr (char *p, short abilities,
 
   hints = crypt_add_string_to_hints (hints, p);
   keys = get_candidates (hints, app, (abilities & KEYFLAG_CANSIGN));
-  mutt_free_list (&hints);
+  string_list_wipe(&hints);
 
   if (!keys)
     return NULL;
@@ -3661,8 +3656,8 @@ static char *find_keys (address_t * to, address_t * cc, address_t * bcc,
                         unsigned int app)
 {
   char *keyID, *keylist = NULL, *t;
-  size_t keylist_size = 0;
-  size_t keylist_used = 0;
+  ssize_t keylist_size = 0;
+  ssize_t keylist_used = 0;
   address_t *tmp = NULL, *addr = NULL;
   address_t **last = &tmp;
   address_t *p, *q;
@@ -3731,8 +3726,8 @@ static char *find_keys (address_t * to, address_t * cc, address_t * bcc,
       }
       else if (r == -1) {
         p_delete(&keylist);
-        address_delete (&tmp);
-        address_delete (&addr);
+        address_list_wipe(&tmp);
+        address_list_wipe(&addr);
         return NULL;
       }
     }
@@ -3750,8 +3745,8 @@ static char *find_keys (address_t * to, address_t * cc, address_t * bcc,
 #endif
                                     &forced_valid)) == NULL) {
         p_delete(&keylist);
-        address_delete (&tmp);
-        address_delete (&addr);
+        address_list_wipe(&tmp);
+        address_list_wipe(&addr);
         return NULL;
       }
     }
@@ -3776,9 +3771,9 @@ static char *find_keys (address_t * to, address_t * cc, address_t * bcc,
     keylist_used = m_strlen(keylist);
 
     crypt_free_key (&key);
-    address_delete (&addr);
+    address_list_wipe(&addr);
   }
-  address_delete (&tmp);
+  address_list_wipe(&tmp);
   return (keylist);
 }
 
@@ -3906,7 +3901,7 @@ int smime_gpgme_send_menu (HEADER * msg, int *redraw)
   return gpgme_send_menu (msg, redraw, 1);
 }
 
-static int verify_sender (HEADER * h, gpgme_protocol_t protocol)
+static int verify_sender (HEADER * h, gpgme_protocol_t protocol __attribute__((unused)))
 {
   address_t *sender = NULL;
   unsigned int ret = 1;