annotate libpurple/plugins/log_reader.c @ 23855:e23b447aa5ca

propagate from branch 'im.pidgin.pidgin' (head e3ceb09b71185a9074ce73733f2a65b437c9a545) to branch 'im.pidgin.soc.2008.vv' (head a94b36f0065825b75de573746f680ae616b34f41)
author Mike Ruprecht <maiku@soc.pidgin.im>
date Wed, 16 Jul 2008 21:55:08 +0000
parents f15d9ded0c45
children 1568dc7a14f8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1 #include <stdio.h>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3 #include "internal.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
4
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
5 #include "debug.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
6 #include "log.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
7 #include "plugin.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
8 #include "pluginpref.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
9 #include "prefs.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
10 #include "stringref.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
11 #include "util.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
12 #include "version.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
13 #include "xmlnode.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
14
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
15 /* This must be the last Purple header included. */
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
16 #ifdef _WIN32
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
17 #include "win32dep.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
18 #endif
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
19
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
20 /* Where is the Windows partition mounted? */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
21 #ifndef PURPLE_LOG_READER_WINDOWS_MOUNT_POINT
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
22 #define PURPLE_LOG_READER_WINDOWS_MOUNT_POINT "/mnt/windows"
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
23 #endif
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
24
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
25 enum name_guesses {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
26 NAME_GUESS_UNKNOWN,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
27 NAME_GUESS_ME,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
28 NAME_GUESS_THEM
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
29 };
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
30
20909
feca1fd51b57 Use functions and loops and all those fancy things.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20898
diff changeset
31 /* Some common functions. */
feca1fd51b57 Use functions and loops and all those fancy things.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20898
diff changeset
32 static int get_month(const char *month)
feca1fd51b57 Use functions and loops and all those fancy things.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20898
diff changeset
33 {
feca1fd51b57 Use functions and loops and all those fancy things.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20898
diff changeset
34 int iter;
feca1fd51b57 Use functions and loops and all those fancy things.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20898
diff changeset
35 const char *months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun",
feca1fd51b57 Use functions and loops and all those fancy things.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20898
diff changeset
36 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", NULL};
feca1fd51b57 Use functions and loops and all those fancy things.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20898
diff changeset
37 for (iter = 0; months[iter]; iter++) {
feca1fd51b57 Use functions and loops and all those fancy things.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20898
diff changeset
38 if (strcmp(month, months[iter]) == 0)
feca1fd51b57 Use functions and loops and all those fancy things.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20898
diff changeset
39 break;
feca1fd51b57 Use functions and loops and all those fancy things.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20898
diff changeset
40 }
feca1fd51b57 Use functions and loops and all those fancy things.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20898
diff changeset
41 return iter;
feca1fd51b57 Use functions and loops and all those fancy things.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20898
diff changeset
42 }
feca1fd51b57 Use functions and loops and all those fancy things.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20898
diff changeset
43
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
44
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
45 /*****************************************************************************
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
46 * Adium Logger *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
47 *****************************************************************************/
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
48
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
49 /* The adium logger doesn't write logs, only reads them. This is to include
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
50 * Adium logs in the log viewer transparently.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
51 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
52
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
53 static PurpleLogLogger *adium_logger;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
54
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
55 enum adium_log_type {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
56 ADIUM_HTML,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
57 ADIUM_TEXT,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
58 };
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
59
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
60 struct adium_logger_data {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
61 char *path;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
62 enum adium_log_type type;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
63 };
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
64
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
65 static GList *adium_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
66 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
67 GList *list = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
68 const char *logdir;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
69 PurplePlugin *plugin;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
70 PurplePluginProtocolInfo *prpl_info;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
71 char *prpl_name;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
72 char *temp;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
73 char *path;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
74 GDir *dir;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
75
18795
883c18d31bf4 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18785
diff changeset
76 g_return_val_if_fail(sn != NULL, NULL);
883c18d31bf4 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18785
diff changeset
77 g_return_val_if_fail(account != NULL, NULL);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
78
16430
f8eb3e7c4fbd Fix GTK Plugin prefs
Sean Egan <seanegan@gmail.com>
parents: 16424
diff changeset
79 logdir = purple_prefs_get_string("/plugins/core/log_reader/adium/log_directory");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
80
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
81 /* By clearing the log directory path, this logger can be (effectively) disabled. */
18795
883c18d31bf4 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18785
diff changeset
82 if (!logdir || !*logdir)
883c18d31bf4 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18785
diff changeset
83 return NULL;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
84
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
85 plugin = purple_find_prpl(purple_account_get_protocol_id(account));
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
86 if (!plugin)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
87 return NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
88
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
89 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(plugin);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
90 if (!prpl_info->list_icon)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
91 return NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
92
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
93 prpl_name = g_ascii_strup(prpl_info->list_icon(account, NULL), -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
94
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
95 temp = g_strdup_printf("%s.%s", prpl_name, account->username);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
96 path = g_build_filename(logdir, temp, sn, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
97 g_free(temp);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
98
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
99 dir = g_dir_open(path, 0, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
100 if (dir) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
101 const gchar *file;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
102
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
103 while ((file = g_dir_read_name(dir))) {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
104 if (!purple_str_has_prefix(file, sn))
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
105 continue;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
106 if (purple_str_has_suffix(file, ".html") || purple_str_has_suffix(file, ".AdiumHTMLLog")) {
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
107 struct tm tm;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
108 const char *date = file;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
109
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
110 date += strlen(sn) + 2;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
111 if (sscanf(date, "%u|%u|%u",
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
112 &tm.tm_year, &tm.tm_mon, &tm.tm_mday) != 3) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
113
18245
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
114 purple_debug_error("Adium log parse",
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
115 "Filename timestamp parsing error\n");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
116 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
117 char *filename = g_build_filename(path, file, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
118 FILE *handle = g_fopen(filename, "rb");
20898
70082d0db571 Pay attention to the return value of fread. I don't think not doing this
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20897
diff changeset
119 char contents[57]; /* XXX: This is really inflexible. */
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
120 char *contents2;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
121 struct adium_logger_data *data;
20898
70082d0db571 Pay attention to the return value of fread. I don't think not doing this
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20897
diff changeset
122 size_t rd;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
123 PurpleLog *log;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
124
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
125 if (!handle) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
126 g_free(filename);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
127 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
128 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
129
20910
54d232b52607 Since we are looking at the return value of fread, it actually matters that
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20909
diff changeset
130 rd = fread(contents, 1, 56, handle) == 0;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
131 fclose(handle);
20898
70082d0db571 Pay attention to the return value of fread. I don't think not doing this
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20897
diff changeset
132 contents[rd] = '\0';
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
133
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
134 /* XXX: This is fairly inflexible. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
135 contents2 = contents;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
136 while (*contents2 && *contents2 != '>')
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
137 contents2++;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
138 if (*contents2)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
139 contents2++;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
140 while (*contents2 && *contents2 != '>')
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
141 contents2++;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
142 if (*contents2)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
143 contents2++;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
144
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
145 if (sscanf(contents2, "%u.%u.%u",
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
146 &tm.tm_hour, &tm.tm_min, &tm.tm_sec) != 3) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
147
18245
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
148 purple_debug_error("Adium log parse",
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
149 "Contents timestamp parsing error\n");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
150 g_free(filename);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
151 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
152 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
153
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
154 data = g_new0(struct adium_logger_data, 1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
155 data->path = filename;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
156 data->type = ADIUM_HTML;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
157
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
158 tm.tm_year -= 1900;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
159 tm.tm_mon -= 1;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
160
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
161 /* XXX: Look into this later... Should we pass in a struct tm? */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
162 log = purple_log_new(PURPLE_LOG_IM, sn, account, NULL, mktime(&tm), NULL);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
163 log->logger = adium_logger;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
164 log->logger_data = data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
165
18249
35d981091506 Prepend to lists for performance, and use g_list_reverse when the list is
Richard Laager <rlaager@wiktel.com>
parents: 18248
diff changeset
166 list = g_list_prepend(list, log);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
167 }
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
168 } else if (purple_str_has_suffix(file, ".adiumLog")) {
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
169 struct tm tm;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
170 const char *date = file;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
171
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
172 date += strlen(sn) + 2;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
173 if (sscanf(date, "%u|%u|%u",
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
174 &tm.tm_year, &tm.tm_mon, &tm.tm_mday) != 3) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
175
18245
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
176 purple_debug_error("Adium log parse",
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
177 "Filename timestamp parsing error\n");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
178 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
179 char *filename = g_build_filename(path, file, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
180 FILE *handle = g_fopen(filename, "rb");
20898
70082d0db571 Pay attention to the return value of fread. I don't think not doing this
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20897
diff changeset
181 char contents[14]; /* XXX: This is really inflexible. */
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
182 char *contents2;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
183 struct adium_logger_data *data;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
184 PurpleLog *log;
20898
70082d0db571 Pay attention to the return value of fread. I don't think not doing this
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20897
diff changeset
185 size_t rd;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
186
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
187 if (!handle) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
188 g_free(filename);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
189 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
190 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
191
20910
54d232b52607 Since we are looking at the return value of fread, it actually matters that
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20909
diff changeset
192 rd = fread(contents, 1, 13, handle);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
193 fclose(handle);
20898
70082d0db571 Pay attention to the return value of fread. I don't think not doing this
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20897
diff changeset
194 contents[rd] = '\0';
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
195
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
196 contents2 = contents;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
197 while (*contents2 && *contents2 != '(')
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
198 contents2++;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
199 if (*contents2)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
200 contents2++;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
201
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
202 if (sscanf(contents2, "%u.%u.%u",
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
203 &tm.tm_hour, &tm.tm_min, &tm.tm_sec) != 3) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
204
18245
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
205 purple_debug_error("Adium log parse",
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
206 "Contents timestamp parsing error\n");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
207 g_free(filename);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
208 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
209 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
210
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
211 tm.tm_year -= 1900;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
212 tm.tm_mon -= 1;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
213
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
214 data = g_new0(struct adium_logger_data, 1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
215 data->path = filename;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
216 data->type = ADIUM_TEXT;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
217
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
218 /* XXX: Look into this later... Should we pass in a struct tm? */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
219 log = purple_log_new(PURPLE_LOG_IM, sn, account, NULL, mktime(&tm), NULL);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
220 log->logger = adium_logger;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
221 log->logger_data = data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
222
18249
35d981091506 Prepend to lists for performance, and use g_list_reverse when the list is
Richard Laager <rlaager@wiktel.com>
parents: 18248
diff changeset
223 list = g_list_prepend(list, log);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
224 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
225 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
226 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
227 g_dir_close(dir);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
228 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
229
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
230 g_free(prpl_name);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
231 g_free(path);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
232
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
233 return list;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
234 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
235
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
236 static char *adium_logger_read (PurpleLog *log, PurpleLogReadFlags *flags)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
237 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
238 struct adium_logger_data *data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
239 GError *error = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
240 gchar *read = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
241
18373
07c8311ec4e4 Minor comment fix.
Richard Laager <rlaager@wiktel.com>
parents: 18372
diff changeset
242 /* XXX: TODO: We probably want to set PURPLE_LOG_READ_NO_NEWLINE
18371
c13d115b6c6e Make the Adium logger set flags, though it's still very much a stub.
Richard Laager <rlaager@wiktel.com>
parents: 18360
diff changeset
243 * XXX: TODO: for HTML logs. */
18795
883c18d31bf4 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18785
diff changeset
244 if (flags != NULL)
883c18d31bf4 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18785
diff changeset
245 *flags = 0;
18371
c13d115b6c6e Make the Adium logger set flags, though it's still very much a stub.
Richard Laager <rlaager@wiktel.com>
parents: 18360
diff changeset
246
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
247 g_return_val_if_fail(log != NULL, g_strdup(""));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
248
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
249 data = log->logger_data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
250
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
251 g_return_val_if_fail(data->path != NULL, g_strdup(""));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
252
18245
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
253 purple_debug_info("Adium log read", "Reading %s\n", data->path);
20329
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
254 if (!g_file_get_contents(data->path, &read, NULL, &error)) {
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
255 purple_debug_error("Adium log read", "Error reading log: %s\n",
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
256 (error && error->message) ? error->message : "Unknown error");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
257 if (error)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
258 g_error_free(error);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
259 return g_strdup("");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
260 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
261
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
262 if (data->type != ADIUM_HTML) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
263 char *escaped = g_markup_escape_text(read, -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
264 g_free(read);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
265 read = escaped;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
266 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
267
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
268 #ifdef WIN32
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
269 /* This problem only seems to show up on Windows.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
270 * The BOM is displaying as a space at the beginning of the log.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
271 */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
272 if (purple_str_has_prefix(read, "\xef\xbb\xbf"))
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
273 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
274 /* FIXME: This feels so wrong... */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
275 char *temp = g_strdup(&(read[3]));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
276 g_free(read);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
277 read = temp;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
278 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
279 #endif
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
280
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
281 /* TODO: Apply formatting.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
282 * Replace the above hack with something better, since we'll
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
283 * be looping over the entire log file contents anyway.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
284 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
285
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
286 return read;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
287 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
288
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
289 static int adium_logger_size (PurpleLog *log)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
290 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
291 struct adium_logger_data *data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
292 char *text;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
293 size_t size;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
294
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
295 g_return_val_if_fail(log != NULL, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
296
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
297 data = log->logger_data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
298
16430
f8eb3e7c4fbd Fix GTK Plugin prefs
Sean Egan <seanegan@gmail.com>
parents: 16424
diff changeset
299 if (purple_prefs_get_bool("/plugins/core/log_reader/fast_sizes")) {
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
300 struct stat st;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
301
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
302 if (!data->path || stat(data->path, &st))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
303 st.st_size = 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
304
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
305 return st.st_size;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
306 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
307
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
308 text = adium_logger_read(log, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
309 size = strlen(text);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
310 g_free(text);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
311
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
312 return size;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
313 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
314
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
315 static void adium_logger_finalize(PurpleLog *log)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
316 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
317 struct adium_logger_data *data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
318
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
319 g_return_if_fail(log != NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
320
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
321 data = log->logger_data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
322
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
323 g_free(data->path);
18246
e236b3bd4542 Eliminate some leaks.
Richard Laager <rlaager@wiktel.com>
parents: 18245
diff changeset
324 g_free(data);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
325 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
326
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
327
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
328 /*****************************************************************************
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
329 * Fire Logger *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
330 *****************************************************************************/
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
331
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
332 #if 0
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
333 /* The fire logger doesn't write logs, only reads them. This is to include
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
334 * Fire logs in the log viewer transparently.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
335 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
336
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
337 static PurpleLogLogger *fire_logger;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
338
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
339 struct fire_logger_data {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
340 };
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
341
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
342 static GList *fire_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
343 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
344 /* TODO: Do something here. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
345 return NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
346 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
347
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
348 static char * fire_logger_read (PurpleLog *log, PurpleLogReadFlags *flags)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
349 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
350 struct fire_logger_data *data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
351
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
352 g_return_val_if_fail(log != NULL, g_strdup(""));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
353
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
354 data = log->logger_data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
355
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
356 /* TODO: Do something here. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
357 return g_strdup("");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
358 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
359
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
360 static int fire_logger_size (PurpleLog *log)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
361 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
362 g_return_val_if_fail(log != NULL, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
363
16430
f8eb3e7c4fbd Fix GTK Plugin prefs
Sean Egan <seanegan@gmail.com>
parents: 16424
diff changeset
364 if (purple_prefs_get_bool("/plugins/core/log_reader/fast_sizes"))
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
365 return 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
366
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
367 /* TODO: Do something here. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
368 return 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
369 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
370
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
371 static void fire_logger_finalize(PurpleLog *log)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
372 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
373 g_return_if_fail(log != NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
375 /* TODO: Do something here. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
376 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
377 #endif
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
378
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
379
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
380 /*****************************************************************************
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
381 * Messenger Plus! Logger *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
382 *****************************************************************************/
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
383
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
384 #if 0
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
385 /* The messenger_plus logger doesn't write logs, only reads them. This is to include
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
386 * Messenger Plus! logs in the log viewer transparently.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
387 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
388
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
389 static PurpleLogLogger *messenger_plus_logger;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
390
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
391 struct messenger_plus_logger_data {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
392 };
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
393
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
394 static GList *messenger_plus_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
395 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
396 /* TODO: Do something here. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
397 return NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
398 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
399
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
400 static char * messenger_plus_logger_read (PurpleLog *log, PurpleLogReadFlags *flags)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
401 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
402 struct messenger_plus_logger_data *data = log->logger_data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
403
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
404 g_return_val_if_fail(log != NULL, g_strdup(""));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
405
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
406 data = log->logger_data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
407
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
408 /* TODO: Do something here. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
409 return g_strdup("");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
410 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
411
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
412 static int messenger_plus_logger_size (PurpleLog *log)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
413 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
414 g_return_val_if_fail(log != NULL, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
415
16430
f8eb3e7c4fbd Fix GTK Plugin prefs
Sean Egan <seanegan@gmail.com>
parents: 16424
diff changeset
416 if (purple_prefs_get_bool("/plugins/core/log_reader/fast_sizes"))
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
417 return 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
418
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
419 /* TODO: Do something here. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
420 return 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
421 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
422
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
423 static void messenger_plus_logger_finalize(PurpleLog *log)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
424 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
425 g_return_if_fail(log != NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
426
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
427 /* TODO: Do something here. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
428 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
429 #endif
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
430
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
431
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
432 /*****************************************************************************
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
433 * MSN Messenger Logger *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
434 *****************************************************************************/
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
435
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
436 /* The msn logger doesn't write logs, only reads them. This is to include
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
437 * MSN Messenger message histories in the log viewer transparently.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
438 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
439
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
440 static PurpleLogLogger *msn_logger;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
441
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
442 struct msn_logger_data {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
443 xmlnode *root;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
444 xmlnode *message;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
445 const char *session_id;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
446 int last_log;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
447 GString *text;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
448 };
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
449
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
450 /* This function is really confusing. It makes baby rlaager cry...
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
451 In other news: "You lost a lot of blood but we found most of it."
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
452 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
453 static time_t msn_logger_parse_timestamp(xmlnode *message, struct tm **tm_out)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
454 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
455 const char *datetime;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
456 static struct tm tm2;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
457 time_t stamp;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
458 const char *date;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
459 const char *time;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
460 int month;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
461 int day;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
462 int year;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
463 int hour;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
464 int min;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
465 int sec;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
466 char am_pm;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
467 char *str;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
468 static struct tm tm;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
469 time_t t;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
470 time_t diff;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
471
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
472 #ifndef G_DISABLE_CHECKS
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
473 if (message != NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
474 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
475 *tm_out = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
476
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
477 /* Trigger the usual warning. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
478 g_return_val_if_fail(message != NULL, (time_t)0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
479 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
480 #endif
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
481
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
482 datetime = xmlnode_get_attrib(message, "DateTime");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
483 if (!(datetime && *datetime))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
484 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
485 purple_debug_error("MSN log timestamp parse",
18245
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
486 "Attribute missing: %s\n", "DateTime");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
487 return (time_t)0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
488 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
489
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
490 stamp = purple_str_to_time(datetime, TRUE, &tm2, NULL, NULL);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
491 #ifdef HAVE_TM_GMTOFF
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
492 tm2.tm_gmtoff = 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
493 #endif
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
494 #ifdef HAVE_STRUCT_TM_TM_ZONE
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
495 /* This is used in the place of a timezone abbreviation if the
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
496 * offset is way off. The user should never really see it, but
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
497 * it's here just in case. The parens are to make it clear it's
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
498 * not a real timezone. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
499 tm2.tm_zone = _("(UTC)");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
500 #endif
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
501
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
502
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
503 date = xmlnode_get_attrib(message, "Date");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
504 if (!(date && *date))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
505 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
506 purple_debug_error("MSN log timestamp parse",
18245
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
507 "Attribute missing: %s\n", "Date");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
508 *tm_out = &tm2;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
509 return stamp;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
510 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
511
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
512 time = xmlnode_get_attrib(message, "Time");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
513 if (!(time && *time))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
514 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
515 purple_debug_error("MSN log timestamp parse",
18245
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
516 "Attribute missing: %s\n", "Time");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
517 *tm_out = &tm2;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
518 return stamp;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
519 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
520
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
521 if (sscanf(date, "%u/%u/%u", &month, &day, &year) != 3)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
522 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
523 purple_debug_error("MSN log timestamp parse",
18245
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
524 "%s parsing error\n", "Date");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
525 *tm_out = &tm2;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
526 return stamp;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
527 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
528 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
529 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
530 if (month > 12)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
531 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
532 int tmp = day;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
533 day = month;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
534 month = tmp;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
535 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
536 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
537
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
538 if (sscanf(time, "%u:%u:%u %c", &hour, &min, &sec, &am_pm) != 4)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
539 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
540 purple_debug_error("MSN log timestamp parse",
18245
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
541 "%s parsing error\n", "Time");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
542 *tm_out = &tm2;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
543 return stamp;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
544 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
545
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
546 if (am_pm == 'P') {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
547 hour += 12;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
548 } else if (hour == 12) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
549 /* 12 AM = 00 hr */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
550 hour = 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
551 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
552
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
553 str = g_strdup_printf("%04i-%02i-%02iT%02i:%02i:%02i", year, month, day, hour, min, sec);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
554 t = purple_str_to_time(str, TRUE, &tm, NULL, NULL);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
555
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
556
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
557 if (stamp > t)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
558 diff = stamp - t;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
559 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
560 diff = t - stamp;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
561
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
562 if (diff > (14 * 60 * 60))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
563 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
564 if (day <= 12)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
565 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
566 /* Swap day & month variables, to see if it's a non-US date. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
567 g_free(str);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
568 str = g_strdup_printf("%04i-%02i-%02iT%02i:%02i:%02i", year, month, day, hour, min, sec);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
569 t = purple_str_to_time(str, TRUE, &tm, NULL, NULL);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
570
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
571 if (stamp > t)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
572 diff = stamp - t;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
573 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
574 diff = t - stamp;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
575
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
576 if (diff > (14 * 60 * 60))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
577 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
578 /* We got a time, it's not impossible, but
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
579 * the diff is too large. Display the UTC time. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
580 g_free(str);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
581 *tm_out = &tm2;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
582 return stamp;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
583 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
584 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
585 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
586 /* Legal time */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
587 /* Fall out */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
588 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
589 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
590 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
591 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
592 /* We got a time, it's not impossible, but
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
593 * the diff is too large. Display the UTC time. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
594 g_free(str);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
595 *tm_out = &tm2;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
596 return stamp;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
597 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
598 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
599
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
600 /* If we got here, the time is legal with a reasonable offset.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
601 * Let's find out if it's in our TZ. */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
602 if (purple_str_to_time(str, FALSE, &tm, NULL, NULL) == stamp)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
603 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
604 g_free(str);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
605 *tm_out = &tm;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
606 return stamp;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
607 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
608 g_free(str);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
609
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
610 /* The time isn't in our TZ, but it's reasonable. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
611 #ifdef HAVE_STRUCT_TM_TM_ZONE
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
612 tm.tm_zone = " ";
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
613 #endif
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
614 *tm_out = &tm;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
615 return stamp;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
616 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
617
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
618 static GList *msn_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
619 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
620 GList *list = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
621 char *username;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
622 PurpleBuddy *buddy;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
623 const char *logdir;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
624 const char *savedfilename = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
625 char *logfile;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
626 char *path;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
627 GError *error = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
628 gchar *contents = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
629 gsize length;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
630 xmlnode *root;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
631 xmlnode *message;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
632 const char *old_session_id = "";
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
633 struct msn_logger_data *data = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
634
18795
883c18d31bf4 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18785
diff changeset
635 g_return_val_if_fail(sn != NULL, NULL);
883c18d31bf4 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18785
diff changeset
636 g_return_val_if_fail(account != NULL, NULL);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
637
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
638 if (strcmp(account->protocol_id, "prpl-msn"))
18795
883c18d31bf4 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18785
diff changeset
639 return NULL;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
640
16430
f8eb3e7c4fbd Fix GTK Plugin prefs
Sean Egan <seanegan@gmail.com>
parents: 16424
diff changeset
641 logdir = purple_prefs_get_string("/plugins/core/log_reader/msn/log_directory");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
642
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
643 /* By clearing the log directory path, this logger can be (effectively) disabled. */
18795
883c18d31bf4 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18785
diff changeset
644 if (!logdir || !*logdir)
883c18d31bf4 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18785
diff changeset
645 return NULL;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
646
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
647 buddy = purple_find_buddy(account, sn);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
648
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
649 if ((username = g_strdup(purple_account_get_string(
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
650 account, "log_reader_msn_log_folder", NULL)))) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
651 /* As a special case, we allow the null string to kill the parsing
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
652 * straight away. This would allow the user to deal with the case
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
653 * when two account have the same username at different domains and
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
654 * only one has logs stored.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
655 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
656 if (!*username) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
657 g_free(username);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
658 return list;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
659 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
660 } else {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
661 username = g_strdup(purple_normalize(account, account->username));
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
662 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
663
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
664 if (buddy)
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
665 savedfilename = purple_blist_node_get_string(&buddy->node, "log_reader_msn_log_filename");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
666
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
667 if (savedfilename) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
668 /* As a special case, we allow the null string to kill the parsing
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
669 * straight away. This would allow the user to deal with the case
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
670 * when two buddies have the same username at different domains and
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
671 * only one has logs stored.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
672 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
673 if (!*savedfilename) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
674 g_free(username);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
675 return list;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
676 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
677
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
678 logfile = g_strdup(savedfilename);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
679 } else {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
680 logfile = g_strdup_printf("%s.xml", purple_normalize(account, sn));
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
681 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
682
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
683 path = g_build_filename(logdir, username, "History", logfile, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
684
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
685 if (!g_file_test(path, G_FILE_TEST_EXISTS)) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
686 gboolean found = FALSE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
687 char *at_sign;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
688 GDir *dir;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
689
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
690 g_free(path);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
691
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
692 if (savedfilename) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
693 /* We had a saved filename, but it doesn't exist.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
694 * Returning now is the right course of action because we don't
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
695 * want to detect another file incorrectly.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
696 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
697 g_free(username);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
698 g_free(logfile);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
699 return list;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
700 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
701
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
702 /* Perhaps we're using a new version of MSN with the weird numbered folders.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
703 * I don't know how the numbers are calculated, so I'm going to attempt to
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
704 * find logs by pattern matching...
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
705 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
706
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
707 at_sign = g_strrstr(username, "@");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
708 if (at_sign)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
709 *at_sign = '\0';
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
710
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
711 dir = g_dir_open(logdir, 0, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
712 if (dir) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
713 const gchar *name;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
714
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
715 while ((name = g_dir_read_name(dir))) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
716 const char *c = name;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
717
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
718 if (!purple_str_has_prefix(c, username))
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
719 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
720
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
721 c += strlen(username);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
722 while (*c) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
723 if (!g_ascii_isdigit(*c))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
724 break;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
725
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
726 c++;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
727 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
728
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
729 path = g_build_filename(logdir, name, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
730 /* The !c makes sure we got to the end of the while loop above. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
731 if (!*c && g_file_test(path, G_FILE_TEST_IS_DIR)) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
732 char *history_path = g_build_filename(
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
733 path, "History", NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
734 if (g_file_test(history_path, G_FILE_TEST_IS_DIR)) {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
735 purple_account_set_string(account,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
736 "log_reader_msn_log_folder", name);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
737 g_free(path);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
738 path = history_path;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
739 found = TRUE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
740 break;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
741 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
742 g_free(path);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
743 g_free(history_path);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
744 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
745 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
746 g_free(path);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
747 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
748 g_dir_close(dir);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
749 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
750 g_free(username);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
751
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
752 if (!found) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
753 g_free(logfile);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
754 return list;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
755 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
756
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
757 /* If we've reached this point, we've found a History folder. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
758
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
759 username = g_strdup(purple_normalize(account, sn));
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
760 at_sign = g_strrstr(username, "@");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
761 if (at_sign)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
762 *at_sign = '\0';
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
763
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
764 found = FALSE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
765 dir = g_dir_open(path, 0, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
766 if (dir) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
767 const gchar *name;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
768
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
769 while ((name = g_dir_read_name(dir))) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
770 const char *c = name;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
771
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
772 if (!purple_str_has_prefix(c, username))
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
773 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
774
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
775 c += strlen(username);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
776 while (*c) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
777 if (!g_ascii_isdigit(*c))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
778 break;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
779
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
780 c++;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
781 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
782
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
783 path = g_build_filename(path, name, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
784 if (!strcmp(c, ".xml") &&
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
785 g_file_test(path, G_FILE_TEST_EXISTS)) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
786 found = TRUE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
787 g_free(logfile);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
788 logfile = g_strdup(name);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
789 break;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
790 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
791 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
792 g_free(path);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
793 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
794 g_dir_close(dir);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
795 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
796 g_free(username);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
797
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
798 if (!found) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
799 g_free(logfile);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
800 return list;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
801 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
802 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
803 g_free(username);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
804 g_free(logfile);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
805 logfile = NULL; /* No sense saving the obvious buddy@domain.com. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
806 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
807
18245
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
808 purple_debug_info("MSN log read", "Reading %s\n", path);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
809 if (!g_file_get_contents(path, &contents, &length, &error)) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
810 g_free(path);
18245
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
811 purple_debug_error("MSN log read", "Error reading log\n");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
812 if (error)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
813 g_error_free(error);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
814 return list;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
815 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
816 g_free(path);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
817
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
818 /* Reading the file was successful...
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
819 * Save its name if it involves the crazy numbers. The idea here is that you could
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
820 * then tweak the blist.xml file by hand if need be. This would be the case if two
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
821 * buddies have the same username at different domains. One set of logs would get
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
822 * detected for both buddies.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
823 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
824 if (buddy && logfile) {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
825 purple_blist_node_set_string(&buddy->node, "log_reader_msn_log_filename", logfile);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
826 g_free(logfile);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
827 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
828
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
829 root = xmlnode_from_str(contents, length);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
830 g_free(contents);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
831 if (!root)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
832 return list;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
833
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
834 for (message = xmlnode_get_child(root, "Message"); message;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
835 message = xmlnode_get_next_twin(message)) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
836 const char *session_id;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
837
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
838 session_id = xmlnode_get_attrib(message, "SessionID");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
839 if (!session_id) {
18245
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
840 purple_debug_error("MSN log parse",
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
841 "Error parsing message: %s\n", "SessionID missing");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
842 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
843 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
844
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
845 if (strcmp(session_id, old_session_id)) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
846 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
847 * The session ID differs from the last message.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
848 * Thus, this is the start of a new conversation.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
849 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
850 struct tm *tm;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
851 time_t stamp;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
852 PurpleLog *log;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
853
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
854 data = g_new0(struct msn_logger_data, 1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
855 data->root = root;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
856 data->message = message;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
857 data->session_id = session_id;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
858 data->text = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
859 data->last_log = FALSE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
860
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
861 stamp = msn_logger_parse_timestamp(message, &tm);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
862
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
863 log = purple_log_new(PURPLE_LOG_IM, sn, account, NULL, stamp, tm);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
864 log->logger = msn_logger;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
865 log->logger_data = data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
866
18249
35d981091506 Prepend to lists for performance, and use g_list_reverse when the list is
Richard Laager <rlaager@wiktel.com>
parents: 18248
diff changeset
867 list = g_list_prepend(list, log);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
868 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
869 old_session_id = session_id;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
870 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
871
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
872 if (data)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
873 data->last_log = TRUE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
874
18249
35d981091506 Prepend to lists for performance, and use g_list_reverse when the list is
Richard Laager <rlaager@wiktel.com>
parents: 18248
diff changeset
875 return g_list_reverse(list);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
876 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
877
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
878 static char * msn_logger_read (PurpleLog *log, PurpleLogReadFlags *flags)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
879 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
880 struct msn_logger_data *data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
881 GString *text = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
882 xmlnode *message;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
883
18765
9cec393c3a21 Fix #2349 (null pointer deref in log_reader plugin).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18559
diff changeset
884 if (flags != NULL)
9cec393c3a21 Fix #2349 (null pointer deref in log_reader plugin).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18559
diff changeset
885 *flags = PURPLE_LOG_READ_NO_NEWLINE;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
886 g_return_val_if_fail(log != NULL, g_strdup(""));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
887
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
888 data = log->logger_data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
889
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
890 if (data->text) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
891 /* The GTK code which displays the logs g_free()s whatever is
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
892 * returned from this function. Thus, we can't reuse the str
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
893 * part of the GString. The only solution is to free it and
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
894 * start over.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
895 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
896 g_string_free(data->text, FALSE);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
897 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
898
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
899 text = g_string_new("");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
900
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
901 if (!data->root || !data->message || !data->session_id) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
902 /* Something isn't allocated correctly. */
18245
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
903 purple_debug_error("MSN log parse",
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
904 "Error parsing message: %s\n", "Internal variables inconsistent");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
905 data->text = text;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
906
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
907 return text->str;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
908 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
909
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
910 for (message = data->message; message;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
911 message = xmlnode_get_next_twin(message)) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
912
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
913 const char *new_session_id;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
914 xmlnode *text_node;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
915 const char *from_name = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
916 const char *to_name = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
917 xmlnode *from;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
918 xmlnode *to;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
919 enum name_guesses name_guessed = NAME_GUESS_UNKNOWN;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
920 const char *their_name;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
921 time_t time_unix;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
922 struct tm *tm;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
923 char *timestamp;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
924 char *tmp;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
925 const char *style;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
926
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
927 new_session_id = xmlnode_get_attrib(message, "SessionID");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
928
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
929 /* If this triggers, something is wrong with the XML. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
930 if (!new_session_id) {
18245
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
931 purple_debug_error("MSN log parse",
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
932 "Error parsing message: %s\n", "New SessionID missing");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
933 break;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
934 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
935
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
936 if (strcmp(new_session_id, data->session_id)) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
937 /* The session ID differs from the first message.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
938 * Thus, this is the start of a new conversation.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
939 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
940 break;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
941 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
942
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
943 text_node = xmlnode_get_child(message, "Text");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
944 if (!text_node)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
945 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
946
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
947 from = xmlnode_get_child(message, "From");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
948 if (from) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
949 xmlnode *user = xmlnode_get_child(from, "User");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
950
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
951 if (user) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
952 from_name = xmlnode_get_attrib(user, "FriendlyName");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
953
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
954 /* This saves a check later. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
955 if (!*from_name)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
956 from_name = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
957 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
958 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
959
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
960 to = xmlnode_get_child(message, "To");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
961 if (to) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
962 xmlnode *user = xmlnode_get_child(to, "User");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
963 if (user) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
964 to_name = xmlnode_get_attrib(user, "FriendlyName");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
965
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
966 /* This saves a check later. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
967 if (!*to_name)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
968 to_name = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
969 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
970 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
971
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
972 their_name = from_name;
16430
f8eb3e7c4fbd Fix GTK Plugin prefs
Sean Egan <seanegan@gmail.com>
parents: 16424
diff changeset
973 if (from_name && purple_prefs_get_bool("/plugins/core/log_reader/use_name_heuristics")) {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
974 const char *friendly_name = purple_connection_get_display_name(log->account->gc);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
975
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
976 if (friendly_name != NULL) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
977 int friendly_name_length = strlen(friendly_name);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
978 const char *alias;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
979 int alias_length;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
980 PurpleBuddy *buddy = purple_find_buddy(log->account, log->name);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
981 gboolean from_name_matches;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
982 gboolean to_name_matches;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
983
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
984 if (buddy && buddy->alias)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
985 their_name = buddy->alias;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
986
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
987 if (log->account->alias)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
988 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
989 alias = log->account->alias;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
990 alias_length = strlen(alias);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
991 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
992 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
993 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
994 alias = "";
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
995 alias_length = 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
996 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
997
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
998 /* Try to guess which user is me.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
999 * The first step is to determine if either of the names matches either my
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1000 * friendly name or alias. For this test, "match" is defined as:
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1001 * ^(friendly_name|alias)([^a-zA-Z0-9].*)?$
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1002 */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
1003 from_name_matches = (purple_str_has_prefix(from_name, friendly_name) &&
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1004 !isalnum(*(from_name + friendly_name_length))) ||
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
1005 (purple_str_has_prefix(from_name, alias) &&
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1006 !isalnum(*(from_name + alias_length)));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1007
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1008 to_name_matches = to_name != NULL && (
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
1009 (purple_str_has_prefix(to_name, friendly_name) &&
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1010 !isalnum(*(to_name + friendly_name_length))) ||
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
1011 (purple_str_has_prefix(to_name, alias) &&
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1012 !isalnum(*(to_name + alias_length))));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1013
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1014 if (from_name_matches) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1015 if (!to_name_matches) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1016 name_guessed = NAME_GUESS_ME;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1017 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1018 } else if (to_name_matches) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1019 name_guessed = NAME_GUESS_THEM;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1020 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1021 if (buddy && buddy->alias) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1022 char *alias = g_strdup(buddy->alias);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1023
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1024 /* "Truncate" the string at the first non-alphanumeric
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1025 * character. The idea is to relax the comparison.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1026 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1027 char *temp;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1028 for (temp = alias; *temp ; temp++) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1029 if (!isalnum(*temp)) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1030 *temp = '\0';
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1031 break;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1032 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1033 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1034 alias_length = strlen(alias);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1035
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1036 /* Try to guess which user is them.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1037 * The first step is to determine if either of the names
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1038 * matches their alias. For this test, "match" is
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1039 * defined as: ^alias([^a-zA-Z0-9].*)?$
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1040 */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
1041 from_name_matches = (purple_str_has_prefix(
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1042 from_name, alias) &&
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1043 !isalnum(*(from_name +
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1044 alias_length)));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1045
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
1046 to_name_matches = to_name && (purple_str_has_prefix(
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1047 to_name, alias) &&
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1048 !isalnum(*(to_name +
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1049 alias_length)));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1050
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1051 g_free(alias);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1052
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1053 if (from_name_matches) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1054 if (!to_name_matches) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1055 name_guessed = NAME_GUESS_THEM;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1056 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1057 } else if (to_name_matches) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1058 name_guessed = NAME_GUESS_ME;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1059 } else if (buddy->server_alias) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1060 friendly_name_length =
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1061 strlen(buddy->server_alias);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1062
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1063 /* Try to guess which user is them.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1064 * The first step is to determine if either of
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1065 * the names matches their friendly name. For
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1066 * this test, "match" is defined as:
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1067 * ^friendly_name([^a-zA-Z0-9].*)?$
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1068 */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
1069 from_name_matches = (purple_str_has_prefix(
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1070 from_name,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1071 buddy->server_alias) &&
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1072 !isalnum(*(from_name +
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1073 friendly_name_length)));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1074
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1075 to_name_matches = to_name && (
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
1076 (purple_str_has_prefix(
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1077 to_name, buddy->server_alias) &&
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1078 !isalnum(*(to_name +
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1079 friendly_name_length))));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1080
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1081 if (from_name_matches) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1082 if (!to_name_matches) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1083 name_guessed = NAME_GUESS_THEM;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1084 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1085 } else if (to_name_matches) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1086 name_guessed = NAME_GUESS_ME;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1087 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1088 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1089 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1090 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1091 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1092 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1093
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1094 if (name_guessed != NAME_GUESS_UNKNOWN) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1095 text = g_string_append(text, "<span style=\"color: #");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1096 if (name_guessed == NAME_GUESS_ME)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1097 text = g_string_append(text, "16569E");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1098 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1099 text = g_string_append(text, "A82F2F");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1100 text = g_string_append(text, ";\">");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1101 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1102
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1103 time_unix = msn_logger_parse_timestamp(message, &tm);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1104
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1105 timestamp = g_strdup_printf("<font size=\"2\">(%02u:%02u:%02u)</font> ",
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1106 tm->tm_hour, tm->tm_min, tm->tm_sec);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1107 text = g_string_append(text, timestamp);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1108 g_free(timestamp);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1109
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1110 if (from_name) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1111 text = g_string_append(text, "<b>");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1112
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1113 if (name_guessed == NAME_GUESS_ME) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1114 if (log->account->alias)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1115 text = g_string_append(text, log->account->alias);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1116 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1117 text = g_string_append(text, log->account->username);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1118 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1119 else if (name_guessed == NAME_GUESS_THEM)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1120 text = g_string_append(text, their_name);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1121 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1122 text = g_string_append(text, from_name);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1123
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1124 text = g_string_append(text, ":</b> ");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1125 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1126
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1127 if (name_guessed != NAME_GUESS_UNKNOWN)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1128 text = g_string_append(text, "</span>");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1129
18795
883c18d31bf4 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18785
diff changeset
1130 style = xmlnode_get_attrib(text_node, "Style");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1131
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1132 tmp = xmlnode_get_data(text_node);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1133 if (style && *style) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1134 text = g_string_append(text, "<span style=\"");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1135 text = g_string_append(text, style);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1136 text = g_string_append(text, "\">");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1137 text = g_string_append(text, tmp);
18372
47ff5e98b371 Make the MSN logger set flags and ues <br> instead of \n. This fixes the
Richard Laager <rlaager@wiktel.com>
parents: 18371
diff changeset
1138 text = g_string_append(text, "</span><br>");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1139 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1140 text = g_string_append(text, tmp);
18372
47ff5e98b371 Make the MSN logger set flags and ues <br> instead of \n. This fixes the
Richard Laager <rlaager@wiktel.com>
parents: 18371
diff changeset
1141 text = g_string_append(text, "<br>");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1142 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1143 g_free(tmp);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1144 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1145
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1146 data->text = text;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1147
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1148 return text->str;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1149 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1150
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
1151 static int msn_logger_size (PurpleLog *log)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1152 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1153 char *text;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1154 size_t size;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1155
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1156 g_return_val_if_fail(log != NULL, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1157
16430
f8eb3e7c4fbd Fix GTK Plugin prefs
Sean Egan <seanegan@gmail.com>
parents: 16424
diff changeset
1158 if (purple_prefs_get_bool("/plugins/core/log_reader/fast_sizes"))
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1159 return 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1160
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1161 text = msn_logger_read(log, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1162 size = strlen(text);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1163 g_free(text);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1164
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1165 return size;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1166 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1167
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
1168 static void msn_logger_finalize(PurpleLog *log)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1169 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1170 struct msn_logger_data *data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1171
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1172 g_return_if_fail(log != NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1173
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1174 data = log->logger_data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1175
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1176 if (data->last_log)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1177 xmlnode_free(data->root);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1178
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1179 if (data->text)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1180 g_string_free(data->text, FALSE);
18246
e236b3bd4542 Eliminate some leaks.
Richard Laager <rlaager@wiktel.com>
parents: 18245
diff changeset
1181
e236b3bd4542 Eliminate some leaks.
Richard Laager <rlaager@wiktel.com>
parents: 18245
diff changeset
1182 g_free(data);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1183 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1184
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1185
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1186 /*****************************************************************************
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1187 * Trillian Logger *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1188 *****************************************************************************/
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1189
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1190 /* The trillian logger doesn't write logs, only reads them. This is to include
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1191 * Trillian logs in the log viewer transparently.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1192 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1193
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
1194 static PurpleLogLogger *trillian_logger;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
1195 static void trillian_logger_finalize(PurpleLog *log);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1196
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1197 struct trillian_logger_data {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
1198 char *path; /* FIXME: Change this to use PurpleStringref like log.c:old_logger_list */
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1199 int offset;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1200 int length;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1201 char *their_nickname;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1202 };
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1203
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
1204 static GList *trillian_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1205 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1206 GList *list = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1207 const char *logdir;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
1208 PurplePlugin *plugin;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
1209 PurplePluginProtocolInfo *prpl_info;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1210 char *prpl_name;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1211 const char *buddy_name;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1212 char *filename;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1213 char *path;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1214 GError *error = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1215 gchar *contents = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1216 gsize length;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1217 gchar *line;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1218 gchar *c;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1219
18795
883c18d31bf4 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18785
diff changeset
1220 g_return_val_if_fail(sn != NULL, NULL);
883c18d31bf4 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18785
diff changeset
1221 g_return_val_if_fail(account != NULL, NULL);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1222
16430
f8eb3e7c4fbd Fix GTK Plugin prefs
Sean Egan <seanegan@gmail.com>
parents: 16424
diff changeset
1223 logdir = purple_prefs_get_string("/plugins/core/log_reader/trillian/log_directory");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1224
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1225 /* By clearing the log directory path, this logger can be (effectively) disabled. */
18795
883c18d31bf4 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18785
diff changeset
1226 if (!logdir || !*logdir)
883c18d31bf4 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18785
diff changeset
1227 return NULL;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1228
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
1229 plugin = purple_find_prpl(purple_account_get_protocol_id(account));
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1230 if (!plugin)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1231 return NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1232
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
1233 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(plugin);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1234 if (!prpl_info->list_icon)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1235 return NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1236
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1237 prpl_name = g_ascii_strup(prpl_info->list_icon(account, NULL), -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1238
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
1239 buddy_name = purple_normalize(account, sn);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1240
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1241 filename = g_strdup_printf("%s.log", buddy_name);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1242 path = g_build_filename(
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1243 logdir, prpl_name, filename, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1244
18245
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
1245 purple_debug_info("Trillian log list", "Reading %s\n", path);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1246 /* FIXME: There's really no need to read the entire file at once.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1247 * See src/log.c:old_logger_list for a better approach.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1248 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1249 if (!g_file_get_contents(path, &contents, &length, &error)) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1250 if (error) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1251 g_error_free(error);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1252 error = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1253 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1254 g_free(path);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1255
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1256 path = g_build_filename(
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1257 logdir, prpl_name, "Query", filename, NULL);
18245
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
1258 purple_debug_info("Trillian log list", "Reading %s\n", path);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1259 if (!g_file_get_contents(path, &contents, &length, &error)) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1260 if (error)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1261 g_error_free(error);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1262 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1263 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1264 g_free(filename);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1265
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1266 if (contents) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1267 struct trillian_logger_data *data = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1268 int offset = 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1269 int last_line_offset = 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1270
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1271 line = contents;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1272 c = contents;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1273 while (*c) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1274 offset++;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1275
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1276 if (*c != '\n') {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1277 c++;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1278 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1279 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1280
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1281 *c = '\0';
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
1282 if (purple_str_has_prefix(line, "Session Close ")) {
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1283 if (data && !data->length) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1284 if (!(data->length = last_line_offset - data->offset)) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1285 /* This log had no data, so we remove it. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1286 GList *last = g_list_last(list);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1287
18245
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
1288 purple_debug_info("Trillian log list",
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
1289 "Empty log. Offset %i\n", data->offset);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1290
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
1291 trillian_logger_finalize((PurpleLog *)last->data);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1292 list = g_list_delete_link(list, last);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1293 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1294 }
18108
c0cd4d84ba52 Fix a mistake noticed by Michael Shkutkov and add a comment explaining the code.
Richard Laager <rlaager@wiktel.com>
parents: 17531
diff changeset
1295 } else if (line[0] && line[1] && line[2] &&
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
1296 purple_str_has_prefix(&line[3], "sion Start ")) {
18108
c0cd4d84ba52 Fix a mistake noticed by Michael Shkutkov and add a comment explaining the code.
Richard Laager <rlaager@wiktel.com>
parents: 17531
diff changeset
1297 /* The conditional is to make sure we're not reading off
c0cd4d84ba52 Fix a mistake noticed by Michael Shkutkov and add a comment explaining the code.
Richard Laager <rlaager@wiktel.com>
parents: 17531
diff changeset
1298 * the end of the string. We don't want strlen(), as that'd
c0cd4d84ba52 Fix a mistake noticed by Michael Shkutkov and add a comment explaining the code.
Richard Laager <rlaager@wiktel.com>
parents: 17531
diff changeset
1299 * have to count the whole string needlessly.
18248
ab761acbc614 Remove trailing whitespace.
Richard Laager <rlaager@wiktel.com>
parents: 18247
diff changeset
1300 *
18108
c0cd4d84ba52 Fix a mistake noticed by Michael Shkutkov and add a comment explaining the code.
Richard Laager <rlaager@wiktel.com>
parents: 17531
diff changeset
1301 * The odd check here is because a Session Start at the
c0cd4d84ba52 Fix a mistake noticed by Michael Shkutkov and add a comment explaining the code.
Richard Laager <rlaager@wiktel.com>
parents: 17531
diff changeset
1302 * beginning of the file can be overwritten with a UTF-8
c0cd4d84ba52 Fix a mistake noticed by Michael Shkutkov and add a comment explaining the code.
Richard Laager <rlaager@wiktel.com>
parents: 17531
diff changeset
1303 * byte order mark. Yes, it's weird.
c0cd4d84ba52 Fix a mistake noticed by Michael Shkutkov and add a comment explaining the code.
Richard Laager <rlaager@wiktel.com>
parents: 17531
diff changeset
1304 */
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1305 char *their_nickname = line;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1306 char *timestamp;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1307
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1308 if (data && !data->length)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1309 data->length = last_line_offset - data->offset;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1310
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1311 while (*their_nickname && (*their_nickname != ':'))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1312 their_nickname++;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1313 their_nickname++;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1314
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1315 /* This code actually has nothing to do with
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1316 * the timestamp YET. I'm simply using this
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1317 * variable for now to NUL-terminate the
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1318 * their_nickname string.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1319 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1320 timestamp = their_nickname;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1321 while (*timestamp && *timestamp != ')')
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1322 timestamp++;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1323
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1324 if (*timestamp == ')') {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1325 char *month;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1326 struct tm tm;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1327
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1328 *timestamp = '\0';
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1329 if (line[0] && line[1] && line[2])
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1330 timestamp += 3;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1331
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1332 /* Now we start dealing with the timestamp. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1333
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1334 /* Skip over the day name. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1335 while (*timestamp && (*timestamp != ' '))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1336 timestamp++;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1337 *timestamp = '\0';
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1338 timestamp++;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1339
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1340 /* Parse out the month. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1341 month = timestamp;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1342 while (*timestamp && (*timestamp != ' '))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1343 timestamp++;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1344 *timestamp = '\0';
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1345 timestamp++;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1346
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1347 /* Parse the day, time, and year. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1348 if (sscanf(timestamp, "%u %u:%u:%u %u",
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1349 &tm.tm_mday, &tm.tm_hour,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1350 &tm.tm_min, &tm.tm_sec,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1351 &tm.tm_year) != 5) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1352
18245
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
1353 purple_debug_error("Trillian log timestamp parse",
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
1354 "Session Start parsing error\n");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1355 } else {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
1356 PurpleLog *log;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1357
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1358 tm.tm_year -= 1900;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1359
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1360 /* Let the C library deal with
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1361 * daylight savings time.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1362 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1363 tm.tm_isdst = -1;
20909
feca1fd51b57 Use functions and loops and all those fancy things.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20898
diff changeset
1364 tm.tm_mon = get_month(month);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1365
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1366 data = g_new0(
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1367 struct trillian_logger_data, 1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1368 data->path = g_strdup(path);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1369 data->offset = offset;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1370 data->length = 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1371 data->their_nickname =
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1372 g_strdup(their_nickname);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1374 /* XXX: Look into this later... Should we pass in a struct tm? */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
1375 log = purple_log_new(PURPLE_LOG_IM,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1376 sn, account, NULL, mktime(&tm), NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1377 log->logger = trillian_logger;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1378 log->logger_data = data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1379
18249
35d981091506 Prepend to lists for performance, and use g_list_reverse when the list is
Richard Laager <rlaager@wiktel.com>
parents: 18248
diff changeset
1380 list = g_list_prepend(list, log);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1381 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1382 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1383 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1384 c++;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1385 line = c;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1386 last_line_offset = offset;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1387 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1388
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1389 g_free(contents);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1390 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1391 g_free(path);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1392
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1393 g_free(prpl_name);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1394
18249
35d981091506 Prepend to lists for performance, and use g_list_reverse when the list is
Richard Laager <rlaager@wiktel.com>
parents: 18248
diff changeset
1395 return g_list_reverse(list);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1396 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1397
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
1398 static char * trillian_logger_read (PurpleLog *log, PurpleLogReadFlags *flags)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1399 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1400 struct trillian_logger_data *data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1401 char *read;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1402 FILE *file;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
1403 PurpleBuddy *buddy;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1404 char *escaped;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1405 GString *formatted;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1406 char *c;
17528
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1407 const char *line;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1408
18795
883c18d31bf4 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18785
diff changeset
1409 if (flags != NULL)
883c18d31bf4 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18785
diff changeset
1410 *flags = PURPLE_LOG_READ_NO_NEWLINE;
18785
3cc77409b858 bug with flags variable initialization was fixed
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18765
diff changeset
1411
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1412 g_return_val_if_fail(log != NULL, g_strdup(""));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1413
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1414 data = log->logger_data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1415
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1416 g_return_val_if_fail(data->path != NULL, g_strdup(""));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1417 g_return_val_if_fail(data->length > 0, g_strdup(""));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1418 g_return_val_if_fail(data->their_nickname != NULL, g_strdup(""));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1419
18245
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
1420 purple_debug_info("Trillian log read", "Reading %s\n", data->path);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1421
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1422 read = g_malloc(data->length + 2);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1423
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1424 file = g_fopen(data->path, "rb");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1425 fseek(file, data->offset, SEEK_SET);
20910
54d232b52607 Since we are looking at the return value of fread, it actually matters that
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20909
diff changeset
1426 data->length = fread(read, 1, data->length, file);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1427 fclose(file);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1428
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1429 if (read[data->length-1] == '\n') {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1430 read[data->length] = '\0';
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1431 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1432 read[data->length] = '\n';
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1433 read[data->length+1] = '\0';
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1434 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1435
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1436 /* Load miscellaneous data. */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
1437 buddy = purple_find_buddy(log->account, log->name);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1438
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1439 escaped = g_markup_escape_text(read, -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1440 g_free(read);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1441 read = escaped;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1442
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1443 /* Apply formatting... */
17529
c529c95e7733 Size the formatting string first, to avoid unnecessary resizing.
Richard Laager <rlaager@wiktel.com>
parents: 17528
diff changeset
1444 formatted = g_string_sized_new(strlen(read));
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1445 c = read;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1446 line = read;
17528
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1447 while (c)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1448 {
17528
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1449 const char *link;
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1450 const char *footer = NULL;
17531
21773944db4b Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents: 17530
diff changeset
1451 GString *temp = NULL;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1452
17531
21773944db4b Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents: 17530
diff changeset
1453 if ((c = strstr(c, "\n")))
21773944db4b Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents: 17530
diff changeset
1454 {
17528
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1455 *c = '\0';
17531
21773944db4b Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents: 17530
diff changeset
1456 c++;
17528
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1457 }
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1458
17528
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1459 /* Convert links.
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1460 *
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1461 * The format is (Link: URL)URL
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1462 * So, I want to find each occurance of "(Link: " and replace that chunk with:
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1463 * <a href="
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1464 * Then, replace the next ")" with:
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1465 * ">
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1466 * Then, replace the next " " (or add this if the end-of-line is reached) with:
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1467 * </a>
18248
ab761acbc614 Remove trailing whitespace.
Richard Laager <rlaager@wiktel.com>
parents: 18247
diff changeset
1468 *
17528
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1469 * As implemented, this isn't perfect, but it should cover common cases.
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1470 */
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1471 while (line && (link = strstr(line, "(Link: ")))
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1472 {
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1473 const char *tmp = link;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1474
17528
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1475 link += 7;
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1476 if (*link)
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1477 {
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1478 char *end_paren;
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1479 char *space;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1480
17528
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1481 if (!(end_paren = strstr(link, ")")))
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1482 {
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1483 /* Something is not as we expect. Bail out. */
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1484 break;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1485 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1486
17531
21773944db4b Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents: 17530
diff changeset
1487 if (!temp)
21773944db4b Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents: 17530
diff changeset
1488 temp = g_string_sized_new(c ? (c - 1 - line) : strlen(line));
21773944db4b Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents: 17530
diff changeset
1489
17528
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1490 g_string_append_len(temp, line, (tmp - line));
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1491
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1492 /* Start an <a> tag. */
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1493 g_string_append(temp, "<a href=\"");
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1494
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1495 /* Append up to the ) */
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1496 g_string_append_len(temp, link, end_paren - link);
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1497
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1498 /* Finish the <a> tag. */
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1499 g_string_append(temp, "\">");
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1500
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1501 /* The \r is a bit of a hack to keep there from being a \r in
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1502 * the link text, which may not matter. */
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1503 if ((space = strstr(end_paren, " ")) || (space = strstr(end_paren, "\r")))
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1504 {
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1505 g_string_append_len(temp, end_paren + 1, space - end_paren - 1);
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1506
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1507 /* Close the <a> tag. */
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1508 g_string_append(temp, "</a>");
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1509
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1510 space++;
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1511 }
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1512 else
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1513 {
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1514 /* There is no space before the end of the line. */
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1515 g_string_append(temp, end_paren + 1);
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1516 /* Close the <a> tag. */
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1517 g_string_append(temp, "</a>");
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1518 }
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1519 line = space;
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1520 }
17530
a6594c34635b Bail out to avoid an infinite loop in an extreme corner case.
Richard Laager <rlaager@wiktel.com>
parents: 17529
diff changeset
1521 else
a6594c34635b Bail out to avoid an infinite loop in an extreme corner case.
Richard Laager <rlaager@wiktel.com>
parents: 17529
diff changeset
1522 {
a6594c34635b Bail out to avoid an infinite loop in an extreme corner case.
Richard Laager <rlaager@wiktel.com>
parents: 17529
diff changeset
1523 /* Something is not as we expect. Bail out. */
a6594c34635b Bail out to avoid an infinite loop in an extreme corner case.
Richard Laager <rlaager@wiktel.com>
parents: 17529
diff changeset
1524 break;
a6594c34635b Bail out to avoid an infinite loop in an extreme corner case.
Richard Laager <rlaager@wiktel.com>
parents: 17529
diff changeset
1525 }
17528
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1526 }
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1527
17531
21773944db4b Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents: 17530
diff changeset
1528 if (temp)
21773944db4b Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents: 17530
diff changeset
1529 {
21773944db4b Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents: 17530
diff changeset
1530 if (line)
21773944db4b Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents: 17530
diff changeset
1531 g_string_append(temp, line);
21773944db4b Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents: 17530
diff changeset
1532 line = temp->str;
17528
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1533 }
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1534
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1535 if (*line == '[') {
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1536 const char *timestamp;
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1537
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1538 if ((timestamp = strstr(line, "]"))) {
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1539 line++;
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1540 /* TODO: Parse the timestamp and convert it to Purple's format. */
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1541 g_string_append(formatted, "<font size=\"2\">(");
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1542 g_string_append_len(formatted, line, (timestamp - line));
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1543 g_string_append(formatted,")</font> ");
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1544 line = timestamp + 1;
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1545 if (line[0] && line[1])
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1546 line++;
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1547 }
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1548
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1549 if (purple_str_has_prefix(line, "*** ")) {
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1550 line += (sizeof("*** ") - 1);
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1551 g_string_append(formatted, "<b>");
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1552 footer = "</b>";
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1553 if (purple_str_has_prefix(line, "NOTE: This user is offline.")) {
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1554 line = _("User is offline.");
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1555 } else if (purple_str_has_prefix(line,
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1556 "NOTE: Your status is currently set to ")) {
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1557
17528
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1558 line += (sizeof("NOTE: ") - 1);
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1559 } else if (purple_str_has_prefix(line, "Auto-response sent to ")) {
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1560 g_string_append(formatted, _("Auto-response sent:"));
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1561 while (*line && *line != ':')
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1562 line++;
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1563 if (*line)
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1564 line++;
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1565 g_string_append(formatted, "</b>");
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1566 footer = NULL;
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1567 } else if (strstr(line, " signed off ")) {
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1568 if (buddy != NULL && buddy->alias)
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1569 g_string_append_printf(formatted,
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1570 _("%s has signed off."), buddy->alias);
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1571 else
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1572 g_string_append_printf(formatted,
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1573 _("%s has signed off."), log->name);
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1574 line = "";
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1575 } else if (strstr(line, " signed on ")) {
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1576 if (buddy != NULL && buddy->alias)
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1577 g_string_append(formatted, buddy->alias);
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1578 else
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1579 g_string_append(formatted, log->name);
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1580 line = " logged in.";
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1581 } else if (purple_str_has_prefix(line,
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1582 "One or more messages may have been undeliverable.")) {
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1583
17528
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1584 g_string_append(formatted,
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1585 "<span style=\"color: #ff0000;\">");
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1586 g_string_append(formatted,
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1587 _("One or more messages may have been "
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1588 "undeliverable."));
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1589 line = "";
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1590 footer = "</span></b>";
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1591 } else if (purple_str_has_prefix(line,
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1592 "You have been disconnected.")) {
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1593
17528
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1594 g_string_append(formatted,
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1595 "<span style=\"color: #ff0000;\">");
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1596 g_string_append(formatted,
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1597 _("You were disconnected from the server."));
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1598 line = "";
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1599 footer = "</span></b>";
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1600 } else if (purple_str_has_prefix(line,
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1601 "You are currently disconnected.")) {
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1602
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1603 g_string_append(formatted,
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1604 "<span style=\"color: #ff0000;\">");
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1605 line = _("You are currently disconnected. Messages "
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1606 "will not be received unless you are "
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1607 "logged in.");
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1608 footer = "</span></b>";
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1609 } else if (purple_str_has_prefix(line,
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1610 "Your previous message has not been sent.")) {
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1611
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1612 g_string_append(formatted,
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1613 "<span style=\"color: #ff0000;\">");
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1614
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1615 if (purple_str_has_prefix(line,
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1616 "Your previous message has not been sent. "
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1617 "Reason: Maximum length exceeded.")) {
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1618
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1619 g_string_append(formatted,
17528
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1620 _("Message could not be sent because "
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1621 "the maximum length was exceeded."));
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1622 line = "";
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1623 } else {
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1624 g_string_append(formatted,
17528
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1625 _("Message could not be sent."));
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1626 line += (sizeof(
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1627 "Your previous message "
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1628 "has not been sent. ") - 1);
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1629 }
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1630
17528
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1631 footer = "</span></b>";
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1632 }
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1633 } else if (purple_str_has_prefix(line, data->their_nickname)) {
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1634 if (buddy != NULL && buddy->alias) {
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1635 line += strlen(data->their_nickname) + 2;
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1636 g_string_append_printf(formatted,
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1637 "<span style=\"color: #A82F2F;\">"
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1638 "<b>%s</b></span>: ", buddy->alias);
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1639 }
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1640 } else {
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1641 const char *line2 = strstr(line, ":");
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1642 if (line2) {
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1643 const char *acct_name;
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1644 line2++;
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1645 line = line2;
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1646 acct_name = purple_account_get_alias(log->account);
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1647 if (!acct_name)
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1648 acct_name = purple_account_get_username(log->account);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1649
17528
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1650 g_string_append_printf(formatted,
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1651 "<span style=\"color: #16569E;\">"
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1652 "<b>%s</b></span>:", acct_name);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1653 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1654 }
17528
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1655 }
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1656
17528
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1657 g_string_append(formatted, line);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1658
17531
21773944db4b Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents: 17530
diff changeset
1659 line = c;
21773944db4b Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents: 17530
diff changeset
1660 if (temp)
21773944db4b Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents: 17530
diff changeset
1661 g_string_free(temp, TRUE);
21773944db4b Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents: 17530
diff changeset
1662
17528
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1663 if (footer)
beeef78409b2 A patch from o_sukhodolsky to restructure the Trillian log formatting code
Richard Laager <rlaager@wiktel.com>
parents: 17467
diff changeset
1664 g_string_append(formatted, footer);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1665
18360
d8f783ed28d3 Make the Trillian logger set flags properly, and use <br> instead of \n for
Richard Laager <rlaager@wiktel.com>
parents: 18359
diff changeset
1666 g_string_append(formatted, "<br>");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1667 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1668
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1669 g_free(read);
18360
d8f783ed28d3 Make the Trillian logger set flags properly, and use <br> instead of \n for
Richard Laager <rlaager@wiktel.com>
parents: 18359
diff changeset
1670
d8f783ed28d3 Make the Trillian logger set flags properly, and use <br> instead of \n for
Richard Laager <rlaager@wiktel.com>
parents: 18359
diff changeset
1671 /* XXX: TODO: What can we do about removing \r characters?
d8f783ed28d3 Make the Trillian logger set flags properly, and use <br> instead of \n for
Richard Laager <rlaager@wiktel.com>
parents: 18359
diff changeset
1672 * XXX: TODO: and will that allow us to avoid this
d8f783ed28d3 Make the Trillian logger set flags properly, and use <br> instead of \n for
Richard Laager <rlaager@wiktel.com>
parents: 18359
diff changeset
1673 * XXX: TODO: g_strchomp(), or is that unrelated? */
17531
21773944db4b Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents: 17530
diff changeset
1674 /* XXX: TODO: Avoid this g_strchomp() */
21773944db4b Don't create the temp GString unless it's actually needed, and avoid
Richard Laager <rlaager@wiktel.com>
parents: 17530
diff changeset
1675 return g_strchomp(g_string_free(formatted, FALSE));
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1676 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1677
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
1678 static int trillian_logger_size (PurpleLog *log)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1679 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1680 struct trillian_logger_data *data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1681 char *text;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1682 size_t size;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1683
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1684 g_return_val_if_fail(log != NULL, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1685
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1686 data = log->logger_data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1687
16430
f8eb3e7c4fbd Fix GTK Plugin prefs
Sean Egan <seanegan@gmail.com>
parents: 16424
diff changeset
1688 if (purple_prefs_get_bool("/plugins/core/log_reader/fast_sizes")) {
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1689 return data ? data->length : 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1690 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1691
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1692 text = trillian_logger_read(log, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1693 size = strlen(text);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1694 g_free(text);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1695
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1696 return size;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1697 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1698
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
1699 static void trillian_logger_finalize(PurpleLog *log)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1700 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1701 struct trillian_logger_data *data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1702
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1703 g_return_if_fail(log != NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1704
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1705 data = log->logger_data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1706
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1707 g_free(data->path);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1708 g_free(data->their_nickname);
18246
e236b3bd4542 Eliminate some leaks.
Richard Laager <rlaager@wiktel.com>
parents: 18245
diff changeset
1709 g_free(data);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1710 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1711
17979
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1712 /*****************************************************************************
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1713 * QIP Logger *
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1714 *****************************************************************************/
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1715
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1716 /* The QIP logger doesn't write logs, only reads them. This is to include
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1717 * QIP logs in the log viewer transparently.
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1718 */
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1719 #define QIP_LOG_DELIMITER "--------------------------------------"
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1720 #define QIP_LOG_IN_MESSAGE (QIP_LOG_DELIMITER "<-")
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1721 #define QIP_LOG_OUT_MESSAGE (QIP_LOG_DELIMITER ">-")
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1722 #define QIP_LOG_IN_MESSAGE_ESC (QIP_LOG_DELIMITER "&lt;-")
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1723 #define QIP_LOG_OUT_MESSAGE_ESC (QIP_LOG_DELIMITER "&gt;-")
18176
b14dfa2f49a1 creat new log if difference between current and previous message more then predefined constant (currently one hour)
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18175
diff changeset
1724 #define QIP_LOG_TIMEOUT (60*60)
17979
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1725
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1726 static PurpleLogLogger *qip_logger;
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1727
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1728 struct qip_logger_data {
18248
ab761acbc614 Remove trailing whitespace.
Richard Laager <rlaager@wiktel.com>
parents: 18247
diff changeset
1729
17979
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1730 char *path; /* FIXME: Change this to use PurpleStringref like log.c:old_logger_list */
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1731 int offset;
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1732 int length;
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1733 };
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1734
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1735 static GList *qip_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account)
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1736 {
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1737 GList *list = NULL;
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1738 const char *logdir;
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1739 PurplePlugin *plugin;
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1740 PurplePluginProtocolInfo *prpl_info;
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1741 char *username;
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1742 char *filename;
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1743 char *path;
18251
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1744 char *contents;
18247
97671eb4991e Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents: 18246
diff changeset
1745 struct qip_logger_data *data = NULL;
97671eb4991e Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents: 18246
diff changeset
1746 struct tm prev_tm;
18254
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1747 struct tm tm;
18247
97671eb4991e Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents: 18246
diff changeset
1748 gboolean prev_tm_init = FALSE;
18254
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1749 gboolean main_cycle = TRUE;
18247
97671eb4991e Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents: 18246
diff changeset
1750 char *c;
97671eb4991e Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents: 18246
diff changeset
1751 char *start_log;
18254
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1752 char *new_line;
18247
97671eb4991e Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents: 18246
diff changeset
1753 int offset = 0;
18255
507fb436d8c0 optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18254
diff changeset
1754 GError *error;
17979
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1755
18795
883c18d31bf4 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18785
diff changeset
1756 g_return_val_if_fail(sn != NULL, NULL);
883c18d31bf4 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18785
diff changeset
1757 g_return_val_if_fail(account != NULL, NULL);
17979
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1758
18247
97671eb4991e Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents: 18246
diff changeset
1759 /* QIP only supports ICQ. */
17979
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1760 if (strcmp(account->protocol_id, "prpl-icq"))
18795
883c18d31bf4 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18785
diff changeset
1761 return NULL;
17979
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1762
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1763 logdir = purple_prefs_get_string("/plugins/core/log_reader/qip/log_directory");
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1764
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1765 /* By clearing the log directory path, this logger can be (effectively) disabled. */
18795
883c18d31bf4 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18785
diff changeset
1766 if (!logdir || !*logdir)
883c18d31bf4 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18785
diff changeset
1767 return NULL;
17979
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1768
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1769 plugin = purple_find_prpl(purple_account_get_protocol_id(account));
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1770 if (!plugin)
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1771 return NULL;
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1772
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1773 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(plugin);
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1774 if (!prpl_info->list_icon)
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1775 return NULL;
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1776
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1777 username = g_strdup(purple_normalize(account, account->username));
18247
97671eb4991e Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents: 18246
diff changeset
1778 filename = g_strdup_printf("%s.txt", purple_normalize(account, sn));
97671eb4991e Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents: 18246
diff changeset
1779 path = g_build_filename(logdir, username, "History", filename, NULL);
97671eb4991e Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents: 18246
diff changeset
1780 g_free(username);
97671eb4991e Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents: 18246
diff changeset
1781 g_free(filename);
97671eb4991e Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents: 18246
diff changeset
1782
18255
507fb436d8c0 optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18254
diff changeset
1783 purple_debug_info("QIP logger", "Reading %s\n", path);
507fb436d8c0 optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18254
diff changeset
1784
507fb436d8c0 optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18254
diff changeset
1785 error = NULL;
507fb436d8c0 optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18254
diff changeset
1786 if (!g_file_get_contents(path, &contents, NULL, &error)) {
507fb436d8c0 optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18254
diff changeset
1787 purple_debug_error("QIP logger",
20329
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
1788 "Couldn't read file %s: %s \n", path,
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
1789 (error && error->message) ? error->message : "Unknown error");
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
1790 if (error)
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
1791 g_error_free(error);
18247
97671eb4991e Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents: 18246
diff changeset
1792 g_free(path);
97671eb4991e Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents: 18246
diff changeset
1793 return list;
97671eb4991e Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents: 18246
diff changeset
1794 }
97671eb4991e Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents: 18246
diff changeset
1795
97671eb4991e Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents: 18246
diff changeset
1796 c = contents;
97671eb4991e Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents: 18246
diff changeset
1797 start_log = contents;
18254
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1798 while (main_cycle) {
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1799
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1800 gboolean add_new_log = FALSE;
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1801
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1802 if (*c) {
18255
507fb436d8c0 optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18254
diff changeset
1803 if (purple_str_has_prefix(c, QIP_LOG_IN_MESSAGE) ||
507fb436d8c0 optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18254
diff changeset
1804 purple_str_has_prefix(c, QIP_LOG_OUT_MESSAGE)) {
18254
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1805
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1806 char *tmp;
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1807
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1808 new_line = c;
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1809
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1810 /* find EOL */
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1811 c = strstr(c, "\n");
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1812 c++;
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1813
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1814 /* Find the last '(' character. */
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1815 if ((tmp = strstr(c, "\n")) != NULL) {
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1816 while (*tmp && *tmp != '(') --tmp;
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1817 c = tmp;
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1818 } else {
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1819 while (*c)
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1820 c++;
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1821 c--;
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1822 c = g_strrstr(c, "(");
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1823 }
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1824
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1825 if (c != NULL) {
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1826 const char *timestamp = ++c;
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1827
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1828 /* Parse the time, day, month and year */
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1829 if (sscanf(timestamp, "%u:%u:%u %u/%u/%u",
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1830 &tm.tm_hour, &tm.tm_min, &tm.tm_sec,
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1831 &tm.tm_mday, &tm.tm_mon, &tm.tm_year) != 6) {
18247
97671eb4991e Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents: 18246
diff changeset
1832
97671eb4991e Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents: 18246
diff changeset
1833 purple_debug_error("QIP logger list",
18254
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1834 "Parsing timestamp error\n");
18247
97671eb4991e Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents: 18246
diff changeset
1835 } else {
18254
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1836 tm.tm_mon -= 1;
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1837 tm.tm_year -= 1900;
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1838
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1839 /* Let the C library deal with
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1840 * daylight savings time. */
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1841 tm.tm_isdst = -1;
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1842
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1843 if (!prev_tm_init) {
18247
97671eb4991e Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents: 18246
diff changeset
1844 prev_tm = tm;
18254
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1845 prev_tm_init = TRUE;
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1846 } else {
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1847 add_new_log = difftime(mktime(&tm), mktime(&prev_tm)) > QIP_LOG_TIMEOUT;
18176
b14dfa2f49a1 creat new log if difference between current and previous message more then predefined constant (currently one hour)
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18175
diff changeset
1848 }
b14dfa2f49a1 creat new log if difference between current and previous message more then predefined constant (currently one hour)
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18175
diff changeset
1849 }
b14dfa2f49a1 creat new log if difference between current and previous message more then predefined constant (currently one hour)
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18175
diff changeset
1850 }
b14dfa2f49a1 creat new log if difference between current and previous message more then predefined constant (currently one hour)
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18175
diff changeset
1851 }
18247
97671eb4991e Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents: 18246
diff changeset
1852 } else {
18254
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1853 add_new_log = TRUE;
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1854 main_cycle = FALSE;
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1855 new_line = c;
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1856 }
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1857
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1858 /* adding log */
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1859 if (add_new_log && prev_tm_init) {
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1860 PurpleLog *log;
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1861
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1862 /* filling data */
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1863 data = g_new0(struct qip_logger_data, 1);
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1864 data->path = g_strdup(path);
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1865 data->length = new_line - start_log;
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1866 data->offset = offset;
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1867 offset += data->length;
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1868 purple_debug_info("QIP logger list",
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1869 "Creating log: path = (%s); length = (%d); offset = (%d)\n",
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1870 data->path, data->length, data->offset);
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1871
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1872 /* XXX: Look into this later... Should we pass in a struct tm? */
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1873 log = purple_log_new(PURPLE_LOG_IM, sn, account,
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1874 NULL, mktime(&prev_tm), NULL);
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1875
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1876 log->logger = qip_logger;
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1877 log->logger_data = data;
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1878
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1879 list = g_list_prepend(list, log);
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1880
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1881 prev_tm = tm;
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1882 start_log = new_line;
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1883 }
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1884
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1885 if (*c) {
991f33e9e1a4 avoiding some finding EOL and creating new log only in one place
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18253
diff changeset
1886 /* find EOF */
18247
97671eb4991e Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents: 18246
diff changeset
1887 c = strstr(c, "\n");
97671eb4991e Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents: 18246
diff changeset
1888 c++;
18172
3aa11b0169c9 Converting all qip logs into UTF8
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18171
diff changeset
1889 }
18247
97671eb4991e Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents: 18246
diff changeset
1890 }
18248
ab761acbc614 Remove trailing whitespace.
Richard Laager <rlaager@wiktel.com>
parents: 18247
diff changeset
1891
18247
97671eb4991e Avoid some extra nesting.
Richard Laager <rlaager@wiktel.com>
parents: 18246
diff changeset
1892 g_free(contents);
17979
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1893 g_free(path);
18249
35d981091506 Prepend to lists for performance, and use g_list_reverse when the list is
Richard Laager <rlaager@wiktel.com>
parents: 18248
diff changeset
1894 return g_list_reverse(list);
17979
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1895 }
18248
ab761acbc614 Remove trailing whitespace.
Richard Laager <rlaager@wiktel.com>
parents: 18247
diff changeset
1896
18251
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1897 static char *qip_logger_read(PurpleLog *log, PurpleLogReadFlags *flags)
17979
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1898 {
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1899 struct qip_logger_data *data;
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1900 PurpleBuddy *buddy;
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1901 GString *formatted;
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1902 char *c;
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1903 const char *line;
18251
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1904 gchar *contents;
18255
507fb436d8c0 optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18254
diff changeset
1905 GError *error;
507fb436d8c0 optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18254
diff changeset
1906 char *utf8_string;
18256
54251fa6389d reading only necessary part of log file using g_fopen/fseek/fread
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18255
diff changeset
1907 FILE *file;
54251fa6389d reading only necessary part of log file using g_fopen/fseek/fread
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18255
diff changeset
1908
18795
883c18d31bf4 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18785
diff changeset
1909 if (flags != NULL)
883c18d31bf4 Fix more null pointer derefs in the log reader plugin. Fixes #2378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18785
diff changeset
1910 *flags = PURPLE_LOG_READ_NO_NEWLINE;
18785
3cc77409b858 bug with flags variable initialization was fixed
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18765
diff changeset
1911
17979
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1912 g_return_val_if_fail(log != NULL, g_strdup(""));
18248
ab761acbc614 Remove trailing whitespace.
Richard Laager <rlaager@wiktel.com>
parents: 18247
diff changeset
1913
17979
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1914 data = log->logger_data;
18248
ab761acbc614 Remove trailing whitespace.
Richard Laager <rlaager@wiktel.com>
parents: 18247
diff changeset
1915
17979
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1916 g_return_val_if_fail(data->path != NULL, g_strdup(""));
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1917 g_return_val_if_fail(data->length > 0, g_strdup(""));
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
1918
18256
54251fa6389d reading only necessary part of log file using g_fopen/fseek/fread
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18255
diff changeset
1919 file = g_fopen(data->path, "rb");
54251fa6389d reading only necessary part of log file using g_fopen/fseek/fread
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18255
diff changeset
1920 g_return_val_if_fail(file != NULL, g_strdup(""));
20332
3a9709bfde65 applied changes from 4d50bf3b08569aa2108a9f5da47fb1548d0c7dd9
Luke Schierer <lschiere@pidgin.im>
parents: 20329
diff changeset
1921
3a9709bfde65 applied changes from 4d50bf3b08569aa2108a9f5da47fb1548d0c7dd9
Luke Schierer <lschiere@pidgin.im>
parents: 20329
diff changeset
1922 contents = g_malloc(data->length + 2);
3a9709bfde65 applied changes from 4d50bf3b08569aa2108a9f5da47fb1548d0c7dd9
Luke Schierer <lschiere@pidgin.im>
parents: 20329
diff changeset
1923
18256
54251fa6389d reading only necessary part of log file using g_fopen/fseek/fread
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18255
diff changeset
1924 fseek(file, data->offset, SEEK_SET);
20910
54d232b52607 Since we are looking at the return value of fread, it actually matters that
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20909
diff changeset
1925 data->length = fread(contents, 1, data->length, file);
18256
54251fa6389d reading only necessary part of log file using g_fopen/fseek/fread
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18255
diff changeset
1926 fclose(file);
54251fa6389d reading only necessary part of log file using g_fopen/fseek/fread
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18255
diff changeset
1927
54251fa6389d reading only necessary part of log file using g_fopen/fseek/fread
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18255
diff changeset
1928 contents[data->length] = '\n';
54251fa6389d reading only necessary part of log file using g_fopen/fseek/fread
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18255
diff changeset
1929 contents[data->length + 1] = '\0';
18255
507fb436d8c0 optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18254
diff changeset
1930
507fb436d8c0 optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18254
diff changeset
1931 /* Convert file contents from Cp1251 to UTF-8 codeset */
507fb436d8c0 optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18254
diff changeset
1932 error = NULL;
507fb436d8c0 optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18254
diff changeset
1933 if (!(utf8_string = g_convert(contents, -1, "UTF-8", "Cp1251", NULL, NULL, &error))) {
507fb436d8c0 optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18254
diff changeset
1934 purple_debug_error("QIP logger",
20329
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
1935 "Couldn't convert file %s to UTF-8: %s\n", data->path,
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
1936 (error && error->message) ? error->message : "Unknown error");
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
1937 if (error)
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
1938 g_error_free(error);
18255
507fb436d8c0 optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18254
diff changeset
1939 g_free(contents);
507fb436d8c0 optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18254
diff changeset
1940 return g_strdup("");
507fb436d8c0 optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18254
diff changeset
1941 }
18251
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1942
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1943 g_free(contents);
18255
507fb436d8c0 optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18254
diff changeset
1944 contents = g_markup_escape_text(utf8_string, -1);
507fb436d8c0 optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18254
diff changeset
1945 g_free(utf8_string);
507fb436d8c0 optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18254
diff changeset
1946
507fb436d8c0 optimization: finding offsets without converting to UTF8 and escaping
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18254
diff changeset
1947 buddy = purple_find_buddy(log->account, log->name);
18251
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1948
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1949 /* Apply formatting... */
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1950 formatted = g_string_sized_new(data->length + 2);
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1951 c = contents;
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1952 line = contents;
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1953
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1954 while (*c) {
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1955 gboolean is_in_message = FALSE;
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1956
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1957 if (purple_str_has_prefix(line, QIP_LOG_IN_MESSAGE_ESC) ||
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1958 purple_str_has_prefix(line, QIP_LOG_OUT_MESSAGE_ESC)) {
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1959
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1960 char *tmp;
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1961 const char *buddy_name;
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1962
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1963 is_in_message = purple_str_has_prefix(line, QIP_LOG_IN_MESSAGE_ESC);
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1964
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1965 /* find EOL */
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1966 c = strstr(c, "\n");
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1967
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1968 /* XXX: Do we need buddy_name when we have buddy->alias? */
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1969 buddy_name = ++c;
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1970
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1971 /* Find the last '(' character. */
18252
6722bbd698ff 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: 18251
diff changeset
1972 if ((tmp = strstr(c, "\n")) != NULL) {
6722bbd698ff 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: 18251
diff changeset
1973 while (*tmp && *tmp != '(') --tmp;
6722bbd698ff 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: 18251
diff changeset
1974 c = tmp;
6722bbd698ff 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: 18251
diff changeset
1975 } else {
18251
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1976 while (*c)
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1977 c++;
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1978 c--;
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1979 c = g_strrstr(c, "(");
18172
3aa11b0169c9 Converting all qip logs into UTF8
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18171
diff changeset
1980 }
18251
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1981
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1982 if (c != NULL) {
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1983 const char *timestamp = c;
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1984 int hour;
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1985 int min;
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1986 int sec;
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1987
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1988 timestamp++;
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1989
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1990 /* Parse the time, day, month and year */
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1991 if (sscanf(timestamp, "%u:%u:%u",
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1992 &hour, &min, &sec) != 3) {
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1993 purple_debug_error("QIP logger read",
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1994 "Parsing timestamp error\n");
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1995 } else {
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1996 g_string_append(formatted, "<font size=\"2\">");
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1997 /* TODO: Figure out if we can do anything more locale-independent. */
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1998 g_string_append_printf(formatted,
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
1999 "(%u:%02u:%02u) %cM ", hour % 12,
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
2000 min, sec, (hour >= 12) ? 'P': 'A');
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
2001 g_string_append(formatted, "</font> ");
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
2002
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
2003 if (is_in_message) {
20332
3a9709bfde65 applied changes from 4d50bf3b08569aa2108a9f5da47fb1548d0c7dd9
Luke Schierer <lschiere@pidgin.im>
parents: 20329
diff changeset
2004 if (buddy_name != NULL && buddy != NULL && buddy->alias) {
18251
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
2005 g_string_append_printf(formatted,
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
2006 "<span style=\"color: #A82F2F;\">"
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
2007 "<b>%s</b></span>: ", buddy->alias);
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
2008 }
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
2009 } else {
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
2010 const char *acct_name;
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
2011 acct_name = purple_account_get_alias(log->account);
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
2012 if (!acct_name)
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
2013 acct_name = purple_account_get_username(log->account);
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
2014
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
2015 g_string_append_printf(formatted,
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
2016 "<span style=\"color: #16569E;\">"
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
2017 "<b>%s</b></span>: ", acct_name);
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
2018 }
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
2019
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
2020 /* find EOF */
18172
3aa11b0169c9 Converting all qip logs into UTF8
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18171
diff changeset
2021 c = strstr(c, "\n");
3aa11b0169c9 Converting all qip logs into UTF8
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18171
diff changeset
2022 line = ++c;
18170
179bb0ea89c7 Using g_file_get_contents instead of common file operations; all DEBUG_MESSAGEs were removed
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18169
diff changeset
2023 }
17979
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2024 }
18251
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
2025 } else {
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
2026 if ((c = strstr(c, "\n")))
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
2027 *c = '\0';
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
2028
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
2029 if (line[0] != '\n' && line[0] != '\r') {
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
2030
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
2031 g_string_append(formatted, line);
18359
d1e7c8015308 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: 18256
diff changeset
2032 g_string_append(formatted, "<br>");
18251
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
2033 }
20332
3a9709bfde65 applied changes from 4d50bf3b08569aa2108a9f5da47fb1548d0c7dd9
Luke Schierer <lschiere@pidgin.im>
parents: 20329
diff changeset
2034
3a9709bfde65 applied changes from 4d50bf3b08569aa2108a9f5da47fb1548d0c7dd9
Luke Schierer <lschiere@pidgin.im>
parents: 20329
diff changeset
2035 if (c)
3a9709bfde65 applied changes from 4d50bf3b08569aa2108a9f5da47fb1548d0c7dd9
Luke Schierer <lschiere@pidgin.im>
parents: 20329
diff changeset
2036 line = ++c;
17979
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2037 }
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2038 }
18170
179bb0ea89c7 Using g_file_get_contents instead of common file operations; all DEBUG_MESSAGEs were removed
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18169
diff changeset
2039 g_free(contents);
18251
8908e9ec2420 Optimize this QIP code some more.
Richard Laager <rlaager@wiktel.com>
parents: 18250
diff changeset
2040
17979
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2041 /* XXX: TODO: Avoid this g_strchomp() */
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2042 return g_strchomp(g_string_free(formatted, FALSE));
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2043 }
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2044
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2045 static int qip_logger_size (PurpleLog *log)
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2046 {
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2047 struct qip_logger_data *data;
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2048 char *text;
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2049 size_t size;
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2050
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2051 g_return_val_if_fail(log != NULL, 0);
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2052
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2053 data = log->logger_data;
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2054
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2055 if (purple_prefs_get_bool("/plugins/core/log_reader/fast_sizes")) {
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2056 return data ? data->length : 0;
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2057 }
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2058
18248
ab761acbc614 Remove trailing whitespace.
Richard Laager <rlaager@wiktel.com>
parents: 18247
diff changeset
2059 text = qip_logger_read(log, NULL);
17979
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2060 size = strlen(text);
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2061 g_free(text);
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2062
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2063 return size;
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2064 }
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2065
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2066 static void qip_logger_finalize(PurpleLog *log)
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2067 {
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2068 struct qip_logger_data *data;
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2069
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2070 g_return_if_fail(log != NULL);
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2071
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2072 data = log->logger_data;
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2073
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2074 g_free(data->path);
18246
e236b3bd4542 Eliminate some leaks.
Richard Laager <rlaager@wiktel.com>
parents: 18245
diff changeset
2075 g_free(data);
17979
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2076 }
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2077
20897
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2078 /*************************************************************************
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2079 * aMSN Logger *
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2080 *************************************************************************/
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2081
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2082 /* The aMSN logger doesn't write logs, only reads them. This is to include
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2083 * aMSN logs in the log viewer transparently.
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2084 */
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2085
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2086 static PurpleLogLogger *amsn_logger;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2087
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2088 struct amsn_logger_data {
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2089 char *path;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2090 int offset;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2091 int length;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2092 };
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2093
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2094 #define AMSN_LOG_CONV_START "|\"LRED[Conversation started on "
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2095 #define AMSN_LOG_CONV_END "|\"LRED[You have closed the window on "
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2096 #define AMSN_LOG_CONV_EXTRA "01 Aug 2001 00:00:00]"
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2097
20921
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2098 static GList *amsn_logger_parse_file(char *filename, const char *sn, PurpleAccount *account)
20897
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2099 {
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2100 GList *list = NULL;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2101 GError *error;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2102 char *contents;
20921
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2103 struct amsn_logger_data *data;
20897
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2104 PurpleLog *log;
20921
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2105
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2106 purple_debug_info("aMSN logger", "Reading %s\n", filename);
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2107 error = NULL;
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2108 if (!g_file_get_contents(filename, &contents, NULL, &error)) {
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2109 purple_debug_error("aMSN logger",
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2110 "Couldn't read file %s: %s \n", filename,
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2111 (error && error->message) ?
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2112 error->message : "Unknown error");
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2113 if (error)
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2114 g_error_free(error);
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2115 } else {
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2116 char *c = contents;
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2117 gboolean found_start = FALSE;
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2118 char *start_log = c;
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2119 int offset = 0;
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2120 struct tm tm;
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2121 while (c && *c) {
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2122 if (purple_str_has_prefix(c, AMSN_LOG_CONV_START)) {
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2123 char month[4];
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2124 if (sscanf(c + strlen(AMSN_LOG_CONV_START),
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2125 "%u %3s %u %u:%u:%u",
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2126 &tm.tm_mday, (char*)&month, &tm.tm_year,
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2127 &tm.tm_hour, &tm.tm_min, &tm.tm_sec) != 6) {
20897
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2128 found_start = FALSE;
20921
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2129 purple_debug_error("aMSN logger",
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2130 "Error parsing start date for %s\n",
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2131 filename);
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2132 } else {
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2133 tm.tm_year -= 1900;
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2134
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2135 /* Let the C library deal with
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2136 * daylight savings time.
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2137 */
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2138 tm.tm_isdst = -1;
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2139 tm.tm_mon = get_month(month);
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2140
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2141 found_start = TRUE;
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2142 offset = c - contents;
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2143 start_log = c;
20897
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2144 }
20921
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2145 } else if (purple_str_has_prefix(c, AMSN_LOG_CONV_END) && found_start) {
20897
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2146 data = g_new0(struct amsn_logger_data, 1);
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2147 data->path = g_strdup(filename);
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2148 data->offset = offset;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2149 data->length = c - start_log
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2150 + strlen(AMSN_LOG_CONV_END)
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2151 + strlen(AMSN_LOG_CONV_EXTRA);
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2152 log = purple_log_new(PURPLE_LOG_IM, sn, account, NULL, mktime(&tm), NULL);
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2153 log->logger = amsn_logger;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2154 log->logger_data = data;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2155 list = g_list_prepend(list, log);
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2156 found_start = FALSE;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2157
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2158 purple_debug_info("aMSN logger",
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2159 "Found log for %s:"
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2160 " path = (%s),"
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2161 " offset = (%d),"
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2162 " length = (%d)\n",
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2163 sn, data->path, data->offset, data->length);
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2164 }
20921
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2165 c = strstr(c, "\n");
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2166 c++;
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2167 }
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2168
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2169 /* I've seen the file end without the AMSN_LOG_CONV_END bit */
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2170 if (found_start) {
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2171 data = g_new0(struct amsn_logger_data, 1);
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2172 data->path = g_strdup(filename);
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2173 data->offset = offset;
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2174 data->length = c - start_log
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2175 + strlen(AMSN_LOG_CONV_END)
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2176 + strlen(AMSN_LOG_CONV_EXTRA);
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2177 log = purple_log_new(PURPLE_LOG_IM, sn, account, NULL, mktime(&tm), NULL);
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2178 log->logger = amsn_logger;
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2179 log->logger_data = data;
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2180 list = g_list_prepend(list, log);
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2181 found_start = FALSE;
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2182
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2183 purple_debug_info("aMSN logger",
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2184 "Found log for %s:"
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2185 " path = (%s),"
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2186 " offset = (%d),"
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2187 " length = (%d)\n",
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2188 sn, data->path, data->offset, data->length);
20897
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2189 }
20921
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2190 g_free(contents);
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2191 }
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2192
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2193 return list;
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2194 }
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2195
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2196 /* `log_dir`/username@hotmail.com/logs/buddyname@hotmail.com.log */
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2197 /* `log_dir`/username@hotmail.com/logs/Month Year/buddyname@hotmail.com.log */
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2198 static GList *amsn_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account)
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2199 {
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2200 GList *list = NULL;
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2201 const char *logdir;
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2202 char *username;
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2203 char *log_path;
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2204 char *buddy_log;
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2205 char *filename;
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2206 GDir *dir;
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2207 const char *name;
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2208
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2209 logdir = purple_prefs_get_string("/plugins/core/log_reader/amsn/log_directory");
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2210
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2211 /* By clearing the log directory path, this logger can be (effectively) disabled. */
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2212 if (!logdir || !*logdir)
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2213 return NULL;
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2214
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2215 /* aMSN only works with MSN/WLM */
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2216 if (strcmp(account->protocol_id, "prpl-msn"))
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2217 return NULL;
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2218
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2219 username = g_strdup(purple_normalize(account, account->username));
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2220 buddy_log = g_strdup_printf("%s.log", purple_normalize(account, sn));
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2221 log_path = g_build_filename(logdir, username, "logs", NULL);
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2222
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2223 /* First check in the top-level */
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2224 filename = g_build_filename(log_path, buddy_log, NULL);
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2225 if (g_file_test(filename, G_FILE_TEST_EXISTS))
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2226 list = amsn_logger_parse_file(filename, sn, account);
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2227 else
20897
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2228 g_free(filename);
20921
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2229
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2230 /* Check in previous months */
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2231 dir = g_dir_open(log_path, 0, NULL);
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2232 if (dir) {
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2233 while ((name = g_dir_read_name(dir)) != NULL) {
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2234 filename = g_build_filename(log_path, name, buddy_log, NULL);
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2235 if (g_file_test(filename, G_FILE_TEST_EXISTS))
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2236 list = g_list_concat(list, amsn_logger_parse_file(filename, sn, account));
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2237 g_free(filename);
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2238 }
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2239 g_dir_close(dir);
20897
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2240 }
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2241
20921
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2242 g_free(log_path);
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2243
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2244 /* New versions use 'friendlier' directory names */
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2245 purple_util_chrreplace(username, '@', '_');
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2246 purple_util_chrreplace(username, '.', '_');
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2247
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2248 log_path = g_build_filename(logdir, username, "logs", NULL);
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2249
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2250 /* First check in the top-level */
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2251 filename = g_build_filename(log_path, buddy_log, NULL);
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2252 if (g_file_test(filename, G_FILE_TEST_EXISTS))
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2253 list = g_list_concat(list, amsn_logger_parse_file(filename, sn, account));
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2254 g_free(filename);
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2255
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2256 /* Check in previous months */
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2257 dir = g_dir_open(log_path, 0, NULL);
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2258 if (dir) {
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2259 while ((name = g_dir_read_name(dir)) != NULL) {
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2260 filename = g_build_filename(log_path, name, buddy_log, NULL);
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2261 if (g_file_test(filename, G_FILE_TEST_EXISTS))
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2262 list = g_list_concat(list, amsn_logger_parse_file(filename, sn, account));
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2263 g_free(filename);
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2264 }
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2265 g_dir_close(dir);
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2266 }
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2267
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2268 g_free(log_path);
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2269 g_free(username);
b2b16843851b A patch from QuLogic to eliminate some duplication in the aMSN code, also
Richard Laager <rlaager@wiktel.com>
parents: 20910
diff changeset
2270 g_free(buddy_log);
20897
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2271
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2272 return list;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2273 }
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2274
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2275 /* Really it's |"L, but the string's been escaped */
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2276 #define AMSN_LOG_FORMAT_TAG "|&quot;L"
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2277
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2278 static char *amsn_logger_read(PurpleLog *log, PurpleLogReadFlags *flags)
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2279 {
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2280 struct amsn_logger_data *data;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2281 FILE *file;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2282 char *contents;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2283 char *escaped;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2284 GString *formatted;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2285 char *start;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2286 gboolean in_span = FALSE;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2287
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2288 if (flags != NULL)
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2289 *flags = PURPLE_LOG_READ_NO_NEWLINE;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2290
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2291 g_return_val_if_fail(log != NULL, g_strdup(""));
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2292
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2293 data = log->logger_data;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2294
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2295 g_return_val_if_fail(data->path != NULL, g_strdup(""));
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2296 g_return_val_if_fail(data->length > 0, g_strdup(""));
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2297
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2298 contents = g_malloc(data->length + 2);
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2299
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2300 file = g_fopen(data->path, "rb");
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2301 g_return_val_if_fail(file != NULL, g_strdup(""));
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2302
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2303 fseek(file, data->offset, SEEK_SET);
20910
54d232b52607 Since we are looking at the return value of fread, it actually matters that
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20909
diff changeset
2304 data->length = fread(contents, 1, data->length, file);
20897
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2305 fclose(file);
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2306
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2307 contents[data->length] = '\n';
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2308 contents[data->length + 1] = '\0';
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2309
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2310 escaped = g_markup_escape_text(contents, -1);
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2311 g_free(contents);
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2312 contents = escaped;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2313
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2314 formatted = g_string_sized_new(data->length + 2);
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2315
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2316 start = contents;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2317 while (start && *start) {
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2318 char *end;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2319 char *old_tag;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2320 char *tag;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2321 end = strstr(start, "\n");
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2322 if (!end)
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2323 break;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2324 *end = '\0';
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2325 if (purple_str_has_prefix(start, AMSN_LOG_FORMAT_TAG) && in_span) {
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2326 /* New format for this line */
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2327 g_string_append(formatted, "</span><br>");
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2328 in_span = FALSE;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2329 } else if (start != contents) {
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2330 /* Continue format from previous line */
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2331 g_string_append(formatted, "<br>");
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2332 }
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2333 old_tag = start;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2334 tag = strstr(start, AMSN_LOG_FORMAT_TAG);
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2335 while (tag) {
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2336 g_string_append_len(formatted, old_tag, tag - old_tag);
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2337 tag += strlen(AMSN_LOG_FORMAT_TAG);
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2338 if (in_span) {
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2339 g_string_append(formatted, "</span>");
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2340 in_span = FALSE;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2341 }
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2342 if (*tag == 'C') {
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2343 /* |"LCxxxxxx is a hex colour */
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2344 char colour[7];
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2345 strncpy(colour, tag + 1, 6);
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2346 colour[6] = '\0';
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2347 g_string_append_printf(formatted, "<span style=\"color: #%s;\">", colour);
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2348 /* This doesn't appear to work? */
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2349 /* g_string_append_printf(formatted, "<span style=\"color: #%6s;\">", tag + 1); */
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2350 in_span = TRUE;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2351 old_tag = tag + 7; /* C + xxxxxx */
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2352 } else {
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2353 /* |"Lxxx is a 3-digit colour code */
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2354 if (purple_str_has_prefix(tag, "RED")) {
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2355 g_string_append(formatted, "<span style=\"color: red;\">");
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2356 in_span = TRUE;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2357 } else if (purple_str_has_prefix(tag, "GRA")) {
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2358 g_string_append(formatted, "<span style=\"color: gray;\">");
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2359 in_span = TRUE;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2360 } else if (purple_str_has_prefix(tag, "NOR")) {
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2361 g_string_append(formatted, "<span style=\"color: black;\">");
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2362 in_span = TRUE;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2363 } else if (purple_str_has_prefix(tag, "ITA")) {
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2364 g_string_append(formatted, "<span style=\"color: blue;\">");
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2365 in_span = TRUE;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2366 } else if (purple_str_has_prefix(tag, "GRE")) {
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2367 g_string_append(formatted, "<span style=\"color: darkgreen;\">");
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2368 in_span = TRUE;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2369 } else {
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2370 purple_debug_info("aMSN logger", "Unknown colour format: %3s\n", tag);
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2371 }
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2372 old_tag = tag + 3;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2373 }
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2374 tag = strstr(tag, AMSN_LOG_FORMAT_TAG);
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2375 }
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2376 g_string_append(formatted, old_tag);
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2377 start = end + 1;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2378 }
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2379 if (in_span)
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2380 g_string_append(formatted, "</span>");
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2381
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2382 g_free(contents);
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2383
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2384 return g_string_free(formatted, FALSE);
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2385 }
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2386
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2387 static int amsn_logger_size(PurpleLog *log)
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2388 {
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2389 struct amsn_logger_data *data;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2390 char *text;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2391 int size;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2392
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2393 g_return_val_if_fail(log != NULL, 0);
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2394
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2395 data = log->logger_data;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2396
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2397 if (purple_prefs_get_bool("/plugins/core/log_reader/fast_sizes")) {
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2398 return data ? data->length : 0;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2399 }
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2400
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2401 text = amsn_logger_read(log, NULL);
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2402 size = strlen(text);
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2403 g_free(text);
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2404
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2405 return size;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2406 }
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2407
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2408 static void amsn_logger_finalize(PurpleLog *log)
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2409 {
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2410 struct amsn_logger_data *data;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2411
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2412 g_return_if_fail(log != NULL);
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2413
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2414 data = log->logger_data;
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2415 g_free(data->path);
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2416 g_free(data);
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2417 }
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2418
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2419 /*****************************************************************************
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2420 * Plugin Code *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2421 *****************************************************************************/
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2422
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2423 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2424 init_plugin(PurplePlugin *plugin)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2425 {
20931
f56e94167372 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 <daniel.atallah@gmail.com>
parents: 20930
diff changeset
2426
f56e94167372 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 <daniel.atallah@gmail.com>
parents: 20930
diff changeset
2427 }
f56e94167372 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 <daniel.atallah@gmail.com>
parents: 20930
diff changeset
2428
22007
c38d72677c8a Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@wiktel.com>
parents: 21030
diff changeset
2429 static void log_reader_init_prefs(void) {
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2430 char *path;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2431 #ifdef _WIN32
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2432 char *folder;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2433 gboolean found = FALSE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2434 #endif
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2435
16430
f8eb3e7c4fbd Fix GTK Plugin prefs
Sean Egan <seanegan@gmail.com>
parents: 16424
diff changeset
2436 purple_prefs_add_none("/plugins/core/log_reader");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2437
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2438
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2439 /* Add general preferences. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2440
16430
f8eb3e7c4fbd Fix GTK Plugin prefs
Sean Egan <seanegan@gmail.com>
parents: 16424
diff changeset
2441 purple_prefs_add_bool("/plugins/core/log_reader/fast_sizes", FALSE);
f8eb3e7c4fbd Fix GTK Plugin prefs
Sean Egan <seanegan@gmail.com>
parents: 16424
diff changeset
2442 purple_prefs_add_bool("/plugins/core/log_reader/use_name_heuristics", TRUE);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2443
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2444
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2445 /* Add Adium log directory preference. */
16430
f8eb3e7c4fbd Fix GTK Plugin prefs
Sean Egan <seanegan@gmail.com>
parents: 16424
diff changeset
2446 purple_prefs_add_none("/plugins/core/log_reader/adium");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2447
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2448 /* Calculate default Adium log directory. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2449 #ifdef _WIN32
18250
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2450 purple_prefs_add_string("/plugins/core/log_reader/adium/log_directory", "");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2451 #else
18250
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2452 path = g_build_filename(purple_home_dir(), "Library", "Application Support",
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2453 "Adium 2.0", "Users", "Default", "Logs", NULL);
16430
f8eb3e7c4fbd Fix GTK Plugin prefs
Sean Egan <seanegan@gmail.com>
parents: 16424
diff changeset
2454 purple_prefs_add_string("/plugins/core/log_reader/adium/log_directory", path);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2455 g_free(path);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2456 #endif
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2457
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2458
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2459 /* Add Fire log directory preference. */
16430
f8eb3e7c4fbd Fix GTK Plugin prefs
Sean Egan <seanegan@gmail.com>
parents: 16424
diff changeset
2460 purple_prefs_add_none("/plugins/core/log_reader/fire");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2461
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2462 /* Calculate default Fire log directory. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2463 #ifdef _WIN32
18250
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2464 purple_prefs_add_string("/plugins/core/log_reader/fire/log_directory", "");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2465 #else
18250
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2466 path = g_build_filename(purple_home_dir(), "Library", "Application Support",
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2467 "Fire", "Sessions", NULL);
16430
f8eb3e7c4fbd Fix GTK Plugin prefs
Sean Egan <seanegan@gmail.com>
parents: 16424
diff changeset
2468 purple_prefs_add_string("/plugins/core/log_reader/fire/log_directory", path);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2469 g_free(path);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2470 #endif
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2471
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2472
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2473 /* Add Messenger Plus! log directory preference. */
16430
f8eb3e7c4fbd Fix GTK Plugin prefs
Sean Egan <seanegan@gmail.com>
parents: 16424
diff changeset
2474 purple_prefs_add_none("/plugins/core/log_reader/messenger_plus");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2475
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2476 /* Calculate default Messenger Plus! log directory. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2477 #ifdef _WIN32
20329
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
2478 path = NULL;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2479 folder = wpurple_get_special_folder(CSIDL_PERSONAL);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2480 if (folder) {
18250
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2481 path = g_build_filename(folder, "My Chat Logs", NULL);
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2482 g_free(folder);
20329
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
2483 }
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2484 #else
18250
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2485 path = g_build_filename(PURPLE_LOG_READER_WINDOWS_MOUNT_POINT,
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2486 "Documents and Settings", g_get_user_name(),
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2487 "My Documents", "My Chat Logs", NULL);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2488 #endif
20329
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
2489 purple_prefs_add_string("/plugins/core/log_reader/messenger_plus/log_directory", path ? path : "");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2490 g_free(path);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2491
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2492
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2493 /* Add MSN Messenger log directory preference. */
16430
f8eb3e7c4fbd Fix GTK Plugin prefs
Sean Egan <seanegan@gmail.com>
parents: 16424
diff changeset
2494 purple_prefs_add_none("/plugins/core/log_reader/msn");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2495
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2496 /* Calculate default MSN message history directory. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2497 #ifdef _WIN32
20329
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
2498 path = NULL;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2499 folder = wpurple_get_special_folder(CSIDL_PERSONAL);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2500 if (folder) {
18250
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2501 path = g_build_filename(folder, "My Received Files", NULL);
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2502 g_free(folder);
20329
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
2503 }
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2504 #else
18250
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2505 path = g_build_filename(PURPLE_LOG_READER_WINDOWS_MOUNT_POINT,
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2506 "Documents and Settings", g_get_user_name(),
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2507 "My Documents", "My Received Files", NULL);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2508 #endif
20329
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
2509 purple_prefs_add_string("/plugins/core/log_reader/msn/log_directory", path ? path : "");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2510 g_free(path);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2511
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2512
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2513 /* Add Trillian log directory preference. */
16430
f8eb3e7c4fbd Fix GTK Plugin prefs
Sean Egan <seanegan@gmail.com>
parents: 16424
diff changeset
2514 purple_prefs_add_none("/plugins/core/log_reader/trillian");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2515
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2516 #ifdef _WIN32
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2517 /* XXX: While a major hack, this is the most reliable way I could
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2518 * think of to determine the Trillian installation directory.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2519 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2520
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2521 path = NULL;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2522 if ((folder = wpurple_read_reg_string(HKEY_CLASSES_ROOT, "Trillian.SkinZip\\shell\\Add\\command\\", NULL))) {
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2523 char *value = folder;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2524 char *temp;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2525
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2526 /* Break apart buffer. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2527 if (*value == '"') {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2528 value++;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2529 temp = value;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2530 while (*temp && *temp != '"')
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2531 temp++;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2532 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2533 temp = value;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2534 while (*temp && *temp != ' ')
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2535 temp++;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2536 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2537 *temp = '\0';
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2538
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2539 /* Set path. */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2540 if (purple_str_has_suffix(value, "trillian.exe")) {
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2541 value[strlen(value) - (sizeof("trillian.exe") - 1)] = '\0';
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2542 path = g_build_filename(value, "users", "default", "talk.ini", NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2543 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2544 g_free(folder);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2545 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2546
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2547 if (!path) {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2548 char *folder = wpurple_get_special_folder(CSIDL_PROGRAM_FILES);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2549 if (folder) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2550 path = g_build_filename(folder, "Trillian",
18250
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2551 "users", "default", "talk.ini", NULL);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2552 g_free(folder);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2553 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2554 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2555
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2556 if (path) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2557 /* Read talk.ini file to find the log directory. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2558 GError *error = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2559
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2560 #if 0 && GLIB_CHECK_VERSION(2,6,0) /* FIXME: Not tested yet. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2561 GKeyFile *key_file;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2562
18245
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
2563 purple_debug_info("Trillian talk.ini read", "Reading %s\n", path);
18248
ab761acbc614 Remove trailing whitespace.
Richard Laager <rlaager@wiktel.com>
parents: 18247
diff changeset
2564
18175
038c14fcadb8 setting error to NULL before using
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 18174
diff changeset
2565 error = NULL;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2566 if (!g_key_file_load_from_file(key_file, path, G_KEY_FILE_NONE, GError &error)) {
18245
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
2567 purple_debug_error("Trillian talk.ini read",
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
2568 "Error reading talk.ini\n");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2569 if (error)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2570 g_error_free(error);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2571 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2572 char *logdir = g_key_file_get_string(key_file, "Logging", "Directory", &error);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2573 if (error) {
18245
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
2574 purple_debug_error("Trillian talk.ini read",
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
2575 "Error reading Directory value from Logging section\n");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2576 g_error_free(error);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2577 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2578
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2579 if (logdir) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2580 g_strchomp(logdir);
18245
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
2581 purple_prefs_add_string("/plugins/core/log_reader/trillian/log_directory", logdir);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2582 found = TRUE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2583 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2584
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2585 g_key_file_free(key_file);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2586 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2587 #else /* !GLIB_CHECK_VERSION(2,6,0) */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2588 gchar *contents = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2589
18245
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
2590 purple_debug_info("Trillian talk.ini read",
20329
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
2591 "Reading %s\n", path);
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
2592 if (!g_file_get_contents(path, &contents, NULL, &error)) {
18245
30b67808b85b Change the purple_debug(level, ...) statements to purple_debug_level(...)
Richard Laager <rlaager@wiktel.com>
parents: 18244
diff changeset
2593 purple_debug_error("Trillian talk.ini read",
20329
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
2594 "Error reading talk.ini: %s\n",
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
2595 (error && error->message) ? error->message : "Unknown error");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2596 if (error)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2597 g_error_free(error);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2598 } else {
20329
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
2599 char *cursor, *line;
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
2600 line = cursor = contents;
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
2601 while (*cursor) {
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
2602 if (*cursor == '\n') {
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
2603 *cursor = '\0';
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2604
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2605 /* XXX: This assumes the first Directory key is under [Logging]. */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2606 if (purple_str_has_prefix(line, "Directory=")) {
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2607 line += (sizeof("Directory=") - 1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2608 g_strchomp(line);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2609 purple_prefs_add_string(
16430
f8eb3e7c4fbd Fix GTK Plugin prefs
Sean Egan <seanegan@gmail.com>
parents: 16424
diff changeset
2610 "/plugins/core/log_reader/trillian/log_directory",
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2611 line);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2612 found = TRUE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2613 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2614
20329
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
2615 cursor++;
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
2616 line = cursor;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2617 } else
20329
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
2618 cursor++;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2619 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2620 g_free(contents);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2621 }
20329
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
2622 g_free(path);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2623 #endif /* !GTK_CHECK_VERSION(2,6,0) */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2624 } /* path */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2625
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2626 if (!found) {
20329
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
2627 path = NULL;
18250
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2628 folder = wpurple_get_special_folder(CSIDL_PROGRAM_FILES);
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2629 if (folder) {
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2630 path = g_build_filename(folder, "Trillian", "users",
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2631 "default", "logs", NULL);
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2632 g_free(folder);
20329
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
2633 }
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
2634
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
2635 purple_prefs_add_string(
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
2636 "/plugins/core/log_reader/trillian/log_directory", path ? path : "");
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
2637 g_free(path);
18250
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2638 }
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2639 #else /* !defined(_WIN32) */
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2640 /* TODO: At some point, this could attempt to parse talk.ini
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2641 * TODO: from the default Trillian install directory on the
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2642 * TODO: Windows mount point. */
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2643
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2644 /* Calculate default Trillian log directory. */
18250
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2645 path = g_build_filename(PURPLE_LOG_READER_WINDOWS_MOUNT_POINT,
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2646 "Program Files", "Trillian", "users",
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2647 "default", "logs", NULL);
20329
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
2648 purple_prefs_add_string(
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
2649 "/plugins/core/log_reader/trillian/log_directory", path);
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
2650 g_free(path);
18250
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2651 #endif
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2652
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2653 /* Add QIP log directory preference. */
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2654 purple_prefs_add_none("/plugins/core/log_reader/qip");
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2655
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2656 /* Calculate default QIP log directory. */
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2657 #ifdef _WIN32
20329
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
2658 path = NULL;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2659 folder = wpurple_get_special_folder(CSIDL_PROGRAM_FILES);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2660 if (folder) {
18250
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2661 path = g_build_filename(folder, "QIP", "Users", NULL);
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2662 g_free(folder);
20329
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
2663 }
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2664 #else
18250
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2665 path = g_build_filename(PURPLE_LOG_READER_WINDOWS_MOUNT_POINT,
7a6a1da4121b Trying to avoid duplicating a single line of code is stupid. I've finally
Richard Laager <rlaager@wiktel.com>
parents: 18249
diff changeset
2666 "Program Files", "QIP", "Users", NULL);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2667 #endif
20329
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 20319
diff changeset
2668 purple_prefs_add_string("/plugins/core/log_reader/qip/log_directory", path ? path : "");
17979
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2669 g_free(path);
20897
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2670
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2671 /* Add aMSN Messenger log directory preference. */
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2672 purple_prefs_add_none("/plugins/core/log_reader/amsn");
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2673
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2674 /* Calculate default aMSN log directory. */
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2675 #ifdef _WIN32
20930
d0fdf2f95277 Leak fix.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20921
diff changeset
2676 path = NULL;
20897
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2677 folder = wpurple_get_special_folder(CSIDL_PROFILE); /* Silly aMSN, not using CSIDL_APPDATA */
20930
d0fdf2f95277 Leak fix.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20921
diff changeset
2678 if (folder) {
d0fdf2f95277 Leak fix.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20921
diff changeset
2679 path = g_build_filename(folder, "amsn", NULL);
d0fdf2f95277 Leak fix.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20921
diff changeset
2680 g_free(folder);
d0fdf2f95277 Leak fix.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20921
diff changeset
2681 }
20897
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2682 #else
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2683 path = g_build_filename(purple_home_dir(), ".amsn", NULL);
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2684 #endif
20930
d0fdf2f95277 Leak fix.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20921
diff changeset
2685 purple_prefs_add_string("/plugins/core/log_reader/amsn/log_directory", path ? path : "");
20897
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2686 g_free(path);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2687 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2688
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2689 static gboolean
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2690 plugin_load(PurplePlugin *plugin)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2691 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2692 g_return_val_if_fail(plugin != NULL, FALSE);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2693
20931
f56e94167372 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 <daniel.atallah@gmail.com>
parents: 20930
diff changeset
2694 log_reader_init_prefs();
f56e94167372 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 <daniel.atallah@gmail.com>
parents: 20930
diff changeset
2695
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2696 /* The names of IM clients are marked for translation at the request of
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2697 translators who wanted to transliterate them. Many translators
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2698 choose to leave them alone. Choose what's best for your language. */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2699 adium_logger = purple_log_logger_new("adium", _("Adium"), 6,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2700 NULL,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2701 NULL,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2702 adium_logger_finalize,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2703 adium_logger_list,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2704 adium_logger_read,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2705 adium_logger_size);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2706 purple_log_logger_add(adium_logger);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2707
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2708 #if 0
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2709 /* The names of IM clients are marked for translation at the request of
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2710 translators who wanted to transliterate them. Many translators
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2711 choose to leave them alone. Choose what's best for your language. */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2712 fire_logger = purple_log_logger_new("fire", _("Fire"), 6,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2713 NULL,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2714 NULL,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2715 fire_logger_finalize,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2716 fire_logger_list,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2717 fire_logger_read,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2718 fire_logger_size);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2719 purple_log_logger_add(fire_logger);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2720
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2721 /* The names of IM clients are marked for translation at the request of
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2722 translators who wanted to transliterate them. Many translators
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2723 choose to leave them alone. Choose what's best for your language. */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2724 messenger_plus_logger = purple_log_logger_new("messenger_plus", _("Messenger Plus!"), 6,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2725 NULL,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2726 NULL,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2727 messenger_plus_logger_finalize,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2728 messenger_plus_logger_list,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2729 messenger_plus_logger_read,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2730 messenger_plus_logger_size);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2731 purple_log_logger_add(messenger_plus_logger);
18248
ab761acbc614 Remove trailing whitespace.
Richard Laager <rlaager@wiktel.com>
parents: 18247
diff changeset
2732
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2733 #endif
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2734
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2735 /* The names of IM clients are marked for translation at the request of
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2736 translators who wanted to transliterate them. Many translators
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2737 choose to leave them alone. Choose what's best for your language. */
17979
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2738 qip_logger = purple_log_logger_new("qip", _("QIP"), 6,
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2739 NULL,
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2740 NULL,
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2741 qip_logger_finalize,
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2742 qip_logger_list,
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2743 qip_logger_read,
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2744 qip_logger_size);
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2745 purple_log_logger_add(qip_logger);
18248
ab761acbc614 Remove trailing whitespace.
Richard Laager <rlaager@wiktel.com>
parents: 18247
diff changeset
2746
17979
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2747 /* The names of IM clients are marked for translation at the request of
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2748 translators who wanted to transliterate them. Many translators
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2749 choose to leave them alone. Choose what's best for your language. */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2750 msn_logger = purple_log_logger_new("msn", _("MSN Messenger"), 6,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2751 NULL,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2752 NULL,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2753 msn_logger_finalize,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2754 msn_logger_list,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2755 msn_logger_read,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2756 msn_logger_size);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2757 purple_log_logger_add(msn_logger);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2758
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2759 /* The names of IM clients are marked for translation at the request of
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2760 translators who wanted to transliterate them. Many translators
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2761 choose to leave them alone. Choose what's best for your language. */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2762 trillian_logger = purple_log_logger_new("trillian", _("Trillian"), 6,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2763 NULL,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2764 NULL,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2765 trillian_logger_finalize,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2766 trillian_logger_list,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2767 trillian_logger_read,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2768 trillian_logger_size);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2769 purple_log_logger_add(trillian_logger);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2770
20897
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2771 /* The names of IM clients are marked for translation at the request of
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2772 translators who wanted to transliterate them. Many translators
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2773 choose to leave them alone. Choose what's best for your language. */
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2774 amsn_logger = purple_log_logger_new("amsn", _("aMSN"), 6,
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2775 NULL,
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2776 NULL,
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2777 amsn_logger_finalize,
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2778 amsn_logger_list,
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2779 amsn_logger_read,
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2780 amsn_logger_size);
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2781 purple_log_logger_add(amsn_logger);
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2782
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2783 return TRUE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2784 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2785
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2786 static gboolean
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2787 plugin_unload(PurplePlugin *plugin)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2788 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2789 g_return_val_if_fail(plugin != NULL, FALSE);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2790
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2791 purple_log_logger_remove(adium_logger);
22830
f15d9ded0c45 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22007
diff changeset
2792 purple_log_logger_free(adium_logger);
f15d9ded0c45 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22007
diff changeset
2793 adium_logger = NULL;
f15d9ded0c45 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22007
diff changeset
2794
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2795 #if 0
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2796 purple_log_logger_remove(fire_logger);
22830
f15d9ded0c45 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22007
diff changeset
2797 purple_log_logger_free(fire_logger);
f15d9ded0c45 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22007
diff changeset
2798 fire_logger = NULL;
f15d9ded0c45 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22007
diff changeset
2799
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2800 purple_log_logger_remove(messenger_plus_logger);
22830
f15d9ded0c45 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22007
diff changeset
2801 purple_log_logger_free(messenger_plus_logger);
f15d9ded0c45 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22007
diff changeset
2802 messenger_plus_logger = NULL;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2803 #endif
22830
f15d9ded0c45 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22007
diff changeset
2804
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2805 purple_log_logger_remove(msn_logger);
22830
f15d9ded0c45 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22007
diff changeset
2806 purple_log_logger_free(msn_logger);
f15d9ded0c45 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22007
diff changeset
2807 msn_logger = NULL;
f15d9ded0c45 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22007
diff changeset
2808
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2809 purple_log_logger_remove(trillian_logger);
22830
f15d9ded0c45 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22007
diff changeset
2810 purple_log_logger_free(trillian_logger);
f15d9ded0c45 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22007
diff changeset
2811 trillian_logger = NULL;
f15d9ded0c45 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22007
diff changeset
2812
17979
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2813 purple_log_logger_remove(qip_logger);
22830
f15d9ded0c45 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22007
diff changeset
2814 purple_log_logger_free(qip_logger);
f15d9ded0c45 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22007
diff changeset
2815 qip_logger = NULL;
f15d9ded0c45 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22007
diff changeset
2816
20897
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2817 purple_log_logger_remove(amsn_logger);
22830
f15d9ded0c45 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22007
diff changeset
2818 purple_log_logger_free(amsn_logger);
f15d9ded0c45 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22007
diff changeset
2819 amsn_logger = NULL;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2820
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2821 return TRUE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2822 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2823
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2824 static PurplePluginPrefFrame *
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2825 get_plugin_pref_frame(PurplePlugin *plugin)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2826 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2827 PurplePluginPrefFrame *frame;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2828 PurplePluginPref *ppref;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2829
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2830 g_return_val_if_fail(plugin != NULL, FALSE);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2831
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2832 frame = purple_plugin_pref_frame_new();
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2833
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2834
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2835 /* Add general preferences. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2836
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2837 ppref = purple_plugin_pref_new_with_label(_("General Log Reading Configuration"));
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2838 purple_plugin_pref_frame_add(frame, ppref);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2839
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2840 ppref = purple_plugin_pref_new_with_name_and_label(
16430
f8eb3e7c4fbd Fix GTK Plugin prefs
Sean Egan <seanegan@gmail.com>
parents: 16424
diff changeset
2841 "/plugins/core/log_reader/fast_sizes", _("Fast size calculations"));
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2842 purple_plugin_pref_frame_add(frame, ppref);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2843
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2844 ppref = purple_plugin_pref_new_with_name_and_label(
16430
f8eb3e7c4fbd Fix GTK Plugin prefs
Sean Egan <seanegan@gmail.com>
parents: 16424
diff changeset
2845 "/plugins/core/log_reader/use_name_heuristics", _("Use name heuristics"));
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2846 purple_plugin_pref_frame_add(frame, ppref);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2847
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2848
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2849 /* Add Log Directory preferences. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2850
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2851 ppref = purple_plugin_pref_new_with_label(_("Log Directory"));
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2852 purple_plugin_pref_frame_add(frame, ppref);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2853
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2854 ppref = purple_plugin_pref_new_with_name_and_label(
16430
f8eb3e7c4fbd Fix GTK Plugin prefs
Sean Egan <seanegan@gmail.com>
parents: 16424
diff changeset
2855 "/plugins/core/log_reader/adium/log_directory", _("Adium"));
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2856 purple_plugin_pref_frame_add(frame, ppref);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2857
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2858 #if 0
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2859 ppref = purple_plugin_pref_new_with_name_and_label(
16430
f8eb3e7c4fbd Fix GTK Plugin prefs
Sean Egan <seanegan@gmail.com>
parents: 16424
diff changeset
2860 "/plugins/core/log_reader/fire/log_directory", _("Fire"));
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2861 purple_plugin_pref_frame_add(frame, ppref);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2862
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2863 ppref = purple_plugin_pref_new_with_name_and_label(
16430
f8eb3e7c4fbd Fix GTK Plugin prefs
Sean Egan <seanegan@gmail.com>
parents: 16424
diff changeset
2864 "/plugins/core/log_reader/messenger_plus/log_directory", _("Messenger Plus!"));
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2865 purple_plugin_pref_frame_add(frame, ppref);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2866 #endif
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2867
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2868 ppref = purple_plugin_pref_new_with_name_and_label(
17979
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2869 "/plugins/core/log_reader/qip/log_directory", _("QIP"));
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2870 purple_plugin_pref_frame_add(frame, ppref);
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2871
c8d2e131cc37 QIP logger was implemented
Michael Shkutkov <mshkutkov@soc.pidgin.im>
parents: 17531
diff changeset
2872 ppref = purple_plugin_pref_new_with_name_and_label(
16430
f8eb3e7c4fbd Fix GTK Plugin prefs
Sean Egan <seanegan@gmail.com>
parents: 16424
diff changeset
2873 "/plugins/core/log_reader/msn/log_directory", _("MSN Messenger"));
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2874 purple_plugin_pref_frame_add(frame, ppref);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2875
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2876 ppref = purple_plugin_pref_new_with_name_and_label(
16430
f8eb3e7c4fbd Fix GTK Plugin prefs
Sean Egan <seanegan@gmail.com>
parents: 16424
diff changeset
2877 "/plugins/core/log_reader/trillian/log_directory", _("Trillian"));
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2878 purple_plugin_pref_frame_add(frame, ppref);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2879
20897
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2880 ppref = purple_plugin_pref_new_with_name_and_label(
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2881 "/plugins/core/log_reader/amsn/log_directory", _("aMSN"));
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2882 purple_plugin_pref_frame_add(frame, ppref);
8de7c44fd577 Patch from QuLogic to add support for aMSN logs from the log-reader plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20332
diff changeset
2883
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2884 return frame;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2885 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2886
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2887 static PurplePluginUiInfo prefs_info = {
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2888 get_plugin_pref_frame,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2889 0, /* page_num (reserved) */
16666
5205dd2bd035 And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16430
diff changeset
2890 NULL, /* frame (reserved) */
5205dd2bd035 And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16430
diff changeset
2891
5205dd2bd035 And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16430
diff changeset
2892 /* padding */
5205dd2bd035 And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16430
diff changeset
2893 NULL,
5205dd2bd035 And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16430
diff changeset
2894 NULL,
5205dd2bd035 And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16430
diff changeset
2895 NULL,
5205dd2bd035 And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16430
diff changeset
2896 NULL
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2897 };
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2898
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2899 static PurplePluginInfo info =
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2900 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2901 PURPLE_PLUGIN_MAGIC,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2902 PURPLE_MAJOR_VERSION,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2903 PURPLE_MINOR_VERSION,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2904 PURPLE_PLUGIN_STANDARD, /**< type */
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2905 NULL, /**< ui_requirement */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2906 0, /**< flags */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2907 NULL, /**< dependencies */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2908 PURPLE_PRIORITY_DEFAULT, /**< priority */
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2909 "core-log_reader", /**< id */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2910 N_("Log Reader"), /**< name */
21030
3cc856ca2338 Add a --with-extraversion option to ./configure so packagers can fine tune
Stu Tomlinson <stu@nosnilmot.com>
parents: 21000
diff changeset
2911 DISPLAY_VERSION, /**< version */
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2912
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2913 /** summary */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2914 N_("Includes other IM clients' logs in the "
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2915 "log viewer."),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2916
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2917 /** description */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2918 N_("When viewing logs, this plugin will include "
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2919 "logs from other IM clients. Currently, this "
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2920 "includes Adium, MSN Messenger, and Trillian.\n\n"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2921 "WARNING: This plugin is still alpha code and "
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2922 "may crash frequently. Use it at your own risk!"),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2923
15566
b6615958d87c Switching to my pidgin.im e-mail address, which I think fits nicely and seems professional.
Richard Laager <rlaager@wiktel.com>
parents: 15373
diff changeset
2924 "Richard Laager <rlaager@pidgin.im>", /**< author */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2925 PURPLE_WEBSITE, /**< homepage */
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2926 plugin_load, /**< load */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2927 plugin_unload, /**< unload */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2928 NULL, /**< destroy */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2929 NULL, /**< ui_info */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2930 NULL, /**< extra_info */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2931 &prefs_info, /**< prefs_info */
16666
5205dd2bd035 And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16430
diff changeset
2932 NULL, /**< actions */
5205dd2bd035 And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16430
diff changeset
2933
5205dd2bd035 And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16430
diff changeset
2934 /* padding */
5205dd2bd035 And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16430
diff changeset
2935 NULL,
5205dd2bd035 And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16430
diff changeset
2936 NULL,
5205dd2bd035 And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16430
diff changeset
2937 NULL,
5205dd2bd035 And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16430
diff changeset
2938 NULL
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2939 };
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2940
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15566
diff changeset
2941 PURPLE_INIT_PLUGIN(log_reader, init_plugin, info)