libpurple/plugins/log_reader.c

Sun, 16 Aug 2020 18:58:39 -0500

author
Elliott Sales de Andrade <quantum.analyst@gmail.com>
date
Sun, 16 Aug 2020 18:58:39 -0500
changeset 40514
30d9cbf04922
parent 40439
e9838d634d5e
child 40804
5496016b3c00
permissions
-rw-r--r--

Fix some leaks.

Also, expand `g_ascii_dtostr` buffers to `G_ASCII_DTOSTR_BUF_SIZE`.

This is the size it's guaranteed to be under, so might as well have it be that size. It not too much bigger than the existing choice anyway.

Testing Done:
Compile only.

Reviewed at https://reviews.imfreedom.org/r/71/

39959
e47fcffd061b migrate the libpurple plugins to using purple.h only
Gary Kramlich <grim@reaperworld.com>
parents: 39916
diff changeset
1 /*
e47fcffd061b migrate the libpurple plugins to using purple.h only
Gary Kramlich <grim@reaperworld.com>
parents: 39916
diff changeset
2 * This program is free software; you can redistribute it and/or
e47fcffd061b migrate the libpurple plugins to using purple.h only
Gary Kramlich <grim@reaperworld.com>
parents: 39916
diff changeset
3 * modify it under the terms of the GNU General Public License as
e47fcffd061b migrate the libpurple plugins to using purple.h only
Gary Kramlich <grim@reaperworld.com>
parents: 39916
diff changeset
4 * published by the Free Software Foundation; either version 2 of the
e47fcffd061b migrate the libpurple plugins to using purple.h only
Gary Kramlich <grim@reaperworld.com>
parents: 39916
diff changeset
5 * License, or (at your option) any later version.
e47fcffd061b migrate the libpurple plugins to using purple.h only
Gary Kramlich <grim@reaperworld.com>
parents: 39916
diff changeset
6 *
e47fcffd061b migrate the libpurple plugins to using purple.h only
Gary Kramlich <grim@reaperworld.com>
parents: 39916
diff changeset
7 * This program is distributed in the hope that it will be useful, but
e47fcffd061b migrate the libpurple plugins to using purple.h only
Gary Kramlich <grim@reaperworld.com>
parents: 39916
diff changeset
8 * WITHOUT ANY WARRANTY; without even the implied warranty of
e47fcffd061b migrate the libpurple plugins to using purple.h only
Gary Kramlich <grim@reaperworld.com>
parents: 39916
diff changeset
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
e47fcffd061b migrate the libpurple plugins to using purple.h only
Gary Kramlich <grim@reaperworld.com>
parents: 39916
diff changeset
10 * General Public License for more details.
e47fcffd061b migrate the libpurple plugins to using purple.h only
Gary Kramlich <grim@reaperworld.com>
parents: 39916
diff changeset
11 *
e47fcffd061b migrate the libpurple plugins to using purple.h only
Gary Kramlich <grim@reaperworld.com>
parents: 39916
diff changeset
12 * You should have received a copy of the GNU General Public License
e47fcffd061b migrate the libpurple plugins to using purple.h only
Gary Kramlich <grim@reaperworld.com>
parents: 39916
diff changeset
13 * along with this program; if not, write to the Free Software
e47fcffd061b migrate the libpurple plugins to using purple.h only
Gary Kramlich <grim@reaperworld.com>
parents: 39916
diff changeset
14 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
e47fcffd061b migrate the libpurple plugins to using purple.h only
Gary Kramlich <grim@reaperworld.com>
parents: 39916
diff changeset
15 * 02111-1301, USA.
e47fcffd061b migrate the libpurple plugins to using purple.h only
Gary Kramlich <grim@reaperworld.com>
parents: 39916
diff changeset
16 */
e47fcffd061b migrate the libpurple plugins to using purple.h only
Gary Kramlich <grim@reaperworld.com>
parents: 39916
diff changeset
17
40439
e9838d634d5e Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents: 40171
diff changeset
18 #include <glib.h>
e9838d634d5e Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents: 40171
diff changeset
19 #include <glib/gstdio.h>
e9838d634d5e Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents: 40171
diff changeset
20 #include <glib/gi18n-lib.h>
e9838d634d5e Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents: 40171
diff changeset
21
e9838d634d5e Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents: 40171
diff changeset
22 #include <ctype.h>
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
23 #include <stdio.h>
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
24
39959
e47fcffd061b migrate the libpurple plugins to using purple.h only
Gary Kramlich <grim@reaperworld.com>
parents: 39916
diff changeset
25 #include <purple.h>
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
26
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
27 /* Where is the Windows partition mounted? */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
28 #ifndef PURPLE_LOG_READER_WINDOWS_MOUNT_POINT
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
29 #define PURPLE_LOG_READER_WINDOWS_MOUNT_POINT "/mnt/windows"
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
30 #endif
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
31
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
32 enum name_guesses {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
33 NAME_GUESS_UNKNOWN,
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
34 NAME_GUESS_ME,
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
35 NAME_GUESS_THEM
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
36 };
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
37
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
38
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
39 /*****************************************************************************
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
40 * Adium Logger *
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
41 *****************************************************************************/
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
42
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
43 /* 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
44 * Adium logs in the log viewer transparently.
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
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
47 static PurpleLogLogger *adium_logger;
11459
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 enum adium_log_type {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
50 ADIUM_HTML,
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
51 ADIUM_TEXT,
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
52 };
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
53
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
54 struct adium_logger_data {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
55 char *path;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
56 enum adium_log_type type;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
57 };
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
58
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
59 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
60 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
61 GList *list = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
62 const char *logdir;
36544
1bf8b6ef5aea Renamed PurplePluginProtocolInfo to PurpleProtocol
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
63 PurpleProtocol *protocol;
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
64 char *protocol_name;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
65 char *temp;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
66 char *path;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
67 GDir *dir;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
68
19090
f14418fec130 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <datallah@pidgin.im>
parents: 19080
diff changeset
69 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
70 g_return_val_if_fail(account != NULL, NULL);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
71
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
72 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
73
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
74 /* 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
75 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
76 return NULL;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
77
36746
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
78 protocol = purple_protocols_find(purple_account_get_protocol_id(account));
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
79 if (!protocol)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
80 return NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
81
36719
0d7682bdf828 Updated protocol iface calls
Ankit Vani <a@nevitus.org>
parents: 36692
diff changeset
82 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
83
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
84 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
85 path = g_build_filename(logdir, temp, sn, NULL);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
86 g_free(temp);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
87
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
88 dir = g_dir_open(path, 0, NULL);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
89 if (dir) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
90 const gchar *file;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
91
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
92 while ((file = g_dir_read_name(dir))) {
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
93 if (!g_str_has_prefix(file, sn)) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
94 continue;
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
95 }
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
96 if (g_str_has_suffix(file, ".html") ||
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
97 g_str_has_suffix(file, ".AdiumHTMLLog")) {
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
98 GDateTime *dt;
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
99 gint year, month, day, hour, minute, second;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
100 const char *date = file;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
101
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
102 date += strlen(sn) + 2;
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
103 if (sscanf(date, "%u|%u|%u", &year, &month, &day) != 3) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
104
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
105 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
106 "Filename timestamp parsing error\n");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
107 } else {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
108 char *filename = g_build_filename(path, file, NULL);
13158
3b4295931fd6 [gaim-migrate @ 15520]
Richard Laager <rlaager@pidgin.im>
parents: 13120
diff changeset
109 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
110 char contents[57]; /* XXX: This is really inflexible. */
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
111 char *contents2;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
112 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
113 size_t rd;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
114 PurpleLog *log;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
115
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
116 if (!handle) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
117 g_free(filename);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
118 continue;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
119 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
120
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
121 rd = fread(contents, 1, 56, handle) == 0;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
122 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
123 contents[rd] = '\0';
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
124
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
125 /* XXX: This is fairly inflexible. */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
126 contents2 = contents;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
127 while (*contents2 && *contents2 != '>')
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
128 contents2++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
129 if (*contents2)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
130 contents2++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
131 while (*contents2 && *contents2 != '>')
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
132 contents2++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
133 if (*contents2)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
134 contents2++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
135
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
136 if (sscanf(contents2, "%u.%u.%u",
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
137 &hour, &minute, &second) != 3) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
138
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
139 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
140 "Contents timestamp parsing error\n");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
141 g_free(filename);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
142 continue;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
143 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
144
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
145 data = g_new0(struct adium_logger_data, 1);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
146 data->path = filename;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
147 data->type = ADIUM_HTML;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
148
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
149 /* XXX: Look into this later... Should we figure out a timezone? */
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
150 dt = g_date_time_new_local(year, month, day, hour, minute, second);
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
151
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
152 log = purple_log_new(PURPLE_LOG_IM, sn, account, NULL, dt);
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
153 log->logger = adium_logger;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
154 log->logger_data = data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
155
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
156 g_date_time_unref(dt);
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
157
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
158 list = g_list_prepend(list, log);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
159 }
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
160 } else if (g_str_has_suffix(file, ".adiumLog")) {
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
161 GDateTime *dt;
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
162 gint year, month, day, hour, minute, second;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
163 const char *date = file;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
164
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
165 date += strlen(sn) + 2;
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
166 if (sscanf(date, "%u|%u|%u", &year, &month, &day) != 3) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
167
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
168 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
169 "Filename timestamp parsing error\n");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
170 } else {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
171 char *filename = g_build_filename(path, file, NULL);
13158
3b4295931fd6 [gaim-migrate @ 15520]
Richard Laager <rlaager@pidgin.im>
parents: 13120
diff changeset
172 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
173 char contents[14]; /* XXX: This is really inflexible. */
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
174 char *contents2;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
175 struct adium_logger_data *data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
176 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
177 size_t rd;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
178
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
179 if (!handle) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
180 g_free(filename);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
181 continue;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
182 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
183
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
184 rd = fread(contents, 1, 13, handle);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
185 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
186 contents[rd] = '\0';
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
187
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
188 contents2 = contents;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
189 while (*contents2 && *contents2 != '(')
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
190 contents2++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
191 if (*contents2)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
192 contents2++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
193
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
194 if (sscanf(contents2, "%u.%u.%u", &hour, &minute, &second) != 3) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
195
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
196 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
197 "Contents timestamp parsing error\n");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
198 g_free(filename);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
199 continue;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
200 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
201
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
202 data = g_new0(struct adium_logger_data, 1);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
203 data->path = filename;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
204 data->type = ADIUM_TEXT;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
205
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
206 /* XXX: Look into this later... Should we figure out a timezone? */
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
207 dt = g_date_time_new_local(year, month, day, hour, minute, second);
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
208
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
209 log = purple_log_new(PURPLE_LOG_IM, sn, account, NULL, dt);
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
210 log->logger = adium_logger;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
211 log->logger_data = data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
212
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
213 g_date_time_unref(dt);
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
214
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
215 list = g_list_prepend(list, log);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
216 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
217 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
218 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
219 g_dir_close(dir);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
220 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
221
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
222 g_free(protocol_name);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
223 g_free(path);
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 return list;
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
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
228 static char *adium_logger_read (PurpleLog *log, PurpleLogReadFlags *flags)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
229 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
230 struct adium_logger_data *data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
231 GError *error = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
232 gchar *read = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
233
18531
8cfc3731a887 Minor comment fix.
Richard Laager <rlaager@pidgin.im>
parents: 18530
diff changeset
234 /* 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
235 * 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
236 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
237 *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
238
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
239 g_return_val_if_fail(log != NULL, g_strdup(""));
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
240
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
241 data = log->logger_data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
242
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
243 g_return_val_if_fail(data->path != NULL, g_strdup(""));
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
244
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
245 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
246 if (!g_file_get_contents(data->path, &read, NULL, &error)) {
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
247 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
248 (error && error->message) ? error->message : "Unknown error");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
249 if (error)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
250 g_error_free(error);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
251 return g_strdup("");
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
252 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
253
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
254 if (data->type != ADIUM_HTML) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
255 char *escaped = g_markup_escape_text(read, -1);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
256 g_free(read);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
257 read = escaped;
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 #ifdef WIN32
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
261 /* This problem only seems to show up on Windows.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
262 * 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
263 */
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
264 if (g_str_has_prefix(read, "\xef\xbb\xbf")) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
265 /* FIXME: This feels so wrong... */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
266 char *temp = g_strdup(&(read[3]));
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
267 g_free(read);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
268 read = temp;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
269 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
270 #endif
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 /* TODO: Apply formatting.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
273 * Replace the above hack with something better, since we'll
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
274 * be looping over the entire log file contents anyway.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
275 */
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 return read;
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
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
280 static int adium_logger_size (PurpleLog *log)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
281 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
282 struct adium_logger_data *data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
283 char *text;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
284 size_t size;
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 g_return_val_if_fail(log != NULL, 0);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
287
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
288 data = log->logger_data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
289
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
290 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
291 GStatBuf st;
b44d15793c83 Use GStatBuf instead of struct stat
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33649
diff changeset
292
b44d15793c83 Use GStatBuf instead of struct stat
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33649
diff changeset
293 if (!data->path || g_stat(data->path, &st))
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
294 st.st_size = 0;
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13702
diff changeset
295
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
296 return st.st_size;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
297 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
298
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
299 text = adium_logger_read(log, NULL);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
300 size = strlen(text);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
301 g_free(text);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
302
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
303 return 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
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
306 static void adium_logger_finalize(PurpleLog *log)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
307 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
308 struct adium_logger_data *data;
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 g_return_if_fail(log != NULL);
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 data = log->logger_data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
313
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
314 g_free(data->path);
18513
160f45152db1 Eliminate some leaks.
Richard Laager <rlaager@pidgin.im>
parents: 18512
diff changeset
315 g_free(data);
11459
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
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 /*****************************************************************************
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
320 * MSN Messenger Logger *
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
321 *****************************************************************************/
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
322
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
323 /* 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
324 * MSN Messenger message histories in the log viewer transparently.
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
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
327 static PurpleLogLogger *msn_logger;
11459
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 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
330 PurpleXmlNode *root;
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
331 PurpleXmlNode *message;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
332 const char *session_id;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
333 int last_log;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
334 GString *text;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
335 };
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
336
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
337 /* This function is really confusing. It makes baby rlaager cry...
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
338 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
339 */
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
340 static GDateTime *
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
341 msn_logger_parse_timestamp(PurpleXmlNode *message)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
342 {
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
343 const char *datetime;
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
344 GDateTime *stamp;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
345 const char *date;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
346 const char *time;
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
347 int month;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
348 int day;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
349 int year;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
350 int hour;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
351 int min;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
352 int sec;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
353 char am_pm;
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
354 char *str;
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
355 GDateTime *t;
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
356 GTimeSpan diff;
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
357
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
358 g_return_val_if_fail(message != NULL, NULL);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
359
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
360 datetime = purple_xmlnode_get_attrib(message, "DateTime");
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
361 if (!(datetime && *datetime))
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
362 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
363 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
364 "Attribute missing: %s\n", "DateTime");
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
365 return NULL;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
366 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
367
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
368 stamp = purple_str_to_date_time(datetime, TRUE);
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
369
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
370 date = purple_xmlnode_get_attrib(message, "Date");
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
371 if (!(date && *date))
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
372 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
373 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
374 "Attribute missing: %s\n", "Date");
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
375 return stamp;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
376 }
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
377
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
378 time = purple_xmlnode_get_attrib(message, "Time");
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
379 if (!(time && *time))
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
380 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
381 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
382 "Attribute missing: %s\n", "Time");
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
383 return stamp;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
384 }
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
385
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
386 if (sscanf(date, "%u/%u/%u", &month, &day, &year) != 3)
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
387 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
388 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
389 "%s parsing error\n", "Date");
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
390 return stamp;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
391 }
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
392 else
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
393 {
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
394 if (month > 12)
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
395 {
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
396 int tmp = day;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
397 day = month;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
398 month = tmp;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
399 }
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
400 }
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
401
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
402 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
403 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
404 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
405 "%s parsing error\n", "Time");
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
406 return stamp;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
407 }
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
408
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
409 if (am_pm == 'P') {
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
410 hour += 12;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
411 } else if (hour == 12) {
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
412 /* 12 AM = 00 hr */
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
413 hour = 0;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
414 }
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
415
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
416 str = g_strdup_printf("%04i-%02i-%02iT%02i:%02i:%02i", year, month, day, hour, min, sec);
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
417 t = purple_str_to_date_time(str, TRUE);
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
418
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
419 if (g_date_time_compare(stamp, t) > 0)
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
420 diff = g_date_time_difference(stamp, t);
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
421 else
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
422 diff = g_date_time_difference(t, stamp);
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
423
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
424 if (diff > (14LL * G_TIME_SPAN_HOUR)) {
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
425 if (day <= 12)
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
426 {
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
427 /* 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
428 g_free(str);
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
429 str = g_strdup_printf("%04i-%02i-%02iT%02i:%02i:%02i", year, month, day, hour, min, sec);
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
430 t = purple_str_to_date_time(str, TRUE);
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
431
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
432 if (g_date_time_compare(stamp, t) > 0)
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
433 diff = g_date_time_difference(stamp, t);
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
434 else
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
435 diff = g_date_time_difference(t, stamp);
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
436
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
437 if (diff > (14LL * G_TIME_SPAN_HOUR)) {
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
438 /* We got a time, it's not impossible, but
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
439 * the diff is too large. Display the UTC time. */
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
440 g_free(str);
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
441 return stamp;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
442 }
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
443 else
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
444 {
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
445 /* Legal time */
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
446 /* Fall out */
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
447 }
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
448 }
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
449 else
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
450 {
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
451 /* We got a time, it's not impossible, but
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
452 * the diff is too large. Display the UTC time. */
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
453 g_free(str);
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
454 return stamp;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
455 }
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
456 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
457
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
458 /* 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
459 * Let's find out if it's in our TZ. */
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
460 if (purple_str_to_date_time(str, FALSE) == stamp)
15061
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
461 {
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
462 g_free(str);
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
463 return stamp;
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
464 }
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
465 g_free(str);
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
466
a71d30f18de2 [gaim-migrate @ 17778]
Richard Laager <rlaager@pidgin.im>
parents: 14998
diff changeset
467 return stamp;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
468 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
469
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
470 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
471 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
472 GList *list = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
473 char *username;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
474 PurpleBuddy *buddy;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
475 const char *logdir;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
476 const char *savedfilename = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
477 char *logfile;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
478 char *path;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
479 GError *error = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
480 gchar *contents = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
481 gsize length;
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
482 PurpleXmlNode *root;
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
483 PurpleXmlNode *message;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
484 const char *old_session_id = "";
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
485 struct msn_logger_data *data = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
486
19090
f14418fec130 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <datallah@pidgin.im>
parents: 19080
diff changeset
487 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
488 g_return_val_if_fail(account != NULL, NULL);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
489
38358
30ba44276e74 Merge release-2.x.y into default
dx <dx@dxzone.com.ar>
parents: 37205 38259
diff changeset
490 if (!purple_strequal(purple_account_get_protocol_id(account), "prpl-msn"))
19090
f14418fec130 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <datallah@pidgin.im>
parents: 19080
diff changeset
491 return NULL;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
492
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
493 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
494
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
495 /* 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
496 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
497 return NULL;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
498
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34699
diff changeset
499 buddy = purple_blist_find_buddy(account, sn);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
500
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
501 if ((username = g_strdup(purple_account_get_string(
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
502 account, "log_reader_msn_log_folder", NULL)))) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
503 /* 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
504 * straight away. This would allow the user to deal with the case
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
505 * when two account have the same username at different domains and
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
506 * only one has logs stored.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
507 */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
508 if (!*username) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
509 g_free(username);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
510 return list;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
511 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
512 } else {
32215
0a4e72c8a67e Use accessor functions in a few places
Mark Doliner <markdoliner@pidgin.im>
parents: 31984
diff changeset
513 username = g_strdup(purple_normalize(account, purple_account_get_username(account)));
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
514 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
515
24531
76e72697f7d6 Hide the blistnode, buddy, contact, group, and chat structs
Gary Kramlich <grim@reaperworld.com>
parents: 24231
diff changeset
516 if (buddy) {
34741
d371a8f11179 Used GObject casts for PurpleBListNode in plugins
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
517 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
518 "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
519 }
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
520
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
521 if (savedfilename) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
522 /* 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
523 * straight away. This would allow the user to deal with the case
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
524 * when two buddies have the same username at different domains and
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
525 * only one has logs stored.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
526 */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
527 if (!*savedfilename) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
528 g_free(username);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
529 return list;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
530 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
531
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
532 logfile = g_strdup(savedfilename);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
533 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
534 logfile = g_strdup_printf("%s.xml", purple_normalize(account, sn));
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
535 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
536
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
537 path = g_build_filename(logdir, username, "History", logfile, NULL);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
538
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
539 if (!g_file_test(path, G_FILE_TEST_EXISTS)) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
540 gboolean found = FALSE;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
541 char *at_sign;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
542 GDir *dir;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
543
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
544 g_free(path);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
545
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
546 if (savedfilename) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
547 /* We had a saved filename, but it doesn't exist.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
548 * Returning now is the right course of action because we don't
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
549 * want to detect another file incorrectly.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
550 */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
551 g_free(username);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
552 g_free(logfile);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
553 return list;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
554 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
555
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
556 /* 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
557 * 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
558 * find logs by pattern matching...
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
559 */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
560
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
561 at_sign = g_strrstr(username, "@");
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
562 if (at_sign)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
563 *at_sign = '\0';
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
564
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
565 dir = g_dir_open(logdir, 0, NULL);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
566 if (dir) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
567 const gchar *name;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
568
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
569 while ((name = g_dir_read_name(dir))) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
570 const char *c = name;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
571
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
572 if (!g_str_has_prefix(c, username)) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
573 continue;
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
574 }
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
575
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
576 c += strlen(username);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
577 while (*c) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
578 if (!g_ascii_isdigit(*c))
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
579 break;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
580
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
581 c++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
582 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
583
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
584 path = g_build_filename(logdir, name, NULL);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
585 /* 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
586 if (!*c && g_file_test(path, G_FILE_TEST_IS_DIR)) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
587 char *history_path = g_build_filename(
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
588 path, "History", NULL);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
589 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
590 purple_account_set_string(account,
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
591 "log_reader_msn_log_folder", name);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
592 g_free(path);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
593 path = history_path;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
594 found = TRUE;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
595 break;
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 g_free(history_path);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
598 }
39461
a4ae05d3be93 Fix several g_build_filename leaks.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38797
diff changeset
599 g_free(path);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
600 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
601 g_dir_close(dir);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
602 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
603 g_free(username);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
604
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
605 if (!found) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
606 g_free(logfile);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
607 return list;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
608 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
609
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
610 /* If we've reached this point, we've found a History folder. */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
611
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
612 username = g_strdup(purple_normalize(account, sn));
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
613 at_sign = g_strrstr(username, "@");
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
614 if (at_sign)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
615 *at_sign = '\0';
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
616
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
617 found = FALSE;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
618 dir = g_dir_open(path, 0, NULL);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
619 if (dir) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
620 const gchar *name;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
621
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
622 while ((name = g_dir_read_name(dir))) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
623 const char *c = name;
39468
d615ac3cfbd3 Fix use-after-free in MSN log reader.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39461
diff changeset
624 gchar *full_path;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
625
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
626 if (!g_str_has_prefix(c, username)) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
627 continue;
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
628 }
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
629
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
630 c += strlen(username);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
631 while (*c) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
632 if (!g_ascii_isdigit(*c))
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
633 break;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
634
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
635 c++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
636 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
637
39468
d615ac3cfbd3 Fix use-after-free in MSN log reader.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39461
diff changeset
638 full_path = g_build_filename(path, name, NULL);
38258
9a6551eba09c Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 36029
diff changeset
639 if (purple_strequal(c, ".xml") &&
39468
d615ac3cfbd3 Fix use-after-free in MSN log reader.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39461
diff changeset
640 g_file_test(full_path, G_FILE_TEST_EXISTS)) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
641 found = TRUE;
39468
d615ac3cfbd3 Fix use-after-free in MSN log reader.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39461
diff changeset
642 g_free(path);
d615ac3cfbd3 Fix use-after-free in MSN log reader.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39461
diff changeset
643 path = full_path;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
644 g_free(logfile);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
645 logfile = g_strdup(name);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
646 break;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
647 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
648 else
39468
d615ac3cfbd3 Fix use-after-free in MSN log reader.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39461
diff changeset
649 g_free(full_path);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
650 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
651 g_dir_close(dir);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
652 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
653 g_free(username);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
654
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
655 if (!found) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
656 g_free(logfile);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
657 return list;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
658 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
659 } else {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
660 g_free(username);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
661 g_free(logfile);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
662 logfile = NULL; /* No sense saving the obvious buddy@domain.com. */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
663 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
664
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
665 purple_debug_info("MSN log read", "Reading %s\n", path);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
666 if (!g_file_get_contents(path, &contents, &length, &error)) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
667 g_free(path);
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
668 purple_debug_error("MSN log read", "Error reading log\n");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
669 if (error)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
670 g_error_free(error);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
671 return list;
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 g_free(path);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
674
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
675 /* Reading the file was successful...
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
676 * 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
677 * 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
678 * 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
679 * detected for both buddies.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
680 */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
681 if (buddy && logfile) {
34864
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34741
diff changeset
682 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
683 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
684 g_free(logfile);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
685 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
686
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
687 root = purple_xmlnode_from_str(contents, length);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
688 g_free(contents);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
689 if (!root)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
690 return list;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
691
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
692 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
693 message = purple_xmlnode_get_next_twin(message)) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
694 const char *session_id;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
695
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
696 session_id = purple_xmlnode_get_attrib(message, "SessionID");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
697 if (!session_id) {
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
698 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
699 "Error parsing message: %s\n", "SessionID missing");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
700 continue;
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
38259
c593fc9f5438 Replace strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 38258
diff changeset
703 if (!purple_strequal(session_id, old_session_id)) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
704 /*
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
705 * The session ID differs from the last message.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
706 * Thus, this is the start of a new conversation.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
707 */
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
708 GDateTime *stamp;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
709 PurpleLog *log;
11459
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 data = g_new0(struct msn_logger_data, 1);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
712 data->root = root;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
713 data->message = message;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
714 data->session_id = session_id;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
715 data->text = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
716 data->last_log = FALSE;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
717
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
718 stamp = msn_logger_parse_timestamp(message);
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
719
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
720 log = purple_log_new(PURPLE_LOG_IM, sn, account, NULL, stamp);
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
721 log->logger = msn_logger;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
722 log->logger_data = data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
723
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
724 g_date_time_unref(stamp);
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
725
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
726 list = g_list_prepend(list, log);
11459
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 old_session_id = session_id;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
729 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
730
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
731 if (data)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
732 data->last_log = TRUE;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
733
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
734 return g_list_reverse(list);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
735 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
736
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
737 static char * msn_logger_read (PurpleLog *log, PurpleLogReadFlags *flags)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
738 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
739 struct msn_logger_data *data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
740 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
741 PurpleXmlNode *message;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
742
19060
d330f88b0ed6 Fix #2349 (null pointer deref in log_reader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 18812
diff changeset
743 if (flags != NULL)
d330f88b0ed6 Fix #2349 (null pointer deref in log_reader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 18812
diff changeset
744 *flags = PURPLE_LOG_READ_NO_NEWLINE;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
745 g_return_val_if_fail(log != NULL, g_strdup(""));
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
746
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
747 data = log->logger_data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
748
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
749 if (data->text) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
750 /* The GTK code which displays the logs g_free()s whatever is
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
751 * returned from this function. Thus, we can't reuse the str
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
752 * part of the GString. The only solution is to free it and
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
753 * start over.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
754 */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
755 g_string_free(data->text, FALSE);
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
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
758 text = g_string_new("");
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
759
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
760 if (!data->root || !data->message || !data->session_id) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
761 /* 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
762 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
763 "Error parsing message: %s\n", "Internal variables inconsistent");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
764 data->text = text;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
765
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
766 return text->str;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
767 }
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 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
770 message = purple_xmlnode_get_next_twin(message)) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
771
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
772 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
773 PurpleXmlNode *text_node;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
774 const char *from_name = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
775 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
776 PurpleXmlNode *from;
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
777 PurpleXmlNode *to;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
778 enum name_guesses name_guessed = NAME_GUESS_UNKNOWN;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
779 const char *their_name;
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
780 GDateTime *dt = NULL;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
781 char *timestamp;
14142
97cb27b1093f [gaim-migrate @ 16701]
Daniel Atallah <datallah@pidgin.im>
parents: 14139
diff changeset
782 char *tmp;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
783 const char *style;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
784
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
785 new_session_id = purple_xmlnode_get_attrib(message, "SessionID");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
786
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
787 /* If this triggers, something is wrong with the XML. */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
788 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
789 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
790 "Error parsing message: %s\n", "New SessionID missing");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
791 break;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
792 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
793
38259
c593fc9f5438 Replace strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 38258
diff changeset
794 if (!purple_strequal(new_session_id, data->session_id)) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
795 /* The session ID differs from the first message.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
796 * Thus, this is the start of a new conversation.
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 break;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
799 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
800
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
801 text_node = purple_xmlnode_get_child(message, "Text");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
802 if (!text_node)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
803 continue;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
804
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
805 from = purple_xmlnode_get_child(message, "From");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
806 if (from) {
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
807 PurpleXmlNode *user = purple_xmlnode_get_child(from, "User");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
808
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
809 if (user) {
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
810 from_name = purple_xmlnode_get_attrib(user, "FriendlyName");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
811
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
812 /* This saves a check later. */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
813 if (!*from_name)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
814 from_name = NULL;
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 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
817
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
818 to = purple_xmlnode_get_child(message, "To");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
819 if (to) {
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
820 PurpleXmlNode *user = purple_xmlnode_get_child(to, "User");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
821 if (user) {
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
822 to_name = purple_xmlnode_get_attrib(user, "FriendlyName");
11459
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 /* This saves a check later. */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
825 if (!*to_name)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
826 to_name = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
827 }
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
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
830 their_name = from_name;
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
831 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
832 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
833
11702
4977bb9807d0 [gaim-migrate @ 13993]
Richard Laager <rlaager@pidgin.im>
parents: 11503
diff changeset
834 if (friendly_name != NULL) {
4977bb9807d0 [gaim-migrate @ 13993]
Richard Laager <rlaager@pidgin.im>
parents: 11503
diff changeset
835 int friendly_name_length = strlen(friendly_name);
15071
f7927e8ce744 [gaim-migrate @ 17790]
Richard Laager <rlaager@pidgin.im>
parents: 15061
diff changeset
836 const char *alias;
f7927e8ce744 [gaim-migrate @ 17790]
Richard Laager <rlaager@pidgin.im>
parents: 15061
diff changeset
837 int alias_length;
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34699
diff changeset
838 PurpleBuddy *buddy = purple_blist_find_buddy(log->account, log->name);
11702
4977bb9807d0 [gaim-migrate @ 13993]
Richard Laager <rlaager@pidgin.im>
parents: 11503
diff changeset
839 gboolean from_name_matches;
4977bb9807d0 [gaim-migrate @ 13993]
Richard Laager <rlaager@pidgin.im>
parents: 11503
diff changeset
840 gboolean to_name_matches;
4977bb9807d0 [gaim-migrate @ 13993]
Richard Laager <rlaager@pidgin.im>
parents: 11503
diff changeset
841
24531
76e72697f7d6 Hide the blistnode, buddy, contact, group, and chat structs
Gary Kramlich <grim@reaperworld.com>
parents: 24231
diff changeset
842 if (buddy)
76e72697f7d6 Hide the blistnode, buddy, contact, group, and chat structs
Gary Kramlich <grim@reaperworld.com>
parents: 24231
diff changeset
843 their_name = purple_buddy_get_alias(buddy);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
844
34589
428e92c79631 Renamed purple_account_[get,set]_alias to purple_account[get,set]_private_alias.
Ankit Vani <a@nevitus.org>
parents: 33940
diff changeset
845 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
846 if (alias) {
15071
f7927e8ce744 [gaim-migrate @ 17790]
Richard Laager <rlaager@pidgin.im>
parents: 15061
diff changeset
847 alias_length = strlen(alias);
32215
0a4e72c8a67e Use accessor functions in a few places
Mark Doliner <markdoliner@pidgin.im>
parents: 31984
diff changeset
848 } else {
15071
f7927e8ce744 [gaim-migrate @ 17790]
Richard Laager <rlaager@pidgin.im>
parents: 15061
diff changeset
849 alias = "";
f7927e8ce744 [gaim-migrate @ 17790]
Richard Laager <rlaager@pidgin.im>
parents: 15061
diff changeset
850 alias_length = 0;
f7927e8ce744 [gaim-migrate @ 17790]
Richard Laager <rlaager@pidgin.im>
parents: 15061
diff changeset
851 }
f7927e8ce744 [gaim-migrate @ 17790]
Richard Laager <rlaager@pidgin.im>
parents: 15061
diff changeset
852
11702
4977bb9807d0 [gaim-migrate @ 13993]
Richard Laager <rlaager@pidgin.im>
parents: 11503
diff changeset
853 /* Try to guess which user is me.
4977bb9807d0 [gaim-migrate @ 13993]
Richard Laager <rlaager@pidgin.im>
parents: 11503
diff changeset
854 * 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
855 * friendly name or alias. For this test, "match" is defined as:
4977bb9807d0 [gaim-migrate @ 13993]
Richard Laager <rlaager@pidgin.im>
parents: 11503
diff changeset
856 * ^(friendly_name|alias)([^a-zA-Z0-9].*)?$
4977bb9807d0 [gaim-migrate @ 13993]
Richard Laager <rlaager@pidgin.im>
parents: 11503
diff changeset
857 */
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
858 from_name_matches =
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
859 (g_str_has_prefix(from_name, friendly_name) &&
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
860 !isalnum(*(from_name + friendly_name_length))) ||
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
861 (g_str_has_prefix(from_name, alias) &&
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
862 !isalnum(*(from_name + alias_length)));
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
863
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
864 to_name_matches =
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
865 to_name != NULL &&
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
866 ((g_str_has_prefix(to_name, friendly_name) &&
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
867 !isalnum(*(to_name + friendly_name_length))) ||
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
868 (g_str_has_prefix(to_name, alias) &&
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
869 !isalnum(*(to_name + alias_length))));
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
870
11702
4977bb9807d0 [gaim-migrate @ 13993]
Richard Laager <rlaager@pidgin.im>
parents: 11503
diff changeset
871 if (from_name_matches) {
4977bb9807d0 [gaim-migrate @ 13993]
Richard Laager <rlaager@pidgin.im>
parents: 11503
diff changeset
872 if (!to_name_matches) {
4977bb9807d0 [gaim-migrate @ 13993]
Richard Laager <rlaager@pidgin.im>
parents: 11503
diff changeset
873 name_guessed = NAME_GUESS_ME;
4977bb9807d0 [gaim-migrate @ 13993]
Richard Laager <rlaager@pidgin.im>
parents: 11503
diff changeset
874 }
4977bb9807d0 [gaim-migrate @ 13993]
Richard Laager <rlaager@pidgin.im>
parents: 11503
diff changeset
875 } else if (to_name_matches) {
4977bb9807d0 [gaim-migrate @ 13993]
Richard Laager <rlaager@pidgin.im>
parents: 11503
diff changeset
876 name_guessed = NAME_GUESS_THEM;
4977bb9807d0 [gaim-migrate @ 13993]
Richard Laager <rlaager@pidgin.im>
parents: 11503
diff changeset
877 } else {
24531
76e72697f7d6 Hide the blistnode, buddy, contact, group, and chat structs
Gary Kramlich <grim@reaperworld.com>
parents: 24231
diff changeset
878 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
879 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
880 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
881 char *temp;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
882
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
883 /* "Truncate" the string at the first non-alphanumeric
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
884 * character. The idea is to relax the comparison.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
885 */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
886 for (temp = alias; *temp ; temp++) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
887 if (!isalnum(*temp)) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
888 *temp = '\0';
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
889 break;
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 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
892 alias_length = strlen(alias);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
893
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
894 /* Try to guess which user is them.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
895 * The first step is to determine if either of the names
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
896 * matches their alias. For this test, "match" is
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
897 * defined as: ^alias([^a-zA-Z0-9].*)?$
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
898 */
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
899 from_name_matches =
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
900 (g_str_has_prefix(from_name, alias) &&
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
901 !isalnum(*(from_name + alias_length)));
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
902
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
903 to_name_matches = to_name &&
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
904 (g_str_has_prefix(to_name, alias) &&
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
905 !isalnum(*(to_name + alias_length)));
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
906
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
907 g_free(alias);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
908
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
909 if (from_name_matches) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
910 if (!to_name_matches) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
911 name_guessed = NAME_GUESS_THEM;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
912 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
913 } else if (to_name_matches) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
914 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
915 } else if ((server_alias = purple_buddy_get_server_alias(buddy))) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
916 friendly_name_length =
24531
76e72697f7d6 Hide the blistnode, buddy, contact, group, and chat structs
Gary Kramlich <grim@reaperworld.com>
parents: 24231
diff changeset
917 strlen(server_alias);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
918
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
919 /* Try to guess which user is them.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
920 * The first step is to determine if either of
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
921 * the names matches their friendly name. For
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
922 * this test, "match" is defined as:
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
923 * ^friendly_name([^a-zA-Z0-9].*)?$
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
924 */
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
925 from_name_matches =
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
926 (g_str_has_prefix(from_name,
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
927 server_alias) &&
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
928 !isalnum(*(from_name +
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
929 friendly_name_length)));
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
930
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
931 to_name_matches =
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
932 to_name &&
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
933 ((g_str_has_prefix(to_name, server_alias) &&
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
934 !isalnum(*(to_name +
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
935 friendly_name_length))));
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
936
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
937 if (from_name_matches) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
938 if (!to_name_matches) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
939 name_guessed = NAME_GUESS_THEM;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
940 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
941 } else if (to_name_matches) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
942 name_guessed = NAME_GUESS_ME;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
943 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
944 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
945 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
946 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
947 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
948 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
949
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
950 if (name_guessed != NAME_GUESS_UNKNOWN) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
951 text = g_string_append(text, "<span style=\"color: #");
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
952 if (name_guessed == NAME_GUESS_ME)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
953 text = g_string_append(text, "16569E");
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
954 else
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
955 text = g_string_append(text, "A82F2F");
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
956 text = g_string_append(text, ";\">");
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
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
959 if ((dt = msn_logger_parse_timestamp(message)) != NULL) {
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
960 timestamp = g_date_time_format(
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
961 dt,
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
962 "<font size=\"2\">(%H:%M:%s)</font> ");
35382
1b75f8a4129c Fix some clang static analysis warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35190
diff changeset
963 text = g_string_append(text, timestamp);
1b75f8a4129c Fix some clang static analysis warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35190
diff changeset
964 g_free(timestamp);
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
965 g_date_time_unref(dt);
35382
1b75f8a4129c Fix some clang static analysis warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35190
diff changeset
966 } else {
1b75f8a4129c Fix some clang static analysis warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35190
diff changeset
967 text = g_string_append(text,
1b75f8a4129c Fix some clang static analysis warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35190
diff changeset
968 "<font size=\"2\">(00:00:00)</font> ");
1b75f8a4129c Fix some clang static analysis warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35190
diff changeset
969 }
11459
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 if (from_name) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
972 text = g_string_append(text, "<b>");
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
973
14998
76f6b742f4d1 [gaim-migrate @ 17708]
Daniel Atallah <datallah@pidgin.im>
parents: 14334
diff changeset
974 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
975 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
976 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
977 else
32215
0a4e72c8a67e Use accessor functions in a few places
Mark Doliner <markdoliner@pidgin.im>
parents: 31984
diff changeset
978 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
979 }
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
980 else if (name_guessed == NAME_GUESS_THEM)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
981 text = g_string_append(text, their_name);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
982 else
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
983 text = g_string_append(text, from_name);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
984
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
985 text = g_string_append(text, ":</b> ");
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
986 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
987
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
988 if (name_guessed != NAME_GUESS_UNKNOWN)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
989 text = g_string_append(text, "</span>");
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
990
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
991 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
992
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
993 tmp = purple_xmlnode_get_data(text_node);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
994 if (style && *style) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
995 text = g_string_append(text, "<span style=\"");
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
996 text = g_string_append(text, style);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
997 text = g_string_append(text, "\">");
14142
97cb27b1093f [gaim-migrate @ 16701]
Daniel Atallah <datallah@pidgin.im>
parents: 14139
diff changeset
998 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
999 text = g_string_append(text, "</span><br>");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1000 } else {
14142
97cb27b1093f [gaim-migrate @ 16701]
Daniel Atallah <datallah@pidgin.im>
parents: 14139
diff changeset
1001 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
1002 text = g_string_append(text, "<br>");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1003 }
14142
97cb27b1093f [gaim-migrate @ 16701]
Daniel Atallah <datallah@pidgin.im>
parents: 14139
diff changeset
1004 g_free(tmp);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1005 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1006
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1007 data->text = text;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1008
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1009 return text->str;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1010 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1011
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1012 static int msn_logger_size (PurpleLog *log)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1013 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1014 char *text;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1015 size_t size;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1016
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1017 g_return_val_if_fail(log != NULL, 0);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1018
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
1019 if (purple_prefs_get_bool("/plugins/core/log_reader/fast_sizes"))
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1020 return 0;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1021
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1022 text = msn_logger_read(log, NULL);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1023 size = strlen(text);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1024 g_free(text);
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 return size;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1027 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1028
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1029 static void msn_logger_finalize(PurpleLog *log)
11459
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 struct msn_logger_data *data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1032
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1033 g_return_if_fail(log != NULL);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1034
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1035 data = log->logger_data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1036
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1037 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
1038 purple_xmlnode_free(data->root);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1039
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1040 if (data->text)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1041 g_string_free(data->text, FALSE);
18513
160f45152db1 Eliminate some leaks.
Richard Laager <rlaager@pidgin.im>
parents: 18512
diff changeset
1042
160f45152db1 Eliminate some leaks.
Richard Laager <rlaager@pidgin.im>
parents: 18512
diff changeset
1043 g_free(data);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1044 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1045
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1046
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1047 /*****************************************************************************
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1048 * Trillian Logger *
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1049 *****************************************************************************/
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 /* 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
1052 * Trillian logs in the log viewer transparently.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1053 */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1054
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1055 static PurpleLogLogger *trillian_logger;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1056 static void trillian_logger_finalize(PurpleLog *log);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1057
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1058 struct trillian_logger_data {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1059 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
1060 int offset;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1061 int length;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1062 char *their_nickname;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1063 };
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1064
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1065 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
1066 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1067 GList *list = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1068 const char *logdir;
36544
1bf8b6ef5aea Renamed PurplePluginProtocolInfo to PurpleProtocol
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
1069 PurpleProtocol *protocol;
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
1070 char *protocol_name;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1071 const char *buddy_name;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1072 char *filename;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1073 char *path;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1074 GError *error = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1075 gchar *contents = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1076 gsize length;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1077 gchar *line;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1078 gchar *c;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1079
19090
f14418fec130 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <datallah@pidgin.im>
parents: 19080
diff changeset
1080 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
1081 g_return_val_if_fail(account != NULL, NULL);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1082
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
1083 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
1084
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1085 /* 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
1086 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
1087 return NULL;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1088
36746
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
1089 protocol = purple_protocols_find(purple_account_get_protocol_id(account));
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
1090 if (!protocol)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1091 return NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1092
36719
0d7682bdf828 Updated protocol iface calls
Ankit Vani <a@nevitus.org>
parents: 36692
diff changeset
1093 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
1094
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1095 buddy_name = purple_normalize(account, sn);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1096
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1097 filename = g_strdup_printf("%s.log", buddy_name);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1098 path = g_build_filename(
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
1099 logdir, protocol_name, filename, NULL);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1100
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
1101 purple_debug_info("Trillian log list", "Reading %s\n", path);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1102 /* 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
1103 * See src/log.c:old_logger_list for a better approach.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1104 */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1105 if (!g_file_get_contents(path, &contents, &length, &error)) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1106 if (error) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1107 g_error_free(error);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1108 error = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1109 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1110 g_free(path);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1111
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1112 path = g_build_filename(
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
1113 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
1114 purple_debug_info("Trillian log list", "Reading %s\n", path);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1115 if (!g_file_get_contents(path, &contents, &length, &error)) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1116 if (error)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1117 g_error_free(error);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1118 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1119 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1120 g_free(filename);
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 if (contents) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1123 struct trillian_logger_data *data = NULL;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1124 int offset = 0;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1125 int last_line_offset = 0;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1126
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1127 line = contents;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1128 c = contents;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1129 while (*c) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1130 offset++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1131
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1132 if (*c != '\n') {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1133 c++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1134 continue;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1135 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1136
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1137 *c = '\0';
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
1138 if (g_str_has_prefix(line, "Session Close ")) {
13669
ffcdd1227906 [gaim-migrate @ 16070]
Richard Laager <rlaager@pidgin.im>
parents: 13498
diff changeset
1139 if (data && !data->length) {
ffcdd1227906 [gaim-migrate @ 16070]
Richard Laager <rlaager@pidgin.im>
parents: 13498
diff changeset
1140 if (!(data->length = last_line_offset - data->offset)) {
ffcdd1227906 [gaim-migrate @ 16070]
Richard Laager <rlaager@pidgin.im>
parents: 13498
diff changeset
1141 /* This log had no data, so we remove it. */
ffcdd1227906 [gaim-migrate @ 16070]
Richard Laager <rlaager@pidgin.im>
parents: 13498
diff changeset
1142 GList *last = g_list_last(list);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1143
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
1144 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
1145 "Empty log. Offset %i\n", data->offset);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1146
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1147 trillian_logger_finalize((PurpleLog *)last->data);
13669
ffcdd1227906 [gaim-migrate @ 16070]
Richard Laager <rlaager@pidgin.im>
parents: 13498
diff changeset
1148 list = g_list_delete_link(list, last);
ffcdd1227906 [gaim-migrate @ 16070]
Richard Laager <rlaager@pidgin.im>
parents: 13498
diff changeset
1149 }
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1150 }
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
1151 } else if (line[0] && line[1] && line[2] &&
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
1152 g_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
1153 /* 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
1154 * 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
1155 * have to count the whole string needlessly.
18515
2a028601289a Remove trailing whitespace.
Richard Laager <rlaager@pidgin.im>
parents: 18514
diff changeset
1156 *
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
1157 * 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
1158 * 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
1159 * 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
1160 */
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1161 char *their_nickname = line;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1162 char *timestamp;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1163
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1164 if (data && !data->length)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1165 data->length = last_line_offset - data->offset;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1166
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1167 while (*their_nickname && (*their_nickname != ':'))
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1168 their_nickname++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1169 their_nickname++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1170
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1171 /* This code actually has nothing to do with
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1172 * the timestamp YET. I'm simply using this
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1173 * variable for now to NUL-terminate the
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1174 * their_nickname string.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1175 */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1176 timestamp = their_nickname;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1177 while (*timestamp && *timestamp != ')')
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1178 timestamp++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1179
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1180 if (*timestamp == ')') {
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
1181 char *month_str;
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
1182 gint year, month, day, hour, minute, second;
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
1183 GDateTime *dt;
11459
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 *timestamp = '\0';
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1186 if (line[0] && line[1] && line[2])
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1187 timestamp += 3;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1188
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1189 /* Now we start dealing with the timestamp. */
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 /* Skip over the day name. */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1192 while (*timestamp && (*timestamp != ' '))
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1193 timestamp++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1194 *timestamp = '\0';
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1195 timestamp++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1196
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1197 /* Parse out the month. */
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
1198 month_str = timestamp;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1199 while (*timestamp && (*timestamp != ' '))
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1200 timestamp++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1201 *timestamp = '\0';
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1202 timestamp++;
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 /* Parse the day, time, and year. */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1205 if (sscanf(timestamp, "%u %u:%u:%u %u",
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
1206 &day, &hour,
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
1207 &minute, &second,
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
1208 &year) != 5) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1209
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
1210 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
1211 "Session Start parsing error\n");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1212 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1213 PurpleLog *log;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1214
40171
564fcabca6d9 Rename purple_get_month -> purple_time_parse_month
qarkai <qarkai@gmail.com>
parents: 40170
diff changeset
1215 month = purple_time_parse_month(month_str);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1216
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1217 data = g_new0(
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1218 struct trillian_logger_data, 1);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1219 data->path = g_strdup(path);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1220 data->offset = offset;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1221 data->length = 0;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1222 data->their_nickname =
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1223 g_strdup(their_nickname);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1224
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
1225 /* XXX: Look into this later... Should we figure out a timezone? */
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
1226 dt = g_date_time_new_local(year, month, day, hour, minute, second);
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
1227
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1228 log = purple_log_new(PURPLE_LOG_IM,
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
1229 sn, account, NULL, dt);
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
1230 log->logger = trillian_logger;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1231 log->logger_data = data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1232
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
1233 g_date_time_unref(dt);
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
1234
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
1235 list = g_list_prepend(list, log);
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 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1238 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1239 c++;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1240 line = c;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1241 last_line_offset = offset;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1242 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1243
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1244 g_free(contents);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1245 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1246 g_free(path);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1247
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
1248 g_free(protocol_name);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1249
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
1250 return g_list_reverse(list);
11459
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
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1253 static char * trillian_logger_read (PurpleLog *log, PurpleLogReadFlags *flags)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1254 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1255 struct trillian_logger_data *data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1256 char *read;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1257 FILE *file;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1258 PurpleBuddy *buddy;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1259 char *escaped;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1260 GString *formatted;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1261 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
1262 const char *line;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1263
19090
f14418fec130 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <datallah@pidgin.im>
parents: 19080
diff changeset
1264 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
1265 *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
1266
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1267 g_return_val_if_fail(log != NULL, g_strdup(""));
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1268
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1269 data = log->logger_data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1270
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1271 g_return_val_if_fail(data->path != NULL, g_strdup(""));
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1272 g_return_val_if_fail(data->length > 0, g_strdup(""));
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1273 g_return_val_if_fail(data->their_nickname != NULL, g_strdup(""));
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1274
18512
947a4365d795 Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@pidgin.im>
parents: 18511
diff changeset
1275 purple_debug_info("Trillian log read", "Reading %s\n", data->path);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1276
13158
3b4295931fd6 [gaim-migrate @ 15520]
Richard Laager <rlaager@pidgin.im>
parents: 13120
diff changeset
1277 file = g_fopen(data->path, "rb");
35992
34a67264df99 Fix some CWE-476 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
1278 g_return_val_if_fail(file != NULL, g_strdup(""));
36026
ee9d95cb8ee6 Fix coverity log_reader issues
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36008
diff changeset
1279
ee9d95cb8ee6 Fix coverity log_reader issues
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36008
diff changeset
1280 read = g_malloc(data->length + 2);
ee9d95cb8ee6 Fix coverity log_reader issues
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36008
diff changeset
1281
ee9d95cb8ee6 Fix coverity log_reader issues
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36008
diff changeset
1282 if (fseek(file, data->offset, SEEK_SET) != 0) {
ee9d95cb8ee6 Fix coverity log_reader issues
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36008
diff changeset
1283 fclose(file);
ee9d95cb8ee6 Fix coverity log_reader issues
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36008
diff changeset
1284 g_free(read);
35991
e6937e52930b Fix some CWE-252 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35968
diff changeset
1285 g_return_val_if_reached(g_strdup(""));
36026
ee9d95cb8ee6 Fix coverity log_reader issues
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36008
diff changeset
1286 }
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
1287 data->length = fread(read, 1, data->length, file);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1288 fclose(file);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1289
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1290 if (read[data->length-1] == '\n') {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1291 read[data->length] = '\0';
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1292 } else {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1293 read[data->length] = '\n';
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1294 read[data->length+1] = '\0';
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1295 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1296
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1297 /* Load miscellaneous data. */
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34699
diff changeset
1298 buddy = purple_blist_find_buddy(log->account, log->name);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1299
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1300 escaped = g_markup_escape_text(read, -1);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1301 g_free(read);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1302 read = escaped;
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 /* Apply formatting... */
17640
e991110a1e71 Size the formatting string first, to avoid unnecessary resizing.
Richard Laager <rlaager@pidgin.im>
parents: 17639
diff changeset
1305 formatted = g_string_sized_new(strlen(read));
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1306 c = read;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1307 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
1308 while (c)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1309 {
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1310 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
1311 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
1312 GString *temp = NULL;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1313
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
1314 /* 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
1315 * 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
1316 */
31980
4fbc64ec98a5 log_reader: strchr(), and some simplifying to make clang happier
Paul Aurich <darkrain42@pidgin.im>
parents: 31294
diff changeset
1317 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
1318 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
1319 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
1320
31980
4fbc64ec98a5 log_reader: strchr(), and some simplifying to make clang happier
Paul Aurich <darkrain42@pidgin.im>
parents: 31294
diff changeset
1321 *c = '\0';
4fbc64ec98a5 log_reader: strchr(), and some simplifying to make clang happier
Paul Aurich <darkrain42@pidgin.im>
parents: 31294
diff changeset
1322 c++;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1323
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1324 /* Convert links.
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1325 *
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1326 * 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
1327 * 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
1328 * <a href="
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1329 * 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
1330 * ">
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1331 * 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
1332 * </a>
18515
2a028601289a Remove trailing whitespace.
Richard Laager <rlaager@pidgin.im>
parents: 18514
diff changeset
1333 *
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1334 * 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
1335 */
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1336 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
1337 {
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1338 const char *tmp = link;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1339
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1340 link += 7;
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1341 if (*link)
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1342 {
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1343 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
1344 char *space;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1345
31980
4fbc64ec98a5 log_reader: strchr(), and some simplifying to make clang happier
Paul Aurich <darkrain42@pidgin.im>
parents: 31294
diff changeset
1346 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
1347 {
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1348 /* 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
1349 break;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1350 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1351
17642
c0409038fd04 Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@pidgin.im>
parents: 17641
diff changeset
1352 if (!temp)
31980
4fbc64ec98a5 log_reader: strchr(), and some simplifying to make clang happier
Paul Aurich <darkrain42@pidgin.im>
parents: 31294
diff changeset
1353 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
1354
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1355 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
1356
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1357 /* 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
1358 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
1359
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1360 /* 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
1361 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
1362
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1363 /* 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
1364 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
1365
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1366 /* 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
1367 * 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
1368 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
1369 {
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1370 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
1371
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1372 /* 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
1373 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
1374
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1375 space++;
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1376 }
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1377 else
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1378 {
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1379 /* 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
1380 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
1381 /* 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
1382 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
1383 }
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1384 line = space;
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1385 }
17641
03a8f532c3cf Bail out to avoid an infinite loop in an extreme corner case.
Richard Laager <rlaager@pidgin.im>
parents: 17640
diff changeset
1386 else
03a8f532c3cf Bail out to avoid an infinite loop in an extreme corner case.
Richard Laager <rlaager@pidgin.im>
parents: 17640
diff changeset
1387 {
03a8f532c3cf Bail out to avoid an infinite loop in an extreme corner case.
Richard Laager <rlaager@pidgin.im>
parents: 17640
diff changeset
1388 /* 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
1389 break;
03a8f532c3cf Bail out to avoid an infinite loop in an extreme corner case.
Richard Laager <rlaager@pidgin.im>
parents: 17640
diff changeset
1390 }
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1391 }
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1392
17642
c0409038fd04 Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@pidgin.im>
parents: 17641
diff changeset
1393 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
1394 {
c0409038fd04 Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@pidgin.im>
parents: 17641
diff changeset
1395 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
1396 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
1397 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
1398 }
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1399
35992
34a67264df99 Fix some CWE-476 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
1400 if (line && *line == '[') {
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1401 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
1402
31980
4fbc64ec98a5 log_reader: strchr(), and some simplifying to make clang happier
Paul Aurich <darkrain42@pidgin.im>
parents: 31294
diff changeset
1403 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
1404 line++;
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1405 /* 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
1406 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
1407 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
1408 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
1409 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
1410 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
1411 line++;
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1412 }
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1413
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
1414 if (g_str_has_prefix(line, "*** ")) {
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1415 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
1416 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
1417 footer = "</b>";
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
1418 if (g_str_has_prefix(line, "NOTE: This user is offline.")) {
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1419 line = _("User is offline.");
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
1420 } else if (g_str_has_prefix(
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
1421 line,
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
1422 "NOTE: Your status is currently set to ")) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1423
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1424 line += (sizeof("NOTE: ") - 1);
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
1425 } else if (g_str_has_prefix(line, "Auto-response sent to ")) {
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1426 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
1427 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
1428 line++;
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1429 if (*line)
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1430 line++;
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1431 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
1432 footer = NULL;
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1433 } 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
1434 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
1435
c401bbcb46e3 Simplify some of the changes. Yeah, this code sucks. I wrote it a LONG
Richard Laager <rlaager@pidgin.im>
parents: 24531
diff changeset
1436 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
1437 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
1438
c401bbcb46e3 Simplify some of the changes. Yeah, this code sucks. I wrote it a LONG
Richard Laager <rlaager@pidgin.im>
parents: 24531
diff changeset
1439 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
1440 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
1441 _("%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
1442 } else {
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1443 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
1444 _("%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
1445 }
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1446 line = "";
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1447 } 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
1448 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
1449
c401bbcb46e3 Simplify some of the changes. Yeah, this code sucks. I wrote it a LONG
Richard Laager <rlaager@pidgin.im>
parents: 24531
diff changeset
1450 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
1451 alias = purple_buddy_get_alias(buddy);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 29739
diff changeset
1452
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
1453 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
1454 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
1455 else
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1456 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
1457
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1458 line = " logged in.";
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
1459 } else if (g_str_has_prefix(line, "One or more messages may "
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
1460 "have been undeliverable.")) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1461
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1462 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
1463 "<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
1464 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
1465 _("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
1466 "undeliverable."));
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1467 line = "";
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1468 footer = "</span></b>";
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
1469 } else if (g_str_has_prefix(line,
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
1470 "You have been disconnected.")) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1471
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1472 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
1473 "<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
1474 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
1475 _("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
1476 line = "";
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1477 footer = "</span></b>";
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
1478 } else if (g_str_has_prefix(
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
1479 line, "You are currently disconnected.")) {
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1480
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1481 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
1482 "<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
1483 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
1484 "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
1485 "logged in.");
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1486 footer = "</span></b>";
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
1487 } else if (g_str_has_prefix(line, "Your previous message has "
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
1488 "not been sent.")) {
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1489
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(formatted,
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1491 "<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
1492
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
1493 if (g_str_has_prefix(
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
1494 line,
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
1495 "Your previous message has not been sent. "
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
1496 "Reason: Maximum length exceeded.")) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1497
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1498 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
1499 _("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
1500 "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
1501 line = "";
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1502 } else {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1503 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
1504 _("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
1505 line += (sizeof(
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1506 "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
1507 "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
1508 }
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1509
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1510 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
1511 }
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
1512 } else if (g_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
1513 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
1514 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
1515
c401bbcb46e3 Simplify some of the changes. Yeah, this code sucks. I wrote it a LONG
Richard Laager <rlaager@pidgin.im>
parents: 24531
diff changeset
1516 if (alias != NULL) {
24531
76e72697f7d6 Hide the blistnode, buddy, contact, group, and chat structs
Gary Kramlich <grim@reaperworld.com>
parents: 24231
diff changeset
1517 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
1518 g_string_append_printf(formatted,
76e72697f7d6 Hide the blistnode, buddy, contact, group, and chat structs
Gary Kramlich <grim@reaperworld.com>
parents: 24231
diff changeset
1519 "<span style=\"color: #A82F2F;\">"
76e72697f7d6 Hide the blistnode, buddy, contact, group, and chat structs
Gary Kramlich <grim@reaperworld.com>
parents: 24231
diff changeset
1520 "<b>%s</b></span>: ", alias);
76e72697f7d6 Hide the blistnode, buddy, contact, group, and chat structs
Gary Kramlich <grim@reaperworld.com>
parents: 24231
diff changeset
1521 }
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1522 }
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1523 } else {
31980
4fbc64ec98a5 log_reader: strchr(), and some simplifying to make clang happier
Paul Aurich <darkrain42@pidgin.im>
parents: 31294
diff changeset
1524 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
1525 if (line2) {
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1526 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
1527 line2++;
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1528 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
1529 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
1530 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
1531 acct_name = purple_account_get_username(log->account);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1532
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1533 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
1534 "<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
1535 "<b>%s</b></span>:", acct_name);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1536 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1537 }
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1538 }
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1539
35992
34a67264df99 Fix some CWE-476 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
1540 if (line)
34a67264df99 Fix some CWE-476 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
1541 g_string_append(formatted, line);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1542
17642
c0409038fd04 Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@pidgin.im>
parents: 17641
diff changeset
1543 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
1544 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
1545 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
1546
17639
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1547 if (footer)
6806f13652c0 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@pidgin.im>
parents: 17568
diff changeset
1548 g_string_append(formatted, footer);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1549
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
1550 g_string_append(formatted, "<br>");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1551 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1552
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1553 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
1554
f99e08c197f4 Make the Trillian logger set flags properly, and use <br> instead of \n for
Richard Laager <rlaager@pidgin.im>
parents: 18525
diff changeset
1555 /* 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
1556 * 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
1557 * 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
1558 /* 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
1559 return g_strchomp(g_string_free(formatted, FALSE));
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1560 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1561
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1562 static int trillian_logger_size (PurpleLog *log)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1563 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1564 struct trillian_logger_data *data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1565 char *text;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1566 size_t size;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1567
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1568 g_return_val_if_fail(log != NULL, 0);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1569
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1570 data = log->logger_data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1571
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
1572 if (purple_prefs_get_bool("/plugins/core/log_reader/fast_sizes")) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1573 return data ? data->length : 0;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1574 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1575
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1576 text = trillian_logger_read(log, NULL);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1577 size = strlen(text);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1578 g_free(text);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1579
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1580 return size;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1581 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1582
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
1583 static void trillian_logger_finalize(PurpleLog *log)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1584 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1585 struct trillian_logger_data *data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1586
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1587 g_return_if_fail(log != NULL);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1588
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1589 data = log->logger_data;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1590
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1591 g_free(data->path);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1592 g_free(data->their_nickname);
18513
160f45152db1 Eliminate some leaks.
Richard Laager <rlaager@pidgin.im>
parents: 18512
diff changeset
1593 g_free(data);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1594 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1595
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1596 /*****************************************************************************
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1597 * QIP Logger *
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1598 *****************************************************************************/
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1599
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1600 /* 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
1601 * QIP logs in the log viewer transparently.
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1602 */
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1603 #define QIP_LOG_DELIMITER "--------------------------------------"
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1604 #define QIP_LOG_IN_MESSAGE (QIP_LOG_DELIMITER "<-")
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1605 #define QIP_LOG_OUT_MESSAGE (QIP_LOG_DELIMITER ">-")
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1606 #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
1607 #define QIP_LOG_OUT_MESSAGE_ESC (QIP_LOG_DELIMITER "&gt;-")
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
1608 #define QIP_LOG_TIMEOUT (G_TIME_SPAN_HOUR)
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1609
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1610 static PurpleLogLogger *qip_logger;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1611
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1612 struct qip_logger_data {
18515
2a028601289a Remove trailing whitespace.
Richard Laager <rlaager@pidgin.im>
parents: 18514
diff changeset
1613
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1614 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
1615 int offset;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1616 int length;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1617 };
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1618
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1619 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
1620 {
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1621 GList *list = NULL;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1622 const char *logdir;
36544
1bf8b6ef5aea Renamed PurplePluginProtocolInfo to PurpleProtocol
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
1623 PurpleProtocol *protocol;
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1624 char *username;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1625 char *filename;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1626 char *path;
18518
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1627 char *contents;
18514
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1628 struct qip_logger_data *data = NULL;
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
1629 GDateTime *prev_dt = NULL;
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
1630 GDateTime *dt = NULL;
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
1631 gint year, month, day, hour, minute, second;
18521
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1632 gboolean main_cycle = TRUE;
18514
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1633 char *c;
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1634 char *start_log;
24231
6907b62f25fe Warnings cleanup from Lee Roach. Fixes #6242.
Daniel Atallah <datallah@pidgin.im>
parents: 22979
diff changeset
1635 char *new_line = NULL;
18514
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1636 int offset = 0;
18522
dbf8b610712a optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18521
diff changeset
1637 GError *error;
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1638
19090
f14418fec130 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <datallah@pidgin.im>
parents: 19080
diff changeset
1639 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
1640 g_return_val_if_fail(account != NULL, NULL);
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1641
18514
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1642 /* QIP only supports ICQ. */
38358
30ba44276e74 Merge release-2.x.y into default
dx <dx@dxzone.com.ar>
parents: 37205 38259
diff changeset
1643 if (!purple_strequal(purple_account_get_protocol_id(account), "prpl-icq"))
19090
f14418fec130 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <datallah@pidgin.im>
parents: 19080
diff changeset
1644 return NULL;
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1645
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1646 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
1647
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1648 /* 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
1649 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
1650 return NULL;
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1651
36746
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
1652 protocol = purple_protocols_find(purple_account_get_protocol_id(account));
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
1653 if (!protocol)
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1654 return NULL;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1655
32215
0a4e72c8a67e Use accessor functions in a few places
Mark Doliner <markdoliner@pidgin.im>
parents: 31984
diff changeset
1656 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
1657 filename = g_strdup_printf("%s.txt", purple_normalize(account, sn));
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1658 path = g_build_filename(logdir, username, "History", filename, NULL);
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1659 g_free(username);
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1660 g_free(filename);
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1661
18522
dbf8b610712a optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18521
diff changeset
1662 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
1663
dbf8b610712a optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18521
diff changeset
1664 error = NULL;
dbf8b610712a optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18521
diff changeset
1665 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
1666 purple_debug_error("QIP logger",
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
1667 "Couldn't read file %s: %s \n", path,
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
1668 (error && error->message) ? error->message : "Unknown error");
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
1669 if (error)
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
1670 g_error_free(error);
18514
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1671 g_free(path);
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1672 return list;
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1673 }
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1674
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1675 c = contents;
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1676 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
1677 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
1678
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1679 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
1680
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
1681 if (c && *c) {
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
1682 if (g_str_has_prefix(c, QIP_LOG_IN_MESSAGE) ||
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
1683 g_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
1684
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1685 char *tmp;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 29739
diff changeset
1686
18521
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1687 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
1688
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1689 /* find EOL */
31980
4fbc64ec98a5 log_reader: strchr(), and some simplifying to make clang happier
Paul Aurich <darkrain42@pidgin.im>
parents: 31294
diff changeset
1690 c = strchr(c, '\n');
35992
34a67264df99 Fix some CWE-476 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
1691 if (c)
34a67264df99 Fix some CWE-476 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
1692 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
1693
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1694 /* Find the last '(' character. */
36008
b94a61dfd064 Backport c1a41f0d1916
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35992
diff changeset
1695 if (!c) {
b94a61dfd064 Backport c1a41f0d1916
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35992
diff changeset
1696 /* do nothing */
b94a61dfd064 Backport c1a41f0d1916
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35992
diff changeset
1697 } else 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
1698 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
1699 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
1700 } else {
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1701 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
1702 c++;
36026
ee9d95cb8ee6 Fix coverity log_reader issues
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36008
diff changeset
1703 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
1704 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
1705 }
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1706
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1707 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
1708 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
1709
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1710 /* 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
1711 if (sscanf(timestamp, "%u:%u:%u %u/%u/%u",
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
1712 &hour, &minute, &second,
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
1713 &day, &month, &year) != 6) {
18514
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1714
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1715 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
1716 "Parsing timestamp error\n");
18514
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1717 } else {
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
1718 g_date_time_unref(dt);
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
1719 dt = g_date_time_new_local(year, month, day, hour, minute, second);
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
1720 if (!prev_dt) {
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
1721 prev_dt = dt;
18521
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1722 } else {
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
1723 add_new_log = g_date_time_difference(dt, prev_dt) > 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
1724 }
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
1725 }
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
1726 }
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
1727 }
18514
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1728 } 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
1729 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
1730 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
1731 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
1732 }
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1733
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1734 /* adding log */
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
1735 if (add_new_log && prev_dt) {
18521
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1736 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
1737
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1738 /* 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
1739 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
1740 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
1741 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
1742 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
1743 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
1744 purple_debug_info("QIP logger list",
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 29739
diff changeset
1745 "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
1746 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
1747
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
1748 /* XXX: Look into this later... Should we figure out a timezone? */
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
1749 dt = g_date_time_new_local(year, month, day, hour, minute, second);
18521
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1750 log = purple_log_new(PURPLE_LOG_IM, sn, account,
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
1751 NULL, prev_dt);
18521
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1752
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1753 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
1754 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
1755
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1756 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
1757
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
1758 g_date_time_unref(prev_dt);
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
1759 prev_dt = dt;
18521
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1760 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
1761 }
88a85456ae56 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18520
diff changeset
1762
31982
c63531b35666 log_reader: Fix an actual crash in the QIP reader.
Paul Aurich <darkrain42@pidgin.im>
parents: 31980
diff changeset
1763 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
1764 /* 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
1765 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
1766 c++;
18505
dca6960014b8 Converting all qip logs into UTF8
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18504
diff changeset
1767 }
18514
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1768 }
18515
2a028601289a Remove trailing whitespace.
Richard Laager <rlaager@pidgin.im>
parents: 18514
diff changeset
1769
18514
8732891045fc Avoid some extra nesting.
Richard Laager <rlaager@pidgin.im>
parents: 18513
diff changeset
1770 g_free(contents);
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1771 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
1772 return g_list_reverse(list);
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1773 }
18515
2a028601289a Remove trailing whitespace.
Richard Laager <rlaager@pidgin.im>
parents: 18514
diff changeset
1774
18518
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1775 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
1776 {
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1777 struct qip_logger_data *data;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1778 PurpleBuddy *buddy;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1779 GString *formatted;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1780 char *c;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1781 const char *line;
18518
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1782 gchar *contents;
18522
dbf8b610712a optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18521
diff changeset
1783 GError *error;
dbf8b610712a optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18521
diff changeset
1784 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
1785 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
1786
19090
f14418fec130 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <datallah@pidgin.im>
parents: 19080
diff changeset
1787 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
1788 *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
1789
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1790 g_return_val_if_fail(log != NULL, g_strdup(""));
18515
2a028601289a Remove trailing whitespace.
Richard Laager <rlaager@pidgin.im>
parents: 18514
diff changeset
1791
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1792 data = log->logger_data;
18515
2a028601289a Remove trailing whitespace.
Richard Laager <rlaager@pidgin.im>
parents: 18514
diff changeset
1793
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1794 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
1795 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
1796
18523
121b16df5e05 reading only necessary part of log file using g_fopen/fseek/fread
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18522
diff changeset
1797 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
1798 g_return_val_if_fail(file != NULL, g_strdup(""));
20224
d4b827c606db applied changes from 4d50bf3b08569aa2108a9f5da47fb1548d0c7dd9
Luke Schierer <lschiere@pidgin.im>
parents: 20221
diff changeset
1799
d4b827c606db applied changes from 4d50bf3b08569aa2108a9f5da47fb1548d0c7dd9
Luke Schierer <lschiere@pidgin.im>
parents: 20221
diff changeset
1800 contents = g_malloc(data->length + 2);
d4b827c606db applied changes from 4d50bf3b08569aa2108a9f5da47fb1548d0c7dd9
Luke Schierer <lschiere@pidgin.im>
parents: 20221
diff changeset
1801
36026
ee9d95cb8ee6 Fix coverity log_reader issues
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36008
diff changeset
1802 if (fseek(file, data->offset, SEEK_SET) != 0) {
ee9d95cb8ee6 Fix coverity log_reader issues
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36008
diff changeset
1803 fclose(file);
ee9d95cb8ee6 Fix coverity log_reader issues
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36008
diff changeset
1804 g_free(contents);
35991
e6937e52930b Fix some CWE-252 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35968
diff changeset
1805 g_return_val_if_reached(g_strdup(""));
36026
ee9d95cb8ee6 Fix coverity log_reader issues
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36008
diff changeset
1806 }
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
1807 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
1808 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
1809
121b16df5e05 reading only necessary part of log file using g_fopen/fseek/fread
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18522
diff changeset
1810 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
1811 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
1812
dbf8b610712a optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18521
diff changeset
1813 /* 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
1814 error = NULL;
dbf8b610712a optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18521
diff changeset
1815 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
1816 purple_debug_error("QIP logger",
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
1817 "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
1818 (error && error->message) ? error->message : "Unknown error");
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
1819 if (error)
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
1820 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
1821 g_free(contents);
dbf8b610712a optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18521
diff changeset
1822 return g_strdup("");
dbf8b610712a optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18521
diff changeset
1823 }
18518
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1824
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1825 g_free(contents);
18522
dbf8b610712a optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18521
diff changeset
1826 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
1827 g_free(utf8_string);
dbf8b610712a optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18521
diff changeset
1828
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34699
diff changeset
1829 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
1830
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1831 /* Apply formatting... */
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1832 formatted = g_string_sized_new(data->length + 2);
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1833 c = contents;
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1834 line = contents;
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1835
24646
cc1cc6c659d3 Fix CID #367
Richard Laager <rlaager@pidgin.im>
parents: 24534
diff changeset
1836 while (c && *c) {
18518
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1837 gboolean is_in_message = FALSE;
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1838
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
1839 if (g_str_has_prefix(line, QIP_LOG_IN_MESSAGE_ESC) ||
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
1840 g_str_has_prefix(line, QIP_LOG_OUT_MESSAGE_ESC)) {
18518
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1841
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1842 char *tmp;
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1843
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
1844 is_in_message = g_str_has_prefix(line, QIP_LOG_IN_MESSAGE_ESC);
18518
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1845
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1846 /* find EOL */
31980
4fbc64ec98a5 log_reader: strchr(), and some simplifying to make clang happier
Paul Aurich <darkrain42@pidgin.im>
parents: 31294
diff changeset
1847 c = strchr(c, '\n');
36029
cd7db320cf5c Fix coverity regression warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36026
diff changeset
1848 if (!c)
cd7db320cf5c Fix coverity regression warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36026
diff changeset
1849 break;
18518
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1850
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1851 /* 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
1852 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
1853 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
1854 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
1855 } else {
18518
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1856 while (*c)
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1857 c++;
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1858 c--;
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1859 c = g_strrstr(c, "(");
18505
dca6960014b8 Converting all qip logs into UTF8
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18504
diff changeset
1860 }
18518
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1861
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1862 if (c != NULL) {
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1863 const char *timestamp = c;
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1864 int hour;
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1865 int min;
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1866 int sec;
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1867
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1868 timestamp++;
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1869
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1870 /* Parse the time, day, month and year */
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1871 if (sscanf(timestamp, "%u:%u:%u",
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1872 &hour, &min, &sec) != 3) {
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1873 purple_debug_error("QIP logger read",
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1874 "Parsing timestamp error\n");
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1875 } else {
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1876 g_string_append(formatted, "<font size=\"2\">");
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1877 /* 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
1878 g_string_append_printf(formatted,
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1879 "(%u:%02u:%02u) %cM ", hour % 12,
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1880 min, sec, (hour >= 12) ? 'P': 'A');
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1881 g_string_append(formatted, "</font> ");
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1882
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1883 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
1884 const char *alias = NULL;
24531
76e72697f7d6 Hide the blistnode, buddy, contact, group, and chat structs
Gary Kramlich <grim@reaperworld.com>
parents: 24231
diff changeset
1885
39913
ce96d4639dc7 Remove redundant conditions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39468
diff changeset
1886 if (buddy != NULL &&
ce96d4639dc7 Remove redundant conditions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39468
diff changeset
1887 (alias = purple_buddy_get_alias(buddy))) {
18518
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1888 g_string_append_printf(formatted,
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1889 "<span style=\"color: #A82F2F;\">"
24531
76e72697f7d6 Hide the blistnode, buddy, contact, group, and chat structs
Gary Kramlich <grim@reaperworld.com>
parents: 24231
diff changeset
1890 "<b>%s</b></span>: ", alias);
18518
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1891 }
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1892 } else {
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1893 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
1894 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
1895 if (!acct_name)
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1896 acct_name = purple_account_get_username(log->account);
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1897
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1898 g_string_append_printf(formatted,
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1899 "<span style=\"color: #16569E;\">"
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1900 "<b>%s</b></span>: ", acct_name);
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1901 }
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1902
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1903 /* find EOF */
31980
4fbc64ec98a5 log_reader: strchr(), and some simplifying to make clang happier
Paul Aurich <darkrain42@pidgin.im>
parents: 31294
diff changeset
1904 c = strchr(c, '\n');
35992
34a67264df99 Fix some CWE-476 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
1905 if (c)
34a67264df99 Fix some CWE-476 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
1906 c++;
34a67264df99 Fix some CWE-476 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
1907 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
1908 }
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1909 }
18518
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1910 } else {
31980
4fbc64ec98a5 log_reader: strchr(), and some simplifying to make clang happier
Paul Aurich <darkrain42@pidgin.im>
parents: 31294
diff changeset
1911 if ((c = strchr(c, '\n')))
18518
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1912 *c = '\0';
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1913
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1914 if (line[0] != '\n' && line[0] != '\r') {
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1915
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1916 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
1917 g_string_append(formatted, "<br>");
18518
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1918 }
20224
d4b827c606db applied changes from 4d50bf3b08569aa2108a9f5da47fb1548d0c7dd9
Luke Schierer <lschiere@pidgin.im>
parents: 20221
diff changeset
1919
d4b827c606db applied changes from 4d50bf3b08569aa2108a9f5da47fb1548d0c7dd9
Luke Schierer <lschiere@pidgin.im>
parents: 20221
diff changeset
1920 if (c)
d4b827c606db applied changes from 4d50bf3b08569aa2108a9f5da47fb1548d0c7dd9
Luke Schierer <lschiere@pidgin.im>
parents: 20221
diff changeset
1921 line = ++c;
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1922 }
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1923 }
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
1924 g_free(contents);
18518
e634b818b474 Optimize this QIP code some more.
Richard Laager <rlaager@pidgin.im>
parents: 18517
diff changeset
1925
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1926 /* XXX: TODO: Avoid this g_strchomp() */
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1927 return g_strchomp(g_string_free(formatted, FALSE));
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1928 }
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1929
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1930 static int qip_logger_size (PurpleLog *log)
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1931 {
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1932 struct qip_logger_data *data;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1933 char *text;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1934 size_t size;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1935
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1936 g_return_val_if_fail(log != NULL, 0);
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1937
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1938 data = log->logger_data;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1939
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1940 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
1941 return data ? data->length : 0;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1942 }
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1943
18515
2a028601289a Remove trailing whitespace.
Richard Laager <rlaager@pidgin.im>
parents: 18514
diff changeset
1944 text = qip_logger_read(log, NULL);
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1945 size = strlen(text);
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1946 g_free(text);
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1947
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1948 return size;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1949 }
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1950
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1951 static void qip_logger_finalize(PurpleLog *log)
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1952 {
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1953 struct qip_logger_data *data;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1954
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1955 g_return_if_fail(log != NULL);
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1956
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1957 data = log->logger_data;
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1958
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1959 g_free(data->path);
18513
160f45152db1 Eliminate some leaks.
Richard Laager <rlaager@pidgin.im>
parents: 18512
diff changeset
1960 g_free(data);
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
1961 }
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
1962
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
1963 /*************************************************************************
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
1964 * 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
1965 *************************************************************************/
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
1966
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
1967 /* 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
1968 * 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
1969 */
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
1970
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
1971 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
1972
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
1973 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
1974 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
1975 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
1976 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
1977 };
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
1978
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
1979 #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
1980 #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
1981 #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
1982
20996
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
1983 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
1984 {
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
1985 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
1986 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
1987 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
1988 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
1989 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
1990
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
1991 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
1992 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
1993 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
1994 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
1995 "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
1996 (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
1997 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
1998 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
1999 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
2000 } else {
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2001 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
2002 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
2003 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
2004 int offset = 0;
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
2005 gint year, month, day, hour, minute, second;
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
2006 GDateTime *dt;
20996
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2007 while (c && *c) {
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
2008 if (g_str_has_prefix(c, AMSN_LOG_CONV_START)) {
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
2009 char month_str[4];
20996
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2010 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
2011 "%u %3s %u %u:%u:%u",
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
2012 &day, (char*)&month_str, &year,
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
2013 &hour, &minute, &second) != 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
2014 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
2015 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
2016 "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
2017 filename);
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2018 } else {
40171
564fcabca6d9 Rename purple_get_month -> purple_time_parse_month
qarkai <qarkai@gmail.com>
parents: 40170
diff changeset
2019 month = purple_time_parse_month(month_str);
20996
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2020
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2021 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
2022 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
2023 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
2024 }
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
2025 } else if (g_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
2026 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
2027 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
2028 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
2029 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
2030 + 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
2031 + strlen(AMSN_LOG_CONV_EXTRA);
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
2032 dt = g_date_time_new_local(year, month, day, hour, minute, second);
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
2033 log = purple_log_new(PURPLE_LOG_IM, sn, account, NULL, dt);
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
2034 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
2035 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
2036 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
2037 found_start = FALSE;
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
2038 g_date_time_unref(dt);
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
2039
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
2040 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
2041 "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
2042 " 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
2043 " 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
2044 " 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
2045 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
2046 }
31980
4fbc64ec98a5 log_reader: strchr(), and some simplifying to make clang happier
Paul Aurich <darkrain42@pidgin.im>
parents: 31294
diff changeset
2047 c = strchr(c, '\n');
35992
34a67264df99 Fix some CWE-476 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
2048 if (c)
34a67264df99 Fix some CWE-476 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
2049 c++;
20996
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2050 }
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2051
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2052 /* 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
2053 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
2054 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
2055 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
2056 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
2057 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
2058 + 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
2059 + strlen(AMSN_LOG_CONV_EXTRA);
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
2060 dt = g_date_time_new_local(year, month, day, hour, minute, second);
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
2061 log = purple_log_new(PURPLE_LOG_IM, sn, account, NULL, dt);
20996
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2062 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
2063 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
2064 list = g_list_prepend(list, log);
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
2065 g_date_time_unref(dt);
20996
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2066
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2067 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
2068 "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
2069 " 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
2070 " 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
2071 " 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
2072 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
2073 }
20996
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2074 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
2075 }
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2076
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2077 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
2078 }
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2079
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2080 /* `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
2081 /* `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
2082 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
2083 {
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2084 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
2085 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
2086 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
2087 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
2088 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
2089 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
2090 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
2091 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
2092
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2093 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
2094
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2095 /* 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
2096 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
2097 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
2098
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2099 /* aMSN only works with MSN/WLM */
38358
30ba44276e74 Merge release-2.x.y into default
dx <dx@dxzone.com.ar>
parents: 37205 38259
diff changeset
2100 if (!purple_strequal(purple_account_get_protocol_id(account), "prpl-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
2101 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
2102
32215
0a4e72c8a67e Use accessor functions in a few places
Mark Doliner <markdoliner@pidgin.im>
parents: 31984
diff changeset
2103 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
2104 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
2105 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
2106
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2107 /* 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
2108 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
2109 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
2110 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
2111 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
2112 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
2113
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2114 /* 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
2115 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
2116 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
2117 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
2118 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
2119 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
2120 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
2121 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
2122 }
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2123 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
2124 }
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
2125
20996
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2126 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
2127
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2128 /* 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
2129 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
2130 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
2131
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2132 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
2133
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2134 /* 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
2135 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
2136 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
2137 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
2138 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
2139
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2140 /* 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
2141 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
2142 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
2143 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
2144 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
2145 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
2146 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
2147 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
2148 }
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2149 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
2150 }
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2151
1a6e2dd87657 A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@pidgin.im>
parents: 20986
diff changeset
2152 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
2153 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
2154 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
2155
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
2156 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
2157 }
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
2158
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
2159 /* 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
2160 #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
2161
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 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
2163 {
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 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
2165 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
2166 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
2167 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
2168 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
2169 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
2170 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
2171
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 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
2173 *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
2174
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 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
2176
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 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
2178
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 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
2180 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
2181
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 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
2183 g_return_val_if_fail(file != NULL, g_strdup(""));
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 29739
diff changeset
2184
36026
ee9d95cb8ee6 Fix coverity log_reader issues
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36008
diff changeset
2185 contents = g_malloc(data->length + 2);
ee9d95cb8ee6 Fix coverity log_reader issues
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36008
diff changeset
2186
ee9d95cb8ee6 Fix coverity log_reader issues
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36008
diff changeset
2187 if (fseek(file, data->offset, SEEK_SET) != 0) {
ee9d95cb8ee6 Fix coverity log_reader issues
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36008
diff changeset
2188 fclose(file);
39916
6a79856cb8f5 Fix inconsistent malloc/free calls.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
2189 g_free(contents);
35991
e6937e52930b Fix some CWE-252 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35968
diff changeset
2190 g_return_val_if_reached(g_strdup(""));
36026
ee9d95cb8ee6 Fix coverity log_reader issues
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36008
diff changeset
2191 }
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
2192 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
2193 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
2194
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
2195 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
2196 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
2197
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
2198 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
2199 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
2200 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
2201
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
2202 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
2203
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
2204 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
2205 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
2206 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
2207 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
2208 char *tag;
31980
4fbc64ec98a5 log_reader: strchr(), and some simplifying to make clang happier
Paul Aurich <darkrain42@pidgin.im>
parents: 31294
diff changeset
2209 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
2210 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
2211 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
2212 *end = '\0';
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
2213 if (g_str_has_prefix(start, AMSN_LOG_FORMAT_TAG) && in_span) {
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
2214 /* 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
2215 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
2216 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
2217 } 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
2218 /* 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
2219 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
2220 }
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
2221 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
2222 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
2223 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
2224 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
2225 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
2226 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
2227 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
2228 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
2229 }
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
2230 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
2231 /* |"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
2232 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
2233 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
2234 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
2235 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
2236 /* 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
2237 /* 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
2238 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
2239 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
2240 } 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
2241 /* |"Lxxx is a 3-digit colour code */
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
2242 if (g_str_has_prefix(tag, "RED")) {
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
2243 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
2244 in_span = TRUE;
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
2245 } else if (g_str_has_prefix(tag, "GRA")) {
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
2246 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
2247 in_span = TRUE;
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
2248 } else if (g_str_has_prefix(tag, "NOR")) {
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
2249 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
2250 in_span = TRUE;
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
2251 } else if (g_str_has_prefix(tag, "ITA")) {
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
2252 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
2253 in_span = TRUE;
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
2254 } else if (g_str_has_prefix(tag, "GRE")) {
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
2255 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
2256 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
2257 } 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
2258 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
2259 }
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
2260 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
2261 }
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
2262 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
2263 }
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
2264 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
2265 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
2266 }
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
2267 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
2268 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
2269
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
2270 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
2271
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
2272 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
2273 }
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
2274
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
2275 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
2276 {
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
2277 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
2278 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
2279 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
2280
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
2281 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
2282
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
2283 data = log->logger_data;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 29739
diff changeset
2284
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
2285 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
2286 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
2287 }
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 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
2290 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
2291 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
2292
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 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
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
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 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
2297 {
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 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
2299
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 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
2301
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 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
2303 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
2304 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
2305 }
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
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2307 /*****************************************************************************
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2308 * Plugin Code *
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2309 *****************************************************************************/
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2310
22104
56970903b8e9 Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents: 21106
diff changeset
2311 static void log_reader_init_prefs(void) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2312 char *path;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2313 #ifdef _WIN32
35114
b833eaa6c76f Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35045
diff changeset
2314 const gchar *reg_key;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2315 char *folder;
14334
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2316 gboolean found = FALSE;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2317 #endif
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2318
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
2319 purple_prefs_add_none("/plugins/core/log_reader");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2320
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2321
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2322 /* Add general preferences. */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2323
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
2324 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
2325 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
2326
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2327
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2328 /* Add Adium log directory preference. */
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
2329 purple_prefs_add_none("/plugins/core/log_reader/adium");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2330
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2331 /* Calculate default Adium log directory. */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2332 #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
2333 purple_prefs_add_string("/plugins/core/log_reader/adium/log_directory", "");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2334 #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
2335 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
2336 "Adium 2.0", "Users", "Default", "Logs", NULL);
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
2337 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
2338 g_free(path);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2339 #endif
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2340
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2341
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2342 /* Add Fire log directory preference. */
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
2343 purple_prefs_add_none("/plugins/core/log_reader/fire");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2344
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2345 /* Calculate default Fire log directory. */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2346 #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
2347 purple_prefs_add_string("/plugins/core/log_reader/fire/log_directory", "");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2348 #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
2349 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
2350 "Fire", "Sessions", NULL);
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
2351 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
2352 g_free(path);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2353 #endif
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2354
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2355
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2356 /* Add Messenger Plus! log directory preference. */
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
2357 purple_prefs_add_none("/plugins/core/log_reader/messenger_plus");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2358
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2359 /* Calculate default Messenger Plus! log directory. */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2360 #ifdef _WIN32
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2361 path = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2362 folder = wpurple_get_special_folder(CSIDL_PERSONAL);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2363 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
2364 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
2365 g_free(folder);
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2366 }
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2367 #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
2368 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
2369 "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
2370 "My Documents", "My Chat Logs", NULL);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2371 #endif
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2372 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
2373 g_free(path);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2374
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2375
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2376 /* Add MSN Messenger log directory preference. */
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
2377 purple_prefs_add_none("/plugins/core/log_reader/msn");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2378
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2379 /* Calculate default MSN message history directory. */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2380 #ifdef _WIN32
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2381 path = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2382 folder = wpurple_get_special_folder(CSIDL_PERSONAL);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2383 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
2384 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
2385 g_free(folder);
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2386 }
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2387 #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
2388 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
2389 "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
2390 "My Documents", "My Received Files", NULL);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2391 #endif
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2392 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
2393 g_free(path);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2394
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2395
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2396 /* Add Trillian log directory preference. */
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
2397 purple_prefs_add_none("/plugins/core/log_reader/trillian");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2398
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2399 #ifdef _WIN32
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2400 /* 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
2401 * think of to determine the Trillian installation directory.
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2402 */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2403
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2404 path = NULL;
35114
b833eaa6c76f Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35045
diff changeset
2405 folder = NULL;
b833eaa6c76f Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35045
diff changeset
2406 reg_key = "Trillian.SkinZip\\shell\\Add\\command\\";
b833eaa6c76f Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35045
diff changeset
2407 if (wpurple_reg_val_exists(HKEY_CLASSES_ROOT, reg_key, NULL))
b833eaa6c76f Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35045
diff changeset
2408 folder = wpurple_read_reg_string(HKEY_CLASSES_ROOT, reg_key, NULL);
b833eaa6c76f Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35045
diff changeset
2409 if (folder) {
14334
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2410 char *value = folder;
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2411 char *temp;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2412
14334
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2413 /* Break apart buffer. */
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2414 if (*value == '"') {
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2415 value++;
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2416 temp = value;
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2417 while (*temp && *temp != '"')
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2418 temp++;
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2419 } else {
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2420 temp = value;
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2421 while (*temp && *temp != ' ')
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2422 temp++;
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2423 }
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2424 *temp = '\0';
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2425
14334
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2426 /* Set path. */
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
2427 if (g_str_has_suffix(value, "trillian.exe")) {
14334
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2428 value[strlen(value) - (sizeof("trillian.exe") - 1)] = '\0';
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2429 path = g_build_filename(value, "users", "default", "talk.ini", NULL);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2430 }
14334
aec64dbd9564 [gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents: 14297
diff changeset
2431 g_free(folder);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2432 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2433
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2434 if (!path) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2435 char *folder = wpurple_get_special_folder(CSIDL_PROGRAM_FILES);
14139
22ee84e0002b [gaim-migrate @ 16698]
Daniel Atallah <datallah@pidgin.im>
parents: 14097
diff changeset
2436 if (folder) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2437 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
2438 "users", "default", "talk.ini", NULL);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2439 g_free(folder);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2440 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2441 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2442
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2443 if (path) {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2444 /* Read talk.ini file to find the log directory. */
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2445 GError *error = NULL;
14139
22ee84e0002b [gaim-migrate @ 16698]
Daniel Atallah <datallah@pidgin.im>
parents: 14097
diff changeset
2446 gchar *contents = NULL;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2447
35114
b833eaa6c76f Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35045
diff changeset
2448 if (g_file_test(path, G_FILE_TEST_IS_REGULAR)) {
b833eaa6c76f Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35045
diff changeset
2449 purple_debug_info("Trillian talk.ini read",
b833eaa6c76f Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35045
diff changeset
2450 "Reading %s\n", path);
b833eaa6c76f Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35045
diff changeset
2451 } else {
b833eaa6c76f Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35045
diff changeset
2452 g_free(path);
b833eaa6c76f Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35045
diff changeset
2453 path = NULL;
b833eaa6c76f Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35045
diff changeset
2454 }
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38358
diff changeset
2455
35114
b833eaa6c76f Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35045
diff changeset
2456 if (path && !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
2457 purple_debug_error("Trillian talk.ini read",
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2458 "Error reading talk.ini: %s\n",
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2459 (error && error->message) ? error->message : "Unknown error");
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2460 if (error)
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2461 g_error_free(error);
35114
b833eaa6c76f Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35045
diff changeset
2462 } else if (contents) {
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2463 char *cursor, *line;
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2464 line = cursor = contents;
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2465 while (*cursor) {
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2466 if (*cursor == '\n') {
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2467 *cursor = '\0';
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2468
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2469 /* XXX: This assumes the first Directory key is under [Logging]. */
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39959
diff changeset
2470 if (g_str_has_prefix(line, "Directory=")) {
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2471 line += (sizeof("Directory=") - 1);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2472 g_strchomp(line);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2473 purple_prefs_add_string(
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
2474 "/plugins/core/log_reader/trillian/log_directory",
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2475 line);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2476 found = TRUE;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2477 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2478
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2479 cursor++;
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2480 line = cursor;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2481 } else
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2482 cursor++;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2483 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2484 g_free(contents);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2485 }
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2486 g_free(path);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2487 } /* path */
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 if (!found) {
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2490 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
2491 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
2492 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
2493 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
2494 "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
2495 g_free(folder);
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2496 }
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2497
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2498 purple_prefs_add_string(
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2499 "/plugins/core/log_reader/trillian/log_directory", path ? path : "");
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2500 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
2501 }
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 #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
2503 /* 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
2504 * 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
2505 * TODO: Windows mount point. */
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2506
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2507 /* 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
2508 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
2509 "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
2510 "default", "logs", NULL);
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2511 purple_prefs_add_string(
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2512 "/plugins/core/log_reader/trillian/log_directory", path);
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2513 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
2514 #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
2515
27874b1300c9 Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@pidgin.im>
parents: 18516
diff changeset
2516 /* 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
2517 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
2518
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 /* Calculate default QIP log directory. */
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2520 #ifdef _WIN32
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2521 path = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2522 folder = wpurple_get_special_folder(CSIDL_PROGRAM_FILES);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2523 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
2524 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
2525 g_free(folder);
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2526 }
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2527 #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
2528 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
2529 "Program Files", "QIP", "Users", NULL);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2530 #endif
20221
28e31ee832cd applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20211
diff changeset
2531 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
2532 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
2533
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
2534 /* 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
2535 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
2536
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
2537 /* 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
2538 #ifdef _WIN32
21005
db7d98d01c24 Leak fix.
Daniel Atallah <datallah@pidgin.im>
parents: 20996
diff changeset
2539 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
2540 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
2541 if (folder) {
db7d98d01c24 Leak fix.
Daniel Atallah <datallah@pidgin.im>
parents: 20996
diff changeset
2542 path = g_build_filename(folder, "amsn", NULL);
db7d98d01c24 Leak fix.
Daniel Atallah <datallah@pidgin.im>
parents: 20996
diff changeset
2543 g_free(folder);
db7d98d01c24 Leak fix.
Daniel Atallah <datallah@pidgin.im>
parents: 20996
diff changeset
2544 }
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
2545 #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
2546 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
2547 #endif
21005
db7d98d01c24 Leak fix.
Daniel Atallah <datallah@pidgin.im>
parents: 20996
diff changeset
2548 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
2549 g_free(path);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2550 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2551
36746
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2552 static PurplePluginPrefFrame *
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2553 get_plugin_pref_frame(PurplePlugin *plugin)
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2554 {
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2555 PurplePluginPrefFrame *frame;
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2556 PurplePluginPref *ppref;
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2557
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2558 g_return_val_if_fail(plugin != NULL, FALSE);
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2559
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2560 frame = purple_plugin_pref_frame_new();
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2561
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2562
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2563 /* Add general preferences. */
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2564
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2565 ppref = purple_plugin_pref_new_with_label(_("General Log Reading Configuration"));
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2566 purple_plugin_pref_frame_add(frame, ppref);
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2567
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2568 ppref = purple_plugin_pref_new_with_name_and_label(
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2569 "/plugins/core/log_reader/fast_sizes", _("Fast size calculations"));
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2570 purple_plugin_pref_frame_add(frame, ppref);
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2571
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2572 ppref = purple_plugin_pref_new_with_name_and_label(
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2573 "/plugins/core/log_reader/use_name_heuristics", _("Use name heuristics"));
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2574 purple_plugin_pref_frame_add(frame, ppref);
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2575
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2576
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2577 /* Add Log Directory preferences. */
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2578
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2579 ppref = purple_plugin_pref_new_with_label(_("Log Directory"));
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2580 purple_plugin_pref_frame_add(frame, ppref);
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2581
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2582 ppref = purple_plugin_pref_new_with_name_and_label(
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2583 "/plugins/core/log_reader/adium/log_directory", _("Adium"));
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2584 purple_plugin_pref_frame_add(frame, ppref);
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2585
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2586 ppref = purple_plugin_pref_new_with_name_and_label(
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2587 "/plugins/core/log_reader/qip/log_directory", _("QIP"));
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2588 purple_plugin_pref_frame_add(frame, ppref);
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2589
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2590 ppref = purple_plugin_pref_new_with_name_and_label(
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2591 "/plugins/core/log_reader/msn/log_directory", _("MSN Messenger"));
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2592 purple_plugin_pref_frame_add(frame, ppref);
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2593
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2594 ppref = purple_plugin_pref_new_with_name_and_label(
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2595 "/plugins/core/log_reader/trillian/log_directory", _("Trillian"));
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2596 purple_plugin_pref_frame_add(frame, ppref);
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2597
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2598 ppref = purple_plugin_pref_new_with_name_and_label(
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2599 "/plugins/core/log_reader/amsn/log_directory", _("aMSN"));
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2600 purple_plugin_pref_frame_add(frame, ppref);
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2601
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2602 return frame;
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2603 }
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2604
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2605 static PurplePluginInfo *
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2606 plugin_query(GError **error)
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2607 {
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2608 const gchar * const authors[] = {
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2609 "Richard Laager <rlaager@pidgin.im>",
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2610 NULL
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2611 };
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2612
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2613 return purple_plugin_info_new(
36934
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
2614 "id", "core-log_reader",
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
2615 "name", N_("Log Reader"),
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
2616 "version", DISPLAY_VERSION,
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
2617 "category", N_("Utility"),
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
2618 "summary", N_("Includes other IM clients' logs in the log "
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
2619 "viewer."),
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
2620 "description", N_("When viewing logs, this plugin will include "
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
2621 "logs from other IM clients. Currently, this "
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
2622 "includes Adium, MSN Messenger, aMSN, and "
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
2623 "Trillian.\n\n"
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
2624 "WARNING: This plugin is still alpha code and "
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
2625 "may crash frequently. Use it at your own "
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
2626 "risk!"),
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
2627 "authors", authors,
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
2628 "website", PURPLE_WEBSITE,
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
2629 "abi-version", PURPLE_ABI_VERSION,
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
2630 "pref-frame-cb", get_plugin_pref_frame,
36746
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2631 NULL
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2632 );
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2633 }
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2634
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2635 static gboolean
36746
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2636 plugin_load(PurplePlugin *plugin, GError **error)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2637 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2638 g_return_val_if_fail(plugin != NULL, FALSE);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2639
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
2640 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
2641
13702
35310965f38a [gaim-migrate @ 16103]
Richard Laager <rlaager@pidgin.im>
parents: 13669
diff changeset
2642 /* 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
2643 translators who wanted to transliterate them. Many translators
35310965f38a [gaim-migrate @ 16103]
Richard Laager <rlaager@pidgin.im>
parents: 13669
diff changeset
2644 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
2645 adium_logger = purple_log_logger_new("adium", _("Adium"), 6,
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2646 NULL,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2647 NULL,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2648 adium_logger_finalize,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2649 adium_logger_list,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2650 adium_logger_read,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2651 adium_logger_size);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2652 purple_log_logger_add(adium_logger);
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2653
13702
35310965f38a [gaim-migrate @ 16103]
Richard Laager <rlaager@pidgin.im>
parents: 13669
diff changeset
2654 /* 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
2655 translators who wanted to transliterate them. Many translators
35310965f38a [gaim-migrate @ 16103]
Richard Laager <rlaager@pidgin.im>
parents: 13669
diff changeset
2656 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
2657 qip_logger = purple_log_logger_new("qip", _("QIP"), 6,
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2658 NULL,
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2659 NULL,
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2660 qip_logger_finalize,
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2661 qip_logger_list,
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2662 qip_logger_read,
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2663 qip_logger_size);
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2664 purple_log_logger_add(qip_logger);
18515
2a028601289a Remove trailing whitespace.
Richard Laager <rlaager@pidgin.im>
parents: 18514
diff changeset
2665
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2666 /* 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
2667 translators who wanted to transliterate them. Many translators
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2668 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
2669 msn_logger = purple_log_logger_new("msn", _("MSN Messenger"), 6,
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2670 NULL,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2671 NULL,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2672 msn_logger_finalize,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2673 msn_logger_list,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2674 msn_logger_read,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2675 msn_logger_size);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2676 purple_log_logger_add(msn_logger);
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2677
13702
35310965f38a [gaim-migrate @ 16103]
Richard Laager <rlaager@pidgin.im>
parents: 13669
diff changeset
2678 /* 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
2679 translators who wanted to transliterate them. Many translators
35310965f38a [gaim-migrate @ 16103]
Richard Laager <rlaager@pidgin.im>
parents: 13669
diff changeset
2680 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
2681 trillian_logger = purple_log_logger_new("trillian", _("Trillian"), 6,
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2682 NULL,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2683 NULL,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2684 trillian_logger_finalize,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2685 trillian_logger_list,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2686 trillian_logger_read,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11459
diff changeset
2687 trillian_logger_size);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2688 purple_log_logger_add(trillian_logger);
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2689
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
2690 /* 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
2691 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
2692 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
2693 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
2694 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
2695 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
2696 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
2697 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
2698 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
2699 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
2700 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
2701
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2702 return TRUE;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2703 }
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 static gboolean
36746
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2706 plugin_unload(PurplePlugin *plugin, GError **error)
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2707 {
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2708 g_return_val_if_fail(plugin != NULL, FALSE);
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2709
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2710 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
2711 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
2712 adium_logger = NULL;
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22104
diff changeset
2713
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2714 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
2715 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
2716 msn_logger = NULL;
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22104
diff changeset
2717
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15629
diff changeset
2718 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
2719 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
2720 trillian_logger = NULL;
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22104
diff changeset
2721
17759
1500107199ea QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17642
diff changeset
2722 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
2723 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
2724 qip_logger = NULL;
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22104
diff changeset
2725
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
2726 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
2727 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
2728 amsn_logger = NULL;
11459
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2729
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2730 return TRUE;
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2731 }
2b6491309446 [gaim-migrate @ 13698]
Richard Laager <rlaager@pidgin.im>
parents:
diff changeset
2732
36746
502c8d343054 Refactored log_reader to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36727
diff changeset
2733 PURPLE_PLUGIN_INIT(log_reader, plugin_query, plugin_load, plugin_unload);

mercurial