libpurple/plugins/log_reader.c

Thu, 23 Mar 2017 21:01:15 +0300

author
qarkai <qarkai@gmail.com>
date
Thu, 23 Mar 2017 21:01:15 +0300
branch
string-comparison-r2
changeset 38258
9a6551eba09c
parent 36029
cd7db320cf5c
child 38259
c593fc9f5438
permissions
-rw-r--r--

Replace !strcmp() with purple_strequal()
Didn't touch finch/libgnt files

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

mercurial