Commit Diff


commit - a5957781e265d33fe9245e8934de25ae028beac4
commit + 1d33746341bbe854140c2f1b05f4d29bba7b7887
blob - d50f7ae803c473a26ddd03c409f96c3322abe5f1
blob + 75046b3248c0bff8475a7d7b792f17b1c4b71dd5
--- ChangeLog
+++ ChangeLog
@@ -1,3 +1,7 @@
+2004-08-09
+
+	* src/main.c: removed parsing of "./gtkrc".
+
 2004-08-04
 
 	* src/socket.c:
blob - 37bd329f0769a14bfdd56aeb01f6ba87e76d4ece
blob + 997dda3d48c9740aa3311e63c5a62d826c58e3f8
--- ChangeLog-gtk2.claws
+++ ChangeLog-gtk2.claws
@@ -1,3 +1,27 @@
+2004-08-09 [paul]	0.9.12cvs54.1
+
+	* ChangeLog
+	* ChangeLog.claws
+	* ChangeLog.jp
+	* configure.ac
+	* po/POTFILES.in
+	* src/Makefile.am
+	* src/folderutils.c
+	* src/main.c
+	* src/pgpmime.c
+	* src/pgpmime.h
+	* src/sgpgme.c
+	* src/sgpgme.h
+	* src/plugins/Makefile.am
+	* src/plugins/pgpmime/.cvsignore
+	* src/plugins/pgpmime/Makefile.am
+	* src/plugins/pgpmime/pgpmime.c
+	* src/plugins/pgpmime/pgpmime.h
+	* src/plugins/pgpmime/plugin.c
+	* src/plugins/pgpmime/sgpgme.c
+	* src/plugins/pgpmime/sgpgme.h
+		sync with HEAD
+
 2004-08-08 [paul]	0.9.12cvs51.1
 
 	* configure.ac
blob - bc87081f58248b5ddd12878d98a198055acf0ca3
blob + d4e0dc4f956d54757c79eb0215eee6b97b640dd1
--- ChangeLog.claws
+++ ChangeLog.claws
@@ -1,3 +1,82 @@
+2004-08-09 [paul]       0.9.12cvs54
+
+	* po/POTFILES.in
+		reflect new location of sgpgme.c
+	* src/main.c
+		sync with main, see ChangeLog 2004-08-09
+
+2004-08-08 [christoph]	0.9.12cvs53
+
+	* src/folderutils.c
+		freeze FolderItem updates while deleting duplicate messages
+
+2004-08-08 [christoph]	0.9.12cvs52
+
+	* configure.ac
+	* src/Makefile.am
+	* src/main.c
+	* src/pgpmime.c
+	* src/pgpmime.h
+	* src/sgpgme.c
+	* src/sgpgme.h
+	* src/plugins/Makefile.am
+	* src/plugins/pgpmime/.cvsignore
+	* src/plugins/pgpmime/Makefile.am
+	* src/plugins/pgpmime/pgpmime.c
+	* src/plugins/pgpmime/pgpmime.h
+	* src/plugins/pgpmime/plugin.c
+	* src/plugins/pgpmime/sgpgme.c
+	* src/plugins/pgpmime/sgpgme.h
+		new plugin for PGP/MIME
+
+2004-08-07 [christoph]	0.9.12cvs51
+
+	* src/folder.c
+		disable immediate folder change notification on opened folders
+		until SummaryView can handle it quickly
+
+2004-08-07 [colin]	0.9.12cvs50
+
+	* src/pop.c
+	* src/common/partial_download.c
+		fix warnings
+
+2004-08-07 [colin]	0.9.12cvs49
+
+	* src/Makefile.am
+	* src/account.c
+	* src/addressbook.c
+	* src/alertpanel.c
+	* src/alertpanel.h
+	* src/compose.c
+	* src/exphtmldlg.c
+	* src/expldifdlg.c
+	* src/main.c
+	* src/message_search.c
+	* src/messageview.c
+	* src/pop.c
+	* src/sgpgme.c
+	* src/summary_search.c
+	* src/summaryview.c
+	* src/textview.c
+	* src/gtk/sslcertwindow.c
+	* src/pixmaps/stock_dialog-error.xpm
+	* src/pixmaps/stock_dialog-info.xpm
+	* src/pixmaps/stock_dialog-question.xpm
+	* src/pixmaps/stock_dialog-warning.xpm
+		sync new alertpanel from gtk2
+
+2004-08-07 [colin]	0.9.12cvs48
+
+	* src/prefs_folder_item.c
+		fix memory corruption in folderitem's prefs
+
+2004-08-06 [colin]	0.9.12cvs47
+
+	* src/compose.c
+		close compose window after queuing, before 
+		sending when user presses Send
+
 2004-08-05 [christoph]	0.9.12cvs46
 
 	* src/msgcache.c
