rework includes a bit
[apps/madmutt.git] / init.c
diff --git a/init.c b/init.c
index 8bd2854..e9e1cf6 100644 (file)
--- a/init.c
+++ b/init.c
 # include "config.h"
 #endif
 
+#include <ctype.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <sys/utsname.h>
+#include <errno.h>
+#include <sys/wait.h>
+
 #include <lib-lib/mem.h>
 #include <lib-lib/str.h>
 #include <lib-lib/file.h>
@@ -25,6 +33,7 @@
 #include <lib-lib/rx.h>
 
 #include <lib-sys/unix.h>
+#include <lib-sys/mutt_ssl.h>
 
 #include <lib-ui/curses.h>
 #include <lib-ui/history.h>
 #include <lib-crypt/crypt.h>
 #include "mutt_idna.h"
 
-#if defined(USE_SSL) || defined(USE_GNUTLS)
-#include <lib-sys/mutt_ssl.h>
-#endif
-
 #if defined (USE_LIBESMTP) && (defined (USE_SSL) || defined (USE_GNUTLS))
 #include "mutt_libesmtp.h"
 #endif
 
+#include "alias.h"
 #include "mx.h"
 #include "init.h"
 
 #include "lib/list.h"
 
-#include <ctype.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <sys/utsname.h>
-#include <errno.h>
-#include <sys/wait.h>
-
 /*
  * prototypes
  */
 static const struct mapping_t* get_sortmap (struct option_t* option);
 static int parse_sort (struct option_t* dst, const char *s,
                        const struct mapping_t *map,
-                       char* errbuf, size_t errlen);
+                       char* errbuf, ssize_t errlen);
 
 static HASH *ConfigOptions = NULL;
 
@@ -84,22 +82,22 @@ static int CurRCLine = 0;
 
 /* prototypes for checking for special vars */
 static int check_dsn_return (const char* option, unsigned long val,
-                             char* errbuf, size_t errlen);
+                             char* errbuf, ssize_t errlen);
 static int check_dsn_notify (const char* option, unsigned long val,
-                             char* errbuf, size_t errlen);
+                             char* errbuf, ssize_t errlen);
 static int check_history    (const char* option, unsigned long val,
-                             char* errbuf, size_t errlen);
+                             char* errbuf, ssize_t errlen);
 /* this checks that numbers are >= 0 */
 static int check_num        (const char* option, unsigned long val,
-                             char* errbuf, size_t errlen);
+                             char* errbuf, ssize_t errlen);
 #ifdef DEBUG
 static int check_debug      (const char* option, unsigned long val,
-                             char* errbuf, size_t errlen);
+                             char* errbuf, ssize_t errlen);
 #endif
 
 /* use this to check only */
 static int check_special (const char* option, unsigned long val,
-                          char* errbuf, size_t errlen);
+                          char* errbuf, ssize_t errlen);
 
 /* variable <-> sanity check function mappings
  * when changing these, make sure the proper _from_string handler
@@ -108,7 +106,7 @@ static int check_special (const char* option, unsigned long val,
 static struct {
   const char* name;
   int (*check) (const char* option, unsigned long val,
-                char* errbuf, size_t errlen);
+                char* errbuf, ssize_t errlen);
 } SpecialVars[] = {
   { "dsn_notify",               check_dsn_notify },
   { "dsn_return",               check_dsn_return },
@@ -125,44 +123,44 @@ static struct {
 };
 
 /* protos for config type handles: convert value to string */
