annotate libgaim/plugins/log_reader.c @ 15113:4a8c368df4ea

[gaim-migrate @ 17899] Some touchups: * If one of the parallel connection attempts fails immediately (i.e. does not time out) then don't cancel the other one. * Make sure we don't continue on to step 2 of the peer connection process after we kick off the parallel gaim_proxy_connects(). It looks like this would happen most of the time, because the connect_timeout_timer would be added for the verified ip, so it would NOT be added for the client ip, and so we wouldn't hit the "return" call because it happens to be in the same block as the second gaim_timeout_add() call. * Add the connection timeout timer even if the gaim_proxy_connect() to the verified ip returns NULL for some crazy reason. I didn't actually test any of this. I should probably do that when I get home. committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Wed, 06 Dec 2006 01:29:59 +0000
parents d24de6319f87
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1 #ifdef HAVE_CONFIG_H
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2 # include <config.h>
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
3 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
4
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
5 #include <stdio.h>
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
6
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
7 #ifndef GAIM_PLUGINS
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
8 # define GAIM_PLUGINS
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
9 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
10
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
11 #include "internal.h"
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
12
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
13 #include "debug.h"
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
14 #include "log.h"
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
15 #include "plugin.h"
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
16 #include "pluginpref.h"
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
17 #include "prefs.h"
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
18 #include "stringref.h"
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
19 #include "util.h"
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
20 #include "version.h"
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
21 #include "xmlnode.h"
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
22
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
23 /* This must be the last Gaim header included. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
24 #ifdef _WIN32
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
25 #include "win32dep.h"
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
26 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
27
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
28 /* Where is the Windows partition mounted? */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
29 #ifndef GAIM_LOG_READER_WINDOWS_MOUNT_POINT
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
30 #define GAIM_LOG_READER_WINDOWS_MOUNT_POINT "/mnt/windows"
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
31 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
32
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
33 enum name_guesses {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
34 NAME_GUESS_UNKNOWN,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
35 NAME_GUESS_ME,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
36 NAME_GUESS_THEM
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
37 };
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
38
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
39
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
40 /*****************************************************************************
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
41 * Adium Logger *
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
42 *****************************************************************************/
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
43
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
44 /* The adium logger doesn't write logs, only reads them. This is to include
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
45 * Adium logs in the log viewer transparently.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
46 */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
47
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
48 static GaimLogLogger *adium_logger;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
49
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
50 enum adium_log_type {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
51 ADIUM_HTML,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
52 ADIUM_TEXT,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
53 };
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
54
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
55 struct adium_logger_data {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
56 char *path;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
57 enum adium_log_type type;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
58 };
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
59
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
60 static GList *adium_logger_list(GaimLogType type, const char *sn, GaimAccount *account)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
61 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
62 GList *list = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
63 const char *logdir;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
64 GaimPlugin *plugin;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
65 GaimPluginProtocolInfo *prpl_info;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
66 char *prpl_name;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
67 char *temp;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
68 char *path;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
69 GDir *dir;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
70
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
71 g_return_val_if_fail(sn != NULL, list);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
72 g_return_val_if_fail(account != NULL, list);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
73
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
74 logdir = gaim_prefs_get_string("/plugins/core/log_reader/adium/log_directory");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
75
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
76 /* By clearing the log directory path, this logger can be (effectively) disabled. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
77 if (!*logdir)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
78 return list;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
79
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
80 plugin = gaim_find_prpl(gaim_account_get_protocol_id(account));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
81 if (!plugin)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
82 return NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
83
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
84 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(plugin);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
85 if (!prpl_info->list_icon)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
86 return NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
87
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
88 prpl_name = g_ascii_strup(prpl_info->list_icon(account, NULL), -1);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
89
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
90 temp = g_strdup_printf("%s.%s", prpl_name, account->username);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
91 path = g_build_filename(logdir, temp, sn, NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
92 g_free(temp);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
93
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
94 dir = g_dir_open(path, 0, NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
95 if (dir) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
96 const gchar *file;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
97
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
98 while ((file = g_dir_read_name(dir))) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
99 if (!gaim_str_has_prefix(file, sn))
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
100 continue;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
101 if (gaim_str_has_suffix(file, ".html") || gaim_str_has_suffix(file, ".AdiumHTMLLog")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
102 struct tm tm;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
103 const char *date = file;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
104
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
105 date += strlen(sn) + 2;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
106 if (sscanf(date, "%u|%u|%u",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
107 &tm.tm_year, &tm.tm_mon, &tm.tm_mday) != 3) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
108
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
109 gaim_debug(GAIM_DEBUG_ERROR, "Adium log parse",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
110 "Filename timestamp parsing error\n");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
111 } else {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
112 char *filename = g_build_filename(path, file, NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
113 FILE *handle = g_fopen(filename, "rb");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
114 char *contents;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
115 char *contents2;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
116 struct adium_logger_data *data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
117 GaimLog *log;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
118
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
119 if (!handle) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
120 g_free(filename);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
121 continue;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
122 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
123
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
124 /* XXX: This is really inflexible. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
125 contents = g_malloc(57);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
126 fread(contents, 56, 1, handle);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
127 fclose(handle);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
128 contents[56] = '\0';
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
129
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
130 /* XXX: This is fairly inflexible. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
131 contents2 = contents;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
132 while (*contents2 && *contents2 != '>')
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
133 contents2++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
134 if (*contents2)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
135 contents2++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
136 while (*contents2 && *contents2 != '>')
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
137 contents2++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
138 if (*contents2)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
139 contents2++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
140
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
141 if (sscanf(contents2, "%u.%u.%u",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
142 &tm.tm_hour, &tm.tm_min, &tm.tm_sec) != 3) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
143
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
144 gaim_debug(GAIM_DEBUG_ERROR, "Adium log parse",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
145 "Contents timestamp parsing error\n");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
146 g_free(contents);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
147 g_free(filename);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
148 continue;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
149 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
150 g_free(contents);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
151
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
152 data = g_new0(struct adium_logger_data, 1);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
153 data->path = filename;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
154 data->type = ADIUM_HTML;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
155
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
156 tm.tm_year -= 1900;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
157 tm.tm_mon -= 1;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
158
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
159 /* XXX: Look into this later... Should we pass in a struct tm? */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
160 log = gaim_log_new(GAIM_LOG_IM, sn, account, NULL, mktime(&tm), NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
161 log->logger = adium_logger;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
162 log->logger_data = data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
163
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
164 list = g_list_append(list, log);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
165 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
166 } else if (gaim_str_has_suffix(file, ".adiumLog")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
167 struct tm tm;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
168 const char *date = file;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
169
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
170 date += strlen(sn) + 2;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
171 if (sscanf(date, "%u|%u|%u",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
172 &tm.tm_year, &tm.tm_mon, &tm.tm_mday) != 3) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
173
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
174 gaim_debug(GAIM_DEBUG_ERROR, "Adium log parse",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
175 "Filename timestamp parsing error\n");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
176 } else {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
177 char *filename = g_build_filename(path, file, NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
178 FILE *handle = g_fopen(filename, "rb");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
179 char *contents;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
180 char *contents2;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
181 struct adium_logger_data *data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
182 GaimLog *log;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
183
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
184 if (!handle) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
185 g_free(filename);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
186 continue;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
187 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
188
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
189 /* XXX: This is really inflexible. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
190 contents = g_malloc(14);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
191 fread(contents, 13, 1, handle);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
192 fclose(handle);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
193 contents[13] = '\0';
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
194
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
195 contents2 = contents;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
196 while (*contents2 && *contents2 != '(')
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
197 contents2++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
198 if (*contents2)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
199 contents2++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
200
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
201 if (sscanf(contents2, "%u.%u.%u",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
202 &tm.tm_hour, &tm.tm_min, &tm.tm_sec) != 3) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
203
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
204 gaim_debug(GAIM_DEBUG_ERROR, "Adium log parse",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
205 "Contents timestamp parsing error\n");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
206 g_free(contents);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
207 g_free(filename);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
208 continue;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
209 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
210
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
211 g_free(contents);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
212
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
213 tm.tm_year -= 1900;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
214 tm.tm_mon -= 1;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
215
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
216 data = g_new0(struct adium_logger_data, 1);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
217 data->path = filename;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
218 data->type = ADIUM_TEXT;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
219
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
220 /* XXX: Look into this later... Should we pass in a struct tm? */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
221 log = gaim_log_new(GAIM_LOG_IM, sn, account, NULL, mktime(&tm), NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
222 log->logger = adium_logger;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
223 log->logger_data = data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
224
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
225 list = g_list_append(list, log);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
226 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
227 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
228 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
229 g_dir_close(dir);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
230 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
231
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
232 g_free(prpl_name);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
233 g_free(path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
234
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
235 return list;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
236 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
237
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
238 static char *adium_logger_read (GaimLog *log, GaimLogReadFlags *flags)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
239 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
240 struct adium_logger_data *data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
241 GError *error = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
242 gchar *read = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
243 gsize length;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
244
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
245 g_return_val_if_fail(log != NULL, g_strdup(""));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
246
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
247 data = log->logger_data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
248
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
249 g_return_val_if_fail(data->path != NULL, g_strdup(""));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
250
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
251 gaim_debug(GAIM_DEBUG_INFO, "Adium log read",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
252 "Reading %s\n", data->path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
253 if (!g_file_get_contents(data->path, &read, &length, &error)) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
254 gaim_debug(GAIM_DEBUG_ERROR, "Adium log read",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
255 "Error reading log\n");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
256 if (error)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
257 g_error_free(error);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
258 return g_strdup("");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
259 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
260
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
261 if (data->type != ADIUM_HTML) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
262 char *escaped = g_markup_escape_text(read, -1);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
263 g_free(read);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
264 read = escaped;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
265 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
266
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
267 #ifdef WIN32
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
268 /* This problem only seems to show up on Windows.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
269 * The BOM is displaying as a space at the beginning of the log.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
270 */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
271 if (gaim_str_has_prefix(read, "\xef\xbb\xbf"))
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
272 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
273 /* FIXME: This feels so wrong... */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
274 char *temp = g_strdup(&(read[3]));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
275 g_free(read);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
276 read = temp;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
277 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
278 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
279
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
280 /* TODO: Apply formatting.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
281 * Replace the above hack with something better, since we'll
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
282 * be looping over the entire log file contents anyway.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
283 */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
284
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
285 return read;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
286 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
287
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
288 static int adium_logger_size (GaimLog *log)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
289 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
290 struct adium_logger_data *data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
291 char *text;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
292 size_t size;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
293
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
294 g_return_val_if_fail(log != NULL, 0);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
295
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
296 data = log->logger_data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
297
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
298 if (gaim_prefs_get_bool("/plugins/core/log_reader/fast_sizes")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
299 struct stat st;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
300
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
301 if (!data->path || stat(data->path, &st))
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
302 st.st_size = 0;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
303
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
304 return st.st_size;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
305 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
306
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
307 text = adium_logger_read(log, NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
308 size = strlen(text);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
309 g_free(text);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
310
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
311 return size;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
312 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
313
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
314 static void adium_logger_finalize(GaimLog *log)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
315 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
316 struct adium_logger_data *data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
317
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
318 g_return_if_fail(log != NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
319
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
320 data = log->logger_data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
321
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
322 g_free(data->path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
323 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
324
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
325
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
326 /*****************************************************************************
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
327 * Fire Logger *
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
328 *****************************************************************************/
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
329
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
330 #if 0
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
331 /* The fire logger doesn't write logs, only reads them. This is to include
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
332 * Fire logs in the log viewer transparently.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
333 */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
334
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
335 static GaimLogLogger *fire_logger;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
336
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
337 struct fire_logger_data {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
338 };
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
339
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
340 static GList *fire_logger_list(GaimLogType type, const char *sn, GaimAccount *account)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
341 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
342 /* TODO: Do something here. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
343 return NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
344 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
345
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
346 static char * fire_logger_read (GaimLog *log, GaimLogReadFlags *flags)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
347 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
348 struct fire_logger_data *data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
349
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
350 g_return_val_if_fail(log != NULL, g_strdup(""));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
351
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
352 data = log->logger_data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
353
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
354 /* TODO: Do something here. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
355 return g_strdup("");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
356 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
357
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
358 static int fire_logger_size (GaimLog *log)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
359 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
360 g_return_val_if_fail(log != NULL, 0);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
361
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
362 if (gaim_prefs_get_bool("/plugins/core/log_reader/fast_sizes"))
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
363 return 0;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
364
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
365 /* TODO: Do something here. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
366 return 0;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
367 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
368
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
369 static void fire_logger_finalize(GaimLog *log)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
370 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
371 g_return_if_fail(log != NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
372
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
373 /* TODO: Do something here. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
374 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
375 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
376
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
377
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
378 /*****************************************************************************
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
379 * Messenger Plus! Logger *
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
380 *****************************************************************************/
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
381
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
382 #if 0
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
383 /* The messenger_plus logger doesn't write logs, only reads them. This is to include
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
384 * Messenger Plus! logs in the log viewer transparently.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
385 */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
386
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
387 static GaimLogLogger *messenger_plus_logger;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
388
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
389 struct messenger_plus_logger_data {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
390 };
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
391
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
392 static GList *messenger_plus_logger_list(GaimLogType type, const char *sn, GaimAccount *account)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
393 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
394 /* TODO: Do something here. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
395 return NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
396 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
397
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
398 static char * messenger_plus_logger_read (GaimLog *log, GaimLogReadFlags *flags)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
399 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
400 struct messenger_plus_logger_data *data = log->logger_data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
401
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
402 g_return_val_if_fail(log != NULL, g_strdup(""));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
403
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
404 data = log->logger_data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
405
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
406 /* TODO: Do something here. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
407 return g_strdup("");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
408 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
409
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
410 static int messenger_plus_logger_size (GaimLog *log)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
411 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
412 g_return_val_if_fail(log != NULL, 0);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
413
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
414 if (gaim_prefs_get_bool("/plugins/core/log_reader/fast_sizes"))
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
415 return 0;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
416
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
417 /* TODO: Do something here. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
418 return 0;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
419 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
420
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
421 static void messenger_plus_logger_finalize(GaimLog *log)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
422 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
423 g_return_if_fail(log != NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
424
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
425 /* TODO: Do something here. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
426 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
427 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
428
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
429
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
430 /*****************************************************************************
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
431 * MSN Messenger Logger *
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
432 *****************************************************************************/
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
433
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
434 /* The msn logger doesn't write logs, only reads them. This is to include
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
435 * MSN Messenger message histories in the log viewer transparently.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
436 */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
437
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
438 static GaimLogLogger *msn_logger;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
439
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
440 struct msn_logger_data {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
441 xmlnode *root;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
442 xmlnode *message;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
443 const char *session_id;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
444 int last_log;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
445 GString *text;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
446 };
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
447
14999
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
448 /* This function is really confusing. It makes baby rlaager cry...
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
449 In other news: "You lost a lot of blood but we found most of it."
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
450 */
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
451 static time_t msn_logger_parse_timestamp(xmlnode *message, struct tm **tm_out)
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
452 {
14999
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
453 const char *datetime;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
454 static struct tm tm2;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
455 time_t stamp;
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
456 const char *date;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
457 const char *time;
14999
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
458 int month;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
459 int day;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
460 int year;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
461 int hour;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
462 int min;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
463 int sec;
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
464 char am_pm;
14999
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
465 char *str;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
466 static struct tm tm;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
467 time_t t;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
468 time_t diff;
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
469
14999
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
470 #ifndef G_DISABLE_CHECKS
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
471 if (message != NULL)
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
472 {
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
473 *tm_out = NULL;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
474
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
475 /* Trigger the usual warning. */
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
476 g_return_val_if_fail(message != NULL, (time_t)0);
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
477 }
14999
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
478 #endif
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
479
14999
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
480 datetime = xmlnode_get_attrib(message, "DateTime");
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
481 if (!(datetime && *datetime))
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
482 {
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
483 gaim_debug_error("MSN log timestamp parse",
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
484 "Attribute missing: %s\n", "DateTime");
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
485 return (time_t)0;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
486 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
487
14999
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
488 stamp = gaim_str_to_time(datetime, TRUE, &tm2, NULL, NULL);
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
489 #ifdef HAVE_TM_GMTOFF
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
490 tm2.tm_gmtoff = 0;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
491 #endif
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
492 #ifdef HAVE_STRUCT_TM_TM_ZONE
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
493 /* This is used in the place of a timezone abbreviation if the
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
494 * offset is way off. The user should never really see it, but
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
495 * it's here just in case. The parens are to make it clear it's
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
496 * not a real timezone. */
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
497 tm2.tm_zone = _("(UTC)");
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
498 #endif
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
499
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
500
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
501 date = xmlnode_get_attrib(message, "Date");
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
502 if (!(date && *date))
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
503 {
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
504 gaim_debug_error("MSN log timestamp parse",
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
505 "Attribute missing: %s\n", "Date");
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
506 *tm_out = &tm2;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
507 return stamp;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
508 }
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
509
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
510 time = xmlnode_get_attrib(message, "Time");
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
511 if (!(time && *time))
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
512 {
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
513 gaim_debug_error("MSN log timestamp parse",
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
514 "Attribute missing: %s\n", "Time");
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
515 *tm_out = &tm2;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
516 return stamp;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
517 }
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
518
14999
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
519 if (sscanf(date, "%u/%u/%u", &month, &day, &year) != 3)
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
520 {
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
521 gaim_debug_error("MSN log timestamp parse",
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
522 "%s parsing error\n", "Date");
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
523 *tm_out = &tm2;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
524 return stamp;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
525 }
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
526 else
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
527 {
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
528 if (month > 12)
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
529 {
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
530 int tmp = day;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
531 day = month;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
532 month = tmp;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
533 }
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
534 }
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
535
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
536 if (sscanf(time, "%u:%u:%u %c", &hour, &min, &sec, &am_pm) != 4)
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
537 {
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
538 gaim_debug_error("MSN log timestamp parse",
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
539 "%s parsing error\n", "Time");
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
540 *tm_out = &tm2;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
541 return stamp;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
542 }
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
543
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
544 if (am_pm == 'P') {
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
545 hour += 12;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
546 } else if (hour == 12) {
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
547 /* 12 AM = 00 hr */
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
548 hour = 0;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
549 }
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
550
14999
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
551 str = g_strdup_printf("%04i-%02i-%02iT%02i:%02i:%02i", year, month, day, hour, min, sec);
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
552 t = gaim_str_to_time(str, TRUE, &tm, NULL, NULL);
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
553
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
554
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
555 if (stamp > t)
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
556 diff = stamp - t;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
557 else
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
558 diff = t - stamp;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
559
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
560 if (diff > (14 * 60 * 60))
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
561 {
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
562 if (day <= 12)
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
563 {
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
564 /* Swap day & month variables, to see if it's a non-US date. */
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
565 g_free(str);
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
566 str = g_strdup_printf("%04i-%02i-%02iT%02i:%02i:%02i", year, month, day, hour, min, sec);
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
567 t = gaim_str_to_time(str, TRUE, &tm, NULL, NULL);
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
568
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
569 if (stamp > t)
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
570 diff = stamp - t;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
571 else
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
572 diff = t - stamp;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
573
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
574 if (diff > (14 * 60 * 60))
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
575 {
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
576 /* We got a time, it's not impossible, but
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
577 * the diff is too large. Display the UTC time. */
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
578 g_free(str);
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
579 *tm_out = &tm2;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
580 return stamp;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
581 }
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
582 else
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
583 {
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
584 /* Legal time */
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
585 /* Fall out */
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
586 }
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
587 }
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
588 else
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
589 {
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
590 /* We got a time, it's not impossible, but
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
591 * the diff is too large. Display the UTC time. */
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
592 g_free(str);
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
593 *tm_out = &tm2;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
594 return stamp;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
595 }
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
596 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
597
14999
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
598 /* If we got here, the time is legal with a reasonable offset.
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
599 * Let's find out if it's in our TZ. */
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
600 if (gaim_str_to_time(str, FALSE, &tm, NULL, NULL) == stamp)
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
601 {
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
602 g_free(str);
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
603 *tm_out = &tm;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
604 return stamp;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
605 }
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
606 g_free(str);
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
607
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
608 /* The time isn't in our TZ, but it's reasonable. */
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
609 #ifdef HAVE_STRUCT_TM_TM_ZONE
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
610 tm.tm_zone = " ";
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
611 #endif
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
612 *tm_out = &tm;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
613 return stamp;
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
614 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
615
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
616 static GList *msn_logger_list(GaimLogType type, const char *sn, GaimAccount *account)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
617 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
618 GList *list = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
619 char *username;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
620 GaimBuddy *buddy;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
621 const char *logdir;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
622 const char *savedfilename = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
623 char *logfile;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
624 char *path;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
625 GError *error = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
626 gchar *contents = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
627 gsize length;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
628 xmlnode *root;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
629 xmlnode *message;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
630 const char *old_session_id = "";
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
631 struct msn_logger_data *data = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
632
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
633 g_return_val_if_fail(sn != NULL, list);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
634 g_return_val_if_fail(account != NULL, list);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
635
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
636 if (strcmp(account->protocol_id, "prpl-msn"))
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
637 return list;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
638
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
639 logdir = gaim_prefs_get_string("/plugins/core/log_reader/msn/log_directory");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
640
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
641 /* By clearing the log directory path, this logger can be (effectively) disabled. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
642 if (!*logdir)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
643 return list;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
644
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
645 buddy = gaim_find_buddy(account, sn);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
646
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
647 if ((username = g_strdup(gaim_account_get_string(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
648 account, "log_reader_msn_log_folder", NULL)))) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
649 /* As a special case, we allow the null string to kill the parsing
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
650 * straight away. This would allow the user to deal with the case
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
651 * when two account have the same username at different domains and
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
652 * only one has logs stored.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
653 */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
654 if (!*username) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
655 g_free(username);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
656 return list;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
657 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
658 } else {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
659 username = g_strdup(gaim_normalize(account, account->username));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
660 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
661
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
662 if (buddy)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
663 savedfilename = gaim_blist_node_get_string(&buddy->node, "log_reader_msn_log_filename");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
664
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
665 if (savedfilename) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
666 /* As a special case, we allow the null string to kill the parsing
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
667 * straight away. This would allow the user to deal with the case
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
668 * when two buddies have the same username at different domains and
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
669 * only one has logs stored.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
670 */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
671 if (!*savedfilename) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
672 g_free(username);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
673 return list;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
674 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
675
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
676 logfile = g_strdup(savedfilename);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
677 } else {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
678 logfile = g_strdup_printf("%s.xml", gaim_normalize(account, sn));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
679 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
680
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
681 path = g_build_filename(logdir, username, "History", logfile, NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
682
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
683 if (!g_file_test(path, G_FILE_TEST_EXISTS)) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
684 gboolean found = FALSE;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
685 char *at_sign;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
686 GDir *dir;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
687
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
688 g_free(path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
689
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
690 if (savedfilename) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
691 /* We had a saved filename, but it doesn't exist.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
692 * Returning now is the right course of action because we don't
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
693 * want to detect another file incorrectly.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
694 */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
695 g_free(username);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
696 g_free(logfile);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
697 return list;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
698 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
699
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
700 /* Perhaps we're using a new version of MSN with the weird numbered folders.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
701 * I don't know how the numbers are calculated, so I'm going to attempt to
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
702 * find logs by pattern matching...
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
703 */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
704
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
705 at_sign = g_strrstr(username, "@");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
706 if (at_sign)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
707 *at_sign = '\0';
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
708
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
709 dir = g_dir_open(logdir, 0, NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
710 if (dir) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
711 const gchar *name;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
712
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
713 while ((name = g_dir_read_name(dir))) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
714 const char *c = name;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
715
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
716 if (!gaim_str_has_prefix(c, username))
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
717 continue;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
718
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
719 c += strlen(username);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
720 while (*c) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
721 if (!g_ascii_isdigit(*c))
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
722 break;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
723
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
724 c++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
725 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
726
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
727 path = g_build_filename(logdir, name, NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
728 /* The !c makes sure we got to the end of the while loop above. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
729 if (!*c && g_file_test(path, G_FILE_TEST_IS_DIR)) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
730 char *history_path = g_build_filename(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
731 path, "History", NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
732 if (g_file_test(history_path, G_FILE_TEST_IS_DIR)) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
733 gaim_account_set_string(account,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
734 "log_reader_msn_log_folder", name);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
735 g_free(path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
736 path = history_path;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
737 found = TRUE;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
738 break;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
739 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
740 g_free(path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
741 g_free(history_path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
742 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
743 else
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
744 g_free(path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
745 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
746 g_dir_close(dir);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
747 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
748 g_free(username);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
749
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
750 if (!found) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
751 g_free(logfile);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
752 return list;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
753 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
754
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
755 /* If we've reached this point, we've found a History folder. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
756
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
757 username = g_strdup(gaim_normalize(account, sn));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
758 at_sign = g_strrstr(username, "@");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
759 if (at_sign)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
760 *at_sign = '\0';
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
761
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
762 found = FALSE;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
763 dir = g_dir_open(path, 0, NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
764 if (dir) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
765 const gchar *name;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
766
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
767 while ((name = g_dir_read_name(dir))) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
768 const char *c = name;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
769
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
770 if (!gaim_str_has_prefix(c, username))
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
771 continue;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
772
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
773 c += strlen(username);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
774 while (*c) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
775 if (!g_ascii_isdigit(*c))
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
776 break;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
777
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
778 c++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
779 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
780
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
781 path = g_build_filename(path, name, NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
782 if (!strcmp(c, ".xml") &&
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
783 g_file_test(path, G_FILE_TEST_EXISTS)) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
784 found = TRUE;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
785 g_free(logfile);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
786 logfile = g_strdup(name);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
787 break;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
788 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
789 else
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
790 g_free(path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
791 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
792 g_dir_close(dir);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
793 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
794 g_free(username);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
795
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
796 if (!found) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
797 g_free(logfile);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
798 return list;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
799 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
800 } else {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
801 g_free(username);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
802 g_free(logfile);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
803 logfile = NULL; /* No sense saving the obvious buddy@domain.com. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
804 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
805
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
806 gaim_debug(GAIM_DEBUG_INFO, "MSN log read",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
807 "Reading %s\n", path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
808 if (!g_file_get_contents(path, &contents, &length, &error)) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
809 g_free(path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
810 gaim_debug(GAIM_DEBUG_ERROR, "MSN log read",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
811 "Error reading log\n");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
812 if (error)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
813 g_error_free(error);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
814 return list;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
815 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
816 g_free(path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
817
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
818 /* Reading the file was successful...
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
819 * Save its name if it involves the crazy numbers. The idea here is that you could
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
820 * then tweak the blist.xml file by hand if need be. This would be the case if two
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
821 * buddies have the same username at different domains. One set of logs would get
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
822 * detected for both buddies.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
823 */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
824 if (buddy && logfile) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
825 gaim_blist_node_set_string(&buddy->node, "log_reader_msn_log_filename", logfile);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
826 g_free(logfile);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
827 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
828
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
829 root = xmlnode_from_str(contents, length);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
830 g_free(contents);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
831 if (!root)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
832 return list;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
833
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
834 for (message = xmlnode_get_child(root, "Message"); message;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
835 message = xmlnode_get_next_twin(message)) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
836 const char *session_id;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
837
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
838 session_id = xmlnode_get_attrib(message, "SessionID");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
839 if (!session_id) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
840 gaim_debug(GAIM_DEBUG_ERROR, "MSN log parse",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
841 "Error parsing message: %s\n", "SessionID missing");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
842 continue;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
843 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
844
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
845 if (strcmp(session_id, old_session_id)) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
846 /*
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
847 * The session ID differs from the last message.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
848 * Thus, this is the start of a new conversation.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
849 */
14999
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
850 struct tm *tm;
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
851 time_t stamp;
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
852 GaimLog *log;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
853
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
854 data = g_new0(struct msn_logger_data, 1);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
855 data->root = root;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
856 data->message = message;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
857 data->session_id = session_id;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
858 data->text = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
859 data->last_log = FALSE;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
860
14999
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
861 stamp = msn_logger_parse_timestamp(message, &tm);
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
862
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
863 log = gaim_log_new(GAIM_LOG_IM, sn, account, NULL, stamp, tm);
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
864 log->logger = msn_logger;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
865 log->logger_data = data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
866
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
867 list = g_list_append(list, log);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
868 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
869 old_session_id = session_id;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
870 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
871
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
872 if (data)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
873 data->last_log = TRUE;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
874
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
875 return list;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
876 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
877
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
878 static char * msn_logger_read (GaimLog *log, GaimLogReadFlags *flags)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
879 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
880 struct msn_logger_data *data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
881 GString *text = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
882 xmlnode *message;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
883
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
884 g_return_val_if_fail(log != NULL, g_strdup(""));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
885
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
886 data = log->logger_data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
887
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
888 if (data->text) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
889 /* The GTK code which displays the logs g_free()s whatever is
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
890 * returned from this function. Thus, we can't reuse the str
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
891 * part of the GString. The only solution is to free it and
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
892 * start over.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
893 */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
894 g_string_free(data->text, FALSE);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
895 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
896
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
897 text = g_string_new("");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
898
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
899 if (!data->root || !data->message || !data->session_id) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
900 /* Something isn't allocated correctly. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
901 gaim_debug(GAIM_DEBUG_ERROR, "MSN log parse",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
902 "Error parsing message: %s\n", "Internal variables inconsistent");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
903 data->text = text;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
904
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
905 return text->str;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
906 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
907
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
908 for (message = data->message; message;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
909 message = xmlnode_get_next_twin(message)) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
910
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
911 const char *new_session_id;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
912 xmlnode *text_node;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
913 const char *from_name = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
914 const char *to_name = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
915 xmlnode *from;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
916 xmlnode *to;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
917 enum name_guesses name_guessed = NAME_GUESS_UNKNOWN;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
918 const char *their_name;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
919 time_t time_unix;
14999
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
920 struct tm *tm;
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
921 char *timestamp;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
922 char *tmp;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
923 const char *style;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
924
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
925 new_session_id = xmlnode_get_attrib(message, "SessionID");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
926
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
927 /* If this triggers, something is wrong with the XML. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
928 if (!new_session_id) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
929 gaim_debug(GAIM_DEBUG_ERROR, "MSN log parse",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
930 "Error parsing message: %s\n", "New SessionID missing");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
931 break;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
932 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
933
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
934 if (strcmp(new_session_id, data->session_id)) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
935 /* The session ID differs from the first message.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
936 * Thus, this is the start of a new conversation.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
937 */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
938 break;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
939 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
940
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
941 text_node = xmlnode_get_child(message, "Text");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
942 if (!text_node)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
943 continue;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
944
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
945 from = xmlnode_get_child(message, "From");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
946 if (from) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
947 xmlnode *user = xmlnode_get_child(from, "User");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
948
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
949 if (user) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
950 from_name = xmlnode_get_attrib(user, "FriendlyName");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
951
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
952 /* This saves a check later. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
953 if (!*from_name)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
954 from_name = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
955 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
956 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
957
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
958 to = xmlnode_get_child(message, "To");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
959 if (to) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
960 xmlnode *user = xmlnode_get_child(to, "User");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
961 if (user) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
962 to_name = xmlnode_get_attrib(user, "FriendlyName");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
963
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
964 /* This saves a check later. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
965 if (!*to_name)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
966 to_name = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
967 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
968 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
969
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
970 their_name = from_name;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
971 if (from_name && gaim_prefs_get_bool("/plugins/core/log_reader/use_name_heuristics")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
972 const char *friendly_name = gaim_connection_get_display_name(log->account->gc);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
973
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
974 if (friendly_name != NULL) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
975 int friendly_name_length = strlen(friendly_name);
15009
c6fd017c4121 [gaim-migrate @ 17790]
Richard Laager <rlaager@wiktel.com>
parents: 14999
diff changeset
976 const char *alias;
c6fd017c4121 [gaim-migrate @ 17790]
Richard Laager <rlaager@wiktel.com>
parents: 14999
diff changeset
977 int alias_length;
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
978 GaimBuddy *buddy = gaim_find_buddy(log->account, log->name);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
979 gboolean from_name_matches;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
980 gboolean to_name_matches;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
981
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
982 if (buddy && buddy->alias)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
983 their_name = buddy->alias;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
984
15009
c6fd017c4121 [gaim-migrate @ 17790]
Richard Laager <rlaager@wiktel.com>
parents: 14999
diff changeset
985 if (log->account->alias)
c6fd017c4121 [gaim-migrate @ 17790]
Richard Laager <rlaager@wiktel.com>
parents: 14999
diff changeset
986 {
c6fd017c4121 [gaim-migrate @ 17790]
Richard Laager <rlaager@wiktel.com>
parents: 14999
diff changeset
987 alias = log->account->alias;
c6fd017c4121 [gaim-migrate @ 17790]
Richard Laager <rlaager@wiktel.com>
parents: 14999
diff changeset
988 alias_length = strlen(alias);
c6fd017c4121 [gaim-migrate @ 17790]
Richard Laager <rlaager@wiktel.com>
parents: 14999
diff changeset
989 }
c6fd017c4121 [gaim-migrate @ 17790]
Richard Laager <rlaager@wiktel.com>
parents: 14999
diff changeset
990 else
c6fd017c4121 [gaim-migrate @ 17790]
Richard Laager <rlaager@wiktel.com>
parents: 14999
diff changeset
991 {
c6fd017c4121 [gaim-migrate @ 17790]
Richard Laager <rlaager@wiktel.com>
parents: 14999
diff changeset
992 alias = "";
c6fd017c4121 [gaim-migrate @ 17790]
Richard Laager <rlaager@wiktel.com>
parents: 14999
diff changeset
993 alias_length = 0;
c6fd017c4121 [gaim-migrate @ 17790]
Richard Laager <rlaager@wiktel.com>
parents: 14999
diff changeset
994 }
c6fd017c4121 [gaim-migrate @ 17790]
Richard Laager <rlaager@wiktel.com>
parents: 14999
diff changeset
995
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
996 /* Try to guess which user is me.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
997 * The first step is to determine if either of the names matches either my
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
998 * friendly name or alias. For this test, "match" is defined as:
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
999 * ^(friendly_name|alias)([^a-zA-Z0-9].*)?$
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1000 */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1001 from_name_matches = (gaim_str_has_prefix(from_name, friendly_name) &&
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1002 !isalnum(*(from_name + friendly_name_length))) ||
15009
c6fd017c4121 [gaim-migrate @ 17790]
Richard Laager <rlaager@wiktel.com>
parents: 14999
diff changeset
1003 (gaim_str_has_prefix(from_name, alias) &&
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1004 !isalnum(*(from_name + alias_length)));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1005
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1006 to_name_matches = to_name != NULL && (
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1007 (gaim_str_has_prefix(to_name, friendly_name) &&
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1008 !isalnum(*(to_name + friendly_name_length))) ||
15009
c6fd017c4121 [gaim-migrate @ 17790]
Richard Laager <rlaager@wiktel.com>
parents: 14999
diff changeset
1009 (gaim_str_has_prefix(to_name, alias) &&
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1010 !isalnum(*(to_name + alias_length))));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1011
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1012 if (from_name_matches) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1013 if (!to_name_matches) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1014 name_guessed = NAME_GUESS_ME;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1015 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1016 } else if (to_name_matches) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1017 name_guessed = NAME_GUESS_THEM;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1018 } else {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1019 if (buddy && buddy->alias) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1020 char *alias = g_strdup(buddy->alias);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1021
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1022 /* "Truncate" the string at the first non-alphanumeric
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1023 * character. The idea is to relax the comparison.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1024 */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1025 char *temp;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1026 for (temp = alias; *temp ; temp++) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1027 if (!isalnum(*temp)) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1028 *temp = '\0';
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1029 break;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1030 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1031 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1032 alias_length = strlen(alias);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1033
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1034 /* Try to guess which user is them.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1035 * The first step is to determine if either of the names
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1036 * matches their alias. For this test, "match" is
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1037 * defined as: ^alias([^a-zA-Z0-9].*)?$
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1038 */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1039 from_name_matches = (gaim_str_has_prefix(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1040 from_name, alias) &&
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1041 !isalnum(*(from_name +
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1042 alias_length)));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1043
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1044 to_name_matches = to_name && (gaim_str_has_prefix(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1045 to_name, alias) &&
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1046 !isalnum(*(to_name +
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1047 alias_length)));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1048
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1049 g_free(alias);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1050
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1051 if (from_name_matches) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1052 if (!to_name_matches) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1053 name_guessed = NAME_GUESS_THEM;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1054 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1055 } else if (to_name_matches) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1056 name_guessed = NAME_GUESS_ME;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1057 } else if (buddy->server_alias) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1058 friendly_name_length =
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1059 strlen(buddy->server_alias);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1060
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1061 /* Try to guess which user is them.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1062 * The first step is to determine if either of
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1063 * the names matches their friendly name. For
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1064 * this test, "match" is defined as:
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1065 * ^friendly_name([^a-zA-Z0-9].*)?$
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1066 */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1067 from_name_matches = (gaim_str_has_prefix(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1068 from_name,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1069 buddy->server_alias) &&
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1070 !isalnum(*(from_name +
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1071 friendly_name_length)));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1072
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1073 to_name_matches = to_name && (
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1074 (gaim_str_has_prefix(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1075 to_name, buddy->server_alias) &&
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1076 !isalnum(*(to_name +
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1077 friendly_name_length))));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1078
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1079 if (from_name_matches) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1080 if (!to_name_matches) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1081 name_guessed = NAME_GUESS_THEM;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1082 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1083 } else if (to_name_matches) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1084 name_guessed = NAME_GUESS_ME;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1085 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1086 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1087 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1088 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1089 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1090 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1091
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1092 if (name_guessed != NAME_GUESS_UNKNOWN) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1093 text = g_string_append(text, "<span style=\"color: #");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1094 if (name_guessed == NAME_GUESS_ME)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1095 text = g_string_append(text, "16569E");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1096 else
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1097 text = g_string_append(text, "A82F2F");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1098 text = g_string_append(text, ";\">");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1099 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1100
14999
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
1101 time_unix = msn_logger_parse_timestamp(message, &tm);
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1102
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1103 timestamp = g_strdup_printf("<font size=\"2\">(%02u:%02u:%02u)</font> ",
14999
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
1104 tm->tm_hour, tm->tm_min, tm->tm_sec);
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1105 text = g_string_append(text, timestamp);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1106 g_free(timestamp);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1107
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1108 if (from_name) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1109 text = g_string_append(text, "<b>");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1110
14936
5025e146a876 [gaim-migrate @ 17708]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14272
diff changeset
1111 if (name_guessed == NAME_GUESS_ME) {
5025e146a876 [gaim-migrate @ 17708]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14272
diff changeset
1112 if (log->account->alias)
5025e146a876 [gaim-migrate @ 17708]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14272
diff changeset
1113 text = g_string_append(text, log->account->alias);
5025e146a876 [gaim-migrate @ 17708]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14272
diff changeset
1114 else
5025e146a876 [gaim-migrate @ 17708]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14272
diff changeset
1115 text = g_string_append(text, log->account->username);
5025e146a876 [gaim-migrate @ 17708]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14272
diff changeset
1116 }
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1117 else if (name_guessed == NAME_GUESS_THEM)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1118 text = g_string_append(text, their_name);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1119 else
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1120 text = g_string_append(text, from_name);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1121
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1122 text = g_string_append(text, ":</b> ");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1123 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1124
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1125 if (name_guessed != NAME_GUESS_UNKNOWN)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1126 text = g_string_append(text, "</span>");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1127
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1128 style = xmlnode_get_attrib(text_node, "Style");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1129
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1130 tmp = xmlnode_get_data(text_node);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1131 if (style && *style) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1132 text = g_string_append(text, "<span style=\"");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1133 text = g_string_append(text, style);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1134 text = g_string_append(text, "\">");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1135 text = g_string_append(text, tmp);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1136 text = g_string_append(text, "</span>\n");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1137 } else {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1138 text = g_string_append(text, tmp);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1139 text = g_string_append(text, "\n");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1140 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1141 g_free(tmp);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1142 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1143
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1144 data->text = text;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1145
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1146 return text->str;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1147 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1148
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1149 static int msn_logger_size (GaimLog *log)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1150 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1151 char *text;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1152 size_t size;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1153
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1154 g_return_val_if_fail(log != NULL, 0);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1155
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1156 if (gaim_prefs_get_bool("/plugins/core/log_reader/fast_sizes"))
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1157 return 0;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1158
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1159 text = msn_logger_read(log, NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1160 size = strlen(text);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1161 g_free(text);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1162
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1163 return size;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1164 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1165
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1166 static void msn_logger_finalize(GaimLog *log)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1167 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1168 struct msn_logger_data *data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1169
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1170 g_return_if_fail(log != NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1171
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1172 data = log->logger_data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1173
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1174 if (data->last_log)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1175 xmlnode_free(data->root);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1176
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1177 if (data->text)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1178 g_string_free(data->text, FALSE);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1179 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1180
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1181
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1182 /*****************************************************************************
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1183 * Trillian Logger *
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1184 *****************************************************************************/
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1185
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1186 /* The trillian logger doesn't write logs, only reads them. This is to include
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1187 * Trillian logs in the log viewer transparently.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1188 */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1189
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1190 static GaimLogLogger *trillian_logger;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1191 static void trillian_logger_finalize(GaimLog *log);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1192
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1193 struct trillian_logger_data {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1194 char *path; /* FIXME: Change this to use GaimStringref like log.c:old_logger_list */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1195 int offset;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1196 int length;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1197 char *their_nickname;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1198 };
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1199
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1200 static GList *trillian_logger_list(GaimLogType type, const char *sn, GaimAccount *account)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1201 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1202 GList *list = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1203 const char *logdir;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1204 GaimPlugin *plugin;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1205 GaimPluginProtocolInfo *prpl_info;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1206 char *prpl_name;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1207 const char *buddy_name;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1208 char *filename;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1209 char *path;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1210 GError *error = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1211 gchar *contents = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1212 gsize length;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1213 gchar *line;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1214 gchar *c;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1215
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1216 g_return_val_if_fail(sn != NULL, list);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1217 g_return_val_if_fail(account != NULL, list);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1218
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1219 logdir = gaim_prefs_get_string("/plugins/core/log_reader/trillian/log_directory");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1220
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1221 /* By clearing the log directory path, this logger can be (effectively) disabled. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1222 if (!*logdir)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1223 return list;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1224
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1225 plugin = gaim_find_prpl(gaim_account_get_protocol_id(account));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1226 if (!plugin)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1227 return NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1228
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1229 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(plugin);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1230 if (!prpl_info->list_icon)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1231 return NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1232
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1233 prpl_name = g_ascii_strup(prpl_info->list_icon(account, NULL), -1);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1234
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1235 buddy_name = gaim_normalize(account, sn);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1236
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1237 filename = g_strdup_printf("%s.log", buddy_name);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1238 path = g_build_filename(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1239 logdir, prpl_name, filename, NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1240
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1241 gaim_debug(GAIM_DEBUG_INFO, "Trillian log list",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1242 "Reading %s\n", path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1243 /* FIXME: There's really no need to read the entire file at once.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1244 * See src/log.c:old_logger_list for a better approach.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1245 */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1246 if (!g_file_get_contents(path, &contents, &length, &error)) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1247 if (error) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1248 g_error_free(error);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1249 error = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1250 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1251 g_free(path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1252
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1253 path = g_build_filename(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1254 logdir, prpl_name, "Query", filename, NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1255 gaim_debug(GAIM_DEBUG_INFO, "Trillian log list",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1256 "Reading %s\n", path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1257 if (!g_file_get_contents(path, &contents, &length, &error)) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1258 if (error)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1259 g_error_free(error);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1260 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1261 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1262 g_free(filename);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1263
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1264 if (contents) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1265 struct trillian_logger_data *data = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1266 int offset = 0;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1267 int last_line_offset = 0;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1268
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1269 line = contents;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1270 c = contents;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1271 while (*c) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1272 offset++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1273
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1274 if (*c != '\n') {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1275 c++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1276 continue;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1277 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1278
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1279 *c = '\0';
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1280 if (gaim_str_has_prefix(line, "Session Close ")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1281 if (data && !data->length) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1282 if (!(data->length = last_line_offset - data->offset)) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1283 /* This log had no data, so we remove it. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1284 GList *last = g_list_last(list);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1285
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1286 gaim_debug(GAIM_DEBUG_INFO, "Trillian log list",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1287 "Empty log. Offset %i\n", data->offset);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1288
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1289 trillian_logger_finalize((GaimLog *)last->data);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1290 list = g_list_delete_link(list, last);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1291 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1292 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1293 } else if (line[0] && line[1] && line [3] &&
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1294 gaim_str_has_prefix(&line[3], "sion Start ")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1295
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1296 char *their_nickname = line;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1297 char *timestamp;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1298
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1299 if (data && !data->length)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1300 data->length = last_line_offset - data->offset;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1301
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1302 while (*their_nickname && (*their_nickname != ':'))
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1303 their_nickname++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1304 their_nickname++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1305
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1306 /* This code actually has nothing to do with
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1307 * the timestamp YET. I'm simply using this
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1308 * variable for now to NUL-terminate the
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1309 * their_nickname string.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1310 */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1311 timestamp = their_nickname;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1312 while (*timestamp && *timestamp != ')')
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1313 timestamp++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1314
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1315 if (*timestamp == ')') {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1316 char *month;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1317 struct tm tm;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1318
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1319 *timestamp = '\0';
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1320 if (line[0] && line[1] && line[2])
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1321 timestamp += 3;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1322
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1323 /* Now we start dealing with the timestamp. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1324
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1325 /* Skip over the day name. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1326 while (*timestamp && (*timestamp != ' '))
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1327 timestamp++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1328 *timestamp = '\0';
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1329 timestamp++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1330
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1331 /* Parse out the month. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1332 month = timestamp;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1333 while (*timestamp && (*timestamp != ' '))
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1334 timestamp++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1335 *timestamp = '\0';
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1336 timestamp++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1337
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1338 /* Parse the day, time, and year. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1339 if (sscanf(timestamp, "%u %u:%u:%u %u",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1340 &tm.tm_mday, &tm.tm_hour,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1341 &tm.tm_min, &tm.tm_sec,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1342 &tm.tm_year) != 5) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1343
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1344 gaim_debug(GAIM_DEBUG_ERROR,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1345 "Trillian log timestamp parse",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1346 "Session Start parsing error\n");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1347 } else {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1348 GaimLog *log;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1349
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1350 tm.tm_year -= 1900;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1351
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1352 /* Let the C library deal with
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1353 * daylight savings time.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1354 */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1355 tm.tm_isdst = -1;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1356
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1357 /* Ugly hack, in case current locale
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1358 * is not English. This code is taken
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1359 * from log.c.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1360 */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1361 if (strcmp(month, "Jan") == 0) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1362 tm.tm_mon= 0;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1363 } else if (strcmp(month, "Feb") == 0) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1364 tm.tm_mon = 1;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1365 } else if (strcmp(month, "Mar") == 0) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1366 tm.tm_mon = 2;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1367 } else if (strcmp(month, "Apr") == 0) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1368 tm.tm_mon = 3;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1369 } else if (strcmp(month, "May") == 0) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1370 tm.tm_mon = 4;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1371 } else if (strcmp(month, "Jun") == 0) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1372 tm.tm_mon = 5;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1373 } else if (strcmp(month, "Jul") == 0) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1374 tm.tm_mon = 6;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1375 } else if (strcmp(month, "Aug") == 0) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1376 tm.tm_mon = 7;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1377 } else if (strcmp(month, "Sep") == 0) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1378 tm.tm_mon = 8;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1379 } else if (strcmp(month, "Oct") == 0) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1380 tm.tm_mon = 9;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1381 } else if (strcmp(month, "Nov") == 0) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1382 tm.tm_mon = 10;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1383 } else if (strcmp(month, "Dec") == 0) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1384 tm.tm_mon = 11;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1385 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1386
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1387 data = g_new0(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1388 struct trillian_logger_data, 1);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1389 data->path = g_strdup(path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1390 data->offset = offset;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1391 data->length = 0;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1392 data->their_nickname =
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1393 g_strdup(their_nickname);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1394
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1395 /* XXX: Look into this later... Should we pass in a struct tm? */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1396 log = gaim_log_new(GAIM_LOG_IM,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1397 sn, account, NULL, mktime(&tm), NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1398 log->logger = trillian_logger;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1399 log->logger_data = data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1400
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1401 list = g_list_append(list, log);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1402 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1403 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1404 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1405 c++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1406 line = c;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1407 last_line_offset = offset;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1408 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1409
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1410 g_free(contents);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1411 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1412 g_free(path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1413
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1414 g_free(prpl_name);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1415
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1416 return list;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1417 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1418
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1419 static char * trillian_logger_read (GaimLog *log, GaimLogReadFlags *flags)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1420 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1421 struct trillian_logger_data *data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1422 char *read;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1423 FILE *file;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1424 GaimBuddy *buddy;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1425 char *escaped;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1426 GString *formatted;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1427 char *c;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1428 char *line;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1429
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1430 g_return_val_if_fail(log != NULL, g_strdup(""));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1431
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1432 data = log->logger_data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1433
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1434 g_return_val_if_fail(data->path != NULL, g_strdup(""));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1435 g_return_val_if_fail(data->length > 0, g_strdup(""));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1436 g_return_val_if_fail(data->their_nickname != NULL, g_strdup(""));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1437
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1438 gaim_debug(GAIM_DEBUG_INFO, "Trillian log read",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1439 "Reading %s\n", data->path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1440
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1441 read = g_malloc(data->length + 2);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1442
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1443 file = g_fopen(data->path, "rb");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1444 fseek(file, data->offset, SEEK_SET);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1445 fread(read, data->length, 1, file);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1446 fclose(file);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1447
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1448 if (read[data->length-1] == '\n') {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1449 read[data->length] = '\0';
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1450 } else {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1451 read[data->length] = '\n';
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1452 read[data->length+1] = '\0';
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1453 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1454
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1455 /* Load miscellaneous data. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1456 buddy = gaim_find_buddy(log->account, log->name);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1457
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1458 escaped = g_markup_escape_text(read, -1);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1459 g_free(read);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1460 read = escaped;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1461
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1462 /* Apply formatting... */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1463 formatted = g_string_new("");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1464 c = read;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1465 line = read;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1466 while (*c)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1467 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1468 if (*c == '\n')
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1469 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1470 char *link_temp_line;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1471 char *link;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1472 char *timestamp;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1473 char *footer = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1474 *c = '\0';
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1475
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1476 /* Convert links.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1477 *
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1478 * The format is (Link: URL)URL
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1479 * So, I want to find each occurance of "(Link: " and replace that chunk with:
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1480 * <a href="
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1481 * Then, replace the next ")" with:
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1482 * ">
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1483 * Then, replace the next " " (or add this if the end-of-line is reached) with:
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1484 * </a>
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1485 */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1486 link_temp_line = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1487 while ((link = g_strstr_len(line, strlen(line), "(Link: "))) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1488 GString *temp;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1489
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1490 if (!*link)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1491 continue;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1492
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1493 *link = '\0';
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1494 link++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1495
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1496 temp = g_string_new(line);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1497 g_string_append(temp, "<a href=\"");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1498
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1499 if (strlen(link) >= 6) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1500 link += (sizeof("(Link: ") - 1);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1501
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1502 while (*link && *link != ')') {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1503 g_string_append_c(temp, *link);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1504 link++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1505 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1506 if (link) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1507 link++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1508
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1509 g_string_append(temp, "\">");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1510 while (*link && *link != ' ') {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1511 g_string_append_c(temp, *link);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1512 link++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1513 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1514 g_string_append(temp, "</a>");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1515 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1516
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1517 g_string_append(temp, link);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1518
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1519 /* Free the last round's line. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1520 if (link_temp_line)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1521 g_free(line);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1522
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1523 line = temp->str;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1524 g_string_free(temp, FALSE);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1525
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1526 /* Save this memory location so we can free it later. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1527 link_temp_line = line;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1528 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1529 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1530
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1531 timestamp = "";
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1532 if (*line == '[') {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1533 timestamp = line;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1534 while (*timestamp && *timestamp != ']')
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1535 timestamp++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1536 if (*timestamp == ']') {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1537 *timestamp = '\0';
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1538 line++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1539 /* TODO: Parse the timestamp and convert it to Gaim's format. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1540 g_string_append_printf(formatted,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1541 "<font size=\"2\">(%s)</font> ", line);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1542 line = timestamp;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1543 if (line[1] && line[2])
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1544 line += 2;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1545 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1546
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1547 if (gaim_str_has_prefix(line, "*** ")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1548 line += (sizeof("*** ") - 1);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1549 g_string_append(formatted, "<b>");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1550 footer = "</b>";
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1551 if (gaim_str_has_prefix(line, "NOTE: This user is offline.")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1552 line = _("User is offline.");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1553 } else if (gaim_str_has_prefix(line,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1554 "NOTE: Your status is currently set to ")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1555
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1556 line += (sizeof("NOTE: ") - 1);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1557 } else if (gaim_str_has_prefix(line, "Auto-response sent to ")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1558 g_string_append(formatted, _("Auto-response sent:"));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1559 while (*line && *line != ':')
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1560 line++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1561 if (*line)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1562 line++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1563 g_string_append(formatted, "</b>");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1564 footer = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1565 } else if (strstr(line, " signed off ")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1566 if (buddy != NULL && buddy->alias)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1567 g_string_append_printf(formatted,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1568 _("%s has signed off."), buddy->alias);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1569 else
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1570 g_string_append_printf(formatted,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1571 _("%s has signed off."), log->name);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1572 line = "";
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1573 } else if (strstr(line, " signed on ")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1574 if (buddy != NULL && buddy->alias)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1575 g_string_append(formatted, buddy->alias);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1576 else
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1577 g_string_append(formatted, log->name);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1578 line = " logged in.";
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1579 } else if (gaim_str_has_prefix(line,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1580 "One or more messages may have been undeliverable.")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1581
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1582 g_string_append(formatted,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1583 "<span style=\"color: #ff0000;\">");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1584 g_string_append(formatted,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1585 _("One or more messages may have been "
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1586 "undeliverable."));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1587 line = "";
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1588 footer = "</span></b>";
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1589 } else if (gaim_str_has_prefix(line,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1590 "You have been disconnected.")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1591
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1592 g_string_append(formatted,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1593 "<span style=\"color: #ff0000;\">");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1594 g_string_append(formatted,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1595 _("You were disconnected from the server."));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1596 line = "";
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1597 footer = "</span></b>";
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1598 } else if (gaim_str_has_prefix(line,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1599 "You are currently disconnected.")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1600
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1601 g_string_append(formatted,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1602 "<span style=\"color: #ff0000;\">");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1603 line = _("You are currently disconnected. Messages "
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1604 "will not be received unless you are "
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1605 "logged in.");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1606 footer = "</span></b>";
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1607 } else if (gaim_str_has_prefix(line,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1608 "Your previous message has not been sent.")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1609
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1610 g_string_append(formatted,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1611 "<span style=\"color: #ff0000;\">");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1612
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1613 if (gaim_str_has_prefix(line,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1614 "Your previous message has not been sent. "
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1615 "Reason: Maximum length exceeded.")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1616
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1617 g_string_append(formatted,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1618 _("Message could not be sent because "
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1619 "the maximum length was exceeded."));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1620 line = "";
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1621 } else {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1622 g_string_append(formatted,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1623 _("Message could not be sent."));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1624 line += (sizeof(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1625 "Your previous message "
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1626 "has not been sent. ") - 1);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1627 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1628
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1629 footer = "</span></b>";
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1630 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1631 } else if (gaim_str_has_prefix(line, data->their_nickname)) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1632 if (buddy != NULL && buddy->alias) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1633 line += strlen(data->their_nickname) + 2;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1634 g_string_append_printf(formatted,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1635 "<span style=\"color: #A82F2F;\">"
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1636 "<b>%s</b></span>: ", buddy->alias);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1637 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1638 } else {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1639 char *line2 = line;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1640 while (*line2 && *line2 != ':')
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1641 line2++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1642 if (*line2 == ':') {
15080
d24de6319f87 [gaim-migrate @ 17866]
Mark Doliner <mark@kingant.net>
parents: 15009
diff changeset
1643 const char *acct_name;
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1644 line2++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1645 line = line2;
14936
5025e146a876 [gaim-migrate @ 17708]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14272
diff changeset
1646 acct_name = gaim_account_get_alias(log->account);
5025e146a876 [gaim-migrate @ 17708]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14272
diff changeset
1647 if (!acct_name)
5025e146a876 [gaim-migrate @ 17708]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14272
diff changeset
1648 acct_name = gaim_account_get_username(log->account);
5025e146a876 [gaim-migrate @ 17708]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14272
diff changeset
1649
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1650 g_string_append_printf(formatted,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1651 "<span style=\"color: #16569E;\">"
14936
5025e146a876 [gaim-migrate @ 17708]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14272
diff changeset
1652 "<b>%s</b></span>:", acct_name);
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1653 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1654 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1655 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1656
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1657 g_string_append(formatted, line);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1658
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1659 if (footer)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1660 g_string_append(formatted, footer);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1661
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1662 g_string_append_c(formatted, '\n');
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1663
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1664 if (link_temp_line)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1665 g_free(link_temp_line);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1666
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1667 c++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1668 line = c;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1669 } else
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1670 c++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1671 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1672
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1673 g_free(read);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1674 read = formatted->str;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1675 g_string_free(formatted, FALSE);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1676
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1677 return read;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1678 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1679
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1680 static int trillian_logger_size (GaimLog *log)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1681 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1682 struct trillian_logger_data *data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1683 char *text;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1684 size_t size;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1685
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1686 g_return_val_if_fail(log != NULL, 0);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1687
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1688 data = log->logger_data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1689
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1690 if (gaim_prefs_get_bool("/plugins/core/log_reader/fast_sizes")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1691 return data ? data->length : 0;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1692 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1693
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1694 text = trillian_logger_read(log, NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1695 size = strlen(text);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1696 g_free(text);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1697
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1698 return size;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1699 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1700
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1701 static void trillian_logger_finalize(GaimLog *log)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1702 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1703 struct trillian_logger_data *data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1704
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1705 g_return_if_fail(log != NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1706
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1707 data = log->logger_data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1708
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1709 g_free(data->path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1710 g_free(data->their_nickname);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1711
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1712 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1713
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1714
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1715 /*****************************************************************************
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1716 * Plugin Code *
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1717 *****************************************************************************/
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1718
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1719 static void
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1720 init_plugin(GaimPlugin *plugin)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1721 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1722 char *path;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1723 #ifdef _WIN32
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1724 char *folder;
14272
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1725 gboolean found = FALSE;
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1726 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1727
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1728 g_return_if_fail(plugin != NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1729
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1730 gaim_prefs_add_none("/plugins/core/log_reader");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1731
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1732
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1733 /* Add general preferences. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1734
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1735 gaim_prefs_add_bool("/plugins/core/log_reader/fast_sizes", FALSE);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1736 gaim_prefs_add_bool("/plugins/core/log_reader/use_name_heuristics", TRUE);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1737
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1738
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1739 /* Add Adium log directory preference. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1740 gaim_prefs_add_none("/plugins/core/log_reader/adium");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1741
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1742 /* Calculate default Adium log directory. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1743 #ifdef _WIN32
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1744 path = "";
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1745 #else
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1746 path = g_build_filename(gaim_home_dir(), "Library", "Application Support",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1747 "Adium 2.0", "Users", "Default", "Logs", NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1748 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1749
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1750 gaim_prefs_add_string("/plugins/core/log_reader/adium/log_directory", path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1751
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1752 #ifndef _WIN32
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1753 g_free(path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1754 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1755
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1756
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1757 /* Add Fire log directory preference. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1758 gaim_prefs_add_none("/plugins/core/log_reader/fire");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1759
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1760 /* Calculate default Fire log directory. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1761 #ifdef _WIN32
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1762 path = "";
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1763 #else
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1764 path = g_build_filename(gaim_home_dir(), "Library", "Application Support",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1765 "Fire", "Sessions", NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1766 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1767
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1768 gaim_prefs_add_string("/plugins/core/log_reader/fire/log_directory", path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1769
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1770 #ifndef _WIN32
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1771 g_free(path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1772 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1773
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1774
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1775 /* Add Messenger Plus! log directory preference. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1776 gaim_prefs_add_none("/plugins/core/log_reader/messenger_plus");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1777
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1778 /* Calculate default Messenger Plus! log directory. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1779 #ifdef _WIN32
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1780 folder = wgaim_get_special_folder(CSIDL_PERSONAL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1781 if (folder) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1782 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1783 path = g_build_filename(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1784 #ifdef _WIN32
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1785 folder,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1786 #else
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1787 GAIM_LOG_READER_WINDOWS_MOUNT_POINT, "Documents and Settings",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1788 g_get_user_name(), "My Documents",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1789 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1790 "My Chat Logs", NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1791 #ifdef _WIN32
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1792 g_free(folder);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1793 } else /* !folder */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1794 path = g_strdup("");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1795 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1796
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1797 gaim_prefs_add_string("/plugins/core/log_reader/messenger_plus/log_directory", path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1798 g_free(path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1799
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1800
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1801 /* Add MSN Messenger log directory preference. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1802 gaim_prefs_add_none("/plugins/core/log_reader/msn");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1803
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1804 /* Calculate default MSN message history directory. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1805 #ifdef _WIN32
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1806 folder = wgaim_get_special_folder(CSIDL_PERSONAL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1807 if (folder) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1808 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1809 path = g_build_filename(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1810 #ifdef _WIN32
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1811 folder,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1812 #else
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1813 GAIM_LOG_READER_WINDOWS_MOUNT_POINT, "Documents and Settings",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1814 g_get_user_name(), "My Documents",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1815 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1816 "My Received Files", NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1817 #ifdef _WIN32
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1818 g_free(folder);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1819 } else /* !folder */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1820 path = g_strdup("");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1821 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1822
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1823 gaim_prefs_add_string("/plugins/core/log_reader/msn/log_directory", path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1824 g_free(path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1825
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1826
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1827 /* Add Trillian log directory preference. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1828 gaim_prefs_add_none("/plugins/core/log_reader/trillian");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1829
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1830 #ifdef _WIN32
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1831 /* XXX: While a major hack, this is the most reliable way I could
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1832 * think of to determine the Trillian installation directory.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1833 */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1834
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1835 path = NULL;
14272
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1836 if ((folder = wgaim_read_reg_string(HKEY_CLASSES_ROOT, "Trillian.SkinZip\\shell\\Add\\command\\", NULL))) {
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1837 char *value = folder;
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1838 char *temp;
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1839
14272
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1840 /* Break apart buffer. */
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1841 if (*value == '"') {
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1842 value++;
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1843 temp = value;
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1844 while (*temp && *temp != '"')
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1845 temp++;
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1846 } else {
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1847 temp = value;
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1848 while (*temp && *temp != ' ')
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1849 temp++;
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1850 }
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1851 *temp = '\0';
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1852
14272
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1853 /* Set path. */
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1854 if (gaim_str_has_suffix(value, "trillian.exe")) {
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1855 value[strlen(value) - (sizeof("trillian.exe") - 1)] = '\0';
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1856 path = g_build_filename(value, "users", "default", "talk.ini", NULL);
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1857 }
14272
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1858 g_free(folder);
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1859 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1860
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1861 if (!path) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1862 char *folder = wgaim_get_special_folder(CSIDL_PROGRAM_FILES);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1863 if (folder) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1864 path = g_build_filename(folder, "Trillian",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1865 "users", "default", "talk.ini", NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1866 g_free(folder);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1867 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1868 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1869
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1870 if (path) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1871 /* Read talk.ini file to find the log directory. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1872 GError *error = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1873
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1874 #if 0 && GLIB_CHECK_VERSION(2,6,0) /* FIXME: Not tested yet. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1875 GKeyFile *key_file;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1876
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1877 gaim_debug(GAIM_DEBUG_INFO, "Trillian talk.ini read",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1878 "Reading %s\n", path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1879 if (!g_key_file_load_from_file(key_file, path, G_KEY_FILE_NONE, GError &error)) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1880 gaim_debug(GAIM_DEBUG_ERROR, "Trillian talk.ini read",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1881 "Error reading talk.ini\n");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1882 if (error)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1883 g_error_free(error);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1884 } else {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1885 char *logdir = g_key_file_get_string(key_file, "Logging", "Directory", &error);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1886 if (error) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1887 gaim_debug(GAIM_DEBUG_ERROR, "Trillian talk.ini read",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1888 "Error reading Directory value from Logging section\n");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1889 g_error_free(error);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1890 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1891
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1892 if (logdir) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1893 g_strchomp(logdir);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1894 gaim_prefs_add_string(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1895 "/plugins/core/log_reader/trillian/log_directory", logdir);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1896 found = TRUE;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1897 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1898
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1899 g_key_file_free(key_file);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1900 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1901 #else /* !GLIB_CHECK_VERSION(2,6,0) */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1902 gsize length;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1903 gchar *contents = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1904
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1905 gaim_debug(GAIM_DEBUG_INFO, "Trillian talk.ini read",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1906 "Reading %s\n", path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1907 if (!g_file_get_contents(path, &contents, &length, &error)) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1908 gaim_debug(GAIM_DEBUG_ERROR, "Trillian talk.ini read",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1909 "Error reading talk.ini\n");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1910 if (error)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1911 g_error_free(error);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1912 } else {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1913 char *line = contents;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1914 while (*contents) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1915 if (*contents == '\n') {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1916 *contents = '\0';
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1917
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1918 /* XXX: This assumes the first Directory key is under [Logging]. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1919 if (gaim_str_has_prefix(line, "Directory=")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1920 line += (sizeof("Directory=") - 1);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1921 g_strchomp(line);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1922 gaim_prefs_add_string(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1923 "/plugins/core/log_reader/trillian/log_directory",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1924 line);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1925 found = TRUE;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1926 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1927
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1928 contents++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1929 line = contents;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1930 } else
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1931 contents++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1932 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1933 g_free(path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1934 g_free(contents);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1935 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1936 #endif /* !GTK_CHECK_VERSION(2,6,0) */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1937 } /* path */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1938
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1939 if (!found) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1940 #endif /* defined(_WIN32) */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1941
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1942 /* Calculate default Trillian log directory. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1943 #ifdef _WIN32
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1944 folder = wgaim_get_special_folder(CSIDL_PROGRAM_FILES);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1945 if (folder) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1946 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1947 path = g_build_filename(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1948 #ifdef _WIN32
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1949 folder,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1950 #else
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1951 GAIM_LOG_READER_WINDOWS_MOUNT_POINT, "Program Files",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1952 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1953 "Trillian", "users", "default", "logs", NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1954 #ifdef _WIN32
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1955 g_free(folder);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1956 } else /* !folder */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1957 path = g_strdup("");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1958 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1959
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1960 gaim_prefs_add_string("/plugins/core/log_reader/trillian/log_directory", path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1961 g_free(path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1962
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1963 #ifdef _WIN32
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1964 } /* !found */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1965 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1966 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1967
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1968 static gboolean
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1969 plugin_load(GaimPlugin *plugin)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1970 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1971 g_return_val_if_fail(plugin != NULL, FALSE);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1972
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1973 /* The names of IM clients are marked for translation at the request of
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1974 translators who wanted to transliterate them. Many translators
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1975 choose to leave them alone. Choose what's best for your language. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1976 adium_logger = gaim_log_logger_new("adium", _("Adium"), 6,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1977 NULL,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1978 NULL,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1979 adium_logger_finalize,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1980 adium_logger_list,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1981 adium_logger_read,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1982 adium_logger_size);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1983 gaim_log_logger_add(adium_logger);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1984
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1985 #if 0
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1986 /* The names of IM clients are marked for translation at the request of
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1987 translators who wanted to transliterate them. Many translators
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1988 choose to leave them alone. Choose what's best for your language. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1989 fire_logger = gaim_log_logger_new("fire", _("Fire"), 6,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1990 NULL,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1991 NULL,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1992 fire_logger_finalize,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1993 fire_logger_list,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1994 fire_logger_read,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1995 fire_logger_size);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1996 gaim_log_logger_add(fire_logger);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1997
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1998 /* The names of IM clients are marked for translation at the request of
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1999 translators who wanted to transliterate them. Many translators
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2000 choose to leave them alone. Choose what's best for your language. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2001 messenger_plus_logger = gaim_log_logger_new("messenger_plus", _("Messenger Plus!"), 6,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2002 NULL,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2003 NULL,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2004 messenger_plus_logger_finalize,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2005 messenger_plus_logger_list,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2006 messenger_plus_logger_read,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2007 messenger_plus_logger_size);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2008 gaim_log_logger_add(messenger_plus_logger);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2009 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2010
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2011 /* The names of IM clients are marked for translation at the request of
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2012 translators who wanted to transliterate them. Many translators
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2013 choose to leave them alone. Choose what's best for your language. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2014 msn_logger = gaim_log_logger_new("msn", _("MSN Messenger"), 6,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2015 NULL,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2016 NULL,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2017 msn_logger_finalize,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2018 msn_logger_list,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2019 msn_logger_read,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2020 msn_logger_size);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2021 gaim_log_logger_add(msn_logger);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2022
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2023 /* The names of IM clients are marked for translation at the request of
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2024 translators who wanted to transliterate them. Many translators
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2025 choose to leave them alone. Choose what's best for your language. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2026 trillian_logger = gaim_log_logger_new("trillian", _("Trillian"), 6,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2027 NULL,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2028 NULL,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2029 trillian_logger_finalize,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2030 trillian_logger_list,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2031 trillian_logger_read,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2032 trillian_logger_size);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2033 gaim_log_logger_add(trillian_logger);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2034
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2035 return TRUE;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2036 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2037
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2038 static gboolean
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2039 plugin_unload(GaimPlugin *plugin)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2040 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2041 g_return_val_if_fail(plugin != NULL, FALSE);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2042
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2043 gaim_log_logger_remove(adium_logger);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2044 #if 0
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2045 gaim_log_logger_remove(fire_logger);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2046 gaim_log_logger_remove(messenger_plus_logger);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2047 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2048 gaim_log_logger_remove(msn_logger);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2049 gaim_log_logger_remove(trillian_logger);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2050
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2051 return TRUE;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2052 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2053
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2054 static GaimPluginPrefFrame *
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2055 get_plugin_pref_frame(GaimPlugin *plugin)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2056 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2057 GaimPluginPrefFrame *frame;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2058 GaimPluginPref *ppref;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2059
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2060 g_return_val_if_fail(plugin != NULL, FALSE);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2061
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2062 frame = gaim_plugin_pref_frame_new();
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2063
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2064
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2065 /* Add general preferences. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2066
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2067 ppref = gaim_plugin_pref_new_with_label(_("General Log Reading Configuration"));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2068 gaim_plugin_pref_frame_add(frame, ppref);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2069
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2070 ppref = gaim_plugin_pref_new_with_name_and_label(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2071 "/plugins/core/log_reader/fast_sizes", _("Fast size calculations"));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2072 gaim_plugin_pref_frame_add(frame, ppref);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2073
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2074 ppref = gaim_plugin_pref_new_with_name_and_label(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2075 "/plugins/core/log_reader/use_name_heuristics", _("Use name heuristics"));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2076 gaim_plugin_pref_frame_add(frame, ppref);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2077
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2078
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2079 /* Add Log Directory preferences. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2080
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2081 ppref = gaim_plugin_pref_new_with_label(_("Log Directory"));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2082 gaim_plugin_pref_frame_add(frame, ppref);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2083
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2084 ppref = gaim_plugin_pref_new_with_name_and_label(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2085 "/plugins/core/log_reader/adium/log_directory", _("Adium"));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2086 gaim_plugin_pref_frame_add(frame, ppref);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2087
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2088 #if 0
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2089 ppref = gaim_plugin_pref_new_with_name_and_label(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2090 "/plugins/core/log_reader/fire/log_directory", _("Fire"));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2091 gaim_plugin_pref_frame_add(frame, ppref);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2092
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2093 ppref = gaim_plugin_pref_new_with_name_and_label(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2094 "/plugins/core/log_reader/messenger_plus/log_directory", _("Messenger Plus!"));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2095 gaim_plugin_pref_frame_add(frame, ppref);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2096 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2097
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2098 ppref = gaim_plugin_pref_new_with_name_and_label(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2099 "/plugins/core/log_reader/msn/log_directory", _("MSN Messenger"));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2100 gaim_plugin_pref_frame_add(frame, ppref);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2101
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2102 ppref = gaim_plugin_pref_new_with_name_and_label(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2103 "/plugins/core/log_reader/trillian/log_directory", _("Trillian"));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2104 gaim_plugin_pref_frame_add(frame, ppref);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2105
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2106 return frame;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2107 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2108
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2109 static GaimPluginUiInfo prefs_info = {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2110 get_plugin_pref_frame,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2111 0, /* page_num (reserved) */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2112 NULL /* frame (reserved) */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2113 };
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2114
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2115 static GaimPluginInfo info =
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2116 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2117 GAIM_PLUGIN_MAGIC,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2118 GAIM_MAJOR_VERSION,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2119 GAIM_MINOR_VERSION,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2120 GAIM_PLUGIN_STANDARD, /**< type */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2121 NULL, /**< ui_requirement */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2122 0, /**< flags */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2123 NULL, /**< dependencies */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2124 GAIM_PRIORITY_DEFAULT, /**< priority */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2125 "core-log_reader", /**< id */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2126 N_("Log Reader"), /**< name */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2127 VERSION, /**< version */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2128
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2129 /** summary */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2130 N_("Includes other IM clients' logs in the "
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2131 "log viewer."),
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2132
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2133 /** description */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2134 N_("When viewing logs, this plugin will include "
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2135 "logs from other IM clients. Currently, this "
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2136 "includes Adium, MSN Messenger, and Trillian.\n\n"
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2137 "WARNING: This plugin is still alpha code and "
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2138 "may crash frequently. Use it at your own risk!"),
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2139
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2140 "Richard Laager <rlaager@users.sf.net>", /**< author */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2141 GAIM_WEBSITE, /**< homepage */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2142 plugin_load, /**< load */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2143 plugin_unload, /**< unload */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2144 NULL, /**< destroy */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2145 NULL, /**< ui_info */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2146 NULL, /**< extra_info */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2147 &prefs_info, /**< prefs_info */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2148 NULL /**< actions */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2149 };
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2150
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2151 GAIM_INIT_PLUGIN(log_reader, init_plugin, info)