summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn N. Laliberte <allanonjl@gentoo.org>2005-05-24 16:03:36 +0000
committerJohn N. Laliberte <allanonjl@gentoo.org>2005-05-24 16:03:36 +0000
commita045a7077f43c1256d8ec56c6829017b0f5c4cca (patch)
tree6d3bbf998055974ef66100a0358d5518eee8a337 /mail-client/balsa
parentVersion bump; tidy old ebuilds. (diff)
downloadgentoo-2-a045a7077f43c1256d8ec56c6829017b0f5c4cca.tar.gz
gentoo-2-a045a7077f43c1256d8ec56c6829017b0f5c4cca.tar.bz2
gentoo-2-a045a7077f43c1256d8ec56c6829017b0f5c4cca.zip
fixes bug #93511, backport patch from cvs to fix compilation issue with sqlite3.
(Portage version: 2.0.51.19)
Diffstat (limited to 'mail-client/balsa')
-rw-r--r--mail-client/balsa/ChangeLog9
-rw-r--r--mail-client/balsa/Manifest5
-rw-r--r--mail-client/balsa/balsa-2.2.6-r2.ebuild76
-rw-r--r--mail-client/balsa/files/balsa-sqlite3-fix.patch419
-rw-r--r--mail-client/balsa/files/digest-balsa-2.2.6-r21
5 files changed, 508 insertions, 2 deletions
diff --git a/mail-client/balsa/ChangeLog b/mail-client/balsa/ChangeLog
index e7ca139eadb9..1b022468cc31 100644
--- a/mail-client/balsa/ChangeLog
+++ b/mail-client/balsa/ChangeLog
@@ -1,6 +1,13 @@
# ChangeLog for mail-client/balsa
# Copyright 2002-2005 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/mail-client/balsa/ChangeLog,v 1.27 2005/05/23 13:41:35 allanonjl Exp $
+# $Header: /var/cvsroot/gentoo-x86/mail-client/balsa/ChangeLog,v 1.28 2005/05/24 16:03:36 allanonjl Exp $
+
+*balsa-2.2.6-r2 (24 May 2005)
+
+ 24 May 2005; John N. Laliberte <allanonjl@gentoo.org>
+ +files/balsa-sqlite3-fix.patch, +balsa-2.2.6-r2.ebuild:
+ fixes bug #93511, backport patch from cvs to fix compilation issue with
+ sqlite3.
*balsa-2.2.6-r1 (23 May 2005)
diff --git a/mail-client/balsa/Manifest b/mail-client/balsa/Manifest
index b60eca9dac02..abe3e7335011 100644
--- a/mail-client/balsa/Manifest
+++ b/mail-client/balsa/Manifest
@@ -1,9 +1,11 @@
MD5 3d8ea268bc011e284d19acc46e831802 balsa-2.0.15-r2.ebuild 1804
MD5 f9b75f07316fa4c916016a2f92ed0cb2 balsa-2.2.6-r1.ebuild 1768
MD5 3f9307f7f2f95feab10f1647ee53773d balsa-2.2.6.ebuild 1726
+MD5 ab9805b38aed73a50a3e80a8dfce7862 balsa-2.2.6-r2.ebuild 1816
MD5 d4f6dbc31e378077014bb877a6be7feb balsa-1.4.3.ebuild 1700
-MD5 9c88e74861dbf341b739d0751153b7fd ChangeLog 12497
+MD5 85b30f0b3181d4849bd1e604f33606e5 ChangeLog 12728
MD5 f4713bbf77ae895c7ff6c022a7a2f542 metadata.xml 222
+MD5 d585dbb93b819887a6b96323007a5d43 files/balsa-sqlite3-fix.patch 15086
MD5 f723c65b41c5410c4402b0c5aa2fabd9 files/balsa-ssl.patch 502
MD5 6214786af3a3095a1e721302f10228f2 files/gtk+2.4-2.patch 1542
MD5 7640c6a66bb87af1486164581e95296d files/balsa-1.4.0-gentoo.diff 830
@@ -12,4 +14,5 @@ MD5 92455a1d3e62f5727b37d43f60acdf12 files/digest-balsa-1.4.3 65
MD5 6bad789bbe40ec51339b6c85735d88e5 files/digest-balsa-2.2.6 65
MD5 cb6019030e00d143459011755f8f525f files/balsa-2.2.6-deprecation.fix.patch 3352
MD5 6bad789bbe40ec51339b6c85735d88e5 files/digest-balsa-2.2.6-r1 65
+MD5 6bad789bbe40ec51339b6c85735d88e5 files/digest-balsa-2.2.6-r2 65
MD5 aa4090173ee51cb5766ef1b3a6d6f379 files/digest-balsa-2.0.15-r2 66
diff --git a/mail-client/balsa/balsa-2.2.6-r2.ebuild b/mail-client/balsa/balsa-2.2.6-r2.ebuild
new file mode 100644
index 000000000000..e2692184f4cb
--- /dev/null
+++ b/mail-client/balsa/balsa-2.2.6-r2.ebuild
@@ -0,0 +1,76 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/mail-client/balsa/balsa-2.2.6-r2.ebuild,v 1.1 2005/05/24 16:03:36 allanonjl Exp $
+
+inherit gnome2 eutils
+
+IUSE="doc ssl gtkhtml pcre ldap crypt kerberos threads sqlite"
+DESCRIPTION="Email client for GNOME"
+SRC_URI="http://balsa.gnome.org/${P}.tar.bz2"
+HOMEPAGE="http://balsa.gnome.org"
+
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="~alpha ~amd64 ~ppc ~sparc ~x86"
+
+RDEPEND=">=gnome-base/libgnome-2.0
+ >=gnome-base/libgnomeui-2.0
+ >=gnome-base/gnome-vfs-2.0
+ =dev-libs/gmime-2.1.9*
+ >=gnome-base/libbonobo-2.0
+ >=gnome-base/libgnomeprint-2.1.4
+ >=gnome-base/libgnomeprintui-2.1.4
+ >=x11-libs/gtk+-2
+ net-mail/mailbase
+ >=net-libs/libesmtp-1.0-r1
+ sys-devel/libtool
+ virtual/aspell-dict
+ ssl? ( dev-libs/openssl )
+ pcre? ( >=dev-libs/libpcre-3.4 )
+ gtkhtml? (
+ || (
+ =gnome-extra/libgtkhtml-3.2*
+ =gnome-extra/libgtkhtml-3.0*
+ =gnome-extra/libgtkhtml-2*
+ )
+ )
+ ldap? ( net-nds/openldap )
+ kerberos? ( app-crypt/mit-krb5 )
+ sqlite? ( >=dev-db/sqlite-2.8 )
+ crypt? ( >=app-crypt/gpgme-0.9.0 )
+ "
+
+DEPEND="${RDEPEND}
+ dev-util/intltool
+ dev-util/pkgconfig
+ >=app-text/scrollkeeper-0.1.4
+ doc? ( dev-util/gtk-doc )
+ "
+
+USE_DESTDIR="1"
+
+src_unpack(){
+ unpack ${A}
+ cd ${S}
+ epatch ${FILESDIR}/${P}-deprecation.fix.patch
+ epatch ${FILESDIR}/${PN}-ssl.patch
+ epatch ${FILESDIR}/${PN}-sqlite3-fix.patch
+
+ autoconf
+}
+
+use crypt \
+ && G2CONF="${G2CONF} --with-gpgme=gpgme-config" \
+ || G2CONF="${G2CONF} --without-gpgme"
+
+G2CONF="${G2CONF} \
+ $(use_with ssl) \
+ $(use_with ldap) \
+ $(use_with sqlite) \
+ $(use_with kerberos gss) \
+ $(use_enable gtkhtml) \
+ $(use_enable threads) \
+ $(use_enable pcre) \
+ "
+
+DOCS="AUTHORS COPYING ChangeLog HACKING INSTALL NEWS README TODO docs/*"
diff --git a/mail-client/balsa/files/balsa-sqlite3-fix.patch b/mail-client/balsa/files/balsa-sqlite3-fix.patch
new file mode 100644
index 000000000000..c366b3d8f377
--- /dev/null
+++ b/mail-client/balsa/files/balsa-sqlite3-fix.patch
@@ -0,0 +1,419 @@
+--- balsa-2.2.6/libbalsa/address-book-gpe.c 2004-11-07 14:41:58.000000000 -0500
++++ balsa-2.2.6.new/libbalsa/address-book-gpe.c 2005-05-24 10:16:18.000000000 -0400
+@@ -166,7 +166,11 @@
+ libbalsa_address_book_gpe_close_db(LibBalsaAddressBookGpe * ab)
+ {
+ if (ab->db) {
++#ifdef HAVE_SQLITE3
++ sqlite3_close(ab->db);
++#else /* HAVE_SQLITE3 */
+ sqlite_close(ab->db);
++#endif /* HAVE_SQLITE3 */
+ ab->db = NULL;
+ }
+ }
+@@ -174,7 +178,9 @@
+ /*
+ * Opens the SQLite db
+ */
++#ifndef HAVE_SQLITE3
+ #define DB_NAME "/.gpe/contacts"
++#endif /* HAVE_SQLITE3 */
+ static const char *schema_str =
+ "create table contacts (urn INTEGER NOT NULL, tag TEXT NOT NULL, "
+ "value TEXT NOT NULL)";
+@@ -185,6 +191,26 @@
+ static int
+ libbalsa_address_book_gpe_open_db(LibBalsaAddressBookGpe * ab)
+ {
++#ifdef HAVE_SQLITE3
++ gchar *dir, *name;
++ int r;
++
++ dir = g_build_filename(g_get_home_dir(), ".gpe", NULL);
++ mkdir(dir, S_IRUSR|S_IWUSR|S_IXUSR);
++ name = g_build_filename(dir, "contacts", NULL);
++ g_free(dir);
++ r = sqlite3_open(name, &ab->db);
++ g_free(name);
++
++ if (r != SQLITE_OK) {
++ printf("Cannot open: %s\n", sqlite3_errmsg(ab->db));
++ sqlite3_close(ab->db);
++ ab->db = NULL;
++ return 0;
++ }
++ sqlite3_exec(ab->db, schema_str, NULL, NULL, NULL);
++ sqlite3_exec(ab->db, schema2_str, NULL, NULL, NULL);
++#else /* HAVE_SQLITE3 */
+ gchar *name, *errmsg = NULL;
+
+ ASSURE_GPE_DIR;
+@@ -198,6 +224,7 @@
+ }
+ sqlite_exec (ab->db, schema_str, NULL, NULL, NULL);
+ sqlite_exec (ab->db, schema2_str, NULL, NULL, NULL);
++#endif /* HAVE_SQLITE3 */
+
+ return 1;
+ }
+@@ -277,9 +304,17 @@
+ guint uid = atoi(argv[0]);
+
+ /* follow read_entry_data. FIXME: error reporting */
++#ifdef HAVE_SQLITE3
++ gchar *sql =
++ sqlite3_mprintf("select tag,value from contacts where urn=%d",
++ uid);
++ sqlite3_exec(gc->gpe->db, sql, gpe_read_attr, a, NULL);
++ sqlite3_free(sql);
++#else /* HAVE_SQLITE3 */
+ sqlite_exec_printf (gc->gpe->db,
+ "select tag,value from contacts where urn=%d",
+ gpe_read_attr, a, NULL, uid);
++#endif /* HAVE_SQLITE3 */
+ if(!a->address_list) { /* entry without address: ignore! */
+ g_object_unref(a);
+ return 0;
+@@ -323,6 +358,27 @@
+ gc.closure = closure;
+ gc.gpe = gpe_ab;
+ /* FIXME: error reporting */
++#ifdef HAVE_SQLITE3
++{
++ if (filter && *filter) {
++ gchar *sql =
++ sqlite3_mprintf("select distinct urn from contacts where "
++ "(upper(tag)='FAMILY_NAME' or"
++ " upper(tag)='GIVEN_NAME' or"
++ " upper(tag)='NAME' or"
++ " upper(tag)='WORK.EMAIL' or"
++ " upper(tag)='HOME.EMAIL') "
++ "and value LIKE '%q%%'",
++ filter);
++ r = sqlite3_exec(gpe_ab->db, sql, gpe_read_address, &gc, &err);
++ sqlite3_free(sql);
++ } else {
++ r = sqlite3_exec(gpe_ab->db,
++ "select distinct urn from contacts_urn",
++ gpe_read_address, &gc, &err);
++ }
++}
++#else /* HAVE_SQLITE3 */
+ if(filter && *filter) {
+ r = sqlite_exec_printf
+ (gpe_ab->db,
+@@ -336,6 +392,7 @@
+ r = sqlite_exec(gpe_ab->db, "select distinct urn from contacts_urn",
+ gpe_read_address, &gc, &err);
+ }
++#endif /* HAVE_SQLITE3 */
+
+ if(r != SQLITE_OK) {
+ printf("r=%d err=%s\n", r, err);
+@@ -351,10 +408,19 @@
+ return ret;
+ }
+
++#ifdef HAVE_SQLITE3
++#define INSERT_ATTR(db,id,attr,val) \
++ do { if( (val) && *(val)) {\
++ sql = sqlite3_mprintf("insert into contacts values ('%d', '%q', '%q')",\
++ (id), (attr), (val));\
++ sqlite3_exec((db), sql, NULL, NULL, NULL);\
++ sqlite3_free(sql);}} while(0)
++#else /* HAVE_SQLITE3 */
+ #define INSERT_ATTR(db,id,attr,val) \
+ do { if( (val) && *(val)) {\
+ sqlite_exec_printf((db), "insert into contacts values ('%d', '%q', '%q')",\
+ NULL, NULL, NULL, (id), (attr), (val));}} while(0);
++#endif /* HAVE_SQLITE3 */
+
+ static LibBalsaABErr
+ libbalsa_address_book_gpe_add_address(LibBalsaAddressBook *ab,
+@@ -364,6 +430,9 @@
+ int r;
+ guint id;
+ char *err = NULL;
++#ifdef HAVE_SQLITE3
++ gchar *sql;
++#endif /* HAVE_SQLITE3 */
+
+ g_return_val_if_fail(address, LBABERR_CANNOT_WRITE);
+ g_return_val_if_fail(address->address_list, LBABERR_CANNOT_WRITE);
+@@ -372,8 +441,13 @@
+ if(!libbalsa_address_book_gpe_open_db(gpe_ab))
+ return LBABERR_CANNOT_CONNECT;
+ }
++#ifdef HAVE_SQLITE3
++ r = sqlite3_exec(gpe_ab->db, "insert into contacts_urn values (NULL)",
++ NULL, NULL, &err);
++#else /* HAVE_SQLITE3 */
+ r = sqlite_exec(gpe_ab->db, "insert into contacts_urn values (NULL)",
+ NULL, NULL, &err);
++#endif /* HAVE_SQLITE3 */
+ if (r != SQLITE_OK) {
+ libbalsa_address_book_set_status(ab, g_strdup(err));
+ free(err);
+@@ -381,7 +455,11 @@
+ }
+ /* FIXME: duplicate detection! */
+
++#ifdef HAVE_SQLITE3
++ id = sqlite3_last_insert_rowid(gpe_ab->db);
++#else /* HAVE_SQLITE3 */
+ id = sqlite_last_insert_rowid(gpe_ab->db);
++#endif /* HAVE_SQLITE3 */
+ INSERT_ATTR(gpe_ab->db,id, "NAME", address->full_name);
+ INSERT_ATTR(gpe_ab->db,id, "GIVEN_NAME", address->first_name);
+ INSERT_ATTR(gpe_ab->db,id, "FAMILY_NAME", address->last_name);
+@@ -389,11 +467,56 @@
+ INSERT_ATTR(gpe_ab->db,id, "WORK.ORGANIZATION", address->organization);
+ INSERT_ATTR(gpe_ab->db,id, "WORK.EMAIL",
+ (char*)address->address_list->data);
++#ifdef HAVE_SQLITE3
++ sql = sqlite3_mprintf("insert into contacts values "
++ "('%d', 'MODIFIED', %d)",
++ id, time(NULL));
++ sqlite3_exec(gpe_ab->db, sql, NULL, NULL, NULL);
++ sqlite3_free(sql);
++#else /* HAVE_SQLITE3 */
+ sqlite_exec_printf(gpe_ab->db, "insert into contacts values "
+ "('%d', 'MODIFIED', %d)", NULL, NULL, NULL,
+ id, time(NULL));
++#endif /* HAVE_SQLITE3 */
+ return LBABERR_OK;
+ }
++#ifdef HAVE_SQLITE3
++static gchar *
++db_delete_by_uid(sqlite3 * db, guint uid)
++{
++ int r;
++ gchar *err;
++ gchar *sql;
++
++ if (sqlite3_exec(db, "begin transaction", NULL, NULL, &err) !=
++ SQLITE_OK)
++ return err;
++
++ sql = sqlite3_mprintf("delete from contacts where urn='%d'", uid);
++ r = sqlite3_exec(db, sql, NULL, NULL, &err);
++ sqlite3_free(sql);
++ if (r != SQLITE_OK) {
++ sqlite3_exec(db, "rollback transaction", NULL, NULL, NULL);
++ return err;
++ }
++
++ sql = sqlite3_mprintf("delete from contacts_urn where urn='%d'", uid);
++ r = sqlite3_exec(db, sql, NULL, NULL, &err);
++ sqlite3_free(sql);
++ if (r != SQLITE_OK) {
++ sqlite3_exec(db, "rollback transaction", NULL, NULL, NULL);
++ return err;
++ }
++
++ if (sqlite3_exec(db, "commit transaction", NULL, NULL, &err) !=
++ SQLITE_OK) {
++ sqlite3_exec(db, "rollback transaction", NULL, NULL, NULL);
++ return err;
++ }
++
++ return NULL;
++}
++#else /* HAVE_SQLITE3 */
+ static gchar*
+ db_delete_by_uid(sqlite *db, guint uid)
+ {
+@@ -414,6 +537,7 @@
+ sqlite_exec(db, "rollback transaction", NULL, NULL, NULL);
+ return err;
+ }
++#endif /* HAVE_SQLITE3 */
+
+ static LibBalsaABErr
+ libbalsa_address_book_gpe_remove_address(LibBalsaAddressBook *ab,
+@@ -445,12 +569,22 @@
+ /** libbalsa_address_book_gpe_modify_address:
+ modify given address.
+ */
++#ifdef HAVE_SQLITE3
++#define INSERT_ATTR_R(db,id,attr,val) \
++ if ((val) && *(val)) {\
++ sql = sqlite3_mprintf("insert into contacts values ('%d', '%q', '%q')",\
++ (id), (attr), (val));\
++ r = sqlite3_exec((db), sql, NULL, NULL, &err);\
++ sqlite3_free(sql);\
++ if (r != SQLITE_OK) goto rollback;}
++#else /* HAVE_SQLITE3 */
+ #define INSERT_ATTR_R(db,id,attr,val) \
+ if( (val) && *(val)) {\
+ if( (r=sqlite_exec_printf \
+ ((db), "insert into contacts values ('%d', '%q', '%q')",\
+ NULL, NULL, &err, (id), (attr), (val))) != SQLITE_OK)\
+ goto rollback;}
++#endif /* HAVE_SQLITE3 */
+
+ static LibBalsaABErr
+ libbalsa_address_book_gpe_modify_address(LibBalsaAddressBook *ab,
+@@ -461,6 +595,9 @@
+ guint uid;
+ int r;
+ char *err;
++#ifdef HAVE_SQLITE3
++ gchar *sql;
++#endif /* HAVE_SQLITE3 */
+
+ g_return_val_if_fail(address, LBABERR_CANNOT_WRITE);
+ g_return_val_if_fail(address->address_list, LBABERR_CANNOT_WRITE);
+@@ -475,6 +612,26 @@
+ g_return_val_if_fail(uid, LBABERR_CANNOT_WRITE);
+
+ /* do the real work here */
++#ifdef HAVE_SQLITE3
++ if ((r = sqlite3_exec(gpe_ab->db, "begin transaction",
++ NULL, NULL, &err)) != SQLITE_OK) {
++ libbalsa_address_book_set_status(ab, g_strdup(err));
++ free(err); /* failed, so soon!? */
++ return LBABERR_CANNOT_WRITE;
++ }
++
++ sql = sqlite3_mprintf("delete from contacts where urn='%d' and "
++ "(upper(tag)='NAME' or"
++ " upper(tag)='GIVEN_NAME' or"
++ " upper(tag)='NICKNAME' or"
++ " upper(tag)='WORK.ORGANIZATION' or"
++ " upper(tag)='WORK.EMAIL' or"
++ " upper(tag)='MODIFIED')", uid);
++ r = sqlite3_exec(gpe_ab->db, sql, NULL, NULL, &err);
++ sqlite3_free(sql);
++ if (r != SQLITE_OK)
++ goto rollback;
++#else /* HAVE_SQLITE3 */
+ if( (r=sqlite_exec(gpe_ab->db, "begin transaction",
+ NULL, NULL, &err)) != SQLITE_OK) {
+ libbalsa_address_book_set_status(ab, g_strdup(err));
+@@ -490,6 +647,7 @@
+ "upper(tag)='WORK.EMAIL' or upper(tag)='MODIFIED')",
+ NULL, NULL, &err, uid)) != SQLITE_OK)
+ goto rollback;
++#endif /* HAVE_SQLITE3 */
+ INSERT_ATTR_R(gpe_ab->db,uid, "NAME", newval->full_name);
+ INSERT_ATTR_R(gpe_ab->db,uid, "GIVEN_NAME", newval->first_name);
+ INSERT_ATTR_R(gpe_ab->db,uid, "FAMILY_NAME", newval->last_name);
+@@ -497,6 +655,18 @@
+ INSERT_ATTR_R(gpe_ab->db,uid, "WORK.ORGANIZATION", newval->organization);
+ INSERT_ATTR_R(gpe_ab->db,uid, "WORK.EMAIL",
+ (char*)newval->address_list->data);
++#ifdef HAVE_SQLITE3
++ sql = sqlite3_mprintf("insert into contacts values "
++ "('%d', 'MODIFIED', %d)", uid, time(NULL));
++ r = sqlite3_exec(gpe_ab->db, sql, NULL, NULL, &err);
++ sqlite3_free(sql);
++ if (r != SQLITE_OK)
++ goto rollback;
++
++ if (sqlite3_exec(gpe_ab->db, "commit transaction", NULL, NULL, &err) ==
++ SQLITE_OK)
++ return LBABERR_OK;
++#else /* HAVE_SQLITE3 */
+ if( (r=sqlite_exec_printf(gpe_ab->db, "insert into contacts values "
+ "('%d', 'MODIFIED', %d)", NULL, NULL, &err,
+ uid, time(NULL))) != SQLITE_OK)
+@@ -504,17 +674,26 @@
+
+ if( (r=sqlite_exec(gpe_ab->db, "commit transaction", NULL,
+ NULL, &err)) == SQLITE_OK) return LBABERR_OK;
++#endif /* HAVE_SQLITE3 */
+
+ rollback:
+ libbalsa_address_book_set_status(ab, g_strdup(err));
+ free(err);
++#ifdef HAVE_SQLITE3
++ sqlite3_exec(gpe_ab->db, "rollback transaction", NULL, NULL, NULL);
++#else /* HAVE_SQLITE3 */
+ sqlite_exec(gpe_ab->db, "rollback transaction", NULL, NULL, NULL);
++#endif /* HAVE_SQLITE3 */
+
+ return LBABERR_CANNOT_WRITE;
+ }
+
+ struct gpe_completion_closure {
++#ifdef HAVE_SQLITE3
++ sqlite3 *db;
++#else /* HAVE_SQLITE3 */
+ sqlite *db;
++#endif /* HAVE_SQLITE3 */
+ const gchar *prefix;
+ gchar **new_prefix;
+ GList *res;
+@@ -601,6 +780,16 @@
+ gcc.prefix = prefix;
+ gcc.new_prefix = new_prefix;
+ gcc.res = NULL;
++#ifdef HAVE_SQLITE3
++ if (prefix) {
++ gchar *sql = sqlite3_mprintf(query, prefix);
++ r = sqlite3_exec(gpe_ab->db, sql, gpe_read_completion, &gcc, &err);
++ sqlite3_free(sql);
++ } else
++ r = sqlite3_exec(gpe_ab->db,
++ "select distinct urn from contacts_urn",
++ gpe_read_completion, &gcc, &err);
++#else /* HAVE_SQLITE3 */
+ if(prefix)
+ r = sqlite_exec_printf(gpe_ab->db, query,
+ gpe_read_completion, &gcc, &err,
+@@ -608,6 +797,7 @@
+ else
+ r = sqlite_exec(gpe_ab->db, "select distinct urn from contacts_urn",
+ gpe_read_completion, &gcc, &err);
++#endif /* HAVE_SQLITE3 */
+ if(err) {
+ printf("r=%d err=%s\n", r, err);
+ free(err);
+--- balsa-2.2.6/libbalsa/address-book-gpe.h 2004-08-27 04:54:24.000000000 -0400
++++ balsa-2.2.6.new/libbalsa/address-book-gpe.h 2005-05-24 11:03:37.000000000 -0400
+@@ -29,7 +29,11 @@
+
+ #ifdef HAVE_SQLITE
+
++#ifdef HAVE_SQLITE3
++#include <sqlite3.h>
++#else /* HAVE_SQLITE3 */
+ #include <sqlite.h>
++#endif /* HAVE_SQLITE3 */
+
+ #include "address-book.h"
+
+@@ -44,7 +48,11 @@
+
+ struct _LibBalsaAddressBookGpe {
+ LibBalsaAddressBook parent;
++#ifdef HAVE_SQLITE3
++ sqlite3 *db;
++#else /* HAVE_SQLITE3 */
+ sqlite *db;
++#endif /* HAVE_SQLITE3 */
+ };
+
+ struct _LibBalsaAddressBookGpeClass {
+--- balsa-2.2.6/configure.in 2004-11-19 17:23:40.000000000 -0500
++++ balsa-2.2.6.new/configure.in 2005-05-24 11:27:17.000000000 -0400
+@@ -350,10 +350,13 @@
+ AC_MSG_CHECKING(whether to use SQLite)
+ if test x$with_sqlite != xno ; then
+ AC_MSG_RESULT([yes])
+- PKG_CHECK_MODULES(SQLITE, [
+- sqlite >= 2.8
+- ])
+- AC_DEFINE(HAVE_SQLITE,1,[If defined, enable GPE address book support.])
++ if $PKG_CONFIG --exists sqlite3 ; then
++ PKG_CHECK_MODULES(SQLITE, [sqlite3])
++ AC_DEFINE(HAVE_SQLITE3,1,[If defined, use sqlite3 api.])
++ else
++ PKG_CHECK_MODULES(SQLITE, [sqlite >= 2.8])
++ AC_DEFINE(HAVE_SQLITE,1,[If defined, enable GPE address book support.])
++ fi
+ BALSA_CFLAGS="$BALSA_CFLAGS $SQLITE_CFLAGS"
+ BALSA_LIBS="$BALSA_LIBS $SQLITE_LIBS"
+ else
diff --git a/mail-client/balsa/files/digest-balsa-2.2.6-r2 b/mail-client/balsa/files/digest-balsa-2.2.6-r2
new file mode 100644
index 000000000000..beeeb355c10c
--- /dev/null
+++ b/mail-client/balsa/files/digest-balsa-2.2.6-r2
@@ -0,0 +1 @@
+MD5 6179fadbfc5cca642dac081519acef25 balsa-2.2.6.tar.bz2 2913847