--- mutt-1.5.4.orig/init.c	2003-03-04 08:49:48.000000000 +0100
+++ mutt-1.5.4/init.c	2003-07-22 20:14:47.000000000 +0200
@@ -349,6 +349,52 @@ static void remove_from_list (LIST **l, 
   }
 }
 
+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
diff -pruN mutt-1.5.4.orig/init.h mutt-1.5.4/init.h
--- mutt-1.5.4.orig/init.h.orig	2009-06-22 15:48:16.000000000 +0200
+++ mutt-1.5.4/init.h	2009-06-22 15:49:28.000000000 +0200
@@ -3658,6 +3658,7 @@
 static int parse_unlists (BUFFER *, BUFFER *, unsigned long, BUFFER *);
 static int parse_alias (BUFFER *, BUFFER *, unsigned long, BUFFER *);
 static int parse_unalias (BUFFER *, BUFFER *, unsigned long, BUFFER *);
+static int parse_ifdef (BUFFER *, BUFFER *, unsigned long, BUFFER *);
 static int parse_ignore (BUFFER *, BUFFER *, unsigned long, BUFFER *);
 static int parse_unignore (BUFFER *, BUFFER *, unsigned long, BUFFER *);
 static int parse_source (BUFFER *, BUFFER *, unsigned long, BUFFER *);
@@ -3715,6 +3716,7 @@
   { "hdr_order",	parse_list,		UL &HeaderOrderList },
 #ifdef HAVE_ICONV
   { "iconv-hook",	mutt_parse_hook,	M_ICONVHOOK },
+  { "ifdef",		parse_ifdef,		0 },
 #endif
   { "ignore",		parse_ignore,		0 },
   { "lists",		parse_lists,		0 },
diff -pruN mutt-1.5.4.orig/PATCHES mutt-1.5.4/PATCHES
--- mutt-1.5.4.orig/PATCHES	2003-03-19 22:33:37.000000000 +0100
+++ mutt-1.5.4/PATCHES	2003-07-22 20:14:47.000000000 +0200
@@ -0,0 +1 @@
+patch-1.5.4.cd.ifdef.1
