Mercurial > pidgin
annotate libpurple/plugins/log_reader.c @ 20342:d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
through 68d63cab97f8861a7a080c3103d5e24a31587473
applied changes from 68d63cab97f8861a7a080c3103d5e24a31587473
through f9d3abd0678a04291edd671c4e5d87c7217984bb
author | Luke Schierer <lschiere@pidgin.im> |
---|---|
date | Sun, 21 Oct 2007 04:39:02 +0000 |
parents | 3a9709bfde65 |
children | b81af0bef062 |
rev | line source |
---|---|
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1 #include <stdio.h> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3 #include "internal.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
4 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
5 #include "debug.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
6 #include "log.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
7 #include "plugin.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
8 #include "pluginpref.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
9 #include "prefs.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
10 #include "stringref.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
11 #include "util.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
12 #include "version.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
13 #include "xmlnode.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
14 |
15822 | 15 /* This must be the last Purple header included. */ |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
16 #ifdef _WIN32 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
17 #include "win32dep.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
18 #endif |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
19 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
20 /* Where is the Windows partition mounted? */ |
15822 | 21 #ifndef PURPLE_LOG_READER_WINDOWS_MOUNT_POINT |
22 #define PURPLE_LOG_READER_WINDOWS_MOUNT_POINT "/mnt/windows" | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
23 #endif |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
24 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
25 enum name_guesses { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
26 NAME_GUESS_UNKNOWN, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
27 NAME_GUESS_ME, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
28 NAME_GUESS_THEM |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
29 }; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
30 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
31 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
32 /***************************************************************************** |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
33 * Adium Logger * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
34 *****************************************************************************/ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
35 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
36 /* The adium logger doesn't write logs, only reads them. This is to include |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
37 * Adium logs in the log viewer transparently. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
38 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
39 |
15822 | 40 static PurpleLogLogger *adium_logger; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
41 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
42 enum adium_log_type { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
43 ADIUM_HTML, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
44 ADIUM_TEXT, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
45 }; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
46 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
47 struct adium_logger_data { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
48 char *path; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
49 enum adium_log_type type; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
50 }; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
51 |
15822 | 52 static GList *adium_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
53 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
54 GList *list = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
55 const char *logdir; |
15822 | 56 PurplePlugin *plugin; |
57 PurplePluginProtocolInfo *prpl_info; | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
58 char *prpl_name; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
59 char *temp; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
60 char *path; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
61 GDir *dir; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
62 |
18795
883c18d31bf4
Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18785
diff
changeset
|
63 g_return_val_if_fail(sn != NULL, NULL); |
883c18d31bf4
Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18785
diff
changeset
|
64 g_return_val_if_fail(account != NULL, NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
65 |
16430 | 66 logdir = purple_prefs_get_string("/plugins/core/log_reader/adium/log_directory"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
67 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
68 /* By clearing the log directory path, this logger can be (effectively) disabled. */ |
18795
883c18d31bf4
Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18785
diff
changeset
|
69 if (!logdir || !*logdir) |
883c18d31bf4
Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18785
diff
changeset
|
70 return NULL; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
71 |
15822 | 72 plugin = purple_find_prpl(purple_account_get_protocol_id(account)); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
73 if (!plugin) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
74 return NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
75 |
15822 | 76 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(plugin); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
77 if (!prpl_info->list_icon) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
78 return NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
79 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
80 prpl_name = g_ascii_strup(prpl_info->list_icon(account, NULL), -1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
81 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
82 temp = g_strdup_printf("%s.%s", prpl_name, account->username); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
83 path = g_build_filename(logdir, temp, sn, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
84 g_free(temp); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
85 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
86 dir = g_dir_open(path, 0, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
87 if (dir) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
88 const gchar *file; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
89 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
90 while ((file = g_dir_read_name(dir))) { |
15822 | 91 if (!purple_str_has_prefix(file, sn)) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
92 continue; |
15822 | 93 if (purple_str_has_suffix(file, ".html") || purple_str_has_suffix(file, ".AdiumHTMLLog")) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
94 struct tm tm; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
95 const char *date = file; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
96 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
97 date += strlen(sn) + 2; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
98 if (sscanf(date, "%u|%u|%u", |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
99 &tm.tm_year, &tm.tm_mon, &tm.tm_mday) != 3) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
100 |
18245
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
101 purple_debug_error("Adium log parse", |
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
102 "Filename timestamp parsing error\n"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
103 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
104 char *filename = g_build_filename(path, file, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
105 FILE *handle = g_fopen(filename, "rb"); |
20342
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
106 char contents[57]; /* XXX: This is really inflexible. */ |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
107 char *contents2; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
108 struct adium_logger_data *data; |
20342
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
109 size_t rd; |
15822 | 110 PurpleLog *log; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
111 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
112 if (!handle) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
113 g_free(filename); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
114 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
115 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
116 |
20342
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
117 rd = fread(contents, 56, 1, handle) == 0; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
118 fclose(handle); |
20342
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
119 contents[rd] = '\0'; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
120 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
121 /* XXX: This is fairly inflexible. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
122 contents2 = contents; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
123 while (*contents2 && *contents2 != '>') |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
124 contents2++; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
125 if (*contents2) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
126 contents2++; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
127 while (*contents2 && *contents2 != '>') |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
128 contents2++; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
129 if (*contents2) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
130 contents2++; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
131 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
132 if (sscanf(contents2, "%u.%u.%u", |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
133 &tm.tm_hour, &tm.tm_min, &tm.tm_sec) != 3) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
134 |
18245
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
135 purple_debug_error("Adium log parse", |
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
136 "Contents timestamp parsing error\n"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
137 g_free(filename); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
138 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
139 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
140 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
141 data = g_new0(struct adium_logger_data, 1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
142 data->path = filename; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
143 data->type = ADIUM_HTML; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
144 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
145 tm.tm_year -= 1900; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
146 tm.tm_mon -= 1; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
147 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
148 /* XXX: Look into this later... Should we pass in a struct tm? */ |
15822 | 149 log = purple_log_new(PURPLE_LOG_IM, sn, account, NULL, mktime(&tm), NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
150 log->logger = adium_logger; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
151 log->logger_data = data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
152 |
18249
35d981091506
Prepend to lists for performance, and use g_list_reverse when the list is
Richard Laager <rlaager@wiktel.com>
parents:
18248
diff
changeset
|
153 list = g_list_prepend(list, log); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
154 } |
15822 | 155 } else if (purple_str_has_suffix(file, ".adiumLog")) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
156 struct tm tm; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
157 const char *date = file; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
158 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
159 date += strlen(sn) + 2; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
160 if (sscanf(date, "%u|%u|%u", |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
161 &tm.tm_year, &tm.tm_mon, &tm.tm_mday) != 3) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
162 |
18245
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
163 purple_debug_error("Adium log parse", |
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
164 "Filename timestamp parsing error\n"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
165 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
166 char *filename = g_build_filename(path, file, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
167 FILE *handle = g_fopen(filename, "rb"); |
20342
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
168 char contents[14]; /* XXX: This is really inflexible. */ |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
169 char *contents2; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
170 struct adium_logger_data *data; |
15822 | 171 PurpleLog *log; |
20342
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
172 size_t rd; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
173 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
174 if (!handle) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
175 g_free(filename); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
176 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
177 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
178 |
20342
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
179 rd = fread(contents, 13, 1, handle); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
180 fclose(handle); |
20342
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
181 contents[rd] = '\0'; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
182 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
183 contents2 = contents; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
184 while (*contents2 && *contents2 != '(') |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
185 contents2++; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
186 if (*contents2) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
187 contents2++; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
188 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
189 if (sscanf(contents2, "%u.%u.%u", |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
190 &tm.tm_hour, &tm.tm_min, &tm.tm_sec) != 3) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
191 |
18245
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
192 purple_debug_error("Adium log parse", |
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
193 "Contents timestamp parsing error\n"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
194 g_free(filename); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
195 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
196 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
197 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
198 tm.tm_year -= 1900; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
199 tm.tm_mon -= 1; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
200 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
201 data = g_new0(struct adium_logger_data, 1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
202 data->path = filename; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
203 data->type = ADIUM_TEXT; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
204 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
205 /* XXX: Look into this later... Should we pass in a struct tm? */ |
15822 | 206 log = purple_log_new(PURPLE_LOG_IM, sn, account, NULL, mktime(&tm), NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
207 log->logger = adium_logger; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
208 log->logger_data = data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
209 |
18249
35d981091506
Prepend to lists for performance, and use g_list_reverse when the list is
Richard Laager <rlaager@wiktel.com>
parents:
18248
diff
changeset
|
210 list = g_list_prepend(list, log); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
211 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
212 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
213 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
214 g_dir_close(dir); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
215 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
216 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
217 g_free(prpl_name); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
218 g_free(path); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
219 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
220 return list; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
221 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
222 |
15822 | 223 static char *adium_logger_read (PurpleLog *log, PurpleLogReadFlags *flags) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
224 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
225 struct adium_logger_data *data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
226 GError *error = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
227 gchar *read = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
228 |
18373 | 229 /* XXX: TODO: We probably want to set PURPLE_LOG_READ_NO_NEWLINE |
18371
c13d115b6c6e
Make the Adium logger set flags, though it's still very much a stub.
Richard Laager <rlaager@wiktel.com>
parents:
18360
diff
changeset
|
230 * XXX: TODO: for HTML logs. */ |
18795
883c18d31bf4
Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18785
diff
changeset
|
231 if (flags != NULL) |
883c18d31bf4
Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18785
diff
changeset
|
232 *flags = 0; |
18371
c13d115b6c6e
Make the Adium logger set flags, though it's still very much a stub.
Richard Laager <rlaager@wiktel.com>
parents:
18360
diff
changeset
|
233 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
234 g_return_val_if_fail(log != NULL, g_strdup("")); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
235 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
236 data = log->logger_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
237 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
238 g_return_val_if_fail(data->path != NULL, g_strdup("")); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
239 |
18245
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
240 purple_debug_info("Adium log read", "Reading %s\n", data->path); |
20329
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
241 if (!g_file_get_contents(data->path, &read, NULL, &error)) { |
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
242 purple_debug_error("Adium log read", "Error reading log: %s\n", |
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
243 (error && error->message) ? error->message : "Unknown error"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
244 if (error) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
245 g_error_free(error); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
246 return g_strdup(""); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
247 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
248 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
249 if (data->type != ADIUM_HTML) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
250 char *escaped = g_markup_escape_text(read, -1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
251 g_free(read); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
252 read = escaped; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
253 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
254 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
255 #ifdef WIN32 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
256 /* This problem only seems to show up on Windows. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
257 * The BOM is displaying as a space at the beginning of the log. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
258 */ |
15822 | 259 if (purple_str_has_prefix(read, "\xef\xbb\xbf")) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
260 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
261 /* FIXME: This feels so wrong... */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
262 char *temp = g_strdup(&(read[3])); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
263 g_free(read); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
264 read = temp; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
265 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
266 #endif |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
267 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
268 /* TODO: Apply formatting. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
269 * Replace the above hack with something better, since we'll |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
270 * be looping over the entire log file contents anyway. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
271 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
272 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
273 return read; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
274 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
275 |
15822 | 276 static int adium_logger_size (PurpleLog *log) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
277 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
278 struct adium_logger_data *data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
279 char *text; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
280 size_t size; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
281 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
282 g_return_val_if_fail(log != NULL, 0); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
283 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
284 data = log->logger_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
285 |
16430 | 286 if (purple_prefs_get_bool("/plugins/core/log_reader/fast_sizes")) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
287 struct stat st; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
288 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
289 if (!data->path || stat(data->path, &st)) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
290 st.st_size = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
291 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
292 return st.st_size; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
293 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
294 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
295 text = adium_logger_read(log, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
296 size = strlen(text); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
297 g_free(text); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
298 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
299 return size; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
300 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
301 |
15822 | 302 static void adium_logger_finalize(PurpleLog *log) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
303 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
304 struct adium_logger_data *data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
305 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
306 g_return_if_fail(log != NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
307 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
308 data = log->logger_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
309 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
310 g_free(data->path); |
18246
e236b3bd4542
Eliminate some leaks.
Richard Laager <rlaager@wiktel.com>
parents:
18245
diff
changeset
|
311 g_free(data); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
312 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
313 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
314 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
315 /***************************************************************************** |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
316 * Fire Logger * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
317 *****************************************************************************/ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
318 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
319 #if 0 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
320 /* The fire logger doesn't write logs, only reads them. This is to include |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
321 * Fire logs in the log viewer transparently. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
322 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
323 |
15822 | 324 static PurpleLogLogger *fire_logger; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
325 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
326 struct fire_logger_data { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
327 }; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
328 |
15822 | 329 static GList *fire_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
330 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
331 /* TODO: Do something here. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
332 return NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
333 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
334 |
15822 | 335 static char * fire_logger_read (PurpleLog *log, PurpleLogReadFlags *flags) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
336 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
337 struct fire_logger_data *data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
338 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
339 g_return_val_if_fail(log != NULL, g_strdup("")); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
340 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
341 data = log->logger_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
342 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
343 /* TODO: Do something here. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
344 return g_strdup(""); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
345 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
346 |
15822 | 347 static int fire_logger_size (PurpleLog *log) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
348 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
349 g_return_val_if_fail(log != NULL, 0); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
350 |
16430 | 351 if (purple_prefs_get_bool("/plugins/core/log_reader/fast_sizes")) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
352 return 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
353 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
354 /* TODO: Do something here. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
355 return 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
356 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
357 |
15822 | 358 static void fire_logger_finalize(PurpleLog *log) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
359 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
360 g_return_if_fail(log != NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
361 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
362 /* TODO: Do something here. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
363 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
364 #endif |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
365 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
366 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
367 /***************************************************************************** |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
368 * Messenger Plus! Logger * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
369 *****************************************************************************/ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
370 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
371 #if 0 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
372 /* The messenger_plus logger doesn't write logs, only reads them. This is to include |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
373 * Messenger Plus! logs in the log viewer transparently. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
374 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
375 |
15822 | 376 static PurpleLogLogger *messenger_plus_logger; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
377 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
378 struct messenger_plus_logger_data { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
379 }; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
380 |
15822 | 381 static GList *messenger_plus_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
382 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
383 /* TODO: Do something here. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
384 return NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
385 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
386 |
15822 | 387 static char * messenger_plus_logger_read (PurpleLog *log, PurpleLogReadFlags *flags) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
388 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
389 struct messenger_plus_logger_data *data = log->logger_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
390 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
391 g_return_val_if_fail(log != NULL, g_strdup("")); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
392 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
393 data = log->logger_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
394 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
395 /* TODO: Do something here. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
396 return g_strdup(""); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
397 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
398 |
15822 | 399 static int messenger_plus_logger_size (PurpleLog *log) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
400 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
401 g_return_val_if_fail(log != NULL, 0); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
402 |
16430 | 403 if (purple_prefs_get_bool("/plugins/core/log_reader/fast_sizes")) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
404 return 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
405 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
406 /* TODO: Do something here. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
407 return 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
408 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
409 |
15822 | 410 static void messenger_plus_logger_finalize(PurpleLog *log) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
411 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
412 g_return_if_fail(log != NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
413 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
414 /* TODO: Do something here. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
415 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
416 #endif |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
417 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
418 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
419 /***************************************************************************** |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
420 * MSN Messenger Logger * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
421 *****************************************************************************/ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
422 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
423 /* The msn logger doesn't write logs, only reads them. This is to include |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
424 * MSN Messenger message histories in the log viewer transparently. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
425 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
426 |
15822 | 427 static PurpleLogLogger *msn_logger; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
428 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
429 struct msn_logger_data { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
430 xmlnode *root; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
431 xmlnode *message; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
432 const char *session_id; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
433 int last_log; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
434 GString *text; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
435 }; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
436 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
437 /* This function is really confusing. It makes baby rlaager cry... |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
438 In other news: "You lost a lot of blood but we found most of it." |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
439 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
440 static time_t msn_logger_parse_timestamp(xmlnode *message, struct tm **tm_out) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
441 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
442 const char *datetime; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
443 static struct tm tm2; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
444 time_t stamp; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
445 const char *date; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
446 const char *time; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
447 int month; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
448 int day; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
449 int year; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
450 int hour; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
451 int min; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
452 int sec; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
453 char am_pm; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
454 char *str; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
455 static struct tm tm; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
456 time_t t; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
457 time_t diff; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
458 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
459 #ifndef G_DISABLE_CHECKS |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
460 if (message != NULL) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
461 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
462 *tm_out = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
463 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
464 /* Trigger the usual warning. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
465 g_return_val_if_fail(message != NULL, (time_t)0); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
466 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
467 #endif |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
468 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
469 datetime = xmlnode_get_attrib(message, "DateTime"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
470 if (!(datetime && *datetime)) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
471 { |
15822 | 472 purple_debug_error("MSN log timestamp parse", |
18245
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
473 "Attribute missing: %s\n", "DateTime"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
474 return (time_t)0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
475 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
476 |
15822 | 477 stamp = purple_str_to_time(datetime, TRUE, &tm2, NULL, NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
478 #ifdef HAVE_TM_GMTOFF |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
479 tm2.tm_gmtoff = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
480 #endif |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
481 #ifdef HAVE_STRUCT_TM_TM_ZONE |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
482 /* This is used in the place of a timezone abbreviation if the |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
483 * offset is way off. The user should never really see it, but |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
484 * it's here just in case. The parens are to make it clear it's |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
485 * not a real timezone. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
486 tm2.tm_zone = _("(UTC)"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
487 #endif |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
488 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
489 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
490 date = xmlnode_get_attrib(message, "Date"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
491 if (!(date && *date)) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
492 { |
15822 | 493 purple_debug_error("MSN log timestamp parse", |
18245
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
494 "Attribute missing: %s\n", "Date"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
495 *tm_out = &tm2; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
496 return stamp; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
497 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
498 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
499 time = xmlnode_get_attrib(message, "Time"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
500 if (!(time && *time)) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
501 { |
15822 | 502 purple_debug_error("MSN log timestamp parse", |
18245
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
503 "Attribute missing: %s\n", "Time"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
504 *tm_out = &tm2; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
505 return stamp; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
506 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
507 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
508 if (sscanf(date, "%u/%u/%u", &month, &day, &year) != 3) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
509 { |
15822 | 510 purple_debug_error("MSN log timestamp parse", |
18245
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
511 "%s parsing error\n", "Date"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
512 *tm_out = &tm2; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
513 return stamp; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
514 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
515 else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
516 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
517 if (month > 12) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
518 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
519 int tmp = day; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
520 day = month; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
521 month = tmp; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
522 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
523 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
524 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
525 if (sscanf(time, "%u:%u:%u %c", &hour, &min, &sec, &am_pm) != 4) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
526 { |
15822 | 527 purple_debug_error("MSN log timestamp parse", |
18245
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
528 "%s parsing error\n", "Time"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
529 *tm_out = &tm2; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
530 return stamp; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
531 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
532 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
533 if (am_pm == 'P') { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
534 hour += 12; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
535 } else if (hour == 12) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
536 /* 12 AM = 00 hr */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
537 hour = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
538 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
539 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
540 str = g_strdup_printf("%04i-%02i-%02iT%02i:%02i:%02i", year, month, day, hour, min, sec); |
15822 | 541 t = purple_str_to_time(str, TRUE, &tm, NULL, NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
542 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
543 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
544 if (stamp > t) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
545 diff = stamp - t; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
546 else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
547 diff = t - stamp; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
548 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
549 if (diff > (14 * 60 * 60)) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
550 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
551 if (day <= 12) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
552 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
553 /* Swap day & month variables, to see if it's a non-US date. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
554 g_free(str); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
555 str = g_strdup_printf("%04i-%02i-%02iT%02i:%02i:%02i", year, month, day, hour, min, sec); |
15822 | 556 t = purple_str_to_time(str, TRUE, &tm, NULL, NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
557 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
558 if (stamp > t) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
559 diff = stamp - t; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
560 else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
561 diff = t - stamp; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
562 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
563 if (diff > (14 * 60 * 60)) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
564 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
565 /* We got a time, it's not impossible, but |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
566 * the diff is too large. Display the UTC time. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
567 g_free(str); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
568 *tm_out = &tm2; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
569 return stamp; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
570 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
571 else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
572 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
573 /* Legal time */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
574 /* Fall out */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
575 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
576 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
577 else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
578 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
579 /* We got a time, it's not impossible, but |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
580 * the diff is too large. Display the UTC time. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
581 g_free(str); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
582 *tm_out = &tm2; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
583 return stamp; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
584 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
585 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
586 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
587 /* If we got here, the time is legal with a reasonable offset. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
588 * Let's find out if it's in our TZ. */ |
15822 | 589 if (purple_str_to_time(str, FALSE, &tm, NULL, NULL) == stamp) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
590 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
591 g_free(str); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
592 *tm_out = &tm; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
593 return stamp; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
594 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
595 g_free(str); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
596 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
597 /* The time isn't in our TZ, but it's reasonable. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
598 #ifdef HAVE_STRUCT_TM_TM_ZONE |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
599 tm.tm_zone = " "; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
600 #endif |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
601 *tm_out = &tm; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
602 return stamp; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
603 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
604 |
15822 | 605 static GList *msn_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
606 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
607 GList *list = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
608 char *username; |
15822 | 609 PurpleBuddy *buddy; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
610 const char *logdir; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
611 const char *savedfilename = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
612 char *logfile; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
613 char *path; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
614 GError *error = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
615 gchar *contents = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
616 gsize length; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
617 xmlnode *root; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
618 xmlnode *message; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
619 const char *old_session_id = ""; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
620 struct msn_logger_data *data = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
621 |
18795
883c18d31bf4
Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18785
diff
changeset
|
622 g_return_val_if_fail(sn != NULL, NULL); |
883c18d31bf4
Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18785
diff
changeset
|
623 g_return_val_if_fail(account != NULL, NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
624 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
625 if (strcmp(account->protocol_id, "prpl-msn")) |
18795
883c18d31bf4
Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18785
diff
changeset
|
626 return NULL; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
627 |
16430 | 628 logdir = purple_prefs_get_string("/plugins/core/log_reader/msn/log_directory"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
629 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
630 /* By clearing the log directory path, this logger can be (effectively) disabled. */ |
18795
883c18d31bf4
Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18785
diff
changeset
|
631 if (!logdir || !*logdir) |
883c18d31bf4
Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18785
diff
changeset
|
632 return NULL; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
633 |
15822 | 634 buddy = purple_find_buddy(account, sn); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
635 |
15822 | 636 if ((username = g_strdup(purple_account_get_string( |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
637 account, "log_reader_msn_log_folder", NULL)))) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
638 /* As a special case, we allow the null string to kill the parsing |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
639 * straight away. This would allow the user to deal with the case |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
640 * when two account have the same username at different domains and |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
641 * only one has logs stored. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
642 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
643 if (!*username) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
644 g_free(username); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
645 return list; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
646 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
647 } else { |
15822 | 648 username = g_strdup(purple_normalize(account, account->username)); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
649 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
650 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
651 if (buddy) |
15822 | 652 savedfilename = purple_blist_node_get_string(&buddy->node, "log_reader_msn_log_filename"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
653 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
654 if (savedfilename) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
655 /* As a special case, we allow the null string to kill the parsing |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
656 * straight away. This would allow the user to deal with the case |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
657 * when two buddies have the same username at different domains and |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
658 * only one has logs stored. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
659 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
660 if (!*savedfilename) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
661 g_free(username); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
662 return list; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
663 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
664 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
665 logfile = g_strdup(savedfilename); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
666 } else { |
15822 | 667 logfile = g_strdup_printf("%s.xml", purple_normalize(account, sn)); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
668 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
669 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
670 path = g_build_filename(logdir, username, "History", logfile, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
671 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
672 if (!g_file_test(path, G_FILE_TEST_EXISTS)) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
673 gboolean found = FALSE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
674 char *at_sign; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
675 GDir *dir; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
676 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
677 g_free(path); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
678 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
679 if (savedfilename) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
680 /* We had a saved filename, but it doesn't exist. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
681 * Returning now is the right course of action because we don't |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
682 * want to detect another file incorrectly. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
683 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
684 g_free(username); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
685 g_free(logfile); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
686 return list; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
687 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
688 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
689 /* Perhaps we're using a new version of MSN with the weird numbered folders. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
690 * I don't know how the numbers are calculated, so I'm going to attempt to |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
691 * find logs by pattern matching... |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
692 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
693 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
694 at_sign = g_strrstr(username, "@"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
695 if (at_sign) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
696 *at_sign = '\0'; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
697 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
698 dir = g_dir_open(logdir, 0, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
699 if (dir) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
700 const gchar *name; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
701 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
702 while ((name = g_dir_read_name(dir))) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
703 const char *c = name; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
704 |
15822 | 705 if (!purple_str_has_prefix(c, username)) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
706 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
707 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
708 c += strlen(username); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
709 while (*c) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
710 if (!g_ascii_isdigit(*c)) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
711 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
712 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
713 c++; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
714 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
715 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
716 path = g_build_filename(logdir, name, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
717 /* The !c makes sure we got to the end of the while loop above. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
718 if (!*c && g_file_test(path, G_FILE_TEST_IS_DIR)) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
719 char *history_path = g_build_filename( |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
720 path, "History", NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
721 if (g_file_test(history_path, G_FILE_TEST_IS_DIR)) { |
15822 | 722 purple_account_set_string(account, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
723 "log_reader_msn_log_folder", name); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
724 g_free(path); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
725 path = history_path; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
726 found = TRUE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
727 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
728 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
729 g_free(path); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
730 g_free(history_path); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
731 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
732 else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
733 g_free(path); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
734 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
735 g_dir_close(dir); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
736 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
737 g_free(username); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
738 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
739 if (!found) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
740 g_free(logfile); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
741 return list; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
742 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
743 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
744 /* If we've reached this point, we've found a History folder. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
745 |
15822 | 746 username = g_strdup(purple_normalize(account, sn)); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
747 at_sign = g_strrstr(username, "@"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
748 if (at_sign) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
749 *at_sign = '\0'; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
750 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
751 found = FALSE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
752 dir = g_dir_open(path, 0, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
753 if (dir) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
754 const gchar *name; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
755 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
756 while ((name = g_dir_read_name(dir))) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
757 const char *c = name; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
758 |
15822 | 759 if (!purple_str_has_prefix(c, username)) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
760 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
761 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
762 c += strlen(username); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
763 while (*c) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
764 if (!g_ascii_isdigit(*c)) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
765 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
766 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
767 c++; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
768 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
769 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
770 path = g_build_filename(path, name, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
771 if (!strcmp(c, ".xml") && |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
772 g_file_test(path, G_FILE_TEST_EXISTS)) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
773 found = TRUE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
774 g_free(logfile); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
775 logfile = g_strdup(name); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
776 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
777 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
778 else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
779 g_free(path); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
780 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
781 g_dir_close(dir); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
782 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
783 g_free(username); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
784 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
785 if (!found) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
786 g_free(logfile); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
787 return list; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
788 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
789 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
790 g_free(username); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
791 g_free(logfile); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
792 logfile = NULL; /* No sense saving the obvious buddy@domain.com. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
793 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
794 |
18245
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
795 purple_debug_info("MSN log read", "Reading %s\n", path); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
796 if (!g_file_get_contents(path, &contents, &length, &error)) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
797 g_free(path); |
18245
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
798 purple_debug_error("MSN log read", "Error reading log\n"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
799 if (error) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
800 g_error_free(error); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
801 return list; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
802 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
803 g_free(path); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
804 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
805 /* Reading the file was successful... |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
806 * Save its name if it involves the crazy numbers. The idea here is that you could |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
807 * then tweak the blist.xml file by hand if need be. This would be the case if two |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
808 * buddies have the same username at different domains. One set of logs would get |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
809 * detected for both buddies. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
810 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
811 if (buddy && logfile) { |
15822 | 812 purple_blist_node_set_string(&buddy->node, "log_reader_msn_log_filename", logfile); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
813 g_free(logfile); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
814 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
815 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
816 root = xmlnode_from_str(contents, length); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
817 g_free(contents); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
818 if (!root) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
819 return list; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
820 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
821 for (message = xmlnode_get_child(root, "Message"); message; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
822 message = xmlnode_get_next_twin(message)) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
823 const char *session_id; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
824 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
825 session_id = xmlnode_get_attrib(message, "SessionID"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
826 if (!session_id) { |
18245
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
827 purple_debug_error("MSN log parse", |
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
828 "Error parsing message: %s\n", "SessionID missing"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
829 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
830 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
831 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
832 if (strcmp(session_id, old_session_id)) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
833 /* |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
834 * The session ID differs from the last message. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
835 * Thus, this is the start of a new conversation. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
836 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
837 struct tm *tm; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
838 time_t stamp; |
15822 | 839 PurpleLog *log; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
840 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
841 data = g_new0(struct msn_logger_data, 1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
842 data->root = root; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
843 data->message = message; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
844 data->session_id = session_id; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
845 data->text = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
846 data->last_log = FALSE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
847 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
848 stamp = msn_logger_parse_timestamp(message, &tm); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
849 |
15822 | 850 log = purple_log_new(PURPLE_LOG_IM, sn, account, NULL, stamp, tm); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
851 log->logger = msn_logger; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
852 log->logger_data = data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
853 |
18249
35d981091506
Prepend to lists for performance, and use g_list_reverse when the list is
Richard Laager <rlaager@wiktel.com>
parents:
18248
diff
changeset
|
854 list = g_list_prepend(list, log); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
855 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
856 old_session_id = session_id; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
857 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
858 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
859 if (data) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
860 data->last_log = TRUE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
861 |
18249
35d981091506
Prepend to lists for performance, and use g_list_reverse when the list is
Richard Laager <rlaager@wiktel.com>
parents:
18248
diff
changeset
|
862 return g_list_reverse(list); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
863 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
864 |
15822 | 865 static char * msn_logger_read (PurpleLog *log, PurpleLogReadFlags *flags) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
866 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
867 struct msn_logger_data *data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
868 GString *text = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
869 xmlnode *message; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
870 |
18765
9cec393c3a21
Fix #2349 (null pointer deref in log_reader plugin).
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18559
diff
changeset
|
871 if (flags != NULL) |
9cec393c3a21
Fix #2349 (null pointer deref in log_reader plugin).
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18559
diff
changeset
|
872 *flags = PURPLE_LOG_READ_NO_NEWLINE; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
873 g_return_val_if_fail(log != NULL, g_strdup("")); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
874 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
875 data = log->logger_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
876 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
877 if (data->text) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
878 /* The GTK code which displays the logs g_free()s whatever is |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
879 * returned from this function. Thus, we can't reuse the str |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
880 * part of the GString. The only solution is to free it and |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
881 * start over. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
882 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
883 g_string_free(data->text, FALSE); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
884 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
885 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
886 text = g_string_new(""); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
887 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
888 if (!data->root || !data->message || !data->session_id) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
889 /* Something isn't allocated correctly. */ |
18245
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
890 purple_debug_error("MSN log parse", |
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
891 "Error parsing message: %s\n", "Internal variables inconsistent"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
892 data->text = text; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
893 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
894 return text->str; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
895 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
896 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
897 for (message = data->message; message; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
898 message = xmlnode_get_next_twin(message)) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
899 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
900 const char *new_session_id; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
901 xmlnode *text_node; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
902 const char *from_name = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
903 const char *to_name = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
904 xmlnode *from; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
905 xmlnode *to; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
906 enum name_guesses name_guessed = NAME_GUESS_UNKNOWN; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
907 const char *their_name; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
908 time_t time_unix; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
909 struct tm *tm; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
910 char *timestamp; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
911 char *tmp; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
912 const char *style; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
913 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
914 new_session_id = xmlnode_get_attrib(message, "SessionID"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
915 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
916 /* If this triggers, something is wrong with the XML. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
917 if (!new_session_id) { |
18245
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
918 purple_debug_error("MSN log parse", |
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
919 "Error parsing message: %s\n", "New SessionID missing"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
920 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
921 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
922 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
923 if (strcmp(new_session_id, data->session_id)) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
924 /* The session ID differs from the first message. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
925 * Thus, this is the start of a new conversation. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
926 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
927 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
928 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
929 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
930 text_node = xmlnode_get_child(message, "Text"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
931 if (!text_node) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
932 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
933 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
934 from = xmlnode_get_child(message, "From"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
935 if (from) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
936 xmlnode *user = xmlnode_get_child(from, "User"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
937 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
938 if (user) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
939 from_name = xmlnode_get_attrib(user, "FriendlyName"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
940 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
941 /* This saves a check later. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
942 if (!*from_name) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
943 from_name = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
944 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
945 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
946 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
947 to = xmlnode_get_child(message, "To"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
948 if (to) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
949 xmlnode *user = xmlnode_get_child(to, "User"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
950 if (user) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
951 to_name = xmlnode_get_attrib(user, "FriendlyName"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
952 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
953 /* This saves a check later. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
954 if (!*to_name) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
955 to_name = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
956 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
957 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
958 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
959 their_name = from_name; |
16430 | 960 if (from_name && purple_prefs_get_bool("/plugins/core/log_reader/use_name_heuristics")) { |
15822 | 961 const char *friendly_name = purple_connection_get_display_name(log->account->gc); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
962 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
963 if (friendly_name != NULL) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
964 int friendly_name_length = strlen(friendly_name); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
965 const char *alias; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
966 int alias_length; |
15822 | 967 PurpleBuddy *buddy = purple_find_buddy(log->account, log->name); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
968 gboolean from_name_matches; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
969 gboolean to_name_matches; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
970 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
971 if (buddy && buddy->alias) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
972 their_name = buddy->alias; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
973 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
974 if (log->account->alias) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
975 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
976 alias = log->account->alias; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
977 alias_length = strlen(alias); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
978 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
979 else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
980 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
981 alias = ""; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
982 alias_length = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
983 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
984 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
985 /* Try to guess which user is me. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
986 * The first step is to determine if either of the names matches either my |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
987 * friendly name or alias. For this test, "match" is defined as: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
988 * ^(friendly_name|alias)([^a-zA-Z0-9].*)?$ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
989 */ |
15822 | 990 from_name_matches = (purple_str_has_prefix(from_name, friendly_name) && |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
991 !isalnum(*(from_name + friendly_name_length))) || |
15822 | 992 (purple_str_has_prefix(from_name, alias) && |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
993 !isalnum(*(from_name + alias_length))); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
994 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
995 to_name_matches = to_name != NULL && ( |
15822 | 996 (purple_str_has_prefix(to_name, friendly_name) && |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
997 !isalnum(*(to_name + friendly_name_length))) || |
15822 | 998 (purple_str_has_prefix(to_name, alias) && |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
999 !isalnum(*(to_name + alias_length)))); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1000 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1001 if (from_name_matches) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1002 if (!to_name_matches) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1003 name_guessed = NAME_GUESS_ME; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1004 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1005 } else if (to_name_matches) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1006 name_guessed = NAME_GUESS_THEM; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1007 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1008 if (buddy && buddy->alias) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1009 char *alias = g_strdup(buddy->alias); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1010 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1011 /* "Truncate" the string at the first non-alphanumeric |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1012 * character. The idea is to relax the comparison. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1013 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1014 char *temp; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1015 for (temp = alias; *temp ; temp++) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1016 if (!isalnum(*temp)) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1017 *temp = '\0'; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1018 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1019 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1020 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1021 alias_length = strlen(alias); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1022 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1023 /* Try to guess which user is them. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1024 * The first step is to determine if either of the names |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1025 * matches their alias. For this test, "match" is |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1026 * defined as: ^alias([^a-zA-Z0-9].*)?$ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1027 */ |
15822 | 1028 from_name_matches = (purple_str_has_prefix( |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1029 from_name, alias) && |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1030 !isalnum(*(from_name + |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1031 alias_length))); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1032 |
15822 | 1033 to_name_matches = to_name && (purple_str_has_prefix( |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1034 to_name, alias) && |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1035 !isalnum(*(to_name + |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1036 alias_length))); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1037 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1038 g_free(alias); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1039 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1040 if (from_name_matches) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1041 if (!to_name_matches) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1042 name_guessed = NAME_GUESS_THEM; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1043 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1044 } else if (to_name_matches) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1045 name_guessed = NAME_GUESS_ME; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1046 } else if (buddy->server_alias) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1047 friendly_name_length = |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1048 strlen(buddy->server_alias); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1049 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1050 /* Try to guess which user is them. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1051 * The first step is to determine if either of |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1052 * the names matches their friendly name. For |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1053 * this test, "match" is defined as: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1054 * ^friendly_name([^a-zA-Z0-9].*)?$ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1055 */ |
15822 | 1056 from_name_matches = (purple_str_has_prefix( |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1057 from_name, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1058 buddy->server_alias) && |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1059 !isalnum(*(from_name + |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1060 friendly_name_length))); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1061 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1062 to_name_matches = to_name && ( |
15822 | 1063 (purple_str_has_prefix( |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1064 to_name, buddy->server_alias) && |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1065 !isalnum(*(to_name + |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1066 friendly_name_length)))); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1067 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1068 if (from_name_matches) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1069 if (!to_name_matches) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1070 name_guessed = NAME_GUESS_THEM; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1071 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1072 } else if (to_name_matches) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1073 name_guessed = NAME_GUESS_ME; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1074 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1075 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1076 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1077 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1078 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1079 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1080 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1081 if (name_guessed != NAME_GUESS_UNKNOWN) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1082 text = g_string_append(text, "<span style=\"color: #"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1083 if (name_guessed == NAME_GUESS_ME) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1084 text = g_string_append(text, "16569E"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1085 else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1086 text = g_string_append(text, "A82F2F"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1087 text = g_string_append(text, ";\">"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1088 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1089 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1090 time_unix = msn_logger_parse_timestamp(message, &tm); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1091 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1092 timestamp = g_strdup_printf("<font size=\"2\">(%02u:%02u:%02u)</font> ", |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1093 tm->tm_hour, tm->tm_min, tm->tm_sec); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1094 text = g_string_append(text, timestamp); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1095 g_free(timestamp); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1096 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1097 if (from_name) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1098 text = g_string_append(text, "<b>"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1099 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1100 if (name_guessed == NAME_GUESS_ME) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1101 if (log->account->alias) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1102 text = g_string_append(text, log->account->alias); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1103 else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1104 text = g_string_append(text, log->account->username); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1105 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1106 else if (name_guessed == NAME_GUESS_THEM) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1107 text = g_string_append(text, their_name); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1108 else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1109 text = g_string_append(text, from_name); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1110 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1111 text = g_string_append(text, ":</b> "); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1112 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1113 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1114 if (name_guessed != NAME_GUESS_UNKNOWN) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1115 text = g_string_append(text, "</span>"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1116 |
18795
883c18d31bf4
Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18785
diff
changeset
|
1117 style = xmlnode_get_attrib(text_node, "Style"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1118 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1119 tmp = xmlnode_get_data(text_node); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1120 if (style && *style) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1121 text = g_string_append(text, "<span style=\""); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1122 text = g_string_append(text, style); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1123 text = g_string_append(text, "\">"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1124 text = g_string_append(text, tmp); |
18372
47ff5e98b371
Make the MSN logger set flags and ues <br> instead of \n. This fixes the
Richard Laager <rlaager@wiktel.com>
parents:
18371
diff
changeset
|
1125 text = g_string_append(text, "</span><br>"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1126 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1127 text = g_string_append(text, tmp); |
18372
47ff5e98b371
Make the MSN logger set flags and ues <br> instead of \n. This fixes the
Richard Laager <rlaager@wiktel.com>
parents:
18371
diff
changeset
|
1128 text = g_string_append(text, "<br>"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1129 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1130 g_free(tmp); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1131 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1132 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1133 data->text = text; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1134 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1135 return text->str; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1136 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1137 |
15822 | 1138 static int msn_logger_size (PurpleLog *log) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1139 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1140 char *text; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1141 size_t size; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1142 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1143 g_return_val_if_fail(log != NULL, 0); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1144 |
16430 | 1145 if (purple_prefs_get_bool("/plugins/core/log_reader/fast_sizes")) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1146 return 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1147 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1148 text = msn_logger_read(log, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1149 size = strlen(text); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1150 g_free(text); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1151 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1152 return size; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1153 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1154 |
15822 | 1155 static void msn_logger_finalize(PurpleLog *log) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1156 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1157 struct msn_logger_data *data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1158 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1159 g_return_if_fail(log != NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1160 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1161 data = log->logger_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1162 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1163 if (data->last_log) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1164 xmlnode_free(data->root); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1165 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1166 if (data->text) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1167 g_string_free(data->text, FALSE); |
18246
e236b3bd4542
Eliminate some leaks.
Richard Laager <rlaager@wiktel.com>
parents:
18245
diff
changeset
|
1168 |
e236b3bd4542
Eliminate some leaks.
Richard Laager <rlaager@wiktel.com>
parents:
18245
diff
changeset
|
1169 g_free(data); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1170 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1171 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1172 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1173 /***************************************************************************** |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1174 * Trillian Logger * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1175 *****************************************************************************/ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1176 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1177 /* The trillian logger doesn't write logs, only reads them. This is to include |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1178 * Trillian logs in the log viewer transparently. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1179 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1180 |
15822 | 1181 static PurpleLogLogger *trillian_logger; |
1182 static void trillian_logger_finalize(PurpleLog *log); | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1183 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1184 struct trillian_logger_data { |
15822 | 1185 char *path; /* FIXME: Change this to use PurpleStringref like log.c:old_logger_list */ |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1186 int offset; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1187 int length; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1188 char *their_nickname; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1189 }; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1190 |
15822 | 1191 static GList *trillian_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1192 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1193 GList *list = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1194 const char *logdir; |
15822 | 1195 PurplePlugin *plugin; |
1196 PurplePluginProtocolInfo *prpl_info; | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1197 char *prpl_name; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1198 const char *buddy_name; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1199 char *filename; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1200 char *path; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1201 GError *error = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1202 gchar *contents = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1203 gsize length; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1204 gchar *line; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1205 gchar *c; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1206 |
18795
883c18d31bf4
Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18785
diff
changeset
|
1207 g_return_val_if_fail(sn != NULL, NULL); |
883c18d31bf4
Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18785
diff
changeset
|
1208 g_return_val_if_fail(account != NULL, NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1209 |
16430 | 1210 logdir = purple_prefs_get_string("/plugins/core/log_reader/trillian/log_directory"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1211 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1212 /* By clearing the log directory path, this logger can be (effectively) disabled. */ |
18795
883c18d31bf4
Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18785
diff
changeset
|
1213 if (!logdir || !*logdir) |
883c18d31bf4
Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18785
diff
changeset
|
1214 return NULL; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1215 |
15822 | 1216 plugin = purple_find_prpl(purple_account_get_protocol_id(account)); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1217 if (!plugin) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1218 return NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1219 |
15822 | 1220 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(plugin); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1221 if (!prpl_info->list_icon) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1222 return NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1223 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1224 prpl_name = g_ascii_strup(prpl_info->list_icon(account, NULL), -1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1225 |
15822 | 1226 buddy_name = purple_normalize(account, sn); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1227 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1228 filename = g_strdup_printf("%s.log", buddy_name); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1229 path = g_build_filename( |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1230 logdir, prpl_name, filename, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1231 |
18245
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
1232 purple_debug_info("Trillian log list", "Reading %s\n", path); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1233 /* FIXME: There's really no need to read the entire file at once. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1234 * See src/log.c:old_logger_list for a better approach. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1235 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1236 if (!g_file_get_contents(path, &contents, &length, &error)) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1237 if (error) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1238 g_error_free(error); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1239 error = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1240 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1241 g_free(path); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1242 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1243 path = g_build_filename( |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1244 logdir, prpl_name, "Query", filename, NULL); |
18245
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
1245 purple_debug_info("Trillian log list", "Reading %s\n", path); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1246 if (!g_file_get_contents(path, &contents, &length, &error)) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1247 if (error) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1248 g_error_free(error); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1249 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1250 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1251 g_free(filename); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1252 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1253 if (contents) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1254 struct trillian_logger_data *data = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1255 int offset = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1256 int last_line_offset = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1257 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1258 line = contents; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1259 c = contents; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1260 while (*c) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1261 offset++; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1262 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1263 if (*c != '\n') { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1264 c++; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1265 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1266 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1267 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1268 *c = '\0'; |
15822 | 1269 if (purple_str_has_prefix(line, "Session Close ")) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1270 if (data && !data->length) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1271 if (!(data->length = last_line_offset - data->offset)) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1272 /* This log had no data, so we remove it. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1273 GList *last = g_list_last(list); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1274 |
18245
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
1275 purple_debug_info("Trillian log list", |
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
1276 "Empty log. Offset %i\n", data->offset); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1277 |
15822 | 1278 trillian_logger_finalize((PurpleLog *)last->data); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1279 list = g_list_delete_link(list, last); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1280 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1281 } |
18108
c0cd4d84ba52
Fix a mistake noticed by Michael Shkutkov and add a comment explaining the code.
Richard Laager <rlaager@wiktel.com>
parents:
17531
diff
changeset
|
1282 } else if (line[0] && line[1] && line[2] && |
15822 | 1283 purple_str_has_prefix(&line[3], "sion Start ")) { |
18108
c0cd4d84ba52
Fix a mistake noticed by Michael Shkutkov and add a comment explaining the code.
Richard Laager <rlaager@wiktel.com>
parents:
17531
diff
changeset
|
1284 /* The conditional is to make sure we're not reading off |
c0cd4d84ba52
Fix a mistake noticed by Michael Shkutkov and add a comment explaining the code.
Richard Laager <rlaager@wiktel.com>
parents:
17531
diff
changeset
|
1285 * the end of the string. We don't want strlen(), as that'd |
c0cd4d84ba52
Fix a mistake noticed by Michael Shkutkov and add a comment explaining the code.
Richard Laager <rlaager@wiktel.com>
parents:
17531
diff
changeset
|
1286 * have to count the whole string needlessly. |
18248
ab761acbc614
Remove trailing whitespace.
Richard Laager <rlaager@wiktel.com>
parents:
18247
diff
changeset
|
1287 * |
18108
c0cd4d84ba52
Fix a mistake noticed by Michael Shkutkov and add a comment explaining the code.
Richard Laager <rlaager@wiktel.com>
parents:
17531
diff
changeset
|
1288 * The odd check here is because a Session Start at the |
c0cd4d84ba52
Fix a mistake noticed by Michael Shkutkov and add a comment explaining the code.
Richard Laager <rlaager@wiktel.com>
parents:
17531
diff
changeset
|
1289 * beginning of the file can be overwritten with a UTF-8 |
c0cd4d84ba52
Fix a mistake noticed by Michael Shkutkov and add a comment explaining the code.
Richard Laager <rlaager@wiktel.com>
parents:
17531
diff
changeset
|
1290 * byte order mark. Yes, it's weird. |
c0cd4d84ba52
Fix a mistake noticed by Michael Shkutkov and add a comment explaining the code.
Richard Laager <rlaager@wiktel.com>
parents:
17531
diff
changeset
|
1291 */ |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1292 char *their_nickname = line; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1293 char *timestamp; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1294 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1295 if (data && !data->length) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1296 data->length = last_line_offset - data->offset; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1297 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1298 while (*their_nickname && (*their_nickname != ':')) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1299 their_nickname++; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1300 their_nickname++; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1301 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1302 /* This code actually has nothing to do with |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1303 * the timestamp YET. I'm simply using this |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1304 * variable for now to NUL-terminate the |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1305 * their_nickname string. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1306 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1307 timestamp = their_nickname; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1308 while (*timestamp && *timestamp != ')') |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1309 timestamp++; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1310 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1311 if (*timestamp == ')') { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1312 char *month; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1313 struct tm tm; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1314 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1315 *timestamp = '\0'; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1316 if (line[0] && line[1] && line[2]) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1317 timestamp += 3; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1318 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1319 /* Now we start dealing with the timestamp. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1320 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1321 /* Skip over the day name. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1322 while (*timestamp && (*timestamp != ' ')) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1323 timestamp++; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1324 *timestamp = '\0'; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1325 timestamp++; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1326 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1327 /* Parse out the month. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1328 month = timestamp; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1329 while (*timestamp && (*timestamp != ' ')) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1330 timestamp++; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1331 *timestamp = '\0'; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1332 timestamp++; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1333 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1334 /* Parse the day, time, and year. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1335 if (sscanf(timestamp, "%u %u:%u:%u %u", |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1336 &tm.tm_mday, &tm.tm_hour, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1337 &tm.tm_min, &tm.tm_sec, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1338 &tm.tm_year) != 5) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1339 |
18245
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
1340 purple_debug_error("Trillian log timestamp parse", |
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
1341 "Session Start parsing error\n"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1342 } else { |
15822 | 1343 PurpleLog *log; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1344 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1345 tm.tm_year -= 1900; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1346 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1347 /* Let the C library deal with |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1348 * daylight savings time. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1349 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1350 tm.tm_isdst = -1; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1351 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1352 /* Ugly hack, in case current locale |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1353 * is not English. This code is taken |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1354 * from log.c. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1355 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1356 if (strcmp(month, "Jan") == 0) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1357 tm.tm_mon= 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1358 } else if (strcmp(month, "Feb") == 0) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1359 tm.tm_mon = 1; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1360 } else if (strcmp(month, "Mar") == 0) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1361 tm.tm_mon = 2; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1362 } else if (strcmp(month, "Apr") == 0) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1363 tm.tm_mon = 3; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1364 } else if (strcmp(month, "May") == 0) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1365 tm.tm_mon = 4; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1366 } else if (strcmp(month, "Jun") == 0) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1367 tm.tm_mon = 5; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1368 } else if (strcmp(month, "Jul") == 0) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1369 tm.tm_mon = 6; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1370 } else if (strcmp(month, "Aug") == 0) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1371 tm.tm_mon = 7; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1372 } else if (strcmp(month, "Sep") == 0) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1373 tm.tm_mon = 8; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1374 } else if (strcmp(month, "Oct") == 0) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1375 tm.tm_mon = 9; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1376 } else if (strcmp(month, "Nov") == 0) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1377 tm.tm_mon = 10; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1378 } else if (strcmp(month, "Dec") == 0) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1379 tm.tm_mon = 11; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1380 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1381 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1382 data = g_new0( |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1383 struct trillian_logger_data, 1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1384 data->path = g_strdup(path); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1385 data->offset = offset; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1386 data->length = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1387 data->their_nickname = |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1388 g_strdup(their_nickname); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1389 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1390 /* XXX: Look into this later... Should we pass in a struct tm? */ |
15822 | 1391 log = purple_log_new(PURPLE_LOG_IM, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1392 sn, account, NULL, mktime(&tm), NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1393 log->logger = trillian_logger; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1394 log->logger_data = data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1395 |
18249
35d981091506
Prepend to lists for performance, and use g_list_reverse when the list is
Richard Laager <rlaager@wiktel.com>
parents:
18248
diff
changeset
|
1396 list = g_list_prepend(list, log); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1397 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1398 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1399 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1400 c++; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1401 line = c; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1402 last_line_offset = offset; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1403 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1404 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1405 g_free(contents); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1406 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1407 g_free(path); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1408 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1409 g_free(prpl_name); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1410 |
18249
35d981091506
Prepend to lists for performance, and use g_list_reverse when the list is
Richard Laager <rlaager@wiktel.com>
parents:
18248
diff
changeset
|
1411 return g_list_reverse(list); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1412 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1413 |
15822 | 1414 static char * trillian_logger_read (PurpleLog *log, PurpleLogReadFlags *flags) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1415 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1416 struct trillian_logger_data *data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1417 char *read; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1418 FILE *file; |
15822 | 1419 PurpleBuddy *buddy; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1420 char *escaped; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1421 GString *formatted; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1422 char *c; |
17528
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1423 const char *line; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1424 |
18795
883c18d31bf4
Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18785
diff
changeset
|
1425 if (flags != NULL) |
883c18d31bf4
Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18785
diff
changeset
|
1426 *flags = PURPLE_LOG_READ_NO_NEWLINE; |
18785
3cc77409b858
bug with flags variable initialization was fixed
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18765
diff
changeset
|
1427 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1428 g_return_val_if_fail(log != NULL, g_strdup("")); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1429 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1430 data = log->logger_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1431 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1432 g_return_val_if_fail(data->path != NULL, g_strdup("")); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1433 g_return_val_if_fail(data->length > 0, g_strdup("")); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1434 g_return_val_if_fail(data->their_nickname != NULL, g_strdup("")); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1435 |
18245
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
1436 purple_debug_info("Trillian log read", "Reading %s\n", data->path); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1437 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1438 read = g_malloc(data->length + 2); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1439 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1440 file = g_fopen(data->path, "rb"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1441 fseek(file, data->offset, SEEK_SET); |
20342
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
1442 data->length = fread(read, data->length, 1, file); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1443 fclose(file); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1444 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1445 if (read[data->length-1] == '\n') { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1446 read[data->length] = '\0'; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1447 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1448 read[data->length] = '\n'; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1449 read[data->length+1] = '\0'; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1450 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1451 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1452 /* Load miscellaneous data. */ |
15822 | 1453 buddy = purple_find_buddy(log->account, log->name); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1454 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1455 escaped = g_markup_escape_text(read, -1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1456 g_free(read); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1457 read = escaped; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1458 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1459 /* Apply formatting... */ |
17529
c529c95e7733
Size the formatting string first, to avoid unnecessary resizing.
Richard Laager <rlaager@wiktel.com>
parents:
17528
diff
changeset
|
1460 formatted = g_string_sized_new(strlen(read)); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1461 c = read; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1462 line = read; |
17528
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1463 while (c) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1464 { |
17528
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1465 const char *link; |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1466 const char *footer = NULL; |
17531
21773944db4b
Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents:
17530
diff
changeset
|
1467 GString *temp = NULL; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1468 |
17531
21773944db4b
Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents:
17530
diff
changeset
|
1469 if ((c = strstr(c, "\n"))) |
21773944db4b
Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents:
17530
diff
changeset
|
1470 { |
17528
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1471 *c = '\0'; |
17531
21773944db4b
Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents:
17530
diff
changeset
|
1472 c++; |
17528
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1473 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1474 |
17528
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1475 /* Convert links. |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1476 * |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1477 * The format is (Link: URL)URL |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1478 * So, I want to find each occurance of "(Link: " and replace that chunk with: |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1479 * <a href=" |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1480 * Then, replace the next ")" with: |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1481 * "> |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1482 * Then, replace the next " " (or add this if the end-of-line is reached) with: |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1483 * </a> |
18248
ab761acbc614
Remove trailing whitespace.
Richard Laager <rlaager@wiktel.com>
parents:
18247
diff
changeset
|
1484 * |
17528
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1485 * As implemented, this isn't perfect, but it should cover common cases. |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1486 */ |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1487 while (line && (link = strstr(line, "(Link: "))) |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1488 { |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1489 const char *tmp = link; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1490 |
17528
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1491 link += 7; |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1492 if (*link) |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1493 { |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1494 char *end_paren; |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1495 char *space; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1496 |
17528
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1497 if (!(end_paren = strstr(link, ")"))) |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1498 { |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1499 /* Something is not as we expect. Bail out. */ |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1500 break; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1501 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1502 |
17531
21773944db4b
Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents:
17530
diff
changeset
|
1503 if (!temp) |
21773944db4b
Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents:
17530
diff
changeset
|
1504 temp = g_string_sized_new(c ? (c - 1 - line) : strlen(line)); |
21773944db4b
Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents:
17530
diff
changeset
|
1505 |
17528
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1506 g_string_append_len(temp, line, (tmp - line)); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1507 |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1508 /* Start an <a> tag. */ |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1509 g_string_append(temp, "<a href=\""); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1510 |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1511 /* Append up to the ) */ |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1512 g_string_append_len(temp, link, end_paren - link); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1513 |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1514 /* Finish the <a> tag. */ |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1515 g_string_append(temp, "\">"); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1516 |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1517 /* The \r is a bit of a hack to keep there from being a \r in |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1518 * the link text, which may not matter. */ |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1519 if ((space = strstr(end_paren, " ")) || (space = strstr(end_paren, "\r"))) |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1520 { |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1521 g_string_append_len(temp, end_paren + 1, space - end_paren - 1); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1522 |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1523 /* Close the <a> tag. */ |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1524 g_string_append(temp, "</a>"); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1525 |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1526 space++; |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1527 } |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1528 else |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1529 { |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1530 /* There is no space before the end of the line. */ |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1531 g_string_append(temp, end_paren + 1); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1532 /* Close the <a> tag. */ |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1533 g_string_append(temp, "</a>"); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1534 } |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1535 line = space; |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1536 } |
17530
a6594c34635b
Bail out to avoid an infinite loop in an extreme corner case.
Richard Laager <rlaager@wiktel.com>
parents:
17529
diff
changeset
|
1537 else |
a6594c34635b
Bail out to avoid an infinite loop in an extreme corner case.
Richard Laager <rlaager@wiktel.com>
parents:
17529
diff
changeset
|
1538 { |
a6594c34635b
Bail out to avoid an infinite loop in an extreme corner case.
Richard Laager <rlaager@wiktel.com>
parents:
17529
diff
changeset
|
1539 /* Something is not as we expect. Bail out. */ |
a6594c34635b
Bail out to avoid an infinite loop in an extreme corner case.
Richard Laager <rlaager@wiktel.com>
parents:
17529
diff
changeset
|
1540 break; |
a6594c34635b
Bail out to avoid an infinite loop in an extreme corner case.
Richard Laager <rlaager@wiktel.com>
parents:
17529
diff
changeset
|
1541 } |
17528
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1542 } |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1543 |
17531
21773944db4b
Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents:
17530
diff
changeset
|
1544 if (temp) |
21773944db4b
Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents:
17530
diff
changeset
|
1545 { |
21773944db4b
Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents:
17530
diff
changeset
|
1546 if (line) |
21773944db4b
Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents:
17530
diff
changeset
|
1547 g_string_append(temp, line); |
21773944db4b
Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents:
17530
diff
changeset
|
1548 line = temp->str; |
17528
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1549 } |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1550 |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1551 if (*line == '[') { |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1552 const char *timestamp; |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1553 |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1554 if ((timestamp = strstr(line, "]"))) { |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1555 line++; |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1556 /* TODO: Parse the timestamp and convert it to Purple's format. */ |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1557 g_string_append(formatted, "<font size=\"2\">("); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1558 g_string_append_len(formatted, line, (timestamp - line)); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1559 g_string_append(formatted,")</font> "); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1560 line = timestamp + 1; |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1561 if (line[0] && line[1]) |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1562 line++; |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1563 } |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1564 |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1565 if (purple_str_has_prefix(line, "*** ")) { |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1566 line += (sizeof("*** ") - 1); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1567 g_string_append(formatted, "<b>"); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1568 footer = "</b>"; |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1569 if (purple_str_has_prefix(line, "NOTE: This user is offline.")) { |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1570 line = _("User is offline."); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1571 } else if (purple_str_has_prefix(line, |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1572 "NOTE: Your status is currently set to ")) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1573 |
17528
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1574 line += (sizeof("NOTE: ") - 1); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1575 } else if (purple_str_has_prefix(line, "Auto-response sent to ")) { |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1576 g_string_append(formatted, _("Auto-response sent:")); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1577 while (*line && *line != ':') |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1578 line++; |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1579 if (*line) |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1580 line++; |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1581 g_string_append(formatted, "</b>"); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1582 footer = NULL; |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1583 } else if (strstr(line, " signed off ")) { |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1584 if (buddy != NULL && buddy->alias) |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1585 g_string_append_printf(formatted, |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1586 _("%s has signed off."), buddy->alias); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1587 else |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1588 g_string_append_printf(formatted, |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1589 _("%s has signed off."), log->name); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1590 line = ""; |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1591 } else if (strstr(line, " signed on ")) { |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1592 if (buddy != NULL && buddy->alias) |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1593 g_string_append(formatted, buddy->alias); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1594 else |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1595 g_string_append(formatted, log->name); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1596 line = " logged in."; |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1597 } else if (purple_str_has_prefix(line, |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1598 "One or more messages may have been undeliverable.")) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1599 |
17528
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1600 g_string_append(formatted, |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1601 "<span style=\"color: #ff0000;\">"); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1602 g_string_append(formatted, |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1603 _("One or more messages may have been " |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1604 "undeliverable.")); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1605 line = ""; |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1606 footer = "</span></b>"; |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1607 } else if (purple_str_has_prefix(line, |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1608 "You have been disconnected.")) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1609 |
17528
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1610 g_string_append(formatted, |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1611 "<span style=\"color: #ff0000;\">"); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1612 g_string_append(formatted, |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1613 _("You were disconnected from the server.")); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1614 line = ""; |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1615 footer = "</span></b>"; |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1616 } else if (purple_str_has_prefix(line, |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1617 "You are currently disconnected.")) { |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1618 |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1619 g_string_append(formatted, |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1620 "<span style=\"color: #ff0000;\">"); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1621 line = _("You are currently disconnected. Messages " |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1622 "will not be received unless you are " |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1623 "logged in."); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1624 footer = "</span></b>"; |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1625 } else if (purple_str_has_prefix(line, |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1626 "Your previous message has not been sent.")) { |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1627 |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1628 g_string_append(formatted, |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1629 "<span style=\"color: #ff0000;\">"); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1630 |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1631 if (purple_str_has_prefix(line, |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1632 "Your previous message has not been sent. " |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1633 "Reason: Maximum length exceeded.")) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1634 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1635 g_string_append(formatted, |
17528
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1636 _("Message could not be sent because " |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1637 "the maximum length was exceeded.")); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1638 line = ""; |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1639 } else { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1640 g_string_append(formatted, |
17528
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1641 _("Message could not be sent.")); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1642 line += (sizeof( |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1643 "Your previous message " |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1644 "has not been sent. ") - 1); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1645 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1646 |
17528
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1647 footer = "</span></b>"; |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1648 } |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1649 } else if (purple_str_has_prefix(line, data->their_nickname)) { |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1650 if (buddy != NULL && buddy->alias) { |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1651 line += strlen(data->their_nickname) + 2; |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1652 g_string_append_printf(formatted, |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1653 "<span style=\"color: #A82F2F;\">" |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1654 "<b>%s</b></span>: ", buddy->alias); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1655 } |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1656 } else { |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1657 const char *line2 = strstr(line, ":"); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1658 if (line2) { |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1659 const char *acct_name; |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1660 line2++; |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1661 line = line2; |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1662 acct_name = purple_account_get_alias(log->account); |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1663 if (!acct_name) |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1664 acct_name = purple_account_get_username(log->account); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1665 |
17528
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1666 g_string_append_printf(formatted, |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1667 "<span style=\"color: #16569E;\">" |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1668 "<b>%s</b></span>:", acct_name); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1669 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1670 } |
17528
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1671 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1672 |
17528
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1673 g_string_append(formatted, line); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1674 |
17531
21773944db4b
Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents:
17530
diff
changeset
|
1675 line = c; |
21773944db4b
Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents:
17530
diff
changeset
|
1676 if (temp) |
21773944db4b
Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents:
17530
diff
changeset
|
1677 g_string_free(temp, TRUE); |
21773944db4b
Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents:
17530
diff
changeset
|
1678 |
17528
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1679 if (footer) |
beeef78409b2
A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents:
17467
diff
changeset
|
1680 g_string_append(formatted, footer); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1681 |
18360
d8f783ed28d3
Make the Trillian logger set flags properly, and use <br> instead of \n for
Richard Laager <rlaager@wiktel.com>
parents:
18359
diff
changeset
|
1682 g_string_append(formatted, "<br>"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1683 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1684 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1685 g_free(read); |
18360
d8f783ed28d3
Make the Trillian logger set flags properly, and use <br> instead of \n for
Richard Laager <rlaager@wiktel.com>
parents:
18359
diff
changeset
|
1686 |
d8f783ed28d3
Make the Trillian logger set flags properly, and use <br> instead of \n for
Richard Laager <rlaager@wiktel.com>
parents:
18359
diff
changeset
|
1687 /* XXX: TODO: What can we do about removing \r characters? |
d8f783ed28d3
Make the Trillian logger set flags properly, and use <br> instead of \n for
Richard Laager <rlaager@wiktel.com>
parents:
18359
diff
changeset
|
1688 * XXX: TODO: and will that allow us to avoid this |
d8f783ed28d3
Make the Trillian logger set flags properly, and use <br> instead of \n for
Richard Laager <rlaager@wiktel.com>
parents:
18359
diff
changeset
|
1689 * XXX: TODO: g_strchomp(), or is that unrelated? */ |
17531
21773944db4b
Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents:
17530
diff
changeset
|
1690 /* XXX: TODO: Avoid this g_strchomp() */ |
21773944db4b
Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents:
17530
diff
changeset
|
1691 return g_strchomp(g_string_free(formatted, FALSE)); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1692 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1693 |
15822 | 1694 static int trillian_logger_size (PurpleLog *log) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1695 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1696 struct trillian_logger_data *data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1697 char *text; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1698 size_t size; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1699 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1700 g_return_val_if_fail(log != NULL, 0); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1701 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1702 data = log->logger_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1703 |
16430 | 1704 if (purple_prefs_get_bool("/plugins/core/log_reader/fast_sizes")) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1705 return data ? data->length : 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1706 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1707 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1708 text = trillian_logger_read(log, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1709 size = strlen(text); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1710 g_free(text); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1711 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1712 return size; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1713 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1714 |
15822 | 1715 static void trillian_logger_finalize(PurpleLog *log) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1716 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1717 struct trillian_logger_data *data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1718 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1719 g_return_if_fail(log != NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1720 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1721 data = log->logger_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1722 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1723 g_free(data->path); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1724 g_free(data->their_nickname); |
18246
e236b3bd4542
Eliminate some leaks.
Richard Laager <rlaager@wiktel.com>
parents:
18245
diff
changeset
|
1725 g_free(data); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1726 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1727 |
17979
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1728 /***************************************************************************** |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1729 * QIP Logger * |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1730 *****************************************************************************/ |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1731 |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1732 /* The QIP logger doesn't write logs, only reads them. This is to include |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1733 * QIP logs in the log viewer transparently. |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1734 */ |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1735 #define QIP_LOG_DELIMITER "--------------------------------------" |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1736 #define QIP_LOG_IN_MESSAGE (QIP_LOG_DELIMITER "<-") |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1737 #define QIP_LOG_OUT_MESSAGE (QIP_LOG_DELIMITER ">-") |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1738 #define QIP_LOG_IN_MESSAGE_ESC (QIP_LOG_DELIMITER "<-") |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1739 #define QIP_LOG_OUT_MESSAGE_ESC (QIP_LOG_DELIMITER ">-") |
18176
b14dfa2f49a1
creat new log if difference between current and previous message more then predefined constant (currently one hour)
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18175
diff
changeset
|
1740 #define QIP_LOG_TIMEOUT (60*60) |
17979
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1741 |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1742 static PurpleLogLogger *qip_logger; |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1743 |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1744 struct qip_logger_data { |
18248
ab761acbc614
Remove trailing whitespace.
Richard Laager <rlaager@wiktel.com>
parents:
18247
diff
changeset
|
1745 |
17979
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1746 char *path; /* FIXME: Change this to use PurpleStringref like log.c:old_logger_list */ |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1747 int offset; |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1748 int length; |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1749 }; |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1750 |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1751 static GList *qip_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account) |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1752 { |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1753 GList *list = NULL; |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1754 const char *logdir; |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1755 PurplePlugin *plugin; |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1756 PurplePluginProtocolInfo *prpl_info; |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1757 char *username; |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1758 char *filename; |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1759 char *path; |
18251
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1760 char *contents; |
18247
97671eb4991e
Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents:
18246
diff
changeset
|
1761 struct qip_logger_data *data = NULL; |
97671eb4991e
Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents:
18246
diff
changeset
|
1762 struct tm prev_tm; |
18254
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1763 struct tm tm; |
18247
97671eb4991e
Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents:
18246
diff
changeset
|
1764 gboolean prev_tm_init = FALSE; |
18254
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1765 gboolean main_cycle = TRUE; |
18247
97671eb4991e
Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents:
18246
diff
changeset
|
1766 char *c; |
97671eb4991e
Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents:
18246
diff
changeset
|
1767 char *start_log; |
18254
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1768 char *new_line; |
18247
97671eb4991e
Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents:
18246
diff
changeset
|
1769 int offset = 0; |
18255
507fb436d8c0
optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18254
diff
changeset
|
1770 GError *error; |
17979
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1771 |
18795
883c18d31bf4
Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18785
diff
changeset
|
1772 g_return_val_if_fail(sn != NULL, NULL); |
883c18d31bf4
Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18785
diff
changeset
|
1773 g_return_val_if_fail(account != NULL, NULL); |
17979
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1774 |
18247
97671eb4991e
Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents:
18246
diff
changeset
|
1775 /* QIP only supports ICQ. */ |
17979
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1776 if (strcmp(account->protocol_id, "prpl-icq")) |
18795
883c18d31bf4
Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18785
diff
changeset
|
1777 return NULL; |
17979
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1778 |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1779 logdir = purple_prefs_get_string("/plugins/core/log_reader/qip/log_directory"); |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1780 |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1781 /* By clearing the log directory path, this logger can be (effectively) disabled. */ |
18795
883c18d31bf4
Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18785
diff
changeset
|
1782 if (!logdir || !*logdir) |
883c18d31bf4
Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18785
diff
changeset
|
1783 return NULL; |
17979
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1784 |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1785 plugin = purple_find_prpl(purple_account_get_protocol_id(account)); |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1786 if (!plugin) |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1787 return NULL; |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1788 |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1789 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(plugin); |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1790 if (!prpl_info->list_icon) |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1791 return NULL; |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1792 |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1793 username = g_strdup(purple_normalize(account, account->username)); |
18247
97671eb4991e
Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents:
18246
diff
changeset
|
1794 filename = g_strdup_printf("%s.txt", purple_normalize(account, sn)); |
97671eb4991e
Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents:
18246
diff
changeset
|
1795 path = g_build_filename(logdir, username, "History", filename, NULL); |
97671eb4991e
Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents:
18246
diff
changeset
|
1796 g_free(username); |
97671eb4991e
Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents:
18246
diff
changeset
|
1797 g_free(filename); |
97671eb4991e
Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents:
18246
diff
changeset
|
1798 |
18255
507fb436d8c0
optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18254
diff
changeset
|
1799 purple_debug_info("QIP logger", "Reading %s\n", path); |
507fb436d8c0
optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18254
diff
changeset
|
1800 |
507fb436d8c0
optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18254
diff
changeset
|
1801 error = NULL; |
507fb436d8c0
optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18254
diff
changeset
|
1802 if (!g_file_get_contents(path, &contents, NULL, &error)) { |
507fb436d8c0
optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18254
diff
changeset
|
1803 purple_debug_error("QIP logger", |
20329
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
1804 "Couldn't read file %s: %s \n", path, |
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
1805 (error && error->message) ? error->message : "Unknown error"); |
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
1806 if (error) |
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
1807 g_error_free(error); |
18247
97671eb4991e
Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents:
18246
diff
changeset
|
1808 g_free(path); |
97671eb4991e
Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents:
18246
diff
changeset
|
1809 return list; |
97671eb4991e
Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents:
18246
diff
changeset
|
1810 } |
97671eb4991e
Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents:
18246
diff
changeset
|
1811 |
97671eb4991e
Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents:
18246
diff
changeset
|
1812 c = contents; |
97671eb4991e
Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents:
18246
diff
changeset
|
1813 start_log = contents; |
18254
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1814 while (main_cycle) { |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1815 |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1816 gboolean add_new_log = FALSE; |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1817 |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1818 if (*c) { |
18255
507fb436d8c0
optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18254
diff
changeset
|
1819 if (purple_str_has_prefix(c, QIP_LOG_IN_MESSAGE) || |
507fb436d8c0
optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18254
diff
changeset
|
1820 purple_str_has_prefix(c, QIP_LOG_OUT_MESSAGE)) { |
18254
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1821 |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1822 char *tmp; |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1823 |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1824 new_line = c; |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1825 |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1826 /* find EOL */ |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1827 c = strstr(c, "\n"); |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1828 c++; |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1829 |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1830 /* Find the last '(' character. */ |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1831 if ((tmp = strstr(c, "\n")) != NULL) { |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1832 while (*tmp && *tmp != '(') --tmp; |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1833 c = tmp; |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1834 } else { |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1835 while (*c) |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1836 c++; |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1837 c--; |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1838 c = g_strrstr(c, "("); |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1839 } |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1840 |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1841 if (c != NULL) { |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1842 const char *timestamp = ++c; |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1843 |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1844 /* Parse the time, day, month and year */ |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1845 if (sscanf(timestamp, "%u:%u:%u %u/%u/%u", |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1846 &tm.tm_hour, &tm.tm_min, &tm.tm_sec, |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1847 &tm.tm_mday, &tm.tm_mon, &tm.tm_year) != 6) { |
18247
97671eb4991e
Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents:
18246
diff
changeset
|
1848 |
97671eb4991e
Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents:
18246
diff
changeset
|
1849 purple_debug_error("QIP logger list", |
18254
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1850 "Parsing timestamp error\n"); |
18247
97671eb4991e
Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents:
18246
diff
changeset
|
1851 } else { |
18254
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1852 tm.tm_mon -= 1; |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1853 tm.tm_year -= 1900; |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1854 |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1855 /* Let the C library deal with |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1856 * daylight savings time. */ |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1857 tm.tm_isdst = -1; |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1858 |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1859 if (!prev_tm_init) { |
18247
97671eb4991e
Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents:
18246
diff
changeset
|
1860 prev_tm = tm; |
18254
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1861 prev_tm_init = TRUE; |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1862 } else { |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1863 add_new_log = difftime(mktime(&tm), mktime(&prev_tm)) > QIP_LOG_TIMEOUT; |
18176
b14dfa2f49a1
creat new log if difference between current and previous message more then predefined constant (currently one hour)
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18175
diff
changeset
|
1864 } |
b14dfa2f49a1
creat new log if difference between current and previous message more then predefined constant (currently one hour)
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18175
diff
changeset
|
1865 } |
b14dfa2f49a1
creat new log if difference between current and previous message more then predefined constant (currently one hour)
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18175
diff
changeset
|
1866 } |
b14dfa2f49a1
creat new log if difference between current and previous message more then predefined constant (currently one hour)
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18175
diff
changeset
|
1867 } |
18247
97671eb4991e
Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents:
18246
diff
changeset
|
1868 } else { |
18254
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1869 add_new_log = TRUE; |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1870 main_cycle = FALSE; |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1871 new_line = c; |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1872 } |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1873 |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1874 /* adding log */ |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1875 if (add_new_log && prev_tm_init) { |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1876 PurpleLog *log; |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1877 |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1878 /* filling data */ |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1879 data = g_new0(struct qip_logger_data, 1); |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1880 data->path = g_strdup(path); |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1881 data->length = new_line - start_log; |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1882 data->offset = offset; |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1883 offset += data->length; |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1884 purple_debug_info("QIP logger list", |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1885 "Creating log: path = (%s); length = (%d); offset = (%d)\n", |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1886 data->path, data->length, data->offset); |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1887 |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1888 /* XXX: Look into this later... Should we pass in a struct tm? */ |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1889 log = purple_log_new(PURPLE_LOG_IM, sn, account, |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1890 NULL, mktime(&prev_tm), NULL); |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1891 |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1892 log->logger = qip_logger; |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1893 log->logger_data = data; |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1894 |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1895 list = g_list_prepend(list, log); |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1896 |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1897 prev_tm = tm; |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1898 start_log = new_line; |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1899 } |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1900 |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1901 if (*c) { |
991f33e9e1a4
avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18253
diff
changeset
|
1902 /* find EOF */ |
18247
97671eb4991e
Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents:
18246
diff
changeset
|
1903 c = strstr(c, "\n"); |
97671eb4991e
Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents:
18246
diff
changeset
|
1904 c++; |
18172
3aa11b0169c9
Converting all qip logs into UTF8
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18171
diff
changeset
|
1905 } |
18247
97671eb4991e
Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents:
18246
diff
changeset
|
1906 } |
18248
ab761acbc614
Remove trailing whitespace.
Richard Laager <rlaager@wiktel.com>
parents:
18247
diff
changeset
|
1907 |
18247
97671eb4991e
Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents:
18246
diff
changeset
|
1908 g_free(contents); |
17979
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1909 g_free(path); |
18249
35d981091506
Prepend to lists for performance, and use g_list_reverse when the list is
Richard Laager <rlaager@wiktel.com>
parents:
18248
diff
changeset
|
1910 return g_list_reverse(list); |
17979
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1911 } |
18248
ab761acbc614
Remove trailing whitespace.
Richard Laager <rlaager@wiktel.com>
parents:
18247
diff
changeset
|
1912 |
18251
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1913 static char *qip_logger_read(PurpleLog *log, PurpleLogReadFlags *flags) |
17979
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1914 { |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1915 struct qip_logger_data *data; |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1916 PurpleBuddy *buddy; |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1917 GString *formatted; |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1918 char *c; |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1919 const char *line; |
18251
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1920 gchar *contents; |
18255
507fb436d8c0
optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18254
diff
changeset
|
1921 GError *error; |
507fb436d8c0
optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18254
diff
changeset
|
1922 char *utf8_string; |
18256
54251fa6389d
reading only necessary part of log file using g_fopen/fseek/fread
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18255
diff
changeset
|
1923 FILE *file; |
54251fa6389d
reading only necessary part of log file using g_fopen/fseek/fread
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18255
diff
changeset
|
1924 |
18795
883c18d31bf4
Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18785
diff
changeset
|
1925 if (flags != NULL) |
883c18d31bf4
Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18785
diff
changeset
|
1926 *flags = PURPLE_LOG_READ_NO_NEWLINE; |
18785
3cc77409b858
bug with flags variable initialization was fixed
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18765
diff
changeset
|
1927 |
17979
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1928 g_return_val_if_fail(log != NULL, g_strdup("")); |
18248
ab761acbc614
Remove trailing whitespace.
Richard Laager <rlaager@wiktel.com>
parents:
18247
diff
changeset
|
1929 |
17979
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1930 data = log->logger_data; |
18248
ab761acbc614
Remove trailing whitespace.
Richard Laager <rlaager@wiktel.com>
parents:
18247
diff
changeset
|
1931 |
17979
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1932 g_return_val_if_fail(data->path != NULL, g_strdup("")); |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1933 g_return_val_if_fail(data->length > 0, g_strdup("")); |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
1934 |
18256
54251fa6389d
reading only necessary part of log file using g_fopen/fseek/fread
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18255
diff
changeset
|
1935 file = g_fopen(data->path, "rb"); |
54251fa6389d
reading only necessary part of log file using g_fopen/fseek/fread
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18255
diff
changeset
|
1936 g_return_val_if_fail(file != NULL, g_strdup("")); |
20332
3a9709bfde65
applied changes from 4d50bf3b08569aa2108a9f5da47fb1548d0c7dd9
Luke Schierer <lschiere@pidgin.im>
parents:
20329
diff
changeset
|
1937 |
3a9709bfde65
applied changes from 4d50bf3b08569aa2108a9f5da47fb1548d0c7dd9
Luke Schierer <lschiere@pidgin.im>
parents:
20329
diff
changeset
|
1938 contents = g_malloc(data->length + 2); |
3a9709bfde65
applied changes from 4d50bf3b08569aa2108a9f5da47fb1548d0c7dd9
Luke Schierer <lschiere@pidgin.im>
parents:
20329
diff
changeset
|
1939 |
18256
54251fa6389d
reading only necessary part of log file using g_fopen/fseek/fread
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18255
diff
changeset
|
1940 fseek(file, data->offset, SEEK_SET); |
20342
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
1941 data->length = fread(contents, data->length, 1, file); |
18256
54251fa6389d
reading only necessary part of log file using g_fopen/fseek/fread
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18255
diff
changeset
|
1942 fclose(file); |
54251fa6389d
reading only necessary part of log file using g_fopen/fseek/fread
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18255
diff
changeset
|
1943 |
54251fa6389d
reading only necessary part of log file using g_fopen/fseek/fread
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18255
diff
changeset
|
1944 contents[data->length] = '\n'; |
54251fa6389d
reading only necessary part of log file using g_fopen/fseek/fread
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18255
diff
changeset
|
1945 contents[data->length + 1] = '\0'; |
18255
507fb436d8c0
optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18254
diff
changeset
|
1946 |
507fb436d8c0
optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18254
diff
changeset
|
1947 /* Convert file contents from Cp1251 to UTF-8 codeset */ |
507fb436d8c0
optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18254
diff
changeset
|
1948 error = NULL; |
507fb436d8c0
optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18254
diff
changeset
|
1949 if (!(utf8_string = g_convert(contents, -1, "UTF-8", "Cp1251", NULL, NULL, &error))) { |
507fb436d8c0
optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18254
diff
changeset
|
1950 purple_debug_error("QIP logger", |
20329
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
1951 "Couldn't convert file %s to UTF-8: %s\n", data->path, |
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
1952 (error && error->message) ? error->message : "Unknown error"); |
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
1953 if (error) |
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
1954 g_error_free(error); |
18255
507fb436d8c0
optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18254
diff
changeset
|
1955 g_free(contents); |
507fb436d8c0
optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18254
diff
changeset
|
1956 return g_strdup(""); |
507fb436d8c0
optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18254
diff
changeset
|
1957 } |
18251
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1958 |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1959 g_free(contents); |
18255
507fb436d8c0
optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18254
diff
changeset
|
1960 contents = g_markup_escape_text(utf8_string, -1); |
507fb436d8c0
optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18254
diff
changeset
|
1961 g_free(utf8_string); |
507fb436d8c0
optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18254
diff
changeset
|
1962 |
507fb436d8c0
optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18254
diff
changeset
|
1963 buddy = purple_find_buddy(log->account, log->name); |
18251
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1964 |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1965 /* Apply formatting... */ |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1966 formatted = g_string_sized_new(data->length + 2); |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1967 c = contents; |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1968 line = contents; |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1969 |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1970 while (*c) { |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1971 gboolean is_in_message = FALSE; |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1972 |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1973 if (purple_str_has_prefix(line, QIP_LOG_IN_MESSAGE_ESC) || |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1974 purple_str_has_prefix(line, QIP_LOG_OUT_MESSAGE_ESC)) { |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1975 |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1976 char *tmp; |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1977 const char *buddy_name; |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1978 |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1979 is_in_message = purple_str_has_prefix(line, QIP_LOG_IN_MESSAGE_ESC); |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1980 |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1981 /* find EOL */ |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1982 c = strstr(c, "\n"); |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1983 |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1984 /* XXX: Do we need buddy_name when we have buddy->alias? */ |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1985 buddy_name = ++c; |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1986 |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1987 /* Find the last '(' character. */ |
18252
6722bbd698ff
using while cycle instead of g_strrstr, because g_strrstr doesn't work properly. g_strrstr finds the last '(' of the string, not the line.
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18251
diff
changeset
|
1988 if ((tmp = strstr(c, "\n")) != NULL) { |
6722bbd698ff
using while cycle instead of g_strrstr, because g_strrstr doesn't work properly. g_strrstr finds the last '(' of the string, not the line.
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18251
diff
changeset
|
1989 while (*tmp && *tmp != '(') --tmp; |
6722bbd698ff
using while cycle instead of g_strrstr, because g_strrstr doesn't work properly. g_strrstr finds the last '(' of the string, not the line.
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18251
diff
changeset
|
1990 c = tmp; |
6722bbd698ff
using while cycle instead of g_strrstr, because g_strrstr doesn't work properly. g_strrstr finds the last '(' of the string, not the line.
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18251
diff
changeset
|
1991 } else { |
18251
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1992 while (*c) |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1993 c++; |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1994 c--; |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1995 c = g_strrstr(c, "("); |
18172
3aa11b0169c9
Converting all qip logs into UTF8
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18171
diff
changeset
|
1996 } |
18251
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1997 |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1998 if (c != NULL) { |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
1999 const char *timestamp = c; |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2000 int hour; |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2001 int min; |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2002 int sec; |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2003 |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2004 timestamp++; |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2005 |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2006 /* Parse the time, day, month and year */ |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2007 if (sscanf(timestamp, "%u:%u:%u", |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2008 &hour, &min, &sec) != 3) { |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2009 purple_debug_error("QIP logger read", |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2010 "Parsing timestamp error\n"); |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2011 } else { |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2012 g_string_append(formatted, "<font size=\"2\">"); |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2013 /* TODO: Figure out if we can do anything more locale-independent. */ |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2014 g_string_append_printf(formatted, |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2015 "(%u:%02u:%02u) %cM ", hour % 12, |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2016 min, sec, (hour >= 12) ? 'P': 'A'); |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2017 g_string_append(formatted, "</font> "); |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2018 |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2019 if (is_in_message) { |
20332
3a9709bfde65
applied changes from 4d50bf3b08569aa2108a9f5da47fb1548d0c7dd9
Luke Schierer <lschiere@pidgin.im>
parents:
20329
diff
changeset
|
2020 if (buddy_name != NULL && buddy != NULL && buddy->alias) { |
18251
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2021 g_string_append_printf(formatted, |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2022 "<span style=\"color: #A82F2F;\">" |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2023 "<b>%s</b></span>: ", buddy->alias); |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2024 } |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2025 } else { |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2026 const char *acct_name; |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2027 acct_name = purple_account_get_alias(log->account); |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2028 if (!acct_name) |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2029 acct_name = purple_account_get_username(log->account); |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2030 |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2031 g_string_append_printf(formatted, |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2032 "<span style=\"color: #16569E;\">" |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2033 "<b>%s</b></span>: ", acct_name); |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2034 } |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2035 |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2036 /* find EOF */ |
18172
3aa11b0169c9
Converting all qip logs into UTF8
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18171
diff
changeset
|
2037 c = strstr(c, "\n"); |
3aa11b0169c9
Converting all qip logs into UTF8
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18171
diff
changeset
|
2038 line = ++c; |
18170
179bb0ea89c7
Using g_file_get_contents instead of common file operations; all DEBUG_MESSAGEs were removed
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18169
diff
changeset
|
2039 } |
17979
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2040 } |
18251
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2041 } else { |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2042 if ((c = strstr(c, "\n"))) |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2043 *c = '\0'; |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2044 |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2045 if (line[0] != '\n' && line[0] != '\r') { |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2046 |
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2047 g_string_append(formatted, line); |
18359
d1e7c8015308
using <br> as end of line instead of '\n' in QIP logger. With this change History plugin works fine
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18256
diff
changeset
|
2048 g_string_append(formatted, "<br>"); |
18251
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2049 } |
20332
3a9709bfde65
applied changes from 4d50bf3b08569aa2108a9f5da47fb1548d0c7dd9
Luke Schierer <lschiere@pidgin.im>
parents:
20329
diff
changeset
|
2050 |
3a9709bfde65
applied changes from 4d50bf3b08569aa2108a9f5da47fb1548d0c7dd9
Luke Schierer <lschiere@pidgin.im>
parents:
20329
diff
changeset
|
2051 if (c) |
3a9709bfde65
applied changes from 4d50bf3b08569aa2108a9f5da47fb1548d0c7dd9
Luke Schierer <lschiere@pidgin.im>
parents:
20329
diff
changeset
|
2052 line = ++c; |
17979
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2053 } |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2054 } |
18170
179bb0ea89c7
Using g_file_get_contents instead of common file operations; all DEBUG_MESSAGEs were removed
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18169
diff
changeset
|
2055 g_free(contents); |
18251
8908e9ec2420
Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents:
18250
diff
changeset
|
2056 |
17979
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2057 /* XXX: TODO: Avoid this g_strchomp() */ |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2058 return g_strchomp(g_string_free(formatted, FALSE)); |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2059 } |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2060 |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2061 static int qip_logger_size (PurpleLog *log) |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2062 { |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2063 struct qip_logger_data *data; |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2064 char *text; |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2065 size_t size; |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2066 |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2067 g_return_val_if_fail(log != NULL, 0); |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2068 |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2069 data = log->logger_data; |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2070 |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2071 if (purple_prefs_get_bool("/plugins/core/log_reader/fast_sizes")) { |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2072 return data ? data->length : 0; |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2073 } |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2074 |
18248
ab761acbc614
Remove trailing whitespace.
Richard Laager <rlaager@wiktel.com>
parents:
18247
diff
changeset
|
2075 text = qip_logger_read(log, NULL); |
17979
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2076 size = strlen(text); |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2077 g_free(text); |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2078 |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2079 return size; |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2080 } |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2081 |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2082 static void qip_logger_finalize(PurpleLog *log) |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2083 { |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2084 struct qip_logger_data *data; |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2085 |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2086 g_return_if_fail(log != NULL); |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2087 |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2088 data = log->logger_data; |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2089 |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2090 g_free(data->path); |
18246
e236b3bd4542
Eliminate some leaks.
Richard Laager <rlaager@wiktel.com>
parents:
18245
diff
changeset
|
2091 g_free(data); |
17979
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2092 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2093 |
20342
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2094 /************************************************************************* |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2095 * aMSN Logger * |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2096 *************************************************************************/ |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2097 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2098 /* The aMSN logger doesn't write logs, only reads them. This is to include |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2099 * aMSN logs in the log viewer transparently. |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2100 */ |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2101 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2102 static PurpleLogLogger *amsn_logger; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2103 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2104 struct amsn_logger_data { |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2105 char *path; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2106 int offset; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2107 int length; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2108 }; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2109 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2110 #define AMSN_LOG_CONV_START "|\"LRED[Conversation started on " |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2111 #define AMSN_LOG_CONV_END "|\"LRED[You have closed the window on " |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2112 #define AMSN_LOG_CONV_EXTRA "01 Aug 2001 00:00:00]" |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2113 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2114 /* `log_dir`/username@hotmail.com/logs/buddyname@hotmail.com.log */ |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2115 /* `log_dir`/username@hotmail.com/logs/Month Year/buddyname@hotmail.com.log */ |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2116 static GList *amsn_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account) |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2117 { |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2118 GList *list = NULL; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2119 struct amsn_logger_data *data; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2120 const char *logdir; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2121 char *username; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2122 char *log_path; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2123 char *buddy_log; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2124 char *filename; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2125 GDir *dir; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2126 const char *name; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2127 GError *error; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2128 char *contents; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2129 PurpleLog *log; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2130 GList *files = NULL; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2131 GList *f; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2132 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2133 logdir = purple_prefs_get_string("/plugins/core/log_reader/amsn/log_directory"); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2134 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2135 /* By clearing the log directory path, this logger can be (effectively) disabled. */ |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2136 if (!logdir || !*logdir) |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2137 return NULL; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2138 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2139 /* aMSN only works with MSN/WLM */ |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2140 if (strcmp(account->protocol_id, "prpl-msn")) |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2141 return NULL; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2142 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2143 username = g_strdup(purple_normalize(account, account->username)); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2144 buddy_log = g_strdup_printf("%s.log", purple_normalize(account, sn)); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2145 log_path = g_build_filename(logdir, username, "logs", NULL); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2146 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2147 /* First check in the top-level */ |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2148 filename = g_build_filename(log_path, buddy_log, NULL); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2149 if (g_file_test(filename, G_FILE_TEST_EXISTS)) |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2150 files = g_list_prepend(files, filename); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2151 else |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2152 g_free(filename); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2153 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2154 /* Check in previous months */ |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2155 dir = g_dir_open(log_path, 0, NULL); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2156 if (dir) { |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2157 while ((name = g_dir_read_name(dir)) != NULL) { |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2158 filename = g_build_filename(log_path, name, buddy_log, NULL); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2159 if (g_file_test(filename, G_FILE_TEST_EXISTS)) |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2160 files = g_list_prepend(files, filename); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2161 else |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2162 g_free(filename); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2163 } |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2164 g_dir_close(dir); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2165 } |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2166 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2167 g_free(log_path); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2168 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2169 /* New versions use 'friendlier' directory names */ |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2170 purple_util_chrreplace(username, '@', '_'); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2171 purple_util_chrreplace(username, '.', '_'); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2172 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2173 log_path = g_build_filename(logdir, username, "logs", NULL); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2174 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2175 /* First check in the top-level */ |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2176 filename = g_build_filename(log_path, buddy_log, NULL); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2177 if (g_file_test(filename, G_FILE_TEST_EXISTS)) |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2178 files = g_list_prepend(files, filename); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2179 else |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2180 g_free(filename); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2181 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2182 /* Check in previous months */ |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2183 dir = g_dir_open(log_path, 0, NULL); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2184 if (dir) { |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2185 while ((name = g_dir_read_name(dir)) != NULL) { |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2186 filename = g_build_filename(log_path, name, buddy_log, NULL); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2187 if (g_file_test(filename, G_FILE_TEST_EXISTS)) |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2188 files = g_list_prepend(files, filename); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2189 else |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2190 g_free(filename); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2191 } |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2192 g_dir_close(dir); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2193 } |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2194 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2195 g_free(log_path); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2196 g_free(username); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2197 g_free(buddy_log); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2198 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2199 /* Loop through files looking for logs */ |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2200 for(f = g_list_first(files); f; f = g_list_next(f)) { |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2201 filename = f->data; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2202 purple_debug_info("aMSN logger", "Reading %s\n", filename); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2203 error = NULL; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2204 if (!g_file_get_contents(filename, &contents, NULL, &error)) { |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2205 purple_debug_error("aMSN logger", |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2206 "Couldn't read file %s: %s \n", filename, |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2207 (error && error->message) ? |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2208 error->message : "Unknown error"); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2209 if (error) |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2210 g_error_free(error); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2211 } else { |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2212 char *c = contents; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2213 gboolean found_start = FALSE; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2214 char *start_log = c; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2215 int offset = 0; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2216 struct tm tm; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2217 while (c && *c) { |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2218 if (purple_str_has_prefix(c, AMSN_LOG_CONV_START)) { |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2219 char month[4]; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2220 if (sscanf(c + strlen(AMSN_LOG_CONV_START), |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2221 "%u %3s %u %u:%u:%u", |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2222 &tm.tm_mday, (char*)&month, &tm.tm_year, |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2223 &tm.tm_hour, &tm.tm_min, &tm.tm_sec) != 6) { |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2224 found_start = FALSE; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2225 purple_debug_error("aMSN logger", |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2226 "Error parsing start date for %s\n", |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2227 filename); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2228 } else { |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2229 const char *months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2230 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", NULL}; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2231 tm.tm_year -= 1900; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2232 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2233 /* Let the C library deal with |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2234 * daylight savings time. |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2235 */ |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2236 tm.tm_isdst = -1; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2237 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2238 /* Ugly hack, in case current locale |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2239 * is not English. This code is taken |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2240 * from log.c. |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2241 */ |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2242 for (tm.tm_mon = 0; months[tm.tm_mon]; tm.tm_mon++) { |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2243 if (strcmp(month, months[tm.tm_mon]) == 0) |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2244 break; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2245 } |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2246 found_start = TRUE; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2247 offset = c - contents; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2248 start_log = c; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2249 } |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2250 } else if (purple_str_has_prefix(c, AMSN_LOG_CONV_END) && found_start) { |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2251 data = g_new0(struct amsn_logger_data, 1); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2252 data->path = g_strdup(filename); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2253 data->offset = offset; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2254 data->length = c - start_log |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2255 + strlen(AMSN_LOG_CONV_END) |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2256 + strlen(AMSN_LOG_CONV_EXTRA); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2257 log = purple_log_new(PURPLE_LOG_IM, sn, account, NULL, mktime(&tm), NULL); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2258 log->logger = amsn_logger; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2259 log->logger_data = data; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2260 list = g_list_prepend(list, log); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2261 found_start = FALSE; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2262 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2263 purple_debug_info("aMSN logger", |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2264 "Found log for %s:" |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2265 " path = (%s)," |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2266 " offset = (%d)," |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2267 " length = (%d)\n", |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2268 sn, data->path, data->offset, data->length); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2269 } |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2270 c = strstr(c, "\n"); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2271 c++; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2272 } |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2273 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2274 /* I've seen the file end without the AMSN_LOG_CONV_END bit */ |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2275 if (found_start) { |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2276 data = g_new0(struct amsn_logger_data, 1); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2277 data->path = g_strdup(filename); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2278 data->offset = offset; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2279 data->length = c - start_log |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2280 + strlen(AMSN_LOG_CONV_END) |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2281 + strlen(AMSN_LOG_CONV_EXTRA); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2282 log = purple_log_new(PURPLE_LOG_IM, sn, account, NULL, mktime(&tm), NULL); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2283 log->logger = amsn_logger; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2284 log->logger_data = data; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2285 list = g_list_prepend(list, log); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2286 found_start = FALSE; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2287 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2288 purple_debug_info("aMSN logger", |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2289 "Found log for %s:" |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2290 " path = (%s)," |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2291 " offset = (%d)," |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2292 " length = (%d)\n", |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2293 sn, data->path, data->offset, data->length); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2294 } |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2295 g_free(contents); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2296 } |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2297 g_free(filename); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2298 } |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2299 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2300 g_list_free(files); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2301 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2302 return list; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2303 } |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2304 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2305 /* Really it's |"L, but the string's been escaped */ |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2306 #define AMSN_LOG_FORMAT_TAG "|"L" |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2307 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2308 static char *amsn_logger_read(PurpleLog *log, PurpleLogReadFlags *flags) |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2309 { |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2310 struct amsn_logger_data *data; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2311 FILE *file; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2312 char *contents; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2313 char *escaped; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2314 GString *formatted; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2315 char *start; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2316 gboolean in_span = FALSE; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2317 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2318 if (flags != NULL) |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2319 *flags = PURPLE_LOG_READ_NO_NEWLINE; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2320 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2321 g_return_val_if_fail(log != NULL, g_strdup("")); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2322 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2323 data = log->logger_data; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2324 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2325 g_return_val_if_fail(data->path != NULL, g_strdup("")); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2326 g_return_val_if_fail(data->length > 0, g_strdup("")); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2327 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2328 contents = g_malloc(data->length + 2); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2329 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2330 file = g_fopen(data->path, "rb"); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2331 g_return_val_if_fail(file != NULL, g_strdup("")); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2332 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2333 fseek(file, data->offset, SEEK_SET); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2334 data->length = fread(contents, data->length, 1, file); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2335 fclose(file); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2336 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2337 contents[data->length] = '\n'; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2338 contents[data->length + 1] = '\0'; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2339 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2340 escaped = g_markup_escape_text(contents, -1); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2341 g_free(contents); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2342 contents = escaped; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2343 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2344 formatted = g_string_sized_new(data->length + 2); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2345 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2346 start = contents; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2347 while (start && *start) { |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2348 char *end; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2349 char *old_tag; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2350 char *tag; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2351 end = strstr(start, "\n"); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2352 if (!end) |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2353 break; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2354 *end = '\0'; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2355 if (purple_str_has_prefix(start, AMSN_LOG_FORMAT_TAG) && in_span) { |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2356 /* New format for this line */ |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2357 g_string_append(formatted, "</span><br>"); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2358 in_span = FALSE; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2359 } else if (start != contents) { |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2360 /* Continue format from previous line */ |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2361 g_string_append(formatted, "<br>"); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2362 } |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2363 old_tag = start; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2364 tag = strstr(start, AMSN_LOG_FORMAT_TAG); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2365 while (tag) { |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2366 g_string_append_len(formatted, old_tag, tag - old_tag); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2367 tag += strlen(AMSN_LOG_FORMAT_TAG); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2368 if (in_span) { |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2369 g_string_append(formatted, "</span>"); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2370 in_span = FALSE; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2371 } |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2372 if (*tag == 'C') { |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2373 /* |"LCxxxxxx is a hex colour */ |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2374 char colour[7]; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2375 strncpy(colour, tag + 1, 6); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2376 colour[6] = '\0'; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2377 g_string_append_printf(formatted, "<span style=\"color: #%s;\">", colour); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2378 /* This doesn't appear to work? */ |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2379 /* g_string_append_printf(formatted, "<span style=\"color: #%6s;\">", tag + 1); */ |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2380 in_span = TRUE; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2381 old_tag = tag + 7; /* C + xxxxxx */ |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2382 } else { |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2383 /* |"Lxxx is a 3-digit colour code */ |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2384 if (purple_str_has_prefix(tag, "RED")) { |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2385 g_string_append(formatted, "<span style=\"color: red;\">"); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2386 in_span = TRUE; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2387 } else if (purple_str_has_prefix(tag, "GRA")) { |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2388 g_string_append(formatted, "<span style=\"color: gray;\">"); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2389 in_span = TRUE; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2390 } else if (purple_str_has_prefix(tag, "NOR")) { |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2391 g_string_append(formatted, "<span style=\"color: black;\">"); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2392 in_span = TRUE; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2393 } else if (purple_str_has_prefix(tag, "ITA")) { |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2394 g_string_append(formatted, "<span style=\"color: blue;\">"); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2395 in_span = TRUE; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2396 } else if (purple_str_has_prefix(tag, "GRE")) { |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2397 g_string_append(formatted, "<span style=\"color: darkgreen;\">"); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2398 in_span = TRUE; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2399 } else { |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2400 purple_debug_info("aMSN logger", "Unknown colour format: %3s\n", tag); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2401 } |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2402 old_tag = tag + 3; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2403 } |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2404 tag = strstr(tag, AMSN_LOG_FORMAT_TAG); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2405 } |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2406 g_string_append(formatted, old_tag); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2407 start = end + 1; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2408 } |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2409 if (in_span) |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2410 g_string_append(formatted, "</span>"); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2411 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2412 g_free(contents); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2413 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2414 return g_string_free(formatted, FALSE); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2415 } |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2416 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2417 static int amsn_logger_size(PurpleLog *log) |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2418 { |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2419 struct amsn_logger_data *data; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2420 char *text; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2421 int size; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2422 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2423 g_return_val_if_fail(log != NULL, 0); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2424 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2425 data = log->logger_data; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2426 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2427 if (purple_prefs_get_bool("/plugins/core/log_reader/fast_sizes")) { |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2428 return data ? data->length : 0; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2429 } |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2430 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2431 text = amsn_logger_read(log, NULL); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2432 size = strlen(text); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2433 g_free(text); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2434 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2435 return size; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2436 } |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2437 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2438 static void amsn_logger_finalize(PurpleLog *log) |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2439 { |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2440 struct amsn_logger_data *data; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2441 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2442 g_return_if_fail(log != NULL); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2443 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2444 data = log->logger_data; |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2445 g_free(data->path); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2446 g_free(data); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2447 } |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2448 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2449 /***************************************************************************** |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2450 * Plugin Code * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2451 *****************************************************************************/ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2452 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2453 static void |
15822 | 2454 init_plugin(PurplePlugin *plugin) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2455 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2456 char *path; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2457 #ifdef _WIN32 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2458 char *folder; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2459 gboolean found = FALSE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2460 #endif |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2461 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2462 g_return_if_fail(plugin != NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2463 |
16430 | 2464 purple_prefs_add_none("/plugins/core/log_reader"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2465 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2466 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2467 /* Add general preferences. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2468 |
16430 | 2469 purple_prefs_add_bool("/plugins/core/log_reader/fast_sizes", FALSE); |
2470 purple_prefs_add_bool("/plugins/core/log_reader/use_name_heuristics", TRUE); | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2471 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2472 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2473 /* Add Adium log directory preference. */ |
16430 | 2474 purple_prefs_add_none("/plugins/core/log_reader/adium"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2475 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2476 /* Calculate default Adium log directory. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2477 #ifdef _WIN32 |
18250
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2478 purple_prefs_add_string("/plugins/core/log_reader/adium/log_directory", ""); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2479 #else |
18250
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2480 path = g_build_filename(purple_home_dir(), "Library", "Application Support", |
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2481 "Adium 2.0", "Users", "Default", "Logs", NULL); |
16430 | 2482 purple_prefs_add_string("/plugins/core/log_reader/adium/log_directory", path); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2483 g_free(path); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2484 #endif |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2485 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2486 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2487 /* Add Fire log directory preference. */ |
16430 | 2488 purple_prefs_add_none("/plugins/core/log_reader/fire"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2489 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2490 /* Calculate default Fire log directory. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2491 #ifdef _WIN32 |
18250
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2492 purple_prefs_add_string("/plugins/core/log_reader/fire/log_directory", ""); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2493 #else |
18250
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2494 path = g_build_filename(purple_home_dir(), "Library", "Application Support", |
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2495 "Fire", "Sessions", NULL); |
16430 | 2496 purple_prefs_add_string("/plugins/core/log_reader/fire/log_directory", path); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2497 g_free(path); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2498 #endif |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2499 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2500 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2501 /* Add Messenger Plus! log directory preference. */ |
16430 | 2502 purple_prefs_add_none("/plugins/core/log_reader/messenger_plus"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2503 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2504 /* Calculate default Messenger Plus! log directory. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2505 #ifdef _WIN32 |
20329
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
2506 path = NULL; |
15822 | 2507 folder = wpurple_get_special_folder(CSIDL_PERSONAL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2508 if (folder) { |
18250
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2509 path = g_build_filename(folder, "My Chat Logs", NULL); |
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2510 g_free(folder); |
20329
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
2511 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2512 #else |
18250
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2513 path = g_build_filename(PURPLE_LOG_READER_WINDOWS_MOUNT_POINT, |
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2514 "Documents and Settings", g_get_user_name(), |
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2515 "My Documents", "My Chat Logs", NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2516 #endif |
20329
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
2517 purple_prefs_add_string("/plugins/core/log_reader/messenger_plus/log_directory", path ? path : ""); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2518 g_free(path); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2519 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2520 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2521 /* Add MSN Messenger log directory preference. */ |
16430 | 2522 purple_prefs_add_none("/plugins/core/log_reader/msn"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2523 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2524 /* Calculate default MSN message history directory. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2525 #ifdef _WIN32 |
20329
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
2526 path = NULL; |
15822 | 2527 folder = wpurple_get_special_folder(CSIDL_PERSONAL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2528 if (folder) { |
18250
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2529 path = g_build_filename(folder, "My Received Files", NULL); |
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2530 g_free(folder); |
20329
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
2531 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2532 #else |
18250
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2533 path = g_build_filename(PURPLE_LOG_READER_WINDOWS_MOUNT_POINT, |
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2534 "Documents and Settings", g_get_user_name(), |
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2535 "My Documents", "My Received Files", NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2536 #endif |
20329
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
2537 purple_prefs_add_string("/plugins/core/log_reader/msn/log_directory", path ? path : ""); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2538 g_free(path); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2539 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2540 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2541 /* Add Trillian log directory preference. */ |
16430 | 2542 purple_prefs_add_none("/plugins/core/log_reader/trillian"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2543 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2544 #ifdef _WIN32 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2545 /* XXX: While a major hack, this is the most reliable way I could |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2546 * think of to determine the Trillian installation directory. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2547 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2548 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2549 path = NULL; |
15822 | 2550 if ((folder = wpurple_read_reg_string(HKEY_CLASSES_ROOT, "Trillian.SkinZip\\shell\\Add\\command\\", NULL))) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2551 char *value = folder; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2552 char *temp; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2553 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2554 /* Break apart buffer. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2555 if (*value == '"') { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2556 value++; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2557 temp = value; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2558 while (*temp && *temp != '"') |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2559 temp++; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2560 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2561 temp = value; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2562 while (*temp && *temp != ' ') |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2563 temp++; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2564 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2565 *temp = '\0'; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2566 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2567 /* Set path. */ |
15822 | 2568 if (purple_str_has_suffix(value, "trillian.exe")) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2569 value[strlen(value) - (sizeof("trillian.exe") - 1)] = '\0'; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2570 path = g_build_filename(value, "users", "default", "talk.ini", NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2571 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2572 g_free(folder); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2573 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2574 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2575 if (!path) { |
15822 | 2576 char *folder = wpurple_get_special_folder(CSIDL_PROGRAM_FILES); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2577 if (folder) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2578 path = g_build_filename(folder, "Trillian", |
18250
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2579 "users", "default", "talk.ini", NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2580 g_free(folder); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2581 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2582 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2583 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2584 if (path) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2585 /* Read talk.ini file to find the log directory. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2586 GError *error = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2587 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2588 #if 0 && GLIB_CHECK_VERSION(2,6,0) /* FIXME: Not tested yet. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2589 GKeyFile *key_file; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2590 |
18245
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
2591 purple_debug_info("Trillian talk.ini read", "Reading %s\n", path); |
18248
ab761acbc614
Remove trailing whitespace.
Richard Laager <rlaager@wiktel.com>
parents:
18247
diff
changeset
|
2592 |
18175
038c14fcadb8
setting error to NULL before using
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
18174
diff
changeset
|
2593 error = NULL; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2594 if (!g_key_file_load_from_file(key_file, path, G_KEY_FILE_NONE, GError &error)) { |
18245
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
2595 purple_debug_error("Trillian talk.ini read", |
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
2596 "Error reading talk.ini\n"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2597 if (error) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2598 g_error_free(error); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2599 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2600 char *logdir = g_key_file_get_string(key_file, "Logging", "Directory", &error); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2601 if (error) { |
18245
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
2602 purple_debug_error("Trillian talk.ini read", |
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
2603 "Error reading Directory value from Logging section\n"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2604 g_error_free(error); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2605 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2606 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2607 if (logdir) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2608 g_strchomp(logdir); |
18245
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
2609 purple_prefs_add_string("/plugins/core/log_reader/trillian/log_directory", logdir); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2610 found = TRUE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2611 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2612 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2613 g_key_file_free(key_file); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2614 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2615 #else /* !GLIB_CHECK_VERSION(2,6,0) */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2616 gchar *contents = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2617 |
18245
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
2618 purple_debug_info("Trillian talk.ini read", |
20329
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
2619 "Reading %s\n", path); |
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
2620 if (!g_file_get_contents(path, &contents, NULL, &error)) { |
18245
30b67808b85b
Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents:
18244
diff
changeset
|
2621 purple_debug_error("Trillian talk.ini read", |
20329
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
2622 "Error reading talk.ini: %s\n", |
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
2623 (error && error->message) ? error->message : "Unknown error"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2624 if (error) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2625 g_error_free(error); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2626 } else { |
20329
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
2627 char *cursor, *line; |
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
2628 line = cursor = contents; |
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
2629 while (*cursor) { |
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
2630 if (*cursor == '\n') { |
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
2631 *cursor = '\0'; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2632 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2633 /* XXX: This assumes the first Directory key is under [Logging]. */ |
15822 | 2634 if (purple_str_has_prefix(line, "Directory=")) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2635 line += (sizeof("Directory=") - 1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2636 g_strchomp(line); |
15822 | 2637 purple_prefs_add_string( |
16430 | 2638 "/plugins/core/log_reader/trillian/log_directory", |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2639 line); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2640 found = TRUE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2641 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2642 |
20329
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
2643 cursor++; |
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
2644 line = cursor; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2645 } else |
20329
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
2646 cursor++; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2647 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2648 g_free(contents); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2649 } |
20329
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
2650 g_free(path); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2651 #endif /* !GTK_CHECK_VERSION(2,6,0) */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2652 } /* path */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2653 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2654 if (!found) { |
20329
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
2655 path = NULL; |
18250
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2656 folder = wpurple_get_special_folder(CSIDL_PROGRAM_FILES); |
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2657 if (folder) { |
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2658 path = g_build_filename(folder, "Trillian", "users", |
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2659 "default", "logs", NULL); |
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2660 g_free(folder); |
20329
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
2661 } |
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
2662 |
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
2663 purple_prefs_add_string( |
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
2664 "/plugins/core/log_reader/trillian/log_directory", path ? path : ""); |
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
2665 g_free(path); |
18250
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2666 } |
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2667 #else /* !defined(_WIN32) */ |
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2668 /* TODO: At some point, this could attempt to parse talk.ini |
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2669 * TODO: from the default Trillian install directory on the |
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2670 * TODO: Windows mount point. */ |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2671 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2672 /* Calculate default Trillian log directory. */ |
18250
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2673 path = g_build_filename(PURPLE_LOG_READER_WINDOWS_MOUNT_POINT, |
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2674 "Program Files", "Trillian", "users", |
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2675 "default", "logs", NULL); |
20329
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
2676 purple_prefs_add_string( |
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
2677 "/plugins/core/log_reader/trillian/log_directory", path); |
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
2678 g_free(path); |
18250
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2679 #endif |
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2680 |
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2681 /* Add QIP log directory preference. */ |
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2682 purple_prefs_add_none("/plugins/core/log_reader/qip"); |
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2683 |
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2684 /* Calculate default QIP log directory. */ |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2685 #ifdef _WIN32 |
20329
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
2686 path = NULL; |
15822 | 2687 folder = wpurple_get_special_folder(CSIDL_PROGRAM_FILES); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2688 if (folder) { |
18250
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2689 path = g_build_filename(folder, "QIP", "Users", NULL); |
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2690 g_free(folder); |
20329
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
2691 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2692 #else |
18250
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2693 path = g_build_filename(PURPLE_LOG_READER_WINDOWS_MOUNT_POINT, |
7a6a1da4121b
Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents:
18249
diff
changeset
|
2694 "Program Files", "QIP", "Users", NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2695 #endif |
20329
24ce4fcce5b0
applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents:
20319
diff
changeset
|
2696 purple_prefs_add_string("/plugins/core/log_reader/qip/log_directory", path ? path : ""); |
17979
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2697 g_free(path); |
20342
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2698 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2699 /* Add aMSN Messenger log directory preference. */ |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2700 purple_prefs_add_none("/plugins/core/log_reader/amsn"); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2701 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2702 /* Calculate default aMSN log directory. */ |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2703 #ifdef _WIN32 |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2704 folder = wpurple_get_special_folder(CSIDL_PROFILE); /* Silly aMSN, not using CSIDL_APPDATA */ |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2705 path = g_build_filename(folder, "amsn", NULL); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2706 #else |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2707 path = g_build_filename(purple_home_dir(), ".amsn", NULL); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2708 #endif |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2709 purple_prefs_add_string("/plugins/core/log_reader/amsn/log_directory", path); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2710 g_free(path); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2711 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2712 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2713 static gboolean |
15822 | 2714 plugin_load(PurplePlugin *plugin) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2715 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2716 g_return_val_if_fail(plugin != NULL, FALSE); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2717 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2718 /* The names of IM clients are marked for translation at the request of |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2719 translators who wanted to transliterate them. Many translators |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2720 choose to leave them alone. Choose what's best for your language. */ |
15822 | 2721 adium_logger = purple_log_logger_new("adium", _("Adium"), 6, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2722 NULL, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2723 NULL, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2724 adium_logger_finalize, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2725 adium_logger_list, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2726 adium_logger_read, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2727 adium_logger_size); |
15822 | 2728 purple_log_logger_add(adium_logger); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2729 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2730 #if 0 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2731 /* The names of IM clients are marked for translation at the request of |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2732 translators who wanted to transliterate them. Many translators |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2733 choose to leave them alone. Choose what's best for your language. */ |
15822 | 2734 fire_logger = purple_log_logger_new("fire", _("Fire"), 6, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2735 NULL, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2736 NULL, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2737 fire_logger_finalize, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2738 fire_logger_list, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2739 fire_logger_read, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2740 fire_logger_size); |
15822 | 2741 purple_log_logger_add(fire_logger); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2742 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2743 /* The names of IM clients are marked for translation at the request of |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2744 translators who wanted to transliterate them. Many translators |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2745 choose to leave them alone. Choose what's best for your language. */ |
15822 | 2746 messenger_plus_logger = purple_log_logger_new("messenger_plus", _("Messenger Plus!"), 6, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2747 NULL, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2748 NULL, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2749 messenger_plus_logger_finalize, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2750 messenger_plus_logger_list, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2751 messenger_plus_logger_read, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2752 messenger_plus_logger_size); |
15822 | 2753 purple_log_logger_add(messenger_plus_logger); |
18248
ab761acbc614
Remove trailing whitespace.
Richard Laager <rlaager@wiktel.com>
parents:
18247
diff
changeset
|
2754 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2755 #endif |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2756 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2757 /* The names of IM clients are marked for translation at the request of |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2758 translators who wanted to transliterate them. Many translators |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2759 choose to leave them alone. Choose what's best for your language. */ |
17979
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2760 qip_logger = purple_log_logger_new("qip", _("QIP"), 6, |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2761 NULL, |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2762 NULL, |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2763 qip_logger_finalize, |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2764 qip_logger_list, |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2765 qip_logger_read, |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2766 qip_logger_size); |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2767 purple_log_logger_add(qip_logger); |
18248
ab761acbc614
Remove trailing whitespace.
Richard Laager <rlaager@wiktel.com>
parents:
18247
diff
changeset
|
2768 |
17979
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2769 /* The names of IM clients are marked for translation at the request of |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2770 translators who wanted to transliterate them. Many translators |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2771 choose to leave them alone. Choose what's best for your language. */ |
15822 | 2772 msn_logger = purple_log_logger_new("msn", _("MSN Messenger"), 6, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2773 NULL, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2774 NULL, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2775 msn_logger_finalize, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2776 msn_logger_list, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2777 msn_logger_read, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2778 msn_logger_size); |
15822 | 2779 purple_log_logger_add(msn_logger); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2780 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2781 /* The names of IM clients are marked for translation at the request of |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2782 translators who wanted to transliterate them. Many translators |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2783 choose to leave them alone. Choose what's best for your language. */ |
15822 | 2784 trillian_logger = purple_log_logger_new("trillian", _("Trillian"), 6, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2785 NULL, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2786 NULL, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2787 trillian_logger_finalize, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2788 trillian_logger_list, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2789 trillian_logger_read, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2790 trillian_logger_size); |
15822 | 2791 purple_log_logger_add(trillian_logger); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2792 |
20342
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2793 /* The names of IM clients are marked for translation at the request of |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2794 translators who wanted to transliterate them. Many translators |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2795 choose to leave them alone. Choose what's best for your language. */ |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2796 amsn_logger = purple_log_logger_new("amsn", _("aMSN"), 6, |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2797 NULL, |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2798 NULL, |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2799 amsn_logger_finalize, |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2800 amsn_logger_list, |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2801 amsn_logger_read, |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2802 amsn_logger_size); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2803 purple_log_logger_add(amsn_logger); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2804 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2805 return TRUE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2806 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2807 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2808 static gboolean |
15822 | 2809 plugin_unload(PurplePlugin *plugin) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2810 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2811 g_return_val_if_fail(plugin != NULL, FALSE); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2812 |
15822 | 2813 purple_log_logger_remove(adium_logger); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2814 #if 0 |
15822 | 2815 purple_log_logger_remove(fire_logger); |
2816 purple_log_logger_remove(messenger_plus_logger); | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2817 #endif |
15822 | 2818 purple_log_logger_remove(msn_logger); |
2819 purple_log_logger_remove(trillian_logger); | |
17979
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2820 purple_log_logger_remove(qip_logger); |
20342
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2821 purple_log_logger_remove(amsn_logger); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2822 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2823 return TRUE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2824 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2825 |
15822 | 2826 static PurplePluginPrefFrame * |
2827 get_plugin_pref_frame(PurplePlugin *plugin) | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2828 { |
15822 | 2829 PurplePluginPrefFrame *frame; |
2830 PurplePluginPref *ppref; | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2831 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2832 g_return_val_if_fail(plugin != NULL, FALSE); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2833 |
15822 | 2834 frame = purple_plugin_pref_frame_new(); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2835 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2836 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2837 /* Add general preferences. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2838 |
15822 | 2839 ppref = purple_plugin_pref_new_with_label(_("General Log Reading Configuration")); |
2840 purple_plugin_pref_frame_add(frame, ppref); | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2841 |
15822 | 2842 ppref = purple_plugin_pref_new_with_name_and_label( |
16430 | 2843 "/plugins/core/log_reader/fast_sizes", _("Fast size calculations")); |
15822 | 2844 purple_plugin_pref_frame_add(frame, ppref); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2845 |
15822 | 2846 ppref = purple_plugin_pref_new_with_name_and_label( |
16430 | 2847 "/plugins/core/log_reader/use_name_heuristics", _("Use name heuristics")); |
15822 | 2848 purple_plugin_pref_frame_add(frame, ppref); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2849 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2850 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2851 /* Add Log Directory preferences. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2852 |
15822 | 2853 ppref = purple_plugin_pref_new_with_label(_("Log Directory")); |
2854 purple_plugin_pref_frame_add(frame, ppref); | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2855 |
15822 | 2856 ppref = purple_plugin_pref_new_with_name_and_label( |
16430 | 2857 "/plugins/core/log_reader/adium/log_directory", _("Adium")); |
15822 | 2858 purple_plugin_pref_frame_add(frame, ppref); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2859 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2860 #if 0 |
15822 | 2861 ppref = purple_plugin_pref_new_with_name_and_label( |
16430 | 2862 "/plugins/core/log_reader/fire/log_directory", _("Fire")); |
15822 | 2863 purple_plugin_pref_frame_add(frame, ppref); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2864 |
15822 | 2865 ppref = purple_plugin_pref_new_with_name_and_label( |
16430 | 2866 "/plugins/core/log_reader/messenger_plus/log_directory", _("Messenger Plus!")); |
15822 | 2867 purple_plugin_pref_frame_add(frame, ppref); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2868 #endif |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2869 |
15822 | 2870 ppref = purple_plugin_pref_new_with_name_and_label( |
17979
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2871 "/plugins/core/log_reader/qip/log_directory", _("QIP")); |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2872 purple_plugin_pref_frame_add(frame, ppref); |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2873 |
c8d2e131cc37
QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents:
17531
diff
changeset
|
2874 ppref = purple_plugin_pref_new_with_name_and_label( |
16430 | 2875 "/plugins/core/log_reader/msn/log_directory", _("MSN Messenger")); |
15822 | 2876 purple_plugin_pref_frame_add(frame, ppref); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2877 |
15822 | 2878 ppref = purple_plugin_pref_new_with_name_and_label( |
16430 | 2879 "/plugins/core/log_reader/trillian/log_directory", _("Trillian")); |
15822 | 2880 purple_plugin_pref_frame_add(frame, ppref); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2881 |
20342
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2882 ppref = purple_plugin_pref_new_with_name_and_label( |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2883 "/plugins/core/log_reader/amsn/log_directory", _("aMSN")); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2884 purple_plugin_pref_frame_add(frame, ppref); |
d4cdca890d8e
applied changes from 4d9fac4aab275ee133ce860edc469e0e5c4734ff
Luke Schierer <lschiere@pidgin.im>
parents:
20332
diff
changeset
|
2885 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2886 return frame; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2887 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2888 |
15822 | 2889 static PurplePluginUiInfo prefs_info = { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2890 get_plugin_pref_frame, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2891 0, /* page_num (reserved) */ |
16666
5205dd2bd035
And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents:
16430
diff
changeset
|
2892 NULL, /* frame (reserved) */ |
5205dd2bd035
And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents:
16430
diff
changeset
|
2893 |
5205dd2bd035
And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents:
16430
diff
changeset
|
2894 /* padding */ |
5205dd2bd035
And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents:
16430
diff
changeset
|
2895 NULL, |
5205dd2bd035
And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents:
16430
diff
changeset
|
2896 NULL, |
5205dd2bd035
And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents:
16430
diff
changeset
|
2897 NULL, |
5205dd2bd035
And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents:
16430
diff
changeset
|
2898 NULL |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2899 }; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2900 |
15822 | 2901 static PurplePluginInfo info = |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2902 { |
15822 | 2903 PURPLE_PLUGIN_MAGIC, |
2904 PURPLE_MAJOR_VERSION, | |
2905 PURPLE_MINOR_VERSION, | |
2906 PURPLE_PLUGIN_STANDARD, /**< type */ | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2907 NULL, /**< ui_requirement */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2908 0, /**< flags */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2909 NULL, /**< dependencies */ |
15822 | 2910 PURPLE_PRIORITY_DEFAULT, /**< priority */ |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2911 "core-log_reader", /**< id */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2912 N_("Log Reader"), /**< name */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2913 VERSION, /**< version */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2914 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2915 /** summary */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2916 N_("Includes other IM clients' logs in the " |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2917 "log viewer."), |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2918 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2919 /** description */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2920 N_("When viewing logs, this plugin will include " |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2921 "logs from other IM clients. Currently, this " |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2922 "includes Adium, MSN Messenger, and Trillian.\n\n" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2923 "WARNING: This plugin is still alpha code and " |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2924 "may crash frequently. Use it at your own risk!"), |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2925 |
15566
b6615958d87c
Switching to my pidgin.im e-mail address, which I think fits nicely and seems professional.
Richard Laager <rlaager@wiktel.com>
parents:
15373
diff
changeset
|
2926 "Richard Laager <rlaager@pidgin.im>", /**< author */ |
15822 | 2927 PURPLE_WEBSITE, /**< homepage */ |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2928 plugin_load, /**< load */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2929 plugin_unload, /**< unload */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2930 NULL, /**< destroy */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2931 NULL, /**< ui_info */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2932 NULL, /**< extra_info */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2933 &prefs_info, /**< prefs_info */ |
16666
5205dd2bd035
And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents:
16430
diff
changeset
|
2934 NULL, /**< actions */ |
5205dd2bd035
And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents:
16430
diff
changeset
|
2935 |
5205dd2bd035
And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents:
16430
diff
changeset
|
2936 /* padding */ |
5205dd2bd035
And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents:
16430
diff
changeset
|
2937 NULL, |
5205dd2bd035
And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents:
16430
diff
changeset
|
2938 NULL, |
5205dd2bd035
And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents:
16430
diff
changeset
|
2939 NULL, |
5205dd2bd035
And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents:
16430
diff
changeset
|
2940 NULL |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2941 }; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2942 |
15822 | 2943 PURPLE_INIT_PLUGIN(log_reader, init_plugin, info) |