libpurple/plugins/log_reader.c

Mon, 27 Jan 2014 04:41:33 +0530

author
Ankit Vani <a@nevitus.org>
date
Mon, 27 Jan 2014 04:41:33 +0530
changeset 35190
5986ee34c476
parent 35114
b833eaa6c76f
child 35382
1b75f8a4129c
child 37015
28ee14bbe0ab
permissions
-rw-r--r--

libpurple: Fix build and warnings with glib 2.24

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

mercurial