aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--ChangeLog.ja6
-rw-r--r--libsylph/folder.c18
-rw-r--r--libsylph/folder.h2
-rw-r--r--src/compose.c23
-rw-r--r--src/send_message.c23
6 files changed, 42 insertions, 36 deletions
diff --git a/ChangeLog b/ChangeLog
index e685097e..1d28522f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2007-07-11
+ * libsylph/folder.[ch]: folder_find_item_and_num_from_id(): added.
+ * src/compose.c
+ src/send_message.c: code cleanup.
+
+2007-07-11
+
* src/editbook.c: win32: fixed a bug that the name entry didn't
accept key input.
diff --git a/ChangeLog.ja b/ChangeLog.ja
index 2be4022e..c864234f 100644
--- a/ChangeLog.ja
+++ b/ChangeLog.ja
@@ -1,5 +1,11 @@
2007-07-11
+ * libsylph/folder.[ch]: folder_find_item_and_num_from_id(): 追加。
+ * src/compose.c
+ src/send_message.c: コードの整理。
+
+2007-07-11
+
* src/editbook.c: win32: 名前エントリがキー入力を受け付けないバグを
修正しました。
diff --git a/libsylph/folder.c b/libsylph/folder.c
index 6527c848..0649ca21 100644
--- a/libsylph/folder.c
+++ b/libsylph/folder.c
@@ -728,6 +728,24 @@ FolderItem *folder_find_item_from_identifier(const gchar *identifier)
return d[1];
}
+FolderItem *folder_find_item_and_num_from_id(const gchar *identifier, gint *num)
+{
+ gchar *id;
+ gchar *msg;
+ FolderItem *item;
+
+ g_return_val_if_fail(identifier != NULL, NULL);
+
+ id = g_path_get_dirname(identifier);
+ msg = g_path_get_basename(identifier);
+ item = folder_find_item_from_identifier(id);
+ *num = to_number(msg);
+ g_free(msg);
+ g_free(id);
+
+ return item;
+}
+
Folder *folder_get_default_folder(void)
{
return folder_list ? FOLDER(folder_list->data) : NULL;
diff --git a/libsylph/folder.h b/libsylph/folder.h
index 96107261..38907551 100644
--- a/libsylph/folder.h
+++ b/libsylph/folder.h
@@ -352,6 +352,8 @@ FolderItem *folder_find_child_item_by_name (FolderItem *item,
gchar *folder_get_identifier (Folder *folder);
gchar *folder_item_get_identifier (FolderItem *item);
FolderItem *folder_find_item_from_identifier (const gchar *identifier);
+FolderItem *folder_find_item_and_num_from_id (const gchar *identifier,
+ gint *num);
Folder *folder_get_default_folder (void);
FolderItem *folder_get_default_inbox (void);
diff --git a/src/compose.c b/src/compose.c
index 6c3bc116..28972cc4 100644
--- a/src/compose.c
+++ b/src/compose.c
@@ -1541,8 +1541,6 @@ static gint compose_parse_source_msg(Compose *compose, MsgInfo *msginfo)
gchar *str;
gchar buf[BUFFSIZE];
gint hnum;
- gchar *id;
- gchar *msg;
gint num;
gchar **paths;
gint i;
@@ -1564,35 +1562,24 @@ static gint compose_parse_source_msg(Compose *compose, MsgInfo *msginfo)
++str;
if ((hnum == H_X_SYLPHEED_REPLY || hnum == H_REP) &&
!compose->replyto) {
- id = g_path_get_dirname(str);
- msg = g_path_get_basename(str);
- num = to_number(msg);
- item = folder_find_item_from_identifier(id);
- g_print("folder id: %s (msg %d)\n", id, num);
- if (num > 0 && item) {
+ item = folder_find_item_and_num_from_id(str, &num);
+ if (item && num > 0) {
compose->replyinfo =
folder_item_get_msginfo(item, num);
}
- g_free(msg);
- g_free(id);
} else if (hnum == H_X_SYLPHEED_FORWARD || hnum == H_FWD) {
paths = g_strsplit(str, "\n", 0);
for (i = 0; paths[i] != NULL; i++) {
g_strstrip(paths[i]);
- id = g_path_get_dirname(paths[i]);
- msg = g_path_get_basename(paths[i]);
- num = to_number(msg);
- item = folder_find_item_from_identifier(id);
- g_print("folder id: %s (msg %d)\n", id, num);
- if (num > 0 && item) {
+ item = folder_find_item_and_num_from_id
+ (paths[i], &num);
+ if (item && num > 0) {
MsgInfo *msginfo;
msginfo = folder_item_get_msginfo
(item, num);
if (msginfo)
compose->forward_mlist = g_slist_append(compose->forward_mlist, msginfo);
}
- g_free(msg);
- g_free(id);
}
g_strfreev(paths);
}
diff --git a/src/send_message.c b/src/send_message.c
index 483f6126..a6b2e895 100644
--- a/src/send_message.c
+++ b/src/send_message.c
@@ -150,8 +150,6 @@ QueueInfo *send_get_queue_info(const gchar *file)
gchar buf[BUFFSIZE];
gint hnum;
QueueInfo *qinfo;
- gchar *id;
- gchar *msg;
gint num;
FolderItem *item;
MsgInfo *msginfo;
@@ -190,34 +188,23 @@ QueueInfo *send_get_queue_info(const gchar *file)
qinfo->ac = account_find_from_id(atoi(p));
break;
case Q_REPLY_TARGET:
- id = g_path_get_dirname(p);
- msg = g_path_get_basename(p);
- num = to_number(msg);
- item = folder_find_item_from_identifier(id);
- g_print("folder id: %s (msg %d)\n", id, num);
- if (num > 0 && item) {
+ item = folder_find_item_and_num_from_id(p, &num);
+ if (item && num > 0) {
qinfo->replyinfo =
procmsg_get_msginfo(item, num);
}
- g_free(msg);
- g_free(id);
break;
case Q_FORWARD_TARGETS:
paths = g_strsplit(p, "\n", 0);
for (i = 0; paths[i] != NULL; i++) {
g_strstrip(paths[i]);
- id = g_path_get_dirname(paths[i]);
- msg = g_path_get_basename(paths[i]);
- num = to_number(msg);
- item = folder_find_item_from_identifier(id);
- g_print("folder id: %s (msg %d)\n", id, num);
- if (num > 0 && item) {
+ item = folder_find_item_and_num_from_id
+ (paths[i], &num);
+ if (item && num > 0) {
msginfo = procmsg_get_msginfo(item, num);
if (msginfo)
qinfo->forward_mlist = g_slist_append(qinfo->forward_mlist, msginfo);
}
- g_free(msg);
- g_free(id);
}
g_strfreev(paths);
break;