]> granicus.if.org Git - mutt/commitdiff
More default setting. This can easily be done much cleaner than the
authorThomas Roessler <roessler@does-not-exist.org>
Tue, 16 May 2000 15:57:36 +0000 (15:57 +0000)
committerThomas Roessler <roessler@does-not-exist.org>
Tue, 16 May 2000 15:57:36 +0000 (15:57 +0000)
last version of the patch.

init.c

diff --git a/init.c b/init.c
index b4d858ff1f2b63a6a5fc960b53d348f1eb1b3430..1b41413778a342b6a077d4cabbfb9b0bb8986265 100644 (file)
--- a/init.c
+++ b/init.c
@@ -641,6 +641,40 @@ parse_sort (short *val, const char *s, const struct mapping_t *map, BUFFER *err)
   return 0;
 }
 
+static void mutt_set_default (struct option_t *p)
+{
+  switch (p->type & DT_MASK)
+  {
+    case DT_STR:
+      if (*((char **) p->data))
+        p->init = (unsigned long) safe_strdup (* ((char **) p->data));
+      break;
+    case DT_PATH:
+      if (*((char **) p->data))
+      {
+       char *cp = safe_strdup (*((char **) p->data));
+       mutt_pretty_mailbox (cp);
+        p->init = (unsigned long) cp;
+      }
+      break;
+    case DT_ADDR:
+      if (*((ADDRESS **) p->data))
+      {
+       char tmp[HUGE_STRING];
+       rfc822_write_address (tmp, sizeof (tmp), *((ADDRESS **) p->data));
+       p->init = (unsigned long) safe_strdup (tmp);
+      }
+      break;
+    case DT_RX:
+    {
+      REGEXP *pp = (REGEXP *) p->data;
+      if (pp->pattern)
+       p->init = (unsigned long) safe_strdup (pp->pattern);
+      break;
+    }
+  }
+}
+
 static void mutt_restore_default (struct option_t *p)
 {
   switch (p->type & DT_MASK)
@@ -648,8 +682,6 @@ static void mutt_restore_default (struct option_t *p)
     case DT_STR:
       if (p->init)
        mutt_str_replace ((char **) p->data, (char *) p->init); 
-      else if (*((char **) p->data))
-        p->init = (unsigned long) safe_strdup (* ((char **) p->data));
       break;
     case DT_PATH:
       if (p->init)
@@ -660,8 +692,6 @@ static void mutt_restore_default (struct option_t *p)
        mutt_expand_path (path, sizeof (path));
        mutt_str_replace ((char **) p->data, path);
       }
-      else if (*((char **) p->data))
-        p->init = (unsigned long) safe_strdup (* ((char **) p->data));
       break;
     case DT_ADDR:
       if (p->init)
@@ -669,12 +699,6 @@ static void mutt_restore_default (struct option_t *p)
        rfc822_free_address ((ADDRESS **) p->data);
        *((ADDRESS **) p->data) = rfc822_parse_adrlist (NULL, (char *) p->init);
       }
-      else if (*((ADDRESS **) p->data))
-      {
-       char tmp[HUGE_STRING];
-       rfc822_write_address (tmp, sizeof (tmp), *((ADDRESS **) p->data));
-       p->init = (unsigned long) safe_strdup (tmp);
-      }
       break;
     case DT_BOOL:
       if (p->init)
@@ -726,8 +750,6 @@ static void mutt_restore_default (struct option_t *p)
            FREE (&pp->rx);
          }
        }
-       else if (pp->pattern)
-         p->init = (unsigned long) safe_strdup (pp->pattern);
       }
       break;
   }
@@ -1789,7 +1811,10 @@ void mutt_init (int skip_sys_rc, LIST *commands)
 
   /* Set standard defaults */
   for (i = 0; MuttVars[i].option; i++)
+  {
+    mutt_set_default (&MuttVars[i]);
     mutt_restore_default (&MuttVars[i]);
+  }
 
   CurrentMenu = MENU_MAIN;