More string and buffer functions.
[apps/madmutt.git] / flags.c
diff --git a/flags.c b/flags.c
index 9ef0f6d..d25aca7 100644 (file)
--- a/flags.c
+++ b/flags.c
 
 #include <lib-ui/lib-ui.h>
 #include <lib-ui/menu.h>
 
 #include <lib-ui/lib-ui.h>
 #include <lib-ui/menu.h>
-#include <lib-ui/sidebar.h>
 #include <lib-mx/mx.h>
 #include <lib-mx/mx.h>
+#include <imap/imap.h>
 
 #include "mutt.h"
 #include "sort.h"
 
 
 #include "mutt.h"
 #include "sort.h"
 
-#include <imap/imap_private.h>
-
 
 void _mutt_set_flag (CONTEXT * ctx, HEADER * h, int flag, int bf, int upd_ctx)
 {
 
 void _mutt_set_flag (CONTEXT * ctx, HEADER * h, int flag, int bf, int upd_ctx)
 {
@@ -284,7 +282,7 @@ int mutt_thread_set_flag (HEADER * hdr, int flag, int bf, int subthread)
   if ((Sort & SORT_MASK) != SORT_THREADS) {
     mutt_error _("Threading is not enabled.");
 
   if ((Sort & SORT_MASK) != SORT_THREADS) {
     mutt_error _("Threading is not enabled.");
 
-    return (-1);
+    return -1;
   }
 
   if (!subthread)
   }
 
   if (!subthread)
@@ -296,7 +294,7 @@ int mutt_thread_set_flag (HEADER * hdr, int flag, int bf, int subthread)
     mutt_set_flag (Context, cur->message, flag, bf);
 
   if ((cur = cur->child) == NULL)
     mutt_set_flag (Context, cur->message, flag, bf);
 
   if ((cur = cur->child) == NULL)
-    return (0);
+    return 0;
 
   for (;;) {
     if (cur->message)
 
   for (;;) {
     if (cur->message)
@@ -310,7 +308,7 @@ int mutt_thread_set_flag (HEADER * hdr, int flag, int bf, int subthread)
       while (!cur->next) {
         cur = cur->parent;
         if (cur == start)
       while (!cur->next) {
         cur = cur->parent;
         if (cur == start)
-          return (0);
+          return 0;
       }
       cur = cur->next;
     }
       }
       cur = cur->next;
     }
@@ -320,6 +318,8 @@ int mutt_thread_set_flag (HEADER * hdr, int flag, int bf, int subthread)
 
 int mutt_change_flag(HEADER * h, int bf)
 {
 
 int mutt_change_flag(HEADER * h, int bf)
 {
+    char buf[STRING];
+    const char letters[] = "dDnNoOrR*!";
     static char const actions[] = {
         ['d'] = M_DELETE,       ['D'] = M_DELETE,
         ['n'] = M_NEW,          ['N'] = M_NEW,
     static char const actions[] = {
         ['d'] = M_DELETE,       ['D'] = M_DELETE,
         ['n'] = M_NEW,          ['N'] = M_NEW,
@@ -331,23 +331,12 @@ int mutt_change_flag(HEADER * h, int bf)
 
     int c;
 
 
     int c;
 
-    mvwprintw(stdscr, LINES - 1, 0, "%s? (D/N/O/r/*/!): ",
+    snprintf(buf, sizeof(buf), "%s? (D/N/O/r/*/!): ",
              bf ? _("Set flag") : _("Clear flag"));
              bf ? _("Set flag") : _("Clear flag"));
-    wclrtoeol(stdscr);
-
-    c = mutt_getch().ch;
-    if (c == -1) {
-        CLEARLINE (LINES - 1);
-        return (-1);
-    }
-
-    CLEARLINE (LINES - 1);
-
-    if (c < 0 || c > countof(actions) || !actions[c]) {
-        BEEP();
+    c = mutt_multi_choice(buf, letters);
+    if (c <= 0)
         return -1;
         return -1;
-    }
-
+    c = letters[c - 1];
     if (actions[c] == M_OLD) {
         if (h) {
             mutt_set_flag(Context, h, M_READ, !bf);
     if (actions[c] == M_OLD) {
         if (h) {
             mutt_set_flag(Context, h, M_READ, !bf);