libpurple/plugins/log_reader.c

Sun, 15 Sep 2013 10:44:31 +0530

author
Ankit Vani <a@nevitus.org>
date
Sun, 15 Sep 2013 10:44:31 +0530
branch
soc.2013.gobjectification.plugins
changeset 36727
e846113d7f87
parent 36719
0d7682bdf828
child 36746
502c8d343054
permissions
-rw-r--r--

Some more fixes

28981
4e3922ab4844 Include 'internal.h' before all other headers to make some non-gcc compilers happy.
Paul Aurich <darkrain42@pidgin.im>
parents: 27524
diff changeset
1 #include "internal.h"
4e3922ab4844 Include 'internal.h' before all other headers to make some non-gcc compilers happy.
Paul Aurich <darkrain42@pidgin.im>
parents: 27524
diff changeset
2
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
3 #include <stdio.h>
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
4
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
5 #include "debug.h"
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
6 #include "log.h"
36367
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36361
diff changeset
7 #include "plugins.h"
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
8 #include "pluginpref.h"
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
9 #include "prefs.h"
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
10 #include "stringref.h"
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
11 #include "util.h"
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
12 #include "version.h"
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
13 #include "xmlnode.h"
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
14
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
15 /* This must be the last Purple header included. */
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
16 #ifdef _WIN32
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
17 #include "win32dep.h"
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
18 #endif
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
19
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
20 /* Where is the Windows partition mounted? */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
21 #ifndef PURPLE_LOG_READER_WINDOWS_MOUNT_POINT
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
22 #define PURPLE_LOG_READER_WINDOWS_MOUNT_POINT "/mnt/windows"
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
23 #endif
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
24
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
25 enum name_guesses {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
26 NAME_GUESS_UNKNOWN,
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
27 NAME_GUESS_ME,
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
28 NAME_GUESS_THEM
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
29 };
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
30
20985
ba4d20527e23 Use functions and loops and all those fancy things.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20974
diff changeset
31 /* Some common functions. */
ba4d20527e23 Use functions and loops and all those fancy things.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20974
diff changeset
32 static int get_month(const char *month)
ba4d20527e23 Use functions and loops and all those fancy things.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20974
diff changeset
33 {
ba4d20527e23 Use functions and loops and all those fancy things.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20974
diff changeset
34 int iter;
ba4d20527e23 Use functions and loops and all those fancy things.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20974
diff changeset
35 const char *months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun",
ba4d20527e23 Use functions and loops and all those fancy things.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20974
diff changeset
36 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", NULL};
ba4d20527e23 Use functions and loops and all those fancy things.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20974
diff changeset
37 for (iter = 0; months[iter]; iter++) {
ba4d20527e23 Use functions and loops and all those fancy things.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20974
diff changeset
38 if (strcmp(month, months[iter]) == 0)
ba4d20527e23 Use functions and loops and all those fancy things.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20974
diff changeset
39 break;
ba4d20527e23 Use functions and loops and all those fancy things.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20974
diff changeset
40 }
ba4d20527e23 Use functions and loops and all those fancy things.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20974
diff changeset
41 return iter;
ba4d20527e23 Use functions and loops and all those fancy things.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20974
diff changeset
42 }
ba4d20527e23 Use functions and loops and all those fancy things.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20974
diff changeset
43
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
44
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
45 /*****************************************************************************
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
46 * Adium Logger *
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
47 *****************************************************************************/
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
48
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
49 /* The adium logger doesn't write logs, only reads them. This is to include
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
50 * Adium logs in the log viewer transparently.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
51 */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
52
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
53 static PurpleLogLogger *adium_logger;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
54
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
55 enum adium_log_type {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
56 ADIUM_HTML,
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
57 ADIUM_TEXT,
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
58 };
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
59
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
60 struct adium_logger_data {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
61 char *path;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
62 enum adium_log_type type;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
63 };
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
64
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
65 static GList *adium_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
66 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
67 GList *list = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
68 const char *logdir;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
69 PurplePlugin *plugin;
36544
1bf8b6ef5aea Renamed PurplePluginProtocolInfo to PurpleProtocol
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
70 PurpleProtocol *protocol;
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
71 char *protocol_name;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
72 char *temp;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
73 char *path;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
74 GDir *dir;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
75
19090
f14418fec130 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <datallah@pidgin.im>
parents: 19080
diff changeset
76 g_return_val_if_fail(sn != NULL, NULL);
f14418fec130 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <datallah@pidgin.im>
parents: 19080
diff changeset
77 g_return_val_if_fail(account != NULL, NULL);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
78
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
79 logdir = purple_prefs_get_string("/plugins/core/log_reader/adium/log_directory");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
80
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
81 /* By clearing the log directory path, this logger can be (effectively) disabled. */
19090
f14418fec130 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <datallah@pidgin.im>
parents: 19080
diff changeset
82 if (!logdir || !*logdir)
f14418fec130 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <datallah@pidgin.im>
parents: 19080
diff changeset
83 return NULL;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
84
36626
18fc361b3704 Renamed purple_find_protocol_info to purple_protocols_find
Ankit Vani <a@nevitus.org>
parents: 36606
diff changeset
85 plugin = purple_protocols_find(purple_account_get_protocol_id(account));
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
86 if (!plugin)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
87 return NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
88
36544
1bf8b6ef5aea Renamed PurplePluginProtocolInfo to PurpleProtocol
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
89 protocol = PURPLE_PLUGIN_PROTOCOL_INFO(plugin);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
90
36719
0d7682bdf828 Updated protocol iface calls
Ankit Vani <a@nevitus.org>
parents: 36692
diff changeset
91 protocol_name = g_ascii_strup(purple_protocol_class_list_icon(protocol, account, NULL), -1);
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
92
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
93 temp = g_strdup_printf("%s.%s", protocol_name, purple_account_get_username(account));
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
94 path = g_build_filename(logdir, temp, sn, NULL);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
95 g_free(temp);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
96
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
97 dir = g_dir_open(path, 0, NULL);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
98 if (dir) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
99 const gchar *file;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
100
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
101 while ((file = g_dir_read_name(dir))) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
102 if (!purple_str_has_prefix(file, sn))
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
103 continue;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
104 if (purple_str_has_suffix(file, ".html") || purple_str_has_suffix(file, ".AdiumHTMLLog")) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
105 struct tm tm;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
106 const char *date = file;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
107
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
108 date += strlen(sn) + 2;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
109 if (sscanf(date, "%u|%u|%u",
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
110 &tm.tm_year, &tm.tm_mon, &tm.tm_mday) != 3) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
111
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
112 purple_debug_error("Adium log parse",
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
113 "Filename timestamp parsing error\n");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
114 } else {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
115 char *filename = g_build_filename(path, file, NULL);
13158
3b4295931fd6 [gaim-migrate @ 15520]
Richard Laager <rlaager@pidgin.im>
parents: 13120
diff changeset
116 FILE *handle = g_fopen(filename, "rb");
20974
70f2c7e330e9 Pay attention to the return value of fread. I don't think not doing this
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20973
diff changeset
117 char contents[57]; /* XXX: This is really inflexible. */
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
118 char *contents2;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
119 struct adium_logger_data *data;
20974
70f2c7e330e9 Pay attention to the return value of fread. I don't think not doing this
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20973
diff changeset
120 size_t rd;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
121 PurpleLog *log;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
122
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
123 if (!handle) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
124 g_free(filename);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
125 continue;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
126 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
127
20986
3b652f4066b4 Since we are looking at the return value of fread, it actually matters that
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20985
diff changeset
128 rd = fread(contents, 1, 56, handle) == 0;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
129 fclose(handle);
20974
70f2c7e330e9 Pay attention to the return value of fread. I don't think not doing this
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20973
diff changeset
130 contents[rd] = '\0';
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
131
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
132 /* XXX: This is fairly inflexible. */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
133 contents2 = contents;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
134 while (*contents2 && *contents2 != '>')
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
135 contents2++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
136 if (*contents2)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
137 contents2++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
138 while (*contents2 && *contents2 != '>')
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
139 contents2++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
140 if (*contents2)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
141 contents2++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
142
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
143 if (sscanf(contents2, "%u.%u.%u",
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
144 &tm.tm_hour, &tm.tm_min, &tm.tm_sec) != 3) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
145
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
146 purple_debug_error("Adium log parse",
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
147 "Contents timestamp parsing error\n");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
148 g_free(filename);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
149 continue;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
150 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
151
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
152 data = g_new0(struct adium_logger_data, 1);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
153 data->path = filename;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
154 data->type = ADIUM_HTML;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
155
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
156 tm.tm_year -= 1900;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
157 tm.tm_mon -= 1;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
158
13120
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 12727
diff changeset
159 /* XXX: Look into this later... Should we pass in a struct tm? */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
160 log = purple_log_new(PURPLE_LOG_IM, sn, account, NULL, mktime(&tm), NULL);
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
161 log->logger = adium_logger;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
162 log->logger_data = data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
163
18516
721bd74979a8 Prepend to lists for performance, and use g_list_reverse when the list is
Richard Laager <rlaager@pidgin.im>
parents: 18515
diff changeset
164 list = g_list_prepend(list, log);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
165 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
166 } else if (purple_str_has_suffix(file, ".adiumLog")) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
167 struct tm tm;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
168 const char *date = file;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
169
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
170 date += strlen(sn) + 2;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
171 if (sscanf(date, "%u|%u|%u",
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
172 &tm.tm_year, &tm.tm_mon, &tm.tm_mday) != 3) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
173
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
174 purple_debug_error("Adium log parse",
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
175 "Filename timestamp parsing error\n");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
176 } else {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
177 char *filename = g_build_filename(path, file, NULL);
13158
3b4295931fd6 [gaim-migrate @ 15520]
Richard Laager <rlaager@pidgin.im>
parents: 13120
diff changeset
178 FILE *handle = g_fopen(filename, "rb");
20974
70f2c7e330e9 Pay attention to the return value of fread. I don't think not doing this
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20973
diff changeset
179 char contents[14]; /* XXX: This is really inflexible. */
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
180 char *contents2;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
181 struct adium_logger_data *data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
182 PurpleLog *log;
20974
70f2c7e330e9 Pay attention to the return value of fread. I don't think not doing this
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20973
diff changeset
183 size_t rd;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
184
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
185 if (!handle) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
186 g_free(filename);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
187 continue;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
188 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
189
20986
3b652f4066b4 Since we are looking at the return value of fread, it actually matters that
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20985
diff changeset
190 rd = fread(contents, 1, 13, handle);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
191 fclose(handle);
20974
70f2c7e330e9 Pay attention to the return value of fread. I don't think not doing this
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20973
diff changeset
192 contents[rd] = '\0';
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
193
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
194 contents2 = contents;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
195 while (*contents2 && *contents2 != '(')
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
196 contents2++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
197 if (*contents2)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
198 contents2++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
199
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
200 if (sscanf(contents2, "%u.%u.%u",
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
201 &tm.tm_hour, &tm.tm_min, &tm.tm_sec) != 3) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
202
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
203 purple_debug_error("Adium log parse",
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
204 "Contents timestamp parsing error\n");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
205 g_free(filename);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
206 continue;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
207 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
208
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
209 tm.tm_year -= 1900;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
210 tm.tm_mon -= 1;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
211
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
212 data = g_new0(struct adium_logger_data, 1);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
213 data->path = filename;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
214 data->type = ADIUM_TEXT;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
215
13120
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 12727
diff changeset
216 /* XXX: Look into this later... Should we pass in a struct tm? */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
217 log = purple_log_new(PURPLE_LOG_IM, sn, account, NULL, mktime(&tm), NULL);
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
218 log->logger = adium_logger;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
219 log->logger_data = data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
220
18516
721bd74979a8 Prepend to lists for performance, and use g_list_reverse when the list is
Richard Laager <rlaager@pidgin.im>
parents: 18515
diff changeset
221 list = g_list_prepend(list, log);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
222 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
223 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
224 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
225 g_dir_close(dir);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
226 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
227
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
228 g_free(protocol_name);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
229 g_free(path);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
230
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
231 return list;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
232 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
233
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
234 static char *adium_logger_read (PurpleLog *log, PurpleLogReadFlags *flags)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
235 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
236 struct adium_logger_data *data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
237 GError *error = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
238 gchar *read = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
239
18531
8cfc3731a887 Minor comment fix.
Richard Laager <rlaager@pidgin.im>
parents: 18530
diff changeset
240 /* XXX: TODO: We probably want to set PURPLE_LOG_READ_NO_NEWLINE
18529
568e24f22c2d Make the Adium logger set flags, though it's still very much a stub.
Richard Laager <rlaager@pidgin.im>
parents: 18527
diff changeset
241 * XXX: TODO: for HTML logs. */
19090
f14418fec130 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <datallah@pidgin.im>
parents: 19080
diff changeset
242 if (flags != NULL)
f14418fec130 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <datallah@pidgin.im>
parents: 19080
diff changeset
243 *flags = 0;
18529
568e24f22c2d Make the Adium logger set flags, though it's still very much a stub.
Richard Laager <rlaager@pidgin.im>
parents: 18527
diff changeset
244
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
245 g_return_val_if_fail(log != NULL, g_strdup(""));
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
246
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
247 data = log->logger_data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
248
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
249 g_return_val_if_fail(data->path != NULL, g_strdup(""));
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
250
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
251 purple_debug_info("Adium log read", "Reading %s\n", data->path);
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
252 if (!g_file_get_contents(data->path, &read, NULL, &error)) {
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
253 purple_debug_error("Adium log read", "Error reading log: %s\n",
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
254 (error && error->message) ? error->message : "Unknown error");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
255 if (error)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
256 g_error_free(error);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
257 return g_strdup("");
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
258 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
259
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
260 if (data->type != ADIUM_HTML) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
261 char *escaped = g_markup_escape_text(read, -1);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
262 g_free(read);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
263 read = escaped;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
264 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
265
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
266 #ifdef WIN32
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
267 /* This problem only seems to show up on Windows.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
268 * The BOM is displaying as a space at the beginning of the log.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
269 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
270 if (purple_str_has_prefix(read, "\xef\xbb\xbf"))
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
271 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
272 /* FIXME: This feels so wrong... */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
273 char *temp = g_strdup(&(read[3]));
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
274 g_free(read);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
275 read = temp;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
276 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
277 #endif
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
278
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
279 /* TODO: Apply formatting.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
280 * Replace the above hack with something better, since we'll
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
281 * be looping over the entire log file contents anyway.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
282 */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
283
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
284 return read;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
285 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
286
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
287 static int adium_logger_size (PurpleLog *log)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
288 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
289 struct adium_logger_data *data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
290 char *text;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
291 size_t size;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
292
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
293 g_return_val_if_fail(log != NULL, 0);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
294
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
295 data = log->logger_data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
296
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
297 if (purple_prefs_get_bool("/plugins/core/log_reader/fast_sizes")) {
33940
b44d15793c83 Use GStatBuf instead of struct stat
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33649
diff changeset
298 GStatBuf st;
b44d15793c83 Use GStatBuf instead of struct stat
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33649
diff changeset
299
b44d15793c83 Use GStatBuf instead of struct stat
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33649
diff changeset
300 if (!data->path || g_stat(data->path, &st))
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
301 st.st_size = 0;
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13702
diff changeset
302
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
303 return st.st_size;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
304 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
305
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
306 text = adium_logger_read(log, NULL);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
307 size = strlen(text);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
308 g_free(text);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
309
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
310 return size;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
311 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
312
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
313 static void adium_logger_finalize(PurpleLog *log)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
314 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
315 struct adium_logger_data *data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
316
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
317 g_return_if_fail(log != NULL);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
318
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
319 data = log->logger_data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
320
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
321 g_free(data->path);
18513
160f45152db1 Eliminate some leaks.
Richard Laager <rlaager@pidgin.im>
parents: 18512
diff changeset
322 g_free(data);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
323 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
324
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
325
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
326 /*****************************************************************************
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
327 * Fire Logger *
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
328 *****************************************************************************/
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
329
14297
c1788b3112fd [gaim-migrate @ 16917]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
330 #if 0
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
331 /* The fire logger doesn't write logs, only reads them. This is to include
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
332 * Fire logs in the log viewer transparently.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
333 */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
334
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
335 static PurpleLogLogger *fire_logger;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
336
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
337 struct fire_logger_data {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
338 };
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
339
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
340 static GList *fire_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
341 {
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
342 /* TODO: Do something here. */
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
343 return NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
344 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
345
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
346 static char * fire_logger_read (PurpleLog *log, PurpleLogReadFlags *flags)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
347 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
348 struct fire_logger_data *data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
349
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
350 g_return_val_if_fail(log != NULL, g_strdup(""));
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
351
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
352 data = log->logger_data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
353
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
354 /* TODO: Do something here. */
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
355 return g_strdup("");
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
356 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
357
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
358 static int fire_logger_size (PurpleLog *log)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
359 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
360 g_return_val_if_fail(log != NULL, 0);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
361
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
362 if (purple_prefs_get_bool("/plugins/core/log_reader/fast_sizes"))
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
363 return 0;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
364
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
365 /* TODO: Do something here. */
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
366 return 0;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
367 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
368
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
369 static void fire_logger_finalize(PurpleLog *log)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
370 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
371 g_return_if_fail(log != NULL);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
372
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
373 /* TODO: Do something here. */
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
374 }
14297
c1788b3112fd [gaim-migrate @ 16917]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
375 #endif
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
376
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
377
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
378 /*****************************************************************************
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
379 * Messenger Plus! Logger *
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
380 *****************************************************************************/
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
381
14297
c1788b3112fd [gaim-migrate @ 16917]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
382 #if 0
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
383 /* The messenger_plus logger doesn't write logs, only reads them. This is to include
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
384 * Messenger Plus! logs in the log viewer transparently.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
385 */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
386
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
387 static PurpleLogLogger *messenger_plus_logger;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
388
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
389 struct messenger_plus_logger_data {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
390 };
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
391
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
392 static GList *messenger_plus_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
393 {
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
394 /* TODO: Do something here. */
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
395 return NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
396 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
397
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
398 static char * messenger_plus_logger_read (PurpleLog *log, PurpleLogReadFlags *flags)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
399 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
400 struct messenger_plus_logger_data *data = log->logger_data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
401
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
402 g_return_val_if_fail(log != NULL, g_strdup(""));
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
403
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
404 data = log->logger_data;
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13702
diff changeset
405
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
406 /* TODO: Do something here. */
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
407 return g_strdup("");
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
408 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
409
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
410 static int messenger_plus_logger_size (PurpleLog *log)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
411 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
412 g_return_val_if_fail(log != NULL, 0);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
413
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
414 if (purple_prefs_get_bool("/plugins/core/log_reader/fast_sizes"))
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
415 return 0;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
416
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
417 /* TODO: Do something here. */
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
418 return 0;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
419 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
420
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
421 static void messenger_plus_logger_finalize(PurpleLog *log)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
422 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
423 g_return_if_fail(log != NULL);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
424
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
425 /* TODO: Do something here. */
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
426 }
14297
c1788b3112fd [gaim-migrate @ 16917]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
427 #endif
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
428
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
429
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
430 /*****************************************************************************
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
431 * MSN Messenger Logger *
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
432 *****************************************************************************/
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
433
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
434 /* The msn logger doesn't write logs, only reads them. This is to include
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
435 * MSN Messenger message histories in the log viewer transparently.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
436 */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
437
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
438 static PurpleLogLogger *msn_logger;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
439
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
440 struct msn_logger_data {
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
441 PurpleXmlNode *root;
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
442 PurpleXmlNode *message;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
443 const char *session_id;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
444 int last_log;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
445 GString *text;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
446 };
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
447
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
448 /* This function is really confusing. It makes baby rlaager cry...
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
449 In other news: "You lost a lot of blood but we found most of it."
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
450 */
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
451 static time_t msn_logger_parse_timestamp(PurpleXmlNode *message, struct tm **tm_out)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
452 {
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
453 const char *datetime;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
454 static struct tm tm2;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
455 time_t stamp;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
456 const char *date;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
457 const char *time;
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
458 int month;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
459 int day;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
460 int year;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
461 int hour;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
462 int min;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
463 int sec;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
464 char am_pm;
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
465 char *str;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
466 static struct tm tm;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
467 time_t t;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
468 time_t diff;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
469
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
470 #ifndef G_DISABLE_CHECKS
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
471 if (message != NULL)
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
472 {
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
473 *tm_out = NULL;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
474
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
475 /* Trigger the usual warning. */
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
476 g_return_val_if_fail(message != NULL, (time_t)0);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
477 }
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
478 #endif
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
479
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
480 datetime = purple_xmlnode_get_attrib(message, "DateTime");
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
481 if (!(datetime && *datetime))
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
482 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
483 purple_debug_error("MSN log timestamp parse",
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
484 "Attribute missing: %s\n", "DateTime");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
485 return (time_t)0;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
486 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
487
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
488 stamp = purple_str_to_time(datetime, TRUE, &tm2, NULL, NULL);
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
489 #ifdef HAVE_TM_GMTOFF
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
490 tm2.tm_gmtoff = 0;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
491 #endif
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
492 #ifdef HAVE_STRUCT_TM_TM_ZONE
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
493 /* This is used in the place of a timezone abbreviation if the
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
494 * offset is way off. The user should never really see it, but
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
495 * it's here just in case. The parens are to make it clear it's
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
496 * not a real timezone. */
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
497 tm2.tm_zone = _("(UTC)");
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
498 #endif
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
499
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
500
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
501 date = purple_xmlnode_get_attrib(message, "Date");
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
502 if (!(date && *date))
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
503 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
504 purple_debug_error("MSN log timestamp parse",
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
505 "Attribute missing: %s\n", "Date");
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
506 *tm_out = &tm2;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
507 return stamp;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
508 }
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
509
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
510 time = purple_xmlnode_get_attrib(message, "Time");
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
511 if (!(time && *time))
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
512 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
513 purple_debug_error("MSN log timestamp parse",
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
514 "Attribute missing: %s\n", "Time");
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
515 *tm_out = &tm2;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
516 return stamp;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
517 }
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
518
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
519 if (sscanf(date, "%u/%u/%u", &month, &day, &year) != 3)
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
520 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
521 purple_debug_error("MSN log timestamp parse",
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
522 "%s parsing error\n", "Date");
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
523 *tm_out = &tm2;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
524 return stamp;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
525 }
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
526 else
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
527 {
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
528 if (month > 12)
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
529 {
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
530 int tmp = day;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
531 day = month;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
532 month = tmp;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
533 }
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
534 }
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
535
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
536 if (sscanf(time, "%u:%u:%u %c", &hour, &min, &sec, &am_pm) != 4)
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
537 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
538 purple_debug_error("MSN log timestamp parse",
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
539 "%s parsing error\n", "Time");
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
540 *tm_out = &tm2;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
541 return stamp;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
542 }
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
543
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
544 if (am_pm == 'P') {
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
545 hour += 12;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
546 } else if (hour == 12) {
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
547 /* 12 AM = 00 hr */
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
548 hour = 0;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
549 }
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
550
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
551 str = g_strdup_printf("%04i-%02i-%02iT%02i:%02i:%02i", year, month, day, hour, min, sec);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
552 t = purple_str_to_time(str, TRUE, &tm, NULL, NULL);
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
553
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
554
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
555 if (stamp > t)
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
556 diff = stamp - t;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
557 else
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
558 diff = t - stamp;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
559
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
560 if (diff > (14 * 60 * 60))
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
561 {
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
562 if (day <= 12)
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
563 {
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
564 /* Swap day & month variables, to see if it's a non-US date. */
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
565 g_free(str);
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
566 str = g_strdup_printf("%04i-%02i-%02iT%02i:%02i:%02i", year, month, day, hour, min, sec);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
567 t = purple_str_to_time(str, TRUE, &tm, NULL, NULL);
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
568
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
569 if (stamp > t)
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
570 diff = stamp - t;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
571 else
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
572 diff = t - stamp;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
573
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
574 if (diff > (14 * 60 * 60))
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
575 {
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
576 /* We got a time, it's not impossible, but
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
577 * the diff is too large. Display the UTC time. */
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
578 g_free(str);
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
579 *tm_out = &tm2;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
580 return stamp;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
581 }
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
582 else
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
583 {
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
584 /* Legal time */
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
585 /* Fall out */
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
586 }
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
587 }
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
588 else
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
589 {
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
590 /* We got a time, it's not impossible, but
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
591 * the diff is too large. Display the UTC time. */
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
592 g_free(str);
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
593 *tm_out = &tm2;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
594 return stamp;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
595 }
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
596 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
597
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
598 /* If we got here, the time is legal with a reasonable offset.
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
599 * Let's find out if it's in our TZ. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
600 if (purple_str_to_time(str, FALSE, &tm, NULL, NULL) == stamp)
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
601 {
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
602 g_free(str);
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
603 *tm_out = &tm;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
604 return stamp;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
605 }
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
606 g_free(str);
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
607
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
608 /* The time isn't in our TZ, but it's reasonable. */
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
609 #ifdef HAVE_STRUCT_TM_TM_ZONE
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
610 tm.tm_zone = " ";
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
611 #endif
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
612 *tm_out = &tm;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
613 return stamp;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
614 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
615
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
616 static GList *msn_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
617 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
618 GList *list = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
619 char *username;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
620 PurpleBuddy *buddy;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
621 const char *logdir;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
622 const char *savedfilename = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
623 char *logfile;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
624 char *path;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
625 GError *error = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
626 gchar *contents = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
627 gsize length;
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
628 PurpleXmlNode *root;
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
629 PurpleXmlNode *message;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
630 const char *old_session_id = "";
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
631 struct msn_logger_data *data = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
632
19090
f14418fec130 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <datallah@pidgin.im>
parents: 19080
diff changeset
633 g_return_val_if_fail(sn != NULL, NULL);
f14418fec130 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <datallah@pidgin.im>
parents: 19080
diff changeset
634 g_return_val_if_fail(account != NULL, NULL);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
635
36637
9b0109ae118d Renamed some prpl stuff to protocol stuff.
Ankit Vani <a@nevitus.org>
parents: 36632
diff changeset
636 if (strcmp(purple_account_get_protocol_id(account), "msn"))
19090
f14418fec130 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <datallah@pidgin.im>
parents: 19080
diff changeset
637 return NULL;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
638
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
639 logdir = purple_prefs_get_string("/plugins/core/log_reader/msn/log_directory");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
640
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
641 /* By clearing the log directory path, this logger can be (effectively) disabled. */
19090
f14418fec130 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <datallah@pidgin.im>
parents: 19080
diff changeset
642 if (!logdir || !*logdir)
f14418fec130 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <datallah@pidgin.im>
parents: 19080
diff changeset
643 return NULL;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
644
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34699
diff changeset
645 buddy = purple_blist_find_buddy(account, sn);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
646
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
647 if ((username = g_strdup(purple_account_get_string(
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
648 account, "log_reader_msn_log_folder", NULL)))) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
649 /* As a special case, we allow the null string to kill the parsing
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
650 * straight away. This would allow the user to deal with the case
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
651 * when two account have the same username at different domains and
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
652 * only one has logs stored.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
653 */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
654 if (!*username) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
655 g_free(username);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
656 return list;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
657 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
658 } else {
32215
0a4e72c8a67e Use accessor functions in a few places
Mark Doliner <markdoliner@pidgin.im>
parents: 31984
diff changeset
659 username = g_strdup(purple_normalize(account, purple_account_get_username(account)));
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
660 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
661
24531
76e72697f7d6 Hide the blistnode, buddy, contact, group, and chat structs
Gary Kramlich <grim@reaperworld.com>
parents: 24231
diff changeset
662 if (buddy) {
34741
d371a8f11179 Used GObject casts for PurpleBListNode in plugins
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
663 savedfilename = purple_blist_node_get_string(PURPLE_BLIST_NODE(buddy),
24534
612f373523e5 Fix up my fix.
Richard Laager <rlaager@pidgin.im>
parents: 24532
diff changeset
664 "log_reader_msn_log_filename");
24531
76e72697f7d6 Hide the blistnode, buddy, contact, group, and chat structs
Gary Kramlich <grim@reaperworld.com>
parents: 24231
diff changeset
665 }
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
666
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
667 if (savedfilename) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
668 /* As a special case, we allow the null string to kill the parsing
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
669 * straight away. This would allow the user to deal with the case
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
670 * when two buddies have the same username at different domains and
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
671 * only one has logs stored.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
672 */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
673 if (!*savedfilename) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
674 g_free(username);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
675 return list;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
676 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
677
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
678 logfile = g_strdup(savedfilename);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
679 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
680 logfile = g_strdup_printf("%s.xml", purple_normalize(account, sn));
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
681 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
682
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
683 path = g_build_filename(logdir, username, "History", logfile, NULL);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
684
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
685 if (!g_file_test(path, G_FILE_TEST_EXISTS)) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
686 gboolean found = FALSE;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
687 char *at_sign;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
688 GDir *dir;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
689
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
690 g_free(path);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
691
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
692 if (savedfilename) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
693 /* We had a saved filename, but it doesn't exist.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
694 * Returning now is the right course of action because we don't
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
695 * want to detect another file incorrectly.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
696 */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
697 g_free(username);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
698 g_free(logfile);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
699 return list;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
700 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
701
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
702 /* Perhaps we're using a new version of MSN with the weird numbered folders.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
703 * I don't know how the numbers are calculated, so I'm going to attempt to
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
704 * find logs by pattern matching...
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
705 */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
706
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
707 at_sign = g_strrstr(username, "@");
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
708 if (at_sign)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
709 *at_sign = '\0';
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
710
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
711 dir = g_dir_open(logdir, 0, NULL);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
712 if (dir) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
713 const gchar *name;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
714
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
715 while ((name = g_dir_read_name(dir))) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
716 const char *c = name;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
717
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
718 if (!purple_str_has_prefix(c, username))
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
719 continue;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
720
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
721 c += strlen(username);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
722 while (*c) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
723 if (!g_ascii_isdigit(*c))
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
724 break;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
725
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
726 c++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
727 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
728
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
729 path = g_build_filename(logdir, name, NULL);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
730 /* The !c makes sure we got to the end of the while loop above. */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
731 if (!*c && g_file_test(path, G_FILE_TEST_IS_DIR)) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
732 char *history_path = g_build_filename(
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
733 path, "History", NULL);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
734 if (g_file_test(history_path, G_FILE_TEST_IS_DIR)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
735 purple_account_set_string(account,
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
736 "log_reader_msn_log_folder", name);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
737 g_free(path);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
738 path = history_path;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
739 found = TRUE;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
740 break;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
741 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
742 g_free(path);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
743 g_free(history_path);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
744 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
745 else
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
746 g_free(path);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
747 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
748 g_dir_close(dir);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
749 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
750 g_free(username);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
751
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
752 if (!found) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
753 g_free(logfile);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
754 return list;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
755 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
756
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
757 /* If we've reached this point, we've found a History folder. */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
758
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
759 username = g_strdup(purple_normalize(account, sn));
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
760 at_sign = g_strrstr(username, "@");
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
761 if (at_sign)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
762 *at_sign = '\0';
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
763
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
764 found = FALSE;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
765 dir = g_dir_open(path, 0, NULL);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
766 if (dir) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
767 const gchar *name;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
768
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
769 while ((name = g_dir_read_name(dir))) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
770 const char *c = name;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
771
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
772 if (!purple_str_has_prefix(c, username))
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
773 continue;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
774
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
775 c += strlen(username);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
776 while (*c) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
777 if (!g_ascii_isdigit(*c))
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
778 break;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
779
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
780 c++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
781 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
782
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
783 path = g_build_filename(path, name, NULL);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
784 if (!strcmp(c, ".xml") &&
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
785 g_file_test(path, G_FILE_TEST_EXISTS)) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
786 found = TRUE;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
787 g_free(logfile);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
788 logfile = g_strdup(name);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
789 break;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
790 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
791 else
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
792 g_free(path);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
793 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
794 g_dir_close(dir);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
795 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
796 g_free(username);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
797
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
798 if (!found) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
799 g_free(logfile);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
800 return list;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
801 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
802 } else {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
803 g_free(username);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
804 g_free(logfile);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
805 logfile = NULL; /* No sense saving the obvious buddy@domain.com. */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
806 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
807
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
808 purple_debug_info("MSN log read", "Reading %s\n", path);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
809 if (!g_file_get_contents(path, &contents, &length, &error)) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
810 g_free(path);
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
811 purple_debug_error("MSN log read", "Error reading log\n");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
812 if (error)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
813 g_error_free(error);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
814 return list;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
815 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
816 g_free(path);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
817
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
818 /* Reading the file was successful...
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
819 * Save its name if it involves the crazy numbers. The idea here is that you could
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
820 * then tweak the blist.xml file by hand if need be. This would be the case if two
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
821 * buddies have the same username at different domains. One set of logs would get
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
822 * detected for both buddies.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
823 */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
824 if (buddy && logfile) {
34864
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34741
diff changeset
825 PurpleBlistNode *node = PURPLE_BLIST_NODE(buddy);
24531
76e72697f7d6 Hide the blistnode, buddy, contact, group, and chat structs
Gary Kramlich <grim@reaperworld.com>
parents: 24231
diff changeset
826 purple_blist_node_set_string(node, "log_reader_msn_log_filename", logfile);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
827 g_free(logfile);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
828 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
829
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
830 root = purple_xmlnode_from_str(contents, length);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
831 g_free(contents);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
832 if (!root)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
833 return list;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
834
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
835 for (message = purple_xmlnode_get_child(root, "Message"); message;
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
836 message = purple_xmlnode_get_next_twin(message)) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
837 const char *session_id;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
838
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
839 session_id = purple_xmlnode_get_attrib(message, "SessionID");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
840 if (!session_id) {
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
841 purple_debug_error("MSN log parse",
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
842 "Error parsing message: %s\n", "SessionID missing");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
843 continue;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
844 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
845
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
846 if (strcmp(session_id, old_session_id)) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
847 /*
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
848 * The session ID differs from the last message.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
849 * Thus, this is the start of a new conversation.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
850 */
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
851 struct tm *tm;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
852 time_t stamp;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
853 PurpleLog *log;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
854
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
855 data = g_new0(struct msn_logger_data, 1);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
856 data->root = root;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
857 data->message = message;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
858 data->session_id = session_id;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
859 data->text = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
860 data->last_log = FALSE;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
861
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
862 stamp = msn_logger_parse_timestamp(message, &tm);
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
863
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
864 log = purple_log_new(PURPLE_LOG_IM, sn, account, NULL, stamp, tm);
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
865 log->logger = msn_logger;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
866 log->logger_data = data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
867
18516
721bd74979a8 Prepend to lists for performance, and use g_list_reverse when the list is
Richard Laager <rlaager@pidgin.im>
parents: 18515
diff changeset
868 list = g_list_prepend(list, log);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
869 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
870 old_session_id = session_id;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
871 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
872
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
873 if (data)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
874 data->last_log = TRUE;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
875
18516
721bd74979a8 Prepend to lists for performance, and use g_list_reverse when the list is
Richard Laager <rlaager@pidgin.im>
parents: 18515
diff changeset
876 return g_list_reverse(list);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
877 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
878
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
879 static char * msn_logger_read (PurpleLog *log, PurpleLogReadFlags *flags)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
880 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
881 struct msn_logger_data *data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
882 GString *text = NULL;
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
883 PurpleXmlNode *message;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
884
19060
d330f88b0ed6 Fix #2349 (null pointer deref in log_reader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 18812
diff changeset
885 if (flags != NULL)
d330f88b0ed6 Fix #2349 (null pointer deref in log_reader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 18812
diff changeset
886 *flags = PURPLE_LOG_READ_NO_NEWLINE;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
887 g_return_val_if_fail(log != NULL, g_strdup(""));
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
888
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
889 data = log->logger_data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
890
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
891 if (data->text) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
892 /* The GTK code which displays the logs g_free()s whatever is
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
893 * returned from this function. Thus, we can't reuse the str
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
894 * part of the GString. The only solution is to free it and
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
895 * start over.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
896 */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
897 g_string_free(data->text, FALSE);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
898 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
899
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
900 text = g_string_new("");
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
901
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
902 if (!data->root || !data->message || !data->session_id) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
903 /* Something isn't allocated correctly. */
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
904 purple_debug_error("MSN log parse",
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
905 "Error parsing message: %s\n", "Internal variables inconsistent");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
906 data->text = text;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
907
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
908 return text->str;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
909 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
910
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
911 for (message = data->message; message;
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
912 message = purple_xmlnode_get_next_twin(message)) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
913
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
914 const char *new_session_id;
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
915 PurpleXmlNode *text_node;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
916 const char *from_name = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
917 const char *to_name = NULL;
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
918 PurpleXmlNode *from;
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
919 PurpleXmlNode *to;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
920 enum name_guesses name_guessed = NAME_GUESS_UNKNOWN;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
921 const char *their_name;
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
922 struct tm *tm;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
923 char *timestamp;
14142
97cb27b1093f [gaim-migrate @ 16701]
Daniel Atallah <datallah@pidgin.im>
parents: 14139
diff changeset
924 char *tmp;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
925 const char *style;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
926
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
927 new_session_id = purple_xmlnode_get_attrib(message, "SessionID");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
928
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
929 /* If this triggers, something is wrong with the XML. */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
930 if (!new_session_id) {
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
931 purple_debug_error("MSN log parse",
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
932 "Error parsing message: %s\n", "New SessionID missing");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
933 break;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
934 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
935
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
936 if (strcmp(new_session_id, data->session_id)) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
937 /* The session ID differs from the first message.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
938 * Thus, this is the start of a new conversation.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
939 */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
940 break;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
941 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
942
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
943 text_node = purple_xmlnode_get_child(message, "Text");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
944 if (!text_node)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
945 continue;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
946
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
947 from = purple_xmlnode_get_child(message, "From");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
948 if (from) {
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
949 PurpleXmlNode *user = purple_xmlnode_get_child(from, "User");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
950
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
951 if (user) {
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
952 from_name = purple_xmlnode_get_attrib(user, "FriendlyName");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
953
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
954 /* This saves a check later. */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
955 if (!*from_name)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
956 from_name = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
957 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
958 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
959
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
960 to = purple_xmlnode_get_child(message, "To");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
961 if (to) {
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
962 PurpleXmlNode *user = purple_xmlnode_get_child(to, "User");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
963 if (user) {
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
964 to_name = purple_xmlnode_get_attrib(user, "FriendlyName");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
965
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
966 /* This saves a check later. */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
967 if (!*to_name)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
968 to_name = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
969 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
970 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
971
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
972 their_name = from_name;
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
973 if (from_name && purple_prefs_get_bool("/plugins/core/log_reader/use_name_heuristics")) {
32215
0a4e72c8a67e Use accessor functions in a few places
Mark Doliner <markdoliner@pidgin.im>
parents: 31984
diff changeset
974 const char *friendly_name = purple_connection_get_display_name(purple_account_get_connection(log->account));
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
975
11702
4977bb9807d0 [gaim-migrate @ 13993]
Richard Laager <rlaager@pidgin.im>
parents: 11503
diff changeset
976 if (friendly_name != NULL) {
4977bb9807d0 [gaim-migrate @ 13993]
Richard Laager <rlaager@pidgin.im>
parents: 11503
diff changeset
977 int friendly_name_length = strlen(friendly_name);
15071
f7927e8ce744 [gaim-migrate @ 17790]
Richard Laager <rlaager@pidgin.im>
parents: 15061
diff changeset
978 const char *alias;
f7927e8ce744 [gaim-migrate @ 17790]
Richard Laager <rlaager@pidgin.im>
parents: 15061
diff changeset
979 int alias_length;
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34699
diff changeset
980 PurpleBuddy *buddy = purple_blist_find_buddy(log->account, log->name);
11702
4977bb9807d0 [gaim-migrate @ 13993]
Richard Laager <rlaager@pidgin.im>
parents: 11503
diff changeset
981 gboolean from_name_matches;
4977bb9807d0 [gaim-migrate @ 13993]
Richard Laager <rlaager@pidgin.im>
parents: 11503
diff changeset
982 gboolean to_name_matches;
4977bb9807d0 [gaim-migrate @ 13993]
Richard Laager <rlaager@pidgin.im>
parents: 11503
diff changeset
983
24531
76e72697f7d6 Hide the blistnode, buddy, contact, group, and chat structs
Gary Kramlich <grim@reaperworld.com>
parents: 24231
diff changeset
984 if (buddy)
76e72697f7d6 Hide the blistnode, buddy, contact, group, and chat structs
Gary Kramlich <grim@reaperworld.com>
parents: 24231
diff changeset
985 their_name = purple_buddy_get_alias(buddy);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
986
34589
428e92c79631 Renamed purple_account_[get,set]_alias to purple_account[get,set]_private_alias.
Ankit Vani <a@nevitus.org>
parents: 33940
diff changeset
987 alias = purple_account_get_private_alias(log->account);
32215
0a4e72c8a67e Use accessor functions in a few places
Mark Doliner <markdoliner@pidgin.im>
parents: 31984
diff changeset
988 if (alias) {
15071
f7927e8ce744 [gaim-migrate @ 17790]
Richard Laager <rlaager@pidgin.im>
parents: 15061
diff changeset
989 alias_length = strlen(alias);
32215
0a4e72c8a67e Use accessor functions in a few places
Mark Doliner <markdoliner@pidgin.im>
parents: 31984
diff changeset
990 } else {
15071
f7927e8ce744 [gaim-migrate @ 17790]
Richard Laager <rlaager@pidgin.im>
parents: 15061
diff changeset
991 alias = "";
f7927e8ce744 [gaim-migrate @ 17790]
Richard Laager <rlaager@pidgin.im>
parents: 15061
diff changeset
992 alias_length = 0;
f7927e8ce744 [gaim-migrate @ 17790]
Richard Laager <rlaager@pidgin.im>
parents: 15061
diff changeset
993 }
f7927e8ce744 [gaim-migrate @ 17790]
Richard Laager <rlaager@pidgin.im>
parents: 15061
diff changeset
994
11702
4977bb9807d0 [gaim-migrate @ 13993]
Richard Laager <rlaager@pidgin.im>
parents: 11503
diff changeset
995 /* Try to guess which user is me.
4977bb9807d0 [gaim-migrate @ 13993]
Richard Laager <rlaager@pidgin.im>
parents: 11503
diff changeset
996 * The first step is to determine if either of the names matches either my
4977bb9807d0 [gaim-migrate @ 13993]
Richard Laager <rlaager@pidgin.im>
parents: 11503
diff changeset
997 * friendly name or alias. For this test, "match" is defined as:
4977bb9807d0 [gaim-migrate @ 13993]
Richard Laager <rlaager@pidgin.im>
parents: 11503
diff changeset
998 * ^(friendly_name|alias)([^a-zA-Z0-9].*)?$
4977bb9807d0 [gaim-migrate @ 13993]
Richard Laager <rlaager@pidgin.im>
parents: 11503
diff changeset
999 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1000 from_name_matches = (purple_str_has_prefix(from_name, friendly_name) &&
13494
413c793bd39f [gaim-migrate @ 15869]
Richard Laager <rlaager@pidgin.im>
parents: 13492
diff changeset
1001 !isalnum(*(from_name + friendly_name_length))) ||
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1002 (purple_str_has_prefix(from_name, alias) &&
14168
b844e3d268ca [gaim-migrate @ 16740]
Daniel Atallah <datallah@pidgin.im>
parents: 14142
diff changeset
1003 !isalnum(*(from_name + alias_length)));
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1004
13494
413c793bd39f [gaim-migrate @ 15869]
Richard Laager <rlaager@pidgin.im>
parents: 13492
diff changeset
1005 to_name_matches = to_name != NULL && (
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1006 (purple_str_has_prefix(to_name, friendly_name) &&
13494
413c793bd39f [gaim-migrate @ 15869]
Richard Laager <rlaager@pidgin.im>
parents: 13492
diff changeset
1007 !isalnum(*(to_name + friendly_name_length))) ||
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1008 (purple_str_has_prefix(to_name, alias) &&
13494
413c793bd39f [gaim-migrate @ 15869]
Richard Laager <rlaager@pidgin.im>
parents: 13492
diff changeset
1009 !isalnum(*(to_name + alias_length))));
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1010
11702
4977bb9807d0 [gaim-migrate @ 13993]
Richard Laager <rlaager@pidgin.im>
parents: 11503
diff changeset
1011 if (from_name_matches) {
4977bb9807d0 [gaim-migrate @ 13993]
Richard Laager <rlaager@pidgin.im>
parents: 11503
diff changeset
1012 if (!to_name_matches) {
4977bb9807d0 [gaim-migrate @ 13993]
Richard Laager <rlaager@pidgin.im>
parents: 11503
diff changeset
1013 name_guessed = NAME_GUESS_ME;
4977bb9807d0 [gaim-migrate @ 13993]
Richard Laager <rlaager@pidgin.im>
parents: 11503
diff changeset
1014 }
4977bb9807d0 [gaim-migrate @ 13993]
Richard Laager <rlaager@pidgin.im>
parents: 11503
diff changeset
1015 } else if (to_name_matches) {
4977bb9807d0 [gaim-migrate @ 13993]
Richard Laager <rlaager@pidgin.im>
parents: 11503
diff changeset
1016 name_guessed = NAME_GUESS_THEM;
4977bb9807d0 [gaim-migrate @ 13993]
Richard Laager <rlaager@pidgin.im>
parents: 11503
diff changeset
1017 } else {
24531
76e72697f7d6 Hide the blistnode, buddy, contact, group, and chat structs
Gary Kramlich <grim@reaperworld.com>
parents: 24231
diff changeset
1018 if (buddy) {
24532
c401bbcb46e3 Simplify some of the changes. Yeah, this code sucks. I wrote it a LONG
Richard Laager <rlaager@pidgin.im>
parents: 24531
diff changeset
1019 const char *server_alias = NULL;
c401bbcb46e3 Simplify some of the changes. Yeah, this code sucks. I wrote it a LONG
Richard Laager <rlaager@pidgin.im>
parents: 24531
diff changeset
1020 char *alias = g_strdup(purple_buddy_get_alias(buddy));
c401bbcb46e3 Simplify some of the changes. Yeah, this code sucks. I wrote it a LONG
Richard Laager <rlaager@pidgin.im>
parents: 24531
diff changeset
1021 char *temp;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1022
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1023 /* "Truncate" the string at the first non-alphanumeric
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1024 * character. The idea is to relax the comparison.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1025 */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1026 for (temp = alias; *temp ; temp++) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1027 if (!isalnum(*temp)) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1028 *temp = '\0';
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1029 break;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1030 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1031 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1032 alias_length = strlen(alias);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1033
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1034 /* Try to guess which user is them.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1035 * The first step is to determine if either of the names
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1036 * matches their alias. For this test, "match" is
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1037 * defined as: ^alias([^a-zA-Z0-9].*)?$
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1038 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1039 from_name_matches = (purple_str_has_prefix(
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1040 from_name, alias) &&
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1041 !isalnum(*(from_name +
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1042 alias_length)));
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1043
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1044 to_name_matches = to_name && (purple_str_has_prefix(
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1045 to_name, alias) &&
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1046 !isalnum(*(to_name +
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1047 alias_length)));
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1048
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1049 g_free(alias);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1050
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1051 if (from_name_matches) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1052 if (!to_name_matches) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1053 name_guessed = NAME_GUESS_THEM;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1054 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1055 } else if (to_name_matches) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1056 name_guessed = NAME_GUESS_ME;
24531
76e72697f7d6 Hide the blistnode, buddy, contact, group, and chat structs
Gary Kramlich <grim@reaperworld.com>
parents: 24231
diff changeset
1057 } else if ((server_alias = purple_buddy_get_server_alias(buddy))) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1058 friendly_name_length =
24531
76e72697f7d6 Hide the blistnode, buddy, contact, group, and chat structs
Gary Kramlich <grim@reaperworld.com>
parents: 24231
diff changeset
1059 strlen(server_alias);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1060
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1061 /* Try to guess which user is them.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1062 * The first step is to determine if either of
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1063 * the names matches their friendly name. For
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1064 * this test, "match" is defined as:
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1065 * ^friendly_name([^a-zA-Z0-9].*)?$
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1066 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1067 from_name_matches = (purple_str_has_prefix(
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1068 from_name,
24531
76e72697f7d6 Hide the blistnode, buddy, contact, group, and chat structs
Gary Kramlich <grim@reaperworld.com>
parents: 24231
diff changeset
1069 server_alias) &&
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1070 !isalnum(*(from_name +
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1071 friendly_name_length)));
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1072
14168
b844e3d268ca [gaim-migrate @ 16740]
Daniel Atallah <datallah@pidgin.im>
parents: 14142
diff changeset
1073 to_name_matches = to_name && (
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1074 (purple_str_has_prefix(
24531
76e72697f7d6 Hide the blistnode, buddy, contact, group, and chat structs
Gary Kramlich <grim@reaperworld.com>
parents: 24231
diff changeset
1075 to_name, server_alias) &&
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1076 !isalnum(*(to_name +
14168
b844e3d268ca [gaim-migrate @ 16740]
Daniel Atallah <datallah@pidgin.im>
parents: 14142
diff changeset
1077 friendly_name_length))));
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1078
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1079 if (from_name_matches) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1080 if (!to_name_matches) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1081 name_guessed = NAME_GUESS_THEM;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1082 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1083 } else if (to_name_matches) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1084 name_guessed = NAME_GUESS_ME;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1085 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1086 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1087 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1088 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1089 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1090 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1091
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1092 if (name_guessed != NAME_GUESS_UNKNOWN) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1093 text = g_string_append(text, "<span style=\"color: #");
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1094 if (name_guessed == NAME_GUESS_ME)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1095 text = g_string_append(text, "16569E");
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1096 else
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1097 text = g_string_append(text, "A82F2F");
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1098 text = g_string_append(text, ";\">");
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1099 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1100
33595
4dafaadf7d98 Fix a variable set but unused warning
Richard Laager <rlaager@pidgin.im>
parents: 31984
diff changeset
1101 msn_logger_parse_timestamp(message, &tm);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1102
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1103 timestamp = g_strdup_printf("<font size=\"2\">(%02u:%02u:%02u)</font> ",
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
1104 tm->tm_hour, tm->tm_min, tm->tm_sec);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1105 text = g_string_append(text, timestamp);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1106 g_free(timestamp);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1107
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1108 if (from_name) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1109 text = g_string_append(text, "<b>");
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1110
14998
76f6b742f4d1 [gaim-migrate @ 17708]
Daniel Atallah <datallah@pidgin.im>
parents: 14334
diff changeset
1111 if (name_guessed == NAME_GUESS_ME) {
34589
428e92c79631 Renamed purple_account_[get,set]_alias to purple_account[get,set]_private_alias.
Ankit Vani <a@nevitus.org>
parents: 33940
diff changeset
1112 if (purple_account_get_private_alias(log->account))
428e92c79631 Renamed purple_account_[get,set]_alias to purple_account[get,set]_private_alias.
Ankit Vani <a@nevitus.org>
parents: 33940
diff changeset
1113 text = g_string_append(text, purple_account_get_private_alias(log->account));
14998
76f6b742f4d1 [gaim-migrate @ 17708]
Daniel Atallah <datallah@pidgin.im>
parents: 14334
diff changeset
1114 else
32215
0a4e72c8a67e Use accessor functions in a few places
Mark Doliner <markdoliner@pidgin.im>
parents: 31984
diff changeset
1115 text = g_string_append(text, purple_account_get_username(log->account));
14998
76f6b742f4d1 [gaim-migrate @ 17708]
Daniel Atallah <datallah@pidgin.im>
parents: 14334
diff changeset
1116 }
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1117 else if (name_guessed == NAME_GUESS_THEM)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1118 text = g_string_append(text, their_name);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1119 else
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1120 text = g_string_append(text, from_name);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1121
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1122 text = g_string_append(text, ":</b> ");
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1123 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1124
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1125 if (name_guessed != NAME_GUESS_UNKNOWN)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1126 text = g_string_append(text, "</span>");
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1127
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
1128 style = purple_xmlnode_get_attrib(text_node, "Style");
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
1129
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
1130 tmp = purple_xmlnode_get_data(text_node);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1131 if (style && *style) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1132 text = g_string_append(text, "<span style=\"");
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1133 text = g_string_append(text, style);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1134 text = g_string_append(text, "\">");
14142
97cb27b1093f [gaim-migrate @ 16701]
Daniel Atallah <datallah@pidgin.im>
parents: 14139
diff changeset
1135 text = g_string_append(text, tmp);
18530
a14e2e66b293 Make the MSN logger set flags and ues <br> instead of \n. This fixes the
Richard Laager <rlaager@pidgin.im>
parents: 18529
diff changeset
1136 text = g_string_append(text, "</span><br>");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1137 } else {
14142
97cb27b1093f [gaim-migrate @ 16701]
Daniel Atallah <datallah@pidgin.im>
parents: 14139
diff changeset
1138 text = g_string_append(text, tmp);
18530
a14e2e66b293 Make the MSN logger set flags and ues <br> instead of \n. This fixes the
Richard Laager <rlaager@pidgin.im>
parents: 18529
diff changeset
1139 text = g_string_append(text, "<br>");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1140 }
14142
97cb27b1093f [gaim-migrate @ 16701]
Daniel Atallah <datallah@pidgin.im>
parents: 14139
diff changeset
1141 g_free(tmp);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1142 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1143
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1144 data->text = text;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1145
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1146 return text->str;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1147 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1148
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1149 static int msn_logger_size (PurpleLog *log)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1150 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1151 char *text;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1152 size_t size;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1153
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1154 g_return_val_if_fail(log != NULL, 0);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1155
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
1156 if (purple_prefs_get_bool("/plugins/core/log_reader/fast_sizes"))
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1157 return 0;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1158
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1159 text = msn_logger_read(log, NULL);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1160 size = strlen(text);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1161 g_free(text);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1162
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1163 return size;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1164 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1165
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1166 static void msn_logger_finalize(PurpleLog *log)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1167 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1168 struct msn_logger_data *data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1169
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1170 g_return_if_fail(log != NULL);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1171
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1172 data = log->logger_data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1173
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1174 if (data->last_log)
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
1175 purple_xmlnode_free(data->root);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1176
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1177 if (data->text)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1178 g_string_free(data->text, FALSE);
18513
160f45152db1 Eliminate some leaks.
Richard Laager <rlaager@pidgin.im>
parents: 18512
diff changeset
1179
160f45152db1 Eliminate some leaks.
Richard Laager <rlaager@pidgin.im>
parents: 18512
diff changeset
1180 g_free(data);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1181 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1182
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1183
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1184 /*****************************************************************************
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1185 * Trillian Logger *
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1186 *****************************************************************************/
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1187
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1188 /* The trillian logger doesn't write logs, only reads them. This is to include
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1189 * Trillian logs in the log viewer transparently.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1190 */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1191
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1192 static PurpleLogLogger *trillian_logger;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1193 static void trillian_logger_finalize(PurpleLog *log);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1194
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1195 struct trillian_logger_data {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1196 char *path; /* FIXME: Change this to use PurpleStringref like log.c:old_logger_list */
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1197 int offset;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1198 int length;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1199 char *their_nickname;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1200 };
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1201
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1202 static GList *trillian_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1203 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1204 GList *list = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1205 const char *logdir;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1206 PurplePlugin *plugin;
36544
1bf8b6ef5aea Renamed PurplePluginProtocolInfo to PurpleProtocol
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
1207 PurpleProtocol *protocol;
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
1208 char *protocol_name;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1209 const char *buddy_name;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1210 char *filename;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1211 char *path;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1212 GError *error = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1213 gchar *contents = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1214 gsize length;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1215 gchar *line;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1216 gchar *c;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1217
19090
f14418fec130 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <datallah@pidgin.im>
parents: 19080
diff changeset
1218 g_return_val_if_fail(sn != NULL, NULL);
f14418fec130 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <datallah@pidgin.im>
parents: 19080
diff changeset
1219 g_return_val_if_fail(account != NULL, NULL);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1220
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
1221 logdir = purple_prefs_get_string("/plugins/core/log_reader/trillian/log_directory");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1222
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1223 /* By clearing the log directory path, this logger can be (effectively) disabled. */
19090
f14418fec130 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <datallah@pidgin.im>
parents: 19080
diff changeset
1224 if (!logdir || !*logdir)
f14418fec130 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <datallah@pidgin.im>
parents: 19080
diff changeset
1225 return NULL;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1226
36626
18fc361b3704 Renamed purple_find_protocol_info to purple_protocols_find
Ankit Vani <a@nevitus.org>
parents: 36606
diff changeset
1227 plugin = purple_protocols_find(purple_account_get_protocol_id(account));
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1228 if (!plugin)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1229 return NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1230
36544
1bf8b6ef5aea Renamed PurplePluginProtocolInfo to PurpleProtocol
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
1231 protocol = PURPLE_PLUGIN_PROTOCOL_INFO(plugin);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1232
36719
0d7682bdf828 Updated protocol iface calls
Ankit Vani <a@nevitus.org>
parents: 36692
diff changeset
1233 protocol_name = g_ascii_strup(purple_protocol_class_list_icon(protocol, account, NULL), -1);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1234
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1235 buddy_name = purple_normalize(account, sn);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1236
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1237 filename = g_strdup_printf("%s.log", buddy_name);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1238 path = g_build_filename(
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
1239 logdir, protocol_name, filename, NULL);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1240
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
1241 purple_debug_info("Trillian log list", "Reading %s\n", path);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1242 /* FIXME: There's really no need to read the entire file at once.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1243 * See src/log.c:old_logger_list for a better approach.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1244 */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1245 if (!g_file_get_contents(path, &contents, &length, &error)) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1246 if (error) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1247 g_error_free(error);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1248 error = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1249 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1250 g_free(path);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1251
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1252 path = g_build_filename(
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
1253 logdir, protocol_name, "Query", filename, NULL);
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
1254 purple_debug_info("Trillian log list", "Reading %s\n", path);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1255 if (!g_file_get_contents(path, &contents, &length, &error)) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1256 if (error)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1257 g_error_free(error);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1258 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1259 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1260 g_free(filename);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1261
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1262 if (contents) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1263 struct trillian_logger_data *data = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1264 int offset = 0;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1265 int last_line_offset = 0;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1266
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1267 line = contents;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1268 c = contents;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1269 while (*c) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1270 offset++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1271
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1272 if (*c != '\n') {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1273 c++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1274 continue;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1275 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1276
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1277 *c = '\0';
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1278 if (purple_str_has_prefix(line, "Session Close ")) {
13669
ffcdd1227906 [gaim-migrate @ 16070]
Richard Laager <rlaager@pidgin.im>
parents: 13498
diff changeset
1279 if (data && !data->length) {
ffcdd1227906 [gaim-migrate @ 16070]
Richard Laager <rlaager@pidgin.im>
parents: 13498
diff changeset
1280 if (!(data->length = last_line_offset - data->offset)) {
ffcdd1227906 [gaim-migrate @ 16070]
Richard Laager <rlaager@pidgin.im>
parents: 13498
diff changeset
1281 /* This log had no data, so we remove it. */
ffcdd1227906 [gaim-migrate @ 16070]
Richard Laager <rlaager@pidgin.im>
parents: 13498
diff changeset
1282 GList *last = g_list_last(list);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1283
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
1284 purple_debug_info("Trillian log list",
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
1285 "Empty log. Offset %i\n", data->offset);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1286
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1287 trillian_logger_finalize((PurpleLog *)last->data);
13669
ffcdd1227906 [gaim-migrate @ 16070]
Richard Laager <rlaager@pidgin.im>
parents: 13498
diff changeset
1288 list = g_list_delete_link(list, last);
ffcdd1227906 [gaim-migrate @ 16070]
Richard Laager <rlaager@pidgin.im>
parents: 13498
diff changeset
1289 }
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1290 }
18180
96acb4938782 Fix a mistake noticed by Michael Shkutkov and add a comment explaining the code.
Richard Laager <rlaager@pidgin.im>
parents: 17642
diff changeset
1291 } else if (line[0] && line[1] && line[2] &&
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1292 purple_str_has_prefix(&line[3], "sion Start ")) {
18180
96acb4938782 Fix a mistake noticed by Michael Shkutkov and add a comment explaining the code.
Richard Laager <rlaager@pidgin.im>
parents: 17642
diff changeset
1293 /* The conditional is to make sure we're not reading off
96acb4938782 Fix a mistake noticed by Michael Shkutkov and add a comment explaining the code.
Richard Laager <rlaager@pidgin.im>
parents: 17642
diff changeset
1294 * the end of the string. We don't want strlen(), as that'd
96acb4938782 Fix a mistake noticed by Michael Shkutkov and add a comment explaining the code.
Richard Laager <rlaager@pidgin.im>
parents: 17642
diff changeset
1295 * have to count the whole string needlessly.
18515
2a028601289a Remove trailing whitespace.
Richard Laager <rlaager@pidgin.im>
parents: 18514
diff changeset
1296 *
18180
96acb4938782 Fix a mistake noticed by Michael Shkutkov and add a comment explaining the code.
Richard Laager <rlaager@pidgin.im>
parents: 17642
diff changeset
1297 * The odd check here is because a Session Start at the
96acb4938782 Fix a mistake noticed by Michael Shkutkov and add a comment explaining the code.
Richard Laager <rlaager@pidgin.im>
parents: 17642
diff changeset
1298 * beginning of the file can be overwritten with a UTF-8
96acb4938782 Fix a mistake noticed by Michael Shkutkov and add a comment explaining the code.
Richard Laager <rlaager@pidgin.im>
parents: 17642
diff changeset
1299 * byte order mark. Yes, it's weird.
96acb4938782 Fix a mistake noticed by Michael Shkutkov and add a comment explaining the code.
Richard Laager <rlaager@pidgin.im>
parents: 17642
diff changeset
1300 */
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1301 char *their_nickname = line;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1302 char *timestamp;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1303
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1304 if (data && !data->length)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1305 data->length = last_line_offset - data->offset;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1306
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1307 while (*their_nickname && (*their_nickname != ':'))
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1308 their_nickname++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1309 their_nickname++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1310
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1311 /* This code actually has nothing to do with
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1312 * the timestamp YET. I'm simply using this
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1313 * variable for now to NUL-terminate the
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1314 * their_nickname string.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1315 */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1316 timestamp = their_nickname;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1317 while (*timestamp && *timestamp != ')')
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1318 timestamp++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1319
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1320 if (*timestamp == ')') {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1321 char *month;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1322 struct tm tm;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1323
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1324 *timestamp = '\0';
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1325 if (line[0] && line[1] && line[2])
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1326 timestamp += 3;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1327
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1328 /* Now we start dealing with the timestamp. */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1329
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1330 /* Skip over the day name. */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1331 while (*timestamp && (*timestamp != ' '))
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1332 timestamp++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1333 *timestamp = '\0';
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1334 timestamp++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1335
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1336 /* Parse out the month. */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1337 month = timestamp;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1338 while (*timestamp && (*timestamp != ' '))
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1339 timestamp++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1340 *timestamp = '\0';
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1341 timestamp++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1342
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1343 /* Parse the day, time, and year. */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1344 if (sscanf(timestamp, "%u %u:%u:%u %u",
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1345 &tm.tm_mday, &tm.tm_hour,
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1346 &tm.tm_min, &tm.tm_sec,
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1347 &tm.tm_year) != 5) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1348
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
1349 purple_debug_error("Trillian log timestamp parse",
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
1350 "Session Start parsing error\n");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1351 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1352 PurpleLog *log;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1353
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1354 tm.tm_year -= 1900;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1355
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1356 /* Let the C library deal with
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1357 * daylight savings time.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1358 */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1359 tm.tm_isdst = -1;
20985
ba4d20527e23 Use functions and loops and all those fancy things.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20974
diff changeset
1360 tm.tm_mon = get_month(month);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1361
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1362 data = g_new0(
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1363 struct trillian_logger_data, 1);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1364 data->path = g_strdup(path);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1365 data->offset = offset;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1366 data->length = 0;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1367 data->their_nickname =
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1368 g_strdup(their_nickname);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1369
13120
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 12727
diff changeset
1370 /* XXX: Look into this later... Should we pass in a struct tm? */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1371 log = purple_log_new(PURPLE_LOG_IM,
13120
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 12727
diff changeset
1372 sn, account, NULL, mktime(&tm), NULL);
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
1373 log->logger = trillian_logger;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1374 log->logger_data = data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1375
18516
721bd74979a8 Prepend to lists for performance, and use g_list_reverse when the list is
Richard Laager <rlaager@pidgin.im>
parents: 18515
diff changeset
1376 list = g_list_prepend(list, log);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1377 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1378 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1379 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1380 c++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1381 line = c;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1382 last_line_offset = offset;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1383 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1384
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1385 g_free(contents);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1386 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1387 g_free(path);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1388
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
1389 g_free(protocol_name);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1390
18516
721bd74979a8 Prepend to lists for performance, and use g_list_reverse when the list is
Richard Laager <rlaager@pidgin.im>
parents: 18515
diff changeset
1391 return g_list_reverse(list);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1392 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1393
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1394 static char * trillian_logger_read (PurpleLog *log, PurpleLogReadFlags *flags)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1395 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1396 struct trillian_logger_data *data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1397 char *read;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1398 FILE *file;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1399 PurpleBuddy *buddy;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1400 char *escaped;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1401 GString *formatted;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1402 char *c;
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1403 const char *line;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1404
19090
f14418fec130 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <datallah@pidgin.im>
parents: 19080
diff changeset
1405 if (flags != NULL)
f14418fec130 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <datallah@pidgin.im>
parents: 19080
diff changeset
1406 *flags = PURPLE_LOG_READ_NO_NEWLINE;
19080
37da30ac730d bug with flags variable initialization was fixed
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 19060
diff changeset
1407
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1408 g_return_val_if_fail(log != NULL, g_strdup(""));
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1409
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1410 data = log->logger_data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1411
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1412 g_return_val_if_fail(data->path != NULL, g_strdup(""));
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1413 g_return_val_if_fail(data->length > 0, g_strdup(""));
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1414 g_return_val_if_fail(data->their_nickname != NULL, g_strdup(""));
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1415
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
1416 purple_debug_info("Trillian log read", "Reading %s\n", data->path);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1417
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1418 read = g_malloc(data->length + 2);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1419
13158
3b4295931fd6 [gaim-migrate @ 15520]
Richard Laager <rlaager@pidgin.im>
parents: 13120
diff changeset
1420 file = g_fopen(data->path, "rb");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1421 fseek(file, data->offset, SEEK_SET);
20986
3b652f4066b4 Since we are looking at the return value of fread, it actually matters that
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20985
diff changeset
1422 data->length = fread(read, 1, data->length, file);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1423 fclose(file);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1424
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1425 if (read[data->length-1] == '\n') {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1426 read[data->length] = '\0';
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1427 } else {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1428 read[data->length] = '\n';
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1429 read[data->length+1] = '\0';
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1430 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1431
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1432 /* Load miscellaneous data. */
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34699
diff changeset
1433 buddy = purple_blist_find_buddy(log->account, log->name);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1434
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1435 escaped = g_markup_escape_text(read, -1);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1436 g_free(read);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1437 read = escaped;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1438
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1439 /* Apply formatting... */
17640
e991110a1e71 Size the formatting string first, to avoid unnecessary resizing.
Richard Laager <rlaager@pidgin.im>
parents: 17639
diff changeset
1440 formatted = g_string_sized_new(strlen(read));
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1441 c = read;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1442 line = read;
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1443 while (c)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1444 {
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1445 const char *link;
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1446 const char *footer = NULL;
17642
c0409038fd04 Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@pidgin.im>
parents: 17641
diff changeset
1447 GString *temp = NULL;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1448
31984
f1a7e330f646 log_reader: Properly fix the QIP crash, and unbreak the Trillian reader (c is NULL the last time through, so just quit out early then)
Paul Aurich <darkrain42@pidgin.im>
parents: 31982
diff changeset
1449 /* There's always a trailing '\n' at the end of the file (see above), so
f1a7e330f646 log_reader: Properly fix the QIP crash, and unbreak the Trillian reader (c is NULL the last time through, so just quit out early then)
Paul Aurich <darkrain42@pidgin.im>
parents: 31982
diff changeset
1450 * just quit out if we don't find another, because we're at the end.
f1a7e330f646 log_reader: Properly fix the QIP crash, and unbreak the Trillian reader (c is NULL the last time through, so just quit out early then)
Paul Aurich <darkrain42@pidgin.im>
parents: 31982
diff changeset
1451 */
31980
4fbc64ec98a5 log_reader: strchr(), and some simplifying to make clang happier
Paul Aurich <darkrain42@pidgin.im>
parents: 31294
diff changeset
1452 c = strchr(c, '\n');
31984
f1a7e330f646 log_reader: Properly fix the QIP crash, and unbreak the Trillian reader (c is NULL the last time through, so just quit out early then)
Paul Aurich <darkrain42@pidgin.im>
parents: 31982
diff changeset
1453 if (!c)
f1a7e330f646 log_reader: Properly fix the QIP crash, and unbreak the Trillian reader (c is NULL the last time through, so just quit out early then)
Paul Aurich <darkrain42@pidgin.im>
parents: 31982
diff changeset
1454 break;
f1a7e330f646 log_reader: Properly fix the QIP crash, and unbreak the Trillian reader (c is NULL the last time through, so just quit out early then)
Paul Aurich <darkrain42@pidgin.im>
parents: 31982
diff changeset
1455
31980
4fbc64ec98a5 log_reader: strchr(), and some simplifying to make clang happier
Paul Aurich <darkrain42@pidgin.im>
parents: 31294
diff changeset
1456 *c = '\0';
4fbc64ec98a5 log_reader: strchr(), and some simplifying to make clang happier
Paul Aurich <darkrain42@pidgin.im>
parents: 31294
diff changeset
1457 c++;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1458
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1459 /* Convert links.
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1460 *
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1461 * The format is (Link: URL)URL
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1462 * So, I want to find each occurance of "(Link: " and replace that chunk with:
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1463 * <a href="
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1464 * Then, replace the next ")" with:
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1465 * ">
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1466 * Then, replace the next " " (or add this if the end-of-line is reached) with:
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1467 * </a>
18515
2a028601289a Remove trailing whitespace.
Richard Laager <rlaager@pidgin.im>
parents: 18514
diff changeset
1468 *
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1469 * As implemented, this isn't perfect, but it should cover common cases.
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1470 */
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1471 while (line && (link = strstr(line, "(Link: ")))
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1472 {
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1473 const char *tmp = link;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1474
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1475 link += 7;
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1476 if (*link)
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1477 {
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1478 char *end_paren;
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1479 char *space;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1480
31980
4fbc64ec98a5 log_reader: strchr(), and some simplifying to make clang happier
Paul Aurich <darkrain42@pidgin.im>
parents: 31294
diff changeset
1481 if (!(end_paren = strchr(link, ')')))
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1482 {
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1483 /* Something is not as we expect. Bail out. */
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1484 break;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1485 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1486
17642
c0409038fd04 Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@pidgin.im>
parents: 17641
diff changeset
1487 if (!temp)
31980
4fbc64ec98a5 log_reader: strchr(), and some simplifying to make clang happier
Paul Aurich <darkrain42@pidgin.im>
parents: 31294
diff changeset
1488 temp = g_string_sized_new(strlen(line));
17642
c0409038fd04 Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@pidgin.im>
parents: 17641
diff changeset
1489
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1490 g_string_append_len(temp, line, (tmp - line));
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1491
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1492 /* Start an <a> tag. */
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1493 g_string_append(temp, "<a href=\"");
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1494
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1495 /* Append up to the ) */
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1496 g_string_append_len(temp, link, end_paren - link);
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1497
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1498 /* Finish the <a> tag. */
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1499 g_string_append(temp, "\">");
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1500
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1501 /* The \r is a bit of a hack to keep there from being a \r in
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1502 * the link text, which may not matter. */
31980
4fbc64ec98a5 log_reader: strchr(), and some simplifying to make clang happier
Paul Aurich <darkrain42@pidgin.im>
parents: 31294
diff changeset
1503 if ((space = strchr(end_paren, ' ')) || (space = strchr(end_paren, '\r')))
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1504 {
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1505 g_string_append_len(temp, end_paren + 1, space - end_paren - 1);
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1506
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1507 /* Close the <a> tag. */
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1508 g_string_append(temp, "</a>");
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1509
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1510 space++;
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1511 }
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1512 else
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1513 {
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1514 /* There is no space before the end of the line. */
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1515 g_string_append(temp, end_paren + 1);
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1516 /* Close the <a> tag. */
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1517 g_string_append(temp, "</a>");
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1518 }
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1519 line = space;
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1520 }
17641
03a8f532c3cf Bail out to avoid an infinite loop in an extreme corner case.
Richard Laager <rlaager@pidgin.im>
parents: 17640
diff changeset
1521 else
03a8f532c3cf Bail out to avoid an infinite loop in an extreme corner case.
Richard Laager <rlaager@pidgin.im>
parents: 17640
diff changeset
1522 {
03a8f532c3cf Bail out to avoid an infinite loop in an extreme corner case.
Richard Laager <rlaager@pidgin.im>
parents: 17640
diff changeset
1523 /* Something is not as we expect. Bail out. */
03a8f532c3cf Bail out to avoid an infinite loop in an extreme corner case.
Richard Laager <rlaager@pidgin.im>
parents: 17640
diff changeset
1524 break;
03a8f532c3cf Bail out to avoid an infinite loop in an extreme corner case.
Richard Laager <rlaager@pidgin.im>
parents: 17640
diff changeset
1525 }
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1526 }
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1527
17642
c0409038fd04 Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@pidgin.im>
parents: 17641
diff changeset
1528 if (temp)
c0409038fd04 Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@pidgin.im>
parents: 17641
diff changeset
1529 {
c0409038fd04 Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@pidgin.im>
parents: 17641
diff changeset
1530 if (line)
c0409038fd04 Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@pidgin.im>
parents: 17641
diff changeset
1531 g_string_append(temp, line);
c0409038fd04 Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@pidgin.im>
parents: 17641
diff changeset
1532 line = temp->str;
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1533 }
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1534
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1535 if (*line == '[') {
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1536 const char *timestamp;
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1537
31980
4fbc64ec98a5 log_reader: strchr(), and some simplifying to make clang happier
Paul Aurich <darkrain42@pidgin.im>
parents: 31294
diff changeset
1538 if ((timestamp = strchr(line, ']'))) {
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1539 line++;
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1540 /* TODO: Parse the timestamp and convert it to Purple's format. */
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1541 g_string_append(formatted, "<font size=\"2\">(");
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1542 g_string_append_len(formatted, line, (timestamp - line));
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1543 g_string_append(formatted,")</font> ");
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1544 line = timestamp + 1;
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1545 if (line[0] && line[1])
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1546 line++;
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1547 }
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1548
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1549 if (purple_str_has_prefix(line, "*** ")) {
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1550 line += (sizeof("*** ") - 1);
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1551 g_string_append(formatted, "<b>");
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1552 footer = "</b>";
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1553 if (purple_str_has_prefix(line, "NOTE: This user is offline.")) {
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1554 line = _("User is offline.");
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1555 } else if (purple_str_has_prefix(line,
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1556 "NOTE: Your status is currently set to ")) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1557
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1558 line += (sizeof("NOTE: ") - 1);
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1559 } else if (purple_str_has_prefix(line, "Auto-response sent to ")) {
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1560 g_string_append(formatted, _("Auto-response sent:"));
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1561 while (*line && *line != ':')
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1562 line++;
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1563 if (*line)
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1564 line++;
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1565 g_string_append(formatted, "</b>");
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1566 footer = NULL;
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1567 } else if (strstr(line, " signed off ")) {
24532
c401bbcb46e3 Simplify some of the changes. Yeah, this code sucks. I wrote it a LONG
Richard Laager <rlaager@pidgin.im>
parents: 24531
diff changeset
1568 const char *alias = NULL;
c401bbcb46e3 Simplify some of the changes. Yeah, this code sucks. I wrote it a LONG
Richard Laager <rlaager@pidgin.im>
parents: 24531
diff changeset
1569
c401bbcb46e3 Simplify some of the changes. Yeah, this code sucks. I wrote it a LONG
Richard Laager <rlaager@pidgin.im>
parents: 24531
diff changeset
1570 if (buddy != NULL)
c401bbcb46e3 Simplify some of the changes. Yeah, this code sucks. I wrote it a LONG
Richard Laager <rlaager@pidgin.im>
parents: 24531
diff changeset
1571 alias = purple_buddy_get_alias(buddy);
c401bbcb46e3 Simplify some of the changes. Yeah, this code sucks. I wrote it a LONG
Richard Laager <rlaager@pidgin.im>
parents: 24531
diff changeset
1572
c401bbcb46e3 Simplify some of the changes. Yeah, this code sucks. I wrote it a LONG
Richard Laager <rlaager@pidgin.im>
parents: 24531
diff changeset
1573 if (alias != NULL) {
c401bbcb46e3 Simplify some of the changes. Yeah, this code sucks. I wrote it a LONG
Richard Laager <rlaager@pidgin.im>
parents: 24531
diff changeset
1574 g_string_append_printf(formatted,
c401bbcb46e3 Simplify some of the changes. Yeah, this code sucks. I wrote it a LONG
Richard Laager <rlaager@pidgin.im>
parents: 24531
diff changeset
1575 _("%s has signed off."), alias);
24531
76e72697f7d6 Hide the blistnode, buddy, contact, group, and chat structs
Gary Kramlich <grim@reaperworld.com>
parents: 24231
diff changeset
1576 } else {
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1577 g_string_append_printf(formatted,
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1578 _("%s has signed off."), log->name);
24531
76e72697f7d6 Hide the blistnode, buddy, contact, group, and chat structs
Gary Kramlich <grim@reaperworld.com>
parents: 24231
diff changeset
1579 }
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1580 line = "";
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1581 } else if (strstr(line, " signed on ")) {
24532
c401bbcb46e3 Simplify some of the changes. Yeah, this code sucks. I wrote it a LONG
Richard Laager <rlaager@pidgin.im>
parents: 24531
diff changeset
1582 const char *alias = NULL;
c401bbcb46e3 Simplify some of the changes. Yeah, this code sucks. I wrote it a LONG
Richard Laager <rlaager@pidgin.im>
parents: 24531
diff changeset
1583
c401bbcb46e3 Simplify some of the changes. Yeah, this code sucks. I wrote it a LONG
Richard Laager <rlaager@pidgin.im>
parents: 24531
diff changeset
1584 if (buddy != NULL)
c401bbcb46e3 Simplify some of the changes. Yeah, this code sucks. I wrote it a LONG
Richard Laager <rlaager@pidgin.im>
parents: 24531
diff changeset
1585 alias = purple_buddy_get_alias(buddy);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 29739
diff changeset
1586
24532
c401bbcb46e3 Simplify some of the changes. Yeah, this code sucks. I wrote it a LONG
Richard Laager <rlaager@pidgin.im>
parents: 24531
diff changeset
1587 if (alias != NULL)
c401bbcb46e3 Simplify some of the changes. Yeah, this code sucks. I wrote it a LONG
Richard Laager <rlaager@pidgin.im>
parents: 24531
diff changeset
1588 g_string_append(formatted, alias);
c401bbcb46e3 Simplify some of the changes. Yeah, this code sucks. I wrote it a LONG
Richard Laager <rlaager@pidgin.im>
parents: 24531
diff changeset
1589 else
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1590 g_string_append(formatted, log->name);
24532
c401bbcb46e3 Simplify some of the changes. Yeah, this code sucks. I wrote it a LONG
Richard Laager <rlaager@pidgin.im>
parents: 24531
diff changeset
1591
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1592 line = " logged in.";
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1593 } else if (purple_str_has_prefix(line,
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1594 "One or more messages may have been undeliverable.")) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1595
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1596 g_string_append(formatted,
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1597 "<span style=\"color: #ff0000;\">");
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1598 g_string_append(formatted,
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1599 _("One or more messages may have been "
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1600 "undeliverable."));
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1601 line = "";
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1602 footer = "</span></b>";
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1603 } else if (purple_str_has_prefix(line,
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1604 "You have been disconnected.")) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1605
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1606 g_string_append(formatted,
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1607 "<span style=\"color: #ff0000;\">");
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1608 g_string_append(formatted,
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1609 _("You were disconnected from the server."));
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1610 line = "";
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1611 footer = "</span></b>";
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1612 } else if (purple_str_has_prefix(line,
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1613 "You are currently disconnected.")) {
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1614
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1615 g_string_append(formatted,
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1616 "<span style=\"color: #ff0000;\">");
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1617 line = _("You are currently disconnected. Messages "
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1618 "will not be received unless you are "
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1619 "logged in.");
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1620 footer = "</span></b>";
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1621 } else if (purple_str_has_prefix(line,
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1622 "Your previous message has not been sent.")) {
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1623
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1624 g_string_append(formatted,
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1625 "<span style=\"color: #ff0000;\">");
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1626
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1627 if (purple_str_has_prefix(line,
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1628 "Your previous message has not been sent. "
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1629 "Reason: Maximum length exceeded.")) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1630
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1631 g_string_append(formatted,
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1632 _("Message could not be sent because "
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1633 "the maximum length was exceeded."));
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1634 line = "";
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1635 } else {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1636 g_string_append(formatted,
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1637 _("Message could not be sent."));
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1638 line += (sizeof(
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1639 "Your previous message "
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1640 "has not been sent. ") - 1);
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1641 }
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1642
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1643 footer = "</span></b>";
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1644 }
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1645 } else if (purple_str_has_prefix(line, data->their_nickname)) {
24531
76e72697f7d6 Hide the blistnode, buddy, contact, group, and chat structs
Gary Kramlich <grim@reaperworld.com>
parents: 24231
diff changeset
1646 if (buddy != NULL) {
24532
c401bbcb46e3 Simplify some of the changes. Yeah, this code sucks. I wrote it a LONG
Richard Laager <rlaager@pidgin.im>
parents: 24531
diff changeset
1647 const char *alias = purple_buddy_get_alias(buddy);
c401bbcb46e3 Simplify some of the changes. Yeah, this code sucks. I wrote it a LONG
Richard Laager <rlaager@pidgin.im>
parents: 24531
diff changeset
1648
c401bbcb46e3 Simplify some of the changes. Yeah, this code sucks. I wrote it a LONG
Richard Laager <rlaager@pidgin.im>
parents: 24531
diff changeset
1649 if (alias != NULL) {
24531
76e72697f7d6 Hide the blistnode, buddy, contact, group, and chat structs
Gary Kramlich <grim@reaperworld.com>
parents: 24231
diff changeset
1650 line += strlen(data->their_nickname) + 2;
76e72697f7d6 Hide the blistnode, buddy, contact, group, and chat structs
Gary Kramlich <grim@reaperworld.com>
parents: 24231
diff changeset
1651 g_string_append_printf(formatted,
76e72697f7d6 Hide the blistnode, buddy, contact, group, and chat structs
Gary Kramlich <grim@reaperworld.com>
parents: 24231
diff changeset
1652 "<span style=\"color: #A82F2F;\">"
76e72697f7d6 Hide the blistnode, buddy, contact, group, and chat structs
Gary Kramlich <grim@reaperworld.com>
parents: 24231
diff changeset
1653 "<b>%s</b></span>: ", alias);
76e72697f7d6 Hide the blistnode, buddy, contact, group, and chat structs
Gary Kramlich <grim@reaperworld.com>
parents: 24231
diff changeset
1654 }
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1655 }
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1656 } else {
31980
4fbc64ec98a5 log_reader: strchr(), and some simplifying to make clang happier
Paul Aurich <darkrain42@pidgin.im>
parents: 31294
diff changeset
1657 const char *line2 = strchr(line, ':');
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1658 if (line2) {
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1659 const char *acct_name;
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1660 line2++;
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1661 line = line2;
34589
428e92c79631 Renamed purple_account_[get,set]_alias to purple_account[get,set]_private_alias.
Ankit Vani <a@nevitus.org>
parents: 33940
diff changeset
1662 acct_name = purple_account_get_private_alias(log->account);
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1663 if (!acct_name)
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1664 acct_name = purple_account_get_username(log->account);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1665
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1666 g_string_append_printf(formatted,
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1667 "<span style=\"color: #16569E;\">"
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1668 "<b>%s</b></span>:", acct_name);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1669 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1670 }
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1671 }
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1672
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1673 g_string_append(formatted, line);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1674
17642
c0409038fd04 Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@pidgin.im>
parents: 17641
diff changeset
1675 line = c;
c0409038fd04 Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@pidgin.im>
parents: 17641
diff changeset
1676 if (temp)
c0409038fd04 Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@pidgin.im>
parents: 17641
diff changeset
1677 g_string_free(temp, TRUE);
c0409038fd04 Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@pidgin.im>
parents: 17641
diff changeset
1678
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1679 if (footer)
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1680 g_string_append(formatted, footer);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1681
18527
f99e08c197f4 Make the Trillian logger set flags properly, and use <br> instead of \n for
Richard Laager <rlaager@pidgin.im>
parents: 18525
diff changeset
1682 g_string_append(formatted, "<br>");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1683 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1684
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1685 g_free(read);
18527
f99e08c197f4 Make the Trillian logger set flags properly, and use <br> instead of \n for
Richard Laager <rlaager@pidgin.im>
parents: 18525
diff changeset
1686
f99e08c197f4 Make the Trillian logger set flags properly, and use <br> instead of \n for
Richard Laager <rlaager@pidgin.im>
parents: 18525
diff changeset
1687 /* XXX: TODO: What can we do about removing \r characters?
f99e08c197f4 Make the Trillian logger set flags properly, and use <br> instead of \n for
Richard Laager <rlaager@pidgin.im>
parents: 18525
diff changeset
1688 * XXX: TODO: and will that allow us to avoid this
f99e08c197f4 Make the Trillian logger set flags properly, and use <br> instead of \n for
Richard Laager <rlaager@pidgin.im>
parents: 18525
diff changeset
1689 * XXX: TODO: g_strchomp(), or is that unrelated? */
17642
c0409038fd04 Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@pidgin.im>
parents: 17641
diff changeset
1690 /* XXX: TODO: Avoid this g_strchomp() */
c0409038fd04 Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@pidgin.im>
parents: 17641
diff changeset
1691 return g_strchomp(g_string_free(formatted, FALSE));
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1692 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1693
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1694 static int trillian_logger_size (PurpleLog *log)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1695 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1696 struct trillian_logger_data *data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1697 char *text;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1698 size_t size;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1699
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1700 g_return_val_if_fail(log != NULL, 0);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1701
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1702 data = log->logger_data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1703
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
1704 if (purple_prefs_get_bool("/plugins/core/log_reader/fast_sizes")) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1705 return data ? data->length : 0;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1706 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1707
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1708 text = trillian_logger_read(log, NULL);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1709 size = strlen(text);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1710 g_free(text);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1711
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1712 return size;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1713 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1714
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1715 static void trillian_logger_finalize(PurpleLog *log)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1716 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1717 struct trillian_logger_data *data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1718
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1719 g_return_if_fail(log != NULL);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1720
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1721 data = log->logger_data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1722
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1723 g_free(data->path);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1724 g_free(data->their_nickname);
18513
160f45152db1 Eliminate some leaks.
Richard Laager <rlaager@pidgin.im>
parents: 18512
diff changeset
1725 g_free(data);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1726 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1727
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1728 /*****************************************************************************
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1729 * QIP Logger *
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1730 *****************************************************************************/
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1731
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1732 /* The QIP logger doesn't write logs, only reads them. This is to include
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1733 * QIP logs in the log viewer transparently.
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1734 */
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1735 #define QIP_LOG_DELIMITER "--------------------------------------"
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1736 #define QIP_LOG_IN_MESSAGE (QIP_LOG_DELIMITER "<-")
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1737 #define QIP_LOG_OUT_MESSAGE (QIP_LOG_DELIMITER ">-")
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1738 #define QIP_LOG_IN_MESSAGE_ESC (QIP_LOG_DELIMITER "&lt;-")
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1739 #define QIP_LOG_OUT_MESSAGE_ESC (QIP_LOG_DELIMITER "&gt;-")
18509
64bad4cb0a56 creat new log if difference between current and previous message more then predefined constant (currently one hour)
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18508
diff changeset
1740 #define QIP_LOG_TIMEOUT (60*60)
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1741
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1742 static PurpleLogLogger *qip_logger;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1743
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1744 struct qip_logger_data {
18515
2a028601289a Remove trailing whitespace.
Richard Laager <rlaager@pidgin.im>
parents: 18514
diff changeset
1745
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1746 char *path; /* FIXME: Change this to use PurpleStringref like log.c:old_logger_list */
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1747 int offset;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1748 int length;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1749 };
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1750
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1751 static GList *qip_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account)
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1752 {
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1753 GList *list = NULL;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1754 const char *logdir;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1755 PurplePlugin *plugin;
36544
1bf8b6ef5aea Renamed PurplePluginProtocolInfo to PurpleProtocol
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
1756 PurpleProtocol *protocol;
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1757 char *username;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1758 char *filename;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1759 char *path;
18518
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1760 char *contents;
18514
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1761 struct qip_logger_data *data = NULL;
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1762 struct tm prev_tm;
18521
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1763 struct tm tm;
18514
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1764 gboolean prev_tm_init = FALSE;
18521
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1765 gboolean main_cycle = TRUE;
18514
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1766 char *c;
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1767 char *start_log;
24231
6907b62f25fe Warnings cleanup from Lee Roach. Fixes #6242.
Daniel Atallah <datallah@pidgin.im>
parents: 22979
diff changeset
1768 char *new_line = NULL;
18514
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1769 int offset = 0;
18522
dbf8b610712a optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18521
diff changeset
1770 GError *error;
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1771
19090
f14418fec130 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <datallah@pidgin.im>
parents: 19080
diff changeset
1772 g_return_val_if_fail(sn != NULL, NULL);
f14418fec130 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <datallah@pidgin.im>
parents: 19080
diff changeset
1773 g_return_val_if_fail(account != NULL, NULL);
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1774
18514
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1775 /* QIP only supports ICQ. */
36637
9b0109ae118d Renamed some prpl stuff to protocol stuff.
Ankit Vani <a@nevitus.org>
parents: 36632
diff changeset
1776 if (strcmp(purple_account_get_protocol_id(account), "icq"))
19090
f14418fec130 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <datallah@pidgin.im>
parents: 19080
diff changeset
1777 return NULL;
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1778
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1779 logdir = purple_prefs_get_string("/plugins/core/log_reader/qip/log_directory");
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1780
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1781 /* By clearing the log directory path, this logger can be (effectively) disabled. */
19090
f14418fec130 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <datallah@pidgin.im>
parents: 19080
diff changeset
1782 if (!logdir || !*logdir)
f14418fec130 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <datallah@pidgin.im>
parents: 19080
diff changeset
1783 return NULL;
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1784
36626
18fc361b3704 Renamed purple_find_protocol_info to purple_protocols_find
Ankit Vani <a@nevitus.org>
parents: 36606
diff changeset
1785 plugin = purple_protocols_find(purple_account_get_protocol_id(account));
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1786 if (!plugin)
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1787 return NULL;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1788
36544
1bf8b6ef5aea Renamed PurplePluginProtocolInfo to PurpleProtocol
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
1789 protocol = PURPLE_PLUGIN_PROTOCOL_INFO(plugin);
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1790
32215
0a4e72c8a67e Use accessor functions in a few places
Mark Doliner <markdoliner@pidgin.im>
parents: 31984
diff changeset
1791 username = g_strdup(purple_normalize(account, purple_account_get_username(account)));
18514
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1792 filename = g_strdup_printf("%s.txt", purple_normalize(account, sn));
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1793 path = g_build_filename(logdir, username, "History", filename, NULL);
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1794 g_free(username);
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1795 g_free(filename);
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1796
18522
dbf8b610712a optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18521
diff changeset
1797 purple_debug_info("QIP logger", "Reading %s\n", path);
dbf8b610712a optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18521
diff changeset
1798
dbf8b610712a optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18521
diff changeset
1799 error = NULL;
dbf8b610712a optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18521
diff changeset
1800 if (!g_file_get_contents(path, &contents, NULL, &error)) {
dbf8b610712a optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18521
diff changeset
1801 purple_debug_error("QIP logger",
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
1802 "Couldn't read file %s: %s \n", path,
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
1803 (error && error->message) ? error->message : "Unknown error");
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
1804 if (error)
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
1805 g_error_free(error);
18514
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1806 g_free(path);
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1807 return list;
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1808 }
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1809
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1810 c = contents;
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1811 start_log = contents;
18521
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1812 while (main_cycle) {
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1813
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1814 gboolean add_new_log = FALSE;
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1815
31984
f1a7e330f646 log_reader: Properly fix the QIP crash, and unbreak the Trillian reader (c is NULL the last time through, so just quit out early then)
Paul Aurich <darkrain42@pidgin.im>
parents: 31982
diff changeset
1816 if (c && *c) {
18522
dbf8b610712a optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18521
diff changeset
1817 if (purple_str_has_prefix(c, QIP_LOG_IN_MESSAGE) ||
dbf8b610712a optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18521
diff changeset
1818 purple_str_has_prefix(c, QIP_LOG_OUT_MESSAGE)) {
18521
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1819
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1820 char *tmp;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 29739
diff changeset
1821
18521
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1822 new_line = c;
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1823
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1824 /* find EOL */
31980
4fbc64ec98a5 log_reader: strchr(), and some simplifying to make clang happier
Paul Aurich <darkrain42@pidgin.im>
parents: 31294
diff changeset
1825 c = strchr(c, '\n');
18521
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1826 c++;
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1827
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1828 /* Find the last '(' character. */
31980
4fbc64ec98a5 log_reader: strchr(), and some simplifying to make clang happier
Paul Aurich <darkrain42@pidgin.im>
parents: 31294
diff changeset
1829 if ((tmp = strchr(c, '\n')) != NULL) {
18521
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1830 while (*tmp && *tmp != '(') --tmp;
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1831 c = tmp;
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1832 } else {
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1833 while (*c)
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1834 c++;
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1835 c--;
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1836 c = g_strrstr(c, "(");
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1837 }
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1838
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1839 if (c != NULL) {
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1840 const char *timestamp = ++c;
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1841
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1842 /* Parse the time, day, month and year */
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1843 if (sscanf(timestamp, "%u:%u:%u %u/%u/%u",
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1844 &tm.tm_hour, &tm.tm_min, &tm.tm_sec,
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1845 &tm.tm_mday, &tm.tm_mon, &tm.tm_year) != 6) {
18514
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1846
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1847 purple_debug_error("QIP logger list",
18521
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1848 "Parsing timestamp error\n");
18514
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1849 } else {
18521
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1850 tm.tm_mon -= 1;
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1851 tm.tm_year -= 1900;
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1852
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1853 /* Let the C library deal with
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1854 * daylight savings time. */
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1855 tm.tm_isdst = -1;
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1856
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1857 if (!prev_tm_init) {
18514
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1858 prev_tm = tm;
18521
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1859 prev_tm_init = TRUE;
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1860 } else {
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1861 add_new_log = difftime(mktime(&tm), mktime(&prev_tm)) > QIP_LOG_TIMEOUT;
18509
64bad4cb0a56 creat new log if difference between current and previous message more then predefined constant (currently one hour)
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18508
diff changeset
1862 }
64bad4cb0a56 creat new log if difference between current and previous message more then predefined constant (currently one hour)
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18508
diff changeset
1863 }
64bad4cb0a56 creat new log if difference between current and previous message more then predefined constant (currently one hour)
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18508
diff changeset
1864 }
64bad4cb0a56 creat new log if difference between current and previous message more then predefined constant (currently one hour)
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18508
diff changeset
1865 }
18514
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1866 } else {
18521
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1867 add_new_log = TRUE;
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1868 main_cycle = FALSE;
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1869 new_line = c;
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1870 }
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1871
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1872 /* adding log */
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1873 if (add_new_log && prev_tm_init) {
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1874 PurpleLog *log;
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1875
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1876 /* filling data */
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1877 data = g_new0(struct qip_logger_data, 1);
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1878 data->path = g_strdup(path);
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1879 data->length = new_line - start_log;
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1880 data->offset = offset;
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1881 offset += data->length;
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1882 purple_debug_info("QIP logger list",
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 29739
diff changeset
1883 "Creating log: path = (%s); length = (%d); offset = (%d)\n",
18521
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1884 data->path, data->length, data->offset);
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1885
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1886 /* XXX: Look into this later... Should we pass in a struct tm? */
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1887 log = purple_log_new(PURPLE_LOG_IM, sn, account,
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1888 NULL, mktime(&prev_tm), NULL);
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1889
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1890 log->logger = qip_logger;
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1891 log->logger_data = data;
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1892
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1893 list = g_list_prepend(list, log);
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1894
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1895 prev_tm = tm;
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1896 start_log = new_line;
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1897 }
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1898
31982
c63531b35666 log_reader: Fix an actual crash in the QIP reader.
Paul Aurich <darkrain42@pidgin.im>
parents: 31980
diff changeset
1899 if (c && *c) {
18521
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1900 /* find EOF */
31984
f1a7e330f646 log_reader: Properly fix the QIP crash, and unbreak the Trillian reader (c is NULL the last time through, so just quit out early then)
Paul Aurich <darkrain42@pidgin.im>
parents: 31982
diff changeset
1901 if ((c = strchr(c, '\n')))
f1a7e330f646 log_reader: Properly fix the QIP crash, and unbreak the Trillian reader (c is NULL the last time through, so just quit out early then)
Paul Aurich <darkrain42@pidgin.im>
parents: 31982
diff changeset
1902 c++;
18505
dca6960014b8 Converting all qip logs into UTF8
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18504
diff changeset
1903 }
18514
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1904 }
18515
2a028601289a Remove trailing whitespace.
Richard Laager <rlaager@pidgin.im>
parents: 18514
diff changeset
1905
18514
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1906 g_free(contents);
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1907 g_free(path);
18516
721bd74979a8 Prepend to lists for performance, and use g_list_reverse when the list is
Richard Laager <rlaager@pidgin.im>
parents: 18515
diff changeset
1908 return g_list_reverse(list);
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1909 }
18515
2a028601289a Remove trailing whitespace.
Richard Laager <rlaager@pidgin.im>
parents: 18514
diff changeset
1910
18518
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1911 static char *qip_logger_read(PurpleLog *log, PurpleLogReadFlags *flags)
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1912 {
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1913 struct qip_logger_data *data;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1914 PurpleBuddy *buddy;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1915 GString *formatted;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1916 char *c;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1917 const char *line;
18518
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1918 gchar *contents;
18522
dbf8b610712a optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18521
diff changeset
1919 GError *error;
dbf8b610712a optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18521
diff changeset
1920 char *utf8_string;
18523
121b16df5e05 reading only necessary part of log file using g_fopen/fseek/fread
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18522
diff changeset
1921 FILE *file;
121b16df5e05 reading only necessary part of log file using g_fopen/fseek/fread
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18522
diff changeset
1922
19090
f14418fec130 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <datallah@pidgin.im>
parents: 19080
diff changeset
1923 if (flags != NULL)
f14418fec130 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <datallah@pidgin.im>
parents: 19080
diff changeset
1924 *flags = PURPLE_LOG_READ_NO_NEWLINE;
19080
37da30ac730d bug with flags variable initialization was fixed
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 19060
diff changeset
1925
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1926 g_return_val_if_fail(log != NULL, g_strdup(""));
18515
2a028601289a Remove trailing whitespace.
Richard Laager <rlaager@pidgin.im>
parents: 18514
diff changeset
1927
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1928 data = log->logger_data;
18515
2a028601289a Remove trailing whitespace.
Richard Laager <rlaager@pidgin.im>
parents: 18514
diff changeset
1929
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1930 g_return_val_if_fail(data->path != NULL, g_strdup(""));
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1931 g_return_val_if_fail(data->length > 0, g_strdup(""));
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1932
18523
121b16df5e05 reading only necessary part of log file using g_fopen/fseek/fread
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18522
diff changeset
1933 file = g_fopen(data->path, "rb");
121b16df5e05 reading only necessary part of log file using g_fopen/fseek/fread
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18522
diff changeset
1934 g_return_val_if_fail(file != NULL, g_strdup(""));
20224
d4b827c606db applied changes from 4d50bf3b08569aa2108a9f5da47fb1548d0c7dd9
Luke Schierer <lschiere@pidgin.im>
parents: 20221
diff changeset
1935
d4b827c606db applied changes from 4d50bf3b08569aa2108a9f5da47fb1548d0c7dd9
Luke Schierer <lschiere@pidgin.im>
parents: 20221
diff changeset
1936 contents = g_malloc(data->length + 2);
d4b827c606db applied changes from 4d50bf3b08569aa2108a9f5da47fb1548d0c7dd9
Luke Schierer <lschiere@pidgin.im>
parents: 20221
diff changeset
1937
18523
121b16df5e05 reading only necessary part of log file using g_fopen/fseek/fread
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18522
diff changeset
1938 fseek(file, data->offset, SEEK_SET);
20986
3b652f4066b4 Since we are looking at the return value of fread, it actually matters that
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20985
diff changeset
1939 data->length = fread(contents, 1, data->length, file);
18523
121b16df5e05 reading only necessary part of log file using g_fopen/fseek/fread
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18522
diff changeset
1940 fclose(file);
121b16df5e05 reading only necessary part of log file using g_fopen/fseek/fread
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18522
diff changeset
1941
121b16df5e05 reading only necessary part of log file using g_fopen/fseek/fread
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18522
diff changeset
1942 contents[data->length] = '\n';
121b16df5e05 reading only necessary part of log file using g_fopen/fseek/fread
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18522
diff changeset
1943 contents[data->length + 1] = '\0';
18522
dbf8b610712a optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18521
diff changeset
1944
dbf8b610712a optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18521
diff changeset
1945 /* Convert file contents from Cp1251 to UTF-8 codeset */
dbf8b610712a optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18521
diff changeset
1946 error = NULL;
dbf8b610712a optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18521
diff changeset
1947 if (!(utf8_string = g_convert(contents, -1, "UTF-8", "Cp1251", NULL, NULL, &error))) {
dbf8b610712a optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18521
diff changeset
1948 purple_debug_error("QIP logger",
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
1949 "Couldn't convert file %s to UTF-8: %s\n", data->path,
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
1950 (error && error->message) ? error->message : "Unknown error");
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
1951 if (error)
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
1952 g_error_free(error);
18522
dbf8b610712a optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18521
diff changeset
1953 g_free(contents);
dbf8b610712a optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18521
diff changeset
1954 return g_strdup("");
dbf8b610712a optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18521
diff changeset
1955 }
18518
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1956
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1957 g_free(contents);
18522
dbf8b610712a optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18521
diff changeset
1958 contents = g_markup_escape_text(utf8_string, -1);
dbf8b610712a optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18521
diff changeset
1959 g_free(utf8_string);
dbf8b610712a optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18521
diff changeset
1960
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34699
diff changeset
1961 buddy = purple_blist_find_buddy(log->account, log->name);
18518
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1962
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1963 /* Apply formatting... */
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1964 formatted = g_string_sized_new(data->length + 2);
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1965 c = contents;
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1966 line = contents;
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1967
24646
cc1cc6c659d3 Fix CID #367
Richard Laager <rlaager@pidgin.im>
parents: 24534
diff changeset
1968 while (c && *c) {
18518
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1969 gboolean is_in_message = FALSE;
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1970
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1971 if (purple_str_has_prefix(line, QIP_LOG_IN_MESSAGE_ESC) ||
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1972 purple_str_has_prefix(line, QIP_LOG_OUT_MESSAGE_ESC)) {
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1973
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1974 char *tmp;
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1975 const char *buddy_name;
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1976
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1977 is_in_message = purple_str_has_prefix(line, QIP_LOG_IN_MESSAGE_ESC);
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1978
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1979 /* find EOL */
31980
4fbc64ec98a5 log_reader: strchr(), and some simplifying to make clang happier
Paul Aurich <darkrain42@pidgin.im>
parents: 31294
diff changeset
1980 c = strchr(c, '\n');
18518
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1981
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1982 /* XXX: Do we need buddy_name when we have buddy->alias? */
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1983 buddy_name = ++c;
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1984
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1985 /* Find the last '(' character. */
31980
4fbc64ec98a5 log_reader: strchr(), and some simplifying to make clang happier
Paul Aurich <darkrain42@pidgin.im>
parents: 31294
diff changeset
1986 if ((tmp = strchr(c, '\n')) != NULL) {
18519
7a6b0327b1a1 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: 18518
diff changeset
1987 while (*tmp && *tmp != '(') --tmp;
7a6b0327b1a1 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: 18518
diff changeset
1988 c = tmp;
7a6b0327b1a1 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: 18518
diff changeset
1989 } else {
18518
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1990 while (*c)
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1991 c++;
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1992 c--;
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1993 c = g_strrstr(c, "(");
18505
dca6960014b8 Converting all qip logs into UTF8
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18504
diff changeset
1994 }
18518
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1995
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1996 if (c != NULL) {
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1997 const char *timestamp = c;
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1998 int hour;
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1999 int min;
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2000 int sec;
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2001
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2002 timestamp++;
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2003
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2004 /* Parse the time, day, month and year */
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2005 if (sscanf(timestamp, "%u:%u:%u",
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2006 &hour, &min, &sec) != 3) {
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2007 purple_debug_error("QIP logger read",
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2008 "Parsing timestamp error\n");
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2009 } else {
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2010 g_string_append(formatted, "<font size=\"2\">");
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2011 /* TODO: Figure out if we can do anything more locale-independent. */
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2012 g_string_append_printf(formatted,
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2013 "(%u:%02u:%02u) %cM ", hour % 12,
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2014 min, sec, (hour >= 12) ? 'P': 'A');
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2015 g_string_append(formatted, "</font> ");
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2016
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2017 if (is_in_message) {
24532
c401bbcb46e3 Simplify some of the changes. Yeah, this code sucks. I wrote it a LONG
Richard Laager <rlaager@pidgin.im>
parents: 24531
diff changeset
2018 const char *alias = NULL;
24531
76e72697f7d6 Hide the blistnode, buddy, contact, group, and chat structs
Gary Kramlich <grim@reaperworld.com>
parents: 24231
diff changeset
2019
76e72697f7d6 Hide the blistnode, buddy, contact, group, and chat structs
Gary Kramlich <grim@reaperworld.com>
parents: 24231
diff changeset
2020 if (buddy_name != NULL && buddy != NULL &&
24532
c401bbcb46e3 Simplify some of the changes. Yeah, this code sucks. I wrote it a LONG
Richard Laager <rlaager@pidgin.im>
parents: 24531
diff changeset
2021 (alias = purple_buddy_get_alias(buddy)))
24531
76e72697f7d6 Hide the blistnode, buddy, contact, group, and chat structs
Gary Kramlich <grim@reaperworld.com>
parents: 24231
diff changeset
2022 {
18518
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2023 g_string_append_printf(formatted,
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2024 "<span style=\"color: #A82F2F;\">"
24531
76e72697f7d6 Hide the blistnode, buddy, contact, group, and chat structs
Gary Kramlich <grim@reaperworld.com>
parents: 24231
diff changeset
2025 "<b>%s</b></span>: ", alias);
18518
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2026 }
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2027 } else {
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2028 const char *acct_name;
34589
428e92c79631 Renamed purple_account_[get,set]_alias to purple_account[get,set]_private_alias.
Ankit Vani <a@nevitus.org>
parents: 33940
diff changeset
2029 acct_name = purple_account_get_private_alias(log->account);
18518
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2030 if (!acct_name)
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2031 acct_name = purple_account_get_username(log->account);
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2032
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2033 g_string_append_printf(formatted,
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2034 "<span style=\"color: #16569E;\">"
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2035 "<b>%s</b></span>: ", acct_name);
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2036 }
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2037
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2038 /* find EOF */
31980
4fbc64ec98a5 log_reader: strchr(), and some simplifying to make clang happier
Paul Aurich <darkrain42@pidgin.im>
parents: 31294
diff changeset
2039 c = strchr(c, '\n');
18505
dca6960014b8 Converting all qip logs into UTF8
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18504
diff changeset
2040 line = ++c;
18503
2cda7502306c Using g_file_get_contents instead of common file operations; all DEBUG_MESSAGEs were removed
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18502
diff changeset
2041 }
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2042 }
18518
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2043 } else {
31980
4fbc64ec98a5 log_reader: strchr(), and some simplifying to make clang happier
Paul Aurich <darkrain42@pidgin.im>
parents: 31294
diff changeset
2044 if ((c = strchr(c, '\n')))
18518
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2045 *c = '\0';
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2046
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2047 if (line[0] != '\n' && line[0] != '\r') {
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2048
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2049 g_string_append(formatted, line);
18525
461301d40a6b 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: 18523
diff changeset
2050 g_string_append(formatted, "<br>");
18518
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2051 }
20224
d4b827c606db applied changes from 4d50bf3b08569aa2108a9f5da47fb1548d0c7dd9
Luke Schierer <lschiere@pidgin.im>
parents: 20221
diff changeset
2052
d4b827c606db applied changes from 4d50bf3b08569aa2108a9f5da47fb1548d0c7dd9
Luke Schierer <lschiere@pidgin.im>
parents: 20221
diff changeset
2053 if (c)
d4b827c606db applied changes from 4d50bf3b08569aa2108a9f5da47fb1548d0c7dd9
Luke Schierer <lschiere@pidgin.im>
parents: 20221
diff changeset
2054 line = ++c;
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2055 }
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2056 }
18503
2cda7502306c Using g_file_get_contents instead of common file operations; all DEBUG_MESSAGEs were removed
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18502
diff changeset
2057 g_free(contents);
18518
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
2058
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2059 /* XXX: TODO: Avoid this g_strchomp() */
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2060 return g_strchomp(g_string_free(formatted, FALSE));
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2061 }
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2062
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2063 static int qip_logger_size (PurpleLog *log)
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2064 {
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2065 struct qip_logger_data *data;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2066 char *text;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2067 size_t size;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2068
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2069 g_return_val_if_fail(log != NULL, 0);
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2070
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2071 data = log->logger_data;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2072
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2073 if (purple_prefs_get_bool("/plugins/core/log_reader/fast_sizes")) {
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2074 return data ? data->length : 0;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2075 }
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2076
18515
2a028601289a Remove trailing whitespace.
Richard Laager <rlaager@pidgin.im>
parents: 18514
diff changeset
2077 text = qip_logger_read(log, NULL);
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2078 size = strlen(text);
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2079 g_free(text);
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2080
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2081 return size;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2082 }
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2083
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2084 static void qip_logger_finalize(PurpleLog *log)
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2085 {
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2086 struct qip_logger_data *data;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2087
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2088 g_return_if_fail(log != NULL);
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2089
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2090 data = log->logger_data;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2091
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2092 g_free(data->path);
18513
160f45152db1 Eliminate some leaks.
Richard Laager <rlaager@pidgin.im>
parents: 18512
diff changeset
2093 g_free(data);
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2094 }
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2095
20973
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2096 /*************************************************************************
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2097 * aMSN Logger *
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2098 *************************************************************************/
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2099
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2100 /* The aMSN logger doesn't write logs, only reads them. This is to include
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2101 * aMSN logs in the log viewer transparently.
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2102 */
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2103
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2104 static PurpleLogLogger *amsn_logger;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2105
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2106 struct amsn_logger_data {
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2107 char *path;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2108 int offset;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2109 int length;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2110 };
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2111
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2112 #define AMSN_LOG_CONV_START "|\"LRED[Conversation started on "
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2113 #define AMSN_LOG_CONV_END "|\"LRED[You have closed the window on "
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2114 #define AMSN_LOG_CONV_EXTRA "01 Aug 2001 00:00:00]"
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2115
20996
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2116 static GList *amsn_logger_parse_file(char *filename, const char *sn, PurpleAccount *account)
20973
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2117 {
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2118 GList *list = NULL;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2119 GError *error;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2120 char *contents;
20996
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2121 struct amsn_logger_data *data;
20973
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2122 PurpleLog *log;
20996
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2123
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2124 purple_debug_info("aMSN logger", "Reading %s\n", filename);
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2125 error = NULL;
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2126 if (!g_file_get_contents(filename, &contents, NULL, &error)) {
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2127 purple_debug_error("aMSN logger",
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2128 "Couldn't read file %s: %s \n", filename,
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2129 (error && error->message) ?
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2130 error->message : "Unknown error");
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2131 if (error)
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2132 g_error_free(error);
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2133 } else {
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2134 char *c = contents;
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2135 gboolean found_start = FALSE;
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2136 char *start_log = c;
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2137 int offset = 0;
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2138 struct tm tm;
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2139 while (c && *c) {
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2140 if (purple_str_has_prefix(c, AMSN_LOG_CONV_START)) {
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2141 char month[4];
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2142 if (sscanf(c + strlen(AMSN_LOG_CONV_START),
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2143 "%u %3s %u %u:%u:%u",
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2144 &tm.tm_mday, (char*)&month, &tm.tm_year,
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2145 &tm.tm_hour, &tm.tm_min, &tm.tm_sec) != 6) {
20973
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2146 found_start = FALSE;
20996
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2147 purple_debug_error("aMSN logger",
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2148 "Error parsing start date for %s\n",
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2149 filename);
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2150 } else {
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2151 tm.tm_year -= 1900;
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2152
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2153 /* Let the C library deal with
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2154 * daylight savings time.
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2155 */
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2156 tm.tm_isdst = -1;
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2157 tm.tm_mon = get_month(month);
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2158
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2159 found_start = TRUE;
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2160 offset = c - contents;
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2161 start_log = c;
20973
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2162 }
20996
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2163 } else if (purple_str_has_prefix(c, AMSN_LOG_CONV_END) && found_start) {
20973
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2164 data = g_new0(struct amsn_logger_data, 1);
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2165 data->path = g_strdup(filename);
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2166 data->offset = offset;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2167 data->length = c - start_log
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2168 + strlen(AMSN_LOG_CONV_END)
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2169 + strlen(AMSN_LOG_CONV_EXTRA);
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2170 log = purple_log_new(PURPLE_LOG_IM, sn, account, NULL, mktime(&tm), NULL);
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2171 log->logger = amsn_logger;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2172 log->logger_data = data;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2173 list = g_list_prepend(list, log);
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2174 found_start = FALSE;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2175
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2176 purple_debug_info("aMSN logger",
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2177 "Found log for %s:"
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2178 " path = (%s),"
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2179 " offset = (%d),"
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2180 " length = (%d)\n",
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2181 sn, data->path, data->offset, data->length);
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2182 }
31980
4fbc64ec98a5 log_reader: strchr(), and some simplifying to make clang happier
Paul Aurich <darkrain42@pidgin.im>
parents: 31294
diff changeset
2183 c = strchr(c, '\n');
20996
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2184 c++;
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2185 }
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2186
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2187 /* I've seen the file end without the AMSN_LOG_CONV_END bit */
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2188 if (found_start) {
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2189 data = g_new0(struct amsn_logger_data, 1);
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2190 data->path = g_strdup(filename);
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2191 data->offset = offset;
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2192 data->length = c - start_log
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2193 + strlen(AMSN_LOG_CONV_END)
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2194 + strlen(AMSN_LOG_CONV_EXTRA);
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2195 log = purple_log_new(PURPLE_LOG_IM, sn, account, NULL, mktime(&tm), NULL);
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2196 log->logger = amsn_logger;
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2197 log->logger_data = data;
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2198 list = g_list_prepend(list, log);
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2199
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2200 purple_debug_info("aMSN logger",
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2201 "Found log for %s:"
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2202 " path = (%s),"
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2203 " offset = (%d),"
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2204 " length = (%d)\n",
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2205 sn, data->path, data->offset, data->length);
20973
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2206 }
20996
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2207 g_free(contents);
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2208 }
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2209
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2210 return list;
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2211 }
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2212
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2213 /* `log_dir`/username@hotmail.com/logs/buddyname@hotmail.com.log */
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2214 /* `log_dir`/username@hotmail.com/logs/Month Year/buddyname@hotmail.com.log */
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2215 static GList *amsn_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account)
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2216 {
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2217 GList *list = NULL;
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2218 const char *logdir;
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2219 char *username;
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2220 char *log_path;
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2221 char *buddy_log;
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2222 char *filename;
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2223 GDir *dir;
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2224 const char *name;
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2225
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2226 logdir = purple_prefs_get_string("/plugins/core/log_reader/amsn/log_directory");
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2227
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2228 /* By clearing the log directory path, this logger can be (effectively) disabled. */
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2229 if (!logdir || !*logdir)
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2230 return NULL;
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2231
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2232 /* aMSN only works with MSN/WLM */
36637
9b0109ae118d Renamed some prpl stuff to protocol stuff.
Ankit Vani <a@nevitus.org>
parents: 36632
diff changeset
2233 if (strcmp(purple_account_get_protocol_id(account), "msn"))
20996
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2234 return NULL;
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2235
32215
0a4e72c8a67e Use accessor functions in a few places
Mark Doliner <markdoliner@pidgin.im>
parents: 31984
diff changeset
2236 username = g_strdup(purple_normalize(account, purple_account_get_username(account)));
20996
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2237 buddy_log = g_strdup_printf("%s.log", purple_normalize(account, sn));
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2238 log_path = g_build_filename(logdir, username, "logs", NULL);
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2239
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2240 /* First check in the top-level */
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2241 filename = g_build_filename(log_path, buddy_log, NULL);
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2242 if (g_file_test(filename, G_FILE_TEST_EXISTS))
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2243 list = amsn_logger_parse_file(filename, sn, account);
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2244 else
20973
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2245 g_free(filename);
20996
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2246
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2247 /* Check in previous months */
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2248 dir = g_dir_open(log_path, 0, NULL);
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2249 if (dir) {
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2250 while ((name = g_dir_read_name(dir)) != NULL) {
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2251 filename = g_build_filename(log_path, name, buddy_log, NULL);
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2252 if (g_file_test(filename, G_FILE_TEST_EXISTS))
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2253 list = g_list_concat(list, amsn_logger_parse_file(filename, sn, account));
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2254 g_free(filename);
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2255 }
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2256 g_dir_close(dir);
20973
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2257 }
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2258
20996
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2259 g_free(log_path);
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2260
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2261 /* New versions use 'friendlier' directory names */
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2262 purple_util_chrreplace(username, '@', '_');
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2263 purple_util_chrreplace(username, '.', '_');
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2264
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2265 log_path = g_build_filename(logdir, username, "logs", NULL);
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2266
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2267 /* First check in the top-level */
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2268 filename = g_build_filename(log_path, buddy_log, NULL);
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2269 if (g_file_test(filename, G_FILE_TEST_EXISTS))
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2270 list = g_list_concat(list, amsn_logger_parse_file(filename, sn, account));
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2271 g_free(filename);
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2272
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2273 /* Check in previous months */
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2274 dir = g_dir_open(log_path, 0, NULL);
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2275 if (dir) {
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2276 while ((name = g_dir_read_name(dir)) != NULL) {
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2277 filename = g_build_filename(log_path, name, buddy_log, NULL);
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2278 if (g_file_test(filename, G_FILE_TEST_EXISTS))
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2279 list = g_list_concat(list, amsn_logger_parse_file(filename, sn, account));
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2280 g_free(filename);
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2281 }
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2282 g_dir_close(dir);
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2283 }
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2284
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2285 g_free(log_path);
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2286 g_free(username);
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2287 g_free(buddy_log);
20973
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2288
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2289 return list;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2290 }
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2291
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2292 /* Really it's |"L, but the string's been escaped */
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2293 #define AMSN_LOG_FORMAT_TAG "|&quot;L"
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2294
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2295 static char *amsn_logger_read(PurpleLog *log, PurpleLogReadFlags *flags)
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2296 {
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2297 struct amsn_logger_data *data;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2298 FILE *file;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2299 char *contents;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2300 char *escaped;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2301 GString *formatted;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2302 char *start;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2303 gboolean in_span = FALSE;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2304
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2305 if (flags != NULL)
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2306 *flags = PURPLE_LOG_READ_NO_NEWLINE;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2307
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2308 g_return_val_if_fail(log != NULL, g_strdup(""));
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2309
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2310 data = log->logger_data;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2311
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2312 g_return_val_if_fail(data->path != NULL, g_strdup(""));
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2313 g_return_val_if_fail(data->length > 0, g_strdup(""));
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2314
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2315 contents = g_malloc(data->length + 2);
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2316
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2317 file = g_fopen(data->path, "rb");
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2318 g_return_val_if_fail(file != NULL, g_strdup(""));
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 29739
diff changeset
2319
20973
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2320 fseek(file, data->offset, SEEK_SET);
20986
3b652f4066b4 Since we are looking at the return value of fread, it actually matters that
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20985
diff changeset
2321 data->length = fread(contents, 1, data->length, file);
20973
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2322 fclose(file);
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2323
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2324 contents[data->length] = '\n';
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2325 contents[data->length + 1] = '\0';
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2326
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2327 escaped = g_markup_escape_text(contents, -1);
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2328 g_free(contents);
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2329 contents = escaped;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2330
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2331 formatted = g_string_sized_new(data->length + 2);
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2332
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2333 start = contents;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2334 while (start && *start) {
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2335 char *end;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2336 char *old_tag;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2337 char *tag;
31980
4fbc64ec98a5 log_reader: strchr(), and some simplifying to make clang happier
Paul Aurich <darkrain42@pidgin.im>
parents: 31294
diff changeset
2338 end = strchr(start, '\n');
20973
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2339 if (!end)
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2340 break;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2341 *end = '\0';
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2342 if (purple_str_has_prefix(start, AMSN_LOG_FORMAT_TAG) && in_span) {
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2343 /* New format for this line */
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2344 g_string_append(formatted, "</span><br>");
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2345 in_span = FALSE;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2346 } else if (start != contents) {
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2347 /* Continue format from previous line */
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2348 g_string_append(formatted, "<br>");
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2349 }
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2350 old_tag = start;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2351 tag = strstr(start, AMSN_LOG_FORMAT_TAG);
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2352 while (tag) {
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2353 g_string_append_len(formatted, old_tag, tag - old_tag);
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2354 tag += strlen(AMSN_LOG_FORMAT_TAG);
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2355 if (in_span) {
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2356 g_string_append(formatted, "</span>");
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2357 in_span = FALSE;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2358 }
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2359 if (*tag == 'C') {
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2360 /* |"LCxxxxxx is a hex colour */
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2361 char colour[7];
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2362 strncpy(colour, tag + 1, 6);
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2363 colour[6] = '\0';
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2364 g_string_append_printf(formatted, "<span style=\"color: #%s;\">", colour);
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2365 /* This doesn't appear to work? */
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2366 /* g_string_append_printf(formatted, "<span style=\"color: #%6s;\">", tag + 1); */
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2367 in_span = TRUE;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2368 old_tag = tag + 7; /* C + xxxxxx */
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2369 } else {
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2370 /* |"Lxxx is a 3-digit colour code */
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2371 if (purple_str_has_prefix(tag, "RED")) {
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2372 g_string_append(formatted, "<span style=\"color: red;\">");
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2373 in_span = TRUE;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2374 } else if (purple_str_has_prefix(tag, "GRA")) {
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2375 g_string_append(formatted, "<span style=\"color: gray;\">");
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2376 in_span = TRUE;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2377 } else if (purple_str_has_prefix(tag, "NOR")) {
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2378 g_string_append(formatted, "<span style=\"color: black;\">");
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2379 in_span = TRUE;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2380 } else if (purple_str_has_prefix(tag, "ITA")) {
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2381 g_string_append(formatted, "<span style=\"color: blue;\">");
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2382 in_span = TRUE;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2383 } else if (purple_str_has_prefix(tag, "GRE")) {
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2384 g_string_append(formatted, "<span style=\"color: darkgreen;\">");
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2385 in_span = TRUE;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2386 } else {
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2387 purple_debug_info("aMSN logger", "Unknown colour format: %3s\n", tag);
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2388 }
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2389 old_tag = tag + 3;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2390 }
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2391 tag = strstr(tag, AMSN_LOG_FORMAT_TAG);
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2392 }
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2393 g_string_append(formatted, old_tag);
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2394 start = end + 1;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2395 }
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2396 if (in_span)
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2397 g_string_append(formatted, "</span>");
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2398
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2399 g_free(contents);
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2400
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2401 return g_string_free(formatted, FALSE);
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2402 }
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2403
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2404 static int amsn_logger_size(PurpleLog *log)
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2405 {
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2406 struct amsn_logger_data *data;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2407 char *text;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2408 int size;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2409
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2410 g_return_val_if_fail(log != NULL, 0);
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2411
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2412 data = log->logger_data;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 29739
diff changeset
2413
20973
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2414 if (purple_prefs_get_bool("/plugins/core/log_reader/fast_sizes")) {
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2415 return data ? data->length : 0;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2416 }
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2417
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2418 text = amsn_logger_read(log, NULL);
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2419 size = strlen(text);
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2420 g_free(text);
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2421
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2422 return size;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2423 }
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2424
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2425 static void amsn_logger_finalize(PurpleLog *log)
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2426 {
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2427 struct amsn_logger_data *data;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2428
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2429 g_return_if_fail(log != NULL);
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2430
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2431 data = log->logger_data;
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2432 g_free(data->path);
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2433 g_free(data);
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2434 }
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2435
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2436 /*****************************************************************************
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2437 * Plugin Code *
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2438 *****************************************************************************/
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2439
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2440 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2441 init_plugin(PurplePlugin *plugin)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2442 {
21006
404e323ffbb5 Set log_reader paths at plugin load time instead of init time. This should hopefully make any crashes more clearly attributable to this plugin (hopefully there are no outstanding crashes in the init code, but this is a safeguard).
Daniel Atallah <datallah@pidgin.im>
parents: 21005
diff changeset
2443
404e323ffbb5 Set log_reader paths at plugin load time instead of init time. This should hopefully make any crashes more clearly attributable to this plugin (hopefully there are no outstanding crashes in the init code, but this is a safeguard).
Daniel Atallah <datallah@pidgin.im>
parents: 21005
diff changeset
2444 }
404e323ffbb5 Set log_reader paths at plugin load time instead of init time. This should hopefully make any crashes more clearly attributable to this plugin (hopefully there are no outstanding crashes in the init code, but this is a safeguard).
Daniel Atallah <datallah@pidgin.im>
parents: 21005
diff changeset
2445
22104
56970903b8e9 Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents: 21106
diff changeset
2446 static void log_reader_init_prefs(void) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2447 char *path;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2448 #ifdef _WIN32
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2449 char *folder;
14334
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2450 gboolean found = FALSE;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2451 #endif
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2452
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
2453 purple_prefs_add_none("/plugins/core/log_reader");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2454
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2455
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2456 /* Add general preferences. */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2457
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
2458 purple_prefs_add_bool("/plugins/core/log_reader/fast_sizes", FALSE);
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
2459 purple_prefs_add_bool("/plugins/core/log_reader/use_name_heuristics", TRUE);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2460
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2461
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2462 /* Add Adium log directory preference. */
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
2463 purple_prefs_add_none("/plugins/core/log_reader/adium");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2464
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2465 /* Calculate default Adium log directory. */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2466 #ifdef _WIN32
18517
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2467 purple_prefs_add_string("/plugins/core/log_reader/adium/log_directory", "");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2468 #else
18517
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2469 path = g_build_filename(purple_home_dir(), "Library", "Application Support",
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2470 "Adium 2.0", "Users", "Default", "Logs", NULL);
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
2471 purple_prefs_add_string("/plugins/core/log_reader/adium/log_directory", path);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2472 g_free(path);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2473 #endif
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2474
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2475
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2476 /* Add Fire log directory preference. */
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
2477 purple_prefs_add_none("/plugins/core/log_reader/fire");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2478
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2479 /* Calculate default Fire log directory. */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2480 #ifdef _WIN32
18517
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2481 purple_prefs_add_string("/plugins/core/log_reader/fire/log_directory", "");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2482 #else
18517
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2483 path = g_build_filename(purple_home_dir(), "Library", "Application Support",
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2484 "Fire", "Sessions", NULL);
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
2485 purple_prefs_add_string("/plugins/core/log_reader/fire/log_directory", path);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2486 g_free(path);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2487 #endif
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2488
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2489
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2490 /* Add Messenger Plus! log directory preference. */
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
2491 purple_prefs_add_none("/plugins/core/log_reader/messenger_plus");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2492
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2493 /* Calculate default Messenger Plus! log directory. */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2494 #ifdef _WIN32
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2495 path = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2496 folder = wpurple_get_special_folder(CSIDL_PERSONAL);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2497 if (folder) {
18517
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2498 path = g_build_filename(folder, "My Chat Logs", NULL);
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2499 g_free(folder);
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2500 }
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2501 #else
18517
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2502 path = g_build_filename(PURPLE_LOG_READER_WINDOWS_MOUNT_POINT,
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2503 "Documents and Settings", g_get_user_name(),
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2504 "My Documents", "My Chat Logs", NULL);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2505 #endif
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2506 purple_prefs_add_string("/plugins/core/log_reader/messenger_plus/log_directory", path ? path : "");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2507 g_free(path);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2508
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2509
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2510 /* Add MSN Messenger log directory preference. */
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
2511 purple_prefs_add_none("/plugins/core/log_reader/msn");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2512
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2513 /* Calculate default MSN message history directory. */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2514 #ifdef _WIN32
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2515 path = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2516 folder = wpurple_get_special_folder(CSIDL_PERSONAL);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2517 if (folder) {
18517
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2518 path = g_build_filename(folder, "My Received Files", NULL);
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2519 g_free(folder);
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2520 }
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2521 #else
18517
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2522 path = g_build_filename(PURPLE_LOG_READER_WINDOWS_MOUNT_POINT,
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2523 "Documents and Settings", g_get_user_name(),
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2524 "My Documents", "My Received Files", NULL);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2525 #endif
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2526 purple_prefs_add_string("/plugins/core/log_reader/msn/log_directory", path ? path : "");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2527 g_free(path);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2528
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2529
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2530 /* Add Trillian log directory preference. */
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
2531 purple_prefs_add_none("/plugins/core/log_reader/trillian");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2532
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2533 #ifdef _WIN32
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2534 /* XXX: While a major hack, this is the most reliable way I could
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2535 * think of to determine the Trillian installation directory.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2536 */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2537
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2538 path = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2539 if ((folder = wpurple_read_reg_string(HKEY_CLASSES_ROOT, "Trillian.SkinZip\\shell\\Add\\command\\", NULL))) {
14334
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2540 char *value = folder;
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2541 char *temp;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2542
14334
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2543 /* Break apart buffer. */
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2544 if (*value == '"') {
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2545 value++;
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2546 temp = value;
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2547 while (*temp && *temp != '"')
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2548 temp++;
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2549 } else {
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2550 temp = value;
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2551 while (*temp && *temp != ' ')
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2552 temp++;
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2553 }
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2554 *temp = '\0';
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2555
14334
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2556 /* Set path. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2557 if (purple_str_has_suffix(value, "trillian.exe")) {
14334
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2558 value[strlen(value) - (sizeof("trillian.exe") - 1)] = '\0';
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2559 path = g_build_filename(value, "users", "default", "talk.ini", NULL);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2560 }
14334
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2561 g_free(folder);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2562 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2563
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2564 if (!path) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2565 char *folder = wpurple_get_special_folder(CSIDL_PROGRAM_FILES);
14139
22ee84e0002b [gaim-migrate @ 16698]
Daniel Atallah <datallah@pidgin.im>
parents: 14097
diff changeset
2566 if (folder) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2567 path = g_build_filename(folder, "Trillian",
18517
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2568 "users", "default", "talk.ini", NULL);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2569 g_free(folder);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2570 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2571 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2572
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2573 if (path) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2574 /* Read talk.ini file to find the log directory. */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2575 GError *error = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2576
33649
1d643f401252 Remove old GLib version checks.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33605
diff changeset
2577 #if 0 /* FIXME: Not tested yet. */
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2578 GKeyFile *key_file;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2579
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
2580 purple_debug_info("Trillian talk.ini read", "Reading %s\n", path);
18515
2a028601289a Remove trailing whitespace.
Richard Laager <rlaager@pidgin.im>
parents: 18514
diff changeset
2581
18508
dc425927e79a setting error to NULL before using
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18507
diff changeset
2582 error = NULL;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2583 if (!g_key_file_load_from_file(key_file, path, G_KEY_FILE_NONE, GError &error)) {
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
2584 purple_debug_error("Trillian talk.ini read",
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
2585 "Error reading talk.ini\n");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2586 if (error)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2587 g_error_free(error);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2588 } else {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2589 char *logdir = g_key_file_get_string(key_file, "Logging", "Directory", &error);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2590 if (error) {
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
2591 purple_debug_error("Trillian talk.ini read",
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
2592 "Error reading Directory value from Logging section\n");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2593 g_error_free(error);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2594 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2595
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2596 if (logdir) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2597 g_strchomp(logdir);
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
2598 purple_prefs_add_string("/plugins/core/log_reader/trillian/log_directory", logdir);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2599 found = TRUE;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2600 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2601
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2602 g_key_file_free(key_file);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2603 }
33649
1d643f401252 Remove old GLib version checks.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33605
diff changeset
2604 #else
14139
22ee84e0002b [gaim-migrate @ 16698]
Daniel Atallah <datallah@pidgin.im>
parents: 14097
diff changeset
2605 gchar *contents = NULL;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2606
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
2607 purple_debug_info("Trillian talk.ini read",
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2608 "Reading %s\n", path);
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2609 if (!g_file_get_contents(path, &contents, NULL, &error)) {
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
2610 purple_debug_error("Trillian talk.ini read",
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2611 "Error reading talk.ini: %s\n",
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2612 (error && error->message) ? error->message : "Unknown error");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2613 if (error)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2614 g_error_free(error);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2615 } else {
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2616 char *cursor, *line;
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2617 line = cursor = contents;
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2618 while (*cursor) {
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2619 if (*cursor == '\n') {
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2620 *cursor = '\0';
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2621
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2622 /* XXX: This assumes the first Directory key is under [Logging]. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2623 if (purple_str_has_prefix(line, "Directory=")) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2624 line += (sizeof("Directory=") - 1);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2625 g_strchomp(line);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2626 purple_prefs_add_string(
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
2627 "/plugins/core/log_reader/trillian/log_directory",
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2628 line);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2629 found = TRUE;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2630 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2631
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2632 cursor++;
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2633 line = cursor;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2634 } else
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2635 cursor++;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2636 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2637 g_free(contents);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2638 }
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2639 g_free(path);
33649
1d643f401252 Remove old GLib version checks.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33605
diff changeset
2640 #endif
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2641 } /* path */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2642
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2643 if (!found) {
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2644 path = NULL;
18517
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2645 folder = wpurple_get_special_folder(CSIDL_PROGRAM_FILES);
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2646 if (folder) {
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2647 path = g_build_filename(folder, "Trillian", "users",
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2648 "default", "logs", NULL);
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2649 g_free(folder);
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2650 }
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2651
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2652 purple_prefs_add_string(
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2653 "/plugins/core/log_reader/trillian/log_directory", path ? path : "");
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2654 g_free(path);
18517
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2655 }
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2656 #else /* !defined(_WIN32) */
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2657 /* TODO: At some point, this could attempt to parse talk.ini
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2658 * TODO: from the default Trillian install directory on the
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2659 * TODO: Windows mount point. */
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2660
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2661 /* Calculate default Trillian log directory. */
18517
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2662 path = g_build_filename(PURPLE_LOG_READER_WINDOWS_MOUNT_POINT,
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2663 "Program Files", "Trillian", "users",
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2664 "default", "logs", NULL);
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2665 purple_prefs_add_string(
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2666 "/plugins/core/log_reader/trillian/log_directory", path);
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2667 g_free(path);
18517
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2668 #endif
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2669
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2670 /* Add QIP log directory preference. */
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2671 purple_prefs_add_none("/plugins/core/log_reader/qip");
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2672
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2673 /* Calculate default QIP log directory. */
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2674 #ifdef _WIN32
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2675 path = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2676 folder = wpurple_get_special_folder(CSIDL_PROGRAM_FILES);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2677 if (folder) {
18517
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2678 path = g_build_filename(folder, "QIP", "Users", NULL);
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2679 g_free(folder);
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2680 }
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2681 #else
18517
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2682 path = g_build_filename(PURPLE_LOG_READER_WINDOWS_MOUNT_POINT,
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2683 "Program Files", "QIP", "Users", NULL);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2684 #endif
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2685 purple_prefs_add_string("/plugins/core/log_reader/qip/log_directory", path ? path : "");
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2686 g_free(path);
20973
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2687
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2688 /* Add aMSN Messenger log directory preference. */
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2689 purple_prefs_add_none("/plugins/core/log_reader/amsn");
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2690
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2691 /* Calculate default aMSN log directory. */
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2692 #ifdef _WIN32
21005
db7d98d01c24 Leak fix.
Daniel Atallah <datallah@pidgin.im>
parents: 20996
diff changeset
2693 path = NULL;
20973
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2694 folder = wpurple_get_special_folder(CSIDL_PROFILE); /* Silly aMSN, not using CSIDL_APPDATA */
21005
db7d98d01c24 Leak fix.
Daniel Atallah <datallah@pidgin.im>
parents: 20996
diff changeset
2695 if (folder) {
db7d98d01c24 Leak fix.
Daniel Atallah <datallah@pidgin.im>
parents: 20996
diff changeset
2696 path = g_build_filename(folder, "amsn", NULL);
db7d98d01c24 Leak fix.
Daniel Atallah <datallah@pidgin.im>
parents: 20996
diff changeset
2697 g_free(folder);
db7d98d01c24 Leak fix.
Daniel Atallah <datallah@pidgin.im>
parents: 20996
diff changeset
2698 }
20973
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2699 #else
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2700 path = g_build_filename(purple_home_dir(), ".amsn", NULL);
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2701 #endif
21005
db7d98d01c24 Leak fix.
Daniel Atallah <datallah@pidgin.im>
parents: 20996
diff changeset
2702 purple_prefs_add_string("/plugins/core/log_reader/amsn/log_directory", path ? path : "");
20973
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2703 g_free(path);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2704 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2705
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2706 static gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2707 plugin_load(PurplePlugin *plugin)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2708 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2709 g_return_val_if_fail(plugin != NULL, FALSE);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2710
21006
404e323ffbb5 Set log_reader paths at plugin load time instead of init time. This should hopefully make any crashes more clearly attributable to this plugin (hopefully there are no outstanding crashes in the init code, but this is a safeguard).
Daniel Atallah <datallah@pidgin.im>
parents: 21005
diff changeset
2711 log_reader_init_prefs();
404e323ffbb5 Set log_reader paths at plugin load time instead of init time. This should hopefully make any crashes more clearly attributable to this plugin (hopefully there are no outstanding crashes in the init code, but this is a safeguard).
Daniel Atallah <datallah@pidgin.im>
parents: 21005
diff changeset
2712
13702
35310965f38a [gaim-migrate @ 16103]
Richard Laager <rlaager@pidgin.im>
parents: 13669
diff changeset
2713 /* The names of IM clients are marked for translation at the request of
35310965f38a [gaim-migrate @ 16103]
Richard Laager <rlaager@pidgin.im>
parents: 13669
diff changeset
2714 translators who wanted to transliterate them. Many translators
35310965f38a [gaim-migrate @ 16103]
Richard Laager <rlaager@pidgin.im>
parents: 13669
diff changeset
2715 choose to leave them alone. Choose what's best for your language. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2716 adium_logger = purple_log_logger_new("adium", _("Adium"), 6,
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2717 NULL,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2718 NULL,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2719 adium_logger_finalize,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2720 adium_logger_list,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2721 adium_logger_read,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2722 adium_logger_size);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2723 purple_log_logger_add(adium_logger);
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2724
14297
c1788b3112fd [gaim-migrate @ 16917]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
2725 #if 0
13702
35310965f38a [gaim-migrate @ 16103]
Richard Laager <rlaager@pidgin.im>
parents: 13669
diff changeset
2726 /* The names of IM clients are marked for translation at the request of
35310965f38a [gaim-migrate @ 16103]
Richard Laager <rlaager@pidgin.im>
parents: 13669
diff changeset
2727 translators who wanted to transliterate them. Many translators
35310965f38a [gaim-migrate @ 16103]
Richard Laager <rlaager@pidgin.im>
parents: 13669
diff changeset
2728 choose to leave them alone. Choose what's best for your language. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2729 fire_logger = purple_log_logger_new("fire", _("Fire"), 6,
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2730 NULL,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2731 NULL,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2732 fire_logger_finalize,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2733 fire_logger_list,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2734 fire_logger_read,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2735 fire_logger_size);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2736 purple_log_logger_add(fire_logger);
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2737
13702
35310965f38a [gaim-migrate @ 16103]
Richard Laager <rlaager@pidgin.im>
parents: 13669
diff changeset
2738 /* The names of IM clients are marked for translation at the request of
35310965f38a [gaim-migrate @ 16103]
Richard Laager <rlaager@pidgin.im>
parents: 13669
diff changeset
2739 translators who wanted to transliterate them. Many translators
35310965f38a [gaim-migrate @ 16103]
Richard Laager <rlaager@pidgin.im>
parents: 13669
diff changeset
2740 choose to leave them alone. Choose what's best for your language. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2741 messenger_plus_logger = purple_log_logger_new("messenger_plus", _("Messenger Plus!"), 6,
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2742 NULL,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2743 NULL,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2744 messenger_plus_logger_finalize,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2745 messenger_plus_logger_list,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2746 messenger_plus_logger_read,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2747 messenger_plus_logger_size);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2748 purple_log_logger_add(messenger_plus_logger);
18515
2a028601289a Remove trailing whitespace.
Richard Laager <rlaager@pidgin.im>
parents: 18514
diff changeset
2749
14297
c1788b3112fd [gaim-migrate @ 16917]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
2750 #endif
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2751
13702
35310965f38a [gaim-migrate @ 16103]
Richard Laager <rlaager@pidgin.im>
parents: 13669
diff changeset
2752 /* The names of IM clients are marked for translation at the request of
35310965f38a [gaim-migrate @ 16103]
Richard Laager <rlaager@pidgin.im>
parents: 13669
diff changeset
2753 translators who wanted to transliterate them. Many translators
35310965f38a [gaim-migrate @ 16103]
Richard Laager <rlaager@pidgin.im>
parents: 13669
diff changeset
2754 choose to leave them alone. Choose what's best for your language. */
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2755 qip_logger = purple_log_logger_new("qip", _("QIP"), 6,
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2756 NULL,
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2757 NULL,
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2758 qip_logger_finalize,
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2759 qip_logger_list,
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2760 qip_logger_read,
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2761 qip_logger_size);
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2762 purple_log_logger_add(qip_logger);
18515
2a028601289a Remove trailing whitespace.
Richard Laager <rlaager@pidgin.im>
parents: 18514
diff changeset
2763
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2764 /* The names of IM clients are marked for translation at the request of
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2765 translators who wanted to transliterate them. Many translators
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2766 choose to leave them alone. Choose what's best for your language. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2767 msn_logger = purple_log_logger_new("msn", _("MSN Messenger"), 6,
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2768 NULL,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2769 NULL,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2770 msn_logger_finalize,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2771 msn_logger_list,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2772 msn_logger_read,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2773 msn_logger_size);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2774 purple_log_logger_add(msn_logger);
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2775
13702
35310965f38a [gaim-migrate @ 16103]
Richard Laager <rlaager@pidgin.im>
parents: 13669
diff changeset
2776 /* The names of IM clients are marked for translation at the request of
35310965f38a [gaim-migrate @ 16103]
Richard Laager <rlaager@pidgin.im>
parents: 13669
diff changeset
2777 translators who wanted to transliterate them. Many translators
35310965f38a [gaim-migrate @ 16103]
Richard Laager <rlaager@pidgin.im>
parents: 13669
diff changeset
2778 choose to leave them alone. Choose what's best for your language. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2779 trillian_logger = purple_log_logger_new("trillian", _("Trillian"), 6,
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2780 NULL,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2781 NULL,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2782 trillian_logger_finalize,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2783 trillian_logger_list,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2784 trillian_logger_read,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2785 trillian_logger_size);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2786 purple_log_logger_add(trillian_logger);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2787
20973
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2788 /* The names of IM clients are marked for translation at the request of
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2789 translators who wanted to transliterate them. Many translators
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2790 choose to leave them alone. Choose what's best for your language. */
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2791 amsn_logger = purple_log_logger_new("amsn", _("aMSN"), 6,
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2792 NULL,
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2793 NULL,
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2794 amsn_logger_finalize,
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2795 amsn_logger_list,
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2796 amsn_logger_read,
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2797 amsn_logger_size);
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2798 purple_log_logger_add(amsn_logger);
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2799
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2800 return TRUE;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2801 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2802
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2803 static gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2804 plugin_unload(PurplePlugin *plugin)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2805 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2806 g_return_val_if_fail(plugin != NULL, FALSE);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2807
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2808 purple_log_logger_remove(adium_logger);
22979
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22104
diff changeset
2809 purple_log_logger_free(adium_logger);
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22104
diff changeset
2810 adium_logger = NULL;
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22104
diff changeset
2811
14297
c1788b3112fd [gaim-migrate @ 16917]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
2812 #if 0
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2813 purple_log_logger_remove(fire_logger);
22979
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22104
diff changeset
2814 purple_log_logger_free(fire_logger);
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22104
diff changeset
2815 fire_logger = NULL;
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22104
diff changeset
2816
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2817 purple_log_logger_remove(messenger_plus_logger);
22979
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22104
diff changeset
2818 purple_log_logger_free(messenger_plus_logger);
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22104
diff changeset
2819 messenger_plus_logger = NULL;
14297
c1788b3112fd [gaim-migrate @ 16917]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
2820 #endif
22979
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22104
diff changeset
2821
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2822 purple_log_logger_remove(msn_logger);
22979
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22104
diff changeset
2823 purple_log_logger_free(msn_logger);
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22104
diff changeset
2824 msn_logger = NULL;
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22104
diff changeset
2825
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2826 purple_log_logger_remove(trillian_logger);
22979
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22104
diff changeset
2827 purple_log_logger_free(trillian_logger);
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22104
diff changeset
2828 trillian_logger = NULL;
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22104
diff changeset
2829
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2830 purple_log_logger_remove(qip_logger);
22979
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22104
diff changeset
2831 purple_log_logger_free(qip_logger);
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22104
diff changeset
2832 qip_logger = NULL;
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22104
diff changeset
2833
20973
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2834 purple_log_logger_remove(amsn_logger);
22979
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22104
diff changeset
2835 purple_log_logger_free(amsn_logger);
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22104
diff changeset
2836 amsn_logger = NULL;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2837
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2838 return TRUE;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2839 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2840
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2841 static PurplePluginPrefFrame *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2842 get_plugin_pref_frame(PurplePlugin *plugin)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2843 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2844 PurplePluginPrefFrame *frame;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2845 PurplePluginPref *ppref;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2846
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2847 g_return_val_if_fail(plugin != NULL, FALSE);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2848
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2849 frame = purple_plugin_pref_frame_new();
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2850
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2851
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2852 /* Add general preferences. */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2853
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2854 ppref = purple_plugin_pref_new_with_label(_("General Log Reading Configuration"));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2855 purple_plugin_pref_frame_add(frame, ppref);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2856
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2857 ppref = purple_plugin_pref_new_with_name_and_label(
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
2858 "/plugins/core/log_reader/fast_sizes", _("Fast size calculations"));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2859 purple_plugin_pref_frame_add(frame, ppref);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2860
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2861 ppref = purple_plugin_pref_new_with_name_and_label(
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
2862 "/plugins/core/log_reader/use_name_heuristics", _("Use name heuristics"));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2863 purple_plugin_pref_frame_add(frame, ppref);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2864
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2865
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2866 /* Add Log Directory preferences. */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2867
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2868 ppref = purple_plugin_pref_new_with_label(_("Log Directory"));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2869 purple_plugin_pref_frame_add(frame, ppref);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2870
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2871 ppref = purple_plugin_pref_new_with_name_and_label(
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
2872 "/plugins/core/log_reader/adium/log_directory", _("Adium"));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2873 purple_plugin_pref_frame_add(frame, ppref);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2874
14297
c1788b3112fd [gaim-migrate @ 16917]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
2875 #if 0
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2876 ppref = purple_plugin_pref_new_with_name_and_label(
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
2877 "/plugins/core/log_reader/fire/log_directory", _("Fire"));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2878 purple_plugin_pref_frame_add(frame, ppref);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2879
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2880 ppref = purple_plugin_pref_new_with_name_and_label(
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
2881 "/plugins/core/log_reader/messenger_plus/log_directory", _("Messenger Plus!"));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2882 purple_plugin_pref_frame_add(frame, ppref);
14297
c1788b3112fd [gaim-migrate @ 16917]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
2883 #endif
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2884
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2885 ppref = purple_plugin_pref_new_with_name_and_label(
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2886 "/plugins/core/log_reader/qip/log_directory", _("QIP"));
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2887 purple_plugin_pref_frame_add(frame, ppref);
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2888
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2889 ppref = purple_plugin_pref_new_with_name_and_label(
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
2890 "/plugins/core/log_reader/msn/log_directory", _("MSN Messenger"));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2891 purple_plugin_pref_frame_add(frame, ppref);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2892
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2893 ppref = purple_plugin_pref_new_with_name_and_label(
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
2894 "/plugins/core/log_reader/trillian/log_directory", _("Trillian"));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2895 purple_plugin_pref_frame_add(frame, ppref);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2896
20973
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2897 ppref = purple_plugin_pref_new_with_name_and_label(
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2898 "/plugins/core/log_reader/amsn/log_directory", _("aMSN"));
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2899 purple_plugin_pref_frame_add(frame, ppref);
b365fdeae9d0 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20224
diff changeset
2900
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2901 return frame;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2902 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2903
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2904 static PurplePluginUiInfo prefs_info = {
12727
05ed142fbbe6 [gaim-migrate @ 15071]
Richard Laager <rlaager@pidgin.im>
parents: 11702
diff changeset
2905 get_plugin_pref_frame,
05ed142fbbe6 [gaim-migrate @ 15071]
Richard Laager <rlaager@pidgin.im>
parents: 11702
diff changeset
2906 0, /* page_num (reserved) */
16745
df2c3d6b609a And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16481
diff changeset
2907 NULL, /* frame (reserved) */
df2c3d6b609a And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16481
diff changeset
2908
df2c3d6b609a And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16481
diff changeset
2909 /* padding */
df2c3d6b609a And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16481
diff changeset
2910 NULL,
df2c3d6b609a And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16481
diff changeset
2911 NULL,
df2c3d6b609a And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16481
diff changeset
2912 NULL,
df2c3d6b609a And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16481
diff changeset
2913 NULL
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2914 };
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2915
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2916 static PurplePluginInfo info =
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2917 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2918 PURPLE_PLUGIN_MAGIC,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2919 PURPLE_MAJOR_VERSION,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2920 PURPLE_MINOR_VERSION,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2921 PURPLE_PLUGIN_STANDARD, /**< type */
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2922 NULL, /**< ui_requirement */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2923 0, /**< flags */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2924 NULL, /**< dependencies */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2925 PURPLE_PRIORITY_DEFAULT, /**< priority */
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2926 "core-log_reader", /**< id */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2927 N_("Log Reader"), /**< name */
21106
b85fbef13eed Add a --with-extraversion option to ./configure so packagers can fine tune
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21076
diff changeset
2928 DISPLAY_VERSION, /**< version */
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2929
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2930 /** summary */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2931 N_("Includes other IM clients' logs in the "
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2932 "log viewer."),
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2933
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2934 /** description */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2935 N_("When viewing logs, this plugin will include "
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2936 "logs from other IM clients. Currently, this "
27524
5f7b7893e096 The Log Reader plugin also supports aMSN logs.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24646
diff changeset
2937 "includes Adium, MSN Messenger, aMSN, and "
5f7b7893e096 The Log Reader plugin also supports aMSN logs.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24646
diff changeset
2938 "Trillian.\n\n"
14297
c1788b3112fd [gaim-migrate @ 16917]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
2939 "WARNING: This plugin is still alpha code and "
c1788b3112fd [gaim-migrate @ 16917]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
2940 "may crash frequently. Use it at your own risk!"),
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2941
15629
a2261cb315e2 Switching to my pidgin.im e-mail address, which I think fits nicely and seems professional.
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
2942 "Richard Laager <rlaager@pidgin.im>", /**< author */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2943 PURPLE_WEBSITE, /**< homepage */
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2944 plugin_load, /**< load */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2945 plugin_unload, /**< unload */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2946 NULL, /**< destroy */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2947 NULL, /**< ui_info */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2948 NULL, /**< extra_info */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2949 &prefs_info, /**< prefs_info */
16745
df2c3d6b609a And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16481
diff changeset
2950 NULL, /**< actions */
df2c3d6b609a And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16481
diff changeset
2951
df2c3d6b609a And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16481
diff changeset
2952 /* padding */
df2c3d6b609a And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16481
diff changeset
2953 NULL,
df2c3d6b609a And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16481
diff changeset
2954 NULL,
df2c3d6b609a And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16481
diff changeset
2955 NULL,
df2c3d6b609a And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16481
diff changeset
2956 NULL
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2957 };
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2958
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2959 PURPLE_INIT_PLUGIN(log_reader, init_plugin, info)

mercurial