annotate libgaim/plugins/log_reader.c @ 14999:82d1a2fc6d25

[gaim-migrate @ 17778] SF Patch #1598994 from lexande Fixes SF Bug #1581999 Original Description: "The gaim 2.0.0beta5 log reader plugin uses the "Date" XML field in MSN logs, the format of which varies between locales, leading to logs being displayed on incorrect/future dates in locales that do not use the MM/DD/YYYY format. This patch fixes the plugin to use the "DateTime" field which has YYYY-MM-DD date in all locales." I totally Warmenhovened this patch. My approach: "I'm using the Date, Time, and DateTime fields. If I can determine that the log matches the current timezone, it'll display 100% properly in the log viewer. If it has a reasonable offset, it'll display as the original time, sort in the right place, but not have a timezone abbreviation. If the offset is bogus or I can't parse the Date or Time field, it'll display in UTC, but still sort properly. I think this is as ideal as is possible, given the data we have to work with." You don't have to understand this. ;) committer: Tailor Script <tailor@pidgin.im>
author Richard Laager <rlaager@wiktel.com>
date Sun, 19 Nov 2006 06:54:38 +0000
parents 5025e146a876
children c6fd017c4121
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);
14936
5025e146a876 [gaim-migrate @ 17708]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14272
diff changeset
976 int alias_length = log->account->alias ? strlen(log->account->alias) : 0;
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
977 GaimBuddy *buddy = gaim_find_buddy(log->account, log->name);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
978 gboolean from_name_matches;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
979 gboolean to_name_matches;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
980
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
981 if (buddy && buddy->alias)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
982 their_name = buddy->alias;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
983
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
984 /* Try to guess which user is me.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
985 * 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
986 * friendly name or alias. For this test, "match" is defined as:
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
987 * ^(friendly_name|alias)([^a-zA-Z0-9].*)?$
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
988 */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
989 from_name_matches = (gaim_str_has_prefix(from_name, friendly_name) &&
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
990 !isalnum(*(from_name + friendly_name_length))) ||
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
991 (gaim_str_has_prefix(from_name, log->account->alias) &&
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
992 !isalnum(*(from_name + alias_length)));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
993
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
994 to_name_matches = to_name != NULL && (
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
995 (gaim_str_has_prefix(to_name, friendly_name) &&
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
996 !isalnum(*(to_name + friendly_name_length))) ||
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
997 (gaim_str_has_prefix(to_name, log->account->alias) &&
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
998 !isalnum(*(to_name + alias_length))));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
999
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1000 if (from_name_matches) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1001 if (!to_name_matches) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1002 name_guessed = NAME_GUESS_ME;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1003 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1004 } else if (to_name_matches) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1005 name_guessed = NAME_GUESS_THEM;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1006 } else {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1007 if (buddy && buddy->alias) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1008 char *alias = g_strdup(buddy->alias);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1009
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1010 /* "Truncate" the string at the first non-alphanumeric
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1011 * character. The idea is to relax the comparison.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1012 */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1013 char *temp;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1014 for (temp = alias; *temp ; temp++) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1015 if (!isalnum(*temp)) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1016 *temp = '\0';
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1017 break;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1018 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1019 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1020 alias_length = strlen(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 /* Try to guess which user is them.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1023 * The first step is to determine if either of the names
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1024 * matches their alias. For this test, "match" is
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1025 * defined as: ^alias([^a-zA-Z0-9].*)?$
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1026 */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1027 from_name_matches = (gaim_str_has_prefix(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1028 from_name, alias) &&
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1029 !isalnum(*(from_name +
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1030 alias_length)));
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 to_name_matches = to_name && (gaim_str_has_prefix(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1033 to_name, alias) &&
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1034 !isalnum(*(to_name +
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1035 alias_length)));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1036
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1037 g_free(alias);
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 if (from_name_matches) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1040 if (!to_name_matches) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1041 name_guessed = NAME_GUESS_THEM;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1042 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1043 } else if (to_name_matches) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1044 name_guessed = NAME_GUESS_ME;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1045 } else if (buddy->server_alias) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1046 friendly_name_length =
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1047 strlen(buddy->server_alias);
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 /* Try to guess which user is them.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1050 * The first step is to determine if either of
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1051 * the names matches their friendly name. For
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1052 * this test, "match" is defined as:
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1053 * ^friendly_name([^a-zA-Z0-9].*)?$
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 from_name_matches = (gaim_str_has_prefix(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1056 from_name,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1057 buddy->server_alias) &&
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1058 !isalnum(*(from_name +
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1059 friendly_name_length)));
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 to_name_matches = to_name && (
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1062 (gaim_str_has_prefix(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1063 to_name, buddy->server_alias) &&
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1064 !isalnum(*(to_name +
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1065 friendly_name_length))));
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 if (from_name_matches) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1068 if (!to_name_matches) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1069 name_guessed = NAME_GUESS_THEM;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1070 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1071 } else if (to_name_matches) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1072 name_guessed = NAME_GUESS_ME;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1073 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1074 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1075 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1076 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1077 }
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
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1080 if (name_guessed != NAME_GUESS_UNKNOWN) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1081 text = g_string_append(text, "<span style=\"color: #");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1082 if (name_guessed == NAME_GUESS_ME)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1083 text = g_string_append(text, "16569E");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1084 else
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1085 text = g_string_append(text, "A82F2F");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1086 text = g_string_append(text, ";\">");
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
14999
82d1a2fc6d25 [gaim-migrate @ 17778]
Richard Laager <rlaager@wiktel.com>
parents: 14936
diff changeset
1089 time_unix = msn_logger_parse_timestamp(message, &tm);
14235
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 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
1092 tm->tm_hour, tm->tm_min, tm->tm_sec);
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1093 text = g_string_append(text, timestamp);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1094 g_free(timestamp);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1095
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1096 if (from_name) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1097 text = g_string_append(text, "<b>");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1098
14936
5025e146a876 [gaim-migrate @ 17708]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14272
diff changeset
1099 if (name_guessed == NAME_GUESS_ME) {
5025e146a876 [gaim-migrate @ 17708]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14272
diff changeset
1100 if (log->account->alias)
5025e146a876 [gaim-migrate @ 17708]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14272
diff changeset
1101 text = g_string_append(text, log->account->alias);
5025e146a876 [gaim-migrate @ 17708]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14272
diff changeset
1102 else
5025e146a876 [gaim-migrate @ 17708]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14272
diff changeset
1103 text = g_string_append(text, log->account->username);
5025e146a876 [gaim-migrate @ 17708]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14272
diff changeset
1104 }
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1105 else if (name_guessed == NAME_GUESS_THEM)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1106 text = g_string_append(text, their_name);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1107 else
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1108 text = g_string_append(text, from_name);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1109
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1110 text = g_string_append(text, ":</b> ");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1111 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1112
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1113 if (name_guessed != NAME_GUESS_UNKNOWN)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1114 text = g_string_append(text, "</span>");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1115
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1116 style = xmlnode_get_attrib(text_node, "Style");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1117
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1118 tmp = xmlnode_get_data(text_node);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1119 if (style && *style) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1120 text = g_string_append(text, "<span style=\"");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1121 text = g_string_append(text, style);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1122 text = g_string_append(text, "\">");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1123 text = g_string_append(text, tmp);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1124 text = g_string_append(text, "</span>\n");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1125 } else {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1126 text = g_string_append(text, tmp);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1127 text = g_string_append(text, "\n");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1128 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1129 g_free(tmp);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1130 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1131
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1132 data->text = text;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1133
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1134 return text->str;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1135 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1136
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1137 static int msn_logger_size (GaimLog *log)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1138 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1139 char *text;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1140 size_t size;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1141
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1142 g_return_val_if_fail(log != NULL, 0);
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 if (gaim_prefs_get_bool("/plugins/core/log_reader/fast_sizes"))
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1145 return 0;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1146
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1147 text = msn_logger_read(log, NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1148 size = strlen(text);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1149 g_free(text);
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 return size;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1152 }
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 static void msn_logger_finalize(GaimLog *log)
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 struct msn_logger_data *data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1157
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1158 g_return_if_fail(log != NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1159
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1160 data = log->logger_data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1161
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1162 if (data->last_log)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1163 xmlnode_free(data->root);
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 if (data->text)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1166 g_string_free(data->text, FALSE);
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
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 /*****************************************************************************
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1171 * Trillian Logger *
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1172 *****************************************************************************/
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 /* 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
1175 * Trillian logs in the log viewer transparently.
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
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1178 static GaimLogLogger *trillian_logger;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1179 static void trillian_logger_finalize(GaimLog *log);
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 struct trillian_logger_data {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1182 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
1183 int offset;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1184 int length;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1185 char *their_nickname;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1186 };
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1187
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1188 static GList *trillian_logger_list(GaimLogType type, const char *sn, GaimAccount *account)
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 GList *list = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1191 const char *logdir;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1192 GaimPlugin *plugin;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1193 GaimPluginProtocolInfo *prpl_info;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1194 char *prpl_name;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1195 const char *buddy_name;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1196 char *filename;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1197 char *path;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1198 GError *error = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1199 gchar *contents = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1200 gsize length;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1201 gchar *line;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1202 gchar *c;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1203
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1204 g_return_val_if_fail(sn != NULL, list);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1205 g_return_val_if_fail(account != NULL, list);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1206
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1207 logdir = gaim_prefs_get_string("/plugins/core/log_reader/trillian/log_directory");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1208
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1209 /* By clearing the log directory path, this logger can be (effectively) disabled. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1210 if (!*logdir)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1211 return list;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1212
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1213 plugin = gaim_find_prpl(gaim_account_get_protocol_id(account));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1214 if (!plugin)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1215 return NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1216
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1217 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(plugin);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1218 if (!prpl_info->list_icon)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1219 return NULL;
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 prpl_name = g_ascii_strup(prpl_info->list_icon(account, NULL), -1);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1222
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1223 buddy_name = gaim_normalize(account, sn);
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 filename = g_strdup_printf("%s.log", buddy_name);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1226 path = g_build_filename(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1227 logdir, prpl_name, filename, 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 gaim_debug(GAIM_DEBUG_INFO, "Trillian log list",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1230 "Reading %s\n", path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1231 /* 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
1232 * See src/log.c:old_logger_list for a better approach.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1233 */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1234 if (!g_file_get_contents(path, &contents, &length, &error)) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1235 if (error) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1236 g_error_free(error);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1237 error = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1238 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1239 g_free(path);
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 path = g_build_filename(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1242 logdir, prpl_name, "Query", filename, NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1243 gaim_debug(GAIM_DEBUG_INFO, "Trillian log list",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1244 "Reading %s\n", path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1245 if (!g_file_get_contents(path, &contents, &length, &error)) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1246 if (error)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1247 g_error_free(error);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1248 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1249 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1250 g_free(filename);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1251
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1252 if (contents) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1253 struct trillian_logger_data *data = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1254 int offset = 0;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1255 int last_line_offset = 0;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1256
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1257 line = contents;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1258 c = contents;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1259 while (*c) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1260 offset++;
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 if (*c != '\n') {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1263 c++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1264 continue;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1265 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1266
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1267 *c = '\0';
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1268 if (gaim_str_has_prefix(line, "Session Close ")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1269 if (data && !data->length) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1270 if (!(data->length = last_line_offset - data->offset)) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1271 /* This log had no data, so we remove it. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1272 GList *last = g_list_last(list);
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 gaim_debug(GAIM_DEBUG_INFO, "Trillian log list",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1275 "Empty log. Offset %i\n", data->offset);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1276
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1277 trillian_logger_finalize((GaimLog *)last->data);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1278 list = g_list_delete_link(list, last);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1279 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1280 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1281 } else if (line[0] && line[1] && line [3] &&
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1282 gaim_str_has_prefix(&line[3], "sion Start ")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1283
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1284 char *their_nickname = line;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1285 char *timestamp;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1286
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1287 if (data && !data->length)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1288 data->length = last_line_offset - data->offset;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1289
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1290 while (*their_nickname && (*their_nickname != ':'))
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1291 their_nickname++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1292 their_nickname++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1293
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1294 /* This code actually has nothing to do with
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1295 * the timestamp YET. I'm simply using this
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1296 * variable for now to NUL-terminate the
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1297 * their_nickname string.
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 timestamp = their_nickname;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1300 while (*timestamp && *timestamp != ')')
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1301 timestamp++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1302
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1303 if (*timestamp == ')') {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1304 char *month;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1305 struct tm tm;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1306
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1307 *timestamp = '\0';
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1308 if (line[0] && line[1] && line[2])
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1309 timestamp += 3;
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 /* Now we start dealing with the timestamp. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1312
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1313 /* Skip over the day name. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1314 while (*timestamp && (*timestamp != ' '))
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1315 timestamp++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1316 *timestamp = '\0';
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1317 timestamp++;
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 /* Parse out the month. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1320 month = timestamp;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1321 while (*timestamp && (*timestamp != ' '))
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1322 timestamp++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1323 *timestamp = '\0';
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1324 timestamp++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1325
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1326 /* Parse the day, time, and year. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1327 if (sscanf(timestamp, "%u %u:%u:%u %u",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1328 &tm.tm_mday, &tm.tm_hour,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1329 &tm.tm_min, &tm.tm_sec,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1330 &tm.tm_year) != 5) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1331
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1332 gaim_debug(GAIM_DEBUG_ERROR,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1333 "Trillian log timestamp parse",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1334 "Session Start parsing error\n");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1335 } else {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1336 GaimLog *log;
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 tm.tm_year -= 1900;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1339
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1340 /* Let the C library deal with
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1341 * daylight savings time.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1342 */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1343 tm.tm_isdst = -1;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1344
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1345 /* Ugly hack, in case current locale
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1346 * is not English. This code is taken
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1347 * from log.c.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1348 */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1349 if (strcmp(month, "Jan") == 0) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1350 tm.tm_mon= 0;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1351 } else if (strcmp(month, "Feb") == 0) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1352 tm.tm_mon = 1;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1353 } else if (strcmp(month, "Mar") == 0) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1354 tm.tm_mon = 2;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1355 } else if (strcmp(month, "Apr") == 0) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1356 tm.tm_mon = 3;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1357 } else if (strcmp(month, "May") == 0) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1358 tm.tm_mon = 4;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1359 } else if (strcmp(month, "Jun") == 0) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1360 tm.tm_mon = 5;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1361 } else if (strcmp(month, "Jul") == 0) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1362 tm.tm_mon = 6;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1363 } else if (strcmp(month, "Aug") == 0) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1364 tm.tm_mon = 7;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1365 } else if (strcmp(month, "Sep") == 0) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1366 tm.tm_mon = 8;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1367 } else if (strcmp(month, "Oct") == 0) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1368 tm.tm_mon = 9;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1369 } else if (strcmp(month, "Nov") == 0) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1370 tm.tm_mon = 10;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1371 } else if (strcmp(month, "Dec") == 0) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1372 tm.tm_mon = 11;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1373 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1374
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1375 data = g_new0(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1376 struct trillian_logger_data, 1);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1377 data->path = g_strdup(path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1378 data->offset = offset;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1379 data->length = 0;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1380 data->their_nickname =
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1381 g_strdup(their_nickname);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1382
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1383 /* XXX: Look into this later... Should we pass in a struct tm? */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1384 log = gaim_log_new(GAIM_LOG_IM,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1385 sn, account, NULL, mktime(&tm), NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1386 log->logger = trillian_logger;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1387 log->logger_data = data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1388
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1389 list = g_list_append(list, log);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1390 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1391 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1392 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1393 c++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1394 line = c;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1395 last_line_offset = offset;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1396 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1397
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1398 g_free(contents);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1399 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1400 g_free(path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1401
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1402 g_free(prpl_name);
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 return list;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1405 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1406
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1407 static char * trillian_logger_read (GaimLog *log, GaimLogReadFlags *flags)
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 struct trillian_logger_data *data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1410 char *read;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1411 FILE *file;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1412 GaimBuddy *buddy;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1413 char *escaped;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1414 GString *formatted;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1415 char *c;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1416 char *line;
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 g_return_val_if_fail(log != NULL, g_strdup(""));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1419
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1420 data = log->logger_data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1421
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1422 g_return_val_if_fail(data->path != NULL, g_strdup(""));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1423 g_return_val_if_fail(data->length > 0, g_strdup(""));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1424 g_return_val_if_fail(data->their_nickname != NULL, g_strdup(""));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1425
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1426 gaim_debug(GAIM_DEBUG_INFO, "Trillian log read",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1427 "Reading %s\n", data->path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1428
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1429 read = g_malloc(data->length + 2);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1430
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1431 file = g_fopen(data->path, "rb");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1432 fseek(file, data->offset, SEEK_SET);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1433 fread(read, data->length, 1, file);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1434 fclose(file);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1435
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1436 if (read[data->length-1] == '\n') {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1437 read[data->length] = '\0';
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1438 } else {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1439 read[data->length] = '\n';
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1440 read[data->length+1] = '\0';
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1441 }
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 /* Load miscellaneous data. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1444 buddy = gaim_find_buddy(log->account, log->name);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1445
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1446 escaped = g_markup_escape_text(read, -1);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1447 g_free(read);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1448 read = escaped;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1449
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1450 /* Apply formatting... */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1451 formatted = g_string_new("");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1452 c = read;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1453 line = read;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1454 while (*c)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1455 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1456 if (*c == '\n')
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 char *link_temp_line;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1459 char *link;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1460 char *timestamp;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1461 char *footer = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1462 *c = '\0';
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1463
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1464 /* Convert links.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1465 *
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1466 * The format is (Link: URL)URL
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1467 * 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
1468 * <a href="
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1469 * Then, replace the next ")" with:
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1470 * ">
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1471 * 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
1472 * </a>
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1473 */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1474 link_temp_line = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1475 while ((link = g_strstr_len(line, strlen(line), "(Link: "))) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1476 GString *temp;
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 if (!*link)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1479 continue;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1480
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1481 *link = '\0';
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1482 link++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1483
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1484 temp = g_string_new(line);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1485 g_string_append(temp, "<a href=\"");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1486
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1487 if (strlen(link) >= 6) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1488 link += (sizeof("(Link: ") - 1);
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 while (*link && *link != ')') {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1491 g_string_append_c(temp, *link);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1492 link++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1493 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1494 if (link) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1495 link++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1496
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1497 g_string_append(temp, "\">");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1498 while (*link && *link != ' ') {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1499 g_string_append_c(temp, *link);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1500 link++;
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 g_string_append(temp, "</a>");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1503 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1504
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1505 g_string_append(temp, link);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1506
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1507 /* Free the last round's line. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1508 if (link_temp_line)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1509 g_free(line);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1510
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1511 line = temp->str;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1512 g_string_free(temp, FALSE);
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 /* Save this memory location so we can free it later. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1515 link_temp_line = line;
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 }
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 timestamp = "";
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1520 if (*line == '[') {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1521 timestamp = line;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1522 while (*timestamp && *timestamp != ']')
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1523 timestamp++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1524 if (*timestamp == ']') {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1525 *timestamp = '\0';
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1526 line++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1527 /* TODO: Parse the timestamp and convert it to Gaim's format. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1528 g_string_append_printf(formatted,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1529 "<font size=\"2\">(%s)</font> ", line);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1530 line = timestamp;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1531 if (line[1] && line[2])
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1532 line += 2;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1533 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1534
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1535 if (gaim_str_has_prefix(line, "*** ")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1536 line += (sizeof("*** ") - 1);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1537 g_string_append(formatted, "<b>");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1538 footer = "</b>";
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1539 if (gaim_str_has_prefix(line, "NOTE: This user is offline.")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1540 line = _("User is offline.");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1541 } else if (gaim_str_has_prefix(line,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1542 "NOTE: Your status is currently set to ")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1543
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1544 line += (sizeof("NOTE: ") - 1);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1545 } else if (gaim_str_has_prefix(line, "Auto-response sent to ")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1546 g_string_append(formatted, _("Auto-response sent:"));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1547 while (*line && *line != ':')
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1548 line++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1549 if (*line)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1550 line++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1551 g_string_append(formatted, "</b>");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1552 footer = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1553 } else if (strstr(line, " signed off ")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1554 if (buddy != NULL && buddy->alias)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1555 g_string_append_printf(formatted,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1556 _("%s has signed off."), buddy->alias);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1557 else
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1558 g_string_append_printf(formatted,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1559 _("%s has signed off."), log->name);
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 } else if (strstr(line, " signed on ")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1562 if (buddy != NULL && buddy->alias)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1563 g_string_append(formatted, buddy->alias);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1564 else
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1565 g_string_append(formatted, log->name);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1566 line = " logged in.";
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1567 } else if (gaim_str_has_prefix(line,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1568 "One or more messages may have been undeliverable.")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1569
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1570 g_string_append(formatted,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1571 "<span style=\"color: #ff0000;\">");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1572 g_string_append(formatted,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1573 _("One or more messages may have been "
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1574 "undeliverable."));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1575 line = "";
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1576 footer = "</span></b>";
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1577 } else if (gaim_str_has_prefix(line,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1578 "You have been disconnected.")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1579
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1580 g_string_append(formatted,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1581 "<span style=\"color: #ff0000;\">");
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 _("You were disconnected from the server."));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1584 line = "";
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1585 footer = "</span></b>";
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1586 } else if (gaim_str_has_prefix(line,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1587 "You are currently disconnected.")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1588
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1589 g_string_append(formatted,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1590 "<span style=\"color: #ff0000;\">");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1591 line = _("You are currently disconnected. Messages "
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1592 "will not be received unless you are "
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1593 "logged in.");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1594 footer = "</span></b>";
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1595 } else if (gaim_str_has_prefix(line,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1596 "Your previous message has not been sent.")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1597
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1598 g_string_append(formatted,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1599 "<span style=\"color: #ff0000;\">");
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 if (gaim_str_has_prefix(line,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1602 "Your previous message has not been sent. "
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1603 "Reason: Maximum length exceeded.")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1604
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1605 g_string_append(formatted,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1606 _("Message could not be sent because "
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1607 "the maximum length was exceeded."));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1608 line = "";
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1609 } else {
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 _("Message could not be sent."));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1612 line += (sizeof(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1613 "Your previous message "
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1614 "has not been sent. ") - 1);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1615 }
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 footer = "</span></b>";
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1618 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1619 } else if (gaim_str_has_prefix(line, data->their_nickname)) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1620 if (buddy != NULL && buddy->alias) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1621 line += strlen(data->their_nickname) + 2;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1622 g_string_append_printf(formatted,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1623 "<span style=\"color: #A82F2F;\">"
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1624 "<b>%s</b></span>: ", buddy->alias);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1625 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1626 } else {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1627 char *line2 = line;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1628 while (*line2 && *line2 != ':')
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1629 line2++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1630 if (*line2 == ':') {
14936
5025e146a876 [gaim-migrate @ 17708]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14272
diff changeset
1631 char *acct_name;
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1632 line2++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1633 line = line2;
14936
5025e146a876 [gaim-migrate @ 17708]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14272
diff changeset
1634 acct_name = gaim_account_get_alias(log->account);
5025e146a876 [gaim-migrate @ 17708]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14272
diff changeset
1635 if (!acct_name)
5025e146a876 [gaim-migrate @ 17708]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14272
diff changeset
1636 acct_name = gaim_account_get_username(log->account);
5025e146a876 [gaim-migrate @ 17708]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14272
diff changeset
1637
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1638 g_string_append_printf(formatted,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1639 "<span style=\"color: #16569E;\">"
14936
5025e146a876 [gaim-migrate @ 17708]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14272
diff changeset
1640 "<b>%s</b></span>:", acct_name);
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1641 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1642 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1643 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1644
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1645 g_string_append(formatted, line);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1646
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1647 if (footer)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1648 g_string_append(formatted, footer);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1649
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1650 g_string_append_c(formatted, '\n');
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1651
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1652 if (link_temp_line)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1653 g_free(link_temp_line);
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 c++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1656 line = c;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1657 } else
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1658 c++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1659 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1660
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1661 g_free(read);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1662 read = formatted->str;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1663 g_string_free(formatted, FALSE);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1664
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1665 return read;
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
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1668 static int trillian_logger_size (GaimLog *log)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1669 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1670 struct trillian_logger_data *data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1671 char *text;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1672 size_t size;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1673
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1674 g_return_val_if_fail(log != NULL, 0);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1675
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1676 data = log->logger_data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1677
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1678 if (gaim_prefs_get_bool("/plugins/core/log_reader/fast_sizes")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1679 return data ? data->length : 0;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1680 }
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 text = trillian_logger_read(log, NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1683 size = strlen(text);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1684 g_free(text);
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 return size;
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
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1689 static void trillian_logger_finalize(GaimLog *log)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1690 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1691 struct trillian_logger_data *data;
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 g_return_if_fail(log != NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1694
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1695 data = log->logger_data;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1696
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1697 g_free(data->path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1698 g_free(data->their_nickname);
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
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 /*****************************************************************************
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1704 * Plugin Code *
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1705 *****************************************************************************/
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 static void
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1708 init_plugin(GaimPlugin *plugin)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1709 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1710 char *path;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1711 #ifdef _WIN32
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1712 char *folder;
14272
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1713 gboolean found = FALSE;
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1714 #endif
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 g_return_if_fail(plugin != NULL);
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 gaim_prefs_add_none("/plugins/core/log_reader");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1719
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1720
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1721 /* Add general preferences. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1722
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1723 gaim_prefs_add_bool("/plugins/core/log_reader/fast_sizes", FALSE);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1724 gaim_prefs_add_bool("/plugins/core/log_reader/use_name_heuristics", TRUE);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1725
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1726
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1727 /* Add Adium log directory preference. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1728 gaim_prefs_add_none("/plugins/core/log_reader/adium");
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 /* Calculate default Adium log directory. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1731 #ifdef _WIN32
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1732 path = "";
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1733 #else
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1734 path = g_build_filename(gaim_home_dir(), "Library", "Application Support",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1735 "Adium 2.0", "Users", "Default", "Logs", NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1736 #endif
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 gaim_prefs_add_string("/plugins/core/log_reader/adium/log_directory", path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1739
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1740 #ifndef _WIN32
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1741 g_free(path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1742 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1743
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1744
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1745 /* Add Fire log directory preference. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1746 gaim_prefs_add_none("/plugins/core/log_reader/fire");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1747
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1748 /* Calculate default Fire log directory. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1749 #ifdef _WIN32
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1750 path = "";
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1751 #else
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1752 path = g_build_filename(gaim_home_dir(), "Library", "Application Support",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1753 "Fire", "Sessions", NULL);
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 gaim_prefs_add_string("/plugins/core/log_reader/fire/log_directory", path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1757
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1758 #ifndef _WIN32
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1759 g_free(path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1760 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1761
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1762
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1763 /* Add Messenger Plus! log directory preference. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1764 gaim_prefs_add_none("/plugins/core/log_reader/messenger_plus");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1765
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1766 /* Calculate default Messenger Plus! log directory. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1767 #ifdef _WIN32
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1768 folder = wgaim_get_special_folder(CSIDL_PERSONAL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1769 if (folder) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1770 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1771 path = g_build_filename(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1772 #ifdef _WIN32
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1773 folder,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1774 #else
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1775 GAIM_LOG_READER_WINDOWS_MOUNT_POINT, "Documents and Settings",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1776 g_get_user_name(), "My Documents",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1777 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1778 "My Chat Logs", NULL);
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 g_free(folder);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1781 } else /* !folder */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1782 path = g_strdup("");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1783 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1784
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1785 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
1786 g_free(path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1787
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1788
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1789 /* Add MSN Messenger log directory preference. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1790 gaim_prefs_add_none("/plugins/core/log_reader/msn");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1791
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1792 /* Calculate default MSN message history directory. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1793 #ifdef _WIN32
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1794 folder = wgaim_get_special_folder(CSIDL_PERSONAL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1795 if (folder) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1796 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1797 path = g_build_filename(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1798 #ifdef _WIN32
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1799 folder,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1800 #else
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1801 GAIM_LOG_READER_WINDOWS_MOUNT_POINT, "Documents and Settings",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1802 g_get_user_name(), "My Documents",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1803 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1804 "My Received Files", NULL);
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 g_free(folder);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1807 } else /* !folder */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1808 path = g_strdup("");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1809 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1810
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1811 gaim_prefs_add_string("/plugins/core/log_reader/msn/log_directory", path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1812 g_free(path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1813
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1814
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1815 /* Add Trillian log directory preference. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1816 gaim_prefs_add_none("/plugins/core/log_reader/trillian");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1817
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1818 #ifdef _WIN32
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1819 /* 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
1820 * think of to determine the Trillian installation directory.
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1821 */
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 path = NULL;
14272
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1824 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
1825 char *value = folder;
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1826 char *temp;
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1827
14272
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1828 /* Break apart buffer. */
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1829 if (*value == '"') {
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1830 value++;
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1831 temp = value;
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1832 while (*temp && *temp != '"')
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1833 temp++;
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1834 } else {
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1835 temp = value;
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1836 while (*temp && *temp != ' ')
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1837 temp++;
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1838 }
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1839 *temp = '\0';
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1840
14272
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1841 /* Set path. */
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1842 if (gaim_str_has_suffix(value, "trillian.exe")) {
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1843 value[strlen(value) - (sizeof("trillian.exe") - 1)] = '\0';
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1844 path = g_build_filename(value, "users", "default", "talk.ini", NULL);
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1845 }
14272
7635195195c0 [gaim-migrate @ 16957]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 14235
diff changeset
1846 g_free(folder);
14235
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1847 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1848
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1849 if (!path) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1850 char *folder = wgaim_get_special_folder(CSIDL_PROGRAM_FILES);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1851 if (folder) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1852 path = g_build_filename(folder, "Trillian",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1853 "users", "default", "talk.ini", NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1854 g_free(folder);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1855 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1856 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1857
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1858 if (path) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1859 /* Read talk.ini file to find the log directory. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1860 GError *error = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1861
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1862 #if 0 && GLIB_CHECK_VERSION(2,6,0) /* FIXME: Not tested yet. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1863 GKeyFile *key_file;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1864
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1865 gaim_debug(GAIM_DEBUG_INFO, "Trillian talk.ini read",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1866 "Reading %s\n", path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1867 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
1868 gaim_debug(GAIM_DEBUG_ERROR, "Trillian talk.ini read",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1869 "Error reading talk.ini\n");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1870 if (error)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1871 g_error_free(error);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1872 } else {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1873 char *logdir = g_key_file_get_string(key_file, "Logging", "Directory", &error);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1874 if (error) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1875 gaim_debug(GAIM_DEBUG_ERROR, "Trillian talk.ini read",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1876 "Error reading Directory value from Logging section\n");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1877 g_error_free(error);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1878 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1879
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1880 if (logdir) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1881 g_strchomp(logdir);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1882 gaim_prefs_add_string(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1883 "/plugins/core/log_reader/trillian/log_directory", logdir);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1884 found = TRUE;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1885 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1886
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1887 g_key_file_free(key_file);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1888 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1889 #else /* !GLIB_CHECK_VERSION(2,6,0) */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1890 gsize length;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1891 gchar *contents = NULL;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1892
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1893 gaim_debug(GAIM_DEBUG_INFO, "Trillian talk.ini read",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1894 "Reading %s\n", path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1895 if (!g_file_get_contents(path, &contents, &length, &error)) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1896 gaim_debug(GAIM_DEBUG_ERROR, "Trillian talk.ini read",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1897 "Error reading talk.ini\n");
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1898 if (error)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1899 g_error_free(error);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1900 } else {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1901 char *line = contents;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1902 while (*contents) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1903 if (*contents == '\n') {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1904 *contents = '\0';
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1905
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1906 /* XXX: This assumes the first Directory key is under [Logging]. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1907 if (gaim_str_has_prefix(line, "Directory=")) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1908 line += (sizeof("Directory=") - 1);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1909 g_strchomp(line);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1910 gaim_prefs_add_string(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1911 "/plugins/core/log_reader/trillian/log_directory",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1912 line);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1913 found = TRUE;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1914 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1915
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1916 contents++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1917 line = contents;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1918 } else
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1919 contents++;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1920 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1921 g_free(path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1922 g_free(contents);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1923 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1924 #endif /* !GTK_CHECK_VERSION(2,6,0) */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1925 } /* path */
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 if (!found) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1928 #endif /* defined(_WIN32) */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1929
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1930 /* Calculate default Trillian log directory. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1931 #ifdef _WIN32
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1932 folder = wgaim_get_special_folder(CSIDL_PROGRAM_FILES);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1933 if (folder) {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1934 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1935 path = g_build_filename(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1936 #ifdef _WIN32
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1937 folder,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1938 #else
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1939 GAIM_LOG_READER_WINDOWS_MOUNT_POINT, "Program Files",
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1940 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1941 "Trillian", "users", "default", "logs", NULL);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1942 #ifdef _WIN32
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1943 g_free(folder);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1944 } else /* !folder */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1945 path = g_strdup("");
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
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1948 gaim_prefs_add_string("/plugins/core/log_reader/trillian/log_directory", path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1949 g_free(path);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1950
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1951 #ifdef _WIN32
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1952 } /* !found */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1953 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1954 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1955
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1956 static gboolean
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1957 plugin_load(GaimPlugin *plugin)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1958 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1959 g_return_val_if_fail(plugin != NULL, FALSE);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1960
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1961 /* 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
1962 translators who wanted to transliterate them. Many translators
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1963 choose to leave them alone. Choose what's best for your language. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1964 adium_logger = gaim_log_logger_new("adium", _("Adium"), 6,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1965 NULL,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1966 NULL,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1967 adium_logger_finalize,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1968 adium_logger_list,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1969 adium_logger_read,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1970 adium_logger_size);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1971 gaim_log_logger_add(adium_logger);
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 #if 0
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1974 /* 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
1975 translators who wanted to transliterate them. Many translators
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1976 choose to leave them alone. Choose what's best for your language. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1977 fire_logger = gaim_log_logger_new("fire", _("Fire"), 6,
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 NULL,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1980 fire_logger_finalize,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1981 fire_logger_list,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1982 fire_logger_read,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1983 fire_logger_size);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1984 gaim_log_logger_add(fire_logger);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1985
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 messenger_plus_logger = gaim_log_logger_new("messenger_plus", _("Messenger Plus!"), 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 messenger_plus_logger_finalize,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1993 messenger_plus_logger_list,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1994 messenger_plus_logger_read,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1995 messenger_plus_logger_size);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1996 gaim_log_logger_add(messenger_plus_logger);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1997 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1998
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1999 /* 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
2000 translators who wanted to transliterate them. Many translators
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2001 choose to leave them alone. Choose what's best for your language. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2002 msn_logger = gaim_log_logger_new("msn", _("MSN Messenger"), 6,
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 NULL,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2005 msn_logger_finalize,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2006 msn_logger_list,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2007 msn_logger_read,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2008 msn_logger_size);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2009 gaim_log_logger_add(msn_logger);
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 trillian_logger = gaim_log_logger_new("trillian", _("Trillian"), 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 trillian_logger_finalize,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2018 trillian_logger_list,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2019 trillian_logger_read,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2020 trillian_logger_size);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2021 gaim_log_logger_add(trillian_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 return TRUE;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2024 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2025
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2026 static gboolean
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2027 plugin_unload(GaimPlugin *plugin)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2028 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2029 g_return_val_if_fail(plugin != NULL, FALSE);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2030
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2031 gaim_log_logger_remove(adium_logger);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2032 #if 0
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2033 gaim_log_logger_remove(fire_logger);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2034 gaim_log_logger_remove(messenger_plus_logger);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2035 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2036 gaim_log_logger_remove(msn_logger);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2037 gaim_log_logger_remove(trillian_logger);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2038
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2039 return TRUE;
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
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2042 static GaimPluginPrefFrame *
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2043 get_plugin_pref_frame(GaimPlugin *plugin)
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2044 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2045 GaimPluginPrefFrame *frame;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2046 GaimPluginPref *ppref;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2047
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2048 g_return_val_if_fail(plugin != NULL, FALSE);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2049
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2050 frame = gaim_plugin_pref_frame_new();
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2051
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 /* Add general preferences. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2054
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2055 ppref = gaim_plugin_pref_new_with_label(_("General Log Reading Configuration"));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2056 gaim_plugin_pref_frame_add(frame, ppref);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2057
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2058 ppref = gaim_plugin_pref_new_with_name_and_label(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2059 "/plugins/core/log_reader/fast_sizes", _("Fast size calculations"));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2060 gaim_plugin_pref_frame_add(frame, ppref);
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 ppref = gaim_plugin_pref_new_with_name_and_label(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2063 "/plugins/core/log_reader/use_name_heuristics", _("Use name heuristics"));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2064 gaim_plugin_pref_frame_add(frame, ppref);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2065
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 /* Add Log Directory preferences. */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2068
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2069 ppref = gaim_plugin_pref_new_with_label(_("Log Directory"));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2070 gaim_plugin_pref_frame_add(frame, ppref);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2071
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2072 ppref = gaim_plugin_pref_new_with_name_and_label(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2073 "/plugins/core/log_reader/adium/log_directory", _("Adium"));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2074 gaim_plugin_pref_frame_add(frame, ppref);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2075
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2076 #if 0
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2077 ppref = gaim_plugin_pref_new_with_name_and_label(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2078 "/plugins/core/log_reader/fire/log_directory", _("Fire"));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2079 gaim_plugin_pref_frame_add(frame, ppref);
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_name_and_label(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2082 "/plugins/core/log_reader/messenger_plus/log_directory", _("Messenger Plus!"));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2083 gaim_plugin_pref_frame_add(frame, ppref);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2084 #endif
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2085
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2086 ppref = gaim_plugin_pref_new_with_name_and_label(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2087 "/plugins/core/log_reader/msn/log_directory", _("MSN Messenger"));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2088 gaim_plugin_pref_frame_add(frame, ppref);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2089
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2090 ppref = gaim_plugin_pref_new_with_name_and_label(
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2091 "/plugins/core/log_reader/trillian/log_directory", _("Trillian"));
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2092 gaim_plugin_pref_frame_add(frame, ppref);
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2093
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2094 return frame;
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2095 }
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2096
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2097 static GaimPluginUiInfo prefs_info = {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2098 get_plugin_pref_frame,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2099 0, /* page_num (reserved) */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2100 NULL /* frame (reserved) */
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
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2103 static GaimPluginInfo info =
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2104 {
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2105 GAIM_PLUGIN_MAGIC,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2106 GAIM_MAJOR_VERSION,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2107 GAIM_MINOR_VERSION,
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2108 GAIM_PLUGIN_STANDARD, /**< type */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2109 NULL, /**< ui_requirement */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2110 0, /**< flags */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2111 NULL, /**< dependencies */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2112 GAIM_PRIORITY_DEFAULT, /**< priority */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2113 "core-log_reader", /**< id */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2114 N_("Log Reader"), /**< name */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2115 VERSION, /**< version */
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 /** summary */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2118 N_("Includes other IM clients' logs in the "
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2119 "log viewer."),
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2120
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2121 /** description */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2122 N_("When viewing logs, this plugin will include "
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2123 "logs from other IM clients. Currently, this "
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2124 "includes Adium, MSN Messenger, and Trillian.\n\n"
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2125 "WARNING: This plugin is still alpha code and "
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2126 "may crash frequently. Use it at your own risk!"),
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2127
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2128 "Richard Laager <rlaager@users.sf.net>", /**< author */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2129 GAIM_WEBSITE, /**< homepage */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2130 plugin_load, /**< load */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2131 plugin_unload, /**< unload */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2132 NULL, /**< destroy */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2133 NULL, /**< ui_info */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2134 NULL, /**< extra_info */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2135 &prefs_info, /**< prefs_info */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2136 NULL /**< actions */
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2137 };
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2138
a54ff7cafc2a [gaim-migrate @ 16917]
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2139 GAIM_INIT_PLUGIN(log_reader, init_plugin, info)