aboutsummaryrefslogtreecommitdiffstats
path: root/src/empathy-migrate-butterfly-logs.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/empathy-migrate-butterfly-logs.c')
-rw-r--r--src/empathy-migrate-butterfly-logs.c234
1 files changed, 0 insertions, 234 deletions
diff --git a/src/empathy-migrate-butterfly-logs.c b/src/empathy-migrate-butterfly-logs.c
deleted file mode 100644
index 4a8bf973c..000000000
--- a/src/empathy-migrate-butterfly-logs.c
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
-* Copyright (C) 2010 Collabora Ltd.
-*
-* This library is free software; you can redistribute it and/or
-* modify it under the terms of the GNU Lesser General Public
-* License as published by the Free Software Foundation; either
-* version 2.1 of the License, or (at your option) any later version.
-*
-* This library 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
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this library; if not, write to the Free Software
-* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-*/
-
-#include <string.h>
-
-#include <gio/gio.h>
-
-#define DEBUG_FLAG EMPATHY_DEBUG_OTHER
-#include <libempathy/empathy-debug.h>
-#include <libempathy/empathy-gsettings.h>
-
-#include <telepathy-glib/account-manager.h>
-#include <telepathy-glib/util.h>
-#include <telepathy-glib/defs.h>
-
-#include "empathy-migrate-butterfly-logs.h"
-
-static guint butterfly_log_migration_id = 0;
-
-static void
-migrate_log_files_in_dir (const gchar *dirname)
-{
- GDir *dir;
- const gchar *subdir;
- gchar *new_name;
- gchar *full_path;
- GError *error = NULL;
-
- dir = g_dir_open (dirname, 0, &error);
-
- if (dir == NULL)
- {
- DEBUG ("Failed to open dir: %s", error->message);
- g_error_free (error);
- return;
- }
-
- while ((subdir = g_dir_read_name (dir)) != NULL)
- {
- GFile *old_gfile, *new_gfile;
-
- if (!tp_strdiff (subdir, "chatrooms"))
- continue;
-
- if (g_str_has_suffix (subdir, "#1"))
- {
- new_name = g_strndup (subdir, (strlen (subdir) - 2));
- }
- else if (g_str_has_suffix (subdir, "#32"))
- {
- gchar *tmp;
- tmp = g_strndup (subdir, (strlen (subdir) - 3));
- new_name = g_strdup_printf ("%s#yahoo", tmp);
- g_free (tmp);
- }
- else
- {
- continue;
- }
-
- full_path = g_build_filename (dirname, subdir, NULL);
- old_gfile = g_file_new_for_path (full_path);
- g_free (full_path);
-
- full_path = g_build_filename (dirname, new_name, NULL);
- new_gfile = g_file_new_for_path (full_path);
- g_free (full_path);
-
- if (!g_file_move (old_gfile, new_gfile, G_FILE_COPY_NONE,
- NULL, NULL, NULL, &error))
- {
- DEBUG ("Failed to move file: %s", error->message);
- g_clear_error (&error);
- }
- else
- {
- DEBUG ("Successfully migrated logs for %s", new_name);
- }
-
- g_free (new_name);
- g_object_unref (old_gfile);
- g_object_unref (new_gfile);
- }
-
- g_dir_close (dir);
-}
-
-/* This is copied from empathy-log-store-empathy.c (see #613437) */
-static gchar *
-log_store_account_to_dirname (TpAccount *account)
-{
- const gchar *name;
-
- name = tp_proxy_get_object_path (account);
- if (g_str_has_prefix (name, TP_ACCOUNT_OBJECT_PATH_BASE))
- name += strlen (TP_ACCOUNT_OBJECT_PATH_BASE);
-
- return g_strdelimit (g_strdup (name), "/", '_');
-}
-
-static gchar *
-get_log_dir_for_account (TpAccount *account)
-{
- gchar *basedir;
- gchar *escaped;
-
- escaped = log_store_account_to_dirname (account);
-
- basedir = g_build_path (G_DIR_SEPARATOR_S, g_get_user_data_dir (),
- PACKAGE_NAME, "logs", escaped, NULL);
-
- g_free (escaped);
-
- return basedir;
-}
-
-
-static void
-migration_account_manager_prepared_cb (GObject *source_object,
- GAsyncResult *result,
- gpointer user_data)
-{
- TpAccountManager *am = TP_ACCOUNT_MANAGER (source_object);
- GError *error = NULL;
- GList *accounts, *l;
- GSettings *gsettings;
-
- if (!tp_account_manager_prepare_finish (am, result, &error))
- {
- DEBUG ("Failed to prepare the account manager: %s", error->message);
- g_error_free (error);
- return;
- }
-
- accounts = tp_account_manager_get_valid_accounts (am);
-
- for (l = accounts; l != NULL; l = l->next)
- {
- TpAccount *account = TP_ACCOUNT (l->data);
- gchar *dir, *cm;
-
- tp_account_parse_object_path (tp_proxy_get_object_path (account),
- &cm, NULL, NULL, NULL);
-
- if (tp_strdiff (cm, "butterfly"))
- {
- g_free (cm);
- continue;
- }
-
- dir = get_log_dir_for_account (account);
- DEBUG ("Migrating all logs from dir: %s", dir);
-
- migrate_log_files_in_dir (dir);
-
- g_free (cm);
- g_free (dir);
- }
-
- DEBUG ("Finished all migrating");
-
- gsettings = g_settings_new (EMPATHY_PREFS_SCHEMA);
- g_settings_set_boolean (gsettings, EMPATHY_PREFS_BUTTERFLY_LOGS_MIGRATED,
- TRUE);
- g_object_unref (gsettings);
-
- g_list_free (accounts);
-}
-
-static gboolean
-migrate_logs (gpointer data)
-{
- TpAccountManager *account_manager;
-
- account_manager = tp_account_manager_dup ();
-
- tp_account_manager_prepare_async (account_manager, NULL,
- migration_account_manager_prepared_cb, NULL);
-
- g_object_unref (account_manager);
-
- return FALSE;
-}
-
-gboolean
-empathy_migrate_butterfly_logs (EmpathyContact *contact)
-{
- GSettings *gsettings = g_settings_new (EMPATHY_PREFS_SCHEMA);
- gchar *cm;
-
- /* Already in progress. */
- if (butterfly_log_migration_id != 0)
- return FALSE;
-
- /* Already done. */
- if (g_settings_get_boolean (gsettings, EMPATHY_PREFS_BUTTERFLY_LOGS_MIGRATED))
- return FALSE;
-
- tp_account_parse_object_path (
- tp_proxy_get_object_path (empathy_contact_get_account (contact)),
- &cm, NULL, NULL, NULL);
-
- if (tp_strdiff (cm, "butterfly"))
- {
- g_free (cm);
- return TRUE;
- }
- g_free (cm);
-
- if (g_str_has_suffix (empathy_contact_get_id (contact), "#32")
- || g_str_has_suffix (empathy_contact_get_id (contact), "#1"))
- return TRUE;
-
- /* Okay, we know a new butterfly is being used, so we should migrate its logs */
- butterfly_log_migration_id = g_idle_add_full (G_PRIORITY_LOW,
- migrate_logs, NULL, NULL);
-
- return FALSE;
-}