blob - 6f624bbe51f5fc1fe583afbc5bbb9b60b3689b81
blob + d70b88f21992780eac2d8e20c54afb87b36d6959
--- ChangeLog.jp
+++ ChangeLog.jp
@@ -1,3 +1,7 @@
+2004-08-09
+
+	* src/main.c: "./gtkrc" をパースしないようにした。
+
 2004-08-04
 
 	* src/socket.c:
blob - 7e7291aa21027e89d9b3eb2e4d5c0bd7c2a6a5a5
blob + 2ab81cfefaaac5887cd6d146dc5f72497397c40c
--- PATCHSETS
+++ PATCHSETS
@@ -107,3 +107,4 @@
 ( cvs diff -u -r 1.52.2.5 -r 1.52.2.6 src/prefs_folder_item.c; ) > 0.9.12cvs48.1.patchset
 ( cvs diff -u -r 1.56.2.24 -r 1.56.2.25 src/pop.c; cvs diff -u -r 1.1.2.3 -r 1.1.2.4 src/common/partial_download.c; ) > 0.9.12cvs50.1.patchset
 ( cvs diff -u -r 1.654.2.137 -r 1.654.2.138 configure.ac; cvs diff -u -r 1.213.2.12 -r 1.213.2.13 src/folder.c; ) > 0.9.12cvs51.1.patchset
+( cvs diff -u -r 1.396.2.7 -r 1.396.2.8 ChangeLog; cvs diff -u -r 1.2504.2.10 -r 1.2504.2.11 ChangeLog.claws; cvs diff -u -r 1.391.2.7 -r 1.391.2.8 ChangeLog.jp; cvs diff -u -r 1.654.2.138 -r 1.654.2.139 configure.ac; cvs diff -u -r 1.53.2.5 -r 1.53.2.6 po/POTFILES.in; cvs diff -u -r 1.155.2.7 -r 1.155.2.8 src/Makefile.am; cvs diff -u -r 1.3.2.2 -r 1.3.2.3 src/folderutils.c; cvs diff -u -r 1.115.2.12 -r 1.115.2.13 src/main.c; cvs diff -u -r -1.10.2.3 -r -1.10.2.4 src/pgpmime.c; cvs diff -u -r -1.1.4.1 -r -1.1.4.2 src/pgpmime.h; cvs diff -u -r -1.12.2.4 -r -1.12.2.5 src/sgpgme.c; cvs diff -u -r -1.4.2.2 -r -1.4.2.3 src/sgpgme.h; cvs diff -u -r 1.8 -r 1.9 src/plugins/Makefile.am; cvs diff -u -r 0 -r 1 src/plugins/pgpmime/.cvsignore; cvs diff -u -r 0 -r 1 src/plugins/pgpmime/Makefile.am; cvs diff -u -r 0 -r 1 src/plugins/pgpmime/pgpmime.c; cvs diff -u -r 0 -r 1 src/plugins/pgpmime/pgpmime.h; cvs diff -u -r 0 -r 1 src/plugins/pgpmime/plugin.c; cvs diff -u -r 0 -r 1 src/plugins/pgpmime/sgpgme.c; cvs diff -u -r 0 -r 1 src/plugins/pgpmime/sgpgme.h; ) > 0.9.12cvs54.1.patchset
blob - c32b1ded0a073c9786c2a5fe7c622a157db6b3fb
blob + dcc4a28ed6b01c2d3e26afb292e1c070a2a12c3c
--- configure.ac
+++ configure.ac
@@ -11,7 +11,7 @@ MINOR_VERSION=9
 MICRO_VERSION=12
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=51
+EXTRA_VERSION=54
 EXTRA_RELEASE=
 EXTRA_GTK2_VERSION=.1
 
@@ -477,6 +477,15 @@ if test x"$ac_cv_enable_spamassassin_plugin" = xyes; t
 fi
 AM_CONDITIONAL(BUILD_SPAMASSASSIN_PLUGIN, test x"$ac_cv_enable_spamassassin_plugin" = xyes)
 
