diff --git a/101_3.3.1_crasher_bug_1534.patch b/101_3.3.1_crasher_bug_1534.patch new file mode 100644 index 0000000..cd0b4f7 --- /dev/null +++ b/101_3.3.1_crasher_bug_1534.patch @@ -0,0 +1,31 @@ +Fix bug 1534, Crash when saving to drafts on slow IMAP link and closing the window +during save. + +Index: src/compose.c +=================================================================== +RCS file: /pack/anoncvs/sylpheedclaws/sylpheed-claws/src/compose.c,v +retrieving revision 1.382.2.438 +retrieving revision 1.382.2.439 +diff -u -p -u -r1.382.2.438 -r1.382.2.439 +--- src/compose.c 2008/02/15 10:02:07 1.382.2.438 ++++ src/compose.c 2008/02/28 16:56:26 1.382.2.439 +@@ -8940,10 +8940,18 @@ static void compose_close_cb(gpointer da + #endif + + if (compose->modified) { ++ if (!g_mutex_trylock(compose->mutex)) { ++ /* we don't want to lock the mutex once it's available, ++ * because as the only other part of compose.c locking ++ * it is compose_close - which means once unlocked, ++ * the compose struct will be freed */ ++ debug_print("couldn't lock mutex, probably sending\n"); ++ return; ++ } + val = alertpanel(_("Discard message"), + _("This message has been modified. Discard it?"), + _("_Discard"), _("_Save to Drafts"), GTK_STOCK_CANCEL); +- ++ g_mutex_unlock(compose->mutex); + switch (val) { + case G_ALERTDEFAULT: + if (prefs_common.autosave) diff --git a/102_3.3.1_bug_1533.patch b/102_3.3.1_bug_1533.patch new file mode 100644 index 0000000..3feed2c --- /dev/null +++ b/102_3.3.1_bug_1533.patch @@ -0,0 +1,35 @@ +fix bug 1533, Can't mark mails as read on some IMAP servers. + +Index: src/imap.c +=================================================================== +RCS file: /pack/anoncvs/sylpheedclaws/sylpheed-claws/src/imap.c,v +retrieving revision 1.179.2.212 +retrieving revision 1.179.2.213 +diff -u -p -u -r1.179.2.212 -r1.179.2.213 +--- src/imap.c 2008/02/26 17:58:22 1.179.2.212 ++++ src/imap.c 2008/02/28 16:56:28 1.179.2.213 +@@ -5184,19 +5184,19 @@ static struct mailimap_flag_list * imap_ + + flag_list = mailimap_flag_list_new_empty(); + +- if (IMAP_IS_SEEN(flags) && flag_ok(item, IMAP_FLAG_SEEN)) ++ if (IMAP_IS_SEEN(flags)) + mailimap_flag_list_add(flag_list, + mailimap_flag_new_seen()); +- if (IMAP_IS_ANSWERED(flags) && flag_ok(item, IMAP_FLAG_ANSWERED)) ++ if (IMAP_IS_ANSWERED(flags)) + mailimap_flag_list_add(flag_list, + mailimap_flag_new_answered()); +- if (IMAP_IS_FLAGGED(flags) && flag_ok(item, IMAP_FLAG_FLAGGED)) ++ if (IMAP_IS_FLAGGED(flags)) + mailimap_flag_list_add(flag_list, + mailimap_flag_new_flagged()); +- if (IMAP_IS_DELETED(flags) && flag_ok(item, IMAP_FLAG_DELETED)) ++ if (IMAP_IS_DELETED(flags)) + mailimap_flag_list_add(flag_list, + mailimap_flag_new_deleted()); +- if (IMAP_IS_DRAFT(flags) && flag_ok(item, IMAP_FLAG_DRAFT)) ++ if (IMAP_IS_DRAFT(flags)) + mailimap_flag_list_add(flag_list, + mailimap_flag_new_draft()); + if (IMAP_IS_FORWARDED(flags) && flag_ok(item, IMAP_FLAG_FORWARDED)) diff --git a/103_3.3.1_crasher_bug_1515.patch b/103_3.3.1_crasher_bug_1515.patch new file mode 100644 index 0000000..78d8cc8 --- /dev/null +++ b/103_3.3.1_crasher_bug_1515.patch @@ -0,0 +1,32 @@ +Fix bug 1515, crash on failure to write IMAP message to disk. +Index: src/etpan/imap-thread.c +=================================================================== +RCS file: /pack/anoncvs/sylpheedclaws/sylpheed-claws/src/etpan/Attic/imap-thread.c,v +retrieving revision 1.1.4.97 +retrieving revision 1.1.4.98 +diff -u -p -u -r1.1.4.97 -r1.1.4.98 +--- src/etpan/imap-thread.c 2008/02/12 17:24:47 1.1.4.97 ++++ src/etpan/imap-thread.c 2008/02/28 16:56:31 1.1.4.98 +@@ -2375,11 +2375,13 @@ static void fetch_content_run(struct etp + + r = fwrite(content, 1, content_size, f); + if (r < content_size) { ++ result->error = MAILIMAP_ERROR_FETCH; + goto fclose; + } + + r = fclose(f); + if (r == EOF) { ++ result->error = MAILIMAP_ERROR_FETCH; + goto unlink; + } + goto free; +@@ -2399,7 +2401,7 @@ static void fetch_content_run(struct etp + free(content); + } + +- debug_print("imap fetch_content run - end %i\n", r); ++ debug_print("imap fetch_content run - end %i\n", result->error); + } + + int imap_threaded_fetch_content(Folder * folder, uint32_t msg_index, diff --git a/104_3.3.1_crasher_possible_null_date.patch b/104_3.3.1_crasher_possible_null_date.patch new file mode 100644 index 0000000..30c3e37 --- /dev/null +++ b/104_3.3.1_crasher_possible_null_date.patch @@ -0,0 +1,20 @@ +Prevent possible crash when trying to parse NULL dates. + +Index: src/procheader.c +=================================================================== +RCS file: /pack/anoncvs/sylpheedclaws/sylpheed-claws/src/procheader.c,v +retrieving revision 1.47.2.46 +retrieving revision 1.47.2.47 +diff -u -p -u -r1.47.2.46 -r1.47.2.47 +--- src/procheader.c 2007/10/15 17:19:38 1.47.2.46 ++++ src/procheader.c 2008/03/19 09:40:46 1.47.2.47 +@@ -772,6 +772,9 @@ static gint procheader_scan_date_string( + gchar zone1[3]; + gchar zone2[3]; + ++ if (str == NULL) ++ return -1; ++ + result = sscanf(str, "%10s %d %9s %d %2d:%2d:%2d %5s", + weekday, day, month, year, hh, mm, ss, zone); + if (result == 8) return 0; diff --git a/105_3.3.1_crasher_ubuntu_bug_204290.patch b/105_3.3.1_crasher_ubuntu_bug_204290.patch new file mode 100644 index 0000000..02277cf --- /dev/null +++ b/105_3.3.1_crasher_ubuntu_bug_204290.patch @@ -0,0 +1,108 @@ +Fix Ubuntu bug 204290, crash on socket close. + +Index: src/imap.c +=================================================================== +RCS file: /pack/anoncvs/sylpheedclaws/sylpheed-claws/src/imap.c,v +retrieving revision 1.179.2.214 +retrieving revision 1.179.2.215 +diff -u -p -u -r1.179.2.214 -r1.179.2.215 +--- src/imap.c 2008/03/18 09:06:33 1.179.2.214 ++++ src/imap.c 2008/03/26 20:12:18 1.179.2.215 +@@ -433,16 +433,6 @@ typedef struct _hashtable_data { + + static FolderClass imap_class; + +-typedef struct _thread_data { +- gchar *server; +- gushort port; +- gboolean done; +- SockInfo *sock; +-#if (defined(USE_OPENSSL) || defined (USE_GNUTLS)) +- SSLType ssl_type; +-#endif +-} thread_data; +- + FolderClass *imap_get_class(void) + { + if (imap_class.idstr == NULL) { +@@ -535,19 +525,18 @@ static void unlock_session(IMAPSession * + } + } + +-static void imap_disc_session_destroy(Folder *folder) ++static void imap_disc_session_destroy(IMAPSession *session) + { +- RemoteFolder *rfolder = REMOTE_FOLDER(folder); +- IMAPSession *session = NULL; ++ RemoteFolder *rfolder = REMOTE_FOLDER(IMAP_SESSION(session)->folder); + + if (!rfolder) + return; +- session = IMAP_SESSION(rfolder->session); + if (!session) + return; + rfolder->session = NULL; + log_warning(LOG_PROTOCOL, _("IMAP4 connection broken\n")); + SESSION(session)->state = SESSION_DISCONNECTED; ++ SESSION(session)->sock = NULL; + session_destroy(SESSION(session)); + } + +@@ -705,7 +694,7 @@ static void imap_handle_error(Session *s + } + + if (session && is_fatal(libetpan_errcode)) { +- imap_disc_session_destroy(IMAP_SESSION(session)->folder); ++ imap_disc_session_destroy(IMAP_SESSION(session)); + } else if (session && !is_fatal(libetpan_errcode)) { + if (IMAP_SESSION(session)->busy) + unlock_session(IMAP_SESSION(session)); +@@ -918,6 +907,7 @@ static IMAPSession *imap_reconnect_if_po + if (rfolder->session == NULL) { + log_warning(LOG_PROTOCOL, _("Connecting to %s failed"), + folder->account->recv_server); ++ SESSION(session)->sock = NULL; + session_destroy(SESSION(session)); + session = NULL; + } else { +@@ -929,6 +919,7 @@ static IMAPSession *imap_reconnect_if_po + " disconnected. Reconnecting...\n"), + folder->account->recv_server); + SESSION(session)->state = SESSION_DISCONNECTED; ++ SESSION(session)->sock = NULL; + session_destroy(SESSION(session)); + /* Clear folders session to make imap_session_get create + a new session, because of rfolder->session == NULL +@@ -986,6 +977,7 @@ static IMAPSession *imap_session_get(Fol + imap_threaded_disconnect(session->folder); + rfolder->session = NULL; + SESSION(session)->state = SESSION_DISCONNECTED; ++ SESSION(session)->sock = NULL; + session_destroy(SESSION(session)); + rfolder->last_failure = time(NULL); + rfolder->connecting = FALSE; +@@ -1136,6 +1128,7 @@ static IMAPSession *imap_session_new(Fol + ok = imap_cmd_starttls(session); + if (ok != MAILIMAP_NO_ERROR) { + log_warning(LOG_PROTOCOL, _("Can't start TLS session.\n")); ++ SESSION(session)->sock = NULL; + session_destroy(SESSION(session)); + return NULL; + } +@@ -1204,8 +1197,6 @@ static void imap_session_destroy(Session + + imap_free_capabilities(IMAP_SESSION(session)); + g_free(IMAP_SESSION(session)->mbox); +- sock_close(session->sock); +- session->sock = NULL; + } + + static gchar *imap_fetch_msg(Folder *folder, FolderItem *item, gint uid) +@@ -5254,6 +5245,7 @@ void imap_disconnect_all(void) + IMAPSession *session = (IMAPSession *)folder->session; + imap_threaded_disconnect(FOLDER(folder)); + SESSION(session)->state = SESSION_DISCONNECTED; ++ SESSION(session)->sock = NULL; + session_destroy(SESSION(session)); + folder->session = NULL; + } diff --git a/106_3.3.1_crasher_ab_crash_on_delete.patch b/106_3.3.1_crasher_ab_crash_on_delete.patch new file mode 100644 index 0000000..6e09a58 --- /dev/null +++ b/106_3.3.1_crasher_ab_crash_on_delete.patch @@ -0,0 +1,197 @@ +Fix crash when deleting a whole adressbook folder. + +Index: src/addressbook.c +=================================================================== +RCS file: /pack/anoncvs/sylpheedclaws/sylpheed-claws/src/addressbook.c,v +retrieving revision 1.60.2.111 +retrieving revision 1.60.2.114 +diff -u -p -u -r1.60.2.111 -r1.60.2.114 +--- src/addressbook.c 2007/12/06 17:09:56 1.60.2.111 ++++ src/addressbook.c 2008/03/27 17:27:48 1.60.2.114 +@@ -1348,6 +1348,11 @@ static void addressbook_edit_clicked(Gtk + addressbook_edit_address_cb(NULL, 0, NULL); + } + ++static gboolean find_person(AddrSelectItem *item_a, ItemPerson *person) ++{ ++ return ((ItemPerson *)item_a->addressItem == person)?0:-1; ++} ++ + /* + * Delete one or more objects from address list. + */ +@@ -1404,9 +1409,14 @@ static void addressbook_del_clicked(GtkB + abf = ds->rawDataSource; + if( abf == NULL ) return; + ++ gtk_clist_freeze(GTK_CLIST(addrbook.clist)); ++ g_signal_handlers_block_by_func ++ (G_OBJECT(addrbook.clist), ++ G_CALLBACK(addressbook_list_row_unselected), NULL); + + /* Process deletions */ + if( pobj->type == ADDR_DATASOURCE || pobj->type == ADDR_ITEM_FOLDER ) { ++ GList *groups = NULL, *persons = NULL, *emails = NULL; + gboolean group_delete = TRUE; + /* Items inside folders */ + list = addrselect_get_list( _addressSelect_ ); +@@ -1426,14 +1436,19 @@ static void addressbook_del_clicked(GtkB + _("Really delete the group(s)?\n" + "The addresses it contains will not be lost."), + GTK_STOCK_CANCEL, "+"GTK_STOCK_DELETE, NULL ); +- if( aval != G_ALERTALTERNATE ) return; ++ if( aval != G_ALERTALTERNATE ) { ++ goto thaw_ret; ++ } + } else { + aval = alertpanel( _("Delete address(es)"), + _("Really delete the address(es)?"), + GTK_STOCK_CANCEL, "+"GTK_STOCK_DELETE, NULL ); +- if( aval != G_ALERTALTERNATE ) return; ++ if( aval != G_ALERTALTERNATE ) { ++ goto thaw_ret; ++ } + } +- ++ ++ /* first, set lists of groups and persons to remove */ + node = list; + while( node ) { + item = node->data; +@@ -1442,9 +1457,41 @@ static void addressbook_del_clicked(GtkB + if (!aio) + continue; + if( aio->type == ADDR_ITEM_GROUP ) { ++ groups = g_list_prepend(groups, item); ++ } ++ else if( aio->type == ADDR_ITEM_PERSON ) { ++ persons = g_list_prepend(persons, item); ++ } ++ } ++ /* then set list of emails to remove *if* they're not children of ++ * persons to remove */ ++ node = list; ++ while( node ) { ++ item = node->data; ++ node = g_list_next( node ); ++ aio = ( AddrItemObject * ) item->addressItem; ++ if (!aio) ++ continue; ++ if( aio->type == ADDR_ITEM_EMAIL ) { ++ ItemEMail *sitem = ( ItemEMail * ) aio; ++ ItemPerson *person = ( ItemPerson * ) ADDRITEM_PARENT(sitem); ++ if (!g_list_find_custom(persons, person, (GCompareFunc)(find_person))) { ++ emails = g_list_prepend(emails, item); ++ } ++ /* else, the email will be removed via the parent person */ ++ } ++ } ++ /* then delete groups */ ++ node = groups; ++ while( node ) { ++ item = node->data; ++ node = g_list_next( node ); ++ aio = ( AddrItemObject * ) item->addressItem; ++ if (!aio) ++ continue; ++ if( aio->type == ADDR_ITEM_GROUP ) { + ItemGroup *item = ( ItemGroup * ) aio; + GtkCTreeNode *nd = NULL; +- + nd = addressbook_find_group_node( addrbook.opened, item ); + item = addrbook_remove_group( abf, item ); + if( item ) { +@@ -1454,7 +1501,16 @@ static void addressbook_del_clicked(GtkB + gtk_ctree_remove_node( ctree, nd ); + refreshList = TRUE; + } +- else if( aio->type == ADDR_ITEM_PERSON ) { ++ } ++ /* then delete persons */ ++ node = persons; ++ while( node ) { ++ item = node->data; ++ node = g_list_next( node ); ++ aio = ( AddrItemObject * ) item->addressItem; ++ if (!aio) ++ continue; ++ if( aio->type == ADDR_ITEM_PERSON ) { + ItemPerson *item = ( ItemPerson * ) aio; + item->status = DELETE_ENTRY; + addressbook_folder_remove_one_person( clist, item ); +@@ -1476,17 +1532,30 @@ static void addressbook_del_clicked(GtkB + addritem_free_item_person( item ); + } + } +- else if( aio->type == ADDR_ITEM_EMAIL ) { +- ItemEMail *item = ( ItemEMail * ) aio; +- ItemPerson *person = ( ItemPerson * ) ADDRITEM_PARENT(item); +- item = addrbook_person_remove_email( abf, person, item ); +- if( item ) { +- addrcache_remove_email(abf->addressCache, item); +- addritem_free_item_email( item ); ++ } ++ /* then delete emails */ ++ node = emails; ++ while( node ) { ++ item = node->data; ++ node = g_list_next( node ); ++ aio = ( AddrItemObject * ) item->addressItem; ++ if (!aio) ++ continue; ++ ++ if( aio->type == ADDR_ITEM_EMAIL ) { ++ ItemEMail *sitem = ( ItemEMail * ) aio; ++ ItemPerson *person = ( ItemPerson * ) ADDRITEM_PARENT(sitem); ++ sitem = addrbook_person_remove_email( abf, person, sitem ); ++ if( sitem ) { ++ addrcache_remove_email(abf->addressCache, sitem); ++ addritem_free_item_email( sitem ); + } + addressbook_folder_refresh_one_person( clist, person ); + } + } ++ g_list_free( groups ); ++ g_list_free( persons ); ++ g_list_free( emails ); + g_list_free( list ); + addressbook_list_select_clear(); + if( refreshList ) { +@@ -1499,7 +1568,7 @@ static void addressbook_del_clicked(GtkB + addrbook_set_dirty(abf, TRUE); + addressbook_export_to_file(); + addressbook_list_menu_setup(); +- return; ++ goto thaw_ret; + } + else if( pobj->type == ADDR_ITEM_GROUP ) { + /* Items inside groups */ +@@ -1529,12 +1598,16 @@ static void addressbook_del_clicked(GtkB + addrbook_set_dirty(abf, TRUE); + addressbook_export_to_file(); + addressbook_list_menu_setup(); +- return; ++ goto thaw_ret; + } + + gtk_ctree_node_set_row_data( clist, nodeList, NULL ); + gtk_ctree_remove_node( clist, nodeList ); +- ++thaw_ret: ++ gtk_clist_thaw(GTK_CLIST(addrbook.clist)); ++ g_signal_handlers_unblock_by_func ++ (G_OBJECT(addrbook.clist), ++ G_CALLBACK(addressbook_list_row_unselected), NULL); + } + + static void addressbook_reg_clicked(GtkButton *button, gpointer data) +@@ -3335,9 +3408,7 @@ static void addressbook_edit_address( gp + static void addressbook_delete_address_cb(gpointer data, guint action, + GtkWidget *widget) + { +- gtk_clist_freeze(GTK_CLIST(addrbook.clist)); + addressbook_del_clicked(NULL, NULL); +- gtk_clist_thaw(GTK_CLIST(addrbook.clist)); + } + + static void close_cb(gpointer data, guint action, GtkWidget *widget) diff --git a/107_3.3.1_crasher_redhat_bug_431735.patch b/107_3.3.1_crasher_redhat_bug_431735.patch new file mode 100644 index 0000000..8df4dc5 --- /dev/null +++ b/107_3.3.1_crasher_redhat_bug_431735.patch @@ -0,0 +1,60 @@ +Fix Redhat bug 431735, Crash when starting with /home full. + +Index: src/common/prefs.c +=================================================================== +RCS file: /pack/anoncvs/sylpheedclaws/sylpheed-claws/src/common/prefs.c,v +retrieving revision 1.5.2.10 +retrieving revision 1.5.2.11 +diff -u -p -u -r1.5.2.10 -r1.5.2.11 +--- src/common/prefs.c 2007/10/15 17:19:54 1.5.2.10 ++++ src/common/prefs.c 2008/03/27 20:12:38 1.5.2.11 +@@ -143,7 +143,6 @@ gint prefs_file_close(PrefFile *pfile) + if (buf[0] == '[') { + if (fputs(buf, fp) == EOF) { + g_warning("failed to write configuration to file\n"); +- fclose(orig_fp); + prefs_file_close_revert(pfile); + + return -1; +@@ -155,7 +154,6 @@ gint prefs_file_close(PrefFile *pfile) + while (fgets(buf, sizeof(buf), orig_fp) != NULL) + if (fputs(buf, fp) == EOF) { + g_warning("failed to write configuration to file\n"); +- fclose(orig_fp); + prefs_file_close_revert(pfile); + + return -1; +@@ -301,7 +299,6 @@ gint prefs_set_block_label(PrefFile *pfi + } else { + if (fputs(buf, pfile->fp) == EOF) { + g_warning("failed to write configuration to file\n"); +- fclose(pfile->orig_fp); + prefs_file_close_revert(pfile); + g_free(block_label); + +@@ -318,7 +315,6 @@ gint prefs_set_block_label(PrefFile *pfi + if (fputs(block_label, pfile->fp) == EOF || + fputc('\n', pfile->fp) == EOF) { + g_warning("failed to write configuration to file\n"); +- fclose(pfile->orig_fp); + prefs_file_close_revert(pfile); + g_free(block_label); + +Index: src/common/xmlprops.c +=================================================================== +RCS file: /pack/anoncvs/sylpheedclaws/sylpheed-claws/src/common/xmlprops.c,v +retrieving revision 1.1.4.8 +retrieving revision 1.1.4.9 +diff -u -p -u -r1.1.4.8 -r1.1.4.9 +--- src/common/xmlprops.c 2007/10/14 18:07:48 1.1.4.8 ++++ src/common/xmlprops.c 2008/03/27 20:12:38 1.1.4.9 +@@ -215,7 +215,8 @@ static gint xmlprops_write_to( XmlProper + + props->retVal = MGU_SUCCESS; + if( prefs_file_close( pfile ) < 0 ) { +- goto revert; ++ props->retVal = MGU_ERROR_WRITE; ++ goto out; + } + goto out; + revert: diff --git a/201_3.3.1_annoyance_fix_taskbar_blink.patch b/201_3.3.1_annoyance_fix_taskbar_blink.patch new file mode 100644 index 0000000..8cbdeb4 --- /dev/null +++ b/201_3.3.1_annoyance_fix_taskbar_blink.patch @@ -0,0 +1,34 @@ +Fix windows handling on startup, so that the Claws Mail taskbar entry doesn't +blink. + +Index: src/mainwindow.c +=================================================================== +RCS file: /pack/anoncvs/sylpheedclaws/sylpheed-claws/src/mainwindow.c,v +retrieving revision 1.274.2.235 +retrieving revision 1.274.2.236 +diff -u -p -u -r1.274.2.235 -r1.274.2.236 +--- src/mainwindow.c 2008/03/07 20:05:05 1.274.2.235 ++++ src/mainwindow.c 2008/03/07 22:33:54 1.274.2.236 +@@ -3132,14 +3132,20 @@ static void mailing_list_compose (GtkWid + + void main_window_popup(MainWindow *mainwin) + { ++ static gboolean first_start = TRUE; ++ + if (!GTK_WIDGET_VISIBLE(GTK_WIDGET(mainwin->window))) + main_window_show(mainwin); + + if (prefs_common.mainwin_maximised) + gtk_window_maximize(GTK_WINDOW(mainwin->window)); +- +- gtkut_window_popup(mainwin->window); + ++ if (first_start) { ++ gtk_window_deiconify(GTK_WINDOW(mainwin->window)); ++ first_start = FALSE; ++ } else { ++ gtkut_window_popup(mainwin->window); ++ } + if (prefs_common.layout_mode == SMALL_LAYOUT) { + if (mainwin->in_folder) { + mainwindow_enter_folder(mainwin); diff --git a/202_3.3.1_annoyance_ubuntu_bug_189569.patch b/202_3.3.1_annoyance_ubuntu_bug_189569.patch new file mode 100644 index 0000000..911f78b --- /dev/null +++ b/202_3.3.1_annoyance_ubuntu_bug_189569.patch @@ -0,0 +1,36 @@ +Fix Ubuntu bug 189569, unscrollable folder list when starting minimized to tray. +Index: src/plugins/trayicon/trayicon.c +=================================================================== +RCS file: /pack/anoncvs/sylpheedclaws/sylpheed-claws/src/plugins/trayicon/trayicon.c,v +retrieving revision 1.14.2.61 +retrieving revision 1.14.2.62 +diff -u -p -u -r1.14.2.61 -r1.14.2.62 +--- src/plugins/trayicon/trayicon.c 2008/03/12 06:22:29 1.14.2.61 ++++ src/plugins/trayicon/trayicon.c 2008/03/12 17:21:03 1.14.2.62 +@@ -276,6 +276,18 @@ static void resize_cb(GtkWidget *widget, + update(NULL); + } + ++static void fix_folderview_scroll(MainWindow *mainwin) ++{ ++ static gboolean fix_done = FALSE; ++ ++ if (fix_done) ++ return; ++ ++ gtk_widget_queue_resize(mainwin->folderview->ctree); ++ ++ fix_done = TRUE; ++} ++ + static gboolean click_cb(GtkWidget * widget, + GdkEventButton * event, gpointer user_data) + { +@@ -304,6 +316,7 @@ static gboolean click_cb(GtkWidget * wid + gtk_window_set_skip_taskbar_hint(GTK_WINDOW(mainwin->window), FALSE); + main_window_show(mainwin); + gtk_window_present(GTK_WINDOW(mainwin->window)); ++ fix_folderview_scroll(mainwin); + } + break; + case 3: diff --git a/203_3.3.1_annoyance_reedit_filter_redirect.patch b/203_3.3.1_annoyance_reedit_filter_redirect.patch new file mode 100644 index 0000000..e0b475e --- /dev/null +++ b/203_3.3.1_annoyance_reedit_filter_redirect.patch @@ -0,0 +1,33 @@ +Fill in destination correctly when re-editing a re-send filtering rule. + +Index: src/prefs_filtering_action.c +=================================================================== +RCS file: /pack/anoncvs/sylpheedclaws/sylpheed-claws/src/prefs_filtering_action.c,v +retrieving revision 1.1.4.49 +retrieving revision 1.1.4.50 +diff -u -p -u -r1.1.4.49 -r1.1.4.50 +--- src/prefs_filtering_action.c 2008/02/12 10:43:52 1.1.4.49 ++++ src/prefs_filtering_action.c 2008/03/14 07:40:04 1.1.4.50 +@@ -1488,11 +1488,6 @@ static gboolean prefs_filtering_actions_ + action = action_list->data; + g_slist_free(action_list); + +- if (action->destination) +- gtk_entry_set_text(GTK_ENTRY(filtering_action.dest_entry), action->destination); +- else +- gtk_entry_set_text(GTK_ENTRY(filtering_action.dest_entry), ""); +- + switch(action->type) { + case MATCHACTION_MOVE: + combobox_select_by_data(GTK_COMBO_BOX(filtering_action.action_combo), +@@ -1605,6 +1600,10 @@ static gboolean prefs_filtering_actions_ + combobox_select_by_data(GTK_COMBO_BOX(filtering_action.action_combo), + ACTION_ADD_TO_ADDRESSBOOK); + } ++ if (action->destination) ++ gtk_entry_set_text(GTK_ENTRY(filtering_action.dest_entry), action->destination); ++ else ++ gtk_entry_set_text(GTK_ENTRY(filtering_action.dest_entry), ""); + + filteringaction_free(action); /* XXX: memleak */ + return TRUE; diff --git a/204_3.3.1_annoyance_remove_raw_printf.patch b/204_3.3.1_annoyance_remove_raw_printf.patch new file mode 100644 index 0000000..2ca8eaa --- /dev/null +++ b/204_3.3.1_annoyance_remove_raw_printf.patch @@ -0,0 +1,18 @@ +Remove a raw printf from IMAP fetch code. + +Index: src/imap.c +=================================================================== +RCS file: /pack/anoncvs/sylpheedclaws/sylpheed-claws/src/imap.c,v +retrieving revision 1.179.2.213 +retrieving revision 1.179.2.214 +diff -u -p -u -r1.179.2.213 -r1.179.2.214 +--- src/imap.c 2008/02/28 16:56:28 1.179.2.213 ++++ src/imap.c 2008/03/18 09:06:33 1.179.2.214 +@@ -2894,7 +2894,6 @@ static void *imap_get_uncached_messages_ + gchar *real_tag = imap_modified_utf7_to_utf8(cur->data, TRUE); + gint id = 0; + id = tags_get_id_for_str(real_tag); +- printf("tag %s %d\n", real_tag, id); + if (id == -1) { + id = tags_add_tag(real_tag); + got_alien_tags = TRUE; diff --git a/205_3.3.1_annoyance_strstrip_mime_type.patch b/205_3.3.1_annoyance_strstrip_mime_type.patch new file mode 100644 index 0000000..5faa0b9 --- /dev/null +++ b/205_3.3.1_annoyance_strstrip_mime_type.patch @@ -0,0 +1,20 @@ +Strip MIME subtype to workaround some sender MUAs bugs. Fixes html display +from Seamonkey. + +Index: src/procmime.c +=================================================================== +RCS file: /pack/anoncvs/sylpheedclaws/sylpheed-claws/src/procmime.c,v +retrieving revision 1.49.2.107 +retrieving revision 1.49.2.108 +diff -u -p -u -r1.49.2.107 -r1.49.2.108 +--- src/procmime.c 2008/01/23 17:26:22 1.49.2.107 ++++ src/procmime.c 2008/03/21 12:24:27 1.49.2.108 +@@ -1767,7 +1767,7 @@ static void procmime_parse_content_type( + } + + mimeinfo->type = procmime_get_media_type(type); +- mimeinfo->subtype = g_strdup(subtype); ++ mimeinfo->subtype = g_strstrip(g_strdup(subtype)); + + /* Get mimeinfo->typeparameters */ + if (params != NULL) diff --git a/206_3.3.1_annoyance_bug_1555.patch b/206_3.3.1_annoyance_bug_1555.patch new file mode 100644 index 0000000..7103e50 --- /dev/null +++ b/206_3.3.1_annoyance_bug_1555.patch @@ -0,0 +1,24 @@ +Use folder-set account if specified when using right-click->Compose Email +on an email address. + +Index: src/textview.c +=================================================================== +RCS file: /pack/anoncvs/sylpheedclaws/sylpheed-claws/src/textview.c,v +retrieving revision 1.96.2.198 +retrieving revision 1.96.2.199 +diff -u -p -u -r1.96.2.198 -r1.96.2.199 +--- src/textview.c 2008/03/20 17:44:48 1.96.2.198 ++++ src/textview.c 2008/03/26 07:33:18 1.96.2.199 +@@ -3024,8 +3024,11 @@ static void mail_to_uri_cb (TextView *te + folder_item = textview->messageview->msginfo->folder; + if (folder_item->prefs && folder_item->prefs->enable_default_account) + account = account_find_from_id(folder_item->prefs->default_account); ++ ++ compose_new_with_folderitem(account, folder_item, uri->uri+7); ++ } else { ++ compose_new(account, uri->uri + 7, NULL); + } +- compose_new(account, uri->uri + 7, NULL); + } + + static void copy_mail_to_uri_cb (TextView *textview, guint action, void *data) diff --git a/claws-mail.spec b/claws-mail.spec index a622ffc..3b8965d 100644 --- a/claws-mail.spec +++ b/claws-mail.spec @@ -1,12 +1,29 @@ Name: claws-mail Version: 3.3.1 -Release: 3%{?dist} +Release: 4%{?dist} Summary: The extended version of Sylpheed Group: Applications/Internet License: GPLv3+ URL: http://claws-mail.org Source0: http://dl.sf.net/sylpheed-claws/claws-mail-3.3.1.tar.bz2 Source1: claws-mail.desktop + +# patches which will be in 3.3.2 (see #439382) +Patch101: 101_3.3.1_crasher_bug_1534.patch +Patch102: 102_3.3.1_bug_1533.patch +Patch103: 103_3.3.1_crasher_bug_1515.patch +Patch104: 104_3.3.1_crasher_possible_null_date.patch +Patch105: 105_3.3.1_crasher_ubuntu_bug_204290.patch +Patch106: 106_3.3.1_crasher_ab_crash_on_delete.patch +Patch107: 107_3.3.1_crasher_redhat_bug_431735.patch +Patch201: 201_3.3.1_annoyance_fix_taskbar_blink.patch +Patch202: 202_3.3.1_annoyance_ubuntu_bug_189569.patch +Patch203: 203_3.3.1_annoyance_reedit_filter_redirect.patch +Patch204: 204_3.3.1_annoyance_remove_raw_printf.patch +Patch205: 205_3.3.1_annoyance_strstrip_mime_type.patch +Patch206: 206_3.3.1_annoyance_bug_1555.patch + + BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root BuildRequires: flex, bison BuildRequires: glib2-devel >= 2.6.2 @@ -97,6 +114,19 @@ Provides: sylpheed-claws-plugins-bogofilter = %{version}-%{release} %prep %setup -q +%patch101 +%patch102 +%patch103 +%patch104 +%patch105 +%patch106 +%patch107 +%patch201 +%patch202 +%patch203 +%patch204 +%patch205 +%patch206 %build %configure --enable-openssl --enable-ipv6 \ @@ -199,6 +229,11 @@ touch -r NEWS ${RPM_BUILD_ROOT}%{_includedir}/%{name}/config.h %{_libdir}/claws-mail/plugins/bogofilter.so %changelog +* Fri Mar 28 2008 Andreas Bierfert +- 3.3.1-4 +- apply some upstream patches (#439382) +- fix #431735 + * Tue Mar 11 2008 Andreas Bierfert - 3.3.1-3 - add obsoletes for deprecated clamav plugin