diff --git a/alias.c b/alias.c
index 9be40dc..f2222aa 100644
--- a/alias.c
+++ b/alias.c
@@ -409,7 +409,7 @@ int mutt_alias_complete (char *s, size_t
     while (a) {
       if (a->name && strstr (a->name, s) == a->name) {
         if (!bestname[0])       /* init */
-          m_strcpy(bestname, MIN(m_strlen(a->name) + 1, sizeof(bestname)),
+          m_strcpy(bestname, MIN((size_t) (m_strlen(a->name) + 1), sizeof(bestname)),
                    a->name);
         else {
           for (i = 0; a->name[i] && a->name[i] == bestname[i]; i++);
@@ -541,19 +541,21 @@ int mutt_addr_is_user (address_t * addr)
   return 0;
 }
 
-static const char *alias_format_str (char *dest, size_t destlen, char op,
-                                     const char *src, const char *fmt,
-                                     const char *ifstring,
-                                     const char *elsestring,
-                                     unsigned long data, format_flag flags)
+static const format_t *alias_format_str (char *dest, size_t destlen, char op,
+                                     const format_t *src, const char *fmt,
+                                     const char *ifstring __attribute__ ((unused)),
+                                     const char *elsestring __attribute__ ((unused)),
+                                     unsigned long data, format_flag flags __attribute__ ((unused)))
 {
   char tmp[SHORT_STRING], adr[SHORT_STRING];
   ALIAS *alias = (ALIAS *) data;
 
   switch (op) {
   case 'f':
-    snprintf (tmp, sizeof (tmp), "%%%ss", fmt);
-    snprintf (dest, destlen, tmp, alias->del ? "D" : " ");
+    if(alias->del)
+      m_strcpy (dest, sizeof(dest), "D");
+    else
+      m_strcpy (dest, sizeof(dest), " ");
     break;
   case 'a':
     mutt_format_s (dest, destlen, fmt, alias->name);
@@ -561,12 +563,11 @@ static const char *alias_format_str (cha
   case 'r':
     adr[0] = 0;
     rfc822_write_address (adr, sizeof (adr), alias->addr, 1);
-    snprintf (tmp, sizeof (tmp), "%%%ss", fmt);
-    snprintf (dest, destlen, tmp, adr);
+    m_strncpy(dest, sizeof(dest), tmp, atoi(fmt));
     break;
   case 'n':
-    snprintf (tmp, sizeof (tmp), "%%%sd", fmt);
-    snprintf (dest, destlen, tmp, alias->num + 1);
+    snprintf(tmp, sizeof(tmp), "%d", alias->num + 1);
+    m_strncpy(dest, sizeof(dest), tmp, atoi(fmt));
     break;
   case 't':
     dest[0] = alias->tagged ? '*' : ' ';
@@ -579,7 +580,7 @@ static const char *alias_format_str (cha
 
 static void alias_entry (char *s, size_t slen, MUTTMENU * m, int num)
 {
-  mutt_FormatString (s, slen, NONULL (AliasFmt), alias_format_str,
+  mutt_FormatString (s, slen, NONULL (AliasFmt), (format_t *) alias_format_str,
                      (unsigned long) ((ALIAS **) m->data)[num],
                      M_FORMAT_ARROWCURSOR);
 }
diff --git a/compose.c b/compose.c
diff --git a/mutt_curses.h b/mutt_curses.h
index 1141e25..3bd9f96 100644
--- a/mutt_curses.h
+++ b/mutt_curses.h
@@ -32,13 +32,17 @@
 
 #ifdef HAVE_NCURSESW_NCURSES_H
 #include <ncursesw/ncurses.h>
-#elif HAVE_NCURSES_NCURSES_H
+#else
+#ifdef HAVE_NCURSES_NCURSES_H
 #include <ncurses/ncurses.h>
-#elif HAVE_NCURSES_H
+#else
+#ifdef HAVE_NCURSES_H
 #include <ncurses.h>
 #else
 #include <curses.h>
 #endif
+#endif
+#endif
 
 #define M_ENTER_C '\n'
 #define M_ENTER_S "\n"
