+2002-02-05
+
+ * src/compose.c: compose_exec_ext_editor_real(): replaced
+ g_strsplit() with strsplit_with_quote().
+ * src/foldersel.c
+ src/folderview.c: folderview_drag_motion_cb(): minor code cleanups.
+ * src/folderview.c:
+ folderview_drag_motion_cb()
+ folderview_drag_received_cb(): allow dropping into IMAP4 folder.
+ * src/utils.c: get_file_size_as_crlf(): use fgets() instead of
+ fread().
+ * src/imap.c
+ imap_copy_msg()
+ imap_copy_msgs_with_dest(): use imap_add_msg() if the source
+ of the message is different from the current mailbox.
+ Return the correct value.
+ imap_cmd_append(): properly implemented the APPEND command.
+
2002-02-04
* src/mainwindow.c
* src/mainwindow.c
src/prefs_common.c: changed the default shortcut of 'compose new
message'.
+ * src/mainwindow.c
+ src/summaryview.[ch]: summary_display_msg_selected(): new.
+ Show the selected message if 'Show all header' is selected.
+ * src/mh.c
+ src/sourcewindow.c: changed some procmsg_get_message_file_path()
+ to procmsg_get_message_file() to be sure the message is
+ retrieved.
+ * src/folderview.c: folderview_drag_motion_cb(): allow DnD from
+ any folder to MH folder.
+ folderview_drag_received_cb(): copy messages instead of moving
+ if the source folder is news or IMAP.
+ * src/mainwindow.c
+ src/summaryview.c: allow copy from news folder.
2002-02-03
+2002-02-05 [paul] 0.7.0claws49
+
+ * sync with sylpheed 0.7.0cvs33
+ see ChangeLog entries 2002-02-04 (last 4 entries) and 2002-02-05
+
2002-02-05 [paul] 0.7.0claws48
* src/compose.c
+2002-02-05
+
+ * src/compose.c: compose_exec_ext_editor_real(): g_strsplit() ¤ò
+ strsplit_with_quote() ¤ÇÃÖ¤´¹¤¨¤¿¡£
+ * src/foldersel.c
+ src/folderview.c: folderview_drag_motion_cb(): ¾¯¤·¥³¡¼¥É¤ÎÀ°Íý¡£
+ * src/folderview.c:
+ folderview_drag_motion_cb()
+ folderview_drag_received_cb(): IMAP4 ¥Õ¥©¥ë¥À¤Ø¤Î¥É¥í¥Ã¥×¤ò²Äǽ
+ ¤Ë¤·¤¿¡£
+ * src/utils.c: get_file_size_as_crlf(): fread() ¤ÎÂå¤ï¤ê¤Ë fgets()
+ ¤ò»ÈÍÑ¡£
+ * src/imap.c
+ imap_copy_msg()
+ imap_copy_msgs_with_dest(): ¥á¥Ã¥»¡¼¥¸¤Î¥½¡¼¥¹¤¬¸½ºß¤Î¥á¡¼¥ë
+ ¥Ü¥Ã¥¯¥¹¤È°Û¤Ê¤Ã¤Æ¤¤¤ì¤Ð imap_add_msg() ¤ò»ÈÍѤ¹¤ë¤è¤¦¤Ë¤·¤¿¡£
+ Àµ¤·¤¤ÃͤòÊÖ¤¹¤è¤¦¤Ë¤·¤¿¡£
+ imap_cmd_append(): APPEND ¥³¥Þ¥ó¥É¤òÀµ¤·¤¯¼ÂÁõ¡£
+
2002-02-04
* src/mainwindow.c
* src/mainwindow.c
src/prefs_common.c: ¡Ö¿·µ¬¥á¥Ã¥»¡¼¥¸¤òºîÀ®¡×¤Î¥Ç¥Õ¥©¥ë¥È¤Î
¥·¥ç¡¼¥È¥«¥Ã¥È¤òÊѹ¹¡£
+ * src/mainwindow.c
+ src/summaryview.[ch]: summary_display_msg_selected(): ¿·µ¬¡£
+ ¡ÖÁ´¤Æ¤Î¥Ø¥Ã¥À¤òɽ¼¨¡×¤òÁªÂò¤·¤¿¤éÁªÂò¤µ¤ì¤¿¥á¥Ã¥»¡¼¥¸¤òɽ¼¨
+ ¤¹¤ë¤è¤¦¤Ë¤·¤¿¡£
+ * src/mh.c
+ src/sourcewindow.c: ¤¤¤¯¤Ä¤«¤Î procmsg_get_message_file_path()
+ ¤ò procmsg_get_message_file() ¤ËÊѹ¹¤·¡¢¥á¥Ã¥»¡¼¥¸¤¬³Î¼Â¤Ë
+ ¼èÆÀ¤µ¤ì¤Æ¤¤¤ë¤è¤¦¤Ë¤·¤¿¡£
+ * src/folderview.c: folderview_drag_motion_cb(): Ǥ°Õ¤Î¥Õ¥©¥ë¥À
+ ¤«¤é MH ¥Õ¥©¥ë¥À¤Ø¤Î DnD ¤òµö²Ä¡£
+ folderview_drag_received_cb(): ¥É¥é¥Ã¥°¸µ¥Õ¥©¥ë¥À¤¬¥Ë¥å¡¼¥¹
+ ¤¢¤ë¤¤¤Ï IMAP ¤Î¾ì¹ç¥á¥Ã¥»¡¼¥¸¤ò°ÜÆ°¤¹¤ë¤«¤ï¤ê¤Ë¥³¥Ô¡¼¤¹¤ë¤è¤¦¤Ë
+ ¤·¤¿¡£
+ * src/mainwindow.c
+ src/summaryview.c: ¥Ë¥å¡¼¥¹¥Õ¥©¥ë¥À¤«¤é¤Î¥³¥Ô¡¼¤òµö²Ä¡£
2002-02-03
MICRO_VERSION=0
INTERFACE_AGE=0
BINARY_AGE=0
-EXTRA_VERSION=claws48
+EXTRA_VERSION=claws49
VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION
dnl set $target
g_snprintf(buf, sizeof(buf), def_cmd, file);
}
- cmdline = g_strsplit(buf, " ", 1024);
+ cmdline = strsplit_with_quote(buf, " ", 1024);
execvp(cmdline[0], cmdline);
perror("execvp");
static gboolean cancelled;
-static void foldersel_create(void);
-static void foldersel_init(void);
-static void foldersel_set_tree(Folder *cur_folder);
-static void foldersel_selected(GtkCList *clist, gint row, gint column,
- GdkEvent *event, gpointer data);
-
-static void foldersel_ok(GtkButton *button, gpointer data);
-static void foldersel_cancel(GtkButton *button, gpointer data);
-static void foldersel_activated(void);
-static gint delete_event(GtkWidget *widget, GdkEventAny *event, gpointer data);
-static void key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data);
+static void foldersel_create (void);
+static void foldersel_init (void);
+static void foldersel_set_tree (Folder *cur_folder);
+static void foldersel_selected (GtkCList *clist,
+ gint row,
+ gint column,
+ GdkEvent *event,
+ gpointer data);
+
+static void foldersel_ok (GtkButton *button,
+ gpointer data);
+static void foldersel_cancel (GtkButton *button,
+ gpointer data);
+static void foldersel_activated (void);
+static gint delete_event (GtkWidget *widget,
+ GdkEventAny *event,
+ gpointer data);
+static void key_pressed (GtkWidget *widget,
+ GdkEventKey *event,
+ gpointer data);
FolderItem *foldersel_folder_sel(Folder *cur_folder,
const gchar *default_folder)
FolderView *folderview)
{
gint row, column;
- FolderItem *item, *current_item;
+ FolderItem *item, *src_item;
GtkCTreeNode *node = NULL;
gboolean acceptable = FALSE;
- if (gtk_clist_get_selection_info(GTK_CLIST(widget),
- x - 24, y - 24, &row, &column)) {
+ if (gtk_clist_get_selection_info
+ (GTK_CLIST(widget), x - 24, y - 24, &row, &column)) {
node = gtk_ctree_node_nth(GTK_CTREE(widget), row);
item = gtk_ctree_node_get_row_data(GTK_CTREE(widget), node);
- current_item = folderview->summaryview->folder_item;
- if (item != NULL &&
- item->path != NULL &&
- current_item != NULL &&
- current_item != item) {
- switch (item->folder->type){
+ src_item = folderview->summaryview->folder_item;
+ if (item && item->folder && item->path &&
+ src_item && src_item != item) {
+ switch (item->folder->type) {
case F_MH:
- if (current_item->folder->type == F_MH)
- acceptable = TRUE;
- break;
case F_IMAP:
- if (current_item->folder->account == item->folder->account)
- acceptable = TRUE;
+ acceptable = TRUE;
break;
default:
+ break;
}
}
}
FolderView *folderview)
{
gint row, column;
- FolderItem *item;
+ FolderItem *item, *src_item;
GtkCTreeNode *node;
- if (gtk_clist_get_selection_info(GTK_CLIST(widget),
- x - 24, y - 24, &row, &column) == 0)
+ if (gtk_clist_get_selection_info
+ (GTK_CLIST(widget), x - 24, y - 24, &row, &column) == 0)
return;
node = gtk_ctree_node_nth(GTK_CTREE(widget), row);
item = gtk_ctree_node_get_row_data(GTK_CTREE(widget), node);
- if (item != NULL) {
+ src_item = folderview->summaryview->folder_item;
+ if (item && src_item) {
switch (drag_context->action) {
case GDK_ACTION_COPY:
summary_copy_selected_to(folderview->summaryview, item);
case GDK_ACTION_MOVE:
case GDK_ACTION_DEFAULT:
default:
- summary_move_selected_to(folderview->summaryview, item);
- gtk_drag_finish(drag_context, TRUE, TRUE, time);
- break;
+ if (src_item->folder->type != item->folder->type ||
+ (src_item->folder->type == F_IMAP &&
+ src_item->folder != item->folder))
+ summary_copy_selected_to(folderview->summaryview, item);
+ else
+ summary_move_selected_to(folderview->summaryview, item);
+ gtk_drag_finish(drag_context, TRUE, TRUE, time);
}
} else
gtk_drag_finish(drag_context, FALSE, FALSE, time);
#include <time.h>
#include "intl.h"
-#include "prefs_account.h"
#include "imap.h"
#include "socket.h"
#include "ssl.h"
#include "procheader.h"
#include "folder.h"
#include "statusbar.h"
+#include "prefs_account.h"
#include "codeconv.h"
#include "utils.h"
#include "inputdialog.h"
FILE_OP_ERROR(file, "unlink");
}
- return dest->last_num;
+ return 0;
}
static gint imap_do_copy(Folder *folder, FolderItem *dest, MsgInfo *msginfo,
g_free(destdir);
statusbar_pop_all();
- return ok;
+ if (ok == IMAP_SUCCESS)
+ return 0;
+ else
+ return -1;
}
static gint imap_do_copy_msgs_with_dest(Folder *folder, FolderItem *dest,
GSList *cur;
MsgInfo *msginfo;
IMAPSession *session;
- gint ok;
+ gint ok = IMAP_SUCCESS;
g_return_val_if_fail(folder != NULL, -1);
g_return_val_if_fail(dest != NULL, -1);
g_free(destdir);
statusbar_pop_all();
- return IMAP_SUCCESS;
+ if (ok == IMAP_SUCCESS)
+ return 0;
+ else
+ return -1;
}
gint imap_move_msg(Folder *folder, FolderItem *dest, MsgInfo *msginfo)
gint imap_copy_msg(Folder *folder, FolderItem *dest, MsgInfo *msginfo)
{
- return imap_do_copy(folder, dest, msginfo, FALSE);
+ gchar *srcfile;
+ gint ret = 0;
+
+ g_return_val_if_fail(folder != NULL, -1);
+ g_return_val_if_fail(dest != NULL, -1);
+ g_return_val_if_fail(msginfo != NULL, -1);
+ g_return_val_if_fail(msginfo->folder != NULL, -1);
+
+ if (folder == msginfo->folder->folder)
+ return imap_do_copy(folder, dest, msginfo, FALSE);
+
+ srcfile = procmsg_get_message_file(msginfo);
+ if (!srcfile) return -1;
+
+ ret = imap_add_msg(folder, dest, srcfile, FALSE);
+
+ g_free(srcfile);
+
+ return ret;
}
gint imap_copy_msgs_with_dest(Folder *folder, FolderItem *dest,
GSList *msglist)
{
- return imap_do_copy_msgs_with_dest(folder, dest, msglist, FALSE);
+ MsgInfo *msginfo;
+ GSList *cur;
+ gint ret = 0;
+
+ g_return_val_if_fail(folder != NULL, -1);
+ g_return_val_if_fail(dest != NULL, -1);
+ g_return_val_if_fail(msglist != NULL, -1);
+
+ msginfo = (MsgInfo *)msglist->data;
+ if (folder == msginfo->folder->folder)
+ return imap_do_copy_msgs_with_dest
+ (folder, dest, msglist, FALSE);
+
+ for (cur = msglist; cur != NULL; cur = cur->next) {
+ msginfo = (MsgInfo *)msglist->data;
+ ret = imap_copy_msg(folder, dest, msginfo);
+ if (ret != 0) break;
+ }
+
+ return ret;
}
gint imap_remove_msg(Folder *folder, FolderItem *item, gint uid)
static SockInfo *imap_init_sock(SockInfo *sock)
{
imap_cmd_count = 0;
+
+ if (imap_cmd_noop(sock) != IMAP_SUCCESS) {
+ sock_close(sock);
+ return NULL;
+ }
+
return sock;
}
gint ok;
gint size;
gchar *destfolder_;
+ gchar buf[BUFFSIZE];
+ FILE *fp;
g_return_val_if_fail(file != NULL, IMAP_ERROR);
size = get_file_size_as_crlf(file);
+ if ((fp = fopen(file, "r")) == NULL) {
+ FILE_OP_ERROR(file, "fopen");
+ return -1;
+ }
QUOTE_IF_REQUIRED(destfolder_, destfolder);
- imap_cmd_gen_send(sock, "APPEND %s {%d}", destfolder_, size);
- ok = imap_cmd_ok(sock, NULL);
- if (ok != IMAP_SUCCESS) {
+ imap_cmd_gen_send(sock, "APPEND %s (\\Seen) {%d}", destfolder_, size);
+
+ ok = imap_cmd_gen_recv(sock, buf, sizeof(buf));
+ if (ok != IMAP_SUCCESS || buf[0] != '+' || buf[1] != ' ') {
log_warning(_("can't append %s to %s\n"), file, destfolder_);
+ fclose(fp);
+ return IMAP_ERROR;
+ }
+
+ log_print("IMAP4> %s\n", _("(sending file...)"));
+
+ while (fgets(buf, sizeof(buf), fp) != NULL) {
+ strretchomp(buf);
+ if (sock_puts(sock, buf) < 0) {
+ fclose(fp);
+ sock_close(sock);
+ return -1;
+ }
+ }
+
+ if (ferror(fp)) {
+ FILE_OP_ERROR(file, "fgets");
+ fclose(fp);
+ sock_close(sock);
return -1;
}
- return ok;
+ sock_puts(sock, "");
+
+ fclose(fp);
+ return imap_cmd_ok(sock, NULL);
}
static gint imap_cmd_copy(SockInfo *sock, guint32 uid, const gchar *destfolder)
else
gtk_widget_show(mainwin->exec_btn);
- summary_redisplay_msg(mainwin->summaryview, FALSE);
+ summary_redisplay_msg(mainwin->summaryview);
headerview_set_visibility(mainwin->messageview->headerview,
prefs_common.display_header_pane);
}
M_EXEC = 1 << 4,
M_ALLOW_REEDIT = 1 << 5,
M_HAVE_ACCOUNT = 1 << 6,
- M_THREADED = 1 << 7,
+ M_THREADED = 1 << 7,
M_UNTHREADED = 1 << 8,
- M_NEWS = 1 << 9,
- M_HAVE_NEWS_ACCOUNT = 1 << 10,
- M_HIDE_READ_MSG = 1 << 11
+ M_ALLOW_DELETE = 1 << 9,
+ M_NEWS = 1 << 10,
+ M_HAVE_NEWS_ACCOUNT = 1 << 11,
+ M_HIDE_READ_MSG = 1 << 12
} SensitiveCond;
static SensitiveCond main_window_get_current_state(MainWindow *mainwin)
if (selection != SUMMARY_NONE)
state |= M_MSG_EXIST;
if (item) {
+ state |= M_EXEC;
if (item->threaded)
state |= M_THREADED;
else
- state |= M_UNTHREADED;
+ state |= M_UNTHREADED;
+ if (item->folder->type != F_NEWS)
+ state |= M_ALLOW_DELETE;
if (selection == SUMMARY_NONE && item->hide_read_msgs
|| selection != SUMMARY_NONE)
state |= M_TARGET_EXIST;
if (selection == SUMMARY_SELECTED_SINGLE)
state |= M_SINGLE_TARGET_EXIST;
- if (item && item->folder->type != F_NEWS)
- state |= M_EXEC;
if (mainwin->summaryview->folder_item &&
mainwin->summaryview->folder_item->folder->type == F_NEWS)
state |= M_NEWS;
/* {mainwin->prefs_btn , M_UNLOCKED},
{mainwin->account_btn , M_UNLOCKED}, */
{mainwin->next_btn , M_MSG_EXIST},
- {mainwin->delete_btn , M_TARGET_EXIST|M_EXEC|M_UNLOCKED},
+ {mainwin->delete_btn , M_TARGET_EXIST|M_ALLOW_DELETE|M_UNLOCKED},
{mainwin->exec_btn , M_MSG_EXIST|M_EXEC|M_UNLOCKED},
{NULL, 0}
};
{"/Message/Forward" , M_HAVE_ACCOUNT|M_TARGET_EXIST},
{"/Message/Bounce" , M_HAVE_ACCOUNT|M_SINGLE_TARGET_EXIST},
{"/Message/Re-edit" , M_HAVE_ACCOUNT|M_ALLOW_REEDIT},
- {"/Message/Move..." , M_TARGET_EXIST|M_EXEC|M_UNLOCKED},
+ {"/Message/Move..." , M_TARGET_EXIST|M_ALLOW_DELETE|M_UNLOCKED},
{"/Message/Copy..." , M_TARGET_EXIST|M_EXEC|M_UNLOCKED},
- {"/Message/Delete" , M_TARGET_EXIST|M_EXEC|M_UNLOCKED},
+ {"/Message/Delete" , M_TARGET_EXIST|M_ALLOW_DELETE|M_UNLOCKED},
{"/Message/Mark" , M_TARGET_EXIST},
- {"/Message/Delete duplicated messages", M_MSG_EXIST|M_EXEC|M_UNLOCKED},
+ {"/Message/Delete duplicated messages", M_MSG_EXIST|M_ALLOW_DELETE|M_UNLOCKED},
{"/Tool/Add sender to address book", M_SINGLE_TARGET_EXIST},
{"/Tool/Filter messages" , M_MSG_EXIST|M_EXEC|M_UNLOCKED},
static void show_all_header_cb(MainWindow *mainwin, guint action,
GtkWidget *widget)
{
- summary_redisplay_msg(mainwin->summaryview, TRUE);
+ summary_display_msg_selected(mainwin->summaryview, TRUE);
}
static void reedit_cb(MainWindow *mainwin, guint action, GtkWidget *widget)
g_free(prefs_common.force_charset);
prefs_common.force_charset = str ? g_strdup(str) : NULL;
- summary_redisplay_msg(mainwin->summaryview, FALSE);
+ summary_redisplay_msg(mainwin->summaryview);
debug_print(_("forced charset: %s\n"), str ? str : "Auto-Detect");
}
debug_print(_("Moving message %s%c%d to %s ...\n"),
msginfo->folder->path, G_DIR_SEPARATOR,
msginfo->msgnum, dest->path);
- srcfile = procmsg_get_message_file_path(msginfo);
+ srcfile = procmsg_get_message_file(msginfo);
destfile = mh_get_newmsg_filename(dest);
if(!destfile) return -1;
msginfo->folder->path, G_DIR_SEPARATOR,
msginfo->msgnum, dest->path);
- srcfile = procmsg_get_message_file_path(msginfo);
+ srcfile = procmsg_get_message_file(msginfo);
destfile = mh_get_newmsg_filename(dest);
if(!destfile) return -1;
debug_print(_("Copying message %s%c%d to %s ...\n"),
msginfo->folder->path, G_DIR_SEPARATOR,
msginfo->msgnum, dest->path);
- srcfile = procmsg_get_message_file_path(msginfo);
+ srcfile = procmsg_get_message_file(msginfo);
destfile = mh_get_newmsg_filename(dest);
if(!destfile) {
g_free(srcfile);
msginfo->folder->path, G_DIR_SEPARATOR,
msginfo->msgnum, dest->path);
- srcfile = procmsg_get_message_file_path(msginfo);
+ srcfile = procmsg_get_message_file(msginfo);
destfile = mh_get_newmsg_filename(dest);
if(!destfile) {
g_free(srcfile);
g_return_if_fail(msginfo != NULL);
- file = procmsg_get_message_file_path(msginfo);
+ file = procmsg_get_message_file(msginfo);
g_return_if_fail(file != NULL);
if ((fp = fopen(file, "r")) == NULL) {
if (summaryview->folder_item->folder->type != F_NEWS) {
menu_set_sensitive(ifactory, "/Move...", TRUE);
- menu_set_sensitive(ifactory, "/Copy...", TRUE);
menu_set_sensitive(ifactory, "/Delete", TRUE);
}
+ menu_set_sensitive(ifactory, "/Copy...", TRUE);
menu_set_sensitive(ifactory, "/Execute", TRUE);
menu_set_sensitive(ifactory, "/Mark", TRUE);
summary_unlock(summaryview);
}
-void summary_redisplay_msg(SummaryView *summaryview, gboolean all_headers)
+void summary_display_msg_selected(SummaryView *summaryview,
+ gboolean all_headers)
+{
+ summaryview->displayed = NULL;
+ summary_display_msg_full(summaryview, summaryview->selected, FALSE,
+ all_headers);
+}
+
+void summary_redisplay_msg(SummaryView *summaryview)
{
GtkCTreeNode *node;
if (summaryview->displayed) {
node = summaryview->displayed;
summaryview->displayed = NULL;
- summary_display_msg_full(summaryview, node, FALSE, all_headers);
+ summary_display_msg(summaryview, node);
}
}
GList *cur;
if (!to_folder) return;
- if (!summaryview->folder_item ||
- summaryview->folder_item->folder->type == F_NEWS) return;
+ if (!summaryview->folder_item) return;
if (summary_is_locked(summaryview)) return;
{
FolderItem *to_folder;
- if (!summaryview->folder_item ||
- summaryview->folder_item->folder->type == F_NEWS) return;
+ if (!summaryview->folder_item) return;
to_folder = foldersel_folder_sel(NULL, NULL);
summary_copy_selected_to(summaryview, to_folder);
GtkCList *clist = GTK_CLIST(summaryview->ctree);
GtkCTreeNode *node, *next;
- if (!summaryview->folder_item ||
- summaryview->folder_item->folder->type == F_NEWS) return FALSE;
+ if (!summaryview->folder_item) return FALSE;
if (summary_is_locked(summaryview)) return FALSE;
summary_lock(summaryview);
if (global_processing == NULL) {
/* old filtering */
- file = procmsg_get_message_file_path(msginfo);
+ file = procmsg_get_message_file(msginfo);
dest = filter_get_dest_folder(prefs_common.fltlist, file);
g_free(file);
if (!summaryview->displayed)
messageview_clear(summaryview->messageview);
else
- summary_redisplay_msg(summaryview, TRUE);
+ summary_redisplay_msg(summaryview);
}
static void summary_show_all_header_cb(SummaryView *summaryview,
guint action, GtkWidget *widget)
{
- summary_redisplay_msg(summaryview, TRUE);
+ summary_display_msg_selected(summaryview, TRUE);
}
static void summary_add_address_cb(SummaryView *summaryview,
g_return_if_fail(summaryview != NULL);
g_return_if_fail(summaryview->folder_item != NULL);
g_return_if_fail(summaryview->folder_item->folder != NULL);
- if (summaryview->folder_item->folder->type == F_NEWS ||
- summaryview->selected == NULL)
- return;
+ if (summaryview->selected == NULL) return;
list = gtk_target_list_new(summary_drag_types, 1);
cur != NULL; cur = cur->next) {
msginfo = gtk_ctree_node_get_row_data
(ctree, GTK_CTREE_NODE(cur->data));
- tmp2 = procmsg_get_message_file_path(msginfo);
+ tmp2 = procmsg_get_message_file(msginfo);
if (!tmp2) continue;
tmp1 = g_strconcat("file:/", tmp2, NULL);
g_free(tmp2);
void summary_pass_key_press_event (SummaryView *summaryview,
GdkEventKey *event);
-void summary_redisplay_msg (SummaryView *summaryview,
+void summary_display_msg_selected (SummaryView *summaryview,
gboolean all_headers);
+void summary_redisplay_msg (SummaryView *summaryview);
void summary_open_msg (SummaryView *summaryview);
void summary_view_source (SummaryView *summaryview);
void summary_reedit (SummaryView *summaryview);
{
FILE *fp;
off_t size = 0;
- gint left;
- gint line_len;
- gchar buf[BUFSIZ];
- gchar *p, *prev;
+ gchar buf[BUFFSIZE];
if ((fp = fopen(file, "r")) == NULL) {
FILE_OP_ERROR(file, "fopen");
return -1;
}
- while ((left = fread(buf, sizeof(gchar), sizeof(buf), fp)) > 0) {
- prev = buf;
-
- if (left < sizeof(buf) && ferror(fp))
- break;
-
- do {
- p = memchr(prev, '\n', left);
- if (p != NULL) {
- line_len = p - prev;
- if (p > buf && *(p - 1) == '\r')
- size += line_len + 1;
- else
- size += line_len + 2;
- left -= line_len + 1;
- prev = p + 1;
- } else {
- size += left;
- break;
- }
- } while (left > 0);
+ while (fgets(buf, sizeof(buf), fp) != NULL) {
+ strretchomp(buf);
+ size += strlen(buf) + 2;
}
if (ferror(fp)) {
- FILE_OP_ERROR(file, "fread");
+ FILE_OP_ERROR(file, "fgets");
size = -1;
}