From: Colin Leroy Date: Tue, 19 Oct 2004 07:28:20 +0000 (+0000) Subject: 2004-10-19 [colin] 0.9.12cvs128.1 X-Git-Tag: gtk2_win32_last_merge~131 X-Git-Url: http://git.claws-mail.org/?p=claws.git;a=commitdiff_plain;h=7b9a4be4dbec7f7f90087892a458984c8002ade4 2004-10-19 [colin] 0.9.12cvs128.1 * src/addrbook.c * src/addrcache.c * src/addressbook.c * src/codeconv.c * src/compose.c * src/customheader.c * src/editaddress.c * src/editgroup.c * src/exporthtml.c * src/folder.c * src/folderview.c * src/imap.c * src/jpilot.c * src/main.c * src/matcher_parser_parse.y * src/mbox.c * src/pop.c * src/prefs_account.c * src/prefs_gtk.c * src/prefs_msg_colors.c * src/procheader.c * src/procmime.c * src/procmime.h * src/procmsg.c * src/summaryview.c * src/textview.c * src/common/base64.c * src/common/partial_download.c * src/common/socket.c * src/common/sylpheed.c * src/common/utils.c * src/common/utils.h * src/gtk/pluginwindow.c * src/gtk/quicksearch.c * src/plugins/clamav/clamav_plugin.c * src/plugins/clamav/clamav_plugin.h * src/plugins/clamav/clamav_plugin_gtk.c * src/plugins/pgpmime/passphrase.c * src/plugins/pgpmime/pgpmime.c * src/plugins/pgpmime/plugin.c * src/plugins/pgpmime/prefs_gpg.c * src/plugins/pgpmime/prefs_gpg.h * src/plugins/pgpmime/select-keys.c * src/plugins/pgpmime/sgpgme.c * src/plugins/spamassassin/libspamc.c * src/plugins/spamassassin/spamassassin.c * src/plugins/spamassassin/spamassassin.h * src/plugins/spamassassin/spamassassin_gtk.c * src/plugins/trayicon/trayicon.c * src/plugins/trayicon/libeggtrayicon/gtkplugxembed.c Sync with HEAD --- diff --git a/ChangeLog-gtk2.claws b/ChangeLog-gtk2.claws index ea3009eed..fb40a2de1 100644 --- a/ChangeLog-gtk2.claws +++ b/ChangeLog-gtk2.claws @@ -1,3 +1,57 @@ +2004-10-19 [colin] 0.9.12cvs128.1 + + * src/addrbook.c + * src/addrcache.c + * src/addressbook.c + * src/codeconv.c + * src/compose.c + * src/customheader.c + * src/editaddress.c + * src/editgroup.c + * src/exporthtml.c + * src/folder.c + * src/folderview.c + * src/imap.c + * src/jpilot.c + * src/main.c + * src/matcher_parser_parse.y + * src/mbox.c + * src/pop.c + * src/prefs_account.c + * src/prefs_gtk.c + * src/prefs_msg_colors.c + * src/procheader.c + * src/procmime.c + * src/procmime.h + * src/procmsg.c + * src/summaryview.c + * src/textview.c + * src/common/base64.c + * src/common/partial_download.c + * src/common/socket.c + * src/common/sylpheed.c + * src/common/utils.c + * src/common/utils.h + * src/gtk/pluginwindow.c + * src/gtk/quicksearch.c + * src/plugins/clamav/clamav_plugin.c + * src/plugins/clamav/clamav_plugin.h + * src/plugins/clamav/clamav_plugin_gtk.c + * src/plugins/pgpmime/passphrase.c + * src/plugins/pgpmime/pgpmime.c + * src/plugins/pgpmime/plugin.c + * src/plugins/pgpmime/prefs_gpg.c + * src/plugins/pgpmime/prefs_gpg.h + * src/plugins/pgpmime/select-keys.c + * src/plugins/pgpmime/sgpgme.c + * src/plugins/spamassassin/libspamc.c + * src/plugins/spamassassin/spamassassin.c + * src/plugins/spamassassin/spamassassin.h + * src/plugins/spamassassin/spamassassin_gtk.c + * src/plugins/trayicon/trayicon.c + * src/plugins/trayicon/libeggtrayicon/gtkplugxembed.c + Sync with HEAD + 2004-10-14 [colin] 0.9.12cvs126.2 * src/codeconv.c diff --git a/PATCHSETS b/PATCHSETS index f92076a45..da7ce51b6 100644 --- a/PATCHSETS +++ b/PATCHSETS @@ -200,3 +200,4 @@ ( cvs diff -u -r 1.53.2.6 -r 1.53.2.7 po/POTFILES.in; ) > 0.9.12cvs125.1.patchset ( cvs diff -u -r 1.382.2.50 -r 1.382.2.51 src/compose.c; ) > 0.9.12cvs126.1.patchset ( cvs diff -u -r 1.65.2.13 -r 1.65.2.15 src/codeconv.c; cvs diff -u -r 1.96.2.21 -r 1.96.2.22 src/textview.c; ) > 0.9.12cvs126.2.patchset +( cvs diff -u -r 1.22.2.1 -r 1.22.2.2 src/addrbook.c; cvs diff -u -r 1.15.2.1 -r 1.15.2.2 src/addrcache.c; cvs diff -u -r 1.60.2.11 -r 1.60.2.12 src/addressbook.c; cvs diff -u -r 1.65.2.15 -r 1.65.2.16 src/codeconv.c; cvs diff -u -r 1.382.2.51 -r 1.382.2.52 src/compose.c; cvs diff -u -r 1.5.2.2 -r 1.5.2.3 src/customheader.c; cvs diff -u -r 1.14.2.2 -r 1.14.2.3 src/editaddress.c; cvs diff -u -r 1.11.2.2 -r 1.11.2.3 src/editgroup.c; cvs diff -u -r 1.5 -r 1.6 src/exporthtml.c; cvs diff -u -r 1.213.2.17 -r 1.213.2.18 src/folder.c; cvs diff -u -r 1.207.2.18 -r 1.207.2.19 src/folderview.c; cvs diff -u -r 1.179.2.8 -r 1.179.2.9 src/imap.c; cvs diff -u -r 1.18.2.2 -r 1.18.2.3 src/jpilot.c; cvs diff -u -r 1.115.2.20 -r 1.115.2.21 src/main.c; cvs diff -u -r 1.25.2.4 -r 1.25.2.5 src/matcher_parser_parse.y; cvs diff -u -r 1.28.2.1 -r 1.28.2.2 src/mbox.c; cvs diff -u -r 1.56.2.25 -r 1.56.2.26 src/pop.c; cvs diff -u -r 1.105.2.9 -r 1.105.2.10 src/prefs_account.c; cvs diff -u -r 1.10.2.6 -r 1.10.2.7 src/prefs_gtk.c; cvs diff -u -r 1.1.2.4 -r 1.1.2.5 src/prefs_msg_colors.c; cvs diff -u -r 1.47.2.9 -r 1.47.2.10 src/procheader.c; cvs diff -u -r 1.49.2.10 -r 1.49.2.11 src/procmime.c; cvs diff -u -r 1.17.2.5 -r 1.17.2.6 src/procmime.h; cvs diff -u -r 1.150.2.10 -r 1.150.2.11 src/procmsg.c; cvs diff -u -r 1.395.2.35 -r 1.395.2.36 src/summaryview.c; cvs diff -u -r 1.96.2.22 -r 1.96.2.23 src/textview.c; cvs diff -u -r 1.1.4.1 -r 1.1.4.2 src/common/base64.c; cvs diff -u -r 1.1.2.4 -r 1.1.2.5 src/common/partial_download.c; cvs diff -u -r 1.13.2.9 -r 1.13.2.10 src/common/socket.c; cvs diff -u -r 1.7.2.2 -r 1.7.2.3 src/common/sylpheed.c; cvs diff -u -r 1.36.2.8 -r 1.36.2.9 src/common/utils.c; cvs diff -u -r 1.20.2.7 -r 1.20.2.8 src/common/utils.h; cvs diff -u -r 1.5.2.5 -r 1.5.2.6 src/gtk/pluginwindow.c; cvs diff -u -r 1.1.2.11 -r 1.1.2.12 src/gtk/quicksearch.c; cvs diff -u -r 1.13.2.3 -r 1.13.2.4 src/plugins/clamav/clamav_plugin.c; cvs diff -u -r 1.3 -r 1.4 src/plugins/clamav/clamav_plugin.h; cvs diff -u -r 1.9.2.4 -r 1.9.2.5 src/plugins/clamav/clamav_plugin_gtk.c; cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/plugins/pgpmime/passphrase.c; cvs diff -u -r 1.1.2.5 -r 1.1.2.6 src/plugins/pgpmime/pgpmime.c; cvs diff -u -r 1.1.2.4 -r 1.1.2.5 src/plugins/pgpmime/plugin.c; cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/plugins/pgpmime/prefs_gpg.c; cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/plugins/pgpmime/prefs_gpg.h; cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/plugins/pgpmime/select-keys.c; cvs diff -u -r 1.1.2.3 -r 1.1.2.4 src/plugins/pgpmime/sgpgme.c; cvs diff -u -r 1.4.2.2 -r 1.4.2.3 src/plugins/spamassassin/libspamc.c; cvs diff -u -r 1.18.2.3 -r 1.18.2.4 src/plugins/spamassassin/spamassassin.c; cvs diff -u -r 1.4.2.1 -r 1.4.2.2 src/plugins/spamassassin/spamassassin.h; cvs diff -u -r 1.23.2.5 -r 1.23.2.6 src/plugins/spamassassin/spamassassin_gtk.c; cvs diff -u -r 1.14.2.11 -r 1.14.2.12 src/plugins/trayicon/trayicon.c; cvs diff -u -r 1.1.4.1 -r 1.1.4.2 src/plugins/trayicon/libeggtrayicon/gtkplugxembed.c; ) > 0.9.12cvs128.1.patchset diff --git a/configure.ac b/configure.ac index 275327b99..28e5b5b53 100644 --- a/configure.ac +++ b/configure.ac @@ -11,9 +11,9 @@ MINOR_VERSION=9 MICRO_VERSION=12 INTERFACE_AGE=0 BINARY_AGE=0 -EXTRA_VERSION=126 +EXTRA_VERSION=128 EXTRA_RELEASE= -EXTRA_GTK2_VERSION=.2 +EXTRA_GTK2_VERSION=.1 if test \( $EXTRA_VERSION -eq 0 \) -o \( "x$EXTRA_RELEASE" != "x" \); then VERSION=${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION}${EXTRA_RELEASE}${EXTRA_GTK2_VERSION} diff --git a/src/addrbook.c b/src/addrbook.c index b7ced22f7..7235b4935 100644 --- a/src/addrbook.c +++ b/src/addrbook.c @@ -1935,7 +1935,7 @@ GList *addrbook_get_bookfile_list(AddressBookFile *book) { strcpy(buf, adbookdir); strcat(buf, entry->d_name); stat(buf, &statbuf); - if (S_IFREG & statbuf.st_mode) { + if (S_ISREG(statbuf.st_mode)) { if (strncmp( entry->d_name, ADDRBOOK_PREFIX, lenpre) == 0) diff --git a/src/addrcache.c b/src/addrcache.c index 1943ae3e2..9efede681 100644 --- a/src/addrcache.c +++ b/src/addrcache.c @@ -270,7 +270,7 @@ gboolean addrcache_check_file( AddressCache *cache, gchar *path ) { struct stat filestat; retVal = TRUE; if( path ) { - if( 0 == lstat( path, &filestat ) ) { + if( 0 == stat( path, &filestat ) ) { if( filestat.st_mtime == cache->modifyTime ) retVal = FALSE; } } @@ -285,7 +285,7 @@ gboolean addrcache_mark_file( AddressCache *cache, gchar *path ) { gboolean retVal = FALSE; struct stat filestat; if( path ) { - if( 0 == lstat( path, &filestat ) ) { + if( 0 == stat( path, &filestat ) ) { cache->modifyTime = filestat.st_mtime; retVal = TRUE; } diff --git a/src/addressbook.c b/src/addressbook.c index c13a0abff..aa163d38e 100644 --- a/src/addressbook.c +++ b/src/addressbook.c @@ -279,8 +279,6 @@ static void addressbook_treenode_remove_item ( void ); static AddressDataSource *addressbook_find_datasource (GtkCTreeNode *node ); -static AddressDataSource *addressbook_find_datasource_for_object - ( AddrItemObject *ao ); static AddressBookFile *addressbook_get_book_file(void); @@ -3486,7 +3484,7 @@ static gint addressbook_treenode_compare_func( if( cell2 ) name2 = cell2->u.text; if( ! name1 ) return ( name2 != NULL ); if( ! name2 ) return -1; - return strcasecmp( name1, name2 ); + return g_strcasecmp( name1, name2 ); } /* @@ -3507,7 +3505,7 @@ static gint addressbook_list_compare_func( /* Order by name */ if( ! name1 ) return ( name2 != NULL ); if( ! name2 ) return -1; - return strcasecmp( name1, name2 ); + return g_strcasecmp( name1, name2 ); } else { /* Order groups before person */ @@ -4660,18 +4658,6 @@ static void addressbook_drag_leave_cb(GtkWidget *widget, } } -static AddressBookFile *get_rawDataSource(ItemFolder *item) -{ - AdapterDSource *ads = NULL; - AddressDataSource *ds = NULL; - ads = ADAPTER_DSOURCE(item); - if (ads == NULL ) return NULL; - ds = ads->dataSource; - if (ds == NULL ) return NULL; - - return ds->rawDataSource; -} - static void addressbook_drag_received_cb(GtkWidget *widget, GdkDragContext *drag_context, gint x, @@ -4692,9 +4678,6 @@ static void addressbook_drag_received_cb(GtkWidget *widget, AddressObject *obj = NULL; AdapterDSource *ads = NULL; AddressDataSource *ds = NULL; - AddrBookBase *adbase = NULL; - AddressCache *cache = NULL; - if (gtk_clist_get_selection_info (GTK_CLIST(widget), x - 24, y - 24, &row, &column) == 0) { diff --git a/src/codeconv.c b/src/codeconv.c index c634b0dbf..a8580c895 100644 --- a/src/codeconv.c +++ b/src/codeconv.c @@ -242,7 +242,7 @@ void conv_euctojis(gchar *outbuf, gint outlen, const gchar *inbuf) JISState state = JIS_ASCII; while (*in != '\0') { - if (isascii(*in)) { + if (IS_ASCII(*in)) { K_OUT(); *out++ = *in++; } else if (iseuckanji(*in)) { @@ -254,7 +254,7 @@ void conv_euctojis(gchar *outbuf, gint outlen, const gchar *inbuf) K_OUT(); *out++ = SUBST_CHAR; in++; - if (*in != '\0' && !isascii(*in)) { + if (*in != '\0' && !IS_ASCII(*in)) { *out++ = SUBST_CHAR; in++; } @@ -290,7 +290,7 @@ void conv_euctojis(gchar *outbuf, gint outlen, const gchar *inbuf) } else { K_OUT(); in++; - if (*in != '\0' && !isascii(*in)) { + if (*in != '\0' && !IS_ASCII(*in)) { *out++ = SUBST_CHAR; in++; } @@ -303,10 +303,10 @@ void conv_euctojis(gchar *outbuf, gint outlen, const gchar *inbuf) *out++ = *in++ & 0x7f; } else { K_OUT(); - if (*in != '\0' && !isascii(*in)) { + if (*in != '\0' && !IS_ASCII(*in)) { *out++ = SUBST_CHAR; in++; - if (*in != '\0' && !isascii(*in)) { + if (*in != '\0' && !IS_ASCII(*in)) { *out++ = SUBST_CHAR; in++; } @@ -329,7 +329,7 @@ void conv_sjistoeuc(gchar *outbuf, gint outlen, const gchar *inbuf) guchar *out = outbuf; while (*in != '\0') { - if (isascii(*in)) { + if (IS_ASCII(*in)) { *out++ = *in++; } else if (issjiskanji1(*in)) { if (issjiskanji2(*(in + 1))) { @@ -352,7 +352,7 @@ void conv_sjistoeuc(gchar *outbuf, gint outlen, const gchar *inbuf) } else { *out++ = SUBST_CHAR; in++; - if (*in != '\0' && !isascii(*in)) { + if (*in != '\0' && !IS_ASCII(*in)) { *out++ = SUBST_CHAR; in++; } @@ -509,7 +509,7 @@ void conv_unreadable_eucjp(gchar *str) register guchar *p = str; while (*p != '\0') { - if (isascii(*p)) { + if (IS_ASCII(*p)) { /* convert CR+LF -> LF */ if (*p == '\r' && *(p + 1) == '\n') memmove(p, p + 1, strlen(p)); @@ -523,7 +523,7 @@ void conv_unreadable_eucjp(gchar *str) /* substitute unprintable code */ *p++ = SUBST_CHAR; if (*p != '\0') { - if (isascii(*p)) + if (IS_ASCII(*p)) p++; else *p++ = SUBST_CHAR; @@ -555,7 +555,7 @@ void conv_unreadable_8bit(gchar *str) /* convert CR+LF -> LF */ if (*p == '\r' && *(p + 1) == '\n') memmove(p, p + 1, strlen(p)); - else if (!isascii(*p)) *p = SUBST_CHAR; + else if (!IS_ASCII(*p)) *p = SUBST_CHAR; p++; } } @@ -697,7 +697,7 @@ CharSet conv_guess_ja_encoding(const gchar *str) if (guessed == C_US_ASCII) return C_ISO_2022_JP; p += 2; - } else if (isascii(*p)) { + } else if (IS_ASCII(*p)) { p++; } else if (iseuckanji(*p) && iseuckanji(*(p + 1))) { if (*p >= 0xfd && *p <= 0xfe) @@ -937,11 +937,11 @@ gchar *conv_iconv_strdup(const gchar *inbuf, dest_code = (char *)idest_code; /* don't convert if current codeset is US-ASCII */ - if (!strcasecmp(dest_code, CS_US_ASCII)) + if (!g_strcasecmp(dest_code, CS_US_ASCII)) return g_strdup(inbuf); /* don't convert if src and dest codeset are identical */ - if (!strcasecmp(src_code, dest_code)) + if (!g_strcasecmp(src_code, dest_code)) return g_strdup(inbuf); /* FIXME: unchecked inbuf? Can't see at this level. */ @@ -1291,14 +1291,14 @@ CharSet conv_get_current_charset(void) /* "ja_JP.EUC" matches with "ja_JP.eucJP", "ja_JP.EUC" and "ja_JP". "ja_JP" matches with "ja_JP.xxxx" and "ja" */ - if (!strncasecmp(cur_locale, locale_table[i].locale, + if (!g_strncasecmp(cur_locale, locale_table[i].locale, strlen(locale_table[i].locale))) { cur_charset = locale_table[i].charset; return cur_charset; } else if ((p = strchr(locale_table[i].locale, '_')) && !strchr(p + 1, '.')) { if (strlen(cur_locale) == 2 && - !strncasecmp(cur_locale, locale_table[i].locale, 2)) { + !g_strncasecmp(cur_locale, locale_table[i].locale, 2)) { cur_charset = locale_table[i].charset; return cur_charset; } @@ -1343,14 +1343,14 @@ CharSet conv_get_outgoing_charset(void) for (i = 0; i < sizeof(locale_table) / sizeof(locale_table[0]); i++) { const gchar *p; - if (!strncasecmp(cur_locale, locale_table[i].locale, + if (!g_strncasecmp(cur_locale, locale_table[i].locale, strlen(locale_table[i].locale))) { out_charset = locale_table[i].out_charset; break; } else if ((p = strchr(locale_table[i].locale, '_')) && !strchr(p + 1, '.')) { if (strlen(cur_locale) == 2 && - !strncasecmp(cur_locale, locale_table[i].locale, 2)) { + !g_strncasecmp(cur_locale, locale_table[i].locale, 2)) { out_charset = locale_table[i].out_charset; break; } diff --git a/src/common/base64.c b/src/common/base64.c index 484cd286a..fca6e3e2d 100644 --- a/src/common/base64.c +++ b/src/common/base64.c @@ -22,6 +22,7 @@ #include #include "base64.h" +#include "utils.h" static const gchar base64char[64] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; @@ -37,7 +38,7 @@ static const gchar base64val[128] = { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1 }; -#define BASE64VAL(c) (isascii((guchar)c) ? base64val[(gint)(c)] : -1) +#define BASE64VAL(c) (IS_ASCII(c) ? base64val[(gint) (c)] : -1) void base64_encode(gchar *out, const guchar *in, gint inlen) { diff --git a/src/common/partial_download.c b/src/common/partial_download.c index 1599d1a44..65f6e3e8b 100644 --- a/src/common/partial_download.c +++ b/src/common/partial_download.c @@ -204,9 +204,9 @@ static int partial_uidl_mark_mail(MsgInfo *msginfo, int download) g_free(folder_id); } else if (download == POP3_PARTIAL_DLOAD_UNKN) - stat = strdup("1"); + stat = g_strdup("1"); else if (download == POP3_PARTIAL_DLOAD_DELE) - stat = strdup("0"); + stat = g_strdup("0"); fprintf(fpnew, "%s\t%ld\t%s\n", uidl, recv_time, stat); @@ -283,7 +283,7 @@ int partial_unmark(MsgInfo *msginfo) void partial_delete_old(const gchar *file) { - gchar *id = strdup(file); + gchar *id = g_strdup(file); gchar *snum = strrchr(file, ':'); int num = 0; FolderItem *item = NULL; @@ -355,7 +355,7 @@ gchar *partial_get_filename(const gchar *server, const gchar *login, } } if (!strcmp(muidl, uidl)) { - result = strdup(tmp); + result = g_strdup(tmp); break; } } diff --git a/src/common/socket.c b/src/common/socket.c index 2b8773bb8..45e96963b 100644 --- a/src/common/socket.c +++ b/src/common/socket.c @@ -1010,8 +1010,6 @@ static SockInfo *sockinfo_from_fd(const gchar *hostname, sockinfo->port = port; sockinfo->state = CONN_ESTABLISHED; - usleep(100000); - return sockinfo; } diff --git a/src/common/sylpheed.c b/src/common/sylpheed.c index 304e041f7..d4d83df0e 100644 --- a/src/common/sylpheed.c +++ b/src/common/sylpheed.c @@ -107,7 +107,7 @@ gboolean sylpheed_init(int *argc, char ***argv) } } - srandom((gint)time(NULL)); + srand((gint) time(NULL)); #if USE_OPENSSL ssl_init(); diff --git a/src/common/utils.c b/src/common/utils.c index b8151a21c..fa121f9ba 100644 --- a/src/common/utils.c +++ b/src/common/utils.c @@ -42,6 +42,7 @@ #include #include #include +#include #include "intl.h" #include "utils.h" @@ -113,7 +114,7 @@ void hash_free_value_mem(GHashTable *table) gint str_case_equal(gconstpointer v, gconstpointer v2) { - return strcasecmp((const gchar *)v, (const gchar *)v2) == 0; + return g_strcasecmp((const gchar *)v, (const gchar *)v2) == 0; } guint str_case_hash(gconstpointer key) @@ -277,7 +278,7 @@ gchar *strcasestr(const gchar *haystack, const gchar *needle) return NULL; while (haystack_len >= needle_len) { - if (!strncasecmp(haystack, needle, needle_len)) + if (!g_strncasecmp(haystack, needle, needle_len)) return (gchar *)haystack; else { haystack++; @@ -571,7 +572,7 @@ gint subject_compare_for_sort(const gchar *s1, const gchar *s2) trim_subject_for_sort(str1); trim_subject_for_sort(str2); - return strcasecmp(str1, str2); + return g_strcasecmp(str1, str2); } void trim_subject_for_compare(gchar *str) @@ -1738,17 +1739,16 @@ const gchar *get_domain_name(void) static gchar *domain_name = NULL; if (!domain_name) { - gchar buf[128] = ""; struct hostent *hp; + struct utsname uts; - if (gethostname(buf, sizeof(buf)) < 0) { + if (uname(&uts) < 0) { perror("gethostname"); domain_name = "unknown"; } else { - buf[sizeof(buf) - 1] = '\0'; - if ((hp = my_gethostbyname(buf)) == NULL) { + if ((hp = my_gethostbyname(uts.nodename)) == NULL) { perror("gethostbyname"); - domain_name = g_strdup(buf); + domain_name = g_strdup(uts.nodename); } else { domain_name = g_strdup(hp->h_name); } @@ -2547,6 +2547,8 @@ gint copy_file_part(FILE *fp, off_t offset, size_t length, const gchar *dest) unlink(dest); return -1; } + + return 0; } /* convert line endings into CRLF. If the last line doesn't end with @@ -2862,7 +2864,7 @@ gchar *generate_mime_boundary(const gchar *prefix) * doesn't do any harm. */ for (i = 0; i < sizeof(buf_uniq) - 1; i++) - buf_uniq[i] = tbl[(random() ^ pid) % (sizeof(tbl) - 1)]; + buf_uniq[i] = tbl[(rand() ^ pid) % (sizeof(tbl) - 1)]; buf_uniq[i] = '\0'; get_rfc822_date(buf_date, sizeof(buf_date)); @@ -3260,7 +3262,7 @@ time_t remote_tzoffset_sec(const gchar *zone) remoteoffset = 0; } else if (strlen(zone3) == 3) { for (p = ustzstr; *p != '\0'; p += 3) { - if (!strncasecmp(p, zone3, 3)) { + if (!g_strncasecmp(p, zone3, 3)) { iustz = ((gint)(p - ustzstr) / 3 + 1) / 2 - 8; remoteoffset = iustz * 3600; break; @@ -3522,7 +3524,7 @@ gint g_stricase_equal(gconstpointer gptr1, gconstpointer gptr2) const char *str1 = gptr1; const char *str2 = gptr2; - return !strcasecmp(str1, str2); + return !g_strcasecmp(str1, str2); } gint g_int_compare(gconstpointer a, gconstpointer b) @@ -3553,7 +3555,7 @@ gchar *generate_msgid(const gchar *address, gchar *buf, gint len) lt->tm_year + 1900, lt->tm_mon + 1, lt->tm_mday, lt->tm_hour, lt->tm_min, lt->tm_sec, - (guint)random(), addr); + (guint) rand(), addr); g_free(addr); return buf; diff --git a/src/common/utils.h b/src/common/utils.h index 0adb6e5f0..59560aeff 100644 --- a/src/common/utils.h +++ b/src/common/utils.h @@ -144,6 +144,8 @@ perror(func); \ } +#define IS_ASCII(c) (((guchar) c) <= 0177 ? 1 : 0) + #ifdef __cplusplus extern "C" { #endif diff --git a/src/compose.c b/src/compose.c index ea20b4790..4895d5075 100644 --- a/src/compose.c +++ b/src/compose.c @@ -2208,7 +2208,7 @@ static void compose_attach_append(Compose *compose, const gchar *file, if (content_type) { ainfo->content_type = g_strdup(content_type); - if (!strcasecmp(content_type, "message/rfc822")) { + if (!g_strcasecmp(content_type, "message/rfc822")) { MsgInfo *msginfo; MsgFlags flags = {0, 0}; const gchar *name; @@ -2321,7 +2321,7 @@ static void compose_attach_parts(Compose *compose, MsgInfo *msginfo) debug_print("First text part found\n"); } else if (compose->mode == COMPOSE_REEDIT && child->type == MIMETYPE_APPLICATION && - !strcasecmp(child->subtype, "pgp-encrypted")) { + !g_strcasecmp(child->subtype, "pgp-encrypted")) { AlertValue val; val = alertpanel(_("Encrypted message"), _("Cannot re-edit an encrypted message. \n" @@ -3520,7 +3520,7 @@ static gint compose_write_to_file(Compose *compose, FILE *fp, gint action) mimemsg->type = MIMETYPE_MESSAGE; mimemsg->subtype = g_strdup("rfc822"); mimemsg->content = MIMECONTENT_MEM; - mimemsg->data = compose_get_header(compose); + mimemsg->data.mem = compose_get_header(compose); /* Create text part MimeInfo */ /* get all composed text */ @@ -3537,7 +3537,7 @@ static gint compose_write_to_file(Compose *compose, FILE *fp, gint action) const gchar *src_codeset; out_codeset = conv_get_outgoing_charset_str(); - if (!strcasecmp(out_codeset, CS_US_ASCII)) + if (!g_strcasecmp(out_codeset, CS_US_ASCII)) out_codeset = CS_ISO_8859_1; if (prefs_common.encoding_method == CTE_BASE64) @@ -3552,7 +3552,7 @@ static gint compose_write_to_file(Compose *compose, FILE *fp, gint action) src_codeset = CS_UTF_8; /* if current encoding is US-ASCII, set it the same as outgoing one to prevent code conversion failure */ - if (!strcasecmp(src_codeset, CS_US_ASCII)) + if (!g_strcasecmp(src_codeset, CS_US_ASCII)) src_codeset = out_codeset; debug_print("src encoding = %s, out encoding = %s, transfer encoding = %s\n", @@ -3590,7 +3590,7 @@ static gint compose_write_to_file(Compose *compose, FILE *fp, gint action) mimetext = procmime_mimeinfo_new(); mimetext->content = MIMECONTENT_MEM; - mimetext->data = buf; + mimetext->data.mem = buf; mimetext->type = MIMETYPE_TEXT; mimetext->subtype = g_strdup("plain"); g_hash_table_insert(mimetext->typeparameters, g_strdup("charset"), @@ -3934,7 +3934,7 @@ static void compose_add_attachments(Compose *compose, MimeInfo *parent) row++) { mimepart = procmime_mimeinfo_new(); mimepart->content = MIMECONTENT_FILE; - mimepart->filename = g_strdup(ainfo->file); + mimepart->data.filename = g_strdup(ainfo->file); mimepart->offset = 0; stat(ainfo->file, &statbuf); @@ -4308,7 +4308,7 @@ static void compose_generate_msgid(gchar *buf, gint len) lt->tm_year + 1900, lt->tm_mon + 1, lt->tm_mday, lt->tm_hour, lt->tm_min, lt->tm_sec, - (guint)random(), addr); + (guint) rand(), addr); debug_print("generated Message-ID: %s\n", buf); diff --git a/src/customheader.c b/src/customheader.c index 803d62dea..0337455bd 100644 --- a/src/customheader.c +++ b/src/customheader.c @@ -83,7 +83,7 @@ CustomHeader *custom_header_find(GSList *header_list, const gchar *header) for (cur = header_list; cur != NULL; cur = cur->next) { chdr = (CustomHeader *)cur->data; - if (!strcasecmp(chdr->name, header)) + if (!g_strcasecmp(chdr->name, header)) return chdr; } @@ -103,16 +103,16 @@ gboolean custom_header_is_allowed(const gchar *header) { g_return_val_if_fail(header != NULL, FALSE); - if (strcasecmp(header, "Date") != 0 && - strcasecmp(header, "From") != 0 && - strcasecmp(header, "To") != 0 && - /* strcasecmp(header, "Sender") != 0 && */ - strcasecmp(header, "Message-ID") != 0 && - strcasecmp(header, "In-Reply-To") != 0 && - strcasecmp(header, "References") != 0 && - strcasecmp(header, "Mime-Version") != 0 && - strcasecmp(header, "Content-Type") != 0 && - strcasecmp(header, "Content-Transfer-Encoding") + if (g_strcasecmp(header, "Date") != 0 && + g_strcasecmp(header, "From") != 0 && + g_strcasecmp(header, "To") != 0 && + /* g_strcasecmp(header, "Sender") != 0 && */ + g_strcasecmp(header, "Message-ID") != 0 && + g_strcasecmp(header, "In-Reply-To") != 0 && + g_strcasecmp(header, "References") != 0 && + g_strcasecmp(header, "Mime-Version") != 0 && + g_strcasecmp(header, "Content-Type") != 0 && + g_strcasecmp(header, "Content-Transfer-Encoding") != 0) return TRUE; diff --git a/src/editaddress.c b/src/editaddress.c index c3033deb4..0d18362bd 100644 --- a/src/editaddress.c +++ b/src/editaddress.c @@ -345,7 +345,7 @@ static gint edit_person_attrib_compare_func( if( cell2 ) name2 = cell2->u.text; if( ! name1 ) return ( name2 != NULL ); if( ! name2 ) return -1; - return strcasecmp( name1, name2 ); + return g_strcasecmp( name1, name2 ); } /* diff --git a/src/editgroup.c b/src/editgroup.c index e35a2abf3..8f4f1e1bf 100644 --- a/src/editgroup.c +++ b/src/editgroup.c @@ -226,7 +226,7 @@ static gint edit_group_list_compare_func( GtkCList *clist, gconstpointer ptr1, g if( cell2 ) name2 = cell2->u.text; if( ! name1 ) return ( name2 != NULL ); if( ! name2 ) return -1; - return strcasecmp( name1, name2 ); + return g_strcasecmp( name1, name2 ); } static void addressbook_edit_group_create( gboolean *cancelled ) { diff --git a/src/exporthtml.c b/src/exporthtml.c index c57b02606..a0c28c936 100644 --- a/src/exporthtml.c +++ b/src/exporthtml.c @@ -438,7 +438,7 @@ static gint exporthtml_compare_name( if( item2 ) name2 = ADDRITEM_NAME( item2 ); if( ! name1 ) return ( name2 != NULL ); if( ! name2 ) return -1; - return strcasecmp( name1, name2 ); + return g_strcasecmp( name1, name2 ); } /* @@ -454,7 +454,7 @@ static gint exporthtml_compare_email( if( email2 ) name2 = email2->address; if( ! name1 ) return ( name2 != NULL ); if( ! name2 ) return -1; - return strcasecmp( name1, name2 ); + return g_strcasecmp( name1, name2 ); } /* @@ -470,7 +470,7 @@ static gint exporthtml_compare_attrib( if( attr2 ) name2 = attr2->name; if( ! name1 ) return ( name2 != NULL ); if( ! name2 ) return -1; - return strcasecmp( name1, name2 ); + return g_strcasecmp( name1, name2 ); } /* diff --git a/src/folder.c b/src/folder.c index 8d023be46..8289532b1 100644 --- a/src/folder.c +++ b/src/folder.c @@ -413,17 +413,17 @@ void folder_item_set_xml(Folder *folder, FolderItem *item, XMLTag *tag) if (!attr || !attr->name || !attr->value) continue; if (!strcmp(attr->name, "type")) { - if (!strcasecmp(attr->value, "normal")) + if (!g_strcasecmp(attr->value, "normal")) item->stype = F_NORMAL; - else if (!strcasecmp(attr->value, "inbox")) + else if (!g_strcasecmp(attr->value, "inbox")) item->stype = F_INBOX; - else if (!strcasecmp(attr->value, "outbox")) + else if (!g_strcasecmp(attr->value, "outbox")) item->stype = F_OUTBOX; - else if (!strcasecmp(attr->value, "draft")) + else if (!g_strcasecmp(attr->value, "draft")) item->stype = F_DRAFT; - else if (!strcasecmp(attr->value, "queue")) + else if (!g_strcasecmp(attr->value, "queue")) item->stype = F_QUEUE; - else if (!strcasecmp(attr->value, "trash")) + else if (!g_strcasecmp(attr->value, "trash")) item->stype = F_TRASH; } else if (!strcmp(attr->name, "name")) { if (item->name != NULL) diff --git a/src/folderview.c b/src/folderview.c index effe5f446..b0f8edd77 100644 --- a/src/folderview.c +++ b/src/folderview.c @@ -62,6 +62,7 @@ #include "statusbar.h" #include "hooks.h" #include "folderutils.h" +#include "common/partial_download.h" typedef enum { diff --git a/src/gtk/pluginwindow.c b/src/gtk/pluginwindow.c index 4b098e22b..46f4887de 100644 --- a/src/gtk/pluginwindow.c +++ b/src/gtk/pluginwindow.c @@ -30,6 +30,7 @@ #include "filesel.h" #include "alertpanel.h" +#include "../inc.h" typedef struct _PluginWindow { diff --git a/src/gtk/quicksearch.c b/src/gtk/quicksearch.c index 9f88fc542..e2ac5ef2e 100644 --- a/src/gtk/quicksearch.c +++ b/src/gtk/quicksearch.c @@ -21,6 +21,8 @@ # include "config.h" #endif +#include + #include #include diff --git a/src/imap.c b/src/imap.c index 89e8549c4..01e4e75d1 100644 --- a/src/imap.c +++ b/src/imap.c @@ -1370,16 +1370,16 @@ static gint imap_scan_tree_recursive(IMAPSession *session, FolderItem *item) base = g_basename(new_item->path); - if (!folder->outbox && !strcasecmp(base, "Sent")) { + if (!folder->outbox && !g_strcasecmp(base, "Sent")) { new_item->stype = F_OUTBOX; folder->outbox = new_item; - } else if (!folder->draft && !strcasecmp(base, "Drafts")) { + } else if (!folder->draft && !g_strcasecmp(base, "Drafts")) { new_item->stype = F_DRAFT; folder->draft = new_item; - } else if (!folder->queue && !strcasecmp(base, "Queue")) { + } else if (!folder->queue && !g_strcasecmp(base, "Queue")) { new_item->stype = F_QUEUE; folder->queue = new_item; - } else if (!folder->trash && !strcasecmp(base, "Trash")) { + } else if (!folder->trash && !g_strcasecmp(base, "Trash")) { new_item->stype = F_TRASH; folder->trash = new_item; } @@ -3188,10 +3188,10 @@ static gint imap_cmd_ok(IMAPSession *session, GPtrArray *argbuf) while ((ok = imap_gen_recv(session, &buf)) == IMAP_SUCCESS) { - // make sure data is long enough for any substring of buf + /* make sure data is long enough for any substring of buf */ data = alloca(strlen(buf) + 1); - // untagged line read + /* untagged line read */ if (buf[0] == '*' && buf[1] == ' ') { gint num; if (argbuf) @@ -3208,14 +3208,14 @@ static gint imap_cmd_ok(IMAPSession *session, GPtrArray *argbuf) session->folder_content_changed = TRUE; } } - // tagged line with correct tag and OK response found + /* tagged line with correct tag and OK response found */ } else if ((sscanf(buf, "%d %s", &cmd_num, data) >= 2) && (cmd_num == session->cmd_count) && !strcmp(data, "OK")) { if (argbuf) g_ptr_array_add(argbuf, g_strdup(buf)); break; - // everything else + /* everything else */ } else { ok = IMAP_ERROR; break; @@ -3241,7 +3241,7 @@ static void imap_gen_send(IMAPSession *session, const gchar *format, ...) session->cmd_count++; buf = g_strdup_printf("%d %s\r\n", session->cmd_count, tmp); - if (!strncasecmp(tmp, "LOGIN ", 6) && (p = strchr(tmp + 6, ' '))) { + if (!g_strncasecmp(tmp, "LOGIN ", 6) && (p = strchr(tmp + 6, ' '))) { *p = '\0'; log_print("IMAP4> %d %s ********\n", session->cmd_count, tmp); } else @@ -3490,7 +3490,7 @@ static gchar *imap_utf8_to_modified_utf7(const gchar *from) Xalloca(norm_utf7, norm_utf7_len + 1, return g_strdup(from)); norm_utf7_p = norm_utf7; -#define IS_PRINT(ch) (isprint(ch) && isascii(ch)) +#define IS_PRINT(ch) (isprint(ch) && IS_ASCII(ch)) while (from_len > 0) { if (*from_tmp == '+') { diff --git a/src/jpilot.c b/src/jpilot.c index b639fe3f4..683932d89 100644 --- a/src/jpilot.c +++ b/src/jpilot.c @@ -339,7 +339,7 @@ static gboolean jpilot_mark_files( JPilotFile *pilotFile ) { pilotFile->pc3ModifyTime = 0; pcFile = jpilot_get_pc3_file( pilotFile ); if( pcFile == NULL ) return retVal; - if( 0 == lstat( pcFile, &filestat ) ) { + if( 0 == stat( pcFile, &filestat ) ) { pilotFile->havePC3 = TRUE; pilotFile->pc3ModifyTime = filestat.st_mtime; retVal = TRUE; @@ -368,7 +368,7 @@ static gboolean jpilot_check_files( JPilotFile *pilotFile ) { pcFile = jpilot_get_pc3_file( pilotFile ); if( pcFile == NULL ) return FALSE; - if( 0 == lstat( pcFile, &filestat ) ) { + if( 0 == stat( pcFile, &filestat ) ) { if( filestat.st_mtime == pilotFile->pc3ModifyTime ) retVal = FALSE; } g_free( pcFile ); diff --git a/src/main.c b/src/main.c index 5ba297151..046d98f01 100644 --- a/src/main.c +++ b/src/main.c @@ -23,6 +23,8 @@ #include "defs.h" +#include + #include #include #include diff --git a/src/matcher_parser_parse.y b/src/matcher_parser_parse.y index ed3135572..ff4230543 100644 --- a/src/matcher_parser_parse.y +++ b/src/matcher_parser_parse.y @@ -44,7 +44,6 @@ static MatcherProp *prop; static GSList *matchers_list = NULL; static MatcherList *cond; -static gint score = 0; static GSList *action_list = NULL; static FilteringAction *action = NULL; diff --git a/src/mbox.c b/src/mbox.c index e3acab807..4527a3e52 100644 --- a/src/mbox.c +++ b/src/mbox.c @@ -355,17 +355,14 @@ gint copy_mbox(const gchar *src, const gchar *dest) void empty_mbox(const gchar *mbox) { - if (truncate(mbox, 0) < 0) { - FILE *fp; - - FILE_OP_ERROR(mbox, "truncate"); - if ((fp = fopen(mbox, "wb")) == NULL) { - FILE_OP_ERROR(mbox, "fopen"); - g_warning("can't truncate mailbox to zero.\n"); - return; - } - fclose(fp); + FILE *fp; + + if ((fp = fopen(mbox, "wb")) == NULL) { + FILE_OP_ERROR(mbox, "fopen"); + g_warning("can't truncate mailbox to zero.\n"); + return; } + fclose(fp); } /* read all messages in SRC, and store them into one MBOX file. */ diff --git a/src/plugins/clamav/clamav_plugin.c b/src/plugins/clamav/clamav_plugin.c index 35be5cf22..4116bb126 100644 --- a/src/plugins/clamav/clamav_plugin.c +++ b/src/plugins/clamav/clamav_plugin.c @@ -41,6 +41,7 @@ #include "clamav_plugin.h" static guint hook_id; +static MessageCallback message_callback; static ClamAvConfig config; @@ -113,7 +114,8 @@ static gboolean mail_filtering_hook(gpointer source, gpointer data) if (!mimeinfo) return FALSE; debug_print("Scanning message %d for viruses\n", msginfo->msgnum); - statusbar_print_all(_("ClamAV: scanning message...")); + if (message_callback != NULL) + message_callback(_("ClamAV: scanning message...")); params.is_infected = FALSE; params.root = NULL; @@ -186,6 +188,11 @@ void clamav_save_config(void) prefs_file_close(pfile); } +void clamav_set_message_callback(MessageCallback callback) +{ + message_callback = callback; +} + gint plugin_init(gchar **error) { if ((sylpheed_get_version() > VERSION_NUMERIC)) { diff --git a/src/plugins/clamav/clamav_plugin.h b/src/plugins/clamav/clamav_plugin.h index c2ed7d7dd..61fe2be5d 100644 --- a/src/plugins/clamav/clamav_plugin.h +++ b/src/plugins/clamav/clamav_plugin.h @@ -24,6 +24,8 @@ typedef struct _ClamAvConfig ClamAvConfig; +typedef void (*MessageCallback) (gchar *); + struct _ClamAvConfig { gboolean clamav_enable; @@ -33,7 +35,8 @@ struct _ClamAvConfig gchar *clamav_save_folder; }; -ClamAvConfig *clamav_get_config (void); -void clamav_save_config (void); +ClamAvConfig *clamav_get_config (void); +void clamav_save_config (void); +void clamav_set_message_callback (MessageCallback callback); #endif diff --git a/src/plugins/clamav/clamav_plugin_gtk.c b/src/plugins/clamav/clamav_plugin_gtk.c index 4de53d57e..133f91516 100644 --- a/src/plugins/clamav/clamav_plugin_gtk.c +++ b/src/plugins/clamav/clamav_plugin_gtk.c @@ -36,6 +36,7 @@ #include "prefs_gtk.h" #include "foldersel.h" #include "clamav_plugin.h" +#include "statusbar.h" struct ClamAvPage { @@ -226,6 +227,11 @@ static void clamav_save_func(PrefsPage *_page) static struct ClamAvPage clamav_page; +static void gtk_message_callback(gchar *message) +{ + statusbar_print_all(message); +} + gint plugin_init(gchar **error) { static gchar *path[3]; @@ -251,6 +257,7 @@ gint plugin_init(gchar **error) clamav_page.page.weight = 35.0; prefs_gtk_register_page((PrefsPage *) &clamav_page); + clamav_set_message_callback(gtk_message_callback); debug_print("ClamAV GTK plugin loaded\n"); return 0; @@ -258,6 +265,7 @@ gint plugin_init(gchar **error) void plugin_done(void) { + clamav_set_message_callback(NULL); prefs_gtk_unregister_page((PrefsPage *) &clamav_page); debug_print("ClamAV GTK plugin unloaded\n"); diff --git a/src/plugins/pgpmime/passphrase.c b/src/plugins/pgpmime/passphrase.c index 24fdfa52c..4fdeb2ade 100644 --- a/src/plugins/pgpmime/passphrase.c +++ b/src/plugins/pgpmime/passphrase.c @@ -49,8 +49,6 @@ #include "utils.h" #include "prefs_gpg.h" -extern struct GPGConfig prefs_gpg; - static int grab_all = 0; static gboolean pass_ack; @@ -311,11 +309,11 @@ gpgmegtk_passphrase_cb (void *opaque, const char *desc, void **r_hd) /* FIXME: cleanup by looking at *r_hd */ return NULL; } - if (prefs_gpg.store_passphrase && last_pass != NULL && + if (prefs_gpg_get_config()->store_passphrase && last_pass != NULL && strncmp(desc, "TRY_AGAIN", 9) != 0) return g_strdup(last_pass); - gpgmegtk_set_passphrase_grab (prefs_gpg.passphrase_grab); + gpgmegtk_set_passphrase_grab (prefs_gpg_get_config()->passphrase_grab); debug_print ("%% requesting passphrase for `%s': ", desc); pass = passphrase_mbox (desc); gpgmegtk_free_passphrase(); @@ -324,13 +322,13 @@ gpgmegtk_passphrase_cb (void *opaque, const char *desc, void **r_hd) gpgme_cancel (ctx); } else { - if (prefs_gpg.store_passphrase) { + if (prefs_gpg_get_config()->store_passphrase) { last_pass = g_strdup(pass); if (mlock(last_pass, strlen(last_pass)) == -1) debug_print("%% locking passphrase failed"); - if (prefs_gpg.store_passphrase_timeout > 0) { - gtk_timeout_add(prefs_gpg.store_passphrase_timeout*60*1000, + if (prefs_gpg_get_config()->store_passphrase_timeout > 0) { + gtk_timeout_add(prefs_gpg_get_config()->store_passphrase_timeout*60*1000, free_passphrase, NULL); } } diff --git a/src/plugins/pgpmime/pgpmime.c b/src/plugins/pgpmime/pgpmime.c index 947c5f94f..2e0ee5089 100644 --- a/src/plugins/pgpmime/pgpmime.c +++ b/src/plugins/pgpmime/pgpmime.c @@ -37,8 +37,6 @@ #include "prefs_gpg.h" #include "passphrase.h" -extern struct GPGConfig prefs_gpg; - typedef struct _PrivacyDataPGP PrivacyDataPGP; struct _PrivacyDataPGP @@ -171,7 +169,7 @@ static gint pgpmime_check_signature(MimeInfo *mimeinfo) debug_print("Checking PGP/MIME signature\n"); parent = procmime_mimeinfo_parent(mimeinfo); - fp = fopen(parent->filename, "rb"); + fp = fopen(parent->data.filename, "rb"); g_return_val_if_fail(fp != NULL, SIGNATURE_INVALID); boundary = g_hash_table_lookup(parent->typeparameters, "boundary"); @@ -202,7 +200,7 @@ static SignatureStatus pgpmime_get_sig_status(MimeInfo *mimeinfo) g_return_val_if_fail(data != NULL, SIGNATURE_INVALID); if (data->sigstatus == GPGME_SIG_STAT_NONE && - prefs_gpg.auto_check_signatures) + prefs_gpg_get_config()->auto_check_signatures) pgpmime_check_signature(mimeinfo); return sgpgme_sigstat_gpgme_to_privacy(data->ctx, data->sigstatus); @@ -215,7 +213,7 @@ static gchar *pgpmime_get_sig_info_short(MimeInfo *mimeinfo) g_return_val_if_fail(data != NULL, g_strdup("Error")); if (data->sigstatus == GPGME_SIG_STAT_NONE && - prefs_gpg.auto_check_signatures) + prefs_gpg_get_config()->auto_check_signatures) pgpmime_check_signature(mimeinfo); return sgpgme_sigstat_info_short(data->ctx, data->sigstatus); @@ -228,7 +226,7 @@ static gchar *pgpmime_get_sig_info_full(MimeInfo *mimeinfo) g_return_val_if_fail(data != NULL, g_strdup("Error")); if (data->sigstatus == GPGME_SIG_STAT_NONE && - prefs_gpg.auto_check_signatures) + prefs_gpg_get_config()->auto_check_signatures) pgpmime_check_signature(mimeinfo); return sgpgme_sigstat_info_full(data->ctx, data->sigstatus); @@ -474,8 +472,8 @@ gboolean pgpmime_sign(MimeInfo *mimeinfo) newinfo->type = MIMETYPE_APPLICATION; newinfo->subtype = g_strdup("pgp-signature"); newinfo->content = MIMECONTENT_MEM; - newinfo->data = g_memdup(sigcontent, len + 1); - newinfo->data[len] = '\0'; + newinfo->data.mem = g_memdup(sigcontent, len + 1); + newinfo->data.mem[len] = '\0'; g_node_append(sigmultipart->node, newinfo->node); g_free(sigcontent); @@ -560,15 +558,15 @@ gboolean pgpmime_encrypt(MimeInfo *mimeinfo, const gchar *encrypt_data) newinfo->type = MIMETYPE_APPLICATION; newinfo->subtype = g_strdup("pgp-encrypted"); newinfo->content = MIMECONTENT_MEM; - newinfo->data = g_strdup("Version: 1\n"); + newinfo->data.mem = g_strdup("Version: 1\n"); g_node_append(encmultipart->node, newinfo->node); newinfo = procmime_mimeinfo_new(); newinfo->type = MIMETYPE_APPLICATION; newinfo->subtype = g_strdup("octet-stream"); newinfo->content = MIMECONTENT_MEM; - newinfo->data = g_memdup(enccontent, len + 1); - newinfo->data[len] = '\0'; + newinfo->data.mem = g_memdup(enccontent, len + 1); + newinfo->data.mem[len] = '\0'; g_node_append(encmultipart->node, newinfo->node); g_free(enccontent); diff --git a/src/plugins/pgpmime/plugin.c b/src/plugins/pgpmime/plugin.c index 7e10f985c..6e8402e44 100644 --- a/src/plugins/pgpmime/plugin.c +++ b/src/plugins/pgpmime/plugin.c @@ -26,6 +26,7 @@ #include "intl.h" #include "version.h" +#include "common/sylpheed.h" #include "sgpgme.h" #include "pgpmime.h" #include "prefs_gpg.h" diff --git a/src/plugins/pgpmime/prefs_gpg.c b/src/plugins/pgpmime/prefs_gpg.c index 958e32c0c..351c8038e 100644 --- a/src/plugins/pgpmime/prefs_gpg.c +++ b/src/plugins/pgpmime/prefs_gpg.c @@ -38,115 +38,189 @@ static PrefParam param[] = { {"store_passphrase_timeout", "0", &prefs_gpg.store_passphrase_timeout, P_INT, NULL, NULL, NULL}, -#ifndef __MINGW32__ {"passphrase_grab", "FALSE", &prefs_gpg.passphrase_grab, P_BOOL, NULL, NULL, NULL}, -#endif /* __MINGW32__ */ {"gpg_warning", "TRUE", &prefs_gpg.gpg_warning, P_BOOL, NULL, NULL, NULL}, {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL} }; -static void prefs_privacy_create(void) +struct GPGPage { - GtkWidget *vbox1; - GtkWidget *vbox2; - GtkWidget *vbox3; - GtkWidget *hbox1; - GtkWidget *hbox_spc; - GtkWidget *label; + PrefsPage page; + GtkWidget *checkbtn_auto_check_signatures; + GtkWidget *checkbtn_store_passphrase; + GtkWidget *spinbtn_store_passphrase; + GtkWidget *checkbtn_passphrase_grab; + GtkWidget *checkbtn_gpg_warning; +}; + +static void prefs_gpg_create_widget_func(PrefsPage *_page, + GtkWindow *window, + gpointer data) +{ + struct GPGPage *page = (struct GPGPage *) _page; + struct GPGConfig *config; + + /* + * BEGIN GLADE CODE + * DO NOT EDIT + */ + GtkWidget *table; + GtkWidget *checkbtn_passphrase_grab; GtkWidget *checkbtn_store_passphrase; + GtkWidget *checkbtn_auto_check_signatures; + GtkWidget *checkbtn_gpg_warning; + GtkWidget *label7; + GtkWidget *label6; + GtkWidget *label9; + GtkWidget *label10; + GtkWidget *hbox1; + GtkWidget *label11; GtkObject *spinbtn_store_passphrase_adj; GtkWidget *spinbtn_store_passphrase; - GtkTooltips *store_tooltip; - GtkWidget *checkbtn_passphrase_grab; - GtkWidget *checkbtn_gpg_warning; - - vbox1 = gtk_vbox_new (FALSE, VSPACING); - gtk_widget_show (vbox1); - gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER); - - vbox2 = gtk_vbox_new (FALSE, 0); - gtk_widget_show (vbox2); - gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0); - - PACK_CHECK_BUTTON (vbox2, checkbtn_auto_check_signatures, - _("Automatically check signatures")); - - PACK_CHECK_BUTTON (vbox2, checkbtn_store_passphrase, - _("Store passphrase in memory temporarily")); - - vbox3 = gtk_vbox_new (FALSE, 0); - gtk_widget_show (vbox3); - gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0); - - hbox1 = gtk_hbox_new (FALSE, 8); - gtk_widget_show (hbox1); - gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0); - - hbox_spc = gtk_hbox_new (FALSE, 0); - gtk_widget_show (hbox_spc); - gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0); - gtk_widget_set_size_request (hbox_spc, 12, -1); - - label = gtk_label_new (_("Expire after")); - gtk_widget_show (label); - gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0); - - store_tooltip = gtk_tooltips_new(); - - spinbtn_store_passphrase_adj = gtk_adjustment_new (0, 0, 1440, 1, 5, 5); - spinbtn_store_passphrase = gtk_spin_button_new - (GTK_ADJUSTMENT (spinbtn_store_passphrase_adj), 1, 0); - gtk_widget_show (spinbtn_store_passphrase); - gtk_tooltips_set_tip(GTK_TOOLTIPS(store_tooltip), spinbtn_store_passphrase, - _("Setting to '0' will store the passphrase" - " for the whole session"), + GtkWidget *label12; + GtkTooltips *tooltips; + + tooltips = gtk_tooltips_new(); + + table = gtk_table_new(5, 2, FALSE); + gtk_widget_show(table); + gtk_container_set_border_width(GTK_CONTAINER(table), 8); + gtk_table_set_row_spacings(GTK_TABLE(table), 4); + gtk_table_set_col_spacings(GTK_TABLE(table), 8); + + checkbtn_passphrase_grab = gtk_check_button_new_with_label(""); + gtk_widget_show(checkbtn_passphrase_grab); + gtk_table_attach(GTK_TABLE(table), checkbtn_passphrase_grab, 0, 1, + 3, 4, (GtkAttachOptions) (GTK_SHRINK | GTK_FILL), + (GtkAttachOptions) (GTK_SHRINK), 0, 0); + + checkbtn_store_passphrase = gtk_check_button_new_with_label(""); + gtk_widget_show(checkbtn_store_passphrase); + gtk_table_attach(GTK_TABLE(table), checkbtn_store_passphrase, 0, 1, + 1, 2, (GtkAttachOptions) (GTK_SHRINK | GTK_FILL), + (GtkAttachOptions) (GTK_SHRINK), 0, 0); + + checkbtn_auto_check_signatures = + gtk_check_button_new_with_label(""); + gtk_widget_show(checkbtn_auto_check_signatures); + gtk_table_attach(GTK_TABLE(table), checkbtn_auto_check_signatures, + 0, 1, 0, 1, + (GtkAttachOptions) (GTK_SHRINK | GTK_FILL), + (GtkAttachOptions) (GTK_SHRINK), 0, 0); + + checkbtn_gpg_warning = gtk_check_button_new_with_label(""); + gtk_widget_show(checkbtn_gpg_warning); + gtk_table_attach(GTK_TABLE(table), checkbtn_gpg_warning, 0, 1, 4, + 5, (GtkAttachOptions) (GTK_SHRINK | GTK_FILL), + (GtkAttachOptions) (GTK_SHRINK), 0, 0); + + label7 = gtk_label_new(_("Store passphrase in memory")); + gtk_widget_show(label7); + gtk_table_attach(GTK_TABLE(table), label7, 1, 2, 1, 2, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (GTK_SHRINK), 0, 0); + gtk_misc_set_alignment(GTK_MISC(label7), 0, 0.5); + + label6 = gtk_label_new(_("Automatically check signatures")); + gtk_widget_show(label6); + gtk_table_attach(GTK_TABLE(table), label6, 1, 2, 0, 1, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (GTK_SHRINK), 0, 0); + gtk_misc_set_alignment(GTK_MISC(label6), 0, 0.5); + + label9 = + gtk_label_new(_("Grab input while entering a passphrase")); + gtk_widget_show(label9); + gtk_table_attach(GTK_TABLE(table), label9, 1, 2, 3, 4, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (GTK_SHRINK), 0, 0); + gtk_misc_set_alignment(GTK_MISC(label9), 0, 0.5); + + label10 = + gtk_label_new(_ + ("Display warning on startup if GnuPG doesn't work")); + gtk_widget_show(label10); + gtk_table_attach(GTK_TABLE(table), label10, 1, 2, 4, 5, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (GTK_SHRINK), 0, 0); + gtk_misc_set_alignment(GTK_MISC(label10), 0, 0.5); + + hbox1 = gtk_hbox_new(FALSE, 8); + gtk_widget_show(hbox1); + gtk_table_attach(GTK_TABLE(table), hbox1, 1, 2, 2, 3, + (GtkAttachOptions) (GTK_SHRINK | GTK_FILL), + (GtkAttachOptions) (GTK_SHRINK), 0, 0); + + label11 = gtk_label_new(_("Expire after")); + gtk_widget_show(label11); + gtk_box_pack_start(GTK_BOX(hbox1), label11, FALSE, FALSE, 0); + + spinbtn_store_passphrase_adj = + gtk_adjustment_new(1, 0, 1440, 1, 10, 10); + spinbtn_store_passphrase = + gtk_spin_button_new(GTK_ADJUSTMENT + (spinbtn_store_passphrase_adj), 1, 0); + gtk_widget_show(spinbtn_store_passphrase); + gtk_box_pack_start(GTK_BOX(hbox1), spinbtn_store_passphrase, FALSE, + FALSE, 0); + gtk_widget_set_usize(spinbtn_store_passphrase, 64, -2); + gtk_tooltips_set_tip(tooltips, spinbtn_store_passphrase, + _ + ("Setting to '0' will store the passphrase for the whole session"), NULL); - gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_store_passphrase, FALSE, FALSE, 0); - gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_store_passphrase), - TRUE); - gtk_widget_set_size_request (spinbtn_store_passphrase, 64, -1); - - label = gtk_label_new (_("minute(s) ")); - gtk_widget_show (label); - gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0); - - hbox1 = gtk_hbox_new (FALSE, 8); - gtk_widget_show (hbox1); - gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0); - - hbox_spc = gtk_hbox_new (FALSE, 0); - gtk_widget_show (hbox_spc); - gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0); - gtk_widget_set_size_request (hbox_spc, 12, -1); - - SET_TOGGLE_SENSITIVITY (checkbtn_store_passphrase, vbox3); - -#ifndef __MINGW32__ - PACK_CHECK_BUTTON (vbox2, checkbtn_passphrase_grab, - _("Grab input while entering a passphrase")); -#endif - - PACK_CHECK_BUTTON - (vbox2, checkbtn_gpg_warning, - _("Display warning on startup if GnuPG doesn't work")); + gtk_spin_button_set_numeric(GTK_SPIN_BUTTON + (spinbtn_store_passphrase), TRUE); + + label12 = gtk_label_new(_("minute(s)")); + gtk_widget_show(label12); + gtk_box_pack_start(GTK_BOX(hbox1), label12, TRUE, TRUE, 0); + gtk_misc_set_alignment(GTK_MISC(label12), 0.0, 0.5); + /* + * END GLADE CODE + */ + + config = prefs_gpg_get_config(); + + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_auto_check_signatures), config->auto_check_signatures); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_store_passphrase), config->store_passphrase); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinbtn_store_passphrase), (float) config->store_passphrase_timeout); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_passphrase_grab), config->passphrase_grab); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_gpg_warning), config->gpg_warning); + + page->checkbtn_auto_check_signatures = checkbtn_auto_check_signatures; + page->checkbtn_store_passphrase = checkbtn_store_passphrase; + page->spinbtn_store_passphrase = spinbtn_store_passphrase; + page->checkbtn_passphrase_grab = checkbtn_passphrase_grab; + page->checkbtn_gpg_warning = checkbtn_gpg_warning; + + page->page.widget = table; +} - hbox1 = gtk_hbox_new (FALSE, 8); - gtk_widget_show (hbox1); - gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0); +static void prefs_gpg_destroy_widget_func(PrefsPage *_page) +{ +} -/* - privacy.checkbtn_auto_check_signatures - = checkbtn_auto_check_signatures; - privacy.checkbtn_store_passphrase = checkbtn_store_passphrase; - privacy.spinbtn_store_passphrase = spinbtn_store_passphrase; - privacy.spinbtn_store_passphrase_adj = spinbtn_store_passphrase_adj; - privacy.checkbtn_passphrase_grab = checkbtn_passphrase_grab; - privacy.checkbtn_gpg_warning = checkbtn_gpg_warning; -*/ +static void prefs_gpg_save_func(PrefsPage *_page) +{ + struct GPGPage *page = (struct GPGPage *) _page; + GPGConfig *config = prefs_gpg_get_config(); + + config->auto_check_signatures = + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->checkbtn_auto_check_signatures)); + config->store_passphrase = + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->checkbtn_store_passphrase)); + config->store_passphrase_timeout = + gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(page->spinbtn_store_passphrase)); + config->passphrase_grab = + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->checkbtn_passphrase_grab)); + config->gpg_warning = + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->checkbtn_gpg_warning)); + + prefs_gpg_save_config(); } GPGConfig *prefs_gpg_get_config(void) @@ -159,16 +233,16 @@ void prefs_gpg_save_config(void) PrefFile *pfile; gchar *rcpath; - debug_print("Saving GPGME config\n"); + debug_print("Saving GPG config\n"); rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL); pfile = prefs_write_open(rcpath); g_free(rcpath); - if (!pfile || (prefs_set_block_label(pfile, "GPGME") < 0)) + if (!pfile || (prefs_set_block_label(pfile, "GPG") < 0)) return; if (prefs_write_param(param, pfile->fp) < 0) { - g_warning("failed to write GPGME configuration to file\n"); + g_warning("failed to write GPG configuration to file\n"); prefs_file_close_revert(pfile); return; } @@ -177,12 +251,29 @@ void prefs_gpg_save_config(void) prefs_file_close(pfile); } +static struct GPGPage gpg_page; + void prefs_gpg_init() { + static gchar *path[3]; + prefs_set_default(param); - prefs_read_config(param, "GPGME", COMMON_RC); + prefs_read_config(param, "GPG", COMMON_RC); + + path[0] = _("Privacy"); + path[1] = _("GPG"); + path[2] = NULL; + + gpg_page.page.path = path; + gpg_page.page.create_widget = prefs_gpg_create_widget_func; + gpg_page.page.destroy_widget = prefs_gpg_destroy_widget_func; + gpg_page.page.save_page = prefs_gpg_save_func; + gpg_page.page.weight = 30.0; + + prefs_gtk_register_page((PrefsPage *) &gpg_page); } void prefs_gpg_done() { + prefs_gtk_unregister_page((PrefsPage *) &gpg_page); } diff --git a/src/plugins/pgpmime/prefs_gpg.h b/src/plugins/pgpmime/prefs_gpg.h index 055f22756..2952e4a2e 100644 --- a/src/plugins/pgpmime/prefs_gpg.h +++ b/src/plugins/pgpmime/prefs_gpg.h @@ -22,12 +22,13 @@ typedef struct GPGConfig GPGConfig; struct GPGConfig { gboolean auto_check_signatures; - gboolean gpg_signature_popup; gboolean store_passphrase; gint store_passphrase_timeout; gboolean passphrase_grab; gboolean gpg_warning; }; -void prefs_gpg_init(); -void prefs_gpg_done(); +void prefs_gpg_init(void); +void prefs_gpg_done(void); +void prefs_gpg_save_config(void); +struct GPGConfig *prefs_gpg_get_config(); diff --git a/src/plugins/pgpmime/select-keys.c b/src/plugins/pgpmime/select-keys.c index 0d09c845e..3b72e7c61 100644 --- a/src/plugins/pgpmime/select-keys.c +++ b/src/plugins/pgpmime/select-keys.c @@ -487,7 +487,7 @@ cmp_attr (gconstpointer pa, gconstpointer pb, GpgmeAttr attr) return !!sb; if (!sb) return -1; - return strcasecmp(sa, sb); + return g_strcasecmp(sa, sb); } static gint diff --git a/src/plugins/pgpmime/sgpgme.c b/src/plugins/pgpmime/sgpgme.c index 80827d75b..271a6ad37 100644 --- a/src/plugins/pgpmime/sgpgme.c +++ b/src/plugins/pgpmime/sgpgme.c @@ -37,8 +37,6 @@ #include "prefs_gpg.h" #include "select-keys.h" -extern struct GPGConfig prefs_gpg; - static void idle_function_for_gpgme(void) { while (gtk_events_pending()) @@ -235,7 +233,7 @@ GpgmeData sgpgme_data_from_mimeinfo(MimeInfo *mimeinfo) GpgmeData data; gpgme_data_new_from_filepart(&data, - mimeinfo->filename, + mimeinfo->data.filename, NULL, mimeinfo->offset, mimeinfo->length); @@ -313,7 +311,7 @@ void sgpgme_init() debug_print("gpgme_engine_version:\n%s\n", gpgme_get_engine_info()); - if (prefs_gpg.gpg_warning) { + if (prefs_gpg_get_config()->gpg_warning) { AlertValue val; val = alertpanel_message_with_disable @@ -322,7 +320,7 @@ void sgpgme_init() "to be upgraded.\n" "OpenPGP support disabled."), ALERT_WARNING); if (val & G_ALERTDISABLE) - prefs_gpg.gpg_warning = FALSE; + prefs_gpg_get_config()->gpg_warning = FALSE; } } diff --git a/src/plugins/spamassassin/libspamc.c b/src/plugins/spamassassin/libspamc.c index 4d4798785..a650702ed 100644 --- a/src/plugins/spamassassin/libspamc.c +++ b/src/plugins/spamassassin/libspamc.c @@ -1182,7 +1182,7 @@ int transport_setup(struct transport *tp, int flags) char **addrp; #ifdef _WIN32 - // Start Winsock up + /* Start Winsock up */ WSADATA wsaData; int nCode; if ((nCode = WSAStartup(MAKEWORD(1, 1), &wsaData)) != 0) { @@ -1300,11 +1300,11 @@ libspamc_log (int flags, int level, char *msg, ...) va_start(ap, msg); if ((flags & SPAMC_LOG_TO_STDERR) != 0) { - // create a log-line buffer + /* create a log-line buffer */ len = snprintf(buf, LOG_BUFSIZ, "spamc: "); len += vsnprintf(buf+len, LOG_BUFSIZ-len, msg, ap); - // avoid buffer overflow + /* avoid buffer overflow */ if (len > (LOG_BUFSIZ-2)) { len = (LOG_BUFSIZ-3); } len += snprintf(buf+len, LOG_BUFSIZ-len, "\n"); diff --git a/src/plugins/spamassassin/spamassassin.c b/src/plugins/spamassassin/spamassassin.c index e92234025..a9860d0e4 100644 --- a/src/plugins/spamassassin/spamassassin.c +++ b/src/plugins/spamassassin/spamassassin.c @@ -76,6 +76,7 @@ enum { static guint hook_id; static int flags = SPAMC_RAW_MODE | SPAMC_SAFE_FALLBACK | SPAMC_CHECK_ONLY; static gchar *username = NULL; +static MessageCallback message_callback; static SpamAssassinConfig config; @@ -178,7 +179,8 @@ static gboolean mail_filtering_hook(gpointer source, gpointer data) return FALSE; debug_print("Filtering message %d\n", msginfo->msgnum); - statusbar_print_all(_("SpamAssassin: filtering message...")); + if (message_callback != NULL) + message_callback(_("SpamAssassin: filtering message...")); if ((fp = procmsg_open_message(msginfo)) == NULL) { debug_print("failed to open message file\n"); @@ -269,6 +271,11 @@ void spamassassin_save_config(void) prefs_file_close(pfile); } +void spamassassin_set_message_callback(MessageCallback callback) +{ + message_callback = callback; +} + gint plugin_init(gchar **error) { if ((sylpheed_get_version() > VERSION_NUMERIC)) { diff --git a/src/plugins/spamassassin/spamassassin.h b/src/plugins/spamassassin/spamassassin.h index 3e4ac9744..79d637357 100644 --- a/src/plugins/spamassassin/spamassassin.h +++ b/src/plugins/spamassassin/spamassassin.h @@ -24,6 +24,8 @@ typedef struct _SpamAssassinConfig SpamAssassinConfig; +typedef void (*MessageCallback) (gchar *); + typedef enum { SPAMASSASSIN_DISABLED = 0, SPAMASSASSIN_TRANSPORT_LOCALHOST = 1, @@ -43,7 +45,8 @@ struct _SpamAssassinConfig guint timeout; }; -SpamAssassinConfig *spamassassin_get_config (void); -void spamassassin_save_config (void); +SpamAssassinConfig *spamassassin_get_config (void); +void spamassassin_save_config (void); +void spamassassin_set_message_callback (MessageCallback callback); #endif diff --git a/src/plugins/spamassassin/spamassassin_gtk.c b/src/plugins/spamassassin/spamassassin_gtk.c index 9416003ba..f7aaab6f5 100644 --- a/src/plugins/spamassassin/spamassassin_gtk.c +++ b/src/plugins/spamassassin/spamassassin_gtk.c @@ -36,6 +36,7 @@ #include "prefs_gtk.h" #include "foldersel.h" #include "spamassassin.h" +#include "statusbar.h" #include "menu.h" struct SpamAssassinPage @@ -438,6 +439,11 @@ static void spamassassin_save_func(PrefsPage *_page) spamassassin_save_config(); } +static void gtk_message_callback(gchar *message) +{ + statusbar_print_all(message); +} + static struct SpamAssassinPage spamassassin_page; gint plugin_init(gchar **error) @@ -465,6 +471,7 @@ gint plugin_init(gchar **error) spamassassin_page.page.weight = 35.0; prefs_gtk_register_page((PrefsPage *) &spamassassin_page); + spamassassin_set_message_callback(gtk_message_callback); debug_print("SpamAssassin GTK plugin loaded\n"); return 0; @@ -472,6 +479,7 @@ gint plugin_init(gchar **error) void plugin_done(void) { + spamassassin_set_message_callback(NULL); prefs_gtk_unregister_page((PrefsPage *) &spamassassin_page); debug_print("SpamAssassin GTK plugin unloaded\n"); diff --git a/src/plugins/trayicon/libeggtrayicon/gtkplugxembed.c b/src/plugins/trayicon/libeggtrayicon/gtkplugxembed.c index fae0c2b27..5db6d7843 100644 --- a/src/plugins/trayicon/libeggtrayicon/gtkplugxembed.c +++ b/src/plugins/trayicon/libeggtrayicon/gtkplugxembed.c @@ -926,7 +926,7 @@ handle_modality_on (GtkPlugXEmbed *plug) gtk_grab_add (plug->modality_window); } #else - // g_print("Modality On for plug %p\n", plug); + /* g_print("Modality On for plug %p\n", plug); */ #endif } @@ -940,7 +940,7 @@ handle_modality_off (GtkPlugXEmbed *plug) plug->modality_window = NULL; } #else - // g_print("Modality Off for plug %p\n", plug); + /* g_print("Modality Off for plug %p\n", plug); */ #endif } diff --git a/src/plugins/trayicon/trayicon.c b/src/plugins/trayicon/trayicon.c index c7add0aff..eadeed90d 100644 --- a/src/plugins/trayicon/trayicon.c +++ b/src/plugins/trayicon/trayicon.c @@ -40,6 +40,7 @@ #include "prefs_common.h" #include "main.h" #include "alertpanel.h" +#include "gtk/manage_window.h" #include "eggtrayicon.h" #include "newmail.xpm" diff --git a/src/pop.c b/src/pop.c index f0c3cf903..fa7492b20 100644 --- a/src/pop.c +++ b/src/pop.c @@ -476,7 +476,7 @@ static void pop3_gen_send(Pop3Session *session, const gchar *format, ...) g_vsnprintf(buf, sizeof(buf) - 2, format, args); va_end(args); - if (!strncasecmp(buf, "PASS ", 5)) + if (!g_strncasecmp(buf, "PASS ", 5)) log_print("POP3> PASS ********\n"); else log_print("POP3> %s\n", buf); diff --git a/src/prefs_account.c b/src/prefs_account.c index 146ddcd3f..fa622b703 100644 --- a/src/prefs_account.c +++ b/src/prefs_account.c @@ -1633,20 +1633,9 @@ static void prefs_account_compose_create(void) static void prefs_account_privacy_create(void) { GtkWidget *vbox1; - GtkWidget *frame_mode; - GtkWidget *vbox_mode; - GtkWidget *frame1; GtkWidget *vbox2; - GtkWidget *hbox1; - GtkWidget *label; GtkWidget *default_encrypt_chkbtn; GtkWidget *default_sign_chkbtn; - GtkWidget *gnupg_mime_radiobtn; - GtkWidget *gnupg_inline_radiobtn; - GtkWidget *defaultkey_radiobtn; - GtkWidget *emailkey_radiobtn; - GtkWidget *customkey_radiobtn; - GtkWidget *customkey_entry; vbox1 = gtk_vbox_new (FALSE, VSPACING); gtk_widget_show (vbox1); diff --git a/src/prefs_gtk.c b/src/prefs_gtk.c index 98bc2cbb5..a8eff1690 100644 --- a/src/prefs_gtk.c +++ b/src/prefs_gtk.c @@ -108,7 +108,7 @@ void prefs_config_parse_one_line(PrefParam *param, const gchar *buf) for (i = 0; param[i].name != NULL; i++) { name_len = strlen(param[i].name); - if (strncasecmp(buf, param[i].name, name_len)) + if (g_strncasecmp(buf, param[i].name, name_len)) continue; if (buf[name_len] != '=') continue; @@ -395,7 +395,7 @@ void prefs_set_default(PrefParam *param) break; case P_BOOL: if (param[i].defval != NULL) { - if (!strcasecmp(param[i].defval, "TRUE")) + if (!g_strcasecmp(param[i].defval, "TRUE")) *((gboolean *)param[i].data) = TRUE; else *((gboolean *)param[i].data) = @@ -557,7 +557,7 @@ void prefs_set_dialog_to_default(PrefParam *param) case P_STRING: case P_PASSWORD: if (tmpparam.defval) { - if (!strncasecmp(tmpparam.defval, "ENV_", 4)) { + if (!g_strncasecmp(tmpparam.defval, "ENV_", 4)) { str_data = g_strdup(g_getenv(param[i].defval + 4)); tmpparam.data = &str_data; break; @@ -588,7 +588,7 @@ void prefs_set_dialog_to_default(PrefParam *param) break; case P_BOOL: if (tmpparam.defval) { - if (!strcasecmp(tmpparam.defval, "TRUE")) + if (!g_strcasecmp(tmpparam.defval, "TRUE")) bool_data = TRUE; else bool_data = atoi(tmpparam.defval) diff --git a/src/prefs_msg_colors.c b/src/prefs_msg_colors.c index 1999f58fe..d18a9c0ec 100644 --- a/src/prefs_msg_colors.c +++ b/src/prefs_msg_colors.c @@ -60,9 +60,6 @@ typedef struct _MsgColorsPage static GtkWidget *color_dialog; -static gboolean prefs_quote_colors_key_pressed (GtkWidget *widget, - GdkEventKey *event, - gpointer data); static void quote_color_set_dialog (GtkWidget *widget, gpointer data); static void quote_colors_set_dialog_ok (GtkWidget *widget, @@ -224,14 +221,6 @@ void prefs_msg_colors_create_widget(PrefsPage *_page, GtkWindow *window, prefs_msg_colors->page.widget = table; } -static gboolean prefs_quote_colors_key_pressed(GtkWidget *widget, - GdkEventKey *event, gpointer data) -{ - if (event && event->keyval == GDK_Escape) - gtk_main_quit(); - return FALSE; -} - static void quote_color_set_dialog(GtkWidget *widget, gpointer data) { gchar *type = (gchar *)data; diff --git a/src/procheader.c b/src/procheader.c index 89ee46300..7aaae5e4a 100644 --- a/src/procheader.c +++ b/src/procheader.c @@ -118,7 +118,7 @@ static gint generic_get_one_field(gchar *buf, gint len, void *data, for (hp = hentry, hnum = 0; hp->name != NULL; hp++, hnum++) { - if (!strncasecmp(hp->name, buf, + if (!g_strncasecmp(hp->name, buf, strlen(hp->name))) break; } @@ -681,7 +681,7 @@ static MsgInfo *parse_stream(void *data, gboolean isstring, MsgFlags flags, } break; case H_CONTENT_TYPE: - if (!strncasecmp(hp, "multipart/", 10)) + if (!g_strncasecmp(hp, "multipart/", 10)) MSG_SET_TMP_FLAGS(msginfo->flags, MSG_MULTIPART); break; #ifdef ALLOW_HEADER_HINT @@ -914,7 +914,7 @@ time_t procheader_date_parse(gchar *dest, const gchar *src, gint len) month[3] = '\0'; for (p = monthstr; *p != '\0'; p += 3) { - if (!strncasecmp(p, month, 3)) { + if (!g_strncasecmp(p, month, 3)) { dmonth = (gint)(p - monthstr) / 3 + 1; break; } diff --git a/src/procmime.c b/src/procmime.c index 157094d6e..1fdead7ec 100644 --- a/src/procmime.c +++ b/src/procmime.c @@ -56,7 +56,7 @@ MimeInfo *procmime_mimeinfo_new(void) mimeinfo = g_new0(MimeInfo, 1); mimeinfo->content = MIMECONTENT_EMPTY; - mimeinfo->filename = NULL; + mimeinfo->data.filename = NULL; mimeinfo->type = MIMETYPE_UNKNOWN; mimeinfo->encoding_type = ENC_UNKNOWN; @@ -103,13 +103,13 @@ static gboolean free_func(GNode *node, gpointer data) switch (mimeinfo->content) { case MIMECONTENT_FILE: if (mimeinfo->tmp) - unlink(mimeinfo->filename); - g_free(mimeinfo->filename); + unlink(mimeinfo->data.filename); + g_free(mimeinfo->data.filename); break; case MIMECONTENT_MEM: if (mimeinfo->tmp) - g_free(mimeinfo->data); + g_free(mimeinfo->data.mem); default: break; } @@ -284,7 +284,7 @@ gboolean procmime_decode_content(MimeInfo *mimeinfo) encoding == ENC_BINARY) return TRUE; - infp = fopen(mimeinfo->filename, "rb"); + infp = fopen(mimeinfo->data.filename, "rb"); if (!infp) { perror("fopen"); return FALSE; @@ -349,11 +349,11 @@ gboolean procmime_decode_content(MimeInfo *mimeinfo) fclose(infp); stat(tmpfilename, &statbuf); - if (mimeinfo->tmp && (mimeinfo->filename != NULL)) - unlink(mimeinfo->filename); - if (mimeinfo->filename != NULL) - g_free(mimeinfo->filename); - mimeinfo->filename = tmpfilename; + if (mimeinfo->tmp && (mimeinfo->data.filename != NULL)) + unlink(mimeinfo->data.filename); + if (mimeinfo->data.filename != NULL) + g_free(mimeinfo->data.filename); + mimeinfo->data.filename = tmpfilename; mimeinfo->tmp = TRUE; mimeinfo->offset = 0; mimeinfo->length = statbuf.st_size; @@ -385,8 +385,8 @@ gboolean procmime_encode_content(MimeInfo *mimeinfo, EncodingType encoding) return FALSE; } - if ((infp = fopen(mimeinfo->filename, "rb")) == NULL) { - g_warning("Can't open file %s\n", mimeinfo->filename); + if ((infp = fopen(mimeinfo->data.filename, "rb")) == NULL) { + g_warning("Can't open file %s\n", mimeinfo->data.filename); return FALSE; } @@ -425,10 +425,10 @@ gboolean procmime_encode_content(MimeInfo *mimeinfo, EncodingType encoding) fclose(infp); stat(tmpfilename, &statbuf); - if (mimeinfo->tmp && (mimeinfo->filename != NULL)) - unlink(mimeinfo->filename); - g_free(mimeinfo->filename); - mimeinfo->filename = tmpfilename; + if (mimeinfo->tmp && (mimeinfo->data.filename != NULL)) + unlink(mimeinfo->data.filename); + g_free(mimeinfo->data.filename); + mimeinfo->data.filename = tmpfilename; mimeinfo->tmp = TRUE; mimeinfo->offset = 0; mimeinfo->length = statbuf.st_size; @@ -449,12 +449,12 @@ gint procmime_get_part(const gchar *outfile, MimeInfo *mimeinfo) if (mimeinfo->encoding_type != ENC_BINARY && !procmime_decode_content(mimeinfo)) return -1; - if ((infp = fopen(mimeinfo->filename, "rb")) == NULL) { - FILE_OP_ERROR(mimeinfo->filename, "fopen"); + if ((infp = fopen(mimeinfo->data.filename, "rb")) == NULL) { + FILE_OP_ERROR(mimeinfo->data.filename, "fopen"); return -1; } if (fseek(infp, mimeinfo->offset, SEEK_SET) < 0) { - FILE_OP_ERROR(mimeinfo->filename, "fseek"); + FILE_OP_ERROR(mimeinfo->data.filename, "fseek"); fclose(infp); return -1; } @@ -872,7 +872,7 @@ static gint procmime_str_equal(gconstpointer gptr1, gconstpointer gptr2) const char *str1 = gptr1; const char *str2 = gptr2; - return !strcasecmp(str1, str2); + return !g_strcasecmp(str1, str2); } static GHashTable *procmime_get_mime_type_table(void) @@ -973,14 +973,14 @@ EncodingType procmime_get_encoding_for_charset(const gchar *charset) { if (!charset) return ENC_8BIT; - else if (!strncasecmp(charset, "ISO-2022-", 9) || - !strcasecmp(charset, "US-ASCII")) + else if (!g_strncasecmp(charset, "ISO-2022-", 9) || + !g_strcasecmp(charset, "US-ASCII")) return ENC_7BIT; - else if (!strcasecmp(charset, "ISO-8859-5") || - !strncasecmp(charset, "KOI8-", 5) || - !strcasecmp(charset, "Windows-1251")) + else if (!g_strcasecmp(charset, "ISO-8859-5") || + !g_strncasecmp(charset, "KOI8-", 5) || + !g_strcasecmp(charset, "Windows-1251")) return ENC_8BIT; - else if (!strncasecmp(charset, "ISO-8859-", 9)) + else if (!g_strncasecmp(charset, "ISO-8859-", 9)) return ENC_QUOTED_PRINTABLE; else return ENC_8BIT; @@ -1125,9 +1125,9 @@ void procmime_parse_message_rfc822(MimeInfo *mimeinfo) procmime_decode_content(mimeinfo); - fp = fopen(mimeinfo->filename, "rb"); + fp = fopen(mimeinfo->data.filename, "rb"); if (fp == NULL) { - FILE_OP_ERROR(mimeinfo->filename, "fopen"); + FILE_OP_ERROR(mimeinfo->data.filename, "fopen"); return; } fseek(fp, mimeinfo->offset, SEEK_SET); @@ -1148,7 +1148,7 @@ void procmime_parse_message_rfc822(MimeInfo *mimeinfo) hentry[0].body, hentry[1].body, hentry[2].body, hentry[3].body, hentry[4].body, - mimeinfo->filename, content_start, + mimeinfo->data.filename, content_start, mimeinfo->length - (content_start - mimeinfo->offset)); } else { MimeInfo *subinfo; @@ -1157,7 +1157,7 @@ void procmime_parse_message_rfc822(MimeInfo *mimeinfo) subinfo->encoding_type = ENC_UNKNOWN; subinfo->type = MIMETYPE_TEXT; subinfo->subtype = g_strdup("plain"); - subinfo->filename = g_strdup(mimeinfo->filename); + subinfo->data.filename = g_strdup(mimeinfo->data.filename); subinfo->offset = content_start; subinfo->length = mimeinfo->length - (content_start - mimeinfo->offset); @@ -1194,9 +1194,9 @@ void procmime_parse_multipart(MimeInfo *mimeinfo) procmime_decode_content(mimeinfo); - fp = fopen(mimeinfo->filename, "rb"); + fp = fopen(mimeinfo->data.filename, "rb"); if (fp == NULL) { - FILE_OP_ERROR(mimeinfo->filename, "fopen"); + FILE_OP_ERROR(mimeinfo->data.filename, "fopen"); return; } fseek(fp, mimeinfo->offset, SEEK_SET); @@ -1210,7 +1210,7 @@ void procmime_parse_multipart(MimeInfo *mimeinfo) hentry[0].body, hentry[1].body, hentry[2].body, hentry[3].body, hentry[4].body, - mimeinfo->filename, lastoffset, + mimeinfo->data.filename, lastoffset, (ftell(fp) - strlen(buf)) - lastoffset - 1); } @@ -1377,7 +1377,7 @@ void procmime_parse_mimepart(MimeInfo *parent, mimeinfo->content = MIMECONTENT_FILE; if (parent != NULL) g_node_append(parent->node, mimeinfo->node); - mimeinfo->filename = g_strdup(filename); + mimeinfo->data.filename = g_strdup(filename); mimeinfo->offset = offset; mimeinfo->length = length; @@ -1470,7 +1470,7 @@ MimeInfo *procmime_scan_file_with_offset(const gchar *filename, int offset) mimeinfo->encoding_type = ENC_UNKNOWN; mimeinfo->type = MIMETYPE_MESSAGE; mimeinfo->subtype = g_strdup("rfc822"); - mimeinfo->filename = g_strdup(filename); + mimeinfo->data.filename = g_strdup(filename); mimeinfo->offset = offset; mimeinfo->length = buf.st_size - offset; @@ -1582,8 +1582,8 @@ gint procmime_write_message_rfc822(MimeInfo *mimeinfo, FILE *fp) /* write header */ switch (mimeinfo->content) { case MIMECONTENT_FILE: - if ((infp = fopen(mimeinfo->filename, "rb")) == NULL) { - FILE_OP_ERROR(mimeinfo->filename, "fopen"); + if ((infp = fopen(mimeinfo->data.filename, "rb")) == NULL) { + FILE_OP_ERROR(mimeinfo->data.filename, "fopen"); return -1; } fseek(infp, mimeinfo->offset, SEEK_SET); @@ -1608,7 +1608,7 @@ gint procmime_write_message_rfc822(MimeInfo *mimeinfo, FILE *fp) break; case MIMECONTENT_MEM: - fwrite(mimeinfo->data, strlen(mimeinfo->data), sizeof(gchar), fp); + fwrite(mimeinfo->data.mem, strlen(mimeinfo->data.mem), sizeof(gchar), fp); break; default: @@ -1639,8 +1639,8 @@ gint procmime_write_multipart(MimeInfo *mimeinfo, FILE *fp) switch (mimeinfo->content) { case MIMECONTENT_FILE: - if ((infp = fopen(mimeinfo->filename, "rb")) == NULL) { - FILE_OP_ERROR(mimeinfo->filename, "fopen"); + if ((infp = fopen(mimeinfo->data.filename, "rb")) == NULL) { + FILE_OP_ERROR(mimeinfo->data.filename, "fopen"); return -1; } fseek(infp, mimeinfo->offset, SEEK_SET); @@ -1653,7 +1653,7 @@ gint procmime_write_multipart(MimeInfo *mimeinfo, FILE *fp) break; case MIMECONTENT_MEM: - str = g_strdup(mimeinfo->data); + str = g_strdup(mimeinfo->data.mem); if (((str2 = strstr(str, boundary)) != NULL) && ((str2 - str) >= 2) && (*(str2 - 1) == '-') && (*(str2 - 2) == '-')) *(str2 - 2) = '\0'; @@ -1696,8 +1696,8 @@ gint procmime_write_mimeinfo(MimeInfo *mimeinfo, FILE *fp) if (G_NODE_IS_LEAF(mimeinfo->node)) { switch (mimeinfo->content) { case MIMECONTENT_FILE: - if ((infp = fopen(mimeinfo->filename, "rb")) == NULL) { - FILE_OP_ERROR(mimeinfo->filename, "fopen"); + if ((infp = fopen(mimeinfo->data.filename, "rb")) == NULL) { + FILE_OP_ERROR(mimeinfo->data.filename, "fopen"); return -1; } copy_file_part_to_fp(infp, mimeinfo->offset, mimeinfo->length, fp); @@ -1705,7 +1705,7 @@ gint procmime_write_mimeinfo(MimeInfo *mimeinfo, FILE *fp) return 0; case MIMECONTENT_MEM: - fwrite(mimeinfo->data, strlen(mimeinfo->data), sizeof(gchar), fp); + fwrite(mimeinfo->data.mem, strlen(mimeinfo->data.mem), sizeof(gchar), fp); return 0; default: diff --git a/src/procmime.h b/src/procmime.h index 354391bfb..a22be1c49 100644 --- a/src/procmime.h +++ b/src/procmime.h @@ -105,8 +105,8 @@ struct _MimeInfo union { gchar *filename; - gchar *data; - }; + gchar *mem; + } data; gboolean tmp; GNode *node; diff --git a/src/procmsg.c b/src/procmsg.c index c89b2cf41..9e5d41180 100644 --- a/src/procmsg.c +++ b/src/procmsg.c @@ -721,7 +721,7 @@ gint procmsg_save_to_outbox(FolderItem *outbox, const gchar *file, gchar tmp[MAXPATHLEN + 1]; g_snprintf(tmp, sizeof(tmp), "%s%ctmpmsg.out.%08x", - get_rc_dir(), G_DIR_SEPARATOR, (guint)random()); + get_rc_dir(), G_DIR_SEPARATOR, (guint) rand()); if (procmsg_remove_special_headers(file, tmp) !=0) return -1; diff --git a/src/summaryview.c b/src/summaryview.c index ce4bbdefb..8fc152a14 100644 --- a/src/summaryview.c +++ b/src/summaryview.c @@ -4844,7 +4844,7 @@ static gint func_name(GtkCList *clist, \ if (!msginfo2->var_name) \ return -1; \ \ - return strcasecmp(msginfo1->var_name, msginfo2->var_name); \ + return g_strcasecmp(msginfo1->var_name, msginfo2->var_name); \ } CMP_FUNC_DEF(summary_cmp_by_to, to); @@ -4886,7 +4886,7 @@ static gint summary_cmp_by_from(GtkCList *clist, gconstpointer ptr1, if (!str2) return -1; - return strcasecmp(str1, str2); + return g_strcasecmp(str1, str2); } static gint summary_cmp_by_simplified_subject diff --git a/src/textview.c b/src/textview.c index e23d2a326..8ec158b46 100644 --- a/src/textview.c +++ b/src/textview.c @@ -372,7 +372,7 @@ static void textview_add_part(TextView *textview, MimeInfo *mimeinfo) if ((mimeinfo->type == MIMETYPE_MESSAGE) && !g_strcasecmp(mimeinfo->subtype, "rfc822")) { FILE *fp; - fp = fopen(mimeinfo->filename, "rb"); + fp = fopen(mimeinfo->data.filename, "rb"); fseek(fp, mimeinfo->offset, SEEK_SET); headers = textview_scan_header(textview, fp); if (headers) { @@ -422,7 +422,7 @@ static void recursive_add_parts(TextView *textview, GNode *node) (mimeinfo->type != MIMETYPE_MESSAGE)) return; - if (strcasecmp(mimeinfo->subtype, "alternative") == 0) { + if (g_strcasecmp(mimeinfo->subtype, "alternative") == 0) { GNode * prefered_body; int prefered_score; @@ -445,7 +445,7 @@ static void recursive_add_parts(TextView *textview, GNode *node) score = 2; if (submime->subtype != NULL) { - if (strcasecmp(submime->subtype, "plain") == 0) + if (g_strcasecmp(submime->subtype, "plain") == 0) score = 3; } @@ -570,7 +570,7 @@ static void textview_write_body(TextView *textview, MimeInfo *mimeinfo) } g_free(filename); } else { - tmpfp = fopen(mimeinfo->filename, "rb"); + tmpfp = fopen(mimeinfo->data.filename, "rb"); fseek(tmpfp, mimeinfo->offset, SEEK_SET); debug_print("Viewing text content of type: %s (length: %d)\n", mimeinfo->subtype, mimeinfo->length); while ((fgets(buf, sizeof(buf), tmpfp) != NULL) && @@ -600,7 +600,7 @@ static void textview_show_html(TextView *textview, FILE *fp, * if still inside an , but already parsed past HREF */ str = strtok(str, " "); if (str) { - parser->href = strdup(str); + parser->href = g_strdup(str); /* the URL may (or not) be followed by the * referenced text */ str = strtok(NULL, ""); @@ -647,7 +647,7 @@ static gboolean get_uri_part(const gchar *start, const gchar *scanpos, /* find end point of URI */ for (ep_ = scanpos; *ep_ != '\0'; ep_++) { if (!isgraph(*(const guchar *)ep_) || - !isascii(*(const guchar *)ep_) || + !IS_ASCII(*(const guchar *)ep_) || strchr("()<>\"", *ep_)) break; } @@ -679,14 +679,14 @@ static gchar *make_uri_string(const gchar *bp, const gchar *ep) /* valid mail address characters */ #define IS_RFC822_CHAR(ch) \ - (isascii(ch) && \ + (IS_ASCII(ch) && \ (ch) > 32 && \ (ch) != 127 && \ !isspace(ch) && \ !strchr("(),;<>\"", (ch))) /* alphabet and number within 7bit ASCII */ -#define IS_ASCII_ALNUM(ch) (isascii(ch) && isalnum(ch)) +#define IS_ASCII_ALNUM(ch) (IS_ASCII(ch) && isalnum(ch)) #define IS_QUOTE(ch) ((ch) == '\'' || (ch) == '"') static GHashTable *create_domain_tab(void)