+dnl --- PGP/MIME ---
+AC_ARG_ENABLE(pgpmime-plugin,
+	[  --disable-pgpmime-plugin           Do not build PGP/MIME plugin],
+	[ac_cv_enable_pgpmime_plugin=$enableval], [ac_cv_enable_pgpmime_plugin=yes])
+if test x"$ac_cv_enable_gpgme" = xyes -a x"$ac_cv_enable_pgpmime_plugin" = xyes; then
+	PLUGINS="pgpmime $PLUGINS"
+fi
+AM_CONDITIONAL(BUILD_PGPMIME_PLUGIN, test x"$ac_cv_enable_pgpmime_plugin" = xyes)
+
 dnl --- MathML Viewer ---
 AC_ARG_ENABLE(mathml-viewer-plugin,
 	[  --disable-mathml-viewer-plugin    Do not build MathML-Viewer plugin],
@@ -580,6 +589,7 @@ src/plugins/image_viewer/Makefile
 src/plugins/trayicon/Makefile
 src/plugins/trayicon/libeggtrayicon/Makefile
 src/plugins/clamav/Makefile
+src/plugins/pgpmime/Makefile
 doc/Makefile
 doc/faq/Makefile
 doc/faq/de/Makefile
blob - 3142de95e747d7dc6a7f753e445a20a4b4057d55
blob + cca1df102fe467c844733fb6e99f72cec723d00a
--- po/POTFILES.in
+++ po/POTFILES.in
@@ -74,6 +74,7 @@ src/plugins/image_viewer/plugin.c
 src/plugins/image_viewer/viewer.c
 src/plugins/image_viewer/viewerprefs.c
 src/plugins/mathml_viewer/mathml_viewer.c
+src/plugins/pgpmime/sgpgme.c
 src/plugins/spamassassin/spamassassin.c
 src/plugins/spamassassin/spamassassin_gtk.c
 src/plugins/trayicon/trayicon.c
@@ -103,7 +104,6 @@ src/quote_fmt.c
 src/select-keys.c
 src/send_message.c
 src/setup.c
-src/sgpgme.c
 src/sourcewindow.c
 src/ssl_manager.c
 src/summary_search.c
blob - bd64f56ea2b12a968b2d573a0f51ffff36fd7e0b
blob + debbcab0059514fb9263095128e2ea3e82e91977
--- src/Makefile.am
+++ src/Makefile.am
@@ -79,7 +79,6 @@ sylpheed_SOURCES = \
 	news_gtk.c \
 	noticeview.c \
 	passphrase.c \
-	pgpmime.c \
 	pine.c \
 	pop.c \
 	prefs_account.c \
@@ -114,7 +113,6 @@ sylpheed_SOURCES = \
 	select-keys.c \
 	send_message.c \
 	setup.c \
-	sgpgme.c \
 	simple-gettext.c \
 	sourcewindow.c \
 	ssl_manager.c \
@@ -210,7 +208,6 @@ sylpheedinclude_HEADERS = \
 	news_gtk.h \
 	noticeview.h \
 	passphrase.h \
-	pgpmime.h \
 	pine.h \
 	pop.h \
 	prefs_account.h \
@@ -245,7 +242,6 @@ sylpheedinclude_HEADERS = \
 	select-keys.h \
 	send_message.h \
 	setup.h \
-	sgpgme.h \
 	sourcewindow.h \
 	ssl_manager.h \
 	statusbar.h \
blob - 039637284a4069d6a9787a4c9567a236fa8b2f0b
blob + 9460c1ffbc227e962ec2f204c31e8299cf8a5d8d
--- src/folderutils.c
+++ src/folderutils.c
@@ -35,6 +35,8 @@ gint folderutils_delete_duplicates(FolderItem *item,
 	
 	debug_print("Deleting duplicated messages...\n");
 
+	folder_item_update_freeze();
+
 	msglist = folder_item_get_msg_list(item);
 	if (msglist == NULL)
 		return 0;
@@ -97,6 +99,8 @@ gint folderutils_delete_duplicates(FolderItem *item,
 	}
 	g_slist_free(msglist);
 
+	folder_item_update_thaw();
+
 	debug_print("done.\n");
 
 	return dups;	
blob - 6fa491a4e34bb95e5c0e48b6338983044f6e60fa
blob + 8d04300c5277409e68bc652768f5afee14bc4cb5
--- src/main.c
+++ src/main.c
@@ -80,10 +80,6 @@
 #include "news_gtk.h"
 #include "matcher.h"
 
-#if USE_GPGME
-#  include "sgpgme.h"
-#  include "pgpmime.h"
-#endif
 #if USE_OPENSSL
 #  include "ssl.h"
 #endif
@@ -233,8 +229,6 @@ int main(int argc, char *argv[])
 	gtk_rc_parse(userrc);
 	g_free(userrc);
 
-	gtk_rc_parse("./gtkrc-2.0");
-
 	userrc = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, MENU_RC, NULL);
 	gtk_accel_map_load (userrc);
 	g_free(userrc);
@@ -258,10 +252,6 @@ int main(int argc, char *argv[])
 	prefs_common_init();
 	prefs_common_read_config();
 
-#if USE_GPGME
-	sgpgme_init();
-	pgpmime_init();
-#endif
 	prefs_themes_init();
 	prefs_fonts_init();
 	prefs_ext_prog_init();
@@ -437,10 +427,6 @@ static void exit_sylpheed(MainWindow *mainwin)
 
 	addressbook_destroy();
 
-#ifdef USE_GPGME
-	pgpmime_done();
-	sgpgme_done();
-#endif
 	prefs_themes_done();
 	prefs_fonts_done();
 	prefs_ext_prog_done();
blob - fe0793daac9f98e41eadc38dc7c0d607632cba5a (mode 644)
blob + /dev/null
--- src/pgpmime.c
+++ /dev/null
@@ -1,319 +0,0 @@
-/*
- * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2003 Hiroyuki Yamamoto & the Sylpheed-Claws team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#  include "config.h"
-#endif
-
-#ifdef USE_GPGME
-
-#include "defs.h"
-#include <glib.h>
-#include <gpgme.h>
-
-#include "utils.h"
-#include "privacy.h"
-#include "procmime.h"
-#include "pgpmime.h"
-#include "sgpgme.h"
-#include "prefs_common.h"
-
-typedef struct _PrivacyDataPGP PrivacyDataPGP;
-
-struct _PrivacyDataPGP
-{
-	PrivacyData	data;
-	
-	gboolean	done_sigtest;
-	gboolean	is_signed;
-	GpgmeSigStat	sigstatus;
-	GpgmeCtx 	ctx;
-};
-
-static PrivacySystem pgpmime_system;
-
-static gint pgpmime_check_signature(MimeInfo *mimeinfo);
-
-static PrivacyDataPGP *pgpmime_new_privacydata()
-{
-	PrivacyDataPGP *data;
-
-	data = g_new0(PrivacyDataPGP, 1);
-	data->data.system = &pgpmime_system;
-	data->done_sigtest = FALSE;
-	data->is_signed = FALSE;
-	data->sigstatus = GPGME_SIG_STAT_NONE;
-	gpgme_new(&data->ctx);
-	
-	return data;
-}
-
-static void pgpmime_free_privacydata(PrivacyData *_data)
-{
-	PrivacyDataPGP *data = (PrivacyDataPGP *) _data;
-	
-	g_free(data);
-}
-
-static gboolean pgpmime_is_signed(MimeInfo *mimeinfo)
-{
-	MimeInfo *parent;
-	MimeInfo *signature;
-	const gchar *protocol;
-	PrivacyDataPGP *data = NULL;
-	
-	g_return_val_if_fail(mimeinfo != NULL, FALSE);
-	if (mimeinfo->privacy != NULL) {
-		data = (PrivacyDataPGP *) mimeinfo->privacy;
-		if (data->done_sigtest)
-			return data->is_signed;
-	}
-	
-	/* check parent */
-	parent = procmime_mimeinfo_parent(mimeinfo);
-	if (parent == NULL)
-		return FALSE;
-	if ((parent->type != MIMETYPE_MULTIPART) ||
-	    g_strcasecmp(parent->subtype, "signed"))
-		return FALSE;
-	protocol = procmime_mimeinfo_get_parameter(parent, "protocol");
-	if ((protocol == NULL) || g_strcasecmp(protocol, "application/pgp-signature"))
-		return FALSE;
-
-	/* check if mimeinfo is the first child */
-	if (parent->node->children->data != mimeinfo)
-		return FALSE;
-
-	/* check signature */
-	signature = parent->node->children->next != NULL ? 
-	    (MimeInfo *) parent->node->children->next->data : NULL;
-	if (signature == NULL)
-		return FALSE;
-	if ((signature->type != MIMETYPE_APPLICATION) ||
-	    g_strcasecmp(signature->subtype, "pgp-signature"))
-		return FALSE;
-
-	if (data == NULL) {
-		data = pgpmime_new_privacydata();
-		mimeinfo->privacy = (PrivacyData *) data;
-	}
-	data->done_sigtest = TRUE;
-	data->is_signed = TRUE;
-
-	if (prefs_common.auto_check_signatures)
-		pgpmime_check_signature(mimeinfo);
-	
-	return TRUE;
-}
-
-static gint pgpmime_check_signature(MimeInfo *mimeinfo)
-{
-	PrivacyDataPGP *data;
-	MimeInfo *parent, *signature;
-	FILE *fp;
-	gchar buf[BUFFSIZE];
-	gchar *boundary;
-	GString *textstr;
-	gint boundary_len;
-	GpgmeData sigdata, textdata;
-	
-	g_return_val_if_fail(mimeinfo != NULL, -1);
-	g_return_val_if_fail(mimeinfo->privacy != NULL, -1);
-	data = (PrivacyDataPGP *) mimeinfo->privacy;
-	
-	debug_print("Checking PGP/MIME signature\n");
-	parent = procmime_mimeinfo_parent(mimeinfo);
-
-	fp = fopen(parent->filename, "rb");
-	g_return_val_if_fail(fp != NULL, SIGNATURE_INVALID);
-	
-	boundary = g_hash_table_lookup(parent->parameters, "boundary");
-	boundary_len = strlen(boundary);
-	while (fgets(buf, sizeof(buf), fp) != NULL)
-		if (IS_BOUNDARY(buf, boundary, boundary_len))
-			break;
-
-	textstr = g_string_new("");
-	while (fgets(buf, sizeof(buf), fp) != NULL) {
-		gchar *buf2;
-
-		if (IS_BOUNDARY(buf, boundary, boundary_len))
-			break;
-		
-		buf2 = canonicalize_str(buf);
-		g_string_append(textstr, buf2);
-		g_free(buf2);
-	}
-	g_string_truncate(textstr, textstr->len - 2);
-		
-	gpgme_data_new_from_mem(&textdata, textstr->str, textstr->len, 0);
-	signature = (MimeInfo *) mimeinfo->node->next->data;
-	sigdata = sgpgme_data_from_mimeinfo(signature);
-
-	data->sigstatus =
-		sgpgme_verify_signature	(data->ctx, sigdata, textdata);
-	
-	gpgme_data_release(sigdata);
-	gpgme_data_release(textdata);
-	g_string_free(textstr, TRUE);
-	fclose(fp);
-	
-	return 0;
-}
-
-static SignatureStatus pgpmime_get_sig_status(MimeInfo *mimeinfo)
-{
-	PrivacyDataPGP *data = (PrivacyDataPGP *) mimeinfo->privacy;
-	
-	g_return_val_if_fail(data != NULL, SIGNATURE_INVALID);
-
-	return sgpgme_sigstat_gpgme_to_privacy(data->ctx, data->sigstatus);
-}
-
-static gchar *pgpmime_get_sig_info_short(MimeInfo *mimeinfo)
-{
-	PrivacyDataPGP *data = (PrivacyDataPGP *) mimeinfo->privacy;
-	
-	g_return_val_if_fail(data != NULL, g_strdup("Error"));
-
-	return sgpgme_sigstat_info_short(data->ctx, data->sigstatus);
-}
-
-static gchar *pgpmime_get_sig_info_full(MimeInfo *mimeinfo)
-{
-	PrivacyDataPGP *data = (PrivacyDataPGP *) mimeinfo->privacy;
-	
-	g_return_val_if_fail(data != NULL, g_strdup("Error"));
-
-	return sgpgme_sigstat_info_full(data->ctx, data->sigstatus);
-}
-
-static gboolean pgpmime_is_encrypted(MimeInfo *mimeinfo)
-{
-	MimeInfo *tmpinfo;
-	const gchar *tmpstr;
-	
-	if (mimeinfo->type != MIMETYPE_MULTIPART)
-		return FALSE;
-	if (g_strcasecmp(mimeinfo->subtype, "encrypted"))
-		return FALSE;
-	tmpstr = procmime_mimeinfo_get_parameter(mimeinfo, "protocol");
-	if ((tmpstr == NULL) || g_strcasecmp(tmpstr, "application/pgp-encrypted"))
-		return FALSE;
-	if (g_node_n_children(mimeinfo->node) != 2)
-		return FALSE;
-	
-	tmpinfo = (MimeInfo *) g_node_nth_child(mimeinfo->node, 0)->data;
-	if (tmpinfo->type != MIMETYPE_APPLICATION)
-		return FALSE;
-	if (g_strcasecmp(tmpinfo->subtype, "pgp-encrypted"))
-		return FALSE;
-	
-	tmpinfo = (MimeInfo *) g_node_nth_child(mimeinfo->node, 1)->data;
-	if (tmpinfo->type != MIMETYPE_APPLICATION)
-		return FALSE;
-	if (g_strcasecmp(tmpinfo->subtype, "octet-stream"))
-		return FALSE;
-	
-	return TRUE;
-}
-
-static MimeInfo *pgpmime_decrypt(MimeInfo *mimeinfo)
-{
-	MimeInfo *encinfo, *decinfo, *parseinfo;
-	GpgmeData cipher, plain;
-	static gint id = 0;
-	FILE *dstfp;
-	gint nread;
-	gchar *fname;
-	gchar buf[BUFFSIZE];
-	
-	g_return_val_if_fail(pgpmime_is_encrypted(mimeinfo), NULL);
-	
-	encinfo = (MimeInfo *) g_node_nth_child(mimeinfo->node, 1)->data;
-
-	cipher = sgpgme_data_from_mimeinfo(encinfo);
-	plain = sgpgme_decrypt(cipher);
-	gpgme_data_release(cipher);
-	if (plain == NULL)
-		return NULL;
-	
-    	fname = g_strdup_printf("%s%cplaintext.%08x",
-		get_mime_tmp_dir(), G_DIR_SEPARATOR, ++id);
-
-    	if ((dstfp = fopen(fname, "wb")) == NULL) {
-        	FILE_OP_ERROR(fname, "fopen");
-        	g_free(fname);
-        	gpgme_data_release(plain);
-		return NULL;
-    	}
-
-	fprintf(dstfp, "MIME-Version: 1.0\n");
-	gpgme_data_rewind (plain);
-	while (gpgme_data_read(plain, buf, sizeof(buf), &nread) == GPGME_No_Error) {
-      		fwrite (buf, nread, 1, dstfp);
-	}
-	fclose(dstfp);
-	
-	gpgme_data_release(plain);
-
-	parseinfo = procmime_scan_file(fname);
-	g_free(fname);
-	if (parseinfo == NULL)
-		return NULL;
-	decinfo = g_node_first_child(parseinfo->node) != NULL ?
-		g_node_first_child(parseinfo->node)->data : NULL;
-	if (decinfo == NULL)
-		return NULL;
-
-	g_node_unlink(decinfo->node);
-	procmime_mimeinfo_free_all(parseinfo);
-
-	decinfo->tmpfile = TRUE;
-	
-	return decinfo;
-}
-
-static PrivacySystem pgpmime_system = {
-	"pgpmime",			/* id */
-	"PGP/Mime",			/* name */
-
-	pgpmime_free_privacydata,	/* free_privacydata */
-
-	pgpmime_is_signed,		/* is_signed(MimeInfo *) */
-	pgpmime_check_signature,	/* check_signature(MimeInfo *) */
-	pgpmime_get_sig_status,		/* get_sig_status(MimeInfo *) */
-	pgpmime_get_sig_info_short,	/* get_sig_info_short(MimeInfo *) */
-	pgpmime_get_sig_info_full,	/* get_sig_info_full(MimeInfo *) */
-
-	pgpmime_is_encrypted,		/* is_encrypted(MimeInfo *) */
-	pgpmime_decrypt,		/* decrypt(MimeInfo *) */
-};
-
-void pgpmime_init()
-{
-	privacy_register_system(&pgpmime_system);
-}
-
-void pgpmime_done()
-{
-	privacy_unregister_system(&pgpmime_system);
-}
-
-#endif /* USE_GPGME */
blob - a6ce4cece56a80c27d3086d7e3c617e0351786bc (mode 644)
blob + /dev/null
--- src/pgpmime.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2003 Hiroyuki Yamamoto & the Sylpheed-Claws team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef PGPMIME_H
-#define PGPMIME_H 1
-
-void pgpmime_init(void);
-void pgpmime_done(void);
-
-#endif /* PGPMIME_H */
blob - 04532ab93f460bb9458a0f08482521063df294aa
blob + c6f213815cd66c7d862f01b2a6cea19e8c7b3b18
--- src/plugins/Makefile.am
+++ src/plugins/Makefile.am
@@ -26,10 +26,15 @@ if BUILD_CLAMAV_PLUGIN
 clamav_dir = clamav
 endif
 
