.
OBS-URL: https://build.opensuse.org/package/show/server:mail/mutt?expand=0&rev=55
This commit is contained in:
parent
11c5edec3c
commit
63f7a40b3d
@ -1,5 +1,5 @@
|
||||
--- Makefile.am
|
||||
+++ Makefile.am 2010-11-04 13:51:48.432426391 +0000
|
||||
+++ Makefile.am 2010-11-04 13:51:48.000000000 +0000
|
||||
@@ -71,6 +71,7 @@ EXTRA_DIST = COPYRIGHT GPL OPS OPS.PGP O
|
||||
rfc2231.h rfc822.h rfc3676.h sha1.h sort.h mime.types VERSION prepare \
|
||||
_regex.h OPS.MIX README.SECURITY remailer.c remailer.h browser.h \
|
||||
@ -9,7 +9,7 @@
|
||||
muttbug pgppacket.h depcomp ascii.h BEWARE PATCHES patchlist.sh \
|
||||
ChangeLog mkchangelog.sh mutt_idna.h \
|
||||
--- Makefile.in
|
||||
+++ Makefile.in 2010-11-04 13:54:41.299925329 +0000
|
||||
+++ Makefile.in 2010-11-04 13:54:41.000000000 +0000
|
||||
@@ -84,7 +84,7 @@ am_mutt_OBJECTS = addrbook.$(OBJEXT) ali
|
||||
score.$(OBJEXT) send.$(OBJEXT) sendlib.$(OBJEXT) \
|
||||
signal.$(OBJEXT) sort.$(OBJEXT) status.$(OBJEXT) \
|
||||
@ -36,7 +36,7 @@
|
||||
muttbug pgppacket.h depcomp ascii.h BEWARE PATCHES patchlist.sh \
|
||||
ChangeLog mkchangelog.sh mutt_idna.h \
|
||||
--- buffy.c
|
||||
+++ buffy.c 2010-11-04 13:57:02.163926692 +0000
|
||||
+++ buffy.c 2010-11-04 13:57:02.000000000 +0000
|
||||
@@ -520,19 +520,22 @@ int mutt_buffy_check (int force)
|
||||
{
|
||||
case M_MBOX:
|
||||
@ -63,3 +63,183 @@
|
||||
if ((tmp->new = mh_buffy (tmp->path)) > 0)
|
||||
BuffyCount++;
|
||||
break;
|
||||
--- sidebar.c
|
||||
+++ sidebar.c 2011-01-31 12:06:41.571925769 +0000
|
||||
@@ -28,6 +28,7 @@
|
||||
#include "sidebar.h"
|
||||
#include "buffy.h"
|
||||
#include <libgen.h>
|
||||
+#include <limits.h>
|
||||
#include "keymap.h"
|
||||
#include <stdbool.h>
|
||||
|
||||
@@ -80,36 +81,45 @@ void calc_boundaries (int menu)
|
||||
}
|
||||
}
|
||||
|
||||
+static char sidebar_buffer[LINE_MAX];
|
||||
char *make_sidebar_entry(char *box, int size, int new, int flagged)
|
||||
{
|
||||
- static char *entry = 0;
|
||||
- char *c;
|
||||
- int i = 0;
|
||||
- int delim_len = strlen(SidebarDelim);
|
||||
+ char *entry;
|
||||
+ size_t i = 0;
|
||||
+ size_t delim_len = strlen(NONULL(SidebarDelim));
|
||||
+ size_t width = sizeof(sidebar_buffer) - 1;
|
||||
+
|
||||
+ entry = &sidebar_buffer[0];
|
||||
+ if (SidebarWidth - delim_len + 1 > width || strlen(box) + 1 > width)
|
||||
+ return NONULL(SidebarDelim);
|
||||
|
||||
- c = realloc(entry, SidebarWidth - delim_len + 2);
|
||||
- if ( c ) entry = c;
|
||||
entry[SidebarWidth - delim_len + 1] = 0;
|
||||
for (; i < SidebarWidth - delim_len + 1; entry[i++] = ' ' );
|
||||
i = strlen(box);
|
||||
strncpy( entry, box, i < (SidebarWidth - delim_len + 1) ? i : (SidebarWidth - delim_len + 1) );
|
||||
|
||||
if (size == -1)
|
||||
- sprintf(entry + SidebarWidth - delim_len - 3, "?");
|
||||
+ snprintf(entry + SidebarWidth - delim_len - 3, width, "?");
|
||||
else if ( new ) {
|
||||
if (flagged > 0) {
|
||||
- sprintf(
|
||||
+ snprintf(
|
||||
entry + SidebarWidth - delim_len - 5 - quick_log10(size) - quick_log10(new) - quick_log10(flagged),
|
||||
+ width,
|
||||
"% d(%d)[%d]", size, new, flagged);
|
||||
} else {
|
||||
- sprintf(
|
||||
+ snprintf(
|
||||
entry + SidebarWidth - delim_len - 3 - quick_log10(size) - quick_log10(new),
|
||||
+ width,
|
||||
"% d(%d)", size, new);
|
||||
}
|
||||
} else if (flagged > 0) {
|
||||
- sprintf( entry + SidebarWidth - delim_len - 3 - quick_log10(size) - quick_log10(flagged), "% d[%d]", size, flagged);
|
||||
+ snprintf(entry + SidebarWidth - delim_len - 3 - quick_log10(size) - quick_log10(flagged),
|
||||
+ width,
|
||||
+ "% d[%d]", size, flagged);
|
||||
} else {
|
||||
- sprintf( entry + SidebarWidth - delim_len - 1 - quick_log10(size), "% d", size);
|
||||
+ snprintf(entry + SidebarWidth - delim_len - 1 - quick_log10(size),
|
||||
+ width,
|
||||
+ "% d", size);
|
||||
}
|
||||
return entry;
|
||||
}
|
||||
@@ -136,15 +146,17 @@ void set_curbuffy(char buf[LONG_STRING])
|
||||
|
||||
int draw_sidebar(int menu) {
|
||||
|
||||
+ char folder_buffer[LINE_MAX];
|
||||
int lines = option(OPTHELP) ? 1 : 0;
|
||||
BUFFY *tmp;
|
||||
#ifndef USE_SLANG_CURSES
|
||||
attr_t attrs;
|
||||
#endif
|
||||
- short delim_len = strlen(SidebarDelim);
|
||||
+ short delim_len = strlen(NONULL(SidebarDelim));
|
||||
short color_pair;
|
||||
+ char *maildir = NONULL(Maildir);
|
||||
|
||||
- static bool initialized = false;
|
||||
+ static bool initialized /* = false*/;
|
||||
static int prev_show_value;
|
||||
static short saveSidebarWidth;
|
||||
|
||||
@@ -168,7 +180,7 @@ int draw_sidebar(int menu) {
|
||||
}
|
||||
|
||||
|
||||
-// if ( SidebarWidth == 0 ) return 0;
|
||||
+/* if ( SidebarWidth == 0 ) return 0; */
|
||||
if (SidebarWidth > 0 && option (OPTSIDEBAR)
|
||||
&& delim_len >= SidebarWidth) {
|
||||
unset_option (OPTSIDEBAR);
|
||||
@@ -226,6 +238,32 @@ int draw_sidebar(int menu) {
|
||||
SETCOLOR(MT_COLOR_NORMAL);
|
||||
|
||||
for ( ; tmp && lines < LINES-1 - (menu != MENU_PAGER || option(OPTSTATUSONTOP)); tmp = tmp->next ) {
|
||||
+ short maildir_is_prefix = 0;
|
||||
+ int sidebar_folder_depth;
|
||||
+ char *sidebar_folder_name;
|
||||
+ char *safe_path;
|
||||
+ char *base_name;
|
||||
+
|
||||
+ if ( !tmp->path || *tmp->path == '\0' ) {
|
||||
+ move( lines, 0 );
|
||||
+ lines++;
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ safe_path = strdupa(tmp->path);
|
||||
+ if ( !safe_path ) {
|
||||
+ move( lines, 0 );
|
||||
+ lines++;
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ base_name = basename(safe_path);
|
||||
+ if ( !base_name ) {
|
||||
+ move( lines, 0 );
|
||||
+ lines++;
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
if ( tmp == CurBuffy )
|
||||
SETCOLOR(MT_COLOR_INDICATOR);
|
||||
else if ( tmp->msg_unread > 0 )
|
||||
@@ -241,35 +279,36 @@ int draw_sidebar(int menu) {
|
||||
tmp->msgcount = Context->msgcount;
|
||||
tmp->msg_flagged = Context->flagged;
|
||||
}
|
||||
- // check whether Maildir is a prefix of the current folder's path
|
||||
- short maildir_is_prefix = 0;
|
||||
- if ( (strlen(tmp->path) > strlen(Maildir)) &&
|
||||
- (strncmp(Maildir, tmp->path, strlen(Maildir)) == 0) )
|
||||
+ /* check whether Maildir is a prefix of the current folder's path */
|
||||
+ if ( (strlen(tmp->path) > strlen(maildir)) &&
|
||||
+ (strncmp(maildir, tmp->path, strlen(maildir)) == 0) )
|
||||
maildir_is_prefix = 1;
|
||||
- // calculate depth of current folder and generate its display name with indented spaces
|
||||
- int sidebar_folder_depth = 0;
|
||||
- char *sidebar_folder_name;
|
||||
- sidebar_folder_name = basename(tmp->path);
|
||||
+ /* calculate depth of current folder and generate its display name with indented spaces */
|
||||
+ sidebar_folder_name = base_name;
|
||||
+ sidebar_folder_depth = 0;
|
||||
if ( maildir_is_prefix ) {
|
||||
char *tmp_folder_name;
|
||||
int i;
|
||||
- tmp_folder_name = tmp->path + strlen(Maildir);
|
||||
- for (i = 0; i < strlen(tmp->path) - strlen(Maildir); i++) {
|
||||
+ tmp_folder_name = tmp->path + strlen(maildir);
|
||||
+ for (i = 0; i < strlen(tmp->path) - strlen(maildir); i++) {
|
||||
if (tmp_folder_name[i] == '/') sidebar_folder_depth++;
|
||||
}
|
||||
if (sidebar_folder_depth > 0) {
|
||||
- sidebar_folder_name = malloc(strlen(basename(tmp->path)) + sidebar_folder_depth + 1);
|
||||
+ if (sidebar_folder_depth + strlen(base_name) + 1 > sizeof(folder_buffer)) {
|
||||
+ move( lines, 0 );
|
||||
+ lines++;
|
||||
+ continue;
|
||||
+ }
|
||||
+ sidebar_folder_name = &folder_buffer[0];
|
||||
for (i=0; i < sidebar_folder_depth; i++)
|
||||
sidebar_folder_name[i]=' ';
|
||||
sidebar_folder_name[i]=0;
|
||||
- strncat(sidebar_folder_name, basename(tmp->path), strlen(basename(tmp->path)) + sidebar_folder_depth);
|
||||
+ strncat(sidebar_folder_name, base_name, strlen(base_name) + sidebar_folder_depth);
|
||||
}
|
||||
}
|
||||
printw( "%.*s", SidebarWidth - delim_len + 1,
|
||||
make_sidebar_entry(sidebar_folder_name, tmp->msgcount,
|
||||
tmp->msg_unread, tmp->msg_flagged));
|
||||
- if (sidebar_folder_depth > 0)
|
||||
- free(sidebar_folder_name);
|
||||
lines++;
|
||||
}
|
||||
SETCOLOR(MT_COLOR_NORMAL);
|
||||
|
@ -1,3 +1,9 @@
|
||||
-------------------------------------------------------------------
|
||||
Mon Jan 31 14:30:26 CET 2011 - werner@suse.de
|
||||
|
||||
- Fix the orther sidebar patch as it is broken with MALLOC_CHECK=1
|
||||
now static buffers are used instead (re)alloced arrays.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jan 26 12:46:10 UTC 2011 - gber@opensuse.org
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user