#include "e-book-backend-file-migrate-bdb.h"
-
#define E_BOOK_BACKEND_FILE_REVISION_NAME "PAS-DB-REVISION"
#define E_BOOK_BACKEND_FILE_VERSION_NAME "PAS-DB-VERSION"
#define E_BOOK_BACKEND_FILE_LAST_BDB_VERSION "0.2"
#define EDB_ERROR(_code) e_data_book_create_error (E_DATA_BOOK_STATUS_ ## _code, NULL)
#define EDB_ERROR_EX(_code, _msg) e_data_book_create_error (E_DATA_BOOK_STATUS_ ## _code, _msg)
-
G_LOCK_DEFINE_STATIC (db_env);
static DB_ENV *db_env = NULL;
** came about.
*/
static gboolean
-e_book_backend_file_upgrade_db (DB *db,
+e_book_backend_file_upgrade_db (DB *db,
gchar *old_version)
{
gint db_error;
if (strcmp (old_version, "0.0")
&& strcmp (old_version, "0.1")) {
- g_warning ("unsupported version '%s' found in PAS backend file\n",
- old_version);
+ g_warning (
+ "unsupported version '%s' found in PAS backend file\n",
+ old_version);
return FALSE;
}
return ret_val;
}
-
static gboolean
-migrate_bdb_to_sqlitedb (EBookBackendSqliteDB *sqlitedb,
- const gchar *sqlite_folder_id,
- DB *db,
- GError **error)
+migrate_bdb_to_sqlitedb (EBookBackendSqliteDB *sqlitedb,
+ const gchar *sqlite_folder_id,
+ DB *db,
+ GError **error)
{
DBC *dbc;
DBT id_dbt, vcard_dbt;
}
gboolean
-e_book_backend_file_migrate_bdb (EBookBackendSqliteDB *sqlitedb,
- const gchar *sqlite_folder_id,
- const gchar *dirname,
- const gchar *filename,
- GError **error)
+e_book_backend_file_migrate_bdb (EBookBackendSqliteDB *sqlitedb,
+ const gchar *sqlite_folder_id,
+ const gchar *dirname,
+ const gchar *filename,
+ GError **error)
{
DB *db = NULL;
gint db_error;
gboolean status = FALSE;
-
G_LOCK (db_env);
#ifdef G_OS_WIN32
const gchar *filename,
GError **error);
-
-
G_END_DECLS
-
-
#endif /* E_BOOK_BACKEND_MIGRATE_BDB_H */
#define EDB_ERROR_EX(_code, _msg) e_data_book_create_error (E_DATA_BOOK_STATUS_ ## _code, _msg)
#define EDB_NOT_OPENED_ERROR EDB_ERROR(NOT_OPENED)
-
G_DEFINE_TYPE (EBookBackendFile, e_book_backend_file, E_TYPE_BOOK_BACKEND_SYNC)
struct _EBookBackendFilePrivate {
EBookBackendSqliteDB *sqlitedb;
};
-
/****************************************************************
* File Management helper APIs *
****************************************************************/
return status;
}
-
/****************************************************************
* Global Revisioning Tools *
****************************************************************/
SQLITEDB_FOLDER_ID,
bf->priv->revision,
&error)) {
- g_warning (G_STRLOC ": Error setting database revision: %s",
- error->message);
+ g_warning (
+ G_STRLOC ": Error setting database revision: %s",
+ error->message);
g_error_free (error);
}
SQLITEDB_FOLDER_ID,
&bf->priv->revision,
&error)) {
- g_warning (G_STRLOC ": Error loading database revision: %s",
- error->message);
+ g_warning (
+ G_STRLOC ": Error loading database revision: %s",
+ error->message);
g_error_free (error);
} else if (bf->priv->revision == NULL) {
e_book_backend_file_bump_revision (bf);
}
-
/****************************************************************
* Main Backend Implementation *
****************************************************************/
*/
static gboolean
do_create (EBookBackendFile *bf,
- const GSList *vcards_req,
- GSList **contacts,
- GError **perror)
+ const GSList *vcards_req,
+ GSList **contacts,
+ GError **perror)
{
GSList *slist = NULL;
const GSList *l;
slist = g_slist_prepend (slist, contact);
} else {
/* Contact could not be transformed */
- g_warning (G_STRLOC ": Error transforming vcard with image data %s",
+ g_warning (
+ G_STRLOC ": Error transforming vcard with image data %s",
(perror && *perror) ? (*perror)->message :
"Unknown error transforming vcard");
g_object_unref (contact);
SQLITEDB_FOLDER_ID,
slist, FALSE,
&local_error)) {
-
+
g_warning ("Failed to add contacts: %s", local_error->message);
g_propagate_error (perror, local_error);
* single query to fetch a list of contacts for a list of ids, the
* current method makes a query for each UID.
*/
- contact = e_book_backend_sqlitedb_get_contact (bf->priv->sqlitedb,
- SQLITEDB_FOLDER_ID, id,
- NULL, NULL, &local_error);
+ contact = e_book_backend_sqlitedb_get_contact (
+ bf->priv->sqlitedb,
+ SQLITEDB_FOLDER_ID, id,
+ NULL, NULL, &local_error);
if (contact) {
removed_ids = g_slist_prepend (removed_ids, g_strdup (id));
break;
}
- old_contact = e_book_backend_sqlitedb_get_contact (bf->priv->sqlitedb,
- SQLITEDB_FOLDER_ID, id,
- NULL, NULL, &local_error);
+ old_contact = e_book_backend_sqlitedb_get_contact (
+ bf->priv->sqlitedb,
+ SQLITEDB_FOLDER_ID, id,
+ NULL, NULL, &local_error);
if (!old_contact) {
g_warning (G_STRLOC ": Failed to load contact %s: %s", id, local_error->message);
g_propagate_error (perror, local_error);
vcard = data->vcard;
data->vcard = NULL;
-
+
notify_update_vcard (book_view, TRUE, data->uid, vcard);
g_free (vcard);
- }
-
+ }
+
g_slist_foreach (summary_list, (GFunc) e_book_backend_sqlitedb_search_data_free, NULL);
g_slist_free (summary_list);
}
}
-
#ifdef CREATE_DEFAULT_VCARD
# include <libedata-book/ximian-vcard.h>
#endif
/* The old BDB exists, lets migrate that to sqlite right away
*/
if (g_file_test (filename, G_FILE_TEST_EXISTS)) {
- bf->priv->sqlitedb = e_book_backend_sqlitedb_new (dirname,
- SQLITEDB_EMAIL_ID,
- SQLITEDB_FOLDER_ID,
- SQLITEDB_FOLDER_NAME,
- TRUE,
- &local_error);
+ bf->priv->sqlitedb = e_book_backend_sqlitedb_new (
+ dirname,
+ SQLITEDB_EMAIL_ID,
+ SQLITEDB_FOLDER_ID,
+ SQLITEDB_FOLDER_NAME,
+ TRUE,
+ &local_error);
if (!bf->priv->sqlitedb) {
g_warning (G_STRLOC ": Failed to open sqlitedb: %s", local_error->message);
dirname, filename, &local_error)) {
/* Perhaps this error should not be fatal */
- g_warning (G_STRLOC ": Failed to migrate old BDB to sqlitedb: %s", local_error->message);
+ g_warning (
+ G_STRLOC ": Failed to migrate old BDB to sqlitedb: %s",
+ local_error->message);
g_propagate_error (perror, local_error);
g_free (dirname);
g_free (filename);
g_free (backup);
-
+
g_object_unref (bf->priv->sqlitedb);
bf->priv->sqlitedb = NULL;
return;
/* Now we've migrated the database, lets rename it instead of unlinking it */
if (g_rename (filename, backup) < 0) {
- g_warning (G_STRLOC ": Failed to rename old database from '%s' to '%s': %s",
- filename, backup, g_strerror (errno));
+ g_warning (
+ G_STRLOC ": Failed to rename old database from '%s' to '%s': %s",
+ filename, backup, g_strerror (errno));
- g_propagate_error (perror, e_data_book_create_error_fmt
- (E_DATA_BOOK_STATUS_OTHER_ERROR,
- _("Failed to rename old database from '%s' to '%s': %s"),
- filename, backup, g_strerror (errno)));
+ g_propagate_error (
+ perror, e_data_book_create_error_fmt (
+ E_DATA_BOOK_STATUS_OTHER_ERROR,
+ _("Failed to rename old database from '%s' to '%s': %s"),
+ filename, backup, g_strerror (errno)));
g_free (dirname);
g_free (filename);
g_free (backup);
bf->priv->sqlitedb = NULL;
return;
- }
+ }
}
/* If we already have a handle on this, it means there was an old BDB migrated
g_warning (G_STRLOC ": Failed to create directory for sqlite db: %s", local_error->message);
g_propagate_error (perror, local_error);
- g_free (dirname);
- g_free (filename);
+ g_free (dirname);
+ g_free (filename);
g_free (backup);
- return;
- }
+ return;
+ }
/* Create the sqlitedb */
- bf->priv->sqlitedb = e_book_backend_sqlitedb_new (dirname,
- SQLITEDB_EMAIL_ID,
- SQLITEDB_FOLDER_ID,
- SQLITEDB_FOLDER_NAME,
- TRUE, &local_error);
+ bf->priv->sqlitedb = e_book_backend_sqlitedb_new (
+ dirname,
+ SQLITEDB_EMAIL_ID,
+ SQLITEDB_FOLDER_ID,
+ SQLITEDB_FOLDER_NAME,
+ TRUE, &local_error);
if (!bf->priv->sqlitedb) {
g_warning (G_STRLOC ": Failed to open sqlitedb: %s", local_error->message);
g_propagate_error (perror, local_error);
- g_free (dirname);
- g_free (filename);
+ g_free (dirname);
+ g_free (filename);
g_free (backup);
- return;
- }
+ return;
+ }
/* An sqlite DB only 'exists' if the populated flag is set */
- populated = e_book_backend_sqlitedb_get_is_populated (bf->priv->sqlitedb,
- SQLITEDB_FOLDER_ID,
- &local_error);
+ populated = e_book_backend_sqlitedb_get_is_populated (
+ bf->priv->sqlitedb,
+ SQLITEDB_FOLDER_ID,
+ &local_error);
if (local_error != NULL) {
/* Perhaps this error should not be fatal */
g_warning (G_STRLOC ": Failed to check populated flag in sqlite db: %s", local_error->message);
g_propagate_error (perror, local_error);
- g_free (dirname);
- g_free (filename);
+ g_free (dirname);
+ g_free (filename);
g_free (backup);
g_object_unref (bf->priv->sqlitedb);
bf->priv->sqlitedb = NULL;
return;
- }
+ }
if (!populated) {
/* Shutdown, no such book ! */
if (only_if_exists) {
- g_free (dirname);
- g_free (filename);
+ g_free (dirname);
+ g_free (filename);
g_free (backup);
g_object_unref (bf->priv->sqlitedb);
bf->priv->sqlitedb = NULL;
g_propagate_error (perror, EDB_ERROR (NO_SUCH_BOOK));
return;
- }
+ }
#ifdef CREATE_DEFAULT_VCARD
{
SQLITEDB_FOLDER_ID,
TRUE,
&local_error)) {
- g_warning (G_STRLOC ": Failed to set populated flag in sqlite db: %s",
- local_error->message);
+ g_warning (
+ G_STRLOC ": Failed to set populated flag in sqlite db: %s",
+ local_error->message);
g_propagate_error (perror, local_error);
g_free (dirname);
g_free (filename);
bf->priv->sqlitedb = NULL;
return;
}
- }
- }
+ }
+ }
g_free (dirname);
g_free (filename);
0 == g_ascii_strcasecmp (name, EVC_NOTE) ||
0 == g_ascii_strcasecmp (name, EVC_CATEGORIES) ||
0 == g_ascii_strcasecmp (name, EVC_PHOTO) ||
- 0 == g_ascii_strcasecmp (name, GOOGLE_SYSTEM_GROUP_ATTR)) {
+ 0 == g_ascii_strcasecmp (name, GOOGLE_SYSTEM_GROUP_ATTR)) {
/* Ignore UID, VERSION, X-EVOLUTION-FILE-AS, N, FN, LABEL, TITLE, ROLE, NOTE, CATEGORIES, PHOTO,
- X-GOOGLE-SYSTEM-GROUP-IDS */
+ * X-GOOGLE-SYSTEM-GROUP-IDS */
} else if (0 == g_ascii_strcasecmp (name, EVC_EMAIL)) {
/* EMAIL */
GDataGDEmailAddress *email;
e_contact_date_free (bdate);
}
- /* Map X-GOOGLE-SYSTEM-GROUP-IDS from outside to CATEGORIES.
- They will be mapped again to system group ids below; this is done
- so e-d-s/evolution (which use CATEGORIES), folks/gnome-contacts (which
- use X-GOOGLE-SYSTEM-GROUP-IDS) and google contacts (which uses the
- GData group IDs) all stay in sync */
- {
- EVCardAttribute *system_group_attr;
- EVCardAttribute *categories_attr;
+ /* Map X-GOOGLE-SYSTEM-GROUP-IDS from outside to CATEGORIES.
+ * They will be mapped again to system group ids below; this is done
+ * so e-d-s / evolution (which use CATEGORIES), folks / gnome-contacts
+ * (which use X-GOOGLE-SYSTEM-GROUP-IDS) and google contacts (which
+ * uses the GData group IDs) all stay in sync */
+ {
+ EVCardAttribute *system_group_attr;
+ EVCardAttribute *categories_attr;
- system_group_attr = e_vcard_get_attribute (E_VCARD (contact), GOOGLE_SYSTEM_GROUP_ATTR);
- categories_attr = e_vcard_get_attribute (E_VCARD (contact), EVC_CATEGORIES);
+ system_group_attr = e_vcard_get_attribute (E_VCARD (contact), GOOGLE_SYSTEM_GROUP_ATTR);
+ categories_attr = e_vcard_get_attribute (E_VCARD (contact), EVC_CATEGORIES);
- if (system_group_attr) {
- GList *system_groups = e_vcard_attribute_get_values (system_group_attr);
- GList *sys_group;
+ if (system_group_attr) {
+ GList *system_groups = e_vcard_attribute_get_values (system_group_attr);
+ GList *sys_group;
- for (sys_group = system_groups; sys_group; sys_group = sys_group->next) {
- const char *category_name;
+ for (sys_group = system_groups; sys_group; sys_group = sys_group->next) {
+ const gchar *category_name;
- category_name = e_contact_map_google_with_evo_group (sys_group->data, TRUE);
+ category_name = e_contact_map_google_with_evo_group (sys_group->data, TRUE);
- if (!categories_attr) {
- categories_attr = e_vcard_attribute_new (NULL, EVC_CATEGORIES);
- e_vcard_append_attribute (E_VCARD (contact), categories_attr);
- }
+ if (!categories_attr) {
+ categories_attr = e_vcard_attribute_new (NULL, EVC_CATEGORIES);
+ e_vcard_append_attribute (E_VCARD (contact), categories_attr);
+ }
- e_vcard_attribute_add_value (categories_attr, category_name);
- }
- }
- }
+ e_vcard_attribute_add_value (categories_attr, category_name);
+ }
+ }
+ }
/* CATEGORIES */
for (category_names = e_contact_get (contact, E_CONTACT_CATEGORY_LIST); category_names != NULL; category_names = category_names->next) {
br->book_client, "opened",
G_CALLBACK (book_client_opened_cb), br);
- thread = g_thread_new (NULL,
+ thread = g_thread_new (
+ NULL,
cbc_reopen_book_client_thread,
br->book_client);
g_thread_unref (thread);
static CamelCertDBKey *
certdb_key_new (const gchar *hostname,
- const gchar *fingerprint)
+ const gchar *fingerprint)
{
CamelCertDBKey *key;
static gboolean
certdb_key_equal (gconstpointer ptr1,
- gconstpointer ptr2)
+ gconstpointer ptr2)
{
const CamelCertDBKey *key1 = ptr1, *key2 = ptr2;
gboolean same_hostname;
return g_ascii_strcasecmp (key1->fingerprint, key2->fingerprint) == 0;
}
-
return same_hostname;
}
CamelCert *
camel_certdb_get_host (CamelCertDB *certdb,
const gchar *hostname,
- const gchar *fingerprint)
+ const gchar *fingerprint)
{
CamelCert *cert;
CamelCertDBKey *key;
void
camel_certdb_remove_host (CamelCertDB *certdb,
const gchar *hostname,
- const gchar *fingerprint)
+ const gchar *fingerprint)
{
CamelCert *cert;
CamelCertDBKey *key;
is->tagprefix,
"waiting for idle to stop \n");
/* if there are more pending commands,
- then they should be processed too */
+ * then they should be processed too */
break;
case IMAPX_IDLE_STOP_ERROR:
if (!idle->idle_thread) {
idle->start_watch_is_set = FALSE;
- idle->idle_thread = g_thread_new (NULL,
- (GThreadFunc) imapx_idle_thread, is);
+ idle->idle_thread = g_thread_new (
+ NULL, (GThreadFunc) imapx_idle_thread, is);
} else {
g_mutex_lock (&idle->start_watch_mutex);
idle->start_watch_is_set = TRUE;
static gboolean
extract_rfc2047_encoded_word (const gchar **in,
- gchar **word)
+ gchar **word)
{
const gchar *inptr = *in, *start;
camel_pop3_engine_new (CamelStream *source,
guint32 flags,
GCancellable *cancellable,
- GError **error)
+ GError **error)
{
CamelPOP3Engine *pe;
gboolean
camel_pop3_engine_reget_capabilities (CamelPOP3Engine *engine,
GCancellable *cancellable,
- GError **error)
+ GError **error)
{
g_return_val_if_fail (CAMEL_IS_POP3_ENGINE (engine), FALSE);
cmd_capa (CamelPOP3Engine *pe,
CamelPOP3Stream *stream,
GCancellable *cancellable,
- GError **error,
+ GError **error,
gpointer data)
{
guchar *line, *tok, *next;
static gboolean
get_capabilities (CamelPOP3Engine *pe,
GCancellable *cancellable,
- GError **error)
+ GError **error)
{
CamelPOP3Command *pc;
GError *local_error = NULL;
cmd_uidl (CamelPOP3Engine *pe,
CamelPOP3Stream *stream,
GCancellable *cancellable,
- GError **error,
+ GError **error,
gpointer data)
{
gint ret;
cmd_builduid (CamelPOP3Engine *pe,
CamelPOP3Stream *stream,
GCancellable *cancellable,
- GError **error,
+ GError **error,
gpointer data)
{
GChecksum *checksum;
cmd_list (CamelPOP3Engine *pe,
CamelPOP3Stream *stream,
GCancellable *cancellable,
- GError **error,
+ GError **error,
gpointer data)
{
gint ret;
cmd_tocache (CamelPOP3Engine *pe,
CamelPOP3Stream *stream,
GCancellable *cancellable,
- GError **error,
+ GError **error,
gpointer data)
{
CamelPOP3FolderInfo *fi = data;
* main loop will signal the thread itself to terminate. */
mediator->priv->thread_closure = thread_closure_ref (closure);
- thread = g_thread_new (NULL,
+ thread = g_thread_new (
+ NULL,
authentication_mediator_authenticator_thread,
closure);
static gboolean
include_master_source_enabled_transform (GBinding *binding,
- const GValue *source_value,
- GValue *target_value,
- gpointer backend)
+ const GValue *source_value,
+ GValue *target_value,
+ gpointer backend)
{
- g_value_set_boolean (target_value,
+ g_value_set_boolean (
+ target_value,
g_value_get_boolean (source_value) &&
e_source_get_enabled (e_backend_get_source (backend)));
registry->priv->thread_closure = closure;
- registry->priv->manager_thread = g_thread_new (NULL,
+ registry->priv->manager_thread = g_thread_new (
+ NULL,
source_registry_object_manager_thread,
closure);
static gboolean
has_suffix_icmp (const gchar *text,
- const gchar *suffix)
+ const gchar *suffix)
{
gint ii, tlen, slen;
return FALSE;
for (ii = 0; ii < slen; ii++) {
- if (g_ascii_tolower (text[tlen - ii - 1]) !=
+ if (g_ascii_tolower (text[tlen - ii - 1]) !=
g_ascii_tolower (suffix[slen - ii - 1]))
break;
}
const gchar *oab_url;
content = xmlNodeGetContent (node);
- oab_url = (const char *) content;
+ oab_url = (const gchar *) content;
if (!has_suffix_icmp (oab_url, "oab.xml")) {
gchar *tmp;
#ifdef HAVE_GOA_PASSWORD_BASED
static void
replace_host (gchar **url,
- const gchar *host)
+ const gchar *host)
{
SoupURI *uri;
/* This will be NULL if Evolution-EWS is not installed. */
if (source_extension != NULL) {
GoaAccount *goa_account;
+ CamelSettings *settings;
gchar *host, *user, *email;
goa_account = goa_object_peek_account (goa_object);
"email", email,
NULL);
- g_object_set (e_source_camel_get_settings (E_SOURCE_CAMEL (source_extension)),
+ settings = e_source_camel_get_settings (
+ E_SOURCE_CAMEL (source_extension));
+
+ g_object_set (
+ settings,
"host", host,
"user", user,
"email", email,