#include <string.h>
#include <stdio.h>
#include <stdlib.h>
-
-/* FIXME: g_mapped_file_free has been deprecated in GLib 2.22, but the
- * replacement symbol, g_mapped_file_unref is not available in older Glib
- * and we're not ready to bump our version requirement just for this. When
- * we're ready to bump our version requirement, just revert this patch. */
-#undef G_DISABLE_DEPRECATED
#include <glib/gstdio.h>
-#define G_DISABLE_DEPRECATED
+#include <telepathy-glib/account-manager.h>
#include <telepathy-glib/util.h>
#include <telepathy-glib/defs.h>
#include "empathy-log-store.h"
#include "empathy-log-store-empathy.h"
#include "empathy-log-manager.h"
-#include "empathy-account-manager.h"
#include "empathy-contact.h"
#include "empathy-time.h"
#include "empathy-utils.h"
{
gchar *basedir;
gchar *name;
- EmpathyAccountManager *account_manager;
+ TpAccountManager *account_manager;
} EmpathyLogStoreEmpathyPriv;
static void log_store_iface_init (gpointer g_iface,gpointer iface_data);
PACKAGE_NAME, "logs", NULL);
priv->name = g_strdup ("Empathy");
- priv->account_manager = empathy_account_manager_dup_singleton ();
+ priv->account_manager = tp_account_manager_dup ();
}
static gchar *
-log_store_account_to_dirname (EmpathyAccount *account)
+log_store_account_to_dirname (TpAccount *account)
{
const gchar *name;
- name = empathy_account_get_unique_name (account);
+ 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);
static gchar *
log_store_empathy_get_dir (EmpathyLogStore *self,
- EmpathyAccount *account,
+ TpAccount *account,
const gchar *chat_id,
gboolean chatroom)
{
static gchar *
log_store_empathy_get_filename (EmpathyLogStore *self,
- EmpathyAccount *account,
+ TpAccount *account,
const gchar *chat_id,
gboolean chatroom)
{
GError **error)
{
FILE *file;
- EmpathyAccount *account;
+ TpAccount *account;
EmpathyContact *sender;
const gchar *body_str;
const gchar *str;
static gboolean
log_store_empathy_exists (EmpathyLogStore *self,
- EmpathyAccount *account,
+ TpAccount *account,
const gchar *chat_id,
gboolean chatroom)
{
static GList *
log_store_empathy_get_dates (EmpathyLogStore *self,
- EmpathyAccount *account,
+ TpAccount *account,
const gchar *chat_id,
gboolean chatroom)
{
static gchar *
log_store_empathy_get_filename_for_date (EmpathyLogStore *self,
- EmpathyAccount *account,
+ TpAccount *account,
const gchar *chat_id,
gboolean chatroom,
const gchar *date)
else
account_name = strv[len-3];
- accounts = empathy_account_manager_dup_accounts (priv->account_manager);
+ /* FIXME: This assumes the account manager is prepared, but the
+ * synchronous API forces this. See bug #599189. */
+ accounts = tp_account_manager_get_valid_accounts (priv->account_manager);
for (l = accounts; l != NULL; l = g_list_next (l))
{
- EmpathyAccount *account = EMPATHY_ACCOUNT (l->data);
+ TpAccount *account = TP_ACCOUNT (l->data);
gchar *name;
+
name = log_store_account_to_dirname (account);
if (!tp_strdiff (name, account_name))
{
hit->account = account;
g_object_ref (account);
}
- g_object_unref (account);
+ g_free (name);
}
g_list_free (accounts);
static GList *
log_store_empathy_get_messages_for_file (EmpathyLogStore *self,
+ TpAccount *account,
const gchar *filename)
{
GList *messages = NULL;
xmlDocPtr doc;
xmlNodePtr log_node;
xmlNodePtr node;
- EmpathyLogSearchHit *hit;
- EmpathyAccount *account;
g_return_val_if_fail (EMPATHY_IS_LOG_STORE (self), NULL);
g_return_val_if_fail (filename != NULL, NULL);
return NULL;
}
- /* Get the account from the filename */
- hit = log_store_empathy_search_hit_new (self, filename);
-
- if (hit->account != NULL)
- account = g_object_ref (hit->account);
-
- empathy_log_manager_search_hit_free (hit);
-
- if (hit->account == NULL)
- return NULL;
-
/* Create parser. */
ctxt = xmlNewParserCtxt ();
{
EmpathyMessage *message;
EmpathyContact *sender;
- gchar *time;
+ gchar *time_;
time_t t;
gchar *sender_id;
gchar *sender_name;
guint cm_id;
TpChannelTextMessageType msg_type = TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL;
- if (strcmp (node->name, "message") != 0)
+ if (strcmp ((const gchar *) node->name, "message") != 0)
continue;
- body = xmlNodeGetContent (node);
- time = xmlGetProp (node, "time");
- sender_id = xmlGetProp (node, "id");
- sender_name = xmlGetProp (node, "name");
- sender_avatar_token = xmlGetProp (node, "token");
- is_user_str = xmlGetProp (node, "isuser");
- msg_type_str = xmlGetProp (node, "type");
- cm_id_str = xmlGetProp (node, "cm_id");
+ body = (gchar *) xmlNodeGetContent (node);
+ time_ = (gchar *) xmlGetProp (node, (const xmlChar *) "time");
+ sender_id = (gchar *) xmlGetProp (node, (const xmlChar *) "id");
+ sender_name = (gchar *) xmlGetProp (node, (const xmlChar *) "name");
+ sender_avatar_token = (gchar *) xmlGetProp (node,
+ (const xmlChar *) "token");
+ is_user_str = (gchar *) xmlGetProp (node, (const xmlChar *) "isuser");
+ msg_type_str = (gchar *) xmlGetProp (node, (const xmlChar *) "type");
+ cm_id_str = (gchar *) xmlGetProp (node, (const xmlChar *) "cm_id");
if (is_user_str)
is_user = strcmp (is_user_str, "true") == 0;
if (cm_id_str)
cm_id = atoi (cm_id_str);
- t = empathy_time_parse (time);
+ t = empathy_time_parse (time_);
sender = empathy_contact_new_for_log (account, sender_id, sender_name,
is_user);
messages = g_list_append (messages, message);
g_object_unref (sender);
- xmlFree (time);
+ xmlFree (time_);
xmlFree (sender_id);
xmlFree (sender_name);
xmlFree (body);
contents = g_mapped_file_get_contents (file);
contents_casefold = g_utf8_casefold (contents, length);
- g_mapped_file_free (file);
+ g_mapped_file_unref (file);
if (strstr (contents_casefold, text_casefold))
{
static GList *
log_store_empathy_get_messages_for_date (EmpathyLogStore *self,
- EmpathyAccount *account,
+ TpAccount *account,
const gchar *chat_id,
gboolean chatroom,
const gchar *date)
g_return_val_if_fail (EMPATHY_IS_LOG_STORE (self), NULL);
g_return_val_if_fail (chat_id != NULL, NULL);
+ g_return_val_if_fail (account != NULL, NULL);
filename = log_store_empathy_get_filename_for_date (self, account,
chat_id, chatroom, date);
- messages = log_store_empathy_get_messages_for_file (self, filename);
+ messages = log_store_empathy_get_messages_for_file (self, account,
+ filename);
g_free (filename);
return messages;
static GList *
log_store_empathy_get_chats (EmpathyLogStore *self,
- EmpathyAccount *account)
+ TpAccount *account)
{
gchar *dir;
GList *hits;
static GList *
log_store_empathy_get_filtered_messages (EmpathyLogStore *self,
- EmpathyAccount *account,
+ TpAccount *account,
const gchar *chat_id,
gboolean chatroom,
guint num_messages,