X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=status.c;h=18c96846b95cc3ad59842f67a2f996dff1551aaf;hp=5265a7c6bcaa53827003cf9228ecf3a30006115d;hb=dbb9a1e16d03a2d4664d6dc6a30c721b889d4982;hpb=a8477ebaa09990b3688164cbe5cf661c4189541d diff --git a/status.c b/status.c index 5265a7c..18c9684 100644 --- a/status.c +++ b/status.c @@ -11,22 +11,26 @@ # include "config.h" #endif +#include +#include +#include +#include + +#include + #include "mutt.h" #include "mutt_menu.h" -#include "mutt_curses.h" #include "sort.h" -#include "mapping.h" #include "mx.h" #include "buffy.h" -#include "lib/mem.h" -#include "lib/intl.h" -#include "lib/str.h" #include #include #include +#define SW (option(OPTMBOXPANE)?SidebarWidth:0) + static char *get_sort_str (char *buf, size_t buflen, int method) { snprintf (buf, buflen, "%s%s%s", @@ -52,7 +56,7 @@ static char *get_sort_str (char *buf, size_t buflen, int method) * %s = current sorting method ($sort) * %S = current aux sorting method ($sort_aux) * %t = # of tagged messages [option] - * %v = Mutt-ng version + * %v = Madmutt version * %V = currently active limit pattern [option] */ static const char *status_format_str (char *buf, size_t buflen, char op, const char *src, const char *prefix, @@ -60,7 +64,8 @@ static const char *status_format_str (char *buf, size_t buflen, char op, const char *elsestring, unsigned long data, format_flag flags) { - char fmt[SHORT_STRING], tmp[SHORT_STRING], *cp, *p; + char fmt[SHORT_STRING], tmp[SHORT_STRING]; + const char *cp, *p; int count, optional = (flags & M_FORMAT_OPTIONAL); MUTTMENU *menu = (MUTTMENU *) data; @@ -77,23 +82,21 @@ static const char *status_format_str (char *buf, size_t buflen, char op, case 'B': snprintf (fmt, sizeof (fmt), "%%%ss", prefix); -#ifdef USE_COMPRESSED if (Context && Context->compressinfo && Context->realpath) { if ((p = strrchr (Context->realpath, '/'))) - strfcpy (tmp, p + 1, sizeof (tmp)); + m_strcpy(tmp, sizeof(tmp), p + 1); else - strfcpy (tmp, Context->realpath, sizeof (tmp)); + m_strcpy(tmp, sizeof(tmp), Context->realpath); } else -#endif if (Context && Context->path) { if ((p = strrchr (Context->path, '/'))) - strfcpy (tmp, p + 1, sizeof (tmp)); + m_strcpy(tmp, sizeof(tmp), p + 1); else - strfcpy (tmp, Context->path, sizeof (tmp)); + m_strcpy(tmp, sizeof(tmp), Context->path); } else - strfcpy (tmp, _("no mailbox"), sizeof (tmp)); + m_strcpy(tmp, sizeof(tmp), _("no mailbox")); snprintf (buf, buflen, fmt, tmp); break; @@ -113,19 +116,17 @@ static const char *status_format_str (char *buf, size_t buflen, char op, case 'f': snprintf (fmt, sizeof (fmt), "%%%ss", prefix); -#ifdef USE_COMPRESSED if (Context && Context->compressinfo && Context->realpath) { - strfcpy (tmp, Context->realpath, sizeof (tmp)); + m_strcpy(tmp, sizeof(tmp), Context->realpath); mutt_pretty_mailbox (tmp); } else -#endif if (Context && Context->path) { - strfcpy (tmp, Context->path, sizeof (tmp)); + m_strcpy(tmp, sizeof(tmp), Context->path); mutt_pretty_mailbox (tmp); } else - strfcpy (tmp, _("(no mailbox)"), sizeof (tmp)); + m_strcpy(tmp, sizeof(tmp), _("(no mailbox)")); snprintf (buf, buflen, fmt, tmp); break; @@ -222,26 +223,16 @@ static const char *status_format_str (char *buf, size_t buflen, char op, int i = 0; if (Context) { - i = option (OPTATTACHMSG) ? 3 : ((Context->readonly || - Context->dontwrite) ? 2 : (Context-> - changed - || ( -#ifdef USE_IMAP - /* deleted doesn't necessarily mean changed in IMAP */ - Context-> - magic - != - M_IMAP - && -#endif - Context-> - deleted)) - ? 1 : 0); + /* XXX: deleted doesn't necessarily mean changed in IMAP */ + i = option (OPTATTACHMSG) ? 3 + : ((Context->readonly || Context->dontwrite) ? 2 + : (Context->changed || (Context-> magic != M_IMAP && Context-> + deleted)) ? 1 : 0); } if (!StChars) buf[0] = 0; - else if (i >= str_len (StChars)) + else if (i >= m_strlen(StChars)) buf[0] = StChars[0]; else buf[0] = StChars[i]; @@ -279,8 +270,7 @@ static const char *status_format_str (char *buf, size_t buflen, char op, break; case 'v': - snprintf (fmt, sizeof (fmt), "Mutt-ng %%s"); - snprintf (buf, buflen, fmt, MUTT_VERSION); + m_strcpy(buf, buflen, mutt_make_version(0)); break; case 'V': @@ -310,9 +300,13 @@ static const char *status_format_str (char *buf, size_t buflen, char op, return (src); } -void menu_status_line (char *buf, size_t buflen, MUTTMENU * menu, - const char *p) -{ - mutt_FormatString (buf, buflen, p, status_format_str, (unsigned long) menu, - 0); +void menu_status_line (char* buf, size_t len, MUTTMENU* menu, const char* p) { + /* + * if we have enough space for buffer, format lines to $COLS-$SidebarWidth + * only to not wrap past end of screen + */ + int width = COLS - SW; + mutt_FormatString (buf, (width >= len ? len : (width + 1)), + p, status_format_str, + (unsigned long) menu, 0); }