libpurple/plugins/log_reader.c

Tue, 15 Apr 2014 21:20:13 +0200

author
Tomasz Wasilczyk <twasilczyk@pidgin.im>
date
Tue, 15 Apr 2014 21:20:13 +0200
changeset 35852
fe350399078a
parent 35382
1b75f8a4129c
child 35972
04fa195c585c
child 37136
cfa7c57f9ca5
permissions
-rw-r--r--

cross-win32: fix prpls

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

mercurial