-static void bool_to_string  (char* dst, size_t dstlen, struct option_t* option);
-static void num_to_string   (char* dst, size_t dstlen, struct option_t* option);
-static void str_to_string   (char* dst, size_t dstlen, struct option_t* option);
-static void quad_to_string  (char* dst, size_t dstlen, struct option_t* option);
-static void sort_to_string  (char* dst, size_t dstlen, struct option_t* option);
-static void rx_to_string    (char* dst, size_t dstlen, struct option_t* option);
-static void magic_to_string (char* dst, size_t dstlen, struct option_t* option);
-static void addr_to_string  (char* dst, size_t dstlen, struct option_t* option);
-static void user_to_string  (char* dst, size_t dstlen, struct option_t* option);
-static void sys_to_string   (char* dst, size_t dstlen, struct option_t* option);
+static void bool_to_string  (char* dst, ssize_t dstlen, struct option_t* option);
+static void num_to_string   (char* dst, ssize_t dstlen, struct option_t* option);
+static void str_to_string   (char* dst, ssize_t dstlen, struct option_t* option);
+static void quad_to_string  (char* dst, ssize_t dstlen, struct option_t* option);
+static void sort_to_string  (char* dst, ssize_t dstlen, struct option_t* option);
+static void rx_to_string    (char* dst, ssize_t dstlen, struct option_t* option);
+static void magic_to_string (char* dst, ssize_t dstlen, struct option_t* option);
+static void addr_to_string  (char* dst, ssize_t dstlen, struct option_t* option);
+static void user_to_string  (char* dst, ssize_t dstlen, struct option_t* option);
+static void sys_to_string   (char* dst, ssize_t dstlen, struct option_t* option);
 
 /* protos for config type handles: convert to value from string */
 static int bool_from_string  (struct option_t* dst, const char* val,
-                              char* errbuf, size_t errlen);
+                              char* errbuf, ssize_t errlen);
 static int num_from_string   (struct option_t* dst, const char* val,
-                              char* errbuf, size_t errlen);
+                              char* errbuf, ssize_t errlen);
 static int str_from_string   (struct option_t* dst, const char* val,
-                              char* errbuf, size_t errlen);
+                              char* errbuf, ssize_t errlen);
 static int path_from_string  (struct option_t* dst, const char* val,
-                              char* errbuf, size_t errlen);
+                              char* errbuf, ssize_t errlen);
 static int quad_from_string  (struct option_t* dst, const char* val,
-                              char* errbuf, size_t errlen);
+                              char* errbuf, ssize_t errlen);
 static int sort_from_string  (struct option_t* dst, const char* val,
-                              char* errbuf, size_t errlen);
+                              char* errbuf, ssize_t errlen);
 static int rx_from_string    (struct option_t* dst, const char* val,
-                              char* errbuf, size_t errlen);
+                              char* errbuf, ssize_t errlen);
 static int magic_from_string (struct option_t* dst, const char* val,
-                              char* errbuf, size_t errlen);
+                              char* errbuf, ssize_t errlen);
 static int addr_from_string  (struct option_t* dst, const char* val,
-                              char* errbuf, size_t errlen);
+                              char* errbuf, ssize_t errlen);
 static int user_from_string  (struct option_t* dst, const char* val,
-                              char* errbuf, size_t errlen);
+                              char* errbuf, ssize_t errlen);
 
 static struct {
   unsigned short type;
-  void (*opt_to_string) (char* dst, size_t dstlen, struct option_t* option);
+  void (*opt_to_string) (char* dst, ssize_t dstlen, struct option_t* option);
   int (*opt_from_string) (struct option_t* dst, const char* val,
-                          char* errbuf, size_t errlen);
+                          char* errbuf, ssize_t errlen);
 } FuncTable[] = {
   { 0,          NULL,             NULL }, /* there's no DT_ type with 0 */
   { DT_BOOL,    bool_to_string,   bool_from_string },
@@ -181,7 +179,7 @@ static struct {
   { DT_SYS,     sys_to_string,    NULL },
 };
 
-static void bool_to_string (char* dst, size_t dstlen,
+static void bool_to_string (char* dst, ssize_t dstlen,
                             struct option_t* option) {
   snprintf (dst, dstlen, "%s=%s", option->option,
             option (option->data) ? "yes" : "no");
@@ -189,7 +187,7 @@ static void bool_to_string (char* dst, size_t dstlen,
 
 static int bool_from_string (struct option_t* dst, const char* val,
                              char* errbuf __attribute__ ((unused)),
-                             size_t errlen __attribute__ ((unused))) {
+                             ssize_t errlen __attribute__ ((unused))) {
   int flag = -1;
 
   if (!dst)
@@ -208,7 +206,7 @@ static int bool_from_string (struct option_t* dst, const char* val,
   return (1);
 }
 
-static void num_to_string (char* dst, size_t dstlen,
+static void num_to_string (char* dst, ssize_t dstlen,
                            struct option_t* option) {
   /* XXX puke */
   const char* fmt = (m_strcmp(option->option, "umask") == 0) ?
@@ -218,7 +216,7 @@ static void num_to_string (char* dst, size_t dstlen,
 }
 
 static int num_from_string (struct option_t* dst, const char* val,
-                            char* errbuf, size_t errlen) {
+                            char* errbuf, ssize_t errlen) {
   int num = 0, old = 0;
   char* t = NULL;
 
@@ -248,19 +246,19 @@ static int num_from_string (struct option_t* dst, const char* val,
   return (1);
 }
 
-static void str_to_string (char* dst, size_t dstlen,
+static void str_to_string (char* dst, ssize_t dstlen,
                            struct option_t* option) {
   snprintf (dst, dstlen, "%s=\"%s\"", option->option,
             NONULL (*((char**) option->data)));
 }
 
-static void user_to_string (char* dst, size_t dstlen,
+static void user_to_string (char* dst, ssize_t dstlen,
                             struct option_t* option) {
   snprintf (dst, dstlen, "%s=\"%s\"", option->option,
             NONULL (((char*) option->data)));
 }
 
-static void sys_to_string (char* dst, size_t dstlen,
+static void sys_to_string (char* dst, ssize_t dstlen,
                            struct option_t* option) {
   char *val = NULL, *t = NULL;
   int clean = 0;
@@ -304,7 +302,7 @@ static void sys_to_string (char* dst, size_t dstlen,
 }
 
 static int path_from_string (struct option_t* dst, const char* val,
-                             char* errbuf __attribute__ ((unused)), size_t errlen __attribute__ ((unused))) {
+                             char* errbuf __attribute__ ((unused)), ssize_t errlen __attribute__ ((unused))) {
   char path[_POSIX_PATH_MAX];
 
   if (!dst)
@@ -323,7 +321,7 @@ static int path_from_string (struct option_t* dst, const char* val,
 }
 
 static int str_from_string (struct option_t* dst, const char* val,
-                            char* errbuf, size_t errlen) {
+                            char* errbuf, ssize_t errlen) {
   if (!dst)
     return (0);
 
@@ -335,7 +333,7 @@ static int str_from_string (struct option_t* dst, const char* val,
 }
 
 static int user_from_string (struct option_t* dst, const char* val,
-                             char* errbuf __attribute__ ((unused)), size_t errlen __attribute__ ((unused))) {
+                             char* errbuf __attribute__ ((unused)), ssize_t errlen __attribute__ ((unused))) {
   /* if dst == NULL, we may get here in case the user did unset it,
    * see parse_set() where item is free()'d before coming here; so
    * just silently ignore it */
@@ -352,7 +350,7 @@ static int user_from_string (struct option_t* dst, const char* val,
   return (1);
 }
 
-static void quad_to_string (char* dst, size_t dstlen,
+static void quad_to_string (char* dst, ssize_t dstlen,
                             struct option_t* option) {
   const char *vals[] = { "no", "yes", "ask-no", "ask-yes" };
   snprintf (dst, dstlen, "%s=%s", option->option,
@@ -360,7 +358,7 @@ static void quad_to_string (char* dst, size_t dstlen,
 }
 
 static int quad_from_string (struct option_t* dst, const char* val,
-                             char* errbuf __attribute__ ((unused)), size_t errlen __attribute__ ((unused))) {
+                             char* errbuf __attribute__ ((unused)), ssize_t errlen __attribute__ ((unused))) {
   int flag = -1;
 
   if (!dst)
@@ -381,7 +379,7 @@ static int quad_from_string (struct option_t* dst, const char* val,
   return (1);
 }
 
-static void sort_to_string (char* dst, size_t dstlen,
+static void sort_to_string (char* dst, ssize_t dstlen,
                             struct option_t* option) {
   const struct mapping_t *map = get_sortmap (option);
   const char *p = NULL;
@@ -401,7 +399,7 @@ static void sort_to_string (char* dst, size_t dstlen,
 }
 
 static int sort_from_string (struct option_t* dst, const char* val,
-                             char* errbuf, size_t errlen) {
+                             char* errbuf, ssize_t errlen) {
   const struct mapping_t *map = NULL;
   if (!(map = get_sortmap (dst))) {
     if (errbuf)
@@ -414,7 +412,7 @@ static int sort_from_string (struct option_t* dst, const char* val,
   return (1);
 }
 
-static void rx_to_string (char* dst, size_t dstlen,
+static void rx_to_string (char* dst, ssize_t dstlen,
                           struct option_t* option) {
   rx_t* p = (rx_t*) option->data;
   snprintf (dst, dstlen, "%s=\"%s\"", option->option,
@@ -422,7 +420,7 @@ static void rx_to_string (char* dst, size_t dstlen,
 }
 
 static int rx_from_string (struct option_t* dst, const char* val,
-                           char* errbuf, size_t errlen) {
+                           char* errbuf, ssize_t errlen) {
   rx_t* p = NULL;
   regex_t* rx = NULL;
   int flags = 0, e = 0, not = 0;
@@ -480,7 +478,7 @@ static int rx_from_string (struct option_t* dst, const char* val,
   return (1);
 }
 
-static void magic_to_string (char* dst, size_t dstlen,
+static void magic_to_string (char* dst, ssize_t dstlen,
                              struct option_t* option) {
   const char* s = NULL;
   switch (option->data) {
@@ -494,7 +492,7 @@ static void magic_to_string (char* dst, size_t dstlen,
 }
 
 static int magic_from_string (struct option_t* dst, const char* val,
-                              char* errbuf __attribute__ ((unused)), size_t errlen __attribute__ ((unused))) {
+                              char* errbuf __attribute__ ((unused)), ssize_t errlen __attribute__ ((unused))) {
   int flag = -1;
 
   if (!dst || !val || !*val)
@@ -516,7 +514,7 @@ static int magic_from_string (struct option_t* dst, const char* val,
 
 }
 
-static void addr_to_string (char* dst, size_t dstlen,
+static void addr_to_string (char* dst, ssize_t dstlen,
                             struct option_t* option) {
   char s[HUGE_STRING];
   s[0] = '\0';
@@ -525,7 +523,7 @@ static void addr_to_string (char* dst, size_t dstlen,
 }
 
 static int addr_from_string (struct option_t* dst, const char* val,
-                             char* errbuf __attribute__ ((unused)), size_t errlen __attribute__ ((unused))) {
+                             char* errbuf __attribute__ ((unused)), ssize_t errlen __attribute__ ((unused))) {
   if (!dst)
     return (0);
   address_list_wipe((address_t**) dst->data);
@@ -534,10 +532,10 @@ static int addr_from_string (struct option_t* dst, const char* val,
   return (1);
 }
 
-int mutt_option_value (const char* val, char* dst, size_t dstlen) {
+int mutt_option_value (const char* val, char* dst, ssize_t dstlen) {
   struct option_t* option = NULL;
   char* tmp = NULL, *t = NULL;
-  size_t l = 0;
+  ssize_t l = 0;
 
   if (!(option = hash_find (ConfigOptions, val))) {
     debug_print (1, ("var '%s' not found\n", val));
@@ -1428,7 +1426,7 @@ static int parse_alias (BUFFER * buf, BUFFER * s,
 {
   alias_t *tmp = Aliases;
   alias_t *last = NULL;
-  char *estr = NULL;
+  const char *estr = NULL;
 
   if (!MoreArgs (s)) {
     m_strcpy(err->data, err->dsize, _("alias: no address"));
@@ -1498,7 +1496,7 @@ parse_unmy_hdr (BUFFER * buf, BUFFER * s,
   string_list_t *last = NULL;
   string_list_t *tmp = UserHeader;
   string_list_t *ptr;
-  size_t l;
+  ssize_t l;
 
   do {
     mutt_extract_token (buf, s, 0);
@@ -1539,7 +1537,7 @@ static int parse_my_hdr (BUFFER * buf, BUFFER * s, unsigned long data __attribut
                          BUFFER * err)
 {
   string_list_t *tmp;
-  size_t keylen;
+  ssize_t keylen;
   char *p;
 
   mutt_extract_token (buf, s, M_TOKEN_SPACE | M_TOKEN_QUOTE);
@@ -1576,7 +1574,7 @@ static int parse_my_hdr (BUFFER * buf, BUFFER * s, unsigned long data __attribut
 
 static int
 parse_sort (struct option_t* dst, const char *s, const struct mapping_t *map,
-            char* errbuf, size_t errlen) {
+            char* errbuf, ssize_t errlen) {
   int i, flags = 0;
 
   if (m_strncmp("reverse-", s, 8) == 0) {
@@ -1649,7 +1647,7 @@ static void del_option (void* p) {
 
 static int init_expand (char** dst, struct option_t* src) {
   BUFFER token, in;
-  size_t len = 0;
+  ssize_t len = 0;
 
   p_delete(dst);
 
@@ -1724,7 +1722,7 @@ static void mutt_restore_default (const char* name __attribute__ ((unused)),
 
 /* check whether value for $dsn_return would be valid */
 static int check_dsn_return (const char* option __attribute__ ((unused)), unsigned long p,
-                             char* errbuf, size_t errlen) {
+                             char* errbuf, ssize_t errlen) {
   char* val = (char*) p;
   if (val && *val && m_strncmp(val, "hdrs", 4) != 0 &&
       m_strncmp(val, "full", 4) != 0) {
@@ -1737,9 +1735,9 @@ static int check_dsn_return (const char* option __attribute__ ((unused)), unsign
 
 /* check whether value for $dsn_notify would be valid */
 static int check_dsn_notify (const char* option, unsigned long p,
-                             char* errbuf, size_t errlen) {
+                             char* errbuf, ssize_t errlen) {
   list2_t* list = NULL;
-  size_t i = 0;
+  ssize_t i = 0;
   int rc = 1;
   char* val = (char*) p;
 
@@ -1765,7 +1763,7 @@ static int check_dsn_notify (const char* option, unsigned long p,
 }
 
 static int check_num (const char* option, unsigned long p,
-                      char* errbuf, size_t errlen) {
+                      char* errbuf, ssize_t errlen) {
   if ((int) p < 0) {
     if (errbuf)
       snprintf (errbuf, errlen, _("'%d' is invalid for $%s"), (int) p, option);
@@ -1776,7 +1774,7 @@ static int check_num (const char* option, unsigned long p,
 
 #ifdef DEBUG
 static int check_debug (const char* option, unsigned long p,
-                        char* errbuf, size_t errlen) {
+                        char* errbuf, ssize_t errlen) {
   if ((int) p <= DEBUG_MAX_LEVEL &&
       (int) p >= DEBUG_MIN_LEVEL)
     return (1);
@@ -1788,7 +1786,7 @@ static int check_debug (const char* option, unsigned long p,
 #endif
 
 static int check_history (const char* option __attribute__ ((unused)), unsigned long p,
-                          char* errbuf, size_t errlen) {
+                          char* errbuf, ssize_t errlen) {
   if (!check_num ("history", p, errbuf, errlen))
     return (0);
   mutt_init_history ();
@@ -1796,7 +1794,7 @@ static int check_history (const char* option __attribute__ ((unused)), unsigned
 }
 
 static int check_special (const char* name, unsigned long val,
-                          char* errbuf, size_t errlen) {
+                          char* errbuf, ssize_t errlen) {
   int i = 0;
 
   for (i = 0; SpecialVars[i].name; i++) {
@@ -1996,7 +1994,7 @@ static int parse_set (BUFFER * tmp, BUFFER * s, unsigned long data,
             hash_delete (ConfigOptions, option->option,
                          option, del_option);
           else
-            p_delete((void **)&option->data);
+            p_delete((void **)(void *)&option->data);
           break;
         }
       }
@@ -2091,7 +2089,7 @@ static int source_rc (const char *rcfile, BUFFER * err)
   BUFFER token;
   char *linebuf = NULL;
   char *currentline = NULL;
-  size_t buflen;
+  ssize_t buflen;
   pid_t pid;
 
   debug_print (2, ("reading configuration file '%s'.\n", rcfile));
@@ -2102,7 +2100,7 @@ static int source_rc (const char *rcfile, BUFFER * err)
   }
 
   p_clear(&token, 1);
-  while ((linebuf = mutt_read_line (linebuf, &buflen, f, &line)) != NULL) {
+  while ((linebuf = mutt_read_line(linebuf, &buflen, f, &line)) != NULL) {
     conv = ConfigCharset && (*ConfigCharset) && Charset;
     if (conv) {
       currentline = m_strdup(linebuf);
@@ -2233,7 +2231,7 @@ char User_typed[LONG_STRING] = { 0 };
 
 int Num_matched = 0;            /* Number of matches for completion */
 char Completed[STRING] = { 0 }; /* completed string (command or variable) */
-char *Matches[MAX (NUMVARS, NUMCOMMANDS) + 1];  /* all the matches + User_typed */
+const char *Matches[MAX (NUMVARS, NUMCOMMANDS) + 1];  /* all the matches + User_typed */
 
 /* helper function for completion.  Changes the dest buffer if
    necessary/possible to aid completion.
@@ -2257,7 +2255,7 @@ static void candidate (char *dest, char *try, const char *src, int len)
   }
 }
 
-int mutt_command_complete (char *buffer, size_t len, int pos, int numtabs)
+int mutt_command_complete (char *buffer, ssize_t len, int pos, int numtabs)
 {
   char *pt = buffer;
   int num;
@@ -2401,7 +2399,7 @@ int mutt_command_complete (char *buffer, size_t len, int pos, int numtabs)
   return 1;
 }
 
-int mutt_var_value_complete (char *buffer, size_t len, int pos)
+int mutt_var_value_complete (char *buffer, ssize_t len, int pos)
 {
   char var[STRING], *pt = buffer;
   int spaces;
@@ -2429,7 +2427,7 @@ int mutt_var_value_complete (char *buffer, size_t len, int pos)
     else {
       char tmp[LONG_STRING], tmp2[LONG_STRING];
       char *s, *d;
-      size_t dlen = buffer + len - pt - spaces;
+      ssize_t dlen = buffer + len - pt - spaces;
       const char *vals[] = { "no", "yes", "ask-no", "ask-yes" };
 
       tmp[0] = '\0';
@@ -2907,7 +2905,7 @@ static void opt_sel_diff (const char* key __attribute__ ((unused)),
 
 /* dump out the value of all the variables we have */
 int mutt_dump_variables (int full) {
-  size_t i = 0;
+  ssize_t i = 0;
   char outbuf[STRING];
   list2_t* tmp = NULL;
   struct option_t* option = NULL;