Rocco Rutte:
[apps/madmutt.git] / init.c
diff --git a/init.c b/init.c
index 0205579..9c81fe1 100644 (file)
--- a/init.c
+++ b/init.c
@@ -542,6 +542,52 @@ static int remove_from_rx_list (RX_LIST **l, const char *str)
   return (rv);
 }
 
+static int parse_ifdef (BUFFER *tmp, BUFFER *s, unsigned long data, BUFFER *err)
+{
+  int i, j, res = 0;
+  BUFFER token;
+
+  memset (&token, 0, sizeof (token));
+  mutt_extract_token (tmp, s, 0);
+
+  /* is the item defined as a variable or a function? */
+  if (!(res = (mutt_option_index (tmp->data) != -1)))
+    for (i = 0; !res && i < MENU_MAX; i++)
+    {
+      struct binding_t *b = km_get_table (Menus[i].value);
+
+      if (!b)
+       continue;
+
+      for (j = 0; b[j].name; j++)
+       if (!ascii_strncasecmp (tmp->data, b[j].name, mutt_strlen (tmp->data))
+             && (mutt_strlen (b[j].name) == mutt_strlen (tmp->data)))
+       {
+         res = 1;
+         break;
+       }
+    }
+
+  if (!MoreArgs (s))
+  {
+    snprintf (err->data, err->dsize, _("ifdef: too few arguments"));
+    return (-1);
+  }
+  mutt_extract_token (tmp, s, M_TOKEN_SPACE);
+
+  if (res)
+  {
+    if (mutt_parse_rc_line (tmp->data, &token, err) == -1)
+    {
+      mutt_error ("Erreur: %s", err->data);
+      FREE (&token.data);
+      return (-1);
+    }
+    FREE (&token.data);
+  }
+  return 0;
+}
+
 static int parse_unignore (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err)
 {
   do
@@ -2136,7 +2182,7 @@ static void start_debug (void)
   {
     t = time (0);
     setbuf (debugfile, NULL); /* don't buffer the debugging output! */
-    fprintf (debugfile, "Mutt %s started at %s.\nDebugging at level %d.\n\n",
+    fprintf (debugfile, "Mutt-ng %s started at %s.\nDebugging at level %d.\n\n",
             MUTT_VERSION, asctime (localtime (&t)), debuglevel);
   }
 }