From a0d67ea2a9900dee0b09dc31683cc26a153b4730 Mon Sep 17 00:00:00 2001 From: Paul Mangan Date: Mon, 26 Nov 2001 07:53:20 +0000 Subject: [PATCH] sync with sylpheed 0.6.5cvs16 --- ChangeLog | 14 ++++ ChangeLog.claws | 5 ++ ChangeLog.jp | 14 ++++ configure.in | 2 +- src/compose.c | 201 +++++++++++------------------------------------- src/folder.c | 74 +++++++++--------- src/folder.h | 12 +-- src/main.c | 16 ++-- 8 files changed, 129 insertions(+), 209 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8e897fd28..a58a56dd2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2001-11-26 + + * src/compose.c: compose_wrap_line_all(): more merging from claws. + GET_CHAR(): renamed GET_TEXT() and made it more generic. + Modified compose_wrap_line() and compose_wrap_line_all() to use + GET_CHAR(). + +2001-11-25 + + * src/folder.[ch] + src/main.c: added --status option to get new, unread and total + message count from a running Sylpheed (merged from claws). + prohibit_duplicate_launch(): output '\n' only once. + 2001-11-23 * src/compose.c diff --git a/ChangeLog.claws b/ChangeLog.claws index 519bf0de6..46c454a71 100644 --- a/ChangeLog.claws +++ b/ChangeLog.claws @@ -1,3 +1,8 @@ +2001-11-26 [paul] 0.6.5claws35 + + * sync with sylpheed 0.6.5cvs16 + see ChangeLog entries 2001-11-25 and 2001-11-26 + 2001-11-25 [alfons] 0.6.5claws34 EXPERIMENTAL!!! Please checkout the last stable version using: diff --git a/ChangeLog.jp b/ChangeLog.jp index 1fa890b2e..55b63a8a2 100644 --- a/ChangeLog.jp +++ b/ChangeLog.jp @@ -1,3 +1,17 @@ +2001-11-26 + + * src/compose.c: compose_wrap_line_all(): claws ¤«¤é¤µ¤é¤Ë¥Þ¡¼¥¸¡£ + GET_CHAR(): GET_TEXT() ¤ò̾¾ÎÊѹ¹¤·¡¢¤è¤ê°ìÈ̲½¤·¤¿¡£ + compose_wrap_line() ¤È compose_wrap_line_all() ¤ò GET_CHAR() ¤ò + »ÈÍѤ¹¤ë¤è¤¦¤Ë½¤Àµ¡£ + +2001-11-25 + + * src/folder.[ch] + src/main.c: µ¯Æ°Ãæ¤Î Sylpheed ¤«¤é¿·Ã塢̤ÆÉ¡¢¹ç·×¥á¥Ã¥»¡¼¥¸¿ô + ¤òÆÀ¤ë --status ¥ª¥×¥·¥ç¥ó¤òÄɲᣠ+ prohibit_duplicate_launch(): '\n' ¤ò°ìÅÙ¤À¤±½ÐÎÏ¡£ + 2001-11-23 * src/compose.c diff --git a/configure.in b/configure.in index 791e6aa5b..4c8bbcbd6 100644 --- a/configure.in +++ b/configure.in @@ -8,7 +8,7 @@ MINOR_VERSION=6 MICRO_VERSION=5 INTERFACE_AGE=0 BINARY_AGE=0 -EXTRA_VERSION=claws34 +EXTRA_VERSION=claws35 VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION dnl diff --git a/src/compose.c b/src/compose.c index 109b39734..f4f1b8229 100644 --- a/src/compose.c +++ b/src/compose.c @@ -749,12 +749,13 @@ static void compose_generic_reply(MsgInfo *msginfo, gboolean quote, if (prefs_common.auto_sig) compose_insert_sig(compose); - gtk_editable_set_position(GTK_EDITABLE(text), 0); - gtk_stext_set_point(text, 0); if (quote && prefs_common.linewrap_quote) compose_wrap_line_all(compose); + gtk_editable_set_position(GTK_EDITABLE(text), 0); + gtk_stext_set_point(text, 0); + gtk_stext_thaw(text); gtk_widget_grab_focus(compose->text); @@ -1911,6 +1912,16 @@ static void compose_attach_append(Compose *compose, const gchar *file, compose_attach_info(compose, ainfo, cnttype); } +#define GET_CHAR(pos, buf, len) \ +{ \ + if (text->use_wchar) \ + len = wctomb(buf, (wchar_t)GTK_STEXT_INDEX(text, (pos))); \ + else { \ + buf[0] = GTK_STEXT_INDEX(text, (pos)); \ + len = 1; \ + } \ +} + static void compose_wrap_line(Compose *compose) { GtkSText *text = GTK_STEXT(compose->text); @@ -1923,13 +1934,6 @@ static void compose_wrap_line(Compose *compose) gint line_pos, cur_pos; gint line_len, cur_len; -#define GET_STEXT(pos) \ - if (text->use_wchar) \ - ch_len = wctomb(cbuf, (wchar_t)GTK_STEXT_INDEX(text, (pos))); \ - else { \ - cbuf[0] = GTK_STEXT_INDEX(text, (pos)); \ - ch_len = 1; \ - } gtk_stext_freeze(text); @@ -1937,11 +1941,11 @@ static void compose_wrap_line(Compose *compose) /* check to see if the point is on the paragraph mark (empty line). */ cur_pos = gtk_stext_get_point(text); - GET_STEXT(cur_pos); + GET_CHAR(cur_pos, cbuf, ch_len); if ((ch_len == 1 && *cbuf == '\n') || cur_pos == text_len) { if (cur_pos == 0) goto compose_end; /* on the paragraph mark */ - GET_STEXT(cur_pos - 1); + GET_CHAR(cur_pos - 1, cbuf, ch_len); if (ch_len == 1 && *cbuf == '\n') goto compose_end; /* on the paragraph mark */ } @@ -1949,7 +1953,7 @@ static void compose_wrap_line(Compose *compose) /* find paragraph start. */ line_end = quoted = 0; for (p_start = cur_pos; p_start >= 0; --p_start) { - GET_STEXT(p_start); + GET_CHAR(p_start, cbuf, ch_len); if (ch_len == 1 && *cbuf == '\n') { if (quoted) goto compose_end; /* quoted part */ @@ -1973,7 +1977,7 @@ static void compose_wrap_line(Compose *compose) /* find paragraph end. */ line_end = 0; for (p_end = cur_pos; p_end < text_len; p_end++) { - GET_STEXT(p_end); + GET_CHAR(p_end, cbuf, ch_len); if (ch_len == 1 && *cbuf == '\n') { if (line_end) { p_end -= 1; @@ -2000,7 +2004,7 @@ static void compose_wrap_line(Compose *compose) for (cur_pos = p_start; cur_pos < p_end; cur_pos++) { guint space = 0; - GET_STEXT(cur_pos); + GET_CHAR(cur_pos, cbuf, ch_len); if (ch_len < 0) { cbuf[0] = '\0'; @@ -2014,7 +2018,7 @@ static void compose_wrap_line(Compose *compose) guint replace = 0; if (last_ch_len == 1 && !isspace(last_ch)) { if (cur_pos + 1 < p_end) { - GET_STEXT(cur_pos + 1); + GET_CHAR(cur_pos + 1, cbuf, ch_len); if (ch_len == 1 && !isspace(*cbuf)) replace = 1; } @@ -2045,7 +2049,7 @@ static void compose_wrap_line(Compose *compose) line_len > 0) { gint tlen = ch_len; - GET_STEXT(line_pos - 1); + GET_CHAR(line_pos - 1, cbuf, ch_len); if (ch_len == 1 && isspace(*cbuf)) { gtk_stext_set_point(text, line_pos); gtk_stext_backward_delete(text, 1); @@ -2076,8 +2080,6 @@ static void compose_wrap_line(Compose *compose) compose_end: gtk_stext_thaw(text); - -#undef GET_STEXT } /* return indent length */ @@ -2088,13 +2090,7 @@ static guint get_indent_length(GtkSText *text, guint start_pos, guint text_len) gchar cbuf[MB_LEN_MAX]; for (i = start_pos; i < text_len; i++) { - if (text->use_wchar) - ch_len = wctomb - (cbuf, (wchar_t)GTK_STEXT_INDEX(text, i)); - else { - cbuf[0] = GTK_STEXT_INDEX(text, i); - ch_len = 1; - } + GET_CHAR(i, cbuf, ch_len); if (ch_len > 1) break; /* allow space, tab, > or | */ @@ -2121,8 +2117,7 @@ static guint ins_quote(GtkSText *text, guint quote_len, guint indent_len, gtk_stext_insert(text, NULL, NULL, NULL, &ch, 1); } ins_len = indent_len; - } - else { + } else { gtk_stext_insert(text, NULL, NULL, NULL, quote_fmt, quote_len); ins_len = quote_len; } @@ -2135,8 +2130,8 @@ static guint ins_quote(GtkSText *text, guint quote_len, guint indent_len, /* Darko: used when I debug wrapping */ void dump_text(GtkSText *text, int pos, int tlen, int breakoncr) { - int i; - char ch; + gint i; + gchar ch; printf("%d [", pos); for (i = pos; i < tlen; i++) { @@ -2156,7 +2151,7 @@ static void compose_wrap_line_all(Compose *compose) guint line_pos = 0, cur_pos = 0, p_pos = 0; gint line_len = 0, cur_len = 0; gint ch_len; - gint is_new_line = 1, do_delete = 0; + gboolean is_new_line = TRUE, do_delete = FALSE; guint qlen = 0, i_len = 0; guint linewrap_quote = prefs_common.linewrap_quote; guint linewrap_len = prefs_common.linewrap_len; @@ -2175,7 +2170,7 @@ static void compose_wrap_line_all(Compose *compose) if (linewrap_quote && is_new_line) { qlen = gtkut_text_str_compare (text, cur_pos, tlen, qfmt); - is_new_line = 0; + is_new_line = FALSE; if (qlen) i_len = get_indent_length(text, cur_pos, tlen); else @@ -2187,14 +2182,7 @@ static void compose_wrap_line_all(Compose *compose) #endif } - /* get character(s) at current position */ - if (text->use_wchar) - ch_len = wctomb - (cbuf, (wchar_t)GTK_STEXT_INDEX(text, cur_pos)); - else { - cbuf[0] = GTK_STEXT_INDEX(text, cur_pos); - ch_len = 1; - } + GET_CHAR(cur_pos, cbuf, ch_len); /* fix line length for tabs */ if (ch_len == 1 && *cbuf == '\t') { @@ -2230,30 +2218,17 @@ static void compose_wrap_line_all(Compose *compose) ilen = gtkut_text_str_compare_n (text, cur_pos + 1, p_pos, i_len, tlen); if (cur_pos + ilen < tlen) { - if (text->use_wchar) - clen = wctomb(cb, (wchar_t)GTK_STEXT_INDEX(text, cur_pos + ilen + 1)); - else { - cb[0] = GTK_STEXT_INDEX(text, - cur_pos + ilen + 1); - clen = 1; - } + GET_CHAR(cur_pos + ilen + 1, cb, clen); /* no need to join the lines */ - if ((clen == 1) && (cb[0] == '\n')) - do_delete = 0; + if (clen == 1 && cb[0] == '\n') + do_delete = FALSE; } - } /* if it's just newline skip it */ - else if (do_delete && (cur_pos + 1 < tlen)) { - if (text->use_wchar) - clen = wctomb(cb, (wchar_t)GTK_STEXT_INDEX(text, cur_pos + 1)); - else { - cb[0] = GTK_STEXT_INDEX(text, - cur_pos + 1); - clen = 1; - } + } else if (do_delete && (cur_pos + 1 < tlen)) { + GET_CHAR(cur_pos + 1, cb, clen); /* no need to join the lines */ - if ((clen == 1) && (cb[0] == '\n')) - do_delete = 0; + if (clen == 1 && cb[0] == '\n') + do_delete = FALSE; } #ifdef WRAP_DEBUG @@ -2287,13 +2262,7 @@ static void compose_wrap_line_all(Compose *compose) } } - if (text->use_wchar) - clen = wctomb - (cb, (wchar_t)GTK_STEXT_INDEX(text, cur_pos)); - else { - cb[0] = GTK_STEXT_INDEX(text, cur_pos); - clen = 1; - } + GET_CHAR(cur_pos, cb, clen); /* insert space if it's alphanumeric */ if ((cur_pos != line_pos) && @@ -2309,8 +2278,8 @@ static void compose_wrap_line_all(Compose *compose) line_pos = cur_pos; line_len = cur_len = 0; qlen = 0; - do_delete = 0; - is_new_line = 1; + do_delete = FALSE; + is_new_line = TRUE; #ifdef WRAP_DEBUG printf("after delete l_pos="); dump_text(text, line_pos, tlen, 1); @@ -2322,8 +2291,8 @@ static void compose_wrap_line_all(Compose *compose) line_pos = cur_pos + 1; line_len = cur_len = 0; qlen = 0; - do_delete = 0; - is_new_line = 1; + do_delete = FALSE; + is_new_line = TRUE; continue; } @@ -2356,13 +2325,9 @@ static void compose_wrap_line_all(Compose *compose) printf("new line_pos=%d\n", line_pos); #endif + GET_CHAR(line_pos - 1, cbuf, clen); + /* if next character is space delete it */ - if (text->use_wchar) - clen = wctomb(cbuf, (wchar_t)GTK_STEXT_INDEX(text, line_pos - 1)); - else { - cbuf[0] = GTK_STEXT_INDEX(text, line_pos - 1); - clen = 1; - } if (clen == 1 && isspace(*cbuf)) { if (p_pos + i_len != line_pos || !gtkut_text_is_uri_string @@ -2396,10 +2361,10 @@ static void compose_wrap_line_all(Compose *compose) /* for loop will increase it */ cur_pos = line_pos - 1; /* start over with current line */ - is_new_line = 1; + is_new_line = TRUE; line_len = 0; cur_len = 0; - do_delete = 1; + do_delete = TRUE; #ifdef WRAP_DEBUG printf("after CR insert "); dump_text(text, line_pos, tlen, 1); @@ -2441,85 +2406,7 @@ static void compose_wrap_line_all(Compose *compose) gtk_stext_thaw(text); } -#if 0 -static void compose_wrap_line_all(Compose *compose) -{ - GtkText *text = GTK_STEXT(compose->text); - guint text_len; - guint line_pos = 0, cur_pos = 0; - gint line_len = 0, cur_len = 0; - gint ch_len; - gchar cbuf[MB_LEN_MAX]; - - gtk_stext_freeze(text); - - text_len = gtk_stext_get_length(text); - - for (; cur_pos < text_len; cur_pos++) { - if (text->use_wchar) - ch_len = wctomb - (cbuf, (wchar_t)GTK_STEXT_INDEX(text, cur_pos)); - else { - cbuf[0] = GTK_STEXT_INDEX(text, cur_pos); - ch_len = 1; - } - - if (ch_len == 1 && *cbuf == '\n') { - line_pos = cur_pos + 1; - line_len = cur_len = 0; - continue; - } - - if (ch_len < 0) { - cbuf[0] = '\0'; - ch_len = 1; - } - - if (ch_len == 1 && isspace(*cbuf)) { - line_pos = cur_pos + 1; - line_len = cur_len + ch_len; - } - - if (cur_len + ch_len > prefs_common.linewrap_len && - line_len > 0) { - gint tlen; - - if (text->use_wchar) - tlen = wctomb(cbuf, (wchar_t)GTK_STEXT_INDEX(text, line_pos - 1)); - else { - cbuf[0] = GTK_STEXT_INDEX(text, line_pos - 1); - tlen = 1; - } - if (tlen == 1 && isspace(*cbuf)) { - gtk_stext_set_point(text, line_pos); - gtk_stext_backward_delete(text, 1); - text_len--; - cur_pos--; - line_pos--; - cur_len--; - line_len--; - } - - gtk_stext_set_point(text, line_pos); - gtk_stext_insert(text, NULL, NULL, NULL, "\n", 1); - text_len++; - cur_pos++; - line_pos++; - cur_len = cur_len - line_len + ch_len; - line_len = 0; - continue; - } - - if (ch_len > 1) { - line_pos = cur_pos + 1; - line_len = cur_len + ch_len; - } - cur_len += ch_len; - } - - gtk_stext_thaw(text); -} -#endif +#undef GET_CHAR static void compose_set_title(Compose *compose) { diff --git a/src/folder.c b/src/folder.c index 55ea06b74..e75542222 100644 --- a/src/folder.c +++ b/src/folder.c @@ -361,6 +361,42 @@ void folder_write_list(void) g_warning("failed to write folder list.\n"); } +static void folder_count_total_msgs_func(GNode *node, guint *new, + guint *unread, guint *total) +{ + g_return_if_fail(node != NULL); + + if (node->data) { + FolderItem *item = FOLDER_ITEM(node->data); + *new += item->new; + *unread += item->unread; + *total += item->total; + } + + if (node->children) + folder_count_total_msgs_func(node->children, + new, unread, total); + if (node->next) + folder_count_total_msgs_func(node->next, new, unread, total); +} + +void folder_count_total_msgs(guint *new, guint *unread, guint *total) +{ + GList *list; + Folder *folder; + + *new = *unread = *total = 0; + + debug_print(_("Counting total number of messages...\n")); + + for (list = folder_list; list != NULL; list = list->next) { + folder = FOLDER(list->data); + folder_count_total_msgs_func(folder->node, new, unread, total); + } + + return; +} + Folder *folder_find_from_path(const gchar *path) { GList *list; @@ -1499,41 +1535,3 @@ FolderItem * folder_find_item_from_identifier(const gchar *identifier) folder_item_find_func, d); return d[1]; } - -static void folder_count_total_newmsgs_func(const GNode *node, guint *newmsgs, - guint *unreadmsgs, guint *totalmsgs) -{ - if (node->data) { - FolderItem *item = node->data; - *newmsgs += item->new; - *unreadmsgs += item->unread; - *totalmsgs += item->total; - } - if (node->children) - folder_count_total_newmsgs_func(node->children, newmsgs, unreadmsgs, totalmsgs); - if (node->next) - folder_count_total_newmsgs_func(node->next, newmsgs, unreadmsgs, totalmsgs); -} - -void folder_count_total_msgs(guint *newmsgs, guint *unreadmsgs, guint *totalmsgs) -{ - GList *list; - Folder *folder; - - *newmsgs = 0; - *unreadmsgs = 0; - *totalmsgs = 0; - - debug_print(_("Counting total number of messages...\n")); - list = folder_get_list(); - for (; list != NULL; list = list->next) { - folder = FOLDER(list->data); - if (folder->node) - folder_count_total_newmsgs_func(folder->node, newmsgs, unreadmsgs, totalmsgs); - } - debug_print(_(" New: %d\n"), *newmsgs); - debug_print(_(" Unread: %d\n"), *unreadmsgs); - debug_print(_(" Total: %d\n"), *totalmsgs); - - return; -} diff --git a/src/folder.h b/src/folder.h index 66cfe1f8e..833314040 100644 --- a/src/folder.h +++ b/src/folder.h @@ -262,13 +262,13 @@ void folder_tree_destroy (Folder *folder); void folder_add (Folder *folder); -GList *folder_get_list (void); -gint folder_read_list (void); -void folder_write_list (void); +GList *folder_get_list (void); +gint folder_read_list (void); +void folder_write_list (void); void folder_update_op_count (void); -void folder_count_total_msgs (guint *newmsgs, - guint *unreadmsgs, - guint *totalmsgs); +void folder_count_total_msgs (guint *new, + guint *unread, + guint *total); Folder *folder_find_from_path (const gchar *path); FolderItem *folder_find_item_from_path (const gchar *path); diff --git a/src/main.c b/src/main.c index b730b35eb..414b1f330 100644 --- a/src/main.c +++ b/src/main.c @@ -195,6 +195,7 @@ int main(int argc, char *argv[]) /* check and create unix domain socket */ lock_socket = prohibit_duplicate_launch(); if (lock_socket < 0) return 0; + if (cmd.status) { puts("0 Sylpheed not running.\n"); return 0; @@ -340,7 +341,7 @@ static void parse_cmd_opt(int argc, char *argv[]) } else if (!strncmp(argv[i], "--version", 9)) { puts("Sylpheed version " VERSION); exit(0); - } else if (!strncmp(argv[i], "--status", 5)) { + } else if (!strncmp(argv[i], "--status", 8)) { cmd.status = TRUE; } else if (!strncmp(argv[i], "--help", 6)) { g_print(_("Usage: %s [OPTION]...\n"), @@ -349,6 +350,7 @@ static void parse_cmd_opt(int argc, char *argv[]) puts(_(" --compose [address] open composition window")); puts(_(" --receive receive new messages")); puts(_(" --receive-all receive new messages of all accounts")); + puts(_(" --status show the total number of messages")); puts(_(" --debug debug mode")); puts(_(" --help display this help and exit")); puts(_(" --version output version information and exit")); @@ -482,9 +484,9 @@ static gint prohibit_duplicate_launch(void) } else if (cmd.status) { gchar buf[BUFFSIZE]; - fd_write(uxsock, "status\n", 9); + fd_write(uxsock, "status\n", 7); fd_gets(uxsock, buf, sizeof(buf)); - puts(buf); + fputs(buf, stdout); } else fd_write(uxsock, "popup\n", 6); @@ -514,13 +516,13 @@ static void lock_socket_input_cb(gpointer data, } else if (!strncmp(buf, "compose", 7)) { open_compose_new_with_recipient(buf + strlen("compose") + 1); } else if (!strncmp(buf, "status", 6)) { - gchar buf[BUFFSIZE]; - guint newmsgs, unreadmsgs, totalmsgs; + guint new, unread, total; - folder_count_total_msgs(&newmsgs, &unreadmsgs, &totalmsgs); - snprintf(buf, sizeof(buf), "%d %d %d\n", newmsgs, unreadmsgs, totalmsgs); + folder_count_total_msgs(&new, &unread, &total); + g_snprintf(buf, sizeof(buf), "%d %d %d\n", new, unread, total); fd_write(sock, buf, strlen(buf)); } + fd_close(sock); } -- 2.25.1