+if BUILD_PGPMIME_PLUGIN
+pgpmime_dir = pgpmime
+endif
+
 SUBDIRS = $(demo_dir) \
 	$(spamassasssin_dir) \
 	$(mathml_viewer_dir) \
 	$(dillo_viewer_dir) \
 	$(image_viewer_dir) \
 	$(trayicon_dir) \
-	$(clamav_dir)
+	$(clamav_dir) \
+	$(pgpmime_dir)
blob - 2453546ab0bf33b710aad1634aa8b159c0c1793e
blob + 29f548175431e378591d6610e884418396fc24b4
--- src/plugins/pgpmime/plugin.c
+++ src/plugins/pgpmime/plugin.c
@@ -65,5 +65,5 @@ const gchar *plugin_desc(void)
 
 const gchar *plugin_type(void)
 {
-	return "GTK";
+	return "GTK2";
 }
blob - 7c9551032266f8c1a2ad26e3026c6df4bb76d223 (mode 644)
blob + /dev/null
--- src/sgpgme.c
+++ /dev/null
@@ -1,305 +0,0 @@
-/*
- * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2003 Hiroyuki Yamamoto & the Sylpheed-Claws team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
- 
-#ifdef HAVE_CONFIG_H
-#  include "config.h"
-#endif
- 
-#ifdef USE_GPGME
-
-#include <time.h>
-#include <gtk/gtk.h>
-#include <gpgme.h>
-
-#include "sgpgme.h"
-#include "privacy.h"
-#include "prefs_common.h"
-#include "utils.h"
-#include "alertpanel.h"
-#include "passphrase.h"
-#include "intl.h"
-
-static void idle_function_for_gpgme(void)
-{
-	while (gtk_events_pending())
-		gtk_main_iteration();
-}
-
-static void sgpgme_disable_all(void)
-{
-    /* FIXME: set a flag, so that we don't bother the user with failed
-     * gpgme messages */
-}
-
-GpgmeSigStat sgpgme_verify_signature(GpgmeCtx ctx, GpgmeData sig, 
-					GpgmeData plain)
-{
-	GpgmeSigStat status;
-
-	if (gpgme_op_verify(ctx, sig, plain, &status) != GPGME_No_Error)
-		return GPGME_SIG_STAT_ERROR;
-
-	return status;
-}
-
-SignatureStatus sgpgme_sigstat_gpgme_to_privacy(GpgmeCtx ctx, GpgmeSigStat status)
-{
-	unsigned long validity = 0;
-	
-	validity = gpgme_get_sig_ulong_attr(ctx, 0,
-		GPGME_ATTR_VALIDITY, 0);
-
-	switch (status) {
-	case GPGME_SIG_STAT_GOOD:
-		if ((validity != GPGME_VALIDITY_MARGINAL) &&
-		    (validity != GPGME_VALIDITY_FULL) &&
-		    (validity != GPGME_VALIDITY_ULTIMATE))
-			return SIGNATURE_WARN;
-		return SIGNATURE_OK;
-	case GPGME_SIG_STAT_GOOD_EXP:
-	case GPGME_SIG_STAT_GOOD_EXPKEY:
-	case GPGME_SIG_STAT_DIFF:
-		return SIGNATURE_WARN;
-	case GPGME_SIG_STAT_BAD:
-		return SIGNATURE_INVALID;
-	case GPGME_SIG_STAT_NOKEY:
-	case GPGME_SIG_STAT_NOSIG:
-	case GPGME_SIG_STAT_ERROR:
-		return SIGNATURE_CHECK_FAILED;
-	case GPGME_SIG_STAT_NONE:
-		return SIGNATURE_UNCHECKED;
-	}
-	return SIGNATURE_CHECK_FAILED;
-}
-
-static const gchar *get_validity_str(unsigned long validity)
-{
-	switch (validity) {
-	case GPGME_VALIDITY_UNKNOWN:
-		return _("Unknown");
-	case GPGME_VALIDITY_UNDEFINED:
-		return _("Undefined");
-	case GPGME_VALIDITY_NEVER:
-		return _("Never");
-	case GPGME_VALIDITY_MARGINAL:
-		return _("Marginal");
-	case GPGME_VALIDITY_FULL:
-		return _("Full");
-	case GPGME_VALIDITY_ULTIMATE:
-		return _("Ultimate");
-	default:
-		return _("Error");
-	}
-}
-
-gchar *sgpgme_sigstat_info_short(GpgmeCtx ctx, GpgmeSigStat status)
-{
-	switch (status) {
-	case GPGME_SIG_STAT_GOOD:
-	{
-		GpgmeKey key;
-		unsigned long validity = 0;
-	
-        	if (gpgme_get_sig_key(ctx, 0, &key) != GPGME_No_Error)
-                	return g_strdup(_("Error"));
-
-		validity = gpgme_get_sig_ulong_attr(ctx, 0,
-			GPGME_ATTR_VALIDITY, 0);
-		
-		return g_strdup_printf(_("Valid signature by %s (Trust: %s)"),
-			gpgme_key_get_string_attr(key, GPGME_ATTR_NAME, NULL, 0),
-			get_validity_str(validity));
-	}
-	case GPGME_SIG_STAT_GOOD_EXP:
-		return g_strdup(_("The signature has expired"));
-	case GPGME_SIG_STAT_GOOD_EXPKEY:
-		return g_strdup(_("The key that was used to sign this part has expired"));
-	case GPGME_SIG_STAT_DIFF:
-		return g_strdup(_("Not all signatures are valid"));
-	case GPGME_SIG_STAT_BAD:
-		return g_strdup(_("This signature is invalid"));
-	case GPGME_SIG_STAT_NOKEY:
-		return g_strdup(_("You have no key to verify this signature"));
-	case GPGME_SIG_STAT_NOSIG:
-		return g_strdup(_("No signature found"));
-	case GPGME_SIG_STAT_ERROR:
-		return g_strdup(_("An error occured"));
-	case GPGME_SIG_STAT_NONE:
-		return g_strdup(_("The signature has not been checked"));
-	}
-	return g_strdup(_("Error"));
-}
-
-gchar *sgpgme_sigstat_info_full(GpgmeCtx ctx, GpgmeSigStat status)
-{
-	gint i = 0;
-	gchar *ret;
-	GString *siginfo;
-	GpgmeKey key;
-	
-	siginfo = g_string_sized_new(64);
-	while (gpgme_get_sig_key(ctx, i, &key) != GPGME_EOF) {
-		time_t sigtime, expiretime;
-		GpgmeSigStat sigstatus;
-		gchar timestr[64];
-		const gchar *keytype, *keyid, *uid;
-		
-		sigtime = gpgme_get_sig_ulong_attr(ctx, i, GPGME_ATTR_CREATED, 0);
-		strftime(timestr, 64, "%c", gmtime(&sigtime));
-		keytype = gpgme_key_get_string_attr(key, GPGME_ATTR_ALGO, NULL, 0);
-		keyid = gpgme_key_get_string_attr(key, GPGME_ATTR_KEYID, NULL, 0);
-		g_string_sprintfa(siginfo,
-			_("Signature made %s using %s key ID %s\n"),
-			timestr, keytype, keyid);
-		
-		sigstatus = gpgme_get_sig_ulong_attr(ctx, i, GPGME_ATTR_SIG_STATUS, 0);	
-		uid = gpgme_key_get_string_attr(key, GPGME_ATTR_USERID, NULL, 0);
-		switch (sigstatus) {
-		case GPGME_SIG_STAT_GOOD:
-		case GPGME_SIG_STAT_GOOD_EXPKEY:
-			g_string_sprintfa(siginfo,
-				_("Good signature from \"%s\"\n"),
-				uid);
-			break;
-		case GPGME_SIG_STAT_GOOD_EXP:
-			g_string_sprintfa(siginfo,
-				_("Expired signature from \"%s\"\n"),
-				uid);
-			break;
-		case GPGME_SIG_STAT_BAD:
-			g_string_sprintfa(siginfo,
-				_("BAD signature from \"%s\"\n"),
-				uid);
-			break;
-		default:
-			break;
-		}
-		if (sigstatus != GPGME_SIG_STAT_BAD) {
-			gint j = 1;
-			
-			while ((uid = gpgme_key_get_string_attr(key, GPGME_ATTR_USERID, NULL, j)) != 0) {
-				g_string_sprintfa(siginfo,
-					_("                aka \"%s\"\n"),
-					uid);
-				j++;
-			}
-			g_string_sprintfa(siginfo,
-				_("Primary key fingerprint: %s\n"), 
-				gpgme_key_get_string_attr(key, GPGME_ATTR_FPR, NULL, 0));
-		}
-
-		
-		expiretime = gpgme_get_sig_ulong_attr(ctx, i, GPGME_ATTR_EXPIRE, 0);
-		if (expiretime > 0) {
-			const gchar *format;
-
-			strftime(timestr, 64, "%c", gmtime(&expiretime));
-			if (time(NULL) < expiretime)
-				format = _("Signature expires %s\n");
-			else
-				format = _("Signature expired %s\n");
-			g_string_sprintfa(siginfo, format, timestr);
-		}
-		
-		g_string_append(siginfo, "\n");
-		i++;
-	}
-
-	ret = siginfo->str;
-	g_string_free(siginfo, FALSE);
-	return ret;
-}
-
-GpgmeData sgpgme_data_from_mimeinfo(MimeInfo *mimeinfo)
-{
-	GpgmeData data;
-	
-	gpgme_data_new_from_filepart(&data,
-		mimeinfo->filename,
-		NULL,
-		mimeinfo->offset,
-		mimeinfo->length);
-	
-	return data;
-}
-
-GpgmeData sgpgme_decrypt(GpgmeData cipher)
-{
-	GpgmeCtx ctx;
-	struct passphrase_cb_info_s info;
-	GpgmeData plain;
-	GpgmeError err;
-
-	memset (&info, 0, sizeof info);
-	
-	if (gpgme_new(&ctx) != GPGME_No_Error)
-		return NULL;
-
-	if (gpgme_data_new(&plain) != GPGME_No_Error) {
-		gpgme_release(ctx);
-		return NULL;
-	}
-	
-    	if (!getenv("GPG_AGENT_INFO")) {
-        	info.c = ctx;
-        	gpgme_set_passphrase_cb (ctx, gpgmegtk_passphrase_cb, &info);
-    	}
-
-	err = gpgme_op_decrypt(ctx, cipher, plain);
-	gpgme_release(ctx);
-
-	if (err != GPGME_No_Error) {
-		gpgmegtk_free_passphrase();
-		gpgme_data_release(plain);
-		return NULL;
-	}
-
-	return plain;
-}
-
-void sgpgme_init()
-{
-	if (gpgme_engine_check_version(GPGME_PROTOCOL_OpenPGP) != 
-			GPGME_No_Error) {  /* Also does some gpgme init */
-		sgpgme_disable_all();
-		debug_print("gpgme_engine_version:\n%s\n",
-			    gpgme_get_engine_info());
-
-		if (prefs_common.gpg_warning) {
-			AlertValue val;
-
-			val = alertpanel_message_with_disable
-				(_("Warning"),
-				 _("GnuPG is not installed properly, or needs "
-				   "to be upgraded.\n"
-				   "OpenPGP support disabled."), ALERT_WARNING);
-			if (val & G_ALERTDISABLE)
-				prefs_common.gpg_warning = FALSE;
-		}
-	}
-
-	gpgme_register_idle(idle_function_for_gpgme);
-}
-
-void sgpgme_done()
-{
-        gpgmegtk_free_passphrase();
-}
-
-#endif /* USE_GPGME */
blob - ddcf1a84e95da1367a077e83d571060b693efc6b (mode 644)
blob + /dev/null
--- src/sgpgme.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2003 Hiroyuki Yamamoto & the Sylpheed-Claws team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef SGPGME_H
-#define SGPGME_H 1
-
-#include <gpgme.h>
-
-#include "privacy.h"
-
-void sgpgme_init(void);
-void sgpgme_done(void);
-
-GpgmeSigStat sgpgme_verify_signature	(GpgmeCtx ctx,
-				    	 GpgmeData sig,
-				    	 GpgmeData plain);
-SignatureStatus sgpgme_sigstat_gpgme_to_privacy
-					(GpgmeCtx ctx,
-					 GpgmeSigStat status);
-gchar *sgpgme_sigstat_info_short	(GpgmeCtx ctx,
-					 GpgmeSigStat status);
-gchar *sgpgme_sigstat_info_full		(GpgmeCtx ctx,
-					 GpgmeSigStat status);
-GpgmeData sgpgme_data_from_mimeinfo	(MimeInfo *mimeinfo);
-GpgmeData sgpgme_decrypt		(GpgmeData cipher);
-
-#endif /* SGPGME_H */