2002-04-18 Christophe Lambin Pan 0.11.3 Released! 2002-04-15 Charles Kerr (Bug Fixes) * pan/base/gnksa.c (gnksa_check_domain): replace buggy strlen() call with the run's length we got from get_next_token_run(). (Tweaks) * pan/base/pan-glib-extensions.c (commatize_ulong): remove unnecessary strlen(). * pan/base/util-mime.c (yenc_is_beginning_line): same. * pan/base/util-mime.c (yenc_is_part_line): same. * pan/base/util-mime.c (yenc_is_ending_line): same. 2002-04-13 Charles Kerr (Bug Fixes) * pan/dialogs/dialog-log-viewer.c (log_viewer_add_entry): fix double-gui-lock bug. There's probably a more elegant way to fix this, but this does the job in a string freeze. (77909) 2002-04-11 Charles Kerr (Bug Fixes) * pan/gui.c (gui_set_page): Fixed 0.11.1 branefaht that moved widget focus to the thread pane, rather than the text pane, whenever a message was read via the 'N' key. Thanks to Florian Schmidt for reporting this bug. 2002-04-10 Charles Kerr (Bug Fixes) * pan/base/gnksa.c (gnksa_check_message_id): Fixed bug that was too strict on what Message-IDs to retain in a References: header when posting a follow-up. Thanks to Colin Leroy and Jim Henderson for reporting this bug. * pan/base/util-mime.c (pan_g_mime_parser_construct_message): fix crash that occurred when trying to read empty/corrupt messages. Thanks to Jorge Salinas for reporting this bug. (78287) (UI Tweaks) * pan/save-ui.c (create_save_attachement_as_dialog): Say `Task Manager' instead of `Queue' for consistency with the Pan menus & buttons. 2002-04-08 Christophe Lambin (Bug Fixes) * pan/rules/rule-edit-ui.c (create_filter_tab): let the 'Filter Text' widget in the Edit Rule's Filter pane have a scrollbar if required. Thanks to Himanshu J. Gohel for reporting this. (62909) 2002-04-07 Jeffrey Stedfast * gmime/gmime-utils.c (g_mime_utils_uuencode_close): Fixed a bug that crept in during my simplification. 2002-04-07 Charles Kerr (Bug Fixes) * pan/base/newsrc.c (mark_range_unread): fixed bug that could cause unread articles to be marked as read. Thanks to Jiri Kubicek for tracking this down and submitting a patch. (77878) 2002-04-06 Christophe Lambin (Bug Fixes) * pan/save-ui.c (create_save_attachment_as_dialog): fixed the 'Save Articles As' dialog's title to align with the menu structure. Thanks to Haines Brown for reporting this. (Packaging) * pan.spec.in: fixed build procedure for gettext 0.11. 2002-04-05 Christophe Lambin (Bug Fixes) * pan/queue.c (socket_cleanup): do a full disconnect when throwing away a connection. This helps ensure the connection is fully closed at the newsserver's end. Thanks to Sven Neuhaus for reporting this. (73179) * pan/sockets.c (pan_socket_flush): new function to flush a closing socket. This ensures any remaining data (like TCP closing packets) are read between sending the NNTP command (which makes the server close the socket) and us closing our end of the socket. This prevents the socket going into TIME_WAIT state (or worse, FIN_WAIT2). Thanks again to Sven Neuhaus for reporting this. (73179) * pan/nntp.c (nntp_disconnect): sync. (Code Cleanup) * pan/sockets.c (pan_socket_constructor): remove SO_KEEPALIVE, since there's no point in setting this. 2002-04-04 Charles Kerr (Bug Fixes) * tests/data/cache/Makefile.am: a missing file caused "make check" to fail. Thanks to Jean Ribiere for reporting this bug. 2002-04-03 Charles Kerr (Bug Fixes) * pan/identities/identity-edit-ui.c (identity_edit_dialog_get_identity): fix crash that occurred when an incomplete identity was filled out. Thanks to Jef E. for reporting this bug. (77582) * pan/base/gnksa.c (generate_message_id): use gmtime_r, rather than localtime_r, to generate the timestamp for making a unique message-id: when daylight time ends, a date shows up twice in localtime_r. Thanks to Mirko Liss for suggesting this. (77528) 2002-04-03 Christophe Lambin (Bug Fixes) * pan/base/server.c (server_constructor): increased the default maximum number of connections for new servers to two, since we also default to reserving one connection for reading messages. Thanks to William Peterson for reporting this. (76867) 2002-03-29 Christophe Lambin (Tweaks) * pan/message-check-ui.c: more calls to server_is_valid(). * pan/message-send.c: same. * pan/server-ui.c: same. * pan/task-body.c: same. * pan/task-headers.c: same. * pan/base/decode.c: same. * pan/base/file-grouplist.c: same. * pan/base/file-headers.c: same. * pan/base/message-check.c: same. * pan/base/newsrc-port.c: same. * pan/base/server.c: same. * pan/base/serverlist.c: same. 2002-03-29 Christophe Lambin Pan 0.11.2.91 Released! 2002-03-27 Charles Kerr (Bug Fix) * pan/base/util-mime.c (separate_encoded_parts): fix bug that caused a pointer to shoot off into unallocated space when decoding yEnc messages. Thanks to Bill Cattell for reporting this bug. (74946) 2002-03-27 Christophe Lambin (Tweaks) * pan/base/server.[ch]: added server_is_valid() and server_get_name(). These will hopefully smoke out a potential memory corruption problem. (70052). * pan/base/file-grouplist.c: sync. * pan/base/file-headers.c: sync. * pan/base/group.c: sync. * pan/base/newsrc-port.c: sync. * pan/base/serverlist.c: sync. * pan/gui.c: sync. * pan/prefs.c: sync. * pan/server-ui.c: sync. * pan/task-grouplist.c: sync. 2002-03-25 Charles Kerr (Bug Fix) * pan/base/util-mime.c (separate_encoded_parts): make sure that if a yenc message ends without a "=yend", or a uu message ends without and "end", that we reflag the block as text rather than yenc or uu. Looks like some M$ bashers are starting their posts with "begin 666" to tickle a similar bug in OE. Thanks to Jason Rumney and mr_p for (indirectly) reporting this bug. (76358) 2002-03-24 Charles Kerr (Small Usability Fix) * pan/message-window.c: make sure that the default window size is large enough that a full line, up to the default number of wrap characters and with the default font, will fit without scrolling. Thanks to John Mellor for suggesting this change. (76062) (Prevous Read Article) * pan/articlelist.c: * pan/gui.c: committing slightly-modified version of Colin Leroy's patch to go back to the previous read article. Thanks to Colin Leroy (of course) for submitting this patch. (75716) 2002-03-23 Charles Kerr (Tweak) * pan/base/gnksa.c (is_tag_char): is now a lookup table for speed. * pan/base/gnksa.c (is_quoted_char): same. * pan/base/gnksa.c (is_unquoted_char): same. * pan/base/gnksa.c (is_code_char): same. * pan/base/gnksa.c (is_paren_char): same. 2002-03-23 Christophe Lambin (Bug Fixes) * pan/base/decode.c (decode_article): don't try to decode if all the necessary info is not available. This fixes a segfault when decoding a multi-part yEnc-encoded file that misses the first part. * pan/base/nntp.c (nntp_download_headers): small cosmetic fix, calculating the number of articles that will be retrieved from the server. (75527) 2002-03-23 Charles Kerr * pan/prefs.c: * pan/text.c: * pan/base/base-prefs.[ch]: * pan/base/util-wrap.c: applied Colin Leroy's quote char patch so nonconformists not using '>' to quote text will still have their articles colored right in Pan. :) Thanks to Colin Leroy for contributing this code. (68159, 75916) 2002-03-22 Charles Kerr * pan/message-window.c (create_reply_body): insert a blank line at the end of a reply so that the last character in the buffer is in the default fg color instead of the quoted-text color. Before when you started to type a reply, it would be in the quoted-text color. Thanks to Michael McIntyre for reporting this bug. (75993) 2002-03-21 Charles Kerr * tests/test-decode.c: added a regression test for x-uuencode. * pan/base/util-mime.c: changes to sync with new gmime snapshot. * gmime: did a selective upgrading of the gmime snapshot to add support for articles with Content-Transfer-Encoding: x-uuencode. Thanks to Sam Solon and Jeff Stedfast for this code. (74798) 2002-03-19 Christophe Lambin (Bug Fixes) * pan/queue.c (queue_get_socket_for_task): fixed crash that happens when Pan can't connect to the newsserver. Thanks to Aurelien Gouny for reporting this bug. (70858) 2002-03-18 Christophe Lambin (Tweaks) * pan/prefs.[ch]: new preference option, dictating whether failed tasks should be kept in the Task Manager. Thanks to Aric Campling for suggesting this. (75186) * pan/queue.c: sync. 2002-03-15 Christophe Lambin Pan 0.11.2.90 Released! 2002-03-14 Charles Kerr * Merged in Gabi and Jeff's yenc code to add yenc decoding support. (71330, 70368) 2002-03-11 Christophe Lambin (Bug Fixes) * pan/message-window.c (remove_custom_headers): fixed memory leak. * pan/message-window.c (add_custom_headers): same. * pan/message-window.c (message_window_get_reverse_path): same. * pan/identities/identity.c (identity_destructor): same. 2002-03-10 Christophe Lambin (Bug Fixes) * pan/smtp.c (smtp_handshake): fixed a crash when posting from a system that doesn't have a resolvable hostname. Thanks to T'aZ for reporting this problem. (74129) 2002-03-09 Christophe Lambin (Tweaks) * pan/dialogs/dialog-headers.c (download_headers_clicked_cb): the 'Download Articles' dialog now switched the articlelist to the group when the headers have been downloaded. Since this dialog is mostly used to sample a (potentially large) group, this seems the more intuitive approach. Thanks to Himanshu J. Gohel for suggesting this. (66510) * pan/base/group.c (group_remove_articles): removed debugging info. 2002-03-08 Christophe Lambin (Bug Fixes) * pan/article-actions (find_matching_sent_article): trying to cancel an unread article failed, as some information hadn't been downloaded from the server yet. Thanks to Kerstin Rohlfs for leading me to this bug. (64287) 2002-03-08 Charles Kerr (Bug Fixes) * pan/message-check-ui.[ch] (check_article_and_prompt): rewrite to avoid the use of gnome_dialog_run_and_close(). This fixes some potential threading issues (or does this potentially fix ... :-)) (71440). * pan/message-send.[ch]: sync * pan/message-window.c: sync 2002-03-03 Christophe Lambin (Bug Fixes) * pan/base/group.c (group_mark_all_read): ref the articles before marking as read. This fixes a 'group->_articles == NULL' assertion failure when marking as read a group that hadn't been loaded yet. * pan/queue.c (real_queue_set_paused): wake up the queue when it gets unpaused. 2002-03-02 Christophe Lambin (Bug Fixes) * pan/prefs.c: fixes signal handling for several spinboxes so that changing the value directly always activates the OK button. (73180) 2002-02-28 Christophe Lambin (Bug Fixes) * pan/article-thread.c (compare_pA_to_pA_by_part): new threading function for multi-parts. This takes care of the case where the part numbers aren't zero-padded (e.g. 1/10, i.s.o 01/10). Previously, this caused Pan to see those as incomplete binaries. (71647) 2002-02-27 Christophe Lambin (Bug Fixes) * pan/message-window.c (populate_post_info_pane): send replies via email if the author specified an email address in the Followup-To header. (72608) 2002-02-26 Christophe Lambin (Bug Fixes) * pan/base/group.c (group_empty): reset the counters when emptying the group. This ensures the grouplist counters are updated even when the group isn't loaded. (71645) * pan/prefs.c (edit_profile_dialog): when editing an exiting server profile, make the profile name non-editable. (72432) * pan/queue.c (queue_run_thread): if a task failed hopelessly, remove it from the queue, since there's no point in keeping it around. (71992) (UI Tweaks) * pan/article-actions.c (article_cancel_run): added a log entry & popup window to show the user what's going on. (64287) 2002-02-23 Christophe Lambin (UI Tweaks) * pan/article-find.c: added Message-ID to the search criteria to align with the articlelist's phrase filter. Thanks to Pascal Valois for suggesting this. (68332) (Bug Fixes) * pan/message-window.c (create_body_pane_nolock): prevent Ctrl-Space from activating the GtkText widget. This avoids Ctrl-Space from sending half-finished posts. (71352) 2002-02-10 Christophe Lambin (Bug Fixes) * pan/identities/identity-edit-ui.c (identity_edit_dialog_get_identity): If a profile's real name contains double quotes, convert them into single quotes and warn the user. Thanks to Martin Bruchanov for reporting this. (68770) * pan/identities/identity.c (identity_set_author_real): same. * pan/identities/identity-xml.c (create_identity): sync. 2002-02-07 Charles Kerr Pan 0.11.2 Released! 2002-02-06 Charles Kerr (Bug Fixes) * pan/text.c (set_text_from_article_nolock): fix bug that caused "show all headers" to not display mime headers. 2002-02-05 Charles Kerr (Bug Fixes) * pan/articlelist.c (set_group_mainthread_end): fixed small 0.11.1 memory leak. This doesn't break the string freeze. (Tweaks) * pan/gui.c: small speedup. Doesn't break string freeze. * pan/base/serverlist.c: ditto. * pan/base/server.c: use a GMime MemChunk instead of a GMemChunk for creating Group objects. 2002-02-03 Charles Kerr (Bug Fixes) * pan/base/group.c: broke the string freeze after only a few hours with this showstopper bugfix. Sorry about that; no further changes planned. (70457) 2002-02-03 Charles Kerr (Bug Fixes) * pan/message-window.c: call strsplit_command_line_arguments() instead of g_strsplit() to ensure that quoted arguments are grouped together properly. This fixes a problem with the external editor not working properly. * pan/base/pan-glib-extensions: added strsplit_command_line_arguments. (UI Tweaks) * pan/prefs.c: updated the list of external web browsers and external editors. 2002-02-01 Christophe Lambin Pan 0.11.1.94 Released! 2002-01-31 Christophe Lambin (Build Fixes) * pan/articlelist.c (articlelist_read_selected): build fix for yesterday's commit. * pan/gui.c (gui_page_activate_nolock): same. 2002-01-30 Charles Kerr (Bug Fixes) * pan/text.c (text_realize_cb): don't show the welcome message if an article has already been downloaded. This keeps the welcome message from popping up over the first article for users who live in zoom mode. Thanks to Stefan Van Theemsche and Douglas Bollinger for reporting this bug. * pan/gui.c (gui_queue_add): created a FIFO queue for processing async gui updates in the main thread. Unlike run_in_main_thread(), which is replaced by this function, gui_queue_add() doesn't require a gdk lock. Thanks to Gabi Davar for reporting the bug that led to this function being written. * pan/util.c (run_in_main_thread_nolock): removed obsolete function. * pan/grouplist.c: * pan/articlelist.c: * pan/status-item-view.c: * pan/text.c: sync. * pan/text.c: listen for group_emptied signals so that the text pane can call set_article(NULL) if the group that the curent article belongs to is cleared. Thanks to Jean Ribiere for reporting this bug. 2002-01-29 Charles Kerr (Bug Fixes) * pan/base/util-file.c: Pan now handles '~' characters in the TMPDIR variable when creating temporary files. Thanks to Jukka Salmi for suggesting this change. * pan/message-window.c: same. 2002-01-28 Charles Kerr (Bug Fixes) * pan/articlelist.c (group_articles_removed_cb): fixed 0.10.0.93 bug that caused the GUI to sometimes lock up when pulling down new headers. 2002-01-28 Christophe Lambin Pan 0.11.1.93 Released! 2002-01-27 Charles Kerr (UI Tweak) * pan/articlelist.c: leave the "delete all" button enabled even if no articles are selected. * pan/gui.c: same. 2002-01-24 Charles Kerr (Bug Fixes) * pan/articlelist.c (articlelist_articles_removed_cb): defer the "group == my_group" check to the mainthread function. This is to settle contention with anything in the mainthread which could be changing the value of my_group. 2002-01-23 Charles Kerr (Bug Fixes) * pan/text.c: make sure an article is marked as read when it's read. Previously this was done in task-body, which is no longer called when the article is already cached. Thanks to Tõivo Leedjärv and Adrian von Bidder for reporting this bug. * pan/task-body.c: don't mark the article as read here; it's now done in pan/text.c as described above. 2002-01-22 Charles Kerr (Bug Fixes) * pan/queue.c (queue_run_thread): if a task fails, delete the socket connected with it, instead of reusing it, because the readbuf on that socket could be in a corrupted state. This should fix some of the corrupted connection bugs reported recently (but is hard to test :( * pan/util.c (pan_lock_from): A handful of functions called from _idle funcs had been calling pan_lock() instead of pan_lock_unconditional(), so they were making gtk+ updates without a gtk+ lock. Having the caller track which function to call is too error-prone, so pan_lock()'s been changed to handle all callers properly. 2002-01-21 Charles Kerr (Bug Fixes) * pan/articlelist.c (articlelist_selection_changed_cb): added call to article_is_valid(). The previous sanity check would crash if the article was invalid. See next bug. * pan/articlelist.c (articlelist_select_row_cb): add a group_ref_articles() before delegating to the main thread. Matching unref added to articlelist_select_row_idle. This fixes the "why was the article invalid in the first place" of the bug mentioned above. (UI Tweaks) * pan/filter-edit-ui.c (filter_edit_dialog_new): more gui work based on user feedback. 2002-01-21 Christophe Lambin (Housekeeping) * configure.in: Bump version number to 0.11.1.92 to sync w/ tarball. (Bug Fixes) * pan/base/util-wrap.c (fill_body): silence an assertion failure when an article doesn't contain any text (other than the sig). 2002-01-20 Charles Kerr (GConf / gnome_config?) * pan/base/pan-config: new module that is currently just a thin wrapper around gnome_config. This will get #ifdeffed in the future to add some basic functionality for a Windows build of Pan. 2002-01-20 Christophe Lambin Pan 0.11.1.92 Released! 2002-01-20 Christophe Lambin (UI Tweaks) * pan/filter-edit-ui.c (filter_edit_dialog_new): new layout to fit the 'Edit Filter' dialog in 800x600. (Bug Fixes) * pan/gui-headers.c (get_and_add_header_nolock): make sure to decode 8bit-encoded headers before displaying them. 2002-01-19 Charles Kerr (Bug Fix) * pan/sockets.c (pan_socket_constructor): point SIGPIPE to SIG_IGN when each socket is constructed. Calling just once at the start of the program reportedly doesn't stick in a pthreaded application. Thanks to Alen Williams for reporting this bug. 2002-01-18 Charles Kerr (Bug Fixes) * pan/group.c: added _deleted_articles field. When an article is removed from a group, it's added to this list so that we can be sure to call the article_destructor when the group's article refcount goes to zero. This fixes a fairly big memory leak. * pan/group.c (group_add_articles_remove_unused_impl): call the article destructor for each article that we're not keeping. This fixes a related memory leak. (Tweaks) * pan/base/util-wrap.c (rot13): rot13 inplace, instead of allocating a new string, to avoid an unnecessary malloc/free. * pan/base/gnksa.c: * pan/base/util-file.c: * pan/base/file-grouplist.c: * pan/articlelist.c: use a local buffer and g_snprintf for strings that we know will be small. This is more anal-useless avoidance of malloc/free calls. * pan/base/article.c (articles_remove_flag): * pan/base/article.c (articles_add_flag): check to see which articles already had the flag so that fire_articles_changed() will only fire the articles that actually changes. * pan/base/article.c (article_has_body): small speed tweak. 2002-01-17 Charles Kerr (Bug Fixes) * pan/nntp.c (nntp_article_download_to_gstr): fix 0.11.1.91 bug that caused the zero termination to not get saved at the end of the acache file. 2002-01-17 Christophe Lambin (UI Tweaks) * pan/articlelist.c: added 'read selected article' back to the thread list's popup menu. 2002-01-17 Charles Kerr (Bug Fixes) * pan/nntp.c (nntp_download_headers): fixed stupid bug that caused the crosspost header to not be saved. * pan/base/util-file.c (read_file): ensure that the file string is zero-terminated. This fixes a bug that caused Pan to crash when decoding files. Thanks to Alen Williams for reporting this bug. * pan/base/group.c (group_mark_all_read): delgate the mark-read code out to articles_mark_read(). This fixes a bug that caused the "Mark Group as Read" menu button to not also mark crossposts as read. As a side-effect of this change, the "group marked read" callback is no longer needed. (Housekeeping) * pan/articlelist.c (articlelist_group_marked_read_cb): * pan/base/group.c (group_get_group_marked_read_callback): * pan/base/group.c (fire_group_marked_read): removed unused function. (Attachments) * pan/message-window.c: more love to the attachments tab. It now shows what the estimated file size will be for base64, uuenc, and yenc. 2002-01-15 Charles Kerr (Attachments) * pan/message-window.c: Posting Attachments, part one: this is how I'd like the attachments tab to look and behave. It's all #ifdeffed out for now so as not to spoil 0.11.2. Uncomment ATTACHMENTS on line 60 to try it out. 2002-01-15 Charles Kerr (Bug Fixes) * pan/articlelist.c (map_articlelist_cb): fixed 0.11.1.91 gui double lock bug. Thanks to Douglas Bollinger for reporting this bug. (Tweaks) * pan/base/group.c (group_isolate_article): remove unused function. This used to be a poor-man's resync'ing for when articles were removed from a group. However now that we call thread_articles() each time articles are removed, this is no longer necessary. 2002-01-15 Christophe Lambin (Bug Fixes) * pan/prefs.c: removed the 'max. connections' from the 'Edit Server' dialog, since it's also available in the Online Settings' pane (which has a nicer UI :)). This fixes some inconsistent behaviour. Thanks to Joseph Turian for reporting this. (Code Cleanup) * pan/prefs.[ch]: extra_posting_headers is obsolete. * pan/message-window.c (populate_post_info_pane): same. 2002-01-15 Charles Kerr (Bug Fix: grouplists being saved on load) * pan/base/file-grouplist.c: call server_init_groups() instead of server_add_groups(). * pan/base/server.c (server_init_groups): new function like server_add_groups() that doesn't set the grouplist dirty flag. * pan/base/server.c (server_add_groups_impl): new function that now has most of the code that used to be in server_add_groups(). server_add_groups() and server_init_groups() wrap around this. (Expand Threads by Default) * pan/prefs.h: * pan/prefs.c: * pan/articlelist.c: applied Bas Mevissen's patch to add this feature. (Tweaks) * pan/save-ui.c (save_attachment_as_dialog_clicked_cb): if the user specified a ~ in the save directory, replace the tilde with the user's home directory. * pan/prefs.c: * pan/base/gnksa.c: * pan/base/acache.c: * pan/task-manager.c: * pan/base/pan-glib-extensions.c: * pan/message-window.c: use g_snprintf instead of sprintf just to make the flawfinder tool's buffer overflow checker happy. 2002-01-14 Charles Kerr (Bug Fixes) * pan/nntp.c: Fixed obscure authentication bug introduced by 0.11.1.90's SPA support. Thanks to Avtar Marwaha for reporting this bug and to Marc Prud'hommeaux for providing this patch. (Housekeeping) * tests/test-gnksa.c: added a new regression test (which passes) to test a bug report that was sent in recently. 2002-01-14 Charles Kerr Pan 0.11.1.91 Released! 2002-01-13 Charles Kerr (Bug Fixes) * pan/gui.c (gui_set_page): defer this to a gui_set_page_idle func. This function can be (and is) called from outside the main thread. This was the cause of at least one "Xlib: async reply!" bug in 0.11.1.90. * pan/gui.c (status_item_active_changed_cb): make sure the calls to run_in_main_thread_nolock() are wrapped in calls to pan_lock() and pan_unlock(). This is important because this is most often called from queue_run_thread(), which executes outside of the main thread. (Tweaks) * pan/base/article.c (article_xref_foreach): use alloca instead of g_strdup() to try to avoid avoidable heap memory management. (Code Cleanup) * pan/articlelist.c: made more variables const where possible. * pan/articlelist.c (articlelist_selection_changed_cb): removed redundant gui_page_set (MESSAGE_PAGE). The page is set in text.c when the article is done downloading. 2002-01-12 Charles Kerr (Code Cleanup) * pan/articlelist.c: made some arguments const where possible. * pan/base/file-headers.c: removed the "Hello CVS Users!" error message; Chris' fix last week seems to have fixed this bug for good. * pan/articlelist.c: don't update the unread_children and new_children fields anymore; it's done in group_mark_all_read. * pan/base/group.c (group_mark_all_read): update the articles' unread_children and new_children fields appropriately when this is called. 2002-01-10 Charles Kerr (Bug Fix) * pan/base/article.c (articles_mark_read): when a set of articles are marked as read, then update the parents' "unread_children" field. This step was still tied to the GUI as a leftover from the days of Pan where the model and UI were lumped together. This 'fixes' a race condition between model threads and the GUI main thread. * pan/base/article.c (articles_mark_new): same. * pan/articlelist.c (articlelist_unread_inc_nolock): increment code moved to articles_mark_read() (see above). * pan/articlelist.c (articlelist_new_inc_nolock): increment code moved to articles_mark_new() (see above). (Code Cleanup) * pan/base/group.c: now whenever a group has articles added to it or removed from it, the group is rethreaded s.t. it is always in a correct threading state. When articles are removed, only the relatives of the removed articles need rethreading. * pan/base/group.c (group_thread_articles_if_needed): removed. * pan/base/group.h (Group): removed "articles_threading_dirty" field. 2002-01-09 Charles Kerr (UI Tweaks) * pan/task-save.c: feed all the articles to nntp_download_bodies(), since it will skip the ones in the local article cache anyway. This fixes a small UI bug that, when a task was stopped and restarted, it would appear to begin again from zero. Thanks to Ron KA4INM Youvan for reporting this. * pan/grouplist.c: when the group filter loses focus, activate the filter. This prevents a situation where, when changing the filter without pressing enter and move on to another action, the filter isn't activated even though the Find: box shows the new filter. Thanks to Jeff Lightfoot for suggesting this change. * pan/article-toolbar.c: same. 2002-01-09 Christophe Lambin (Bug Fixes) * pan/articlelist.c (articlelist_set_filter_bits_nolock): don't check my_group, since it is only set up on set_group_mainthread_end. This prevented the first group loaded from having the correct filter settings applied. Thanks to Douglas Bollinger, Dan Hensley (among others) for reporting this. * pan/articlelist.c (set_group_mainthread_end): only get new headers once the articlelist is fully built. 2002-01-09 Charles Kerr (UI Tweaks) * pan/grouplist.c: keep the filter string when switching between the various view modes. This undoes the change made on 2002-01-05. (Housekeeping) * pan/gmime/internet-address.c: removed compiler warnings. * pan/gmime/gmime-param.c: same. * pan/acconfig.h: added #include if system has alloca.h. * gmime/strlib.[ch]: removed gmime's reinvention of ANSI C functions. If a platform doesn't have strlen(), then it's just screwed. :) Removed: strncat, strcat, strchr, strrchr, strcpy, strncpy, strlen, memchr, strstr, strftime, localtime. * configure.in: sync. * acconfig.h: sync. * gmime/strlib.c (strncasecmp): replaced with a call to g_strncasecmp. * gmime/strlib.c (strcasecmp): replaced with a call to g_strcasecmp. 2002-01-08 Christophe Lambin (Bug Fixes) * pan/base/group.c (group_ref_articles): lock the article_mutex while ref'ing the group. This fixes a number of threading issues, among which is the 'group->_article == NULL' assertion failure. * pan/base/group.[ch] (group_init_articles): non-locking version of group_add_articles_remove_unused(). * pan/base/file-headers.c (file_headers_load_{group|folder}): since these are called from group_ref_articles, call group_init_articles() to prevent a dead-lock. 2002-01-07 Christophe Lambin Pan 0.11.1.90 Released! 2002-01-05 Christophe Lambin (UI Tweaks) * pan/grouplist.c: clear the filter string when switching between the various view modes. Thanks to John LeMay Jr. for suggesting this. * pan/text.c (text_button_pressed): double-clicking a URL would open up to three browsers if the browser wasn't already running. Thanks to Mart van de Wege for reporting this problem. 2002-01-04 Jeffrey Stedfast * gmime/memchunk.c (memchunk_clean): Oops, when tree_search() returns 0 we want to prune it, not the other way around :-) 2002-01-03 Christophe Lambin (Bug Fixes) * pan/filters/filter-phrase.c (filter_phrase_set): use POSIX Extended Regular Expression syntax, giving us support for operators like '?'. Thanks to Chris Petersen for reporting this problem. 2002-01-02 Christophe Lambin (Bug Fixes) * pan/base/util-mime.c (look_for_uuencoded_data): Fixed a memory leak. * pan/message-window.c (populate_post_info_pane): Fixed two unitialised pointers that would cause Pan to segfault when posting. Thanks to John LeMay Jr. and Frank Van Damme for reporting this problem. 2002-01-02 Charles Kerr (Bug Fixes) * pan/base/util-mime.c (uu_get_char_len): fix bug that caused the wrong character length to be returned. * pan/base/util-mime.c (is_uu_len): fix bug that caused lines of nntp-server-generated taglines that began with a ' ' character to return TRUE. Thanks to dave at dalrun for reporting this bug. (Tests) * tests/test-decode.c: added test to make sure that attachements with the character ĩ in the filename will be decode properly. * tests/data/cache/noisy_*_2.msg: added a leading space in the nntp-server-generated taglines as a regression test against the decode bug fixed today. * pan/base/decode.c: * pan/base/acache.c: check the return value of fwrite to see if the entire content got written. Thanks to Andrew May for suggesting this. 2002-01-01 Charles Kerr (SPA support) * pan/auth-spa.c: added support for Microsoft SPA authentication so that Pan will work with Microsoft NNTP servers. Thanks to the Samba team for writing SPA authentication code and to Marc Prud'hommeaux for patching it into Pan! 2001-12-30 Jeffrey Stedfast * gmime/memchunk.c (memchunk_clean): Prune 'cleaned' nodes from our free-node list. Thanks to Charles Kerr for discovering this bug. * gmime/strlib.c (strncasecmp): Moved the return calculation to within the loop so as to only take a difference if the strings are not identical. This also fixes a bug that would falsely return non-zero for strings that were identical for the first n bytes. 2001-12-30 Charles Kerr (Bug Fix) * pan/queue.c (queue_init): added pthread_mutex_init() call for the task_lock mutex. Thanks to Christian Suder for reporting this bug. * pan-images.spec.in: removed file. Thanks to Bas Mevissen for reminding me about this. 2001-12-29 Charles Kerr (Tweak) * pan/sockets.c (socket_constructor): only call sigaction() the first time we open a socket; duplicate calls are unnecessary. Thanks to Kari Hameenaho for suggesting this. 2001-12-28 Charles Kerr (Bug Fix) * pan/base/pan-glib-extensions.c (pan_str_unescape): don't crash if the input string is NULL. Thanks to Roger Gregory for reporting this bug. (Tweak) * pan/rules/rule-xml.c (get_attributes): don't add NULL strings into the properties hash table; it's unnecessary. 2001-12-28 Christophe Lambin (Tweaks) * pan/identities/identity-xml.c (identity_xml_write): first write the profiles to a temp file and then rename to profiles.xml. This avoids corrupted profiles as a result of problems during write. * pan/filters/filter-xml.c (filter_xml_write): same. * pan/rules/rule-xml.c (rule_xml_write): same. 2001-12-28 Charles Kerr (Bug Fix) * pan/queue.c (queue_run_thread): fixed crash that occurred when cancelling some tasks. 2001-12-28 Simos Xenitellis * CREDITS: Addition of myself to section TRANSLATION of 0.11.1. * configure.in: Added "el" to ALL_LINGUAS. 2001-12-21 Jeffrey Stedfast (GMime) * acconfig.h: Include more defines for GMime, hopefully this will fix the cvs compile problem some people are having... * gmime/memchunk.c (memchunk_clean): Fixed a memory leak. 2001-12-20 Charles Kerr (Bug Fixes) * pan/base/acache.c (acache_expire_messages): add a mutex lock where needed. * pan/identities/identity-edit-ui.c (identity_from_identity_tab): strip out leading/trailing spaces on names, email addresses, etc. * pan/identities/identity-ui.c (edit_dialog_clicked_cb): instead of crashing, give a warning dialog if the edited profile is incomplete. Fixes bug 67311. 2001-12-19 Charles Kerr (New/Unread/Old) * pan/base/group.c (group_mark_all_read): don't bother marking articles as old here. * pan/base/file-headers.c (file_headers_load_group): if the article is read, then turn off the is_new flag. 2001-12-18 Charles Kerr (GMime) * pan/gmime/*: updated GMime snapshot. (Regression Tests) * pan/tests/test-filter.c: started filling out the filter tests. (Lots More Tweaks) * pan/base/acache.c: use gmime's MemChunk instead of GMemChunk. * pan/base/file-headers.c: same. * pan/base/group.c: same. * pan/base/log.c: same. * pan/base/server.c: same. * pan/base/article.c (article_get_header): renamed article_get_extra_header for pulling out unusual headers; all the common headers should be fetched directly from the Article struct's fields. * pan/base/article.c (article_get_author_str): use an inbuf instead of allocating from the heap. * pan/base/gnksa.c (is_*_char): avoid strchr calls. * pan/base/gnksa.c (gnksa_do_check_from): use an inbuf for the address and realname instead of allocating off the heap. * pan/base/gnksa.c: use alloca where sensible. * pan/status-item-view.c: removed unused field `of_100'. 2001-12-18 Christophe Lambin (Build Fix) * po/POTFILES.in: small fix for the moved filter files. 2001-12-17 Charles Kerr (Even More Tweaks) * pan/articlelist.c (articlelist_get_subject): now takes an inbuf to avoid another malloc/free. * pan/queue.c (queue_new_todo): use g_new instead of g_new0 because we fill in all the fields by hand anyway. * pan/queue.c (queue_get_socket_for_task): same. * pan/status-item-view.c: make the 'last_status' field a GString instead of a gchar*, so that when a new one comes in we can reuse the gstring's buffer via g_string_assign(), avoiding a free/malloc. * pan/status-item-view.c (string_shorten_nolock): avoid a pile full of strlen() calls by keeping track of the length each time we remove a character. * pan/text.c (make_clickable_parts): for each hardcoded needle, also hardcode the strlen() of the needle so that we don't have to constantly recalculate it. 2001-12-17 Charles Kerr (More Tweaks) * pan/base/article-thread.c (thread_articles): Added a GString so that we can reuse its buffer in the march-through-references loop. * pan/base/group.c (group_alloc_new_article): use g_new instead of g_new0, because article_constructor initializes the fields anyway. * pan/base/server.c (server_alloc_new_group): same. * pan/base/status-item.c (status_item_emit_status_va): since these are short fits-in-a-gtkprogress messages, use a stack buffer and g_vsnprintf() instead of the more expensive g_strdup_vprintf(). * pan/base/status-item.c (status_item_emit_error_va): same. 2001-12-17 Charles Kerr (Tweaks) * pan/base/acache.c (get_file_message_id): remove two strlen calls. * pan/base/acache.c (acache_set_message): new argument passes in the message len so that we don't have to calculate its length. * pan/nntp.c (nntp_article_download): we know the length; pass it in. * pan/base/acache.c (acache_get_message): call acache_has_message() first, as it's much cheaper than testing the filesystem for the file. * pan/base/acache.c (acache_has_message): added sanity check. * pan/nntp.c (set_header_if_match): pass in the length of the key we're looking for so that we don't have to recalculate it. * pan/nntp.c (nntp_article_download): we know the length; pass it in. 2001-12-14 Charles Kerr (Housekeeping) * pan/filters/filter-*-ui.[ch]: moved thes files up into the GUI directory so that libfilters won't have to link against gui libs. * pan/test/test-filter.c: added a boilerplate for filter unit tests. 2001-12-14 Charles Kerr * pan/base/file-grouplist.c: fixed some issues with the grouplist file format 10 commited yesterday. 2001-12-13 Christophe Lambin (Stable 'two-key' Sorting) * pan/group.[ch]: added the old sort key. * pan/file-grouplist.c: bumped up version number to 10 for the 'old sort key' field. We now save both the old and new sort keys for each group to keep the sort settings across Pan sessions. * pan/articlelist.c: sync. 2001-12-13 Charles Kerr (Bug Fixes) * pan/base/util-mime.c (pan_g_mime_parser_construct_message): ensure that the article body is non-NULL before calling strlen() on it. This fixes bugzilla #66853. * pan/base/article.c (article_get_body): If the article is invalid, return an empty string instead of a NULL pointer, so that clients can safely assume that no matter what they'll have a string to use. 2001-12-12 Charles Kerr (UI Tweaks) * pan/articlelist.c: since Christophe fixed my bugs from yesterday, now I have to introduce new bugs. This changes the subjects of collapsed threads from "subject" to "subject (u)" where u is the number of new replies. I haven't decided if I like this or not and am committing to get some feedback from the pan-users CVS users. 2001-12-12 Christophe Lambin (Message IDs) * pan/identities/identity.[ch]: added a field to hold a custom fqdn for Message ID generation. * pan/identities/identity-xml.c: sync. * pan/identities/identity-edit-ui.c: sync. * pan/message-window.c (populate_article_from_mw): if the selected profile has a fqdn, use it to generate the MessageID. (Bug Fixes) * pan/prefs.c (prefs_apply_cb): fixed a crash when trying to set custom foreground and/or background colors. This seems to be related to some GTK themes causing gtk_rc_get_style() to return NULL. Thanks to T'Az and Krishna Naik for reporting this problem. * pan/prefs.c: fixed some issues with yesterday's commits. 2001-12-11 Charles Kerr (UI Tweaks) * pan/prefs.c: added a help dialog to show the date format strings. * pan/prefs.c: moved "Layout" to the "Display" section * pan/prefs.c: moved News/Mail to "Servers - News" and "Servers - Mail" * pan/message-window.c: Clicking on the "Use External Editor" in the message composer now desensitizes the entire message composer window until the external editor has been closed. This fixes all kinds of possible issues such as pressing the edit button twice, or hitting send while the external editor's still open, etc. 2001-12-09 Charles Kerr (New/Unread/Old/Read) Committed first draft of the changes described on pan-users. 2001-12-09 Christophe Lambin (Bug Fixes) * pan/message-window.c (populate_post_info_pane): if Followup-To is set to 'poster', only send the article as an email. Thanks to Christian Lohmaier for reporting this. 2001-12-07 Christophe Lambin (Bug Fixes) * pan/task-headers.c: after deleting all headers, 'Get New Headers' would download an old header. 2001-12-06 Christophe Lambin (UI Tweaks) * pan/prefs.c: modified the layout somewhat to make the Preferences window smaller. It now fits on a screen running at 800x600. 2001-12-06 Charles Kerr (GUI Headers) * pan/base/article.h (article_get_newsreader): removed unused func. * pan/base/article.h (article_get_header_run_hash): new function. * pan/base/run.[ch]: new module. * pan/gui-headers.c: use article_get_header_run_hash. (Strings on the Stack) * pan/base/pan-glib-extensions.h: pan_strdup_a: new alloca macro. * pan/base/pan-glib-extensions.h: pan_strndup_a: same. 2001-12-06 Charles Kerr (Bug Fixes) * pan/base/article.h: the replaced 'supercede' with 'supersede'. Apparently my "fix" for 0.11.1 was wrong. son-of-1036 is explicit that there is no 'c' in supersede. :) (Usability) * pan/base/acache.c (acache_init): log a warning if the cache directory can't be read. * pan/base/util-file.c (directory_check): log a warning if the directory can't be found and/or created. 2001-12-05 Charles Kerr Pan 0.11.1 Released! 2001-12-05 Charles Kerr (Bug Fixes) * pan/base/file-grouplist.c: fixed bug that caused upgrading from really old versions of Pan difficult. Thanks to Brandon McCombs for reporting this bug. 2001-12-04 Charles Kerr (Housekeeping) * NEWS: * README: * configure.in: Bump version number to 0.11.1. (Bug Fixes) * pan/queue.c: fix a handful of mutex-related bugs. 2001-12-04 Duarte Loreto * configure.in: Updated to add new translation to Portuguese (pt) in ALL_LINGUAS. * NEWS: added pt translation to New features (as told in po/README_TRANSLATORS.txt) * CREDITS: Added pt translation to credits for 0.11.1 2001-11-03 Charles Kerr (Bug Fixes) * pan/base/util-file.c (check_directory): make sure there's always a G_DIR_SEPARATOR at the end of the path before we call mkdir. Apparently Mac OS X hates the trailing /. Thanks to Max Horn for reporting this. * pan/test (Makefile.am): explicitly link against $(INTLLIBS). Thanks to Max Horn for reporting this. * pan/all-over-the-place: changed invocations of ctype's isxxx(*pch) from isxxx((int)*pch) to the correct isxxx((guchar)*pch). Thanks to Morten Welinder for reporting this bug. 2001-12-02 Wang Jian * configure.in(ALL_LINGUAS): Added zh_CN for Simplified Chinese. 2001-11-28 Charles Kerr (Bug Fixes) * pan/base/article.h (HEADER_SUPERSEDES): s/supersede/supercede/. * pan/article-actions.c: same 2001-11-27 Christophe Lambin (GUI Headers) * pan/gui-headers.c (gui_headers_set_nolock): added the newsreader as one of the displayable headers. This basically looks for the article's 'User Agent', 'X-Newsreader' or 'X-mailer' header and displays the value. Thanks to Jim22 for requesting this feature. * pan/gui-headers.h: same. * pan/prefs.c (prefs_text_page): same. * pan/base/article.c (article_get_newsreader): new function for easily extracting the above. * pan/base/article.h: same. 2001-11-27 Charles Kerr (Bug Fixes) * pan/base/gnksa.c (gmtime_r): fix typo that caused Pan to not compile on Mac OS X. Thanks to Max Horn for reporting this. (UI Tweaks) * pan/articlelist.c: the left/right arrow keys now collapse/expand the currently-selected threads. Thanks to Chris Petersen and Martin Wulffeld for suggesting this. (Housekeeping) * configure.in: bumped version number. * README: same. * Makefile.am: added depcomp because automake is only human. 2001-11-26 Charles Kerr (Acache Tweaks) * pan/base/acache.c: changed the lookup table's key from filename to Message-Id. We always have the Message-Id, but the filename is derived, so this saves needless derivation cycles. * pan/base/acache.c: removed "filename" from acache's internal tables. The filename was only used when removing an article from the cache, which is uncommon enough that we're better off deriving the filename at that point instead of using memory & cycles to keep it all the time. (Small Bugfixes) * pan/base/article.c (articles_set_read): add missing debug_exit(). * pan/base/decode.c: cast to avoid Solaris warning. * pan/gui.c (navigation_menu): Fix typo. Thanks to Nam SungHyun for reporting this bug. 2001-11-25 Charles Kerr (Paranoia) * pan/base/article.c (article_set_from_raw_message): new safety checks. * pan/base/article.c (set_from_raw_init_header_gmhfunc): same. * pan/base/gnksa.c (generate_message_id_from_email_addr): added g_warning if an invalid email address is passed in. (Random Tweaks) * pan/base/pan-glib-extensions.c (get_next_token_range): renamed to the more-accurately-named get_next_token_run, 2001-11-24 Charles Kerr (Bug Fixes) * pan/articlelist.c (fire_group_chnaged): since this is an idle func, we need to return 0 here or the function will keep being fired forever, pegging the CPU when the user hits "empty group". * pan/message-send.c: when sending articles, make sure to ref/unref PAN_SENT's articles, because the article being sent is placed into that folder, and the article needs to stay alive for the entire span of the task. * pan/base/article.c (article_is_valid): the group-has-a-memchunk check was not valid for folders, which prevented articles from being posted correctly. Moved the group check up to a call to group_is_valid(), which is a better place to keep group's implementation details. * pan/base/group.c (group_is_valid): if the group isn't a folder and the article refcount is >0, make sure _article_chunk!=NULL. 2001-11-24 Christophe Lambin (Bug Fix) * pan/base/newsrc-port.c (newsrc_import): fixed segfault when the newsrc file exists, but Pan is unable to read it (e.g. permissions). Thanks to Joris Lambrecht for reporting this bug. 2001-11-23 Charles Kerr (Bug Fixes) * pan/base/article-thread.c (check_multipart_articles): now parts 2..n are marked MULIPART_ALL or MULTIPART_SOME. Previously only the first article was marked this way, which caused troubles when filters looked at individual articles to see if they were complete/incomplete. 2001-11-22 Charles Kerr (Random Tweaks) * pan/base/util-mime.c (pan_header_is_8bit_encoded): new function. * pan/base/article.c (article_set_author_from_header_impl): remove at least six malloc/free calls per call. * pan/nntp.c (nntp_download_headers): remove at least four malloc/free calls per header downloaded. * pan/nntp.c (nntp_article_downloaded): remove at least nine malloc/free calls per article body. Yes, I know this is unimportant, I just don't want to start anything big before family gets here. :) 2001-11-21 Charles Kerr (Build Fix) * pan/thread-watch.c (thread_set_state): renamed pan_thread_set_state to avoid name collision with Mac OS X. * pan/thread-watch.c (thread_get_state): renamed pan_thread_get_state to avoid name collision with Mac OS X. * pan/articlelist.c: sync. * pan/filters/filter-thread.c: sync. * pan/rules/rule-action.c: sync. * configure.in: added gmtime_r and localtime_r checks. * pan/base/gnksa.c: If gmtime_r or localtime_r aren't available, define them here. Thanks to Max Horn for these Mac OS X fixes. (Random Tweaks) * pan/base/pan-callback.c: try to handle the steady state without any heap memory allocation or mutexes. 2001-11-21 Christophe Lambin (Bug Fix) * pan/filters/filter-xml.c (populate_top): fixed a bug that caused non-visible filters to reappear after restarting Pan. Thanks to Douglas Bollinger for reporting this. 2001-11-20 Christophe Lambin (Filters) * pan/base/file-grouplist.c (read_group_data/write_groups): bumped up file version to 8. We now also save the group's filter_show field ('Which Articles to Show'). Thanks to Uli Wachowitz for suggesting this. 2001-11-20 Charles Kerr * If some bozo includes a windows pathname in the filename of an attachment, strip out that pathname. 2001-11-19 Charles Kerr (Bug Fixes) * pan/articlelist.c (headers_fetched) fixed 0.11.0 bug that, when an empty group was activated, Pan would go to the server twice for new headers instead of once. In addition to pointless load, if you were really unlucky there would be one or two new articles in the second load, marking the ones from the first run and leaving you scratching your head "how did I just download a batch of old articles from a new group?" :) (Usability) * pan/task-save.c (task_save_run): Don't fail the task if we fail to decode an article that appears to not have attachments: the user may have left the "save attachment" button on in the "save article" dialog and shouldn't be penalized for that. (Safety Checks) * pan/base/article.c: added more sanity checks to check the validity of arguments passed in to artcile functions. 2001-11-18 Charles Kerr (Bug Fixes) * pan/save-ui.c: commit bugfix patch provided by Joseph Turian. * pan/task-save.c: fix a memory leak reported by Rick at mynet.dhs.org. 2001-11-17 Charles Kerr (Fixes for Terrible Bugs) * pan/base/file-headers.c (file_headers_save_group): * pan/base/file-headers.c (file_headers_save_folder): call directory_check() to ensure that the directory exists before we open the save file. * pan/base/file-headers.c (file_headers_save_group): * pan/base/file-headers.c (file_headers_save_folder): changed the return val from void to boolean so that the caller can know if the save failed. * pan/base/file-headers.c (file_headers_save_group): * pan/base/file-headers.c (file_headers_save_folder): log an error to the Pan Error Log if the save failed. * pan/base/util-file.c (pan_rename): return a gboolean, instead of a void, so that the caller can know if the rename was successful or not and take appropriate actions. * pan/base/util-file.h: sync. (Save State) * pan/base/server.c (server_add_groups): save the server's grouplist to disk whenever groups are added. * pan/base/serverlist.c (server_folders_load): when adding Pan's builtin folders, make sure to batch them up into a single call to server_add_groups() s.t. the grouplist is only saved once. All other callers already batched the added groups... * tests/test-newsrc.c: * tests/test-decode.c: * tests/test-message-check.c: turn off autosaving off in places of regression tests where it makes no sense. (Usability) * pan/task-grouplist.c: make some status messages clearer. * pan/task-headers.c: same. 2001-11-16 Charles Kerr (Clear Groups) * pan/group-ui.c (group_empty_dialog): reworked this to handle multiple groups in a single dialog, instead of having one dialog per group. Thanks to Vadim Berezniker and Jim Henderson for suggesting this feature. 2001-11-15 Christophe Lambin (Bug Fix) * pan/queue.c (queue_run_thread): when a task fails, give the queue a nudge. This should fix the stalled queue problem reported by Alex V Flinsch, Alan Young and Gabi Davar. 2001-11-14 Charles Kerr (More Build Fixes courtesy of Alan Young) * pan/articlelist.c: changed some "g*array->len > 0" to "g*array->len > 0u" to make Compaq's C compiler happy. * pan/text.c: same. * pan/base/Makefile.am: add GTK_CFLAGS to INCLUDES. * pan/filters/Makefile.am: same. * pan/identities/Makefile.am: same. * pan/rules/Makefile.am: same. 2001-11-14 Charles Kerr (Pedantic) * pan/base/argset.h: the function passed to pthread_create() needs to return a void*, not void. * pan/rules/rule-ui.c: worker thread func return a void*, not void. * pan/grouplist.c: same. * pan/queue.c: same. * pan/base/decode.c: changed some C++-style comments to C-style. * pan/article-toolbar.c: same. * pan/gui.c: same. * pan/base/article.c: added explicit uchar/char casts. * pan/base/util-mime.c: same. * pan/filters/filter-xml.c: same. * pan/filters/rule-xml.c: same. * pan/filters/identity-xml.c: same. * pan/nntp.c: same. * pan/text.c: same. * pan/base/article.h: removed a comma from end of an enum list. * pan/base/article-thread.h: same. * pan/base/message-check.h: same. * pan/filters/filter-phrase.h: same. * pan/articlelist.c: "static struct arrayname [];" isn't legal -- remove the static keyword to make ansi happy. * pan/text.c: same. 2001-11-13 Charles Kerr (Layout) * pan/gui.c (gui_shutdown): fix bug that incorrectly saved the hpaned/vpaned values for layout type 5 (3 vertically stacked panes). Thanks to Douglas Bollinger and Erik W. Hanson for reporting this bug. * pan/gui.c (toggle_pane_visiblity): only rebuild the layout if the new state != the old state. This prevents the layout from being rebuilt three unnecessary times during startup when initializing the menu widgets. * pan/gui-paned.c: sync. (GUI Paned/Notebook) * pan/gui.c: rewrote all the crufty gui-paned/gui-notebook code. Now keyboard activation is be more consistent between the two layouts. * pan/gui-notebook.c: same. * pan/gui-paned.c: same. (Thread/Unthread Header Pane) * pan/prefs.c (header_pane_is_threaded): new variable for prefs_init(). * pan/gui.c: save header_pane_is_threaded to gnome_config() on exit. * pan/articlelist.c: use header_pane_is_threaded. This solves a bug with having to press the thread/unthread button twice before it would work properly. Thanks to Jed Baer for reporting this bug. (Grouplist Usability Changes) * pan/grouplist.c: remembering the last Pan session's group_mode is not really in sync with what would be most usable -- almost always people want to see "subscribed" for daily use, and then look at "all" if want to subscribe to a group. The new scheme uses this fact to decide the mode: when bootstrapping/switching to a server, if the server has subscribed groups, we set the view to "subscribed". Otherwise it's likely the user wants to subscribe to some, so we set the view to "all", and if there are no groups, also show the "download group list?" dialog. * pan/grouplist.c: whenever loading a server and we can't find any groups for that server, show the "download group list?" dialog. Previously this was only done the first time, for new users. (Plumbing) * pan/base/file-grouplist.c (file_grouplist_exists): now returns a ServerGroupsType instead of a bool so that you can tell what _type_ of groups exist. * pan/base/file-grouplist.c (save_groups_to_file): if no articles exist in a grouptype, unlink the corresponding .dat, .idx files. * pan/base/group.c (groups_set_subscribed): when the subscribed state of groups change, save the affected grouplists for safekeeping. 2001-11-12 Charles Kerr (Bug Fixes) * pan/articlelist.c (articlelist_selection_changed_cb): ack, we were leaking a GPtrArray each time we read an article! (Usability) * pan/gui.c (view_menu): renamed the 'zoom' functions' menu text to to something more easily understood. Thanks to Cory Dodt for this suggestion. * pan/article-toolbar.c (article_toolbar_new): added "filter by message-id" to the article toolbar's filter. * pan/gui.c (gui_key_press_cb): shift-delete will delete threads again now. This went away for awhile for no apparent reason. Thanks to Kevin (kevlinux) for bringing this to my atttention. * pan/dialogs/dialog-newuser.c (get_default_news_server): If the environment variable NNTPSERVER isn't set, get the host's domain and prepend it with "news.". This should correctly guess the news server for most .edu sites and domestic cable modem users. 2001-11-11 Charles Kerr (Usability) * pan/gui-paned.c (gui_paned_enter_clicked_nolock): if >1 article is selected when Return is pressed, download & show the first article as before, but also download articles 2..n in a second task. Thanks to Cory Dodt for suggesting this improvement. * pan/base/article.c (article_get_unique_threads): the return array should maintain the sort order of the incoming articles, instead of in an unordered bag. For example when the user hits "Download Threads", one wants to see the articles download from the top article on down, rather than in a random pattern. Thanks to Cory Dodt for suggesting this improvement. (Bug Fixes) * pan/base/acache.c (acache_set_message): fix bug that caused the article cache to grow larger than the user-specified maximum. Thanks to Muralito and Alan Young for reporting this bug. * pan/base/article.c (article_get_thread_message_id): return the right message-id even if the Article passed in has a broken References: header. We do this by walking up the article hierarchy (because article_thread does a pretty good job of threading even without References) before looking at the References: header. This fixes a bug that kept some threads from being Watched or Ignored properly when the user hit Watch or Ignore. Thanks to David Watson for reporting this bug. 2001-11-10 Charles Kerr (Usability) * pan/base/decode.c: if the decode file can't be created for whatever reason (for example, the specified directory isn't writable) then send an error to the Pan log and fail the task. Thanks to Sebastien Leclair for suggesting this. * pan/task-save.c: sync. * pan/base/util-file.c (directory_check): change retval from void to a gboolean that tells whether or not the specified directory exists. 2001-11-09 Charles Kerr (Bug Fixes) * pan/pan.c: moved PAN_SENT and PAN_SENDLATER to pan/base/serverlist.c, so that they will be defined in the lowest-level library in which they're used. This fixes a compile error reported by Francesco Lamonica and Gavi Dabar. (GUI Tweaks) * pan/gui.c: replaced "Get Specific Articles..." with "Download Articles..." by popular demand from Jake Zhukov and Alex Flinsch. (Save Setup) * pan/base/save-setup.c: removed -- it's too risky in a threaded app. * pan/articlelist.c (clear_group_nolock): save here instead. * pan/articlelist.c (set_group_mainthread_end): and here. * pan/task-headers.c (task_headers_run): and here. * pan/base/group.c (group_unref_articles): and here. * pan/file-headers.c (file_headers_save): added a mutex s.t. only one group can be saved at a time. This prevents the same group from being saved twice at the same time and seems to make Pan run a little more smoothly too. (Watch / Ignore Threads) * pan/articlelist.c (articlelist_selected_thread_watch_nolock): faster watching of multiple threads. * pan/articlelist.c (articlelist_selected_thread_watch_nolock): if two articles in a thread were selected when 'watch' was hit, the thread wasn't watched (actually, it was watched, then unwatched when the second article was checked). 2001-11-08 Charles Kerr (Bug Fixes) * pan/base/save-setup.c (save_setup_impl): put a mutex in here so that we don't get two threads saving the setup concurrently. * pan/group.c (group_unref_articles): fix thread issue with calling save_setup(). This was causing all kinds of problems yesterday. * pan/group.c (group_destructor): correct the order in which items are freed. This fixes a barrelful of FMR, FMW, ABR, and ABW errors. * pan/text.c (text_pane_popup_menu): added "GNOMEUIINFO_END" to the end of this array. Fixes ABR and ABW errors. * pan/acache.c (acache_set_message): Fix memory leak. * pan/prefs.c (prefs_servers_changed): If the server list has changed, make sure it's saved to disk for posterity when user hits Apply or OK. (Testing) * pan/base/article.c (article_is_valid): add more tests. * pan/base/article.c (articles_are_valid): new convenience function for sanity checks. * pan/base/group.c: sync. * pan/base/article-thread.c: sync. (Save Setup) * pan/save-setup.c: save_setup now comes in two flavors, save_setup_now() and save_setup_idle(), to distinguish priority. 2001-11-07 Charles Kerr (Bug Fixes) * pan/base/group.c: call save_setup() whenever a group's article refcount goes to zero. This is 'crash insurance' was discussed on pan-users. * pan/nntp.c (nntp_download_headers): don't call group_set_articles_dirty() here -- that should be (and is) done when group_add_articles() in called with the headers generated by nntp_download_headers(). * pan/base/log.c: added a thread mutex to control access to the Pan log. This solves a bug reported by Jed Baer where one thread was halfway through shutting down the Pan log when another thread logged a shutdown message and confused everything. (Menu Changes) * pan/gui.c: moved "Delete all Articles" to "Empty ..." next to "Delete" in the group menu. Thanks to jzhukov for suggesting that this be moved. * pan/articlelist.c: added "Delete All" next to "Delete" and "Delete Thread" in the article menu & popup menu. Thanks to jzhukov for suggesting that this be moved. 2001-11-06 Charles Kerr (Widen the filter_bits to hold the new "by me/by others") * pan/base/group.h: (filter_bits): widened from guint16 to guint32 * pan/base/file-grouplist.c: bumped format version number to 7. The only change is that if the loaded version <= 6, we turn on the widened filter bits with |= 0xFFFF8000 to make sure the "by me" and "by others" bits are turned on by default. 2001-11-06 Christophe Lambin (Filters - Articles by me) * pan/article-toolbar.c: added new filter to the toolbar. * pan/article-list-toolbar-mediator.c: sync. * pan/base/group.h: sync. * pan/xpm/by_me.xpm: new icon for toolbar filter. * pan/xpm/by_others.xpm: same. * pan/filters/filter.dtd: added new filter definition. 2001-11-05 Charles Kerr (Bug Fixes) * pan/base/group.c (group_ref_articles): only call group_set_article_qty if we've just loaded headers from disk and therefore have idea to believe that the article qty has changed. This prevents a gui double lock in rare circumstances. * pan/base/group.c (group_thread_if_needed): put the mutex lock before the (if_article_threading_dirty) check instead of after, so that multiple threads don't hit that and both, hitting the dirty flag, think that they need to thread the articles. Threading once in enough. * pan/base/article-thread.c (thread_articles): slightly faster threading of articles. 2001-11-05 Christophe Lambin (Filters) * pan/filters/filter-mine.[ch]: implemented a new filter to automatically select articles posted by the user. This is done by cross-referencing the article's author with those in the user's Profile(s). * pan/filters/filter-edit-ui.c: sync. * pan/filters/filter-xml.c: sync. * pan/filters/Makefile.am: sync. 2001-11-03 Charles Kerr (Bug Fixes) * pan/articlelist.c: flag/unflag thread didn't work properly. Thanks to Peter Borgmann for reporting this bug. * pan/nntp.c: when collapsing a double period as described in RFC977 2.4.1, only erase one of the damn periods instead of both of them. Thanks to Thomas K. Gamble for reporting this embarassing bug. 2001-11-02 Charles Kerr Pan 0.11.0 Released! 2001-10-31 Charles Kerr (Bug Fixes) * pan/base/group.c: silenced three glib warnings. Thanks to David Oberbeck for reporting this bug. 2001-10-30 Charles Kerr (Bug Fixes) * pan/message-window.c (create_body_pane_nolock): ensure that control+return is a shortcut for "Send Now" as in Agent & Gravity. Thanks to Himanshu J. Gohel for reporting this bug. 2001-10-29 Charles Kerr (Bug Fixes) * pan/article-toolbar.c (article_toolbar_set_filter): when the caller sets a new filter in the toolbar, make sure to update the GnomeEntry search field to reflect the new filter. * pan/base/util-wrap.c (rot13): Fixed bug in the rot13 code that truncated lines when they encountered characters like ā, ō, or č. Thanks to Nightshade for reporting this bug. * pan/tests/test-wrap.c: added regression test to ensure that characters like ā, ō, or č don't truncate lines. 2001-10-26 Charles Kerr (Bug Fixes) * pan/artlclelist.c: Fixed 0.10.0.93 that didn't properly show new articles added to the active group. (Housekeeping) * po/et.po: added new Estonian translation by Tõivo Leedjärv. * gmime: sync with fejj's code. 2001-10-25 Christophe Lambin (Bugfix) * pan/queue.c (queue_run_thread): fixed thread bug that caused tasks to get stuck in 'queued' state. Thanks to Frederik Vanrenterghem, Jed S. Baer and Alan Young for reporting this. 2001-10-25 Charles Kerr (FreeBSD Build Fixes) * pan/filters/filter-phrase.h: #include before #include to compile under FreeBSD. Thanks to Christian Kuhtz for this suggestion. * pan/text.c: removed #include , which doesn't exist on FreeBSD -- instead, just prototype it directoy. Thanks to Christian Kuhtz for this suggestion. * pan/base/gnksa.c: use gettimeofday() instead of ftime(). Thanks to Christian Kuhtz for this suggestion. 2001-10-22 Charles Kerr (Popup Menus) * pan/articlelist.c: added popup menus back in. * pan/text.c: same. 2001-10-22 Christophe Lambin (bye bye libESMTP) * pan/smtp.c: restored the pre-libESMTP version of SMTP support. LibESMTP definitely seems like a good candidate for enhancing Pan's support for SMTP. However, at this time there remain too many packaging issues. Too bad. Maybe later. * pan/Makefile.am: same. * configure.in: same. * pan.spec.in: same. * acconfig.h: same. 2001-10-21 Charles Kerr (UI Tweaks) * pan/prefs.c: added a third quoted depth ">>>" color. * pan/text.c: sync. 2001-10-21 Christophe Lambin (Profiles) * pan/message-window.c: implemented a PanCallback to keep in sync with the Profiles while writing an article. This fixes a segfault when we remove an profile, while writing an article using that profile. Thanks to lduperval for reporting this bug. * pan/identities/identities-manager.[ch]: same. 2001-10-20 Charles Kerr (Bug Fixes) * pan/articlelist.c (articlelist_set_sort_type): when the sort type changes, make sure the change is propagated back into the group's settings where it will be remembered. Thanks to Alen Williams for reporting this bug. * pan/message-send.c (build_nntp_header): Use GMime's InternetAddress object when composing the From: header so that we get the right encoding. Thanks to Julien Plissonneau Duquene for reporting this bug. (TODO: migrate the entire posting to GMimeMessage) * pan/tests: forgot to sync the tests with the new two-argument group_new() function. Thanks to Laurent Duperval for reporting this bug. (Delete/Mark Read Crossposts) * pan/base/article.c (article_xref_foreach): now takes a ServerGroupsType argument s.t. we only traverse groups in that set. * pan/base/article.c (articles_set_read): only also mark read crossposts in subscribed groups. It's not worth the load to mark in groups that the user will never look at. * pan/article-actions.c (delete_articles): when deleting an article, only delete crossposts in subscribed groups. Same reason. * pan/base/server.c (server_get_named_group_impl): take an argument of ServerGroupsType so that we know which types to look through for this group. * pan/base/server.c (server_has_group_in_type): new function. (Speedups) * pan/base/article.c (article_set_header_impl): if we're initing this header then we know there's no current value for the header, so don't bother calling article_remove_header() first. 2001-10-19 Charles Kerr (Bug Fixes) * pan/message-window.c: fixed a couple of cases where Articles were still being pan_object_{un}ref()ed, even though Article is no longer a PanObject. C++ would've been helpful here. :) (More snubbing of PanObject) * pan/base/group.[ch]: Group's no longer a PanObject either. Its memory management is controlled by the parent Server object, just as Groups control their Article objects. * pan/articlelist.c: sync. 2001-10-18 Charles Kerr Pan 0.10.0.93 Released! 2001-10-17 Charles Kerr (Bug Fixes) * pan/gui-notebook.c: Fix crash-on-zoomed-startup bug. Thanks to Leo Lipelis for reporting this bug. * gmime/gmime-charset.c: Upgrade this file to get a fix for Debian and Solaris charsets. Thanks to Jeffrey Stedfast for writing GMime. (Dethreading) * pan/grouplist.c: Make grouplist's updates operate in the mainthread too. Similar to earlier updates to text.c and articlelist.c. (Code Cleanup) * pan/article-toolbar.c: removed unnecessary #includes. * pan/sockets.c: same. 2001-10-17 Christophe Lambin (libESMTP) * configure.in: now using libESMTP 0.8.6. * pan.spec.in: same. 2001-10-17 Charles Kerr (Bug "Fixes") * pan/base/decode.c: shut up compiler warning. * pan/base/util-mime.c: same. * pan/status-item-view: try harder to make this threadsafe. 2001-10-15 Charles Kerr (Bug Fixes) * pan/queue.c (queue_mainloop): patch for signals-get-lost bug reported by Himanshu J. Gohel, Jed S. Baer, John LeMay, and Douglas Kilpatrick. 2001-10-13 Charles Kerr (Bug Fixes) * pan/smtp.c: #include . Ooops. * pan/articlelist.c (articlelist_set_group_nolock): if the user has selected to fetch the group's new headers on load, make sure we do that. * pan/queue.c (queue_run_what_we_can): fixed thread bug that caused some tasks to get stuck in an "Abort" state even if they completed successfully. * pan/task-save.c (task_save_run): fix small but ugly FMR/FUM bug. (UI Tweaks) * pan/task-headers.c: made some of the status messages a little shorter so that they'll fit in the progressbar better. 2001-10-12 Charles Kerr (Bug Fixes) * pan/articlelist.c (add_article_to_ctree_nolock): when calculating the linecount of a multipart binary, don't double the count for parts that have a repost too. (Dethreading) * pan/text.c: decrufting. Renamed & reorganized inscrutably-named functions that have grown like mold over time. Sorted the code into less irrational groupings. Decreased the number of thread steps needed to update the text pane. Fixed thread concurrency bug reported by war@starband.net. * pan/articlelist.c (articlelist_set_sort_type): throw away the old implementation and just call refresh (REFRESH_SORT) instead. (Code Tweaks) * pan/nntp.c (nntp_download_headers): remove 5 g_strdup()/g_free() pairs for each header downloaded. Probably an unimportant change, but every little bit helps. 2001-10-11 Christophe Lambin (Dethreading) * pan/articlelist.c: fixed crash when selecting an empty folder. (libESMTP) * pan.spec.in: added libESMTP to BuildRequires & Requires. * configure.in: include libESMTP's CFLAGS to cover non-standard installations. Thanks to war@starband.net for reporting this. * pan/Makefile.am: sync. 2001-10-10 Charles Kerr (Dethreading) * pan/articlelist.c: rewrote the ways in which the articlelist's group is set and refreshed. This simpler and cleaner now, at least as much as possible in threads. This should ameliorate some of the "pan's threading is unstable!" complaints. * pan/base/group.[ch]: added an Article GMemChunk + accessor. * pan/base/article.[ch]: Article is no longer a PanObject; instead, its life cycle is tied to the article_refcount of the Group which owns it. This resolves the Article life cycle issues like "what happens if a rule deletes an article that articlelist is drawing?" and "what if an article is expired while a person's reading it?" etc. 2001-10-10 Christophe Lambin (libESMTP) * pan/smtp.c: rewrite, using Brian Staffort's libESMTP library. * configure.in: build with libESMTP. * acconfig.h: same. * pan/Makefile.am: build with libESMTP. 2001-10-09 Christophe Lambin (Bug Fixes) * pan/gui-headers.c (gui_headers_set): wrap the author to cope with excessively long email addresses. Thanks to David Watson for reporting this. 2001-10-09 Charles Kerr (Dethreading) * pan/base/argset.c: new module. * pan/base/group.c (group_remove_articles): don't unset the group pointer when we remove the article from the group's article list -- The group is still managing the article's memory during its lifespan. * pan/base/status-item.c (status_item_new_with_description): new constructor that lets the client pass in a description string at creation time. * pan/base/status-item.c (status_item_destructor): don't set the status-item to inactive here; this causes an unhappy feedback loop. A status item should be inactive before it's destroyed. * pan/status-item-view.c (status_cb_nolock): new impl function. 2001-10-07 Christophe Lambin (Bug Fixes) * pan/filters/filter-top.c (filter_top_dup): initialise 'negate' so we can create negative aggregate filters. Thanks to Jed S. Baer for reporting this. 2001-10-04 Charles Kerr (UI: Text Pane Colors) * pan/pan.c (main): get the "cmap" variable before calling prefs_init so that we can alloc colors inside prefs_init. * pan/prefs.c: added two new preferences to toggle on/off using the gtkrc colors vs. custom colors in the article view window. * pan/text.c: fixed color-assignment bugs. Thanks to war@starband.net for reporting this bug. (Code Tweaks) * pan/prefs.c (update_entry_and_bool_from_toggle_button): return a gboolean flag to indicate if the value has changed. * pan/base/debug.c (debug_printf): added "function" argument that uses gcc's PRETTY_FUNCTION if we're using gcc. * pan/debug.h: sync debugN and odebugN macros. * pan/base/util-mime.c: small cleanup. 2001-10-03 Christophe Lambin * pan/articlelist.c (article_toolbar_set_filter): better fix for the Xlib async error. 2001-10-03 Charles Kerr * gmime/gmime-filter-basic.c: fix some compiler warnings. Also, add in a g_message couting the number of streams alive. There's a stream leak somewhere in Pan that I haven't been able to track down yet. (fejj if you want to look at this -- do you have a news server? If not, news.ou.edu is public -- go to alt.binaries.picture.fractals and start reading messages. Each read message leaves two dangling streams.) 2001-10-03 Jeffrey Stedfast * pan/base/util-mime.c (look_for_uuencoded_data): After splitting out the uu parts, reset the stream immediately so that if/when we write out the content stream, it will write from the beginning. This should also make it so any substreams created from this stream will be reset. Move the in_stream unreffing action to right after we create in_buf since we don't need to hold a ref any longer - this doesn't really change anything, it's more for peace-of-mind. Once in the for-loop, do proper unreffing of streams. 2001-10-03 Charles Kerr * pan/Makefile.am: update static libraries for Purify. * pan/articlelist.c: removed some debugging g_messages. * pan/nntp.c: same. * pan/text.c: sync with gmime update. * pan/base/article.c: same. * pan/base/decode.c: same. * pan/base/util-mime.c: same. 2001-10-03 Charles Kerr * pan/rules/rule-manager.c (add_any_needed_canned_rules): fix small memory leaks. Thanks to Richard Deken for reporting these bugs. * pan/gui.c (edit_menu): added "Select message body" back into menu. Thanks to David Oberbeck for requesting this. 2001-10-02 Charles Kerr * pan/article-toolbar.c (sensitize_builtin_filters): fix Xlib async error. * pan/task-save.c: remove unused debugging statement * pan/base/serverlist.c: thread safety safeguard. * pan/articlelist.c (filter_changed_thread): some pthread safety checks when applying a filter to a set of articles. 2001-10-01 Christophe Lambin * pan/message-window.c (apply_identity): don't add an attribution line for new posts & emails. 2001-09-28 Charles Kerr * pan/text.c: dead code removal. * pan/identities/identity.c (identity_dup): fixed small memory leak. Thanks to Richard Deken for reporting this bug. 2001-09-27 Charles Kerr * pan/text.c (append_text_cb): new function to display all text attachments instead of just the first one. Thanks to Robert Tilley for reporting this bug. * pan/base/acache.c (acache_init): don't bother regenerating the message-id list if acache_init()'s already been called. * pan/base/article.c (article_get_header): fix for getting xrefs. This gets "when article is deleted/read/unread, propagate that to its crossposts" working again. * pan/status-item-view.c: fix problem that caused the progress bars to not always be cleared out when a task ended. * pan/text.c: unset the text widget's usize height when we're not showing pictures. Thanks to Jed S. Baer for reporting this bug. 2001-09-23 Charles Kerr * pan/nntp.c (nntp_article_download): That fix in for version 1.197 wasn't such a great idea; it created a new bug. Try a different fix instead. 2001-09-22 Charles Kerr 0.10.0.91 Released! 2001-09-20 Charles Kerr * pan/articlelist.c: don't set the CTreeNodes' fonts when we can't load the font (user has selected a font that doesn't exist, etc). * pan/gui.c (navigate_menu): added new shortcuts for parent article and top-of-article. * pan/status-item-view.c: fixed crash that occurred when updating the gtkprogressbar in a non-gtk thread under pixmapped gtk themes. * pan/text.c (set_text_from_article_idle): silenced gtk warning. * pan/queue.c (queue_get_tasks): Made this function a little safer: we now return a newly-allocated array, instead of the queue's private GSList. We also ref() each task in case it would otherwise be destroyed by the time the caller is done with the task list. This new task array is created and reffed inside the queue_lock mutex. * pan/message-window.c (create_body_pane_nolock): always use a monospace font when posting, even if the user uses a variable width font when reading. Thanks to Christian Lohmaier for reporting this. 2001-09-18 Fatih Demir * ABOUT-NLS & config.h.in: Removed from CVS. 2001-09-17 Charles Kerr (Bug Fixes) * configure.in: use gdk-pixbuf-config, rather than gnome-config, when detecting the cflags/version/libs for gdk-pixbuf. Thanks to Justin Piszcz for reporting this bug. 2001-09-16 Charles Kerr (GMime file support) * gmime/gmime-content.[ch]: new files that abstract out how a GMimePart's content is held - in a memory array or in a temporary file. Being able to use temporary files lets us decode those iso-image attachments without running out of memory. * pan/base/decode.c: sync. * pan/base/util-mime.c: sync. This actually lets us drop a couple of intermediate steps that used to be needed to massage the data into the right shape. * pan/text.c: sync. 2001-09-11 Charles Kerr (Bug Fixes) * pan/smtp.c: Fixed problem with date header not being sent when sending mail from Pan. Thanks to Derek Poon for reporting this problem and submitting a fix. * pan/base/newsrc-port.c: Fixed problem with importing an empty .newsrc file. Thanks to Derek Poon for reporting this problem and submitting a fix. * pan/queue.c: Fix problem with the queue running away with the CPU in 0.10.0.90. Thanks to Chris Vance for reporting this bug and submitting a fix. * pan/text.c: Silence a g_warning. Thanks to Muralito for reporting this bug. * pan/prefs.c: Fix a couple of typos in the preferences dialog. Thanks to Jacob Ilsø Christensen for posting this patch. * pan/dialogs/dialog-newuser.c: Hide the password when the user types it in. Thanks to Jacob Ilsø Christensen for posting this patch. 2001-09-07 Charles Kerr (Goodbye, gtkhtml) * configure.in: remove gtkhtml checks, add gdk-pixbuf instead. * pan/text.c: gdk_pixbuf for inline images; homebrew clickable URLs * pan/prefs.c: add user-configurable URL link color, 2nd quote color 2001-09-07 Charles Kerr (Safeguards) * pan/base/pan-object.c (pan_object_is_valid): new sanity check func. * pan/base/group.c (group_is_valid): new sanity check func. * pan/base/group.c (most functions): g_return_if_fail(group_is_valid()) in most of the function entry assertions. * pan/base/articlec (article_is_valid): call pan_object_is_valid(). 2001-09-05 Christophe Lambin (Profiles) * pan/message-window.c (post): if we're cross-posting, remember the used profile for all newsgroups we just posted too. (Bug Fix) * pan/message-window.c: avoid duplicate attribution lines if the current profile gets changed while writing an article. 2001-09-05 Charles Kerr (Tweak) * pan/grouplist.c (-grouplist_get_group_readable_name): use a buffer instead of a lot of alloc/free's. (Safety) * pan/file-headers.c: added some extra g_return_if_fail()s to be safe. * pan/file-grouplist.c: same. 2001-09-04 Charles Kerr (Usability) * pan/articlelist.c (group_articles_removed_cb): select, but don't activate, the next article after one's deleted. This was intended to be a feature but got negative feedback. (Bug Fix) * pan/group-actions.c (delete_groups_dialog_cb): don't delete the groups if the user hit "no, don't do it". D'oh! Thanks to Mike Robinson for reporting this bug and submitting a patch. (Tweak) * pan/nntp.c (nntp_article_download): reuse a buffer, rather than alloc/free'ing a new string for each line we read from the server. * pan/text.c: sync with some of the gtkhtml-less text.c codebase. 2001-09-04 Christophe Lambin (UI Tweak) * pan/articlelist.c: in unthreaded mode, set the article's style to reflect only the status of the article itself, not of the replies. 2001-09-03 Charles Kerr * pan/gui.c: added accelerators for getting articles & sub/unsub from group, by request. 2001-09-03 Charles Kerr * pan/gui.c: added shortcut for thread/unthread the header pane. * pan/base/article-thread.c: have threads with more unread/new children show up higher in the sort. * configure.in: lowered glib requirement to 1.2.8, since that's what gtk 1.2.10 requires. 2001-09-02 Charles Kerr (Collapse Group Name) * pan/gui.c: added to navigate menu: "Collapse names in group pane". * pan/prefs.c: sync. * pan/gropulist.c: sync. 2001-09-02 Charles Kerr (Save Dialog) * pan/save-ui.c: new file, replacing save.c, which integrates the "Save Article" and "Save Attachments" dialogs together. * pan/task-save.c: new file, replacing task-decode.c, which not only decodes articles but optionally saves the article bodies too. * pan/article-actions.c: sync. (Bug Fixes) * pan/nntp.c (nntp_download_body): if we somehow get fed a blank line from the server, don't crash. 2001-09-02 Charles Kerr (UI Tweaks) * pan/gui.c: added "space reading" into the navigational menu. (tmp dir) * pan/base/base-prefs.h: we no longer define our own tmp dir variable. Use g_get_tmp_dir() instead so that we can behave more like other glib apps. * pan/base/util-file.c: sync. * pan/prefs.c: sync. (portability (!)) * pan/base/serverlist.c: use G_DIR_SEPARATOR where appropriate. * pan/base/ufil-file.c: same. * pan/base/file-grouplist.c: same. * pan/base/file-headers.c: same. * pan/base/acache.c: same. * pan/identities/identity-manager.c: same. * pan/filters/filter-manager.c: same. * pan/rules/rule-manager.c: same. * pan/prefs.c: same. * pan/thread-watch.c: same. * pan/save.c: same. 2001-09-02 Charles Kerr (Sorting) * pan/base/article-thread.c (sort_articles): added sorting by article raad state (new, unread, new replies, etc) and by action state (flagged, queued, etc). This is triggered by clicking on columns 0 and 1 in the thread tree. 2001-09-02 Charles Kerr (Living with Threads) * pan/articlelist.c: keep an array of all the articles we're using. Each article's refcount is raised by 1 as long as articlelist is using it. (This has a nice side-effect of letting articlelist to stable sorting again) * pan/articlelist.c (clear_article_buffer): sync. * pan/articlelist.c (articles_added_cb): sync. * pan/articlelist.c (articles_removed_cb): sync. * pan/articlelist.c (articlelist_set_contents): sync. * pan/articlelist.c (articlelist_set_group_maybe): sync. * pan/articlelist.c (articlelist_update_articles): ref the articles before passing them along to an idle function, just to make sure they're still alive when the idle function's run. * pan/articllist.c (artlclelist_articles_read_changed): same. * pan/group.c: added a field "article_mutex" used whenever the group is doing heavy manipulation of its article list: for example, we don't want one thread Threading the articles while another is expiring old articles, etc. 2001-09-01 Charles Kerr (Bug Fixes) * pan/articlelist.c (articlelist_articles_read_changed_idle): A GPtrArray and its buffer were being leaked each time an article's read state changed, yuck. * pan/text.c (text_create): fix problem with changing the background color of the gtkhtml pane. Thanks to Tõivo Leedjärv for providing this fix. * pan/base/group.c (group_inc_article_read_qty): return if group==NULL. This was triggering a crash in articlelist under torture conditions. * pan/base/pan-glib-extensions.c (pan_str_unescape): fixed unescaping bug. Thanks to Tõivo Leedjärv for reporting this bug and providing a fix. * tests/test-pan-callback.c: sync the callback functions' signatures to match the PanCallback changes made earlier in the week. * pan/base/pan-glib-extensions.c (get_next_token_range): don't dereference a NULL pointer. 2001-08-31 Christophe Lambin (Bug fix) * pan/base/file-headers.c (file_headers_save_folder): don't complain so loudly when an article has no body. 2001-08-30 Charles Kerr (Bug Fixes) * pan/base/util-mime.c (look_for_uuencoded_data): small memory leak. * pan/gmime/gmime-utils.c: update snapshot to fix encoding bug. Thanks to Christian Lohmaier for reporting this bug. 2001-08-30 Christophe Lambin (Bug Fixes) * pan/message-window.c (article_gen_attribution_string): fixed corruption of the short author name. * pan/message-window.c (post): record the profile before we destroy the message window. 2001-08-29 Charles Kerr (Profiles) * pan/pan.c (shutdown): call identity_manager_shutdown_module(). (Usability) * pan/gui.c: more descriptive tooltips for the task/connections buttons. * pan/prefs.c: made the default news server behavior to go online without being asked. Most users seem to be online, rather than offline users, so this should be the default. (Stupid Tweaks) * pan/acache.c (acache_get_filename): use a buffer on the stack to avoid unnecessary malloc/free in some frequently-called funcs. * pan/util.c (get_date_display_string): same. * pan/article.c (article_get_short_author_str): same. 2001-08-29 Christophe Lambin (Profiles) * pan/message-window.c (determine_default_identity): improved logic for guessing the default profile to propose. This mainly helps when writing a new email (e.g. Feedback). * pan/identities/identity-manager.c: new helper function to find a profile with matching author name & email address. * pan/identities/identity-manager.h: sync. 2001-08-29 Charles Kerr * pan/docs/faq.html: updated faq. * pan/configure.in: bumped glib/gtk requirements to 1.2.10 * pan/identities/identity.c (identity_constructor): g_strdup() the default attribution string so that it doesn't get free()d later. This is my bug. * pan/xpm/pan_druid.xpm: new watermark for the new user screen. * pan/dialogs/dialog-new-user.c: added new information on the new user druid's welcome screen. 2001-08-28 Christophe Lambin (Profiles) * pan/base/file-grouplist.c: bumped file format version number to 6. We now also store the last used profile for each group. (Bug fixes) * pan/message-window.c (remove_signature): handle articles that are empty except for a signature. * pan/gui.c (send_feedback_cb): use the default profile for email. * pan/base/file-grouplist.c: fixed reading back the group's active filter name. 2001-08-28 Charles Kerr (Profiles) * pan/identities/identity-edit-ui.c: added in a default Attribution value when creating a new Profile. (Code Cleanup: PanCallback) * pan/base/pan-callback.h: made the cb return type void, not int. * pan/article-actions.c: sync. * pan/article-toolbar.c: sync. * pan/articlelist.c: sync. * pan/gui.c: sync. * pan/dialogs/dialog-log-viewer.c: sync. * pan/rules/rule-edit-ui.c: sync. (Code Cleanup: Menus) * pan/gui.c: use gnome menu macros for slightly less code sprawl. * pan/articlelist.c: same. * pan/message-window.c: same. (Code Cleanup: Dead Code Removal) * pan/articlelist.c (articlelist_sort_changed): removed dead code. * pan/articlelist.c (articlelist_all_download): same. * pan/articlelist.c (purge_articles): same. * pan/articlelist.c (articlelist_selected_purge_bodies): same. * pan/articlelist.c (articlelist_selected_purge_bodies_deep): same. * pan/articlelist.c (articlelist_all_purge_bodies): same. * pan/articlelist.c (articlelist_all_purge_bodies): same. * pan/util.c (test_linkify_text): same. * pan/message-window.c: removed appbar code. * pan/util.c (check_and_warn_if_version_change): same. 2001-08-28 Charles Kerr (Profiles) * pan/gui.c (send_feedback_cb): now uses identity-manager * pan/smtp.c: same. * pan/prefs.c: removed the Posting pieces from here, now that they're handled in Christophe's identity module. * pan/util.c (get_host_name): this isn't needed; we use Identities now. * pan/util.c (get_fqdn): same. * pan/util.c (get_default_author_address): same. * pan/util.c (get_default_author_from): same. (UI Tweaks) * pan/prefs.c: added a history pulldown with standard choices for external editors & external browsers. * pan/prefs.h: same. 2001-08-27 Christophe Lambin (Profiles) * pan/identities/identity-edit-ui.c: implemented the 'Custom Headers' tab for Profiles: each profile can now hold its own set of custom headers. * pan/message-window.c (revoke_identity/apply_identity): set the article's custom headers based on the Profile's custom headers. * pan/identities/identity-xml.c (write_identity): small bugfix in writing the custom headers to the data file. * pan/identities/identity.c (identity_find_custom_header_by_name): removed obsolete function. 2001-08-27 Charles Kerr (Bug Fixes) * pan/identities/identity-manager.c (construct_identity_from_prefs): fix scope problem that prevented creating a new identity from prefs. (Tweaks) * pan/article-filter-ui.c: added #include to make gcc happy. * pan/identities/identity-edit-ui.c: same. * pan/identities/identity.c (identity_find_custom_header_by_name): commented out unused function. 2001-08-27 Charles Kerr (Bug Fixes) * pan/text.c (text_read_more): fix bug that caused space reading to cause small articles to scroll off-window, then back again, before reading the next article. (External Editor) * pan/message-window.c: added External Editor support, finally. This is taken lock, stock, and barrel from Sylpheed. (Action Shuffling) * pan/article-actions.c: moved article deletion functions here from articlelist.c. Added code to remove from acache any deleted article. * pan/articlelist.c: when articles are removed, check & see if the selected message is one of them. If so, update the selection and, if "read on select" is turned on by the user, read the next message. 2001-08-27 Christophe Lambin (Identities / Profiles) * pan/gui.c: renamed identities to profiles. * pan/identities/identity-edit-ui.c: same. * pan/identities/identity-ui.c: same. * pan/identities/identity-xml.c: same. * pan/identities/identity-manager.c: same. * pan/pan.c: first time a user starts Pan, we'll now create a default Profile, instead of writing the info into gnome_config. * pan/dialogs/dialogs-newuser.c: same. * pan/identities/identity-manager.c: sync. * pan/identities/identity-manager.h: sync. 2001-08-26 Charles Kerr (Bug Fixes) * pan/articlelist.c: fixed the skips-last-thread navigation error. Thanks to Adrian von Bidder for reporting this bug. (Identities) * pan/identities/identity.c (identity_is_valid): new sanity check function. * pan/identities/identity-edit-ui.c (identity_edit_dialog_get_identity): if the identity is incomplete/invalid, return a NULL instead. * pan/identities/identity-ui.c (add_dialog_clicked_cb): add check to see if identity_edit_dialog_get_identity() returned NULL. 2001-08-26 Christophe Lambin (Identities) * pan/message-window.c: activated Identities. * pan/gui.c: same. * pan/Makefile.am: same. * configure.in: same. * pan/identities/identity-edit-ui.c: don't use the identity manager to get the default news & mail identities. * pan/identities/identity-ui.c: sync. * pan/identities/identity-manager.c: API change for setting defaults. * pan/identities/identity-manager.h: sync. * pan/identities/identity-ui.c: sync. * pan/base/group.c: added 'identity_name' to remember the last identity used to post to that group. * pan/base/group.h: same. 2001-08-24 Charles Kerr (GUI) * pan/gui.c: updated shortcuts & hotkeys; some were in conflict. * pan/articlelist.c: same. (Bugfix) * pan/text.c fontname(): Moved out of the #ifdef GTK_HTML block so that Pan will build for test users too. Thanks to Jed S. Baer for reporting this problem. (Speedups) * pan/base/group.c: replace the group_changed() callback with a groups_changed() callback so that we can batch updates of changed groups. This is useful when mass subscribing/unsubscribing during importing .newsrc files. * pan/base/group.c: replaced group_set_subscribed() with groups_set_subscribed(). * pan/grouplist.c: listen for groups_changed instead of group_changed. 2001-08-24 Christophe Lambin (Bug fixes) * pan/articlelist.c: make sure to clear 'unread_children' when marking all articles as read. * pan/gui.c: set the correct state on 'use monospace font' on startup. (Identities) * pan/identities/identity-edit-ui.c: code cleanup & memory leaks. * pan/gui.c: prepare for integration into the GUI. 2001-08-23 Charles Kerr (Show/Hide) * pan/gui-paned.c: added code to show/hide various panes based on user choice. * pan/gui.c: sync. * pan/prefs.c: sync. (Menu) * pan/gui.c: plugged back in the menu sensitive/insensitive code. Menus should be good to go now. 2001-08-23 Christophe Lambin (Identities) * pan/identities/*[ch]: added user interface for managing identities 2001-08-23 Charles Kerr * configure.in: bumped version number to 0.10.90 * pan/Makefile.am: tweaks to make automake 1.5 happy * pan/text.c (text_get_article_body): fix tab damange. * pan/articlelist.c: when user selects an empty group, automatically go to download new headers, rather than popping up a 'download headers' dialog. (Menus) * pan/articlelist.c: added accelerators, shortcuts for the shiny new menu items. * pan/gui.c: same. Also plugged in everything except the three toggle-pane-visible buttons. (Navigation) * pan/articlelist.c: added small correctness checks. 2001-08-23 Charles Kerr (Navigation) * pan/gui.c: updated the Navigation menu based on user suggestions. * pan/prefs.c: added 'skip uncached' and 'load on select' preferences for the navigation menu. * pan/gui.c: sync. * pan/articlelist.c: rewrote most of the navigation code. (Cleanup) * pan/article-filter-ui.c: include libgnomeui.h instead of gnome.h * pan/article-find.c: same. * pan/article-toolbar.c: same. * pan/articlelist.c: same. * pan/group-action.c: same. * pan/gruop-ui.c: same. * pan/grouplist.c: same. * pan/gui-headers.c: same. * pan/gui-notebook.c: same. * pan/message-check-ui.c: same. * pan/message-window.c: same. * pan/save.c: same. * pan/server-ui.c: same. * pan/status-item-view.c: same. * pan/task-decode.c: same. * pan/task-manager.c: same. * pan/text.c: same. * pan/dialogs/dialog-about.c: same. * pan/dialogs/dialog-group-props.c: same. * pan/dialogs/dialog-headers.c: same. * pan/dialogs/dialog-log-viewer.c: same. * pan/dialogs/pan-about.c: same. 2001-08-22 Charles Kerr (Group Actions) * pan/grouplist.c: removed the group 'action' functions for downloading messages/headers, subscribing/unsubscribing, deleting groups, and so forth. * pan/group-action.c: this is where the grouplist's 'action' functions get moved. (Menu Update) * pan/gui.c: updated Group menu based on feedback from the pan-users mailing list. * pan/prefs.c: added 'download_bodies_too' handling. * pan/gui.c: sync. (Bugfixes) * pan/task-headers.c (task_headers_run): small bugfix to remove glib warning. (Cleanup) * pan/dialogs/dialog-newuser: code cleanup. * pan/articlelist.c: removed debugging statements. * pan/grouplist.c: removed unused functions, made functions private where appropriate 2001-08-21 Charles Kerr (Removing Useless Junk) * pan/message-window.c: removed "open article in new window" * pan/articlelist.c: sync. * pan/task-body.c: sync. * pan/text.c: sync. (UI: Menus) * pan/articlelist.c: a little more menu work. 2001-08-21 Charles Kerr (Bug Fix) * pan/article-toolbar.c (custom_filter_selected_cb): fix bug that caused the articlelist to not be re-filtered when the user switched between Author and Subject filtering. (UI: Menus) * pan/gui.c: started the menu redesign discussed in pan-users. added some select-group, select-articles functions, regrouped other menu items in a way that makes more sense. * pan/gui-notebook.c: removed layout-specific selection code. * pan/gui-paned.c: same. * pan/server-ui.c: changed search path of where to insert the server menu buttons in the main menu. * pan/text.c: removed popup menu. (UI: Filter History) * pan/article-toolbar.c: added a popdown w/history in the article subject/author filter. Thanks to Adam Nevins for making this suggestion. * pan/grouplist: added a popdown w/history here too. (Feature: Use Monospace Font) * pan/prefs.c: added new preferences option: whether or not to use a monospace font in the body pane. You can configure both fonts in the preferences dialog. * pan/text.c: sync. * pan/gui.c: sync. 2001-08-20 Christophe Lambin (bug fix: send pending messages) * pan/base/article.c: make sure to save *all* headers to 'sendlater', so we have all the information to send them later. Thanks to T'aZ and Frank Van Damme for reporting problems in this area. * pan/base/article.h: same. (Identities) * pan/identities/*[ch]: landed initial data structures into CVS. 2001-08-18 Charles Kerr (bug fix: i18n) * pan/gmime: updated snapshot of GMime to get the g_mime_charset functions. According to fejj the CODESET patch in 0.10.0 has some issues. * pan/message-send.c: sync. (bug fix: font size in gtkhtml pane) * pan/text.c (colorize_html): work around apparent gtkhtml font-tags-can't-be-nested brane damage. Thanks to David Watson for reporting this bug. 2001-08-16 Charles Kerr Pan 0.10.0 Released! 2001-08-16 Charles Kerr (Bug Fix) * pan/task-group-count.c: don't update the group article low/high from this information, because that screws up counting of which articles are new the next time you fetch headers. 2001-08-15 Charles Kerr (Bug Fix) * pan/rules/rule-ui.c (apply_now_thread): Fix crash that occurred when applying rules to selected groups, when no group was loaded in the thread view pane. Thanks to T'aZ for reporting this. (Sanity Checks) * pan/nntp.c (nntp_article_download): better sanity checks. * pan/nntp.c (nntp_download_bodies): same. * pan/nntp.c (nntp_cancel): same. * pan/article-find.c (compare_article): same. * pan/article-actions.c (find_matching_sent_article): same. * pan/filters/filter-cached.c (filter_cached_test_articles): same. * pan/rules/rule-action.c (rule_action_apply): same. 2001-08-13 Charles Kerr (Bug Fixes) * pan/gui.c: the "Message" menu shortcut key conflicted with the "Edit" shortcut. Thanks to David Oberbeck for reporting this bug. * pan/articlelist.c (build_article_ctree_recursive): fix bug that caused follow-ups to a multipart post to not be added to the ctree. Thanks to Jed S. Baer for reporting this bug. * pan/text.c (add_inline_images_mpfunc): go ahead and show images even if they're not flagged as "inline". This is usenet, chances are the poster intended for them to be inline anyway. (GMime update) * gmime: update of gmime-parser.c and gmime-utils.c * pan/base/util-mime.c (pan_g_mime_parser_construct_message): sync. 2001-08-10 Charles Kerr (Release) * README * configure.in * NEWS * TODO * CREDITS * pan/dialogs/dialog-about.c: Updated for 0.10.0 release 2001-08-09 Christophe Lambin (Task Manager) * pan/task-manager.c: added keyboard shortcuts to cancel and reorder tasks. Thanks to Ryan Daniels for suggesting this. 2001-08-08 Christophe Lambin (Bug fixes) * pan/gui-paned.c (gui_paned_construct): allow the grouplist pane to shrink beyond its requisition size to account for people running under lower resolutions. Thanks to mdew for reporting this problem. 2001-08-06 Charles Kerr (Prefs UI) * pan/prefs.c: committed patch written by Mike Robinson to make the cache tab look a little cleaner. Thanks! 2001-08-06 Charles Kerr (Icons) * pan/gui.c: refresh icons for Help|Manual, Help|Feedback * pan/articlelist.c: added evo's icons for move/copy-to-folder. * pan/article-toolbar.c: added 'glasses' icon for watched threads. 2001-08-06 Stanislav Visnovsky * pan.desktop: Added Slovak messages from Marcel Telka 2001-08-06 Stanislav Visnovsky * CREDITS, NEWS: Added credits for translation by Marcel Telka. * configure.in: Added sk to ALL_LINGUAS * po/sk.po: Added Slovak translation from Marcel Telka 2001-08-02 Charles Kerr (Posting Headers) * pan/message-send.c: added support for pumping the charset from nl_langinfo instead of just hardcoding the charset. Thanks to Volodymyr M . Lisivka for the patch. * pan/message-window.c: in the "Extra Headers" field on a follow-up, try to add the X-Comment-To: header for Fido users. Thanks again to Volodymyr M . Lisivka for the patch. (UI Improvements) * pan/rules/rule-edit-ui.c: if the rule that the user selects for this filter is an empty filter, a warning is given. 2001-07-31 Christophe Lambin (Bug fixes) * pan/prefs.c (prefs_newsrc_page): toggling the 'subscribed groups only' and 'backup .newsrc' switches wasn't activating the 'Apply' button. 2001-07-31 Charles Kerr (Bug Fixes) * pan/text.c (update_body_pane_nolock): small cleanup. This seems to Make Gtk 1.2's GtkText widget a little happier. (UI Changes) * pan/base/file-grouplist.c: if we get an unsupported file format, ask "are you using an old version of Pan by accident?" because this is the typical cause for this error * pan/base/file-headers.c: sync. * pan/xpm/old_binary_complete.xpm: * pan/xpm/old_binary_incomplete.xpm: * pan/xpm/binary_complete.xpm: * pan/xpm/binary_incomplete.xpm: increase contrast with the new/old text article icons to make them easier to notice at-a-glance. * pan/xpm/filters.xpm: added a black triangle pointing down to indicate that this is a popdown menu button. * pan/gui.c: moved "task manager" to the top of the online menu to make it easier to find. Some people still don't know you can stop a running task. 2001-07-30 Charles Kerr (Bug Fixes) * pan/articlelist.c (articlelist_repopulate): fix array-bounds-write error introduced late last week. Thanks to Adrian von Bidder for leading me to this bug. 2001-07-29 Christophe Lambin (Text Wrapping) * pan/prefs.c: new feature to disable wrapping the body of a message when replying. Thanks to Twigboy for suggesting this feature. * pan/prefs.h: sync. * pan/message-window.c: sync. 2001-07-28 Charles Kerr (UI Changes) * pan/xpm/old_binary_complete.xpm: new icon. * pan/xpm/old_binary_incomplete.xpm: new icon. * pan/articlelist.c: sync. * pan/prefs.c: changed some of the new features' phrasing at Christophe's suggestion. (Canned Rules) * pan/rules/rule-manager.c: brought into sync with filter-manager with the graceful restoring of canned rules that have somehow been lost. 2001-07-28 Christophe Lambin (UI Changes) * pan/articlelist.c (articlelist_set_node_style_nolock): implemented coloring watched & ignored threads. (Bug Fixes) * pan/gui-paned.c (gui_paned_construct): Pan wasn't restoring its column widths for the article list. * pan/gui-notebook.c (gui_notebook_contruct): same. * pan/rules/rule-ui.c (apply_now_thread): refresh the article list when we manually apply a rule to the active group. * pan/rules/rule.c (rule_apply): return the number of articles matched, so that callers know whether they need to take some action. * pan/rules/rule.h: sync. 2001-07-27 Charles Kerr (Rule/Filter Changes) * pan/rules/rule-manager.c: replaced "Ignore Bozos" with "Delete Bozos". This way if a bozo posts in an interesting thread then we'll still have the interesting thread and only the bozo will get thrown out. 2001-07-27 Christophe Lambin (Filters) * pan/article-toolbar.c: new approach to setting custom filters. Custom filters can now be switching on and off in one click. (Bug Fixes) * pan/article-toolbar.c: when switching to custom filters, remove the filter phrase, since we're not filtering on that anymore. * pan/prefs.c: applying changes would change the font of all articles in the active group to bold. 2001-07-27 Charles Kerr (UI Changes) * pan/text.c: borrowed Sylpheed's "smooth scrolling" for the text window on space reading. * pan/prefs.c: added prefs to turn smooth scrolling on/off. * pan/article-toolbar.c: updated to the new envelope icons. * pan/xpm: removed unused xpm files. 2001-07-26 Charles Kerr (UI Changes: Colors, Icons, Fonts) * pan/article.h: added "new_children" field, mirroring "unread_children". Used in articlelist when boldfacing articles that have new replies. * pan/article.c: sync. * pan/article-thread.c (thread_articles): populate new_children * pan/articlelist.c: removed "new children" column * pan/articlelist.c: added new icon/color/font scheme for showing the user which threads have new replies, which threads have unread replies, which articles are new, which articles are read, etc. * pan/articlelist.c: added some icons to the articlelist menu * pan/prefs.c: sync in color/font settings for thread pane. * pan/grouplist.c: changed the "subscribed group" icon. * pan/gui.c: sync in the "subscribed group" menu buttons. * pan/gui.c: added the unread/total article qty to the titlebar * pan/gui.c (widget_set_font): rewritten as pan_widget_set_font() * pan/message-window.c: sync. * pan/text.c: sync. (Better Tracking of New Articles) * pan/file-grouplist.c: bumped file format version number to 5. The new version stores article_high_old. This way 'new' articles are 'new' until you fetch new headers from that group, EVEN IF you quit & restart Pan or leave the group and then come back later. (Email Addresses) * pan/*: replaced superpimp.org with rebelbase.com 2001-07-25 Charles Kerr (Bug Fixes) * pan/article-toolbar.c (article_toolbar_set_filter): didn't fire a `filter changed' event when the toolbar was set to a custom filter. Thanks to Christophe for noticing this. (Space Reading) * pan/text.c: the happy return of space reading! (Read Next/Prev Thread) * pan/articlelist.c (articlelist_view_prev_thread): new func. * pan/articlelist.c (articlelist_view_next_thread): new func. * pan/gui.c (navigate_menu): added buttons for these. (Usability) * pan/gui.c: added keyboard accelerators to every button in the main menu. Most buttons didn't have one. * pan/articlelist.c: same. * pan/articlelist.c (articlelist_delete_articles): when we delete articles from the articlelist, make sure select the next article. This makes deleting articles from the keyboard friendlier. (Safety Checks) * pan/articlelist.c (articlelist_set_selected_nodes): behave gracefully even if an array of NULL nodes gets passed in. 2001-07-24 Charles Kerr (Bug Fixes) * pan/article-list-toolbar-mediator.c: use the `rebuild' variable properly to avoid having an articlelist populated twice when a group is loaded. (Safety Checks) * pan/rules/rule.c (rule_apply): log an error if the filter which this rule relies on isn't found. In this case, all articles fail the filter. * pan/filters/filter.c (filter_remove_failures): in the case that a NULL filter is passed in, all articles should be removed. * pan/filters/filter-manager.c: By Christophe's suggestion, we now gracefully recreate builtin filters if they get deleted accidentally. 2001-07-24 Charles Kerr (Code Cleanup: gnksa_generate_message_id) * pan/base/gnksa.c (gnksa_generate_message_id): add a millisecond part to improve chances of uniqueness. * pan/base/gnksa.c (gnksa_generate_message_id_from_email_addr): new function that safely extracts a domain from an email address and passes it along to gnksa_generate_message_id(). Previously calls to gnksa_generate_message_id() did this on their own without any error-checking. * pan/base/article.c: sync. * pan/message-send.c: sync. * pan/message-window.c: sync. * pan/article-actions.c: sync. * pan/tests/test-gnksa.c: added tests for Message-ID generation. 2001-07-23 Charles Kerr (Bug Fixes) * pan/base/pan-glib-extensions.c (get_next_token_g_str): fixed bug that caused Pan to crash when a NULL string was passed in. Thanks to Shawn Lindsay for reporting this bug. * pan/tests/test-gnksa.c: added regression test to exercise get_next_token_g_str a little more. (Tweaks) * pan/article-toolbar.c (create_filter_from_ulong): smarter creating of filters from the filter_bits variable. Fewer filters when possible. 2001-07-23 Christophe Lambin (Bug Fixes) * pan/filters/filter-aggregate.c: fix bug that resulted in no articles being shown when all filter buttons were selected. 2001-07-22 Charles Kerr (Bug Fixes) * pan/gui-paned.c (gui_paned_construct): fix bug that caused the slider to get lost under the buttons at the top of the panes. Thanks to Owen Taylor for reporting & fixing this bug. 2001-07-22 Christophe Lambin (Rules) * pan/rules/rule-edit-ui.c: implemented applying rules on a subset of subscribed rules. * pan/rules/rule-xml.c: stores scope of each rule (i.e., using a wildcard, or a subset of subscribed newsgroups). * pan/rules/rules.dtd: sync. 2001-07-21 Charles Kerr (Bug Fixes) * pan/rules/rule-xml.c (create_rule): fix bug that caused apply_to_incoming to be set to true even when it was false. * pan/rules/rule-edit-ui.c (dialog_close_cb): make sure to unregister from the pan_callbacks() that we registered for when the dialog was created. * pan/thread-watch.c (thread_set_state): make sure the article's group gets its articles-dirty flag set. * pan/gui.c (rules_cb): ensure that only one rule dialog at a time gets popped up from the gui menu. * pan/gui.c (filter_cb): ensure that only one rule dialog at a time gets popped up from the gui menu. (Usability Tweaks) * pan/prefs.c: acache_flush_on_exit now defaults to FALSE for new users. Too many people didn't understand where their articles were going. * pan/gui.c: added a shortcut (ctrl-f) for the filter editor. * pan/filter/filter-aggregate.c (filter_aggregate_test_articles): return FALSE when no children in the filter, just for safety. (Filters & Rules) * pan/filters/filter-manager.c: implemented the canned filters: now when a new user starts Pan, "Bozos" and "Spam" filters are created. * pan/rules/rule-manager.c: implemented the canned rules: now when new users start Pan, "Ignore Bozos" and "Ignore Spam" rules are created. * pan/article-filter-ui.c: new file. It's a dialog for adding the current article to the spam and/or bozo filter in an easy way. * pan/articlelist.c: sync. * po/POTFILES.in: sync. * pan/filters/filter-manager.h: added "bozo_filter_name" global. * pan/filters/filter-manager.h: added "spam_filter_name" global. * pan/bozo.[ch] * pan/bozo-ui.[ch] * pan/filters/filter-bozo.[ch] * pan/dialogs/bozo-dialog.[ch]: removed obsolete files. Bozos are finally integrated into the Filter/Rule system. * pan/gui.c: sync. * pan/articlelist.c: sync. * pan/rules/rule-action.c: sync. * pan/rules/rule-edit-ui.c: sync. * pan/rules/rule-xml.c: sync. * pan/filters/filter-edit-ui.c: sync. * pan/filters/filter-xml.c: sync. * po/POTFILES.in: sync. (New Internal Utilities) * pan/util.c (pan_error_dialog_parented): new function. 2001-07-20 Christophe Lambin (Filters) * pan/article-list-toolbar-mediator.c: save and restore filter settings for individual groups. * pan/article-toolbar.c: sync. * pan/base/group.h: sync. * pan/base/group.c: sync. 2001-07-19 Charles Kerr (URL Viewing) * pan/util.c (pan_url_show): new wrapper around gnome_url_show that looks at user's local settings and BROWSER variable before punting to gnome_url_show. * pan/gui.c (pan_manual_url): sync. * pan/gui.c (pan_homepage_url): sync. * pan/text.c: (on_link_clicked): sync. * pan/prefs.c: added support for editing/saving external_web_browser. 2001-07-18 Charles Kerr (Threading) * pan/base/article-thread.c (thread_articles): Better threading of articles where the parent of a followup's message isn't available but one of its ancestors is. 2001-07-18 Charles Kerr (Bug Fixes) * pan/base/acache.c (acache_init): handle readdir failure without crashing -- occurred when the cache directory didn't exist & couldn't be created. * pan/base/acache.c (acache_shutdown): acache's two PanCallback objects weren't freed. * pan/base/newsrc-ui.c: fixed a small memory leak in the import/export dialog -- the path string wasn't freed. * pan/rules/rule-edit-ui.c (filter_to_string_recursive): fix small memory leak. The rule strings weren't freed. (Small Improvements) * pan/base/util-file.c (pan_make_temp): if the temp directory can't be used, fall back to $TMPDIR or just /tmp. 2001-07-18 Christophe Lambin (Filters) * pan/article-toolbar.c: clear the 'use custom filter' toggle when we're not using one. 2001-07-17 Charles Kerr * pan/base/newsrc-port.c: fixed a small memory leak in newsrc_export; lots of code cleanup & added comments. * pan/base/pan-glib-extensions.c (pan_strstr): added a NULL-friendly version of strstr. The rest of the code now uses this instead of strstr(). Pan was passing NULL to strstr() when the cache disk was full. 2001-07-17 Fatih Demir * .cvsignore, pan/base|filters|rules/.cvsignore: Added/extended the cvsignores. 2001-07-16 Charles Kerr (Bugfixes) * pan/gui.c (widget_set_font_on_realize): fix free-memory-read and free-memory-write bug. This fixes the ever-popular "1z" bug. Adam Huffman should get the credit for this one since he tracked it down to the font-setting code. * pan/filters/filter-xml.c: make filter_xml_read check the return code from xmlParseFile. Same as yesterday's fix, applied to a different potential bug. * tests/test-message-check.c: added a test to make sure that Adrian von Bidder's followup message doesn't get marked with a "new new content" message. This is just a regression test for the code fixed by Christophe yesterday. (Filters) * pan/base/group.c: free the filter_name string in the group's destructor. * pan/base/file-grouplist.c: save & restore the filter_name in the grouplist file; bumped the file format version to 4. (Tweak) * pan/configure.in: Tell what version of gnome-libs we're looking for. * pan/configure.in: We were looking for libxml >= 1.8.11; this has been fixed to look for [1.8.11....2.0.0). Got this idea from gal. 2001-07-16 Christophe Lambin (Bugfixes) * pan/rules/rule-ui.c: 'Add New' crashed when no filters were defined. Thanks to Jed S. Baer for reporting this problem. * pan/rules/rule-xml.c: cleaner way of handling 'no rules'. * pan/filters/filter-xml.c: cleaner way of handling 'no filters'. 2001-07-15 Adam Huffman (Bugfixes) * pan/rules/rule-xml.c: make rule_xml_read check the return code from xmlParseFile. Thanks to Jed S. Baer for reporting this problem. 2001-07-15 Christophe Lambin (Bugfixes) * pan/base/message-check.c: under certain conditions, Pan could erroneously decide that there's no new content in a posting. Thanks to Adrian von Bidder for reporting this problem. 2001-07-12 Christophe Lambin (Bugfixes) * pan/text.c: improve our handling of an article's References, where some newsreaders use multiple spaces to separate MessageIDs. Thanks to Adrian von Bidder for reporting this problem. 2001-07-10 Christophe Lambin (Filters) * pan/filters/filter-ui.c: don't delete a filter if there are still rules using that filter. * pan/rules/rule-manager.c: sync. * pan/rules/rule-manager.h: sync. * pan/rules/rule-edit-ui.c: set the active filter in the menu. 2001-07-04 Christophe Lambin (Bugfixes) * pan/task-headers.c: only update the range of a group once we've removed expired articles, so that we can detect whether these articles were read or not. * pan/base/file-headers.c: sync. * pan/base/group.c: sync. * pan/base/group.h: sync. * pan/base/newsrc.c: sync. 2001-06-27 Charles Kerr (Filters) * pan/articlelist.c: in the filtering task description, give the name of the filter (if the filter has a name). * pan/article-toolbar.c: now handles going from one custom filter to another correctly. * pan/article-toolbar.c: cleaned up some of the text messages. (Bozo Dialog) * po/POTFILES.in: * pan/gui.c: * pan/bozo-ui.c: new file -- added the bozo dialog back in. * po/POTFILES.in: * pan/dialogs/rules.glade: * pan/dialogs/rules_interface.[ch]: * pan/dialogs/rules_callbacks.[ch]: removed dead files. 2001-06-26 Charles Kerr * configure.in: halfway updated to autoconf 2.50. Didn't change to configure.ac, as automake's patches seem to not handle it completely. 2001-06-23 Charles Kerr (Filters & Rules) * pan/rules/rule-ui.c: added "apply to selected groups" button. * pan/rules/rule-ui.c: added "apply to subscribed groups" button. * pan/rules/rule-xml.c: fix bug in loading rules, to see if the rule should be applied to incoming messages or not. * pan/rules/rule-edit-ui.c: added "apply to incoming" button. * pan/rules/rule-ui.c: added hit ratio column in clist. * pan/rules/rule-ui.c: make the edit/remove/apply buttons insensitive whenever no rule is selected. * pan/filters/filter-ui.c: make the edit/remove buttons insensitive whenever no filter is selected. 2001-06-20 Charles Kerr (Filters) * pan/filters/filter-saved.c: new Filter * pan/filters/filter-edit-ui.c: sync. * pan/filters/filter-xml.c: sync. * pan/article-toolbar.c: sync. Now we can finally plug the saved/queued/idle buttons into the rule generator. 2001-06-20 Christophe Lambin * Remove reference to task's high_priority field where appropriate * Posted articles are now added to the front of the queue. 2001-06-20 Charles Kerr (Filter Usability) * pan/article-toolbar.c: made the way of toggling between custom filters and the builtin filter flags a little nicer. (Filter Matches - What to Show) * pan/articlelist.c: * pan/article-list-toolbar-mediator.c: * pan/article-toolbar.c: added ability on what articles to show on a filter match: article, article+references, article+replies, or entire thread. 2001-06-15 Charles Kerr (Rules & Filters) * pan/article-toolbar.c: more love. * pan/rules/rule-xml.c: * pan/rules/rule-ui.c: * pan/rules/rule-edit-ui.c: * pan/rules/rules.dtd: landed new rules code into CVS. The new rules are integrated with the new filters landed last week, yay! * pan/pan.c: * pan/gui.c: sync. * pan/task-headers.c: sync. 2001-06-14 Charles Kerr (Filter Memory Management) * pan/article-toolbar.c (create_filter_from_ulong): make the resulting filter a little smaller. * pan/article-toolbar.c (update_custom_menus): fix FMR error. * pan/filters/filter-ui.c (filter_dialog_close_cb): fix memory leak. (XML Utilities) * pan/pan-glib-extensions.c (pan_str_escape): * pan/pan-glib-extensions.c (pan_str_unescape): new utility function. * pan/test.c (make_safe_for_html): superceded by pan_str_escape * pan/filters/filter-xml.c (pan_g_string_append_escaped): now use pan_str_escape. 2001-06-13 Charles Kerr (Filter Memory Management) * pan/filter-xml.c: make sure we unref articles after adding them as children to filter_aggregate. * pan/article-toolbar.c: same. * pan/article-toolbar.c: refer to the filters by name, rather than by pointer value, because filters are all copy-by-value and so the pointers are not reliable. * pan/article-list-toolbar-mediator.c: make sure we unref the filter when we're done with it. 2001-06-13 Charles Kerr (Author Name Attribution) * pan/message-window.c: added Christophe Lambin's patch for %n being replaced with the short author name string in the attribution lines. * pan/prefs.c: sync. (Filters) * pan/filters/filter.c (filter_test_articles): new virtual function. This lets us test batches of articles recursively in a slightly more efficient way. * pan/filters/filter-aggregate.c (filter_aggregate_test_articles): if there's only one filter in the aggregate, just call filter_test_articles() for the aggregate. * pan/filters/filter-phrase.c: allow filtering on the Message-ID field. * pan/article-toolbar.c: polish, polish, polish. 2001-06-12 Charles Kerr (Filters) * pan/filters/filter-thread.c: added "neither watched nor ignored" state in filter-thread. * pan/filters/filter-edit-ui.c: sync. * pan/filters/filter-xml.c: sync. (Filter UI) * pan/article-toolbar.c: more love. About 90% ready. The traditional FILTER_STATE filters are faster; you can edit filters from the cascading menu; the code's been tidied up some more. * pan/articlelist.c: emit a status message telling the user when the articles are being filtered. This is as much for my benifit as the user's: this is a useful way of seeing how long filtering takes. (Dialogs) * pan/gui.c (filter_cb): parent the dialog before showing it. * pan/dialogs/rules_callbacks.c (dialog_rules): same. * pan/dialogs/rules_callbacks.c (dialog_edit_rule): same. (Cleanup) * pan/acache.c: use the acache_flush_on_exit global instead of using gnome_config. 2001-06-10 Charles Kerr * pan/filters/*[ch]: landed filters into CVS. 2001-06-08 Charles Kerr * pan/group.h (group_chunk_string): added boolean specifying whether or not to try to share the string. Common strings such as author name, Subject, References should be shared, but strings unique in the group such as Message-ID or Xref shouldn't be. * pan/article.c (article_set_header): the HeaderAction argument now has two possible values: DO_CHUNK and DO_CHUNK_SHARE, which decide how to call group_chunk_string(). The old behavior of sharing all strings added unneeded overhead for the group's GStringChunk. * pan/gui.c: * pan/nntp.c: * pan/message-window.c: sync. (Message IDs) * pan/identities/identity.[ch]: added a field to hold a custom fqdn for Message ID generation. * pan/identities/identity-xml.c: sync. * pan/identities/identity-edit-ui.c: sync. * pan/message-window.c (populate_article_from_mw): if the selected profile has a fqdn, use it to generate the MessageID. (Bug Fixes) * pan/prefs.c (prefs_apply_cb): fixed a crash when trying to set custom foreground and/or background colors. This seems to be related to some GTK themes causing gtk_rc_get_style() to return NULL. Thanks to T'Az and Krishna Naik for reporting this problem. * pan/prefs.c: fixed some issues with yesterday's commits. 2001-12-11 Charles Kerr (UI Tweaks) * pan/prefs.c: added a help dialog to show the date format strings. * pan/prefs.c: moved "Layout" to the "Display" section * pan/prefs.c: moved News/Mail to "Servers - News" and "Servers - Mail" * pan/message-window.c: Clicking on the "Use External Editor" in the message composer now desensitizes the entire message composer window until the external editor has been closed. This fixes all kinds of possible issues such as pressing the edit button twice, or hitting send while the external editor's still open, etc. 2001-12-09 Charles Kerr (New/Unread/Old/Read) Committed first draft of the changes described on pan-users. 2001-12-09 Christophe Lambin (Bug Fixes) * pan/message-window.c (populate_post_info_pane): if Followup-To is set to 'poster', only send the article as an email. Thanks to Christian Lohmaier for reporting this. 2001-12-07 Christophe Lambin (Bug Fixes) * pan/task-headers.c: after deleting all headers, 'Get New Headers' would download an old header. 2001-12-06 Christophe Lambin (UI Tweaks) * pan/prefs.c: modified the layout somewhat to make the Preferences window smaller. It now fits on a screen running at 800x600. 2001-12-06 Charles Kerr (GUI Headers) * pan/base/article.h (article_get_newsreader): removed unused func. * pan/base/article.h (article_get_header_run_hash): new function. * pan/base/run.[ch]: new module. * pan/gui-headers.c: use article_get_header_run_hash. (Strings on the Stack) * pan/base/pan-glib-extensions.h: pan_strdup_a: new alloca macro. * pan/base/pan-glib-extensions.h: pan_strndup_a: same. 2001-12-06 Charles Kerr (Bug Fixes) * pan/base/article.h: the replaced 'supercede' with 'supersede'. Apparently my "fix" for 0.11.1 was wrong. son-of-1036 is explicit that there is no 'c' in supersede. :) (Usability) * pan/base/acache.c (acache_init): log a warning if the cache directory can't be read. * pan/base/util-file.c (directory_check): log a warning if the directory can't be found and/or created. 2001-12-05 Charles Kerr (Bug Fixes) * pan/base/file-grouplist.c: fixed bug that caused upgrading from really old versions of Pan difficult. Thanks to Brandon McCombs for reporting this bug. 2001-12-04 Charles Kerr (Housekeeping) * NEWS: * README: * configure.in: Bump version number to 0.11.1. (Bug Fixes) * pan/queue.c: fix a handful of mutex-related bugs. 2001-12-04 Duarte Loreto * configure.in: Updated to add new translation to Portuguese (pt) in ALL_LINGUAS. * NEWS: added pt translation to New features (as told in po/README_TRANSLATORS.txt) * CREDITS: Added pt translation to credits for 0.11.1 2001-11-03 Charles Kerr (Bug Fixes) * pan/base/util-file.c (check_directory): make sure there's always a G_DIR_SEPARATOR at the end of the path before we call mkdir. Apparently Mac OS X hates the trailing /. Thanks to Max Horn for reporting this. * pan/test (Makefile.am): explicitly link against $(INTLLIBS). Thanks to Max Horn for reporting this. * pan/all-over-the-place: changed invocations of ctype's isxxx(*pch) from isxxx((int)*pch) to the correct isxxx((guchar)*pch). Thanks to Morten Welinder for reporting this bug. 2001-12-02 Wang Jian * configure.in(ALL_LINGUAS): Added zh_CN for Simplified Chinese. 2001-11-28 Charles Kerr (Bug Fixes) * pan/base/article.h (HEADER_SUPERSEDES): s/supersede/supercede/. * pan/article-actions.c: same 2001-11-27 Christophe Lambin (GUI Headers) * pan/gui-headers.c (gui_headers_set_nolock): added the newsreader as one of the displayable headers. This basically looks for the article's 'User Agent', 'X-Newsreader' or 'X-mailer' header and displays the value. Thanks to Jim22 for requesting this feature. * pan/gui-headers.h: same. * pan/prefs.c (prefs_text_page): same. * pan/base/article.c (article_get_newsreader): new function for easily extracting the above. * pan/base/article.h: same. 2001-11-27 Charles Kerr (Bug Fixes) * pan/base/gnksa.c (gmtime_r): fix typo that caused Pan to not compile on Mac OS X. Thanks to Max Horn for reporting this. (UI Tweaks) * pan/articlelist.c: the left/right arrow keys now collapse/expand the currently-selected threads. Thanks to Chris Petersen and Martin Wulffeld for suggesting this. (Housekeeping) * configure.in: bumped version number. * README: same. * Makefile.am: added depcomp because automake is only human. 2001-11-26 Charles Kerr (Acache Tweaks) * pan/base/acache.c: changed the lookup table's key from filename to Message-Id. We always have the Message-Id, but the filename is derived, so this saves needless derivation cycles. * pan/base/acache.c: removed "filename" from acache's internal tables. The filename was only used when removing an article from the cache, which is uncommon enough that we're better off deriving the filename at that point instead of using memory & cycles to keep it all the time. (Small Bugfixes) * pan/base/article.c (articles_set_read): add missing debug_exit(). * pan/base/decode.c: cast to avoid Solaris warning. * pan/gui.c (navigation_menu): Fix typo. Thanks to Nam SungHyun for reporting this bug. 2001-11-25 Charles Kerr (Paranoia) * pan/base/article.c (article_set_from_raw_message): new safety checks. * pan/base/article.c (set_from_raw_init_header_gmhfunc): same. * pan/base/gnksa.c (generate_message_id_from_email_addr): added g_warning if an invalid email address is passed in. (Random Tweaks) * pan/base/pan-glib-extensions.c (get_next_token_range): renamed to the more-accurately-named get_next_token_run, 2001-11-24 Charles Kerr (Bug Fixes) * pan/articlelist.c (fire_group_chnaged): since this is an idle func, we need to return 0 here or the function will keep being fired forever, pegging the CPU when the user hits "empty group". * pan/message-send.c: when sending articles, make sure to ref/unref PAN_SENT's articles, because the article being sent is placed into that folder, and the article needs to stay alive for the entire span of the task. * pan/base/article.c (article_is_valid): the group-has-a-memchunk check was not valid for folders, which prevented articles from being posted correctly. Moved the group check up to a call to group_is_valid(), which is a better place to keep group's implementation details. * pan/base/group.c (group_is_valid): if the group isn't a folder and the article refcount is >0, make sure _article_chunk!=NULL. 2001-11-24 Christophe Lambin (Bug Fix) * pan/base/newsrc-port.c (newsrc_import): fixed segfault when the newsrc file exists, but Pan is unable to read it (e.g. permissions). Thanks to Joris Lambrecht for reporting this bug. 2001-11-23 Charles Kerr (Bug Fixes) * pan/base/article-thread.c (check_multipart_articles): now parts 2..n are marked MULIPART_ALL or MULTIPART_SOME. Previously only the first article was marked this way, which caused troubles when filters looked at individual articles to see if they were complete/incomplete. 2001-11-22 Charles Kerr (Random Tweaks) * pan/base/util-mime.c (pan_header_is_8bit_encoded): new function. * pan/base/article.c (article_set_author_from_header_impl): remove at least six malloc/free calls per call. * pan/nntp.c (nntp_download_headers): remove at least four malloc/free calls per header downloaded. * pan/nntp.c (nntp_article_downloaded): remove at least nine malloc/free calls per article body. Yes, I know this is unimportant, I just don't want to start anything big before family gets here. :) 2001-11-21 Charles Kerr (Build Fix) * pan/thread-watch.c (thread_set_state): renamed pan_thread_set_state to avoid name collision with Mac OS X. * pan/thread-watch.c (thread_get_state): renamed pan_thread_get_state to avoid name collision with Mac OS X. * pan/articlelist.c: sync. * pan/filters/filter-thread.c: sync. * pan/rules/rule-action.c: sync. * configure.in: added gmtime_r and localtime_r checks. * pan/base/gnksa.c: If gmtime_r or localtime_r aren't available, define them here. Thanks to Max Horn for these Mac OS X fixes. (Random Tweaks) * pan/base/pan-callback.c: try to handle the steady state without any heap memory allocation or mutexes. 2001-11-21 Christophe Lambin (Bug Fix) * pan/filters/filter-xml.c (populate_top): fixed a bug that caused non-visible filters to reappear after restarting Pan. Thanks to Douglas Bollinger for reporting this. 2001-11-20 Christophe Lambin (Filters) * pan/base/file-grouplist.c (read_group_data/write_groups): bumped up file version to 8. We now also save the group's filter_show field ('Which Articles to Show'). Thanks to Uli Wachowitz for suggesting this. 2001-11-20 Charles Kerr * If some bozo includes a windows pathname in the filename of an attachment, strip out that pathname. 2001-11-19 Charles Kerr (Bug Fixes) * pan/articlelist.c (headers_fetched) fixed 0.11.0 bug that, when an empty group was activated, Pan would go to the server twice for new headers instead of once. In addition to pointless load, if you were really unlucky there would be one or two new articles in the second load, marking the ones from the first run and leaving you scratching your head "how did I just download a batch of old articles from a new group?" :) (Usability) * pan/task-save.c (task_save_run): Don't fail the task if we fail to decode an article that appears to not have attachments: the user may have left the "save attachment" button on in the "save article" dialog and shouldn't be penalized for that. (Safety Checks) * pan/base/article.c: added more sanity checks to check the validity of arguments passed in to artcile functions. 2001-11-18 Charles Kerr (Bug Fixes) * pan/save-ui.c: commit bugfix patch provided by Joseph Turian. * pan/task-save.c: fix a memory leak reported by Rick at mynet.dhs.org. 2001-11-17 Charles Kerr (Fixes for Terrible Bugs) * pan/base/file-headers.c (file_headers_save_group): * pan/base/file-headers.c (file_headers_save_folder): call directory_check() to ensure that the directory exists before we open the save file. * pan/base/file-headers.c (file_headers_save_group): * pan/base/file-headers.c (file_headers_save_folder): changed the return val from void to boolean so that the caller can know if the save failed. * pan/base/file-headers.c (file_headers_save_group): * pan/base/file-headers.c (file_headers_save_folder): log an error to the Pan Error Log if the save failed. * pan/base/util-file.c (pan_rename): return a gboolean, instead of a void, so that the caller can know if the rename was successful or not and take appropriate actions. * pan/base/util-file.h: sync. (Save State) * pan/base/server.c (server_add_groups): save the server's grouplist to disk whenever groups are added. * pan/base/serverlist.c (server_folders_load): when adding Pan's builtin folders, make sure to batch them up into a single call to server_add_groups() s.t. the grouplist is only saved once. All other callers already batched the added groups... * tests/test-newsrc.c: * tests/test-decode.c: * tests/test-message-check.c: turn off autosaving off in places of regression tests where it makes no sense. (Usability) * pan/task-grouplist.c: make some status messages clearer. * pan/task-headers.c: same. 2001-11-16 Charles Kerr (Clear Groups) * pan/group-ui.c (group_empty_dialog): reworked this to handle multiple groups in a single dialog, instead of having one dialog per group. Thanks to Vadim Berezniker and Jim Henderson for suggesting this feature. 2001-11-15 Christophe Lambin (Bug Fix) * pan/queue.c (queue_run_thread): when a task fails, give the queue a nudge. This should fix the stalled queue problem reported by Alex V Flinsch, Alan Young and Gabi Davar. 2001-11-14 Charles Kerr (More Build Fixes courtesy of Alan Young) * pan/articlelist.c: changed some "g*array->len > 0" to "g*array->len > 0u" to make Compaq's C compiler happy. * pan/text.c: same. * pan/base/Makefile.am: add GTK_CFLAGS to INCLUDES. * pan/filters/Makefile.am: same. * pan/identities/Makefile.am: same. * pan/rules/Makefile.am: same. 2001-11-14 Charles Kerr (Pedantic) * pan/base/argset.h: the function passed to pthread_create() needs to return a void*, not void. * pan/rules/rule-ui.c: worker thread func return a void*, not void. * pan/grouplist.c: same. * pan/queue.c: same. * pan/base/decode.c: changed some C++-style comments to C-style. * pan/article-toolbar.c: same. * pan/gui.c: same. * pan/base/article.c: added explicit uchar/char casts. * pan/base/util-mime.c: same. * pan/filters/filter-xml.c: same. * pan/filters/rule-xml.c: same. * pan/filters/identity-xml.c: same. * pan/nntp.c: same. * pan/text.c: same. * pan/base/article.h: removed a comma from end of an enum list. * pan/base/article-thread.h: same. * pan/base/message-check.h: same. * pan/filters/filter-phrase.h: same. * pan/articlelist.c: "static struct arrayname [];" isn't legal -- remove the static keyword to make ansi happy. * pan/text.c: same. 2001-11-13 Charles Kerr (Layout) * pan/gui.c (gui_shutdown): fix bug that incorrectly saved the hpaned/vpaned values for layout type 5 (3 vertically stacked panes). Thanks to Douglas Bollinger and Erik W. Hanson for reporting this bug. * pan/gui.c (toggle_pane_visiblity): only rebuild the layout if the new state != the old state. This prevents the layout from being rebuilt three unnecessary times during startup when initializing the menu widgets. * pan/gui-paned.c: sync. (GUI Paned/Notebook) * pan/gui.c: rewrote all the crufty gui-paned/gui-notebook code. Now keyboard activation is be more consistent between the two layouts. * pan/gui-notebook.c: same. * pan/gui-paned.c: same. (Thread/Unthread Header Pane) * pan/prefs.c (header_pane_is_threaded): new variable for prefs_init(). * pan/gui.c: save header_pane_is_threaded to gnome_config() on exit. * pan/articlelist.c: use header_pane_is_threaded. This solves a bug with having to press the thread/unthread button twice before it would work properly. Thanks to Jed Baer for reporting this bug. (Grouplist Usability Changes) * pan/grouplist.c: remembering the last Pan session's group_mode is not really in sync with what would be most usable -- almost always people want to see "subscribed" for daily use, and then look at "all" if want to subscribe to a group. The new scheme uses this fact to decide the mode: when bootstrapping/switching to a server, if the server has subscribed groups, we set the view to "subscribed". Otherwise it's likely the user wants to subscribe to some, so we set the view to "all", and if there are no groups, also show the "download group list?" dialog. * pan/grouplist.c: whenever loading a server and we can't find any groups for that server, show the "download group list?" dialog. Previously this was only done the first time, for new users. (Plumbing) * pan/base/file-grouplist.c (file_grouplist_exists): now returns a ServerGroupsType instead of a bool so that you can tell what _type_ of groups exist. * pan/base/file-grouplist.c (save_groups_to_file): if no articles exist in a grouptype, unlink the corresponding .dat, .idx files. * pan/base/group.c (groups_set_subscribed): when the subscribed state of groups change, save the affected grouplists for safekeeping. 2001-11-12 Charles Kerr (Bug Fixes) * pan/articlelist.c (articlelist_selection_changed_cb): ack, we were leaking a GPtrArray each time we read an article! (Usability) * pan/gui.c (view_menu): renamed the 'zoom' functions' menu text to to something more easily understood. Thanks to Cory Dodt for this suggestion. * pan/article-toolbar.c (article_toolbar_new): added "filter by message-id" to the article toolbar's filter. * pan/gui.c (gui_key_press_cb): shift-delete will delete threads again now. This went away for awhile for no apparent reason. Thanks to Kevin (kevlinux) for bringing this to my atttention. * pan/dialogs/dialog-newuser.c (get_default_news_server): If the environment variable NNTPSERVER isn't set, get the host's domain and prepend it with "news.". This should correctly guess the news server for most .edu sites and domestic cable modem users. 2001-11-11 Charles Kerr (Usability) * pan/gui-paned.c (gui_paned_enter_clicked_nolock): if >1 article is selected when Return is pressed, download & show the first article as before, but also download articles 2..n in a second task. Thanks to Cory Dodt for suggesting this improvement. * pan/base/article.c (article_get_unique_threads): the return array should maintain the sort order of the incoming articles, instead of in an unordered bag. For example when the user hits "Download Threads", one wants to see the articles download from the top article on down, rather than in a random pattern. Thanks to Cory Dodt for suggesting this improvement. (Bug Fixes) * pan/base/acache.c (acache_set_message): fix bug that caused the article cache to grow larger than the user-specified maximum. Thanks to Muralito and Alan Young for reporting this bug. * pan/base/article.c (article_get_thread_message_id): return the right message-id even if the Article passed in has a broken References: header. We do this by walking up the article hierarchy (because article_thread does a pretty good job of threading even without References) before looking at the References: header. This fixes a bug that kept some threads from being Watched or Ignored properly when the user hit Watch or Ignore. Thanks to David Watson for reporting this bug. 2001-11-10 Charles Kerr (Usability) * pan/base/decode.c: if the decode file can't be created for whatever reason (for example, the specified directory isn't writable) then send an error to the Pan log and fail the task. Thanks to Sebastien Leclair for suggesting this. * pan/task-save.c: sync. * pan/base/util-file.c (directory_check): change retval from void to a gboolean that tells whether or not the specified directory exists. 2001-11-09 Charles Kerr (Bug Fixes) * pan/pan.c: moved PAN_SENT and PAN_SENDLATER to pan/base/serverlist.c, so that they will be defined in the lowest-level library in which they're used. This fixes a compile error reported by Francesco Lamonica and Gavi Dabar. (GUI Tweaks) * pan/gui.c: replaced "Get Specific Articles..." with "Download Articles..." by popular demand from Jake Zhukov and Alex Flinsch. (Save Setup) * pan/base/save-setup.c: removed -- it's too risky in a threaded app. * pan/articlelist.c (clear_group_nolock): save here instead. * pan/articlelist.c (set_group_mainthread_end): and here. * pan/task-headers.c (task_headers_run): and here. * pan/base/group.c (group_unref_articles): and here. * pan/file-headers.c (file_headers_save): added a mutex s.t. only one group can be saved at a time. This prevents the same group from being saved twice at the same time and seems to make Pan run a little more smoothly too. (Watch / Ignore Threads) * pan/articlelist.c (articlelist_selected_thread_watch_nolock): faster watching of multiple threads. * pan/articlelist.c (articlelist_selected_thread_watch_nolock): if two articles in a thread were selected when 'watch' was hit, the thread wasn't watched (actually, it was watched, then unwatched when the second article was checked). 2001-11-08 Charles Kerr (Bug Fixes) * pan/base/save-setup.c (save_setup_impl): put a mutex in here so that we don't get two threads saving the setup concurrently. * pan/group.c (group_unref_articles): fix thread issue with calling save_setup(). This was causing all kinds of problems yesterday. * pan/group.c (group_destructor): correct the order in which items are freed. This fixes a barrelful of FMR, FMW, ABR, and ABW errors. * pan/text.c (text_pane_popup_menu): added "GNOMEUIINFO_END" to the end of this array. Fixes ABR and ABW errors. * pan/acache.c (acache_set_message): Fix memory leak. * pan/prefs.c (prefs_servers_changed): If the server list has changed, make sure it's saved to disk for posterity when user hits Apply or OK. (Testing) * pan/base/article.c (article_is_valid): add more tests. * pan/base/article.c (articles_are_valid): new convenience function for sanity checks. * pan/base/group.c: sync. * pan/base/article-thread.c: sync. (Save Setup) * pan/save-setup.c: save_setup now comes in two flavors, save_setup_now() and save_setup_idle(), to distinguish priority. 2001-11-07 Charles Kerr (Bug Fixes) * pan/base/group.c: call save_setup() whenever a group's article refcount goes to zero. This is 'crash insurance' was discussed on pan-users. * pan/nntp.c (nntp_download_headers): don't call group_set_articles_dirty() here -- that should be (and is) done when group_add_articles() in called with the headers generated by nntp_download_headers(). * pan/base/log.c: added a thread mutex to control access to the Pan log. This solves a bug reported by Jed Baer where one thread was halfway through shutting down the Pan log when another thread logged a shutdown message and confused everything. (Menu Changes) * pan/gui.c: moved "Delete all Articles" to "Empty ..." next to "Delete" in the group menu. Thanks to jzhukov for suggesting that this be moved. * pan/articlelist.c: added "Delete All" next to "Delete" and "Delete Thread" in the article menu & popup menu. Thanks to jzhukov for suggesting that this be moved. 2001-11-06 Charles Kerr (Widen the filter_bits to hold the new "by me/by others") * pan/base/group.h: (filter_bits): widened from guint16 to guint32 * pan/base/file-grouplist.c: bumped format version number to 7. The only change is that if the loaded version <= 6, we turn on the widened filter bits with |= 0xFFFF8000 to make sure the "by me" and "by others" bits are turned on by default. 2001-11-06 Christophe Lambin (Filters - Articles by me) * pan/article-toolbar.c: added new filter to the toolbar. * pan/article-list-toolbar-mediator.c: sync. * pan/base/group.h: sync. * pan/xpm/by_me.xpm: new icon for toolbar filter. * pan/xpm/by_others.xpm: same. * pan/filters/filter.dtd: added new filter definition. 2001-11-05 Charles Kerr (Bug Fixes) * pan/base/group.c (group_ref_articles): only call group_set_article_qty if we've just loaded headers from disk and therefore have idea to believe that the article qty has changed. This prevents a gui double lock in rare circumstances. * pan/base/group.c (group_thread_if_needed): put the mutex lock before the (if_article_threading_dirty) check instead of after, so that multiple threads don't hit that and both, hitting the dirty flag, think that they need to thread the articles. Threading once in enough. * pan/base/article-thread.c (thread_articles): slightly faster threading of articles. 2001-11-05 Christophe Lambin (Filters) * pan/filters/filter-mine.[ch]: implemented a new filter to automatically select articles posted by the user. This is done by cross-referencing the article's author with those in the user's Profile(s). * pan/filters/filter-edit-ui.c: sync. * pan/filters/filter-xml.c: sync. * pan/filters/Makefile.am: sync. 2001-11-03 Charles Kerr (Bug Fixes) * pan/articlelist.c: flag/unflag thread didn't work properly. Thanks to Peter Borgmann for reporting this bug. * pan/nntp.c: when collapsing a double period as described in RFC977 2.4.1, only erase one of the damn periods instead of both of them. Thanks to Thomas K. Gamble for reporting this embarassing bug. 2001-11-02 Charles Kerr Pan 0.11.0 Released! 2001-10-31 Charles Kerr (Bug Fixes) * pan/base/group.c: silenced three glib warnings. Thanks to David Oberbeck for reporting this bug. 2001-10-30 Charles Kerr (Bug Fixes) * pan/message-window.c (create_body_pane_nolock): ensure that control+return is a shortcut for "Send Now" as in Agent & Gravity. Thanks to Himanshu J. Gohel for reporting this bug. 2001-10-29 Charles Kerr (Bug Fixes) * pan/article-toolbar.c (article_toolbar_set_filter): when the caller sets a new filter in the toolbar, make sure to update the GnomeEntry search field to reflect the new filter. * pan/base/util-wrap.c (rot13): Fixed bug in the rot13 code that truncated lines when they encountered characters like ā, ō, or č. Thanks to Nightshade for reporting this bug. * pan/tests/test-wrap.c: added regression test to ensure that characters like ā, ō, or č don't truncate lines. 2001-10-26 Charles Kerr (Bug Fixes) * pan/artlclelist.c: Fixed 0.10.0.93 that didn't properly show new articles added to the active group. (Housekeeping) * po/et.po: added new Estonian translation by Tõivo Leedjärv. * gmime: sync with fejj's code. 2001-10-25 Christophe Lambin (Bugfix) * pan/queue.c (queue_run_thread): fixed thread bug that caused tasks to get stuck in 'queued' state. Thanks to Frederik Vanrenterghem, Jed S. Baer and Alan Young for reporting this. 2001-10-25 Charles Kerr (FreeBSD Build Fixes) * pan/filters/filter-phrase.h: #include before #include to compile under FreeBSD. Thanks to Christian Kuhtz for this suggestion. * pan/text.c: removed #include , which doesn't exist on FreeBSD -- instead, just prototype it directoy. Thanks to Christian Kuhtz for this suggestion. * pan/base/gnksa.c: use gettimeofday() instead of ftime(). Thanks to Christian Kuhtz for this suggestion. 2001-10-22 Charles Kerr (Popup Menus) * pan/articlelist.c: added popup menus back in. * pan/text.c: same. 2001-10-22 Christophe Lambin (bye bye libESMTP) * pan/smtp.c: restored the pre-libESMTP version of SMTP support. LibESMTP definitely seems like a good candidate for enhancing Pan's support for SMTP. However, at this time there remain too many packaging issues. Too bad. Maybe later. * pan/Makefile.am: same. * configure.in: same. * pan.spec.in: same. * acconfig.h: same. 2001-10-21 Charles Kerr (UI Tweaks) * pan/prefs.c: added a third quoted depth ">>>" color. * pan/text.c: sync. 2001-10-21 Christophe Lambin (Profiles) * pan/message-window.c: implemented a PanCallback to keep in sync with the Profiles while writing an article. This fixes a segfault when we remove an profile, while writing an article using that profile. Thanks to lduperval for reporting this bug. * pan/identities/identities-manager.[ch]: same. 2001-10-20 Charles Kerr (Bug Fixes) * pan/articlelist.c (articlelist_set_sort_type): when the sort type changes, make sure the change is propagated back into the group's settings where it will be remembered. Thanks to Alen Williams for reporting this bug. * pan/message-send.c (build_nntp_header): Use GMime's InternetAddress object when composing the From: header so that we get the right encoding. Thanks to Julien Plissonneau Duquene for reporting this bug. (TODO: migrate the entire posting to GMimeMessage) * pan/tests: forgot to sync the tests with the new two-argument group_new() function. Thanks to Laurent Duperval for reporting this bug. (Delete/Mark Read Crossposts) * pan/base/article.c (article_xref_foreach): now takes a ServerGroupsType argument s.t. we only traverse groups in that set. * pan/base/article.c (articles_set_read): only also mark read crossposts in subscribed groups. It's not worth the load to mark in groups that the user will never look at. * pan/article-actions.c (delete_articles): when deleting an article, only delete crossposts in subscribed groups. Same reason. * pan/base/server.c (server_get_named_group_impl): take an argument of ServerGroupsType so that we know which types to look through for this group. * pan/base/server.c (server_has_group_in_type): new function. (Speedups) * pan/base/article.c (article_set_header_impl): if we're initing this header then we know there's no current value for the header, so don't bother calling article_remove_header() first. 2001-10-19 Charles Kerr (Bug Fixes) * pan/message-window.c: fixed a couple of cases where Articles were still being pan_object_{un}ref()ed, even though Article is no longer a PanObject. C++ would've been helpful here. :) (More snubbing of PanObject) * pan/base/group.[ch]: Group's no longer a PanObject either. Its memory management is controlled by the parent Server object, just as Groups control their Article objects. * pan/articlelist.c: sync. 2001-10-18 Charles Kerr Pan 0.10.0.93 Released! 2001-10-17 Charles Kerr (Bug Fixes) * pan/gui-notebook.c: Fix crash-on-zoomed-startup bug. Thanks to Leo Lipelis for reporting this bug. * gmime/gmime-charset.c: Upgrade this file to get a fix for Debian and Solaris charsets. Thanks to Jeffrey Stedfast for writing GMime. (Dethreading) * pan/grouplist.c: Make grouplist's updates operate in the mainthread too. Similar to earlier updates to text.c and articlelist.c. (Code Cleanup) * pan/article-toolbar.c: removed unnecessary #includes. * pan/sockets.c: same. 2001-10-17 Christophe Lambin (libESMTP) * configure.in: now using libESMTP 0.8.6. * pan.spec.in: same. 2001-10-17 Charles Kerr (Bug "Fixes") * pan/base/decode.c: shut up compiler warning. * pan/base/util-mime.c: same. * pan/status-item-view: try harder to make this threadsafe. 2001-10-15 Charles Kerr (Bug Fixes) * pan/queue.c (queue_mainloop): patch for signals-get-lost bug reported by Himanshu J. Gohel, Jed S. Baer, John LeMay, and Douglas Kilpatrick. 2001-10-13 Charles Kerr (Bug Fixes) * pan/smtp.c: #include . Ooops. * pan/articlelist.c (articlelist_set_group_nolock): if the user has selected to fetch the group's new headers on load, make sure we do that. * pan/queue.c (queue_run_what_we_can): fixed thread bug that caused some tasks to get stuck in an "Abort" state even if they completed successfully. * pan/task-save.c (task_save_run): fix small but ugly FMR/FUM bug. (UI Tweaks) * pan/task-headers.c: made some of the status messages a little shorter so that they'll fit in the progressbar better. 2001-10-12 Charles Kerr (Bug Fixes) * pan/articlelist.c (add_article_to_ctree_nolock): when calculating the linecount of a multipart binary, don't double the count for parts that have a repost too. (Dethreading) * pan/text.c: decrufting. Renamed & reorganized inscrutably-named functions that have grown like mold over time. Sorted the code into less irrational groupings. Decreased the number of thread steps needed to update the text pane. Fixed thread concurrency bug reported by war@starband.net. * pan/articlelist.c (articlelist_set_sort_type): throw away the old implementation and just call refresh (REFRESH_SORT) instead. (Code Tweaks) * pan/nntp.c (nntp_download_headers): remove 5 g_strdup()/g_free() pairs for each header downloaded. Probably an unimportant change, but every little bit helps. 2001-10-11 Christophe Lambin (Dethreading) * pan/articlelist.c: fixed crash when selecting an empty folder. (libESMTP) * pan.spec.in: added libESMTP to BuildRequires & Requires. * configure.in: include libESMTP's CFLAGS to cover non-standard installations. Thanks to war@starband.net for reporting this. * pan/Makefile.am: sync. 2001-10-10 Charles Kerr (Dethreading) * pan/articlelist.c: rewrote the ways in which the articlelist's group is set and refreshed. This simpler and cleaner now, at least as much as possible in threads. This should ameliorate some of the "pan's threading is unstable!" complaints. * pan/base/group.[ch]: added an Article GMemChunk + accessor. * pan/base/article.[ch]: Article is no longer a PanObject; instead, its life cycle is tied to the article_refcount of the Group which owns it. This resolves the Article life cycle issues like "what happens if a rule deletes an article that articlelist is drawing?" and "what if an article is expired while a person's reading it?" etc. 2001-10-10 Christophe Lambin (libESMTP) * pan/smtp.c: rewrite, using Brian Staffort's libESMTP library. * configure.in: build with libESMTP. * acconfig.h: same. * pan/Makefile.am: build with libESMTP. 2001-10-09 Christophe Lambin (Bug Fixes) * pan/gui-headers.c (gui_headers_set): wrap the author to cope with excessively long email addresses. Thanks to David Watson for reporting this. 2001-10-09 Charles Kerr (Dethreading) * pan/base/argset.c: new module. * pan/base/group.c (group_remove_articles): don't unset the group pointer when we remove the article from the group's article list -- The group is still managing the article's memory during its lifespan. * pan/base/status-item.c (status_item_new_with_description): new constructor that lets the client pass in a description string at creation time. * pan/base/status-item.c (status_item_destructor): don't set the status-item to inactive here; this causes an unhappy feedback loop. A status item should be inactive before it's destroyed. * pan/status-item-view.c (status_cb_nolock): new impl function. 2001-10-07 Christophe Lambin (Bug Fixes) * pan/filters/filter-top.c (filter_top_dup): initialise 'negate' so we can create negative aggregate filters. Thanks to Jed S. Baer for reporting this. 2001-10-04 Charles Kerr (UI: Text Pane Colors) * pan/pan.c (main): get the "cmap" variable before calling prefs_init so that we can alloc colors inside prefs_init. * pan/prefs.c: added two new preferences to toggle on/off using the gtkrc colors vs. custom colors in the article view window. * pan/text.c: fixed color-assignment bugs. Thanks to war@starband.net for reporting this bug. (Code Tweaks) * pan/prefs.c (update_entry_and_bool_from_toggle_button): return a gboolean flag to indicate if the value has changed. * pan/base/debug.c (debug_printf): added "function" argument that uses gcc's PRETTY_FUNCTION if we're using gcc. * pan/debug.h: sync debugN and odebugN macros. * pan/base/util-mime.c: small cleanup. 2001-10-03 Christophe Lambin * pan/articlelist.c (article_toolbar_set_filter): better fix for the Xlib async error. 2001-10-03 Charles Kerr * gmime/gmime-filter-basic.c: fix some compiler warnings. Also, add in a g_message couting the number of streams alive. There's a stream leak somewhere in Pan that I haven't been able to track down yet. (fejj if you want to look at this -- do you have a news server? If not, news.ou.edu is public -- go to alt.binaries.picture.fractals and start reading messages. Each read message leaves two dangling streams.) 2001-10-03 Jeffrey Stedfast * pan/base/util-mime.c (look_for_uuencoded_data): After splitting out the uu parts, reset the stream immediately so that if/when we write out the content stream, it will write from the beginning. This should also make it so any substreams created from this stream will be reset. Move the in_stream unreffing action to right after we create in_buf since we don't need to hold a ref any longer - this doesn't really change anything, it's more for peace-of-mind. Once in the for-loop, do proper unreffing of streams. 2001-10-03 Charles Kerr * pan/Makefile.am: update static libraries for Purify. * pan/articlelist.c: removed some debugging g_messages. * pan/nntp.c: same. * pan/text.c: sync with gmime update. * pan/base/article.c: same. * pan/base/decode.c: same. * pan/base/util-mime.c: same. 2001-10-03 Charles Kerr * pan/rules/rule-manager.c (add_any_needed_canned_rules): fix small memory leaks. Thanks to Richard Deken for reporting these bugs. * pan/gui.c (edit_menu): added "Select message body" back into menu. Thanks to David Oberbeck for requesting this. 2001-10-02 Charles Kerr * pan/article-toolbar.c (sensitize_builtin_filters): fix Xlib async error. * pan/task-save.c: remove unused debugging statement * pan/base/serverlist.c: thread safety safeguard. * pan/articlelist.c (filter_changed_thread): some pthread safety checks when applying a filter to a set of articles. 2001-10-01 Christophe Lambin * pan/message-window.c (apply_identity): don't add an attribution line for new posts & emails. 2001-09-28 Charles Kerr * pan/text.c: dead code removal. * pan/identities/identity.c (identity_dup): fixed small memory leak. Thanks to Richard Deken for reporting this bug. 2001-09-27 Charles Kerr * pan/text.c (append_text_cb): new function to display all text attachments instead of just the first one. Thanks to Robert Tilley for reporting this bug. * pan/base/acache.c (acache_init): don't bother regenerating the message-id list if acache_init()'s already been called. * pan/base/article.c (article_get_header): fix for getting xrefs. This gets "when article is deleted/read/unread, propagate that to its crossposts" working again. * pan/status-item-view.c: fix problem that caused the progress bars to not always be cleared out when a task ended. * pan/text.c: unset the text widget's usize height when we're not showing pictures. Thanks to Jed S. Baer for reporting this bug. 2001-09-23 Charles Kerr * pan/nntp.c (nntp_article_download): That fix in for version 1.197 wasn't such a great idea; it created a new bug. Try a different fix instead. 2001-09-22 Charles Kerr 0.10.0.91 Released! 2001-09-20 Charles Kerr * pan/articlelist.c: don't set the CTreeNodes' fonts when we can't load the font (user has selected a font that doesn't exist, etc). * pan/gui.c (navigate_menu): added new shortcuts for parent article and top-of-article. * pan/status-item-view.c: fixed crash that occurred when updating the gtkprogressbar in a non-gtk thread under pixmapped gtk themes. * pan/text.c (set_text_from_article_idle): silenced gtk warning. * pan/queue.c (queue_get_tasks): Made this function a little safer: we now return a newly-allocated array, instead of the queue's private GSList. We also ref() each task in case it would otherwise be destroyed by the time the caller is done with the task list. This new task array is created and reffed inside the queue_lock mutex. * pan/message-window.c (create_body_pane_nolock): always use a monospace font when posting, even if the user uses a variable width font when reading. Thanks to Christian Lohmaier for reporting this. 2001-09-18 Fatih Demir * ABOUT-NLS & config.h.in: Removed from CVS. 2001-09-17 Charles Kerr (Bug Fixes) * configure.in: use gdk-pixbuf-config, rather than gnome-config, when detecting the cflags/version/libs for gdk-pixbuf. Thanks to Justin Piszcz for reporting this bug. 2001-09-16 Charles Kerr (GMime file support) * gmime/gmime-content.[ch]: new files that abstract out how a GMimePart's content is held - in a memory array or in a temporary file. Being able to use temporary files lets us decode those iso-image attachments without running out of memory. * pan/base/decode.c: sync. * pan/base/util-mime.c: sync. This actually lets us drop a couple of intermediate steps that used to be needed to massage the data into the right shape. * pan/text.c: sync. 2001-09-11 Charles Kerr (Bug Fixes) * pan/smtp.c: Fixed problem with date header not being sent when sending mail from Pan. Thanks to Derek Poon for reporting this problem and submitting a fix. * pan/base/newsrc-port.c: Fixed problem with importing an empty .newsrc file. Thanks to Derek Poon for reporting this problem and submitting a fix. * pan/queue.c: Fix problem with the queue running away with the CPU in 0.10.0.90. Thanks to Chris Vance for reporting this bug and submitting a fix. * pan/text.c: Silence a g_warning. Thanks to Muralito for reporting this bug. * pan/prefs.c: Fix a couple of typos in the preferences dialog. Thanks to Jacob Ilsø Christensen for posting this patch. * pan/dialogs/dialog-newuser.c: Hide the password when the user types it in. Thanks to Jacob Ilsø Christensen for posting this patch. 2001-09-07 Charles Kerr (Goodbye, gtkhtml) * configure.in: remove gtkhtml checks, add gdk-pixbuf instead. * pan/text.c: gdk_pixbuf for inline images; homebrew clickable URLs * pan/prefs.c: add user-configurable URL link color, 2nd quote color 2001-09-07 Charles Kerr (Safeguards) * pan/base/pan-object.c (pan_object_is_valid): new sanity check func. * pan/base/group.c (group_is_valid): new sanity check func. * pan/base/group.c (most functions): g_return_if_fail(group_is_valid()) in most of the function entry assertions. * pan/base/articlec (article_is_valid): call pan_object_is_valid(). 2001-09-05 Christophe Lambin (Profiles) * pan/message-window.c (post): if we're cross-posting, remember the used profile for all newsgroups we just posted too. (Bug Fix) * pan/message-window.c: avoid duplicate attribution lines if the current profile gets changed while writing an article. 2001-09-05 Charles Kerr (Tweak) * pan/grouplist.c (-grouplist_get_group_readable_name): use a buffer instead of a lot of alloc/free's. (Safety) * pan/file-headers.c: added some extra g_return_if_fail()s to be safe. * pan/file-grouplist.c: same. 2001-09-04 Charles Kerr (Usability) * pan/articlelist.c (group_articles_removed_cb): select, but don't activate, the next article after one's deleted. This was intended to be a feature but got negative feedback. (Bug Fix) * pan/group-actions.c (delete_groups_dialog_cb): don't delete the groups if the user hit "no, don't do it". D'oh! Thanks to Mike Robinson for reporting this bug and submitting a patch. (Tweak) * pan/nntp.c (nntp_article_download): reuse a buffer, rather than alloc/free'ing a new string for each line we read from the server. * pan/text.c: sync with some of the gtkhtml-less text.c codebase. 2001-09-04 Christophe Lambin (UI Tweak) * pan/articlelist.c: in unthreaded mode, set the article's style to reflect only the status of the article itself, not of the replies. 2001-09-03 Charles Kerr * pan/gui.c: added accelerators for getting articles & sub/unsub from group, by request. 2001-09-03 Charles Kerr * pan/gui.c: added shortcut for thread/unthread the header pane. * pan/base/article-thread.c: have threads with more unread/new children show up higher in the sort. * configure.in: lowered glib requirement to 1.2.8, since that's what gtk 1.2.10 requires. 2001-09-02 Charles Kerr (Collapse Group Name) * pan/gui.c: added to navigate menu: "Collapse names in group pane". * pan/prefs.c: sync. * pan/gropulist.c: sync. 2001-09-02 Charles Kerr (Save Dialog) * pan/save-ui.c: new file, replacing save.c, which integrates the "Save Article" and "Save Attachments" dialogs together. * pan/task-save.c: new file, replacing task-decode.c, which not only decodes articles but optionally saves the article bodies too. * pan/article-actions.c: sync. (Bug Fixes) * pan/nntp.c (nntp_download_body): if we somehow get fed a blank line from the server, don't crash. 2001-09-02 Charles Kerr (UI Tweaks) * pan/gui.c: added "space reading" into the navigational menu. (tmp dir) * pan/base/base-prefs.h: we no longer define our own tmp dir variable. Use g_get_tmp_dir() instead so that we can behave more like other glib apps. * pan/base/util-file.c: sync. * pan/prefs.c: sync. (portability (!)) * pan/base/serverlist.c: use G_DIR_SEPARATOR where appropriate. * pan/base/ufil-file.c: same. * pan/base/file-grouplist.c: same. * pan/base/file-headers.c: same. * pan/base/acache.c: same. * pan/identities/identity-manager.c: same. * pan/filters/filter-manager.c: same. * pan/rules/rule-manager.c: same. * pan/prefs.c: same. * pan/thread-watch.c: same. * pan/save.c: same. 2001-09-02 Charles Kerr (Sorting) * pan/base/article-thread.c (sort_articles): added sorting by article raad state (new, unread, new replies, etc) and by action state (flagged, queued, etc). This is triggered by clicking on columns 0 and 1 in the thread tree. 2001-09-02 Charles Kerr (Living with Threads) * pan/articlelist.c: keep an array of all the articles we're using. Each article's refcount is raised by 1 as long as articlelist is using it. (This has a nice side-effect of letting articlelist to stable sorting again) * pan/articlelist.c (clear_article_buffer): sync. * pan/articlelist.c (articles_added_cb): sync. * pan/articlelist.c (articles_removed_cb): sync. * pan/articlelist.c (articlelist_set_contents): sync. * pan/articlelist.c (articlelist_set_group_maybe): sync. * pan/articlelist.c (articlelist_update_articles): ref the articles before passing them along to an idle function, just to make sure they're still alive when the idle function's run. * pan/articllist.c (artlclelist_articles_read_changed): same. * pan/group.c: added a field "article_mutex" used whenever the group is doing heavy manipulation of its article list: for example, we don't want one thread Threading the articles while another is expiring old articles, etc. 2001-09-01 Charles Kerr (Bug Fixes) * pan/articlelist.c (articlelist_articles_read_changed_idle): A GPtrArray and its buffer were being leaked each time an article's read state changed, yuck. * pan/text.c (text_create): fix problem with changing the background color of the gtkhtml pane. Thanks to Tõivo Leedjärv for providing this fix. * pan/base/group.c (group_inc_article_read_qty): return if group==NULL. This was triggering a crash in articlelist under torture conditions. * pan/base/pan-glib-extensions.c (pan_str_unescape): fixed unescaping bug. Thanks to Tõivo Leedjärv for reporting this bug and providing a fix. * tests/test-pan-callback.c: sync the callback functions' signatures to match the PanCallback changes made earlier in the week. * pan/base/pan-glib-extensions.c (get_next_token_range): don't dereference a NULL pointer. 2001-08-31 Christophe Lambin (Bug fix) * pan/base/file-headers.c (file_headers_save_folder): don't complain so loudly when an article has no body. 2001-08-30 Charles Kerr (Bug Fixes) * pan/base/util-mime.c (look_for_uuencoded_data): small memory leak. * pan/gmime/gmime-utils.c: update snapshot to fix encoding bug. Thanks to Christian Lohmaier for reporting this bug. 2001-08-30 Christophe Lambin (Bug Fixes) * pan/message-window.c (article_gen_attribution_string): fixed corruption of the short author name. * pan/message-window.c (post): record the profile before we destroy the message window. 2001-08-29 Charles Kerr (Profiles) * pan/pan.c (shutdown): call identity_manager_shutdown_module(). (Usability) * pan/gui.c: more descriptive tooltips for the task/connections buttons. * pan/prefs.c: made the default news server behavior to go online without being asked. Most users seem to be online, rather than offline users, so this should be the default. (Stupid Tweaks) * pan/acache.c (acache_get_filename): use a buffer on the stack to avoid unnecessary malloc/free in some frequently-called funcs. * pan/util.c (get_date_display_string): same. * pan/article.c (article_get_short_author_str): same. 2001-08-29 Christophe Lambin (Profiles) * pan/message-window.c (determine_default_identity): improved logic for guessing the default profile to propose. This mainly helps when writing a new email (e.g. Feedback). * pan/identities/identity-manager.c: new helper function to find a profile with matching author name & email address. * pan/identities/identity-manager.h: sync. 2001-08-29 Charles Kerr * pan/docs/faq.html: updated faq. * pan/configure.in: bumped glib/gtk requirements to 1.2.10 * pan/identities/identity.c (identity_constructor): g_strdup() the default attribution string so that it doesn't get free()d later. This is my bug. * pan/xpm/pan_druid.xpm: new watermark for the new user screen. * pan/dialogs/dialog-new-user.c: added new information on the new user druid's welcome screen. 2001-08-28 Christophe Lambin (Profiles) * pan/base/file-grouplist.c: bumped file format version number to 6. We now also store the last used profile for each group. (Bug fixes) * pan/message-window.c (remove_signature): handle articles that are empty except for a signature. * pan/gui.c (send_feedback_cb): use the default profile for email. * pan/base/file-grouplist.c: fixed reading back the group's active filter name. 2001-08-28 Charles Kerr (Profiles) * pan/identities/identity-edit-ui.c: added in a default Attribution value when creating a new Profile. (Code Cleanup: PanCallback) * pan/base/pan-callback.h: made the cb return type void, not int. * pan/article-actions.c: sync. * pan/article-toolbar.c: sync. * pan/articlelist.c: sync. * pan/gui.c: sync. * pan/dialogs/dialog-log-viewer.c: sync. * pan/rules/rule-edit-ui.c: sync. (Code Cleanup: Menus) * pan/gui.c: use gnome menu macros for slightly less code sprawl. * pan/articlelist.c: same. * pan/message-window.c: same. (Code Cleanup: Dead Code Removal) * pan/articlelist.c (articlelist_sort_changed): removed dead code. * pan/articlelist.c (articlelist_all_download): same. * pan/articlelist.c (purge_articles): same. * pan/articlelist.c (articlelist_selected_purge_bodies): same. * pan/articlelist.c (articlelist_selected_purge_bodies_deep): same. * pan/articlelist.c (articlelist_all_purge_bodies): same. * pan/articlelist.c (articlelist_all_purge_bodies): same. * pan/util.c (test_linkify_text): same. * pan/message-window.c: removed appbar code. * pan/util.c (check_and_warn_if_version_change): same. 2001-08-28 Charles Kerr (Profiles) * pan/gui.c (send_feedback_cb): now uses identity-manager * pan/smtp.c: same. * pan/prefs.c: removed the Posting pieces from here, now that they're handled in Christophe's identity module. * pan/util.c (get_host_name): this isn't needed; we use Identities now. * pan/util.c (get_fqdn): same. * pan/util.c (get_default_author_address): same. * pan/util.c (get_default_author_from): same. (UI Tweaks) * pan/prefs.c: added a history pulldown with standard choices for external editors & external browsers. * pan/prefs.h: same. 2001-08-27 Christophe Lambin (Profiles) * pan/identities/identity-edit-ui.c: implemented the 'Custom Headers' tab for Profiles: each profile can now hold its own set of custom headers. * pan/message-window.c (revoke_identity/apply_identity): set the article's custom headers based on the Profile's custom headers. * pan/identities/identity-xml.c (write_identity): small bugfix in writing the custom headers to the data file. * pan/identities/identity.c (identity_find_custom_header_by_name): removed obsolete function. 2001-08-27 Charles Kerr (Bug Fixes) * pan/identities/identity-manager.c (construct_identity_from_prefs): fix scope problem that prevented creating a new identity from prefs. (Tweaks) * pan/article-filter-ui.c: added #include to make gcc happy. * pan/identities/identity-edit-ui.c: same. * pan/identities/identity.c (identity_find_custom_header_by_name): commented out unused function. 2001-08-27 Charles Kerr (Bug Fixes) * pan/text.c (text_read_more): fix bug that caused space reading to cause small articles to scroll off-window, then back again, before reading the next article. (External Editor) * pan/message-window.c: added External Editor support, finally. This is taken lock, stock, and barrel from Sylpheed. (Action Shuffling) * pan/article-actions.c: moved article deletion functions here from articlelist.c. Added code to remove from acache any deleted article. * pan/articlelist.c: when articles are removed, check & see if the selected message is one of them. If so, update the selection and, if "read on select" is turned on by the user, read the next message. 2001-08-27 Christophe Lambin (Identities / Profiles) * pan/gui.c: renamed identities to profiles. * pan/identities/identity-edit-ui.c: same. * pan/identities/identity-ui.c: same. * pan/identities/identity-xml.c: same. * pan/identities/identity-manager.c: same. * pan/pan.c: first time a user starts Pan, we'll now create a default Profile, instead of writing the info into gnome_config. * pan/dialogs/dialogs-newuser.c: same. * pan/identities/identity-manager.c: sync. * pan/identities/identity-manager.h: sync. 2001-08-26 Charles Kerr (Bug Fixes) * pan/articlelist.c: fixed the skips-last-thread navigation error. Thanks to Adrian von Bidder for reporting this bug. (Identities) * pan/identities/identity.c (identity_is_valid): new sanity check function. * pan/identities/identity-edit-ui.c (identity_edit_dialog_get_identity): if the identity is incomplete/invalid, return a NULL instead. * pan/identities/identity-ui.c (add_dialog_clicked_cb): add check to see if identity_edit_dialog_get_identity() returned NULL. 2001-08-26 Christophe Lambin (Identities) * pan/message-window.c: activated Identities. * pan/gui.c: same. * pan/Makefile.am: same. * configure.in: same. * pan/identities/identity-edit-ui.c: don't use the identity manager to get the default news & mail identities. * pan/identities/identity-ui.c: sync. * pan/identities/identity-manager.c: API change for setting defaults. * pan/identities/identity-manager.h: sync. * pan/identities/identity-ui.c: sync. * pan/base/group.c: added 'identity_name' to remember the last identity used to post to that group. * pan/base/group.h: same. 2001-08-24 Charles Kerr (GUI) * pan/gui.c: updated shortcuts & hotkeys; some were in conflict. * pan/articlelist.c: same. (Bugfix) * pan/text.c fontname(): Moved out of the #ifdef GTK_HTML block so that Pan will build for test users too. Thanks to Jed S. Baer for reporting this problem. (Speedups) * pan/base/group.c: replace the group_changed() callback with a groups_changed() callback so that we can batch updates of changed groups. This is useful when mass subscribing/unsubscribing during importing .newsrc files. * pan/base/group.c: replaced group_set_subscribed() with groups_set_subscribed(). * pan/grouplist.c: listen for groups_changed instead of group_changed. 2001-08-24 Christophe Lambin (Bug fixes) * pan/articlelist.c: make sure to clear 'unread_children' when marking all articles as read. * pan/gui.c: set the correct state on 'use monospace font' on startup. (Identities) * pan/identities/identity-edit-ui.c: code cleanup & memory leaks. * pan/gui.c: prepare for integration into the GUI. 2001-08-23 Charles Kerr (Show/Hide) * pan/gui-paned.c: added code to show/hide various panes based on user choice. * pan/gui.c: sync. * pan/prefs.c: sync. (Menu) * pan/gui.c: plugged back in the menu sensitive/insensitive code. Menus should be good to go now. 2001-08-23 Christophe Lambin (Identities) * pan/identities/*[ch]: added user interface for managing identities 2001-08-23 Charles Kerr * configure.in: bumped version number to 0.10.90 * pan/Makefile.am: tweaks to make automake 1.5 happy * pan/text.c (text_get_article_body): fix tab damange. * pan/articlelist.c: when user selects an empty group, automatically go to download new headers, rather than popping up a 'download headers' dialog. (Menus) * pan/articlelist.c: added accelerators, shortcuts for the shiny new menu items. * pan/gui.c: same. Also plugged in everything except the three toggle-pane-visible buttons. (Navigation) * pan/articlelist.c: added small correctness checks. 2001-08-23 Charles Kerr (Navigation) * pan/gui.c: updated the Navigation menu based on user suggestions. * pan/prefs.c: added 'skip uncached' and 'load on select' preferences for the navigation menu. * pan/gui.c: sync. * pan/articlelist.c: rewrote most of the navigation code. (Cleanup) * pan/article-filter-ui.c: include libgnomeui.h instead of gnome.h * pan/article-find.c: same. * pan/article-toolbar.c: same. * pan/articlelist.c: same. * pan/group-action.c: same. * pan/gruop-ui.c: same. * pan/grouplist.c: same. * pan/gui-headers.c: same. * pan/gui-notebook.c: same. * pan/message-check-ui.c: same. * pan/message-window.c: same. * pan/save.c: same. * pan/server-ui.c: same. * pan/status-item-view.c: same. * pan/task-decode.c: same. * pan/task-manager.c: same. * pan/text.c: same. * pan/dialogs/dialog-about.c: same. * pan/dialogs/dialog-group-props.c: same. * pan/dialogs/dialog-headers.c: same. * pan/dialogs/dialog-log-viewer.c: same. * pan/dialogs/pan-about.c: same. 2001-08-22 Charles Kerr (Group Actions) * pan/grouplist.c: removed the group 'action' functions for downloading messages/headers, subscribing/unsubscribing, deleting groups, and so forth. * pan/group-action.c: this is where the grouplist's 'action' functions get moved. (Menu Update) * pan/gui.c: updated Group menu based on feedback from the pan-users mailing list. * pan/prefs.c: added 'download_bodies_too' handling. * pan/gui.c: sync. (Bugfixes) * pan/task-headers.c (task_headers_run): small bugfix to remove glib warning. (Cleanup) * pan/dialogs/dialog-newuser: code cleanup. * pan/articlelist.c: removed debugging statements. * pan/grouplist.c: removed unused functions, made functions private where appropriate 2001-08-21 Charles Kerr (Removing Useless Junk) * pan/message-window.c: removed "open article in new window" * pan/articlelist.c: sync. * pan/task-body.c: sync. * pan/text.c: sync. (UI: Menus) * pan/articlelist.c: a little more menu work. 2001-08-21 Charles Kerr (Bug Fix) * pan/article-toolbar.c (custom_filter_selected_cb): fix bug that caused the articlelist to not be re-filtered when the user switched between Author and Subject filtering. (UI: Menus) * pan/gui.c: started the menu redesign discussed in pan-users. added some select-group, select-articles functions, regrouped other menu items in a way that makes more sense. * pan/gui-notebook.c: removed layout-specific selection code. * pan/gui-paned.c: same. * pan/server-ui.c: changed search path of where to insert the server menu buttons in the main menu. * pan/text.c: removed popup menu. (UI: Filter History) * pan/article-toolbar.c: added a popdown w/history in the article subject/author filter. Thanks to Adam Nevins for making this suggestion. * pan/grouplist: added a popdown w/history here too. (Feature: Use Monospace Font) * pan/prefs.c: added new preferences option: whether or not to use a monospace font in the body pane. You can configure both fonts in the preferences dialog. * pan/text.c: sync. * pan/gui.c: sync. 2001-08-20 Christophe Lambin (bug fix: send pending messages) * pan/base/article.c: make sure to save *all* headers to 'sendlater', so we have all the information to send them later. Thanks to T'aZ and Frank Van Damme for reporting problems in this area. * pan/base/article.h: same. (Identities) * pan/identities/*[ch]: landed initial data structures into CVS. 2001-08-18 Charles Kerr (bug fix: i18n) * pan/gmime: updated snapshot of GMime to get the g_mime_charset functions. According to fejj the CODESET patch in 0.10.0 has some issues. * pan/message-send.c: sync. (bug fix: font size in gtkhtml pane) * pan/text.c (colorize_html): work around apparent gtkhtml font-tags-can't-be-nested brane damage. Thanks to David Watson for reporting this bug. 2001-08-16 Charles Kerr Pan 0.10.0 Released! 2001-08-16 Charles Kerr (Bug Fix) * pan/task-group-count.c: don't update the group article low/high from this information, because that screws up counting of which articles are new the next time you fetch headers. 2001-08-15 Charles Kerr (Bug Fix) * pan/rules/rule-ui.c (apply_now_thread): Fix crash that occurred when applying rules to selected groups, when no group was loaded in the thread view pane. Thanks to T'aZ for reporting this. (Sanity Checks) * pan/nntp.c (nntp_article_download): better sanity checks. * pan/nntp.c (nntp_download_bodies): same. * pan/nntp.c (nntp_cancel): same. * pan/article-find.c (compare_article): same. * pan/article-actions.c (find_matching_sent_article): same. * pan/filters/filter-cached.c (filter_cached_test_articles): same. * pan/rules/rule-action.c (rule_action_apply): same. 2001-08-13 Charles Kerr (Bug Fixes) * pan/gui.c: the "Message" menu shortcut key conflicted with the "Edit" shortcut. Thanks to David Oberbeck for reporting this bug. * pan/articlelist.c (build_article_ctree_recursive): fix bug that caused follow-ups to a multipart post to not be added to the ctree. Thanks to Jed S. Baer for reporting this bug. * pan/text.c (add_inline_images_mpfunc): go ahead and show images even if they're not flagged as "inline". This is usenet, chances are the poster intended for them to be inline anyway. (GMime update) * gmime: update of gmime-parser.c and gmime-utils.c * pan/base/util-mime.c (pan_g_mime_parser_construct_message): sync. 2001-08-10 Charles Kerr (Release) * README * configure.in * NEWS * TODO * CREDITS * pan/dialogs/dialog-about.c: Updated for 0.10.0 release 2001-08-09 Christophe Lambin (Task Manager) * pan/task-manager.c: added keyboard shortcuts to cancel and reorder tasks. Thanks to Ryan Daniels for suggesting this. 2001-08-08 Christophe Lambin (Bug fixes) * pan/gui-paned.c (gui_paned_construct): allow the grouplist pane to shrink beyond its requisition size to account for people running under lower resolutions. Thanks to mdew for reporting this problem. 2001-08-06 Charles Kerr (Prefs UI) * pan/prefs.c: committed patch written by Mike Robinson to make the cache tab look a little cleaner. Thanks! 2001-08-06 Charles Kerr (Icons) * pan/gui.c: refresh icons for Help|Manual, Help|Feedback * pan/articlelist.c: added evo's icons for move/copy-to-folder. * pan/article-toolbar.c: added 'glasses' icon for watched threads. 2001-08-06 Stanislav Visnovsky * pan.desktop: Added Slovak messages from Marcel Telka 2001-08-06 Stanislav Visnovsky * CREDITS, NEWS: Added credits for translation by Marcel Telka. * configure.in: Added sk to ALL_LINGUAS * po/sk.po: Added Slovak translation from Marcel Telka 2001-08-02 Charles Kerr (Posting Headers) * pan/message-send.c: added support for pumping the charset from nl_langinfo instead of just hardcoding the charset. Thanks to Volodymyr M . Lisivka for the patch. * pan/message-window.c: in the "Extra Headers" field on a follow-up, try to add the X-Comment-To: header for Fido users. Thanks again to Volodymyr M . Lisivka for the patch. (UI Improvements) * pan/rules/rule-edit-ui.c: if the rule that the user selects for this filter is an empty filter, a warning is given. 2001-07-31 Christophe Lambin (Bug fixes) * pan/prefs.c (prefs_newsrc_page): toggling the 'subscribed groups only' and 'backup .newsrc' switches wasn't activating the 'Apply' button. 2001-07-31 Charles Kerr (Bug Fixes) * pan/text.c (update_body_pane_nolock): small cleanup. This seems to Make Gtk 1.2's GtkText widget a little happier. (UI Changes) * pan/base/file-grouplist.c: if we get an unsupported file format, ask "are you using an old version of Pan by accident?" because this is the typical cause for this error * pan/base/file-headers.c: sync. * pan/xpm/old_binary_complete.xpm: * pan/xpm/old_binary_incomplete.xpm: * pan/xpm/binary_complete.xpm: * pan/xpm/binary_incomplete.xpm: increase contrast with the new/old text article icons to make them easier to notice at-a-glance. * pan/xpm/filters.xpm: added a black triangle pointing down to indicate that this is a popdown menu button. * pan/gui.c: moved "task manager" to the top of the online menu to make it easier to find. Some people still don't know you can stop a running task. 2001-07-30 Charles Kerr (Bug Fixes) * pan/articlelist.c (articlelist_repopulate): fix array-bounds-write error introduced late last week. Thanks to Adrian von Bidder for leading me to this bug. 2001-07-29 Christophe Lambin (Text Wrapping) * pan/prefs.c: new feature to disable wrapping the body of a message when replying. Thanks to Twigboy for suggesting this feature. * pan/prefs.h: sync. * pan/message-window.c: sync. 2001-07-28 Charles Kerr (UI Changes) * pan/xpm/old_binary_complete.xpm: new icon. * pan/xpm/old_binary_incomplete.xpm: new icon. * pan/articlelist.c: sync. * pan/prefs.c: changed some of the new features' phrasing at Christophe's suggestion. (Canned Rules) * pan/rules/rule-manager.c: brought into sync with filter-manager with the graceful restoring of canned rules that have somehow been lost. 2001-07-28 Christophe Lambin (UI Changes) * pan/articlelist.c (articlelist_set_node_style_nolock): implemented coloring watched & ignored threads. (Bug Fixes) * pan/gui-paned.c (gui_paned_construct): Pan wasn't restoring its column widths for the article list. * pan/gui-notebook.c (gui_notebook_contruct): same. * pan/rules/rule-ui.c (apply_now_thread): refresh the article list when we manually apply a rule to the active group. * pan/rules/rule.c (rule_apply): return the number of articles matched, so that callers know whether they need to take some action. * pan/rules/rule.h: sync. 2001-07-27 Charles Kerr (Rule/Filter Changes) * pan/rules/rule-manager.c: replaced "Ignore Bozos" with "Delete Bozos". This way if a bozo posts in an interesting thread then we'll still have the interesting thread and only the bozo will get thrown out. 2001-07-27 Christophe Lambin (Filters) * pan/article-toolbar.c: new approach to setting custom filters. Custom filters can now be switching on and off in one click. (Bug Fixes) * pan/article-toolbar.c: when switching to custom filters, remove the filter phrase, since we're not filtering on that anymore. * pan/prefs.c: applying changes would change the font of all articles in the active group to bold. 2001-07-27 Charles Kerr (UI Changes) * pan/text.c: borrowed Sylpheed's "smooth scrolling" for the text window on space reading. * pan/prefs.c: added prefs to turn smooth scrolling on/off. * pan/article-toolbar.c: updated to the new envelope icons. * pan/xpm: removed unused xpm files. 2001-07-26 Charles Kerr (UI Changes: Colors, Icons, Fonts) * pan/article.h: added "new_children" field, mirroring "unread_children". Used in articlelist when boldfacing articles that have new replies. * pan/article.c: sync. * pan/article-thread.c (thread_articles): populate new_children * pan/articlelist.c: removed "new children" column * pan/articlelist.c: added new icon/color/font scheme for showing the user which threads have new replies, which threads have unread replies, which articles are new, which articles are read, etc. * pan/articlelist.c: added some icons to the articlelist menu * pan/prefs.c: sync in color/font settings for thread pane. * pan/grouplist.c: changed the "subscribed group" icon. * pan/gui.c: sync in the "subscribed group" menu buttons. * pan/gui.c: added the unread/total article qty to the titlebar * pan/gui.c (widget_set_font): rewritten as pan_widget_set_font() * pan/message-window.c: sync. * pan/text.c: sync. (Better Tracking of New Articles) * pan/file-grouplist.c: bumped file format version number to 5. The new version stores article_high_old. This way 'new' articles are 'new' until you fetch new headers from that group, EVEN IF you quit & restart Pan or leave the group and then come back later. (Email Addresses) * pan/*: replaced superpimp.org with rebelbase.com 2001-07-25 Charles Kerr (Bug Fixes) * pan/article-toolbar.c (article_toolbar_set_filter): didn't fire a `filter changed' event when the toolbar was set to a custom filter. Thanks to Christophe for noticing this. (Space Reading) * pan/text.c: the happy return of space reading! (Read Next/Prev Thread) * pan/articlelist.c (articlelist_view_prev_thread): new func. * pan/articlelist.c (articlelist_view_next_thread): new func. * pan/gui.c (navigate_menu): added buttons for these. (Usability) * pan/gui.c: added keyboard accelerators to every button in the main menu. Most buttons didn't have one. * pan/articlelist.c: same. * pan/articlelist.c (articlelist_delete_articles): when we delete articles from the articlelist, make sure select the next article. This makes deleting articles from the keyboard friendlier. (Safety Checks) * pan/articlelist.c (articlelist_set_selected_nodes): behave gracefully even if an array of NULL nodes gets passed in. 2001-07-24 Charles Kerr (Bug Fixes) * pan/article-list-toolbar-mediator.c: use the `rebuild' variable properly to avoid having an articlelist populated twice when a group is loaded. (Safety Checks) * pan/rules/rule.c (rule_apply): log an error if the filter which this rule relies on isn't found. In this case, all articles fail the filter. * pan/filters/filter.c (filter_remove_failures): in the case that a NULL filter is passed in, all articles should be removed. * pan/filters/filter-manager.c: By Christophe's suggestion, we now gracefully recreate builtin filters if they get deleted accidentally. 2001-07-24 Charles Kerr (Code Cleanup: gnksa_generate_message_id) * pan/base/gnksa.c (gnksa_generate_message_id): add a millisecond part to improve chances of uniqueness. * pan/base/gnksa.c (gnksa_generate_message_id_from_email_addr): new function that safely extracts a domain from an email address and passes it along to gnksa_generate_message_id(). Previously calls to gnksa_generate_message_id() did this on their own without any error-checking. * pan/base/article.c: sync. * pan/message-send.c: sync. * pan/message-window.c: sync. * pan/article-actions.c: sync. * pan/tests/test-gnksa.c: added tests for Message-ID generation. 2001-07-23 Charles Kerr (Bug Fixes) * pan/base/pan-glib-extensions.c (get_next_token_g_str): fixed bug that caused Pan to crash when a NULL string was passed in. Thanks to Shawn Lindsay for reporting this bug. * pan/tests/test-gnksa.c: added regression test to exercise get_next_token_g_str a little more. (Tweaks) * pan/article-toolbar.c (create_filter_from_ulong): smarter creating of filters from the filter_bits variable. Fewer filters when possible. 2001-07-23 Christophe Lambin (Bug Fixes) * pan/filters/filter-aggregate.c: fix bug that resulted in no articles being shown when all filter buttons were selected. 2001-07-22 Charles Kerr (Bug Fixes) * pan/gui-paned.c (gui_paned_construct): fix bug that caused the slider to get lost under the buttons at the top of the panes. Thanks to Owen Taylor for reporting & fixing this bug. 2001-07-22 Christophe Lambin (Rules) * pan/rules/rule-edit-ui.c: implemented applying rules on a subset of subscribed rules. * pan/rules/rule-xml.c: stores scope of each rule (i.e., using a wildcard, or a subset of subscribed newsgroups). * pan/rules/rules.dtd: sync. 2001-07-21 Charles Kerr (Bug Fixes) * pan/rules/rule-xml.c (create_rule): fix bug that caused apply_to_incoming to be set to true even when it was false. * pan/rules/rule-edit-ui.c (dialog_close_cb): make sure to unregister from the pan_callbacks() that we registered for when the dialog was created. * pan/thread-watch.c (thread_set_state): make sure the article's group gets its articles-dirty flag set. * pan/gui.c (rules_cb): ensure that only one rule dialog at a time gets popped up from the gui menu. * pan/gui.c (filter_cb): ensure that only one rule dialog at a time gets popped up from the gui menu. (Usability Tweaks) * pan/prefs.c: acache_flush_on_exit now defaults to FALSE for new users. Too many people didn't understand where their articles were going. * pan/gui.c: added a shortcut (ctrl-f) for the filter editor. * pan/filter/filter-aggregate.c (filter_aggregate_test_articles): return FALSE when no children in the filter, just for safety. (Filters & Rules) * pan/filters/filter-manager.c: implemented the canned filters: now when a new user starts Pan, "Bozos" and "Spam" filters are created. * pan/rules/rule-manager.c: implemented the canned rules: now when new users start Pan, "Ignore Bozos" and "Ignore Spam" rules are created. * pan/article-filter-ui.c: new file. It's a dialog for adding the current article to the spam and/or bozo filter in an easy way. * pan/articlelist.c: sync. * po/POTFILES.in: sync. * pan/filters/filter-manager.h: added "bozo_filter_name" global. * pan/filters/filter-manager.h: added "spam_filter_name" global. * pan/bozo.[ch] * pan/bozo-ui.[ch] * pan/filters/filter-bozo.[ch] * pan/dialogs/bozo-dialog.[ch]: removed obsolete files. Bozos are finally integrated into the Filter/Rule system. * pan/gui.c: sync. * pan/articlelist.c: sync. * pan/rules/rule-action.c: sync. * pan/rules/rule-edit-ui.c: sync. * pan/rules/rule-xml.c: sync. * pan/filters/filter-edit-ui.c: sync. * pan/filters/filter-xml.c: sync. * po/POTFILES.in: sync. (New Internal Utilities) * pan/util.c (pan_error_dialog_parented): new function. 2001-07-20 Christophe Lambin (Filters) * pan/article-list-toolbar-mediator.c: save and restore filter settings for individual groups. * pan/article-toolbar.c: sync. * pan/base/group.h: sync. * pan/base/group.c: sync. 2001-07-19 Charles Kerr (URL Viewing) * pan/util.c (pan_url_show): new wrapper around gnome_url_show that looks at user's local settings and BROWSER variable before punting to gnome_url_show. * pan/gui.c (pan_manual_url): sync. * pan/gui.c (pan_homepage_url): sync. * pan/text.c: (on_link_clicked): sync. * pan/prefs.c: added support for editing/saving external_web_browser. 2001-07-18 Charles Kerr (Threading) * pan/base/article-thread.c (thread_articles): Better threading of articles where the parent of a followup's message isn't available but one of its ancestors is. 2001-07-18 Charles Kerr (Bug Fixes) * pan/base/acache.c (acache_init): handle readdir failure without crashing -- occurred when the cache directory didn't exist & couldn't be created. * pan/base/acache.c (acache_shutdown): acache's two PanCallback objects weren't freed. * pan/base/newsrc-ui.c: fixed a small memory leak in the import/export dialog -- the path string wasn't freed. * pan/rules/rule-edit-ui.c (filter_to_string_recursive): fix small memory leak. The rule strings weren't freed. (Small Improvements) * pan/base/util-file.c (pan_make_temp): if the temp directory can't be used, fall back to $TMPDIR or just /tmp. 2001-07-18 Christophe Lambin (Filters) * pan/article-toolbar.c: clear the 'use custom filter' toggle when we're not using one. 2001-07-17 Charles Kerr * pan/base/newsrc-port.c: fixed a small memory leak in newsrc_export; lots of code cleanup & added comments. * pan/base/pan-glib-extensions.c (pan_strstr): added a NULL-friendly version of strstr. The rest of the code now uses this instead of strstr(). Pan was passing NULL to strstr() when the cache disk was full. 2001-07-17 Fatih Demir * .cvsignore, pan/base|filters|rules/.cvsignore: Added/extended the cvsignores. 2001-07-16 Charles Kerr (Bugfixes) * pan/gui.c (widget_set_font_on_realize): fix free-memory-read and free-memory-write bug. This fixes the ever-popular "1z" bug. Adam Huffman should get the credit for this one since he tracked it down to the font-setting code. * pan/filters/filter-xml.c: make filter_xml_read check the return code from xmlParseFile. Same as yesterday's fix, applied to a different potential bug. * tests/test-message-check.c: added a test to make sure that Adrian von Bidder's followup message doesn't get marked with a "new new content" message. This is just a regression test for the code fixed by Christophe yesterday. (Filters) * pan/base/group.c: free the filter_name string in the group's destructor. * pan/base/file-grouplist.c: save & restore the filter_name in the grouplist file; bumped the file format version to 4. (Tweak) * pan/configure.in: Tell what version of gnome-libs we're looking for. * pan/configure.in: We were looking for libxml >= 1.8.11; this has been fixed to look for [1.8.11....2.0.0). Got this idea from gal. 2001-07-16 Christophe Lambin (Bugfixes) * pan/rules/rule-ui.c: 'Add New' crashed when no filters were defined. Thanks to Jed S. Baer for reporting this problem. * pan/rules/rule-xml.c: cleaner way of handling 'no rules'. * pan/filters/filter-xml.c: cleaner way of handling 'no filters'. 2001-07-15 Adam Huffman (Bugfixes) * pan/rules/rule-xml.c: make rule_xml_read check the return code from xmlParseFile. Thanks to Jed S. Baer for reporting this problem. 2001-07-15 Christophe Lambin (Bugfixes) * pan/base/message-check.c: under certain conditions, Pan could erroneously decide that there's no new content in a posting. Thanks to Adrian von Bidder for reporting this problem. 2001-07-12 Christophe Lambin (Bugfixes) * pan/text.c: improve our handling of an article's References, where some newsreaders use multiple spaces to separate MessageIDs. Thanks to Adrian von Bidder for reporting this problem. 2001-07-10 Christophe Lambin (Filters) * pan/filters/filter-ui.c: don't delete a filter if there are still rules using that filter. * pan/rules/rule-manager.c: sync. * pan/rules/rule-manager.h: sync. * pan/rules/rule-edit-ui.c: set the active filter in the menu. 2001-07-04 Christophe Lambin (Bugfixes) * pan/task-headers.c: only update the range of a group once we've removed expired articles, so that we can detect whether these articles were read or not. * pan/base/file-headers.c: sync. * pan/base/group.c: sync. * pan/base/group.h: sync. * pan/base/newsrc.c: sync. 2001-06-27 Charles Kerr (Filters) * pan/articlelist.c: in the filtering task description, give the name of the filter (if the filter has a name). * pan/article-toolbar.c: now handles going from one custom filter to another correctly. * pan/article-toolbar.c: cleaned up some of the text messages. (Bozo Dialog) * po/POTFILES.in: * pan/gui.c: * pan/bozo-ui.c: new file -- added the bozo dialog back in. * po/POTFILES.in: * pan/dialogs/rules.glade: * pan/dialogs/rules_interface.[ch]: * pan/dialogs/rules_callbacks.[ch]: removed dead files. 2001-06-26 Charles Kerr * configure.in: halfway updated to autoconf 2.50. Didn't change to configure.ac, as automake's patches seem to not handle it completely. 2001-06-23 Charles Kerr (Filters & Rules) * pan/rules/rule-ui.c: added "apply to selected groups" button. * pan/rules/rule-ui.c: added "apply to subscribed groups" button. * pan/rules/rule-xml.c: fix bug in loading rules, to see if the rule should be applied to incoming messages or not. * pan/rules/rule-edit-ui.c: added "apply to incoming" button. * pan/rules/rule-ui.c: added hit ratio column in clist. * pan/rules/rule-ui.c: make the edit/remove/apply buttons insensitive whenever no rule is selected. * pan/filters/filter-ui.c: make the edit/remove buttons insensitive whenever no filter is selected. 2001-06-20 Charles Kerr (Filters) * pan/filters/filter-saved.c: new Filter * pan/filters/filter-edit-ui.c: sync. * pan/filters/filter-xml.c: sync. * pan/article-toolbar.c: sync. Now we can finally plug the saved/queued/idle buttons into the rule generator. 2001-06-20 Christophe Lambin * Remove reference to task's high_priority field where appropriate * Posted articles are now added to the front of the queue. 2001-06-20 Charles Kerr (Filter Usability) * pan/article-toolbar.c: made the way of toggling between custom filters and the builtin filter flags a little nicer. (Filter Matches - What to Show) * pan/articlelist.c: * pan/article-list-toolbar-mediator.c: * pan/article-toolbar.c: added ability on what articles to show on a filter match: article, article+references, article+replies, or entire thread. 2001-06-15 Charles Kerr (Rules & Filters) * pan/article-toolbar.c: more love. * pan/rules/rule-xml.c: * pan/rules/rule-ui.c: * pan/rules/rule-edit-ui.c: * pan/rules/rules.dtd: landed new rules code into CVS. The new rules are integrated with the new filters landed last week, yay! * pan/pan.c: * pan/gui.c: sync. * pan/task-headers.c: sync. 2001-06-14 Charles Kerr (Filter Memory Management) * pan/article-toolbar.c (create_filter_from_ulong): make the resulting filter a little smaller. * pan/article-toolbar.c (update_custom_menus): fix FMR error. * pan/filters/filter-ui.c (filter_dialog_close_cb): fix memory leak. (XML Utilities) * pan/pan-glib-extensions.c (pan_str_escape): * pan/pan-glib-extensions.c (pan_str_unescape): new utility function. * pan/test.c (make_safe_for_html): superceded by pan_str_escape * pan/filters/filter-xml.c (pan_g_string_append_escaped): now use pan_str_escape. 2001-06-13 Charles Kerr (Filter Memory Management) * pan/filter-xml.c: make sure we unref articles after adding them as children to filter_aggregate. * pan/article-toolbar.c: same. * pan/article-toolbar.c: refer to the filters by name, rather than by pointer value, because filters are all copy-by-value and so the pointers are not reliable. * pan/article-list-toolbar-mediator.c: make sure we unref the filter when we're done with it. 2001-06-13 Charles Kerr (Author Name Attribution) * pan/message-window.c: added Christophe Lambin's patch for %n being replaced with the short author name string in the attribution lines. * pan/prefs.c: sync. (Filters) * pan/filters/filter.c (filter_test_articles): new virtual function. This lets us test batches of articles recursively in a slightly more efficient way. * pan/filters/filter-aggregate.c (filter_aggregate_test_articles): if there's only one filter in the aggregate, just call filter_test_articles() for the aggregate. * pan/filters/filter-phrase.c: allow filtering on the Message-ID field. * pan/article-toolbar.c: polish, polish, polish. 2001-06-12 Charles Kerr (Filters) * pan/filters/filter-thread.c: added "neither watched nor ignored" state in filter-thread. * pan/filters/filter-edit-ui.c: sync. * pan/filters/filter-xml.c: sync. (Filter UI) * pan/article-toolbar.c: more love. About 90% ready. The traditional FILTER_STATE filters are faster; you can edit filters from the cascading menu; the code's been tidied up some more. * pan/articlelist.c: emit a status message telling the user when the articles are being filtered. This is as much for my benifit as the user's: this is a useful way of seeing how long filtering takes. (Dialogs) * pan/gui.c (filter_cb): parent the dialog before showing it. * pan/dialogs/rules_callbacks.c (dialog_rules): same. * pan/dialogs/rules_callbacks.c (dialog_edit_rule): same. (Cleanup) * pan/acache.c: use the acache_flush_on_exit global instead of using gnome_config. 2001-06-10 Charles Kerr * pan/filters/*[ch]: landed filters into CVS. 2001-06-08 Charles Kerr * pan/group.h (group_chunk_string): added boolean specifying whether or not to try to share the string. Common strings such as author name, Subject, References should be shared, but strings unique in the group such as Message-ID or Xref shouldn't be. * pan/article.c (article_set_header): the HeaderAction argument now has two possible values: DO_CHUNK and DO_CHUNK_SHARE, which decide how to call group_chunk_string(). The old behavior of sharing all strings added unneeded overhead for the group's GStringChunk. * pan/gui.c: * pan/nntp.c: * pan/message-window.c: sync. .