X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=status.c;h=f95eb326f16dbfc1d5ae6eabeb6890700288ccd5;hp=f0b3c3a7ef3caa8da6fbf57f5b12e6adaa7c6775;hb=b3cb6ed8d36c550a2e589910ce51bbc8352ff57c;hpb=df70e07e24add1869bcc9b7af2277d9d0c09a281 diff --git a/status.c b/status.c index f0b3c3a..f95eb32 100644 --- a/status.c +++ b/status.c @@ -1,36 +1,36 @@ /* + * Copyright notice from original mutt: * Copyright (C) 1996-2000 Michael R. Elkins - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. + * + * This file is part of mutt-ng, see http://www.muttng.org/. + * It's licensed under the GNU General Public License, + * please see the file GPL in the top level source directory. */ #if HAVE_CONFIG_H # include "config.h" #endif +#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", @@ -64,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; @@ -73,9 +74,9 @@ static const char *status_format_str (char *buf, size_t buflen, char op, case 'b': if (!optional) { snprintf (fmt, sizeof (fmt), "%%%sd", prefix); - snprintf (buf, buflen, fmt, mutt_buffy_check (0)); + snprintf (buf, buflen, fmt, buffy_check (0)); } - else if (!mutt_buffy_check (0)) + else if (!buffy_check (0)) optional = 0; break; @@ -245,7 +246,7 @@ static const char *status_format_str (char *buf, size_t buflen, char op, if (!StChars) buf[0] = 0; - else if (i >= mutt_strlen (StChars)) + else if (i >= str_len (StChars)) buf[0] = StChars[0]; else buf[0] = StChars[i]; @@ -283,8 +284,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); + strncpy (buf, mutt_make_version (0), buflen); break; case 'V': @@ -314,9 +314,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); }