X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=lib-ui%2Fsidebar.c;h=9f6e9cea483d50e26ad743bdf53ae80e3122c513;hp=6ccff9feca77e74894465318e05d6df2f58b60bb;hb=455a2390989dfcfc90899785b0d8e9ac94ebd28e;hpb=f3cbb9f51357972f6e74244494236a41dc4d84cd diff --git a/lib-ui/sidebar.c b/lib-ui/sidebar.c index 6ccff9f..9f6e9ce 100644 --- a/lib-ui/sidebar.c +++ b/lib-ui/sidebar.c @@ -92,12 +92,14 @@ static char *shortened_hierarchy (char *hbox, int maxlen) return m_strdup(hbox); } -static const char* sidebar_number_format (char* dest, ssize_t destlen, char op, - const char* src, const char* fmt, - const char* ifstr, const char* elstr, - unsigned long data, format_flag flags) { - char tmp[SHORT_STRING]; - BUFFY* b = Incoming.arr[data]; +static const char * +sidebar_number_format(char* dest, ssize_t destlen, + char op, const char* src, const char* fmt, + const char* ifstr, const char* elstr, + anytype data, format_flag flags) +{ + char tmp[STRING]; + BUFFY* b = Incoming.arr[data.i]; int opt = flags & M_FORMAT_OPTIONAL; int c = Context && !m_strcmp(Context->path, b->path); @@ -162,13 +164,10 @@ static const char* sidebar_number_format (char* dest, ssize_t destlen, char op, break; } - if (opt) - mutt_FormatString (dest, destlen, ifstr, sidebar_number_format, - data, M_FORMAT_OPTIONAL); - else if (flags & M_FORMAT_OPTIONAL) - mutt_FormatString (dest, destlen, elstr, sidebar_number_format, - data, M_FORMAT_OPTIONAL); - return (src); + if (flags & M_FORMAT_OPTIONAL) + m_strformat(dest, destlen, 0, opt ? ifstr : elstr, + sidebar_number_format, data, flags); + return src; } int sidebar_need_count (void) { @@ -186,7 +185,7 @@ int sidebar_need_count (void) { static int make_sidebar_entry (char* sbox, int idx, ssize_t len) { int shortened = 0, lencnt = 0; - char no[SHORT_STRING], entry[SHORT_STRING]; + char no[STRING], entry[STRING]; int l = m_strlen(ImapHomeNamespace); int l_m = m_strlen(Maildir); @@ -198,12 +197,10 @@ static int make_sidebar_entry (char* sbox, int idx, ssize_t len) /* if $sidebar_newmail_only is set, don't display the * box only if it's not the currently opened * (i.e. always display the currently opened) */ - return (0); + return 0; - mutt_FormatString (no, len, NONULL (SidebarNumberFormat), - sidebar_number_format, idx, M_FORMAT_OPTIONAL); + m_strformat(no, len, SidebarWidth, SidebarNumberFormat, sidebar_number_format, idx, 0); lencnt = m_strlen(no); - memset(&entry, ' ', sizeof(entry)); if (l > 0 && m_strncmp(sbox, ImapHomeNamespace, l) == 0 && m_strlen(sbox) > l) @@ -218,21 +215,19 @@ static int make_sidebar_entry (char* sbox, int idx, ssize_t len) } else sbox = basename (sbox); - if (option (OPTSHORTENHIERARCHY) && m_strlen(sbox) > len-lencnt-1) { + if (option(OPTSHORTENHIERARCHY) && m_strlen(sbox) > len-lencnt-1) { sbox = shortened_hierarchy (sbox, len-lencnt-1); shortened = 1; } - m_strcpy(entry, len - lencnt, sbox); - entry[m_strlen(entry)] = ' '; - memcpy(entry + (len - lencnt), no, lencnt); - - addnstr (entry, len); + snprintf(entry, sizeof(entry), "%*s", (int)len, no); + memcpy(entry, sbox, MIN(len - 1, m_strlen(sbox))); + addnstr(entry, len); if (shortened) p_delete(&sbox); - return (1); + return 1; } /* returns folder name of currently @@ -322,7 +317,7 @@ int sidebar_draw (void) { i = 0,line; BUFFY *tmp; ssize_t delim_len = m_strlen(SidebarDelim); - char blank[SHORT_STRING]; + char blank[STRING]; known_lines=last_line-first_line;