libpurple/log.c

Wed, 20 Jun 2018 02:13:44 -0400

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Wed, 20 Jun 2018 02:13:44 -0400
changeset 39181
f0cd633d86d4
parent 38902
7c693d88bdbc
child 39289
af9c7037d7c2
permissions
-rw-r--r--

prefs: Add binding versions of pref widget functions.

These just bind settings to existing widgets and copy the saved value to
the widget, except for combos which are produced from runtime lists.
Those are populated in a similar way as before.

There are some extra _bind_ words that will probably be dropped once the
other functions are unused.

20147
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
1 /* purple
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
2 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
3 * Purple is the legal property of its developers, whose names are too numerous
8046
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 8027
diff changeset
4 * to list here. Please refer to the COPYRIGHT file distributed with this
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 8027
diff changeset
5 * source distribution.
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
6 *
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
7 * This program is free software; you can redistribute it and/or modify
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
8 * it under the terms of the GNU General Public License as published by
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
9 * the Free Software Foundation; either version 2 of the License, or
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
10 * (at your option) any later version.
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
11 *
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
12 * This program is distributed in the hope that it will be useful,
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
15 * GNU General Public License for more details.
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
16 *
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
17 * You should have received a copy of the GNU General Public License
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
18 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19832
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
20 */
4195
37449660e3d5 [gaim-migrate @ 4426]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4192
diff changeset
21
13930
91f702895cd9 [gaim-migrate @ 16334]
Daniel Atallah <datallah@pidgin.im>
parents: 13762
diff changeset
22 #include "internal.h"
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
23 #include "account.h"
13762
a6c3092757f3 [gaim-migrate @ 16171]
Mark Doliner <markdoliner@pidgin.im>
parents: 13624
diff changeset
24 #include "dbus-maybe.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5839
diff changeset
25 #include "debug.h"
35190
5986ee34c476 libpurple: Fix build and warnings with glib 2.24
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
26 #include "glibcompat.h"
35813
a5b71a95a42a imgstore: remove references from libpurple (not prpls yet)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35489
diff changeset
27 #include "image-store.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5839
diff changeset
28 #include "log.h"
5548
200682124464 [gaim-migrate @ 5949]
Nathan Walp <nwalp@pidgin.im>
parents: 5528
diff changeset
29 #include "prefs.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5839
diff changeset
30 #include "util.h"
7764
b1bb74f2f79d [gaim-migrate @ 8409]
Ethan Blanton <elb@pidgin.im>
parents: 7761
diff changeset
31 #include "stringref.h"
25883
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
32 #include "time.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5839
diff changeset
33
8096
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
34 static GSList *loggers = NULL;
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
35
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
36 static PurpleLogLogger *html_logger;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
37 static PurpleLogLogger *txt_logger;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
38 static PurpleLogLogger *old_logger;
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5839
diff changeset
39
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
40 struct _purple_logsize_user {
8635
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
41 char *name;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
42 PurpleAccount *account;
8635
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
43 };
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
44 static GHashTable *logsize_users = NULL;
25883
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
45 static GHashTable *logsize_users_decayed = NULL;
8635
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
46
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
47 static void log_get_log_sets_common(GHashTable *sets);
8635
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
48
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
49 static gsize html_logger_write(PurpleLog *log, PurpleMessageFlags type,
38621
1412d6b993e9 Use GDateTime in purple_log_write.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38620
diff changeset
50 const char *from, GDateTime *time, const char *message);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
51 static void html_logger_finalize(PurpleLog *log);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
52 static GList *html_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
53 static GList *html_logger_list_syslog(PurpleAccount *account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
54 static char *html_logger_read(PurpleLog *log, PurpleLogReadFlags *flags);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
55 static int html_logger_total_size(PurpleLogType type, const char *name, PurpleAccount *account);
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
56
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
57 static GList *old_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
58 static int old_logger_total_size(PurpleLogType type, const char *name, PurpleAccount *account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
59 static char * old_logger_read (PurpleLog *log, PurpleLogReadFlags *flags);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
60 static int old_logger_size (PurpleLog *log);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
61 static void old_logger_get_log_sets(PurpleLogSetCallback cb, GHashTable *sets);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
62 static void old_logger_finalize(PurpleLog *log);
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
63
38621
1412d6b993e9 Use GDateTime in purple_log_write.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38620
diff changeset
64 static gsize txt_logger_write(PurpleLog *log, PurpleMessageFlags type,
1412d6b993e9 Use GDateTime in purple_log_write.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38620
diff changeset
65 const char *from, GDateTime *time, const char *message);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
66 static void txt_logger_finalize(PurpleLog *log);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
67 static GList *txt_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
68 static GList *txt_logger_list_syslog(PurpleAccount *account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
69 static char *txt_logger_read(PurpleLog *log, PurpleLogReadFlags *flags);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
70 static int txt_logger_total_size(PurpleLogType type, const char *name, PurpleAccount *account);
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
71
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
72 /**************************************************************************
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
73 * PUBLIC LOGGING FUNCTIONS ***********************************************
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
74 **************************************************************************/
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
75
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
76 PurpleLog *purple_log_new(PurpleLogType type, const char *name, PurpleAccount *account,
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
77 PurpleConversation *conv, GDateTime *time)
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
78 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
79 PurpleLog *log;
13624
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
80
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
81 /* IMPORTANT: Make sure to initialize all the members of PurpleLog */
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
82 log = g_slice_new(PurpleLog);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
83 PURPLE_DBUS_REGISTER_POINTER(log, PurpleLog);
13624
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
84
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
85 log->type = type;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
86 log->name = g_strdup(purple_normalize(account, name));
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
87 log->account = account;
11292
13068c68def6 [gaim-migrate @ 13492]
Richard Laager <rlaager@pidgin.im>
parents: 11256
diff changeset
88 log->conv = conv;
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
89 if (time)
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
90 log->time = g_date_time_ref(time);
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
91 else
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
92 log->time = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
93 log->logger = purple_log_logger_get();
8096
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
94 log->logger_data = NULL;
13624
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
95
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7436
diff changeset
96 if (log->logger && log->logger->create)
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7436
diff changeset
97 log->logger->create(log);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
98 return log;
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
99 }
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
100
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
101 void purple_log_free(PurpleLog *log)
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
102 {
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
103 g_return_if_fail(log);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
104 if (log->logger && log->logger->finalize)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
105 log->logger->finalize(log);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
106 g_free(log->name);
38622
0d8e51f600c9 Fix possible GDateTime leaks in old logger loader.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38621
diff changeset
107 if (log->time)
0d8e51f600c9 Fix possible GDateTime leaks in old logger loader.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38621
diff changeset
108 g_date_time_unref(log->time);
13120
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
109
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
110 PURPLE_DBUS_UNREGISTER_POINTER(log);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
111 g_slice_free(PurpleLog, log);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
112 }
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
113
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
114 void purple_log_write(PurpleLog *log, PurpleMessageFlags type,
38621
1412d6b993e9 Use GDateTime in purple_log_write.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38620
diff changeset
115 const char *from, GDateTime *time, const char *message)
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
116 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
117 struct _purple_logsize_user *lu;
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
118 gsize written, total = 0;
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
119 gpointer ptrsize;
10173
335358c9cee4 [gaim-migrate @ 11287]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10171
diff changeset
120
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
121 g_return_if_fail(log);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
122 g_return_if_fail(log->logger);
7442
247b4506d446 [gaim-migrate @ 8047]
Nathan Walp <nwalp@pidgin.im>
parents: 7441
diff changeset
123 g_return_if_fail(log->logger->write);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
124
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
125 written = (log->logger->write)(log, type, from, time, message);
10171
814764a2d24c [gaim-migrate @ 11263]
Luke Schierer <lschiere@pidgin.im>
parents: 10087
diff changeset
126
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
127 lu = g_new(struct _purple_logsize_user, 1);
9892
281f62b8824e [gaim-migrate @ 10780]
Luke Schierer <lschiere@pidgin.im>
parents: 9883
diff changeset
128
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
129 lu->name = g_strdup(purple_normalize(log->account, log->name));
10171
814764a2d24c [gaim-migrate @ 11263]
Luke Schierer <lschiere@pidgin.im>
parents: 10087
diff changeset
130 lu->account = log->account;
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
131
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
132 if(g_hash_table_lookup_extended(logsize_users, lu, NULL, &ptrsize)) {
25883
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
133 char *tmp = lu->name;
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
134
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
135 total = GPOINTER_TO_INT(ptrsize);
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
136 total += written;
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
137 g_hash_table_replace(logsize_users, lu, GINT_TO_POINTER(total));
25883
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
138
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
139 /* The hash table takes ownership of lu, so create a new one
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
140 * for the logsize_users_decayed check below. */
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
141 lu = g_new(struct _purple_logsize_user, 1);
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
142 lu->name = g_strdup(tmp);
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
143 lu->account = log->account;
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
144 }
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
145
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
146 if(g_hash_table_lookup_extended(logsize_users_decayed, lu, NULL, &ptrsize)) {
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
147 total = GPOINTER_TO_INT(ptrsize);
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
148 total += written;
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
149 g_hash_table_replace(logsize_users_decayed, lu, GINT_TO_POINTER(total));
13077
418101346d08 [gaim-migrate @ 15438]
Richard Laager <rlaager@pidgin.im>
parents: 13069
diff changeset
150 } else {
418101346d08 [gaim-migrate @ 15438]
Richard Laager <rlaager@pidgin.im>
parents: 13069
diff changeset
151 g_free(lu->name);
418101346d08 [gaim-migrate @ 15438]
Richard Laager <rlaager@pidgin.im>
parents: 13069
diff changeset
152 g_free(lu);
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
153 }
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
154 }
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
155
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
156 char *purple_log_read(PurpleLog *log, PurpleLogReadFlags *flags)
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
157 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
158 PurpleLogReadFlags mflags;
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
159 g_return_val_if_fail(log && log->logger, NULL);
7462
c51a6ec98ba7 [gaim-migrate @ 8075]
Nathan Walp <nwalp@pidgin.im>
parents: 7461
diff changeset
160 if (log->logger->read) {
7535
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7501
diff changeset
161 char *ret = (log->logger->read)(log, flags ? flags : &mflags);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
162 purple_str_strip_char(ret, '\r');
7462
c51a6ec98ba7 [gaim-migrate @ 8075]
Nathan Walp <nwalp@pidgin.im>
parents: 7461
diff changeset
163 return ret;
c51a6ec98ba7 [gaim-migrate @ 8075]
Nathan Walp <nwalp@pidgin.im>
parents: 7461
diff changeset
164 }
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13105
diff changeset
165 return g_strdup(_("<b><font color=\"red\">The logger has no read function</font></b>"));
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
166 }
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
167
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
168 int purple_log_get_size(PurpleLog *log)
7556
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
169 {
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
170 g_return_val_if_fail(log && log->logger, 0);
8096
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
171
7556
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
172 if (log->logger->size)
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
173 return log->logger->size(log);
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
174 return 0;
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
175 }
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
176
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
177 static guint _purple_logsize_user_hash(struct _purple_logsize_user *lu)
8635
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
178 {
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
179 return g_str_hash(lu->name);
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
180 }
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
181
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
182 static guint _purple_logsize_user_equal(struct _purple_logsize_user *lu1,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
183 struct _purple_logsize_user *lu2)
8635
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
184 {
25859
b42be7bb9dac Patch from Paul Aurich to add purple_strequal to help readability and simplicity of code. Ie, don't need to negate the value of strcmp, since this does a strcmp and does the negation for us
Paul Aurich <darkrain42@pidgin.im>
parents: 24971
diff changeset
185 return (lu1->account == lu2->account && purple_strequal(lu1->name, lu2->name));
8635
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
186 }
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
187
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
188 static void _purple_logsize_user_free_key(struct _purple_logsize_user *lu)
8635
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
189 {
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
190 g_free(lu->name);
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
191 g_free(lu);
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
192 }
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
193
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
194 int purple_log_get_total_size(PurpleLogType type, const char *name, PurpleAccount *account)
7556
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
195 {
9677
1e4f158006e1 [gaim-migrate @ 10529]
Nathan Walp <nwalp@pidgin.im>
parents: 9613
diff changeset
196 gpointer ptrsize;
1e4f158006e1 [gaim-migrate @ 10529]
Nathan Walp <nwalp@pidgin.im>
parents: 9613
diff changeset
197 int size = 0;
8096
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
198 GSList *n;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
199 struct _purple_logsize_user *lu;
8096
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
200
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
201 lu = g_new(struct _purple_logsize_user, 1);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
202 lu->name = g_strdup(purple_normalize(account, name));
8635
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
203 lu->account = account;
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
204
9677
1e4f158006e1 [gaim-migrate @ 10529]
Nathan Walp <nwalp@pidgin.im>
parents: 9613
diff changeset
205 if(g_hash_table_lookup_extended(logsize_users, lu, NULL, &ptrsize)) {
1e4f158006e1 [gaim-migrate @ 10529]
Nathan Walp <nwalp@pidgin.im>
parents: 9613
diff changeset
206 size = GPOINTER_TO_INT(ptrsize);
8635
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
207 g_free(lu->name);
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
208 g_free(lu);
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
209 } else {
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
210 for (n = loggers; n; n = n->next) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
211 PurpleLogLogger *logger = n->data;
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
212
8635
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
213 if(logger->total_size){
8898
85f5615bc27e [gaim-migrate @ 9667]
Mark Doliner <markdoliner@pidgin.im>
parents: 8635
diff changeset
214 size += (logger->total_size)(type, name, account);
8635
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
215 } else if(logger->list) {
8898
85f5615bc27e [gaim-migrate @ 9667]
Mark Doliner <markdoliner@pidgin.im>
parents: 8635
diff changeset
216 GList *logs = (logger->list)(type, name, account);
8635
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
217 int this_size = 0;
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
218
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
219 while (logs) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
220 PurpleLog *log = (PurpleLog*)(logs->data);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
221 this_size += purple_log_get_size(log);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
222 purple_log_free(log);
13568
406e8503a006 [gaim-migrate @ 15946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13520
diff changeset
223 logs = g_list_delete_link(logs, logs);
8635
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
224 }
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
225
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
226 size += this_size;
8096
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
227 }
8635
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
228 }
8096
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
229
8635
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
230 g_hash_table_replace(logsize_users, lu, GINT_TO_POINTER(size));
7556
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
231 }
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
232 return size;
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
233 }
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
234
25883
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
235 gint purple_log_get_activity_score(PurpleLogType type, const char *name, PurpleAccount *account)
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
236 {
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
237 gpointer ptrscore;
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
238 int score;
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
239 GSList *n;
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
240 struct _purple_logsize_user *lu;
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
241
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
242 lu = g_new(struct _purple_logsize_user, 1);
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
243 lu->name = g_strdup(purple_normalize(account, name));
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
244 lu->account = account;
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
245
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
246 if(g_hash_table_lookup_extended(logsize_users_decayed, lu, NULL, &ptrscore)) {
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
247 score = GPOINTER_TO_INT(ptrscore);
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
248 g_free(lu->name);
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
249 g_free(lu);
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
250 } else {
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
251 GDateTime *now = g_date_time_new_now_utc();
25883
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
252 double score_double = 0.0;
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
253 for (n = loggers; n; n = n->next) {
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
254 PurpleLogLogger *logger = n->data;
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
255
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
256 if(logger->list) {
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
257 GList *logs = (logger->list)(type, name, account);
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
258
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
259 while (logs) {
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
260 PurpleLog *log = (PurpleLog*)(logs->data);
35382
1b75f8a4129c Fix some clang static analysis warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35298
diff changeset
261 if (!log) {
1b75f8a4129c Fix some clang static analysis warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35298
diff changeset
262 g_warn_if_reached();
1b75f8a4129c Fix some clang static analysis warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35298
diff changeset
263 continue;
1b75f8a4129c Fix some clang static analysis warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35298
diff changeset
264 }
25883
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
265 /* Activity score counts bytes in the log, exponentially
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
266 decayed with a half-life of 14 days. */
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
267 score_double += purple_log_get_size(log) *
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
268 pow(0.5, g_date_time_difference(now, log->time)/(14LL*G_TIME_SPAN_DAY));
25883
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
269 purple_log_free(log);
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
270 logs = g_list_delete_link(logs, logs);
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
271 }
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
272 }
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
273 }
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
274 g_date_time_unref(now);
25883
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
275
29784
17baa4c9a8c5 pidgin: Distinguish no logs from really old logs (for Recent Log Activity sort)
Greg McNew <gmcnew@gmail.com>
parents: 28119
diff changeset
276 score = (gint) ceil(score_double);
25883
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
277 g_hash_table_replace(logsize_users_decayed, lu, GINT_TO_POINTER(score));
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
278 }
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
279 return score;
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
280 }
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
281
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
282 gboolean purple_log_is_deletable(PurpleLog *log)
15584
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
283 {
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
284 g_return_val_if_fail(log != NULL, FALSE);
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
285 g_return_val_if_fail(log->logger != NULL, FALSE);
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
286
16116
bccaa68c86ad "delete" is a reserved word in C++, rename the "delete" member of
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15981
diff changeset
287 if (log->logger->remove == NULL)
15584
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
288 return FALSE;
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
289
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
290 if (log->logger->is_deletable != NULL)
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
291 return log->logger->is_deletable(log);
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
292
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
293 return TRUE;
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
294 }
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
295
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
296 gboolean purple_log_delete(PurpleLog *log)
15584
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
297 {
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
298 g_return_val_if_fail(log != NULL, FALSE);
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
299 g_return_val_if_fail(log->logger != NULL, FALSE);
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
300
16116
bccaa68c86ad "delete" is a reserved word in C++, rename the "delete" member of
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15981
diff changeset
301 if (log->logger->remove != NULL)
bccaa68c86ad "delete" is a reserved word in C++, rename the "delete" member of
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15981
diff changeset
302 return log->logger->remove(log);
15584
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
303
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
304 return FALSE;
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
305 }
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
306
10822
142911801a14 [gaim-migrate @ 12484]
Kevin Stange <kstange@pidgin.im>
parents: 10735
diff changeset
307 char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
308 purple_log_get_log_dir(PurpleLogType type, const char *name, PurpleAccount *account)
10577
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
309 {
36544
1bf8b6ef5aea Renamed PurplePluginProtocolInfo to PurpleProtocol
Ankit Vani <a@nevitus.org>
parents: 36371
diff changeset
310 PurpleProtocol *protocol;
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
311 const char *protocol_name;
10577
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
312 char *acct_name;
9926
9957e01fd88a [gaim-migrate @ 10818]
Nathan Walp <nwalp@pidgin.im>
parents: 9923
diff changeset
313 const char *target;
10577
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
314 char *dir;
9926
9957e01fd88a [gaim-migrate @ 10818]
Nathan Walp <nwalp@pidgin.im>
parents: 9923
diff changeset
315
36626
18fc361b3704 Renamed purple_find_protocol_info to purple_protocols_find
Ankit Vani <a@nevitus.org>
parents: 36606
diff changeset
316 protocol = purple_protocols_find(purple_account_get_protocol_id(account));
36544
1bf8b6ef5aea Renamed PurplePluginProtocolInfo to PurpleProtocol
Ankit Vani <a@nevitus.org>
parents: 36371
diff changeset
317 if (!protocol)
10577
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
318 return NULL;
36371
7adff7dc0f57 Refactored keyring and log to use the initial GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 36361
diff changeset
319
36719
0d7682bdf828 Updated protocol iface calls
Ankit Vani <a@nevitus.org>
parents: 36637
diff changeset
320 protocol_name = purple_protocol_class_list_icon(protocol, account, NULL);
10577
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
321
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
322 acct_name = g_strdup(purple_escape_filename(purple_normalize(account,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
323 purple_account_get_username(account))));
9923
f3060096e964 [gaim-migrate @ 10815]
Daniel Atallah <datallah@pidgin.im>
parents: 9892
diff changeset
324
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
325 if (type == PURPLE_LOG_CHAT) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
326 char *temp = g_strdup_printf("%s.chat", purple_normalize(account, name));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
327 target = purple_escape_filename(temp);
9923
f3060096e964 [gaim-migrate @ 10815]
Daniel Atallah <datallah@pidgin.im>
parents: 9892
diff changeset
328 g_free(temp);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
329 } else if(type == PURPLE_LOG_SYSTEM) {
9926
9957e01fd88a [gaim-migrate @ 10818]
Nathan Walp <nwalp@pidgin.im>
parents: 9923
diff changeset
330 target = ".system";
9923
f3060096e964 [gaim-migrate @ 10815]
Daniel Atallah <datallah@pidgin.im>
parents: 9892
diff changeset
331 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
332 target = purple_escape_filename(purple_normalize(account, name));
9923
f3060096e964 [gaim-migrate @ 10815]
Daniel Atallah <datallah@pidgin.im>
parents: 9892
diff changeset
333 }
f3060096e964 [gaim-migrate @ 10815]
Daniel Atallah <datallah@pidgin.im>
parents: 9892
diff changeset
334
38870
575e41bfc15e Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents: 37554
diff changeset
335 dir = g_build_filename(purple_data_dir(), "logs", protocol_name, acct_name, target, NULL);
9926
9957e01fd88a [gaim-migrate @ 10818]
Nathan Walp <nwalp@pidgin.im>
parents: 9923
diff changeset
336
9923
f3060096e964 [gaim-migrate @ 10815]
Daniel Atallah <datallah@pidgin.im>
parents: 9892
diff changeset
337 g_free(acct_name);
10577
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
338
9923
f3060096e964 [gaim-migrate @ 10815]
Daniel Atallah <datallah@pidgin.im>
parents: 9892
diff changeset
339 return dir;
f3060096e964 [gaim-migrate @ 10815]
Daniel Atallah <datallah@pidgin.im>
parents: 9892
diff changeset
340 }
f3060096e964 [gaim-migrate @ 10815]
Daniel Atallah <datallah@pidgin.im>
parents: 9892
diff changeset
341
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
342 /****************************************************************************
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
343 * LOGGER FUNCTIONS *********************************************************
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
344 ****************************************************************************/
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
345
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
346 static PurpleLogLogger *current_logger = NULL;
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
347
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
348 static void logger_pref_cb(const char *name, PurplePrefType type,
12816
5f93e09fa9a6 [gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents: 12738
diff changeset
349 gconstpointer value, gpointer data)
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
350 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
351 PurpleLogLogger *logger;
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
352 GSList *l = loggers;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
353 while (l) {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
354 logger = l->data;
25859
b42be7bb9dac Patch from Paul Aurich to add purple_strequal to help readability and simplicity of code. Ie, don't need to negate the value of strcmp, since this does a strcmp and does the negation for us
Paul Aurich <darkrain42@pidgin.im>
parents: 24971
diff changeset
355 if (purple_strequal(logger->id, value)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
356 purple_log_logger_set(logger);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
357 return;
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
358 }
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
359 l = l->next;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
360 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
361 purple_log_logger_set(txt_logger);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
362 }
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
363
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
364
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
365 PurpleLogLogger *purple_log_logger_new(const char *id, const char *name, int functions, ...)
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
366 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
367 PurpleLogLogger *logger;
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
368 va_list args;
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
369
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
370 g_return_val_if_fail(id != NULL, NULL);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
371 g_return_val_if_fail(name != NULL, NULL);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
372 g_return_val_if_fail(functions >= 1, NULL);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
373
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
374 logger = g_new0(PurpleLogLogger, 1);
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
375 logger->id = g_strdup(id);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
376 logger->name = g_strdup(name);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
377
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
378 va_start(args, functions);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
379
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
380 if (functions >= 1)
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
381 logger->create = va_arg(args, void *);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
382 if (functions >= 2)
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
383 logger->write = va_arg(args, void *);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
384 if (functions >= 3)
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
385 logger->finalize = va_arg(args, void *);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
386 if (functions >= 4)
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
387 logger->list = va_arg(args, void *);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
388 if (functions >= 5)
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
389 logger->read = va_arg(args, void *);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
390 if (functions >= 6)
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
391 logger->size = va_arg(args, void *);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
392 if (functions >= 7)
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
393 logger->total_size = va_arg(args, void *);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
394 if (functions >= 8)
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
395 logger->list_syslog = va_arg(args, void *);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
396 if (functions >= 9)
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
397 logger->get_log_sets = va_arg(args, void *);
15584
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
398 if (functions >= 10)
16116
bccaa68c86ad "delete" is a reserved word in C++, rename the "delete" member of
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15981
diff changeset
399 logger->remove = va_arg(args, void *);
15584
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
400 if (functions >= 11)
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
401 logger->is_deletable = va_arg(args, void *);
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
402
15584
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
403 if (functions >= 12)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
404 purple_debug_info("log", "Dropping new functions for logger: %s (%s)\n", name, id);
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
405
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
406 va_end(args);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
407
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
408 return logger;
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
409 }
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
410
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
411 void purple_log_logger_free(PurpleLogLogger *logger)
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
412 {
35382
1b75f8a4129c Fix some clang static analysis warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35298
diff changeset
413 if (!logger)
1b75f8a4129c Fix some clang static analysis warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35298
diff changeset
414 return;
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
415 g_free(logger->name);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
416 g_free(logger->id);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
417 g_free(logger);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
418 }
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
419
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
420 void purple_log_logger_add (PurpleLogLogger *logger)
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
421 {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
422 g_return_if_fail(logger);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
423 if (g_slist_find(loggers, logger))
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
424 return;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
425 loggers = g_slist_append(loggers, logger);
25859
b42be7bb9dac Patch from Paul Aurich to add purple_strequal to help readability and simplicity of code. Ie, don't need to negate the value of strcmp, since this does a strcmp and does the negation for us
Paul Aurich <darkrain42@pidgin.im>
parents: 24971
diff changeset
426 if (purple_strequal(purple_prefs_get_string("/purple/logging/format"), logger->id)) {
18166
3edbd0ef7f1f Custom logger selection doesn't work after a restart. To fix this, we do a
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18152
diff changeset
427 purple_prefs_trigger_callback("/purple/logging/format");
3edbd0ef7f1f Custom logger selection doesn't work after a restart. To fix this, we do a
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18152
diff changeset
428 }
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
429 }
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
430
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
431 void purple_log_logger_remove (PurpleLogLogger *logger)
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
432 {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
433 g_return_if_fail(logger);
12574
3c80324a3ea5 [gaim-migrate @ 14896]
Mark Doliner <markdoliner@pidgin.im>
parents: 12241
diff changeset
434 loggers = g_slist_remove(loggers, logger);
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
435 }
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
436
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
437 void purple_log_logger_set (PurpleLogLogger *logger)
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
438 {
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
439 g_return_if_fail(logger);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
440 current_logger = logger;
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
441 }
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
442
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
443 PurpleLogLogger *purple_log_logger_get()
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
444 {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
445 return current_logger;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
446 }
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
447
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
448 GList *purple_log_logger_get_options(void)
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
449 {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
450 GSList *n;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
451 GList *list = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
452 PurpleLogLogger *data;
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
453
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
454 for (n = loggers; n; n = n->next) {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
455 data = n->data;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
456 if (!data->write)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
457 continue;
12241
29b388429db5 [gaim-migrate @ 14543]
Richard Laager <rlaager@pidgin.im>
parents: 12240
diff changeset
458 list = g_list_append(list, data->name);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
459 list = g_list_append(list, data->id);
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
460 }
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
461
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
462 return list;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
463 }
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
464
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
465 gint purple_log_compare(gconstpointer y, gconstpointer z)
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
466 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
467 const PurpleLog *a = y;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
468 const PurpleLog *b = z;
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
469
38625
a7857c688deb Update a comment.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38622
diff changeset
470 /* Sort in reverse order. */
a7857c688deb Update a comment.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38622
diff changeset
471 return g_date_time_compare(b->time, a->time);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
472 }
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
473
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
474 GList *purple_log_get_logs(PurpleLogType type, const char *name, PurpleAccount *account)
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
475 {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
476 GList *logs = NULL;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
477 GSList *n;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
478 for (n = loggers; n; n = n->next) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
479 PurpleLogLogger *logger = n->data;
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
480 if (!logger->list)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
481 continue;
11703
6b22ef099870 [gaim-migrate @ 13994]
Richard Laager <rlaager@pidgin.im>
parents: 11698
diff changeset
482 logs = g_list_concat(logger->list(type, name, account), logs);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
483 }
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
484
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
485 return g_list_sort(logs, purple_log_compare);
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
486 }
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
487
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
488 gint purple_log_set_compare(gconstpointer y, gconstpointer z)
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
489 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
490 const PurpleLogSet *a = y;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
491 const PurpleLogSet *b = z;
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
492 gint ret = 0;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
493
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
494 /* This logic seems weird at first...
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
495 * If either account is NULL, we pretend the accounts are
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
496 * equal. This allows us to detect duplicates that will
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
497 * exist if one logger knows the account and another
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
498 * doesn't. */
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
499 if (a->account != NULL && b->account != NULL) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
500 ret = strcmp(purple_account_get_username(a->account), purple_account_get_username(b->account));
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
501 if (ret != 0)
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
502 return ret;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
503 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
504
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
505 ret = strcmp(a->normalized_name, b->normalized_name);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
506 if (ret != 0)
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
507 return ret;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
508
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
509 return (gint)b->type - (gint)a->type;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
510 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
511
11677
89c2ab8d2ebf [gaim-migrate @ 13963]
Mark Doliner <markdoliner@pidgin.im>
parents: 11503
diff changeset
512 static guint
89c2ab8d2ebf [gaim-migrate @ 13963]
Mark Doliner <markdoliner@pidgin.im>
parents: 11503
diff changeset
513 log_set_hash(gconstpointer key)
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
514 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
515 const PurpleLogSet *set = key;
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
516
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
517 /* The account isn't hashed because we need PurpleLogSets with NULL accounts
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
518 * to be found when we search by a PurpleLogSet that has a non-NULL account
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
519 * but the same type and name. */
15483
bfcce3ec6848 Patch #1600087 from Richard 'wabz' Nelson: "Don't include a buddy's name when logging error/raw messages"
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15444
diff changeset
520 return g_int_hash(&set->type) + g_str_hash(set->name);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
521 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
522
11677
89c2ab8d2ebf [gaim-migrate @ 13963]
Mark Doliner <markdoliner@pidgin.im>
parents: 11503
diff changeset
523 static gboolean
89c2ab8d2ebf [gaim-migrate @ 13963]
Mark Doliner <markdoliner@pidgin.im>
parents: 11503
diff changeset
524 log_set_equal(gconstpointer a, gconstpointer b)
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
525 {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
526 /* I realize that the choices made for GList and GHashTable
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
527 * make sense for those data types, but I wish the comparison
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
528 * functions were compatible. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
529 return !purple_log_set_compare(a, b);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
530 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
531
11677
89c2ab8d2ebf [gaim-migrate @ 13963]
Mark Doliner <markdoliner@pidgin.im>
parents: 11503
diff changeset
532 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
533 log_add_log_set_to_hash(GHashTable *sets, PurpleLogSet *set)
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
534 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
535 PurpleLogSet *existing_set = g_hash_table_lookup(sets, set);
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
536
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
537 if (existing_set == NULL)
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
538 g_hash_table_insert(sets, set, set);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
539 else if (existing_set->account == NULL && set->account != NULL)
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
540 g_hash_table_replace(sets, set, set);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
541 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
542 purple_log_set_free(set);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
543 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
544
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
545 GHashTable *purple_log_get_log_sets(void)
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
546 {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
547 GSList *n;
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
548 GHashTable *sets = g_hash_table_new_full(log_set_hash, log_set_equal,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
549 (GDestroyNotify)purple_log_set_free, NULL);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
550
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
551 /* Get the log sets from all the loggers. */
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
552 for (n = loggers; n; n = n->next) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
553 PurpleLogLogger *logger = n->data;
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
554
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
555 if (!logger->get_log_sets)
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
556 continue;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
557
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
558 logger->get_log_sets(log_add_log_set_to_hash, sets);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
559 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
560
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
561 log_get_log_sets_common(sets);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
562
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
563 /* Return the GHashTable of unique PurpleLogSets. */
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
564 return sets;
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
565 }
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
566
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
567 void purple_log_set_free(PurpleLogSet *set)
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
568 {
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
569 g_return_if_fail(set != NULL);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
570
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
571 g_free(set->name);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
572 if (set->normalized_name != set->name)
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
573 g_free(set->normalized_name);
13624
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
574
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
575 g_slice_free(PurpleLogSet, set);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
576 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
577
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
578 GList *purple_log_get_system_logs(PurpleAccount *account)
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
579 {
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
580 GList *logs = NULL;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
581 GSList *n;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
582 for (n = loggers; n; n = n->next) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
583 PurpleLogLogger *logger = n->data;
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
584 if (!logger->list_syslog)
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
585 continue;
11703
6b22ef099870 [gaim-migrate @ 13994]
Richard Laager <rlaager@pidgin.im>
parents: 11698
diff changeset
586 logs = g_list_concat(logger->list_syslog(account), logs);
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
587 }
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
588
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
589 return g_list_sort(logs, purple_log_compare);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
590 }
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
591
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
592 /****************************************************************************
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
593 * LOG SUBSYSTEM ************************************************************
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
594 ****************************************************************************/
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
595
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
596 void *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
597 purple_log_get_handle(void)
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
598 {
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
599 static int handle;
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
600
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
601 return &handle;
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
602 }
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
603
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
604 void purple_log_init(void)
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
605 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
606 void *handle = purple_log_get_handle();
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
607
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16116
diff changeset
608 purple_prefs_add_none("/purple/logging");
24971
f6617f5bdcbc Enable logging of IMs and chats by default, using the HTML log format.
Richard Laager <rlaager@pidgin.im>
parents: 24955
diff changeset
609 purple_prefs_add_bool("/purple/logging/log_ims", TRUE);
f6617f5bdcbc Enable logging of IMs and chats by default, using the HTML log format.
Richard Laager <rlaager@pidgin.im>
parents: 24955
diff changeset
610 purple_prefs_add_bool("/purple/logging/log_chats", TRUE);
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16116
diff changeset
611 purple_prefs_add_bool("/purple/logging/log_system", FALSE);
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
612
24971
f6617f5bdcbc Enable logging of IMs and chats by default, using the HTML log format.
Richard Laager <rlaager@pidgin.im>
parents: 24955
diff changeset
613 purple_prefs_add_string("/purple/logging/format", "html");
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
614
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
615 html_logger = purple_log_logger_new("html", _("HTML"), 11,
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
616 NULL,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
617 html_logger_write,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
618 html_logger_finalize,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
619 html_logger_list,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
620 html_logger_read,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
621 purple_log_common_sizer,
13389
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
622 html_logger_total_size,
15584
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
623 html_logger_list_syslog,
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
624 NULL,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
625 purple_log_common_deleter,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
626 purple_log_common_is_deletable);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
627 purple_log_logger_add(html_logger);
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
628
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
629 txt_logger = purple_log_logger_new("txt", _("Plain text"), 11,
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
630 NULL,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
631 txt_logger_write,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
632 txt_logger_finalize,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
633 txt_logger_list,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
634 txt_logger_read,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
635 purple_log_common_sizer,
13389
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
636 txt_logger_total_size,
15584
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
637 txt_logger_list_syslog,
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
638 NULL,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
639 purple_log_common_deleter,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
640 purple_log_common_is_deletable);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
641 purple_log_logger_add(txt_logger);
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
642
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
643 old_logger = purple_log_logger_new("old", _("Old flat format"), 9,
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
644 NULL,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
645 NULL,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
646 old_logger_finalize,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
647 old_logger_list,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
648 old_logger_read,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
649 old_logger_size,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
650 old_logger_total_size,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
651 NULL,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
652 old_logger_get_log_sets);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
653 purple_log_logger_add(old_logger);
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
654
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
655 purple_signal_register(handle, "log-timestamp",
38621
1412d6b993e9 Use GDateTime in purple_log_write.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38620
diff changeset
656 purple_marshal_POINTER__POINTER_POINTER_BOOLEAN,
34820
7a89045601ae Refactored log, network, notify to use GType instead of PurpleValue
Ankit Vani <a@nevitus.org>
parents: 34792
diff changeset
657 G_TYPE_STRING, 3,
7a89045601ae Refactored log, network, notify to use GType instead of PurpleValue
Ankit Vani <a@nevitus.org>
parents: 34792
diff changeset
658 PURPLE_TYPE_LOG,
38621
1412d6b993e9 Use GDateTime in purple_log_write.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38620
diff changeset
659 G_TYPE_OBJECT,
34820
7a89045601ae Refactored log, network, notify to use GType instead of PurpleValue
Ankit Vani <a@nevitus.org>
parents: 34792
diff changeset
660 G_TYPE_BOOLEAN);
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
661
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16116
diff changeset
662 purple_prefs_connect_callback(NULL, "/purple/logging/format",
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
663 logger_pref_cb, NULL);
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16116
diff changeset
664 purple_prefs_trigger_callback("/purple/logging/format");
8635
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
665
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
666 logsize_users = g_hash_table_new_full((GHashFunc)_purple_logsize_user_hash,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
667 (GEqualFunc)_purple_logsize_user_equal,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
668 (GDestroyNotify)_purple_logsize_user_free_key, NULL);
25883
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
669 logsize_users_decayed = g_hash_table_new_full((GHashFunc)_purple_logsize_user_hash,
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
670 (GEqualFunc)_purple_logsize_user_equal,
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
671 (GDestroyNotify)_purple_logsize_user_free_key, NULL);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
672 }
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
673
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
674 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
675 purple_log_uninit(void)
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
676 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
677 purple_signals_unregister_by_instance(purple_log_get_handle());
22979
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22850
diff changeset
678
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22850
diff changeset
679 purple_log_logger_remove(html_logger);
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22850
diff changeset
680 purple_log_logger_free(html_logger);
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22850
diff changeset
681 html_logger = NULL;
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22850
diff changeset
682
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22850
diff changeset
683 purple_log_logger_remove(txt_logger);
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22850
diff changeset
684 purple_log_logger_free(txt_logger);
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22850
diff changeset
685 txt_logger = NULL;
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22850
diff changeset
686
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22850
diff changeset
687 purple_log_logger_remove(old_logger);
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22850
diff changeset
688 purple_log_logger_free(old_logger);
29ca0829efe0 Clean up loggers when quitting (or unloading the logreader plugin).
Daniel Atallah <datallah@pidgin.im>
parents: 22850
diff changeset
689 old_logger = NULL;
25883
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
690
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
691 g_hash_table_destroy(logsize_users);
059b74032730 A patch from Chris Connett to change the log size sorting method to weight
Richard Laager <rlaager@pidgin.im>
parents: 25859
diff changeset
692 g_hash_table_destroy(logsize_users_decayed);
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
693 }
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
694
34792
09228ea79272 Added GBoxed to certificate, certificate pool, xfer, log
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
695 static PurpleLog *
09228ea79272 Added GBoxed to certificate, certificate pool, xfer, log
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
696 purple_log_copy(PurpleLog *log)
09228ea79272 Added GBoxed to certificate, certificate pool, xfer, log
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
697 {
09228ea79272 Added GBoxed to certificate, certificate pool, xfer, log
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
698 PurpleLog *log_copy;
09228ea79272 Added GBoxed to certificate, certificate pool, xfer, log
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
699
09228ea79272 Added GBoxed to certificate, certificate pool, xfer, log
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
700 g_return_val_if_fail(log != NULL, NULL);
09228ea79272 Added GBoxed to certificate, certificate pool, xfer, log
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
701
09228ea79272 Added GBoxed to certificate, certificate pool, xfer, log
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
702 log_copy = g_new(PurpleLog, 1);
09228ea79272 Added GBoxed to certificate, certificate pool, xfer, log
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
703 *log_copy = *log;
09228ea79272 Added GBoxed to certificate, certificate pool, xfer, log
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
704
09228ea79272 Added GBoxed to certificate, certificate pool, xfer, log
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
705 return log_copy;
09228ea79272 Added GBoxed to certificate, certificate pool, xfer, log
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
706 }
09228ea79272 Added GBoxed to certificate, certificate pool, xfer, log
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
707
09228ea79272 Added GBoxed to certificate, certificate pool, xfer, log
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
708 GType
09228ea79272 Added GBoxed to certificate, certificate pool, xfer, log
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
709 purple_log_get_type(void)
09228ea79272 Added GBoxed to certificate, certificate pool, xfer, log
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
710 {
09228ea79272 Added GBoxed to certificate, certificate pool, xfer, log
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
711 static GType type = 0;
09228ea79272 Added GBoxed to certificate, certificate pool, xfer, log
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
712
09228ea79272 Added GBoxed to certificate, certificate pool, xfer, log
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
713 if (type == 0) {
09228ea79272 Added GBoxed to certificate, certificate pool, xfer, log
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
714 type = g_boxed_type_register_static("PurpleLog",
09228ea79272 Added GBoxed to certificate, certificate pool, xfer, log
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
715 (GBoxedCopyFunc)purple_log_copy,
09228ea79272 Added GBoxed to certificate, certificate pool, xfer, log
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
716 (GBoxedFreeFunc)g_free);
09228ea79272 Added GBoxed to certificate, certificate pool, xfer, log
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
717 }
09228ea79272 Added GBoxed to certificate, certificate pool, xfer, log
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
718
09228ea79272 Added GBoxed to certificate, certificate pool, xfer, log
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
719 return type;
09228ea79272 Added GBoxed to certificate, certificate pool, xfer, log
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
720 }
09228ea79272 Added GBoxed to certificate, certificate pool, xfer, log
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
721
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
722 /****************************************************************************
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
723 * LOGGERS ******************************************************************
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
724 ****************************************************************************/
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
725
38621
1412d6b993e9 Use GDateTime in purple_log_write.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38620
diff changeset
726 static char *log_get_timestamp(PurpleLog *log, GDateTime *when)
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
727 {
15575
bd1e13b63e4b In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents: 15483
diff changeset
728 gboolean show_date;
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
729 char *date;
38621
1412d6b993e9 Use GDateTime in purple_log_write.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38620
diff changeset
730 GDateTime *dt;
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
731
38621
1412d6b993e9 Use GDateTime in purple_log_write.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38620
diff changeset
732 dt = g_date_time_new_now_utc();
1412d6b993e9 Use GDateTime in purple_log_write.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38620
diff changeset
733 show_date = (log->type == PURPLE_LOG_SYSTEM) || (g_date_time_difference(dt, when) > 20L * G_TIME_SPAN_MINUTE);
1412d6b993e9 Use GDateTime in purple_log_write.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38620
diff changeset
734 g_date_time_unref(dt);
15575
bd1e13b63e4b In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents: 15483
diff changeset
735
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
736 date = purple_signal_emit_return_1(purple_log_get_handle(),
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
737 "log-timestamp",
15575
bd1e13b63e4b In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents: 15483
diff changeset
738 log, when, show_date);
13105
8f9c66e4af87 [gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents: 13078
diff changeset
739 if (date != NULL)
8f9c66e4af87 [gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents: 13078
diff changeset
740 return date;
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
741
38621
1412d6b993e9 Use GDateTime in purple_log_write.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38620
diff changeset
742 dt = g_date_time_to_local(when);
15575
bd1e13b63e4b In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents: 15483
diff changeset
743 if (show_date)
38621
1412d6b993e9 Use GDateTime in purple_log_write.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38620
diff changeset
744 date = g_date_time_format(dt, _("%x %X"));
13105
8f9c66e4af87 [gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents: 13078
diff changeset
745 else
38621
1412d6b993e9 Use GDateTime in purple_log_write.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38620
diff changeset
746 date = g_date_time_format(dt, "%X");
1412d6b993e9 Use GDateTime in purple_log_write.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38620
diff changeset
747 g_date_time_unref(dt);
1412d6b993e9 Use GDateTime in purple_log_write.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38620
diff changeset
748
1412d6b993e9 Use GDateTime in purple_log_write.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38620
diff changeset
749 return date;
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
750 }
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
751
18101
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
752 /* NOTE: This can return msg (which you may or may not want to g_free())
35813
a5b71a95a42a imgstore: remove references from libpurple (not prpls yet)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35489
diff changeset
753 * NOTE: or a newly allocated string which you MUST g_free().
a5b71a95a42a imgstore: remove references from libpurple (not prpls yet)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35489
diff changeset
754 * TODO: XXX: does it really works?
a5b71a95a42a imgstore: remove references from libpurple (not prpls yet)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35489
diff changeset
755 */
18101
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
756 static char *
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
757 convert_image_tags(const PurpleLog *log, const char *msg)
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
758 {
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
759 const char *tmp;
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
760 const char *start;
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
761 const char *end;
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
762 GData *attributes;
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
763 GString *newmsg = NULL;
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
764
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
765 tmp = msg;
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
766
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
767 while (purple_markup_find_tag("img", tmp, &start, &end, &attributes)) {
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
768 int imgid = 0;
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
769 char *idstr = NULL;
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
770
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
771 if (newmsg == NULL)
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
772 newmsg = g_string_new("");
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
773
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
774 /* copy any text before the img tag */
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
775 if (tmp < start)
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
776 g_string_append_len(newmsg, tmp, start - tmp);
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
777
19224
d4f5029288a6 bug fix
Daniel Atallah <datallah@pidgin.im>
parents: 18186
diff changeset
778 if ((idstr = g_datalist_get_data(&attributes, "id")) != NULL)
d4f5029288a6 bug fix
Daniel Atallah <datallah@pidgin.im>
parents: 18186
diff changeset
779 imgid = atoi(idstr);
18101
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
780
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
781 if (imgid != 0)
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
782 {
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
783 FILE *image_file;
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
784 char *dir;
35813
a5b71a95a42a imgstore: remove references from libpurple (not prpls yet)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35489
diff changeset
785 PurpleImage *image;
18101
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
786 gconstpointer image_data;
35837
528ddb11791c Drop purple_util_get_image_extension and purple_util_get_image_filename
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35813
diff changeset
787 const gchar *new_filename = NULL;
18101
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
788 char *path = NULL;
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
789 size_t image_byte_count;
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
790
35813
a5b71a95a42a imgstore: remove references from libpurple (not prpls yet)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35489
diff changeset
791 image = purple_image_store_get(imgid);
18101
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
792 if (image == NULL)
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
793 {
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
794 /* This should never happen. */
19224
d4f5029288a6 bug fix
Daniel Atallah <datallah@pidgin.im>
parents: 18186
diff changeset
795 /* This *does* happen for failed Direct-IMs -DAA */
18101
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
796 g_string_free(newmsg, TRUE);
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
797 g_return_val_if_reached((char *)msg);
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
798 }
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
799
35813
a5b71a95a42a imgstore: remove references from libpurple (not prpls yet)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35489
diff changeset
800 image_data = purple_image_get_data(image);
38298
f0a8f63f9312 rename purple_image_get_size to purple_image_get_data_size and deal with the fallout
Gary Kramlich <grim@reaperworld.com>
parents: 37554
diff changeset
801 image_byte_count = purple_image_get_data_size(image);
18101
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
802 dir = purple_log_get_log_dir(log->type, log->name, log->account);
35837
528ddb11791c Drop purple_util_get_image_extension and purple_util_get_image_filename
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35813
diff changeset
803 new_filename = purple_image_generate_filename(image);
18101
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
804
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
805 path = g_build_filename(dir, new_filename, NULL);
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
806
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
807 /* Only save unique files. */
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
808 if (!g_file_test(path, G_FILE_TEST_EXISTS))
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
809 {
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
810 if ((image_file = g_fopen(path, "wb")) != NULL)
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
811 {
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
812 if (!fwrite(image_data, image_byte_count, 1, image_file))
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
813 {
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
814 purple_debug_error("log", "Error writing %s: %s\n",
21389
e1dd8142bb87 replace most calls to strerror with calls to g_strerror. strerror will return
Nathan Walp <nwalp@pidgin.im>
parents: 20147
diff changeset
815 path, g_strerror(errno));
18101
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
816 fclose(image_file);
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
817
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
818 /* Attempt to not leave half-written files around. */
33561
20173b979145 s/unlink/g_unlink/ and log a message if the call fails.
Mark Doliner <mark@kingant.net>
parents: 32438
diff changeset
819 if (g_unlink(path)) {
20173b979145 s/unlink/g_unlink/ and log a message if the call fails.
Mark Doliner <mark@kingant.net>
parents: 32438
diff changeset
820 purple_debug_error("log", "Error deleting partial "
20173b979145 s/unlink/g_unlink/ and log a message if the call fails.
Mark Doliner <mark@kingant.net>
parents: 32438
diff changeset
821 "file %s: %s\n", path, g_strerror(errno));
20173b979145 s/unlink/g_unlink/ and log a message if the call fails.
Mark Doliner <mark@kingant.net>
parents: 32438
diff changeset
822 }
18101
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
823 }
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
824 else
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
825 {
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
826 purple_debug_info("log", "Wrote image file: %s\n", path);
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
827 fclose(image_file);
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
828 }
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
829 }
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
830 else
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
831 {
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
832 purple_debug_error("log", "Unable to create file %s: %s\n",
21389
e1dd8142bb87 replace most calls to strerror with calls to g_strerror. strerror will return
Nathan Walp <nwalp@pidgin.im>
parents: 20147
diff changeset
833 path, g_strerror(errno));
18101
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
834 }
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
835 }
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
836
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
837 /* Write the new image tag */
35837
528ddb11791c Drop purple_util_get_image_extension and purple_util_get_image_filename
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35813
diff changeset
838 g_string_append_printf(newmsg, "<img src=\"%s\">", new_filename);
18101
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
839 g_free(path);
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
840 }
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
841
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
842 /* Continue from the end of the tag */
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
843 tmp = end + 1;
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
844 }
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
845
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
846 if (newmsg == NULL)
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
847 {
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
848 /* No images were found to change. */
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
849 return (char *)msg;
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
850 }
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
851
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
852 /* Append any remaining message data */
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
853 g_string_append(newmsg, tmp);
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
854
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
855 return g_string_free(newmsg, FALSE);
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
856 }
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
857
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
858 void purple_log_common_writer(PurpleLog *log, const char *ext)
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
859 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
860 PurpleLogCommonLoggerData *data = log->logger_data;
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
861
11292
13068c68def6 [gaim-migrate @ 13492]
Richard Laager <rlaager@pidgin.im>
parents: 11256
diff changeset
862 if (data == NULL)
13068c68def6 [gaim-migrate @ 13492]
Richard Laager <rlaager@pidgin.im>
parents: 11256
diff changeset
863 {
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
864 /* This log is new */
13105
8f9c66e4af87 [gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents: 13078
diff changeset
865 char *dir;
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
866 GDateTime *dt;
13163
2026e49825df [gaim-migrate @ 15525]
Richard Laager <rlaager@pidgin.im>
parents: 13161
diff changeset
867 const char *tz;
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
868 gchar *date;
13105
8f9c66e4af87 [gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents: 13078
diff changeset
869 char *filename;
8f9c66e4af87 [gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents: 13078
diff changeset
870 char *path;
10577
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
871
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
872 dir = purple_log_get_log_dir(log->type, log->name, log->account);
10577
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
873 if (dir == NULL)
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
874 return;
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
875
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
876 purple_build_dir (dir, S_IRUSR | S_IWUSR | S_IXUSR);
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
877
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
878 dt = g_date_time_to_local(log->time);
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
879 tz = purple_escape_filename(g_date_time_get_timezone_abbreviation(dt));
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
880 date = g_date_time_format(dt, "%Y-%m-%d.%H%M%S%z");
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
881 g_date_time_unref(dt);
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
882
13163
2026e49825df [gaim-migrate @ 15525]
Richard Laager <rlaager@pidgin.im>
parents: 13161
diff changeset
883 filename = g_strdup_printf("%s%s%s", date, tz, ext ? ext : "");
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
884
13163
2026e49825df [gaim-migrate @ 15525]
Richard Laager <rlaager@pidgin.im>
parents: 13161
diff changeset
885 path = g_build_filename(dir, filename, NULL);
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
886 g_free(dir);
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
887 g_free(date);
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
888 g_free(filename);
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
889
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
890 log->logger_data = data = g_slice_new0(PurpleLogCommonLoggerData);
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
891
10589
4e10236e06d4 [gaim-migrate @ 11994]
Daniel Atallah <datallah@pidgin.im>
parents: 10577
diff changeset
892 data->file = g_fopen(path, "a");
11292
13068c68def6 [gaim-migrate @ 13492]
Richard Laager <rlaager@pidgin.im>
parents: 11256
diff changeset
893 if (data->file == NULL)
13068c68def6 [gaim-migrate @ 13492]
Richard Laager <rlaager@pidgin.im>
parents: 11256
diff changeset
894 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
895 purple_debug(PURPLE_DEBUG_ERROR, "log",
9892
281f62b8824e [gaim-migrate @ 10780]
Luke Schierer <lschiere@pidgin.im>
parents: 9883
diff changeset
896 "Could not create log file %s\n", path);
11292
13068c68def6 [gaim-migrate @ 13492]
Richard Laager <rlaager@pidgin.im>
parents: 11256
diff changeset
897
13068c68def6 [gaim-migrate @ 13492]
Richard Laager <rlaager@pidgin.im>
parents: 11256
diff changeset
898 if (log->conv != NULL)
36089
c035b9a63457 Use purple_conversation_write_system_message where appropriate
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36086
diff changeset
899 purple_conversation_write_system_message(log->conv,
c035b9a63457 Use purple_conversation_write_system_message where appropriate
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36086
diff changeset
900 _("Logging of this conversation failed."),
c035b9a63457 Use purple_conversation_write_system_message where appropriate
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36086
diff changeset
901 PURPLE_MESSAGE_ERROR);
11292
13068c68def6 [gaim-migrate @ 13492]
Richard Laager <rlaager@pidgin.im>
parents: 11256
diff changeset
902
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
903 g_free(path);
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
904 return;
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
905 }
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
906 g_free(path);
10577
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
907 }
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
908 }
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
909
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
910 GList *purple_log_common_lister(PurpleLogType type, const char *name, PurpleAccount *account, const char *ext, PurpleLogLogger *logger)
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
911 {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
912 GDir *dir;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
913 GList *list = NULL;
13160
8177a80d9e27 [gaim-migrate @ 15522]
Richard Laager <rlaager@pidgin.im>
parents: 13157
diff changeset
914 const char *filename;
8111
8c8fa8901d53 [gaim-migrate @ 8812]
Nathan Walp <nwalp@pidgin.im>
parents: 8096
diff changeset
915 char *path;
8c8fa8901d53 [gaim-migrate @ 8812]
Nathan Walp <nwalp@pidgin.im>
parents: 8096
diff changeset
916
8c8fa8901d53 [gaim-migrate @ 8812]
Nathan Walp <nwalp@pidgin.im>
parents: 8096
diff changeset
917 if(!account)
8c8fa8901d53 [gaim-migrate @ 8812]
Nathan Walp <nwalp@pidgin.im>
parents: 8096
diff changeset
918 return NULL;
8c8fa8901d53 [gaim-migrate @ 8812]
Nathan Walp <nwalp@pidgin.im>
parents: 8096
diff changeset
919
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
920 path = purple_log_get_log_dir(type, name, account);
10577
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
921 if (path == NULL)
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
922 return NULL;
7447
4876aeb16c60 [gaim-migrate @ 8058]
Mark Doliner <markdoliner@pidgin.im>
parents: 7443
diff changeset
923
12969
823d3591438c [gaim-migrate @ 15322]
Richard Laager <rlaager@pidgin.im>
parents: 12958
diff changeset
924 if (!(dir = g_dir_open(path, 0, NULL)))
823d3591438c [gaim-migrate @ 15322]
Richard Laager <rlaager@pidgin.im>
parents: 12958
diff changeset
925 {
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
926 g_free(path);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
927 return NULL;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
928 }
8898
85f5615bc27e [gaim-migrate @ 9667]
Mark Doliner <markdoliner@pidgin.im>
parents: 8635
diff changeset
929
13160
8177a80d9e27 [gaim-migrate @ 15522]
Richard Laager <rlaager@pidgin.im>
parents: 13157
diff changeset
930 while ((filename = g_dir_read_name(dir)))
12969
823d3591438c [gaim-migrate @ 15322]
Richard Laager <rlaager@pidgin.im>
parents: 12958
diff changeset
931 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
932 if (purple_str_has_suffix(filename, ext) &&
12969
823d3591438c [gaim-migrate @ 15322]
Richard Laager <rlaager@pidgin.im>
parents: 12958
diff changeset
933 strlen(filename) >= (17 + strlen(ext)))
823d3591438c [gaim-migrate @ 15322]
Richard Laager <rlaager@pidgin.im>
parents: 12958
diff changeset
934 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
935 PurpleLog *log;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
936 PurpleLogCommonLoggerData *data;
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
937 GDateTime *stamp = purple_str_to_date_time(purple_unescape_filename(filename), FALSE);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
938
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
939 log = purple_log_new(type, name, account, NULL, stamp);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
940 log->logger = logger;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
941 log->logger_data = data = g_slice_new0(PurpleLogCommonLoggerData);
13624
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
942
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
943 data->path = g_build_filename(path, filename, NULL);
11703
6b22ef099870 [gaim-migrate @ 13994]
Richard Laager <rlaager@pidgin.im>
parents: 11698
diff changeset
944 list = g_list_prepend(list, log);
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
945
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
946 g_date_time_unref(stamp);
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
947 }
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
948 }
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
949 g_dir_close(dir);
7447
4876aeb16c60 [gaim-migrate @ 8058]
Mark Doliner <markdoliner@pidgin.im>
parents: 7443
diff changeset
950 g_free(path);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
951 return list;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
952 }
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
953
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
954 int purple_log_common_total_sizer(PurpleLogType type, const char *name, PurpleAccount *account, const char *ext)
13389
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
955 {
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
956 GDir *dir;
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
957 int size = 0;
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
958 const char *filename;
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
959 char *path;
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
960
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
961 if(!account)
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
962 return 0;
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
963
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
964 path = purple_log_get_log_dir(type, name, account);
13389
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
965 if (path == NULL)
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
966 return 0;
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
967
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
968 if (!(dir = g_dir_open(path, 0, NULL)))
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
969 {
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
970 g_free(path);
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
971 return 0;
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
972 }
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
973
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
974 while ((filename = g_dir_read_name(dir)))
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
975 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
976 if (purple_str_has_suffix(filename, ext) &&
13389
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
977 strlen(filename) >= (17 + strlen(ext)))
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
978 {
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
979 char *tmp = g_build_filename(path, filename, NULL);
33940
b44d15793c83 Use GStatBuf instead of struct stat
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33774
diff changeset
980 GStatBuf st;
13389
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
981 if (g_stat(tmp, &st))
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
982 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
983 purple_debug_error("log", "Error stating log file: %s\n", tmp);
13389
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
984 g_free(tmp);
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
985 continue;
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
986 }
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
987 g_free(tmp);
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
988 size += st.st_size;
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
989 }
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
990 }
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
991 g_dir_close(dir);
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
992 g_free(path);
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
993 return size;
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
994 }
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
995
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
996 int purple_log_common_sizer(PurpleLog *log)
7556
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
997 {
33940
b44d15793c83 Use GStatBuf instead of struct stat
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33774
diff changeset
998 GStatBuf st;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
999 PurpleLogCommonLoggerData *data = log->logger_data;
7556
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
1000
15584
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1001 g_return_val_if_fail(data != NULL, 0);
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1002
10589
4e10236e06d4 [gaim-migrate @ 11994]
Daniel Atallah <datallah@pidgin.im>
parents: 10577
diff changeset
1003 if (!data->path || g_stat(data->path, &st))
7556
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
1004 st.st_size = 0;
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
1005
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
1006 return st.st_size;
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
1007 }
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
1008
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1009 /* This will build log sets for all loggers that use the common logger
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1010 * functions because they use the same directory structure. */
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
1011 static void log_get_log_sets_common(GHashTable *sets)
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1012 {
38870
575e41bfc15e Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents: 37554
diff changeset
1013 gchar *log_path = g_build_filename(purple_data_dir(), "logs", NULL);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1014 GDir *log_dir = g_dir_open(log_path, 0, NULL);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1015 const gchar *protocol;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1016
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1017 if (log_dir == NULL) {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1018 g_free(log_path);
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
1019 return;
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1020 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1021
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1022 while ((protocol = g_dir_read_name(log_dir)) != NULL) {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1023 gchar *protocol_path = g_build_filename(log_path, protocol, NULL);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1024 GDir *protocol_dir;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1025 const gchar *username;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1026 gchar *protocol_unescaped;
18122
9bf9970c1b6a disapproval of revision '2d8ea56b90971e7851442d96b7d74ecb4f052126'
Richard Laager <rlaager@pidgin.im>
parents: 18121
diff changeset
1027 GList *account_iter;
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1028 GList *accounts = NULL;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1029
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1030 if ((protocol_dir = g_dir_open(protocol_path, 0, NULL)) == NULL) {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1031 g_free(protocol_path);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1032 continue;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1033 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1034
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1035 /* Using g_strdup() to cover the one-in-a-million chance that a
36637
9b0109ae118d Renamed some prpl stuff to protocol stuff.
Ankit Vani <a@nevitus.org>
parents: 36626
diff changeset
1036 * protocol's list_icon function uses purple_unescape_filename(). */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1037 protocol_unescaped = g_strdup(purple_unescape_filename(protocol));
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1038
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1039 /* Find all the accounts for protocol. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1040 for (account_iter = purple_accounts_get_all() ; account_iter != NULL ; account_iter = account_iter->next) {
36544
1bf8b6ef5aea Renamed PurplePluginProtocolInfo to PurpleProtocol
Ankit Vani <a@nevitus.org>
parents: 36371
diff changeset
1041 PurpleProtocol *protocol;
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14068
diff changeset
1042
36626
18fc361b3704 Renamed purple_find_protocol_info to purple_protocols_find
Ankit Vani <a@nevitus.org>
parents: 36606
diff changeset
1043 protocol = purple_protocols_find(purple_account_get_protocol_id((PurpleAccount *)account_iter->data));
36544
1bf8b6ef5aea Renamed PurplePluginProtocolInfo to PurpleProtocol
Ankit Vani <a@nevitus.org>
parents: 36371
diff changeset
1044 if (!protocol)
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1045 continue;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1046
36719
0d7682bdf828 Updated protocol iface calls
Ankit Vani <a@nevitus.org>
parents: 36637
diff changeset
1047 if (purple_strequal(protocol_unescaped, purple_protocol_class_list_icon(protocol, (PurpleAccount *)account_iter->data, NULL)))
11703
6b22ef099870 [gaim-migrate @ 13994]
Richard Laager <rlaager@pidgin.im>
parents: 11698
diff changeset
1048 accounts = g_list_prepend(accounts, account_iter->data);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1049 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1050 g_free(protocol_unescaped);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1051
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1052 while ((username = g_dir_read_name(protocol_dir)) != NULL) {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1053 gchar *username_path = g_build_filename(protocol_path, username, NULL);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1054 GDir *username_dir;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1055 const gchar *username_unescaped;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1056 PurpleAccount *account = NULL;
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1057 gchar *name;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1058
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1059 if ((username_dir = g_dir_open(username_path, 0, NULL)) == NULL) {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1060 g_free(username_path);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1061 continue;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1062 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1063
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1064 /* Find the account for username in the list of accounts for protocol. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1065 username_unescaped = purple_unescape_filename(username);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1066 for (account_iter = g_list_first(accounts) ; account_iter != NULL ; account_iter = account_iter->next) {
32438
dc8991868906 A boring and large patch so I can merge heads.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32001
diff changeset
1067 if (purple_strequal(purple_account_get_username((PurpleAccount *)account_iter->data), username_unescaped)) {
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1068 account = account_iter->data;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1069 break;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1070 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1071 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1072
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1073 /* Don't worry about the cast, name will point to dynamically allocated memory shortly. */
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1074 while ((name = (gchar *)g_dir_read_name(username_dir)) != NULL) {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1075 size_t len;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1076 PurpleLogSet *set;
13624
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
1077
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1078 /* IMPORTANT: Always initialize all members of PurpleLogSet */
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1079 set = g_slice_new(PurpleLogSet);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1080
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1081 /* Unescape the filename. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1082 name = g_strdup(purple_unescape_filename(name));
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1083
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1084 /* Get the (possibly new) length of name. */
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1085 len = strlen(name);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1086
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1087 set->type = PURPLE_LOG_IM;
13624
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
1088 set->name = name;
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1089 set->account = account;
13624
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
1090 /* set->buddy is always set below */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1091 set->normalized_name = g_strdup(purple_normalize(account, name));
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1092
27586
4e908acd43b9 We are definitely "Check"ing here not "Chat"ting.
Etan Reisner <deryni@pidgin.im>
parents: 25883
diff changeset
1093 /* Check for .chat or .system at the end of the name to determine the type. */
23430
b26a5d982d62 Correctly detect system logs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22979
diff changeset
1094 if (len >= 7) {
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1095 gchar *tmp = &name[len - 7];
25859
b42be7bb9dac Patch from Paul Aurich to add purple_strequal to help readability and simplicity of code. Ie, don't need to negate the value of strcmp, since this does a strcmp and does the negation for us
Paul Aurich <darkrain42@pidgin.im>
parents: 24971
diff changeset
1096 if (purple_strequal(tmp, ".system")) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1097 set->type = PURPLE_LOG_SYSTEM;
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1098 *tmp = '\0';
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1099 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1100 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1101 if (len > 5) {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1102 gchar *tmp = &name[len - 5];
25859
b42be7bb9dac Patch from Paul Aurich to add purple_strequal to help readability and simplicity of code. Ie, don't need to negate the value of strcmp, since this does a strcmp and does the negation for us
Paul Aurich <darkrain42@pidgin.im>
parents: 24971
diff changeset
1103 if (purple_strequal(tmp, ".chat")) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1104 set->type = PURPLE_LOG_CHAT;
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1105 *tmp = '\0';
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1106 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1107 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1108
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1109 /* Determine if this (account, name) combination exists as a buddy. */
33769
96f89e35d24d Fix various "Dereference before null check" issues
Daniel Atallah <datallah@pidgin.im>
parents: 33597
diff changeset
1110 if (account != NULL && *name != '\0')
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34699
diff changeset
1111 set->buddy = (purple_blist_find_buddy(account, name) != NULL);
13624
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
1112 else
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
1113 set->buddy = FALSE;
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1114
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
1115 log_add_log_set_to_hash(sets, set);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1116 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1117 g_free(username_path);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1118 g_dir_close(username_dir);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1119 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1120 g_free(protocol_path);
31822
ec832bf0ba51 I will compile before committing. I will compile before committing.
Paul Aurich <darkrain42@pidgin.im>
parents: 31821
diff changeset
1121 g_list_free(accounts);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1122 g_dir_close(protocol_dir);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1123 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1124 g_free(log_path);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1125 g_dir_close(log_dir);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1126 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1127
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1128 gboolean purple_log_common_deleter(PurpleLog *log)
15584
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1129 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1130 PurpleLogCommonLoggerData *data;
15584
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1131 int ret;
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1132
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1133 g_return_val_if_fail(log != NULL, FALSE);
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1134
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1135 data = log->logger_data;
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1136 if (data == NULL)
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1137 return FALSE;
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1138
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1139 if (data->path == NULL)
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1140 return FALSE;
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1141
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1142 ret = g_unlink(data->path);
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1143 if (ret == 0)
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1144 return TRUE;
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1145 else if (ret == -1)
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1146 {
21389
e1dd8142bb87 replace most calls to strerror with calls to g_strerror. strerror will return
Nathan Walp <nwalp@pidgin.im>
parents: 20147
diff changeset
1147 purple_debug_error("log", "Failed to delete: %s - %s\n", data->path, g_strerror(errno));
15584
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1148 }
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1149 else
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1150 {
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1151 /* I'm not sure that g_unlink() will ever return
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1152 * something other than 0 or -1. -- rlaager */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1153 purple_debug_error("log", "Failed to delete: %s\n", data->path);
15584
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1154 }
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1155
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1156 return FALSE;
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1157 }
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1158
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1159 gboolean purple_log_common_is_deletable(PurpleLog *log)
15584
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1160 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1161 PurpleLogCommonLoggerData *data;
15676
5f5dc48279f4 Unused variables
Daniel Atallah <datallah@pidgin.im>
parents: 15595
diff changeset
1162 #ifndef _WIN32
15584
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1163 gchar *dirname;
15676
5f5dc48279f4 Unused variables
Daniel Atallah <datallah@pidgin.im>
parents: 15595
diff changeset
1164 #endif
15584
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1165
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1166 g_return_val_if_fail(log != NULL, FALSE);
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1167
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1168 data = log->logger_data;
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1169 if (data == NULL)
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1170 return FALSE;
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1171
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1172 if (data->path == NULL)
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1173 return FALSE;
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1174
15585
93dff667b2a3 I had the wrong arguments for gaim_log_logger_new(). It didn't work, but
Richard Laager <rlaager@pidgin.im>
parents: 15584
diff changeset
1175 #ifndef _WIN32
15584
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1176 dirname = g_path_get_dirname(data->path);
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1177 if (g_access(dirname, W_OK) == 0)
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1178 {
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1179 g_free(dirname);
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1180 return TRUE;
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1181 }
21389
e1dd8142bb87 replace most calls to strerror with calls to g_strerror. strerror will return
Nathan Walp <nwalp@pidgin.im>
parents: 20147
diff changeset
1182 purple_debug_info("log", "access(%s) failed: %s\n", dirname, g_strerror(errno));
15584
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1183 g_free(dirname);
15585
93dff667b2a3 I had the wrong arguments for gaim_log_logger_new(). It didn't work, but
Richard Laager <rlaager@pidgin.im>
parents: 15584
diff changeset
1184 #else
93dff667b2a3 I had the wrong arguments for gaim_log_logger_new(). It didn't work, but
Richard Laager <rlaager@pidgin.im>
parents: 15584
diff changeset
1185 /* Unless and until someone writes equivalent win32 code,
93dff667b2a3 I had the wrong arguments for gaim_log_logger_new(). It didn't work, but
Richard Laager <rlaager@pidgin.im>
parents: 15584
diff changeset
1186 * we'll assume the file is deletable. */
93dff667b2a3 I had the wrong arguments for gaim_log_logger_new(). It didn't work, but
Richard Laager <rlaager@pidgin.im>
parents: 15584
diff changeset
1187 return TRUE;
93dff667b2a3 I had the wrong arguments for gaim_log_logger_new(). It didn't work, but
Richard Laager <rlaager@pidgin.im>
parents: 15584
diff changeset
1188 #endif
15584
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1189
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1190 return FALSE;
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1191 }
f4d9ac6f94b8 This is the core code to support log deletion. It's untested.
Richard Laager <rlaager@pidgin.im>
parents: 15575
diff changeset
1192
15594
300c61e1ff2a Fix SF Bug #1644796
Richard Laager <rlaager@pidgin.im>
parents: 15585
diff changeset
1193 static char *process_txt_log(char *txt, char *to_free)
300c61e1ff2a Fix SF Bug #1644796
Richard Laager <rlaager@pidgin.im>
parents: 15585
diff changeset
1194 {
300c61e1ff2a Fix SF Bug #1644796
Richard Laager <rlaager@pidgin.im>
parents: 15585
diff changeset
1195 char *tmp;
300c61e1ff2a Fix SF Bug #1644796
Richard Laager <rlaager@pidgin.im>
parents: 15585
diff changeset
1196
300c61e1ff2a Fix SF Bug #1644796
Richard Laager <rlaager@pidgin.im>
parents: 15585
diff changeset
1197 /* The to_free argument allows us to save a
300c61e1ff2a Fix SF Bug #1644796
Richard Laager <rlaager@pidgin.im>
parents: 15585
diff changeset
1198 * g_strdup() in some cases. */
300c61e1ff2a Fix SF Bug #1644796
Richard Laager <rlaager@pidgin.im>
parents: 15585
diff changeset
1199
300c61e1ff2a Fix SF Bug #1644796
Richard Laager <rlaager@pidgin.im>
parents: 15585
diff changeset
1200 if (to_free == NULL)
300c61e1ff2a Fix SF Bug #1644796
Richard Laager <rlaager@pidgin.im>
parents: 15585
diff changeset
1201 to_free = txt;
300c61e1ff2a Fix SF Bug #1644796
Richard Laager <rlaager@pidgin.im>
parents: 15585
diff changeset
1202
300c61e1ff2a Fix SF Bug #1644796
Richard Laager <rlaager@pidgin.im>
parents: 15585
diff changeset
1203 /* g_markup_escape_text requires valid UTF-8 */
300c61e1ff2a Fix SF Bug #1644796
Richard Laager <rlaager@pidgin.im>
parents: 15585
diff changeset
1204 if (!g_utf8_validate(txt, -1, NULL))
300c61e1ff2a Fix SF Bug #1644796
Richard Laager <rlaager@pidgin.im>
parents: 15585
diff changeset
1205 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1206 tmp = purple_utf8_salvage(txt);
15594
300c61e1ff2a Fix SF Bug #1644796
Richard Laager <rlaager@pidgin.im>
parents: 15585
diff changeset
1207 g_free(to_free);
300c61e1ff2a Fix SF Bug #1644796
Richard Laager <rlaager@pidgin.im>
parents: 15585
diff changeset
1208 to_free = txt = tmp;
300c61e1ff2a Fix SF Bug #1644796
Richard Laager <rlaager@pidgin.im>
parents: 15585
diff changeset
1209 }
300c61e1ff2a Fix SF Bug #1644796
Richard Laager <rlaager@pidgin.im>
parents: 15585
diff changeset
1210
300c61e1ff2a Fix SF Bug #1644796
Richard Laager <rlaager@pidgin.im>
parents: 15585
diff changeset
1211 tmp = g_markup_escape_text(txt, -1);
300c61e1ff2a Fix SF Bug #1644796
Richard Laager <rlaager@pidgin.im>
parents: 15585
diff changeset
1212 g_free(to_free);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1213 txt = purple_markup_linkify(tmp);
15594
300c61e1ff2a Fix SF Bug #1644796
Richard Laager <rlaager@pidgin.im>
parents: 15585
diff changeset
1214 g_free(tmp);
300c61e1ff2a Fix SF Bug #1644796
Richard Laager <rlaager@pidgin.im>
parents: 15585
diff changeset
1215
300c61e1ff2a Fix SF Bug #1644796
Richard Laager <rlaager@pidgin.im>
parents: 15585
diff changeset
1216 return txt;
300c61e1ff2a Fix SF Bug #1644796
Richard Laager <rlaager@pidgin.im>
parents: 15585
diff changeset
1217 }
300c61e1ff2a Fix SF Bug #1644796
Richard Laager <rlaager@pidgin.im>
parents: 15585
diff changeset
1218
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1219 /****************************
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1220 ** HTML LOGGER *************
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1221 ****************************/
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1222
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1223 static gsize html_logger_write(PurpleLog *log, PurpleMessageFlags type,
38621
1412d6b993e9 Use GDateTime in purple_log_write.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38620
diff changeset
1224 const char *from, GDateTime *time, const char *message)
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1225 {
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
1226 char *msg_fixed;
18101
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
1227 char *image_corrected_msg;
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1228 char *date;
13514
735953c0929d [gaim-migrate @ 15889]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 13513
diff changeset
1229 char *header;
28119
3da0d6dbb454 log: Escape the "from" name in the HTML logger. Refs #9824.
Paul Aurich <darkrain42@pidgin.im>
parents: 27586
diff changeset
1230 char *escaped_from;
36544
1bf8b6ef5aea Renamed PurplePluginProtocolInfo to PurpleProtocol
Ankit Vani <a@nevitus.org>
parents: 36371
diff changeset
1231 PurpleProtocol *protocol =
36626
18fc361b3704 Renamed purple_find_protocol_info to purple_protocols_find
Ankit Vani <a@nevitus.org>
parents: 36606
diff changeset
1232 purple_protocols_find(purple_account_get_protocol_id(log->account));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1233 PurpleLogCommonLoggerData *data = log->logger_data;
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1234 gsize written = 0;
9613
cd81e0c76ec0 [gaim-migrate @ 10456]
Kevin Stange <kstange@pidgin.im>
parents: 9592
diff changeset
1235
7618
b5ecf6d2c93b [gaim-migrate @ 8242]
Nathan Walp <nwalp@pidgin.im>
parents: 7616
diff changeset
1236 if(!data) {
36719
0d7682bdf828 Updated protocol iface calls
Ankit Vani <a@nevitus.org>
parents: 36637
diff changeset
1237 const char *proto = purple_protocol_class_list_icon(protocol, log->account, NULL);
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1238 GDateTime *dt;
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1239 gchar *date;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1240 purple_log_common_writer(log, ".html");
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1241
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
1242 data = log->logger_data;
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1243
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
1244 /* if we can't write to the file, give up before we hurt ourselves */
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
1245 if(!data->file)
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1246 return 0;
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1247
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1248 dt = g_date_time_to_local(log->time);
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1249 date = g_date_time_format(dt, "%c");
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1250 g_date_time_unref(dt);
13105
8f9c66e4af87 [gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents: 13078
diff changeset
1251
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1252 written += fprintf(data->file, "<html><head>");
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1253 written += fprintf(data->file, "<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">");
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1254 written += fprintf(data->file, "<title>");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1255 if (log->type == PURPLE_LOG_SYSTEM)
13514
735953c0929d [gaim-migrate @ 15889]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 13513
diff changeset
1256 header = g_strdup_printf("System log for account %s (%s) connected at %s",
36637
9b0109ae118d Renamed some prpl stuff to protocol stuff.
Ankit Vani <a@nevitus.org>
parents: 36626
diff changeset
1257 purple_account_get_username(log->account), proto, date);
13509
38ebac941c40 [gaim-migrate @ 15884]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13474
diff changeset
1258 else
13514
735953c0929d [gaim-migrate @ 15889]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 13513
diff changeset
1259 header = g_strdup_printf("Conversation with %s at %s on %s (%s)",
36637
9b0109ae118d Renamed some prpl stuff to protocol stuff.
Ankit Vani <a@nevitus.org>
parents: 36626
diff changeset
1260 log->name, date, purple_account_get_username(log->account), proto);
13509
38ebac941c40 [gaim-migrate @ 15884]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13474
diff changeset
1261
13514
735953c0929d [gaim-migrate @ 15889]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 13513
diff changeset
1262 written += fprintf(data->file, "%s", header);
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1263 written += fprintf(data->file, "</title></head><body>");
13509
38ebac941c40 [gaim-migrate @ 15884]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13474
diff changeset
1264 written += fprintf(data->file, "<h3>%s</h3>\n", header);
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1265 g_free(date);
13514
735953c0929d [gaim-migrate @ 15889]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 13513
diff changeset
1266 g_free(header);
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1267 }
7623
ea9fc2f9c46b [gaim-migrate @ 8247]
Nathan Walp <nwalp@pidgin.im>
parents: 7618
diff changeset
1268
9892
281f62b8824e [gaim-migrate @ 10780]
Luke Schierer <lschiere@pidgin.im>
parents: 9883
diff changeset
1269 /* if we can't write to the file, give up before we hurt ourselves */
281f62b8824e [gaim-migrate @ 10780]
Luke Schierer <lschiere@pidgin.im>
parents: 9883
diff changeset
1270 if(!data->file)
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1271 return 0;
9892
281f62b8824e [gaim-migrate @ 10780]
Luke Schierer <lschiere@pidgin.im>
parents: 9883
diff changeset
1272
37554
506e67bca293 Silence warning when system messages are being logged aka from == NULL
Mike Ruprecht <cmaiku@gmail.com>
parents: 37205
diff changeset
1273 escaped_from = g_markup_escape_text(from != NULL ? from : "<NULL>",
506e67bca293 Silence warning when system messages are being logged aka from == NULL
Mike Ruprecht <cmaiku@gmail.com>
parents: 37205
diff changeset
1274 -1);
28119
3da0d6dbb454 log: Escape the "from" name in the HTML logger. Refs #9824.
Paul Aurich <darkrain42@pidgin.im>
parents: 27586
diff changeset
1275
18101
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
1276 image_corrected_msg = convert_image_tags(log, message);
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
1277 purple_markup_html_to_xhtml(image_corrected_msg, &msg_fixed, NULL);
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
1278
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
1279 /* Yes, this breaks encapsulation. But it's a static function and
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
1280 * this saves a needless strdup(). */
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
1281 if (image_corrected_msg != message)
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
1282 g_free(image_corrected_msg);
3ce21b5a182c A patch from David Grohmann (dave1g) to log embedded images.
Richard Laager <rlaager@pidgin.im>
parents: 17005
diff changeset
1283
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1284 date = log_get_timestamp(log, time);
7882
7d95549fd6db [gaim-migrate @ 8536]
Nathan Walp <nwalp@pidgin.im>
parents: 7791
diff changeset
1285
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1286 if(log->type == PURPLE_LOG_SYSTEM){
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1287 written += fprintf(data->file, "---- %s @ %s ----<br/>\n", msg_fixed, date);
8577
64f25a17f8e4 [gaim-migrate @ 9326]
Nathan Walp <nwalp@pidgin.im>
parents: 8573
diff changeset
1288 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1289 if (type & PURPLE_MESSAGE_SYSTEM)
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1290 written += fprintf(data->file, "<font size=\"2\">(%s)</font><b> %s</b><br/>\n", date, msg_fixed);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1291 else if (type & PURPLE_MESSAGE_RAW)
15483
bfcce3ec6848 Patch #1600087 from Richard 'wabz' Nelson: "Don't include a buddy's name when logging error/raw messages"
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15444
diff changeset
1292 written += fprintf(data->file, "<font size=\"2\">(%s)</font> %s<br/>\n", date, msg_fixed);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1293 else if (type & PURPLE_MESSAGE_ERROR)
13069
37b879f161f4 [gaim-migrate @ 15431]
Richard Laager <rlaager@pidgin.im>
parents: 13068
diff changeset
1294 written += fprintf(data->file, "<font color=\"#FF0000\"><font size=\"2\">(%s)</font><b> %s</b></font><br/>\n", date, msg_fixed);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1295 else if (type & PURPLE_MESSAGE_AUTO_RESP) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1296 if (type & PURPLE_MESSAGE_SEND)
28119
3da0d6dbb454 log: Escape the "from" name in the HTML logger. Refs #9824.
Paul Aurich <darkrain42@pidgin.im>
parents: 27586
diff changeset
1297 written += fprintf(data->file, _("<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-REPLY&gt;:</b></font> %s<br/>\n"), date, escaped_from, msg_fixed);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1298 else if (type & PURPLE_MESSAGE_RECV)
28119
3da0d6dbb454 log: Escape the "from" name in the HTML logger. Refs #9824.
Paul Aurich <darkrain42@pidgin.im>
parents: 27586
diff changeset
1299 written += fprintf(data->file, _("<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-REPLY&gt;:</b></font> %s<br/>\n"), date, escaped_from, msg_fixed);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1300 } else if (type & PURPLE_MESSAGE_RECV) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1301 if(purple_message_meify(msg_fixed, -1))
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1302 written += fprintf(data->file, "<font color=\"#062585\"><font size=\"2\">(%s)</font> <b>***%s</b></font> %s<br/>\n",
28119
3da0d6dbb454 log: Escape the "from" name in the HTML logger. Refs #9824.
Paul Aurich <darkrain42@pidgin.im>
parents: 27586
diff changeset
1303 date, escaped_from, msg_fixed);
8577
64f25a17f8e4 [gaim-migrate @ 9326]
Nathan Walp <nwalp@pidgin.im>
parents: 8573
diff changeset
1304 else
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1305 written += fprintf(data->file, "<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s:</b></font> %s<br/>\n",
28119
3da0d6dbb454 log: Escape the "from" name in the HTML logger. Refs #9824.
Paul Aurich <darkrain42@pidgin.im>
parents: 27586
diff changeset
1306 date, escaped_from, msg_fixed);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1307 } else if (type & PURPLE_MESSAGE_SEND) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1308 if(purple_message_meify(msg_fixed, -1))
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1309 written += fprintf(data->file, "<font color=\"#062585\"><font size=\"2\">(%s)</font> <b>***%s</b></font> %s<br/>\n",
28119
3da0d6dbb454 log: Escape the "from" name in the HTML logger. Refs #9824.
Paul Aurich <darkrain42@pidgin.im>
parents: 27586
diff changeset
1310 date, escaped_from, msg_fixed);
8577
64f25a17f8e4 [gaim-migrate @ 9326]
Nathan Walp <nwalp@pidgin.im>
parents: 8573
diff changeset
1311 else
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1312 written += fprintf(data->file, "<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s:</b></font> %s<br/>\n",
28119
3da0d6dbb454 log: Escape the "from" name in the HTML logger. Refs #9824.
Paul Aurich <darkrain42@pidgin.im>
parents: 27586
diff changeset
1313 date, escaped_from, msg_fixed);
13069
37b879f161f4 [gaim-migrate @ 15431]
Richard Laager <rlaager@pidgin.im>
parents: 13068
diff changeset
1314 } else {
19832
84b69b21672b Patch from QuLogic. Fixes #2903 ('Missing newlines in debug messages.')
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19224
diff changeset
1315 purple_debug_error("log", "Unhandled message type.\n");
13069
37b879f161f4 [gaim-migrate @ 15431]
Richard Laager <rlaager@pidgin.im>
parents: 13068
diff changeset
1316 written += fprintf(data->file, "<font size=\"2\">(%s)</font><b> %s:</b></font> %s<br/>\n",
28119
3da0d6dbb454 log: Escape the "from" name in the HTML logger. Refs #9824.
Paul Aurich <darkrain42@pidgin.im>
parents: 27586
diff changeset
1317 date, escaped_from, msg_fixed);
8577
64f25a17f8e4 [gaim-migrate @ 9326]
Nathan Walp <nwalp@pidgin.im>
parents: 8573
diff changeset
1318 }
7564
baab99d239d8 [gaim-migrate @ 8180]
Nathan Walp <nwalp@pidgin.im>
parents: 7556
diff changeset
1319 }
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1320 g_free(date);
7882
7d95549fd6db [gaim-migrate @ 8536]
Nathan Walp <nwalp@pidgin.im>
parents: 7791
diff changeset
1321 g_free(msg_fixed);
28119
3da0d6dbb454 log: Escape the "from" name in the HTML logger. Refs #9824.
Paul Aurich <darkrain42@pidgin.im>
parents: 27586
diff changeset
1322 g_free(escaped_from);
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1323 fflush(data->file);
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1324
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1325 return written;
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1326 }
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1327
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1328 static void html_logger_finalize(PurpleLog *log)
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1329 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1330 PurpleLogCommonLoggerData *data = log->logger_data;
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1331 if (data) {
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1332 if(data->file) {
12881
d4db623e3d8c [gaim-migrate @ 15233]
Richard Laager <rlaager@pidgin.im>
parents: 12834
diff changeset
1333 fprintf(data->file, "</body></html>\n");
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1334 fclose(data->file);
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1335 }
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1336 g_free(data->path);
13624
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
1337
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1338 g_slice_free(PurpleLogCommonLoggerData, data);
7463
32338ddb9a7d [gaim-migrate @ 8076]
Nathan Walp <nwalp@pidgin.im>
parents: 7462
diff changeset
1339 }
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1340 }
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1341
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1342 static GList *html_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account)
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1343 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1344 return purple_log_common_lister(type, sn, account, ".html", html_logger);
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1345 }
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1346
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1347 static GList *html_logger_list_syslog(PurpleAccount *account)
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
1348 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1349 return purple_log_common_lister(PURPLE_LOG_SYSTEM, ".system", account, ".html", html_logger);
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
1350 }
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
1351
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1352 static char *html_logger_read(PurpleLog *log, PurpleLogReadFlags *flags)
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1353 {
12958
706645a0b944 [gaim-migrate @ 15311]
Richard Laager <rlaager@pidgin.im>
parents: 12881
diff changeset
1354 char *read;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1355 PurpleLogCommonLoggerData *data = log->logger_data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1356 *flags = PURPLE_LOG_READ_NO_NEWLINE;
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1357 if (!data || !data->path)
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1358 return g_strdup(_("<font color=\"red\"><b>Unable to find log path!</b></font>"));
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1359 if (g_file_get_contents(data->path, &read, NULL, NULL)) {
12958
706645a0b944 [gaim-migrate @ 15311]
Richard Laager <rlaager@pidgin.im>
parents: 12881
diff changeset
1360 char *minus_header = strchr(read, '\n');
706645a0b944 [gaim-migrate @ 15311]
Richard Laager <rlaager@pidgin.im>
parents: 12881
diff changeset
1361
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1362 if (!minus_header)
12958
706645a0b944 [gaim-migrate @ 15311]
Richard Laager <rlaager@pidgin.im>
parents: 12881
diff changeset
1363 return read;
706645a0b944 [gaim-migrate @ 15311]
Richard Laager <rlaager@pidgin.im>
parents: 12881
diff changeset
1364
706645a0b944 [gaim-migrate @ 15311]
Richard Laager <rlaager@pidgin.im>
parents: 12881
diff changeset
1365 minus_header = g_strdup(minus_header + 1);
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1366 g_free(read);
12958
706645a0b944 [gaim-migrate @ 15311]
Richard Laager <rlaager@pidgin.im>
parents: 12881
diff changeset
1367
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1368 return minus_header;
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1369 }
8578
694cb265241b [gaim-migrate @ 9327]
Nathan Walp <nwalp@pidgin.im>
parents: 8577
diff changeset
1370 return g_strdup_printf(_("<font color=\"red\"><b>Could not read file: %s</b></font>"), data->path);
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1371 }
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1372
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1373 static int html_logger_total_size(PurpleLogType type, const char *name, PurpleAccount *account)
13389
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
1374 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1375 return purple_log_common_total_sizer(type, name, account, ".html");
13389
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
1376 }
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1377
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1378
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1379 /****************************
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1380 ** PLAIN TEXT LOGGER *******
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1381 ****************************/
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1382
38621
1412d6b993e9 Use GDateTime in purple_log_write.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38620
diff changeset
1383 static gsize txt_logger_write(PurpleLog *log, PurpleMessageFlags type,
1412d6b993e9 Use GDateTime in purple_log_write.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38620
diff changeset
1384 const char *from, GDateTime *time, const char *message)
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1385 {
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1386 char *date;
36544
1bf8b6ef5aea Renamed PurplePluginProtocolInfo to PurpleProtocol
Ankit Vani <a@nevitus.org>
parents: 36371
diff changeset
1387 PurpleProtocol *protocol =
36626
18fc361b3704 Renamed purple_find_protocol_info to purple_protocols_find
Ankit Vani <a@nevitus.org>
parents: 36606
diff changeset
1388 purple_protocols_find(purple_account_get_protocol_id(log->account));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1389 PurpleLogCommonLoggerData *data = log->logger_data;
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
1390 char *stripped = NULL;
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
1391
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1392 gsize written = 0;
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1393
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
1394 if (data == NULL) {
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1395 /* This log is new. We could use the loggers 'new' function, but
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1396 * creating a new file there would result in empty files in the case
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1397 * that you open a convo with someone, but don't say anything.
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1398 */
36719
0d7682bdf828 Updated protocol iface calls
Ankit Vani <a@nevitus.org>
parents: 36637
diff changeset
1399 const char *proto = purple_protocol_class_list_icon(protocol, log->account, NULL);
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1400 GDateTime *dt;
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1401 gchar *date;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1402 purple_log_common_writer(log, ".txt");
8898
85f5615bc27e [gaim-migrate @ 9667]
Mark Doliner <markdoliner@pidgin.im>
parents: 8635
diff changeset
1403
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
1404 data = log->logger_data;
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1405
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
1406 /* if we can't write to the file, give up before we hurt ourselves */
35382
1b75f8a4129c Fix some clang static analysis warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35298
diff changeset
1407 if(!data || !data->file)
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1408 return 0;
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1409
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1410 dt = g_date_time_to_local(log->time);
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1411 date = g_date_time_format(dt, "%c");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1412 if (log->type == PURPLE_LOG_SYSTEM)
13509
38ebac941c40 [gaim-migrate @ 15884]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13474
diff changeset
1413 written += fprintf(data->file, "System log for account %s (%s) connected at %s\n",
36637
9b0109ae118d Renamed some prpl stuff to protocol stuff.
Ankit Vani <a@nevitus.org>
parents: 36626
diff changeset
1414 purple_account_get_username(log->account), proto,
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1415 date);
13509
38ebac941c40 [gaim-migrate @ 15884]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13474
diff changeset
1416 else
38ebac941c40 [gaim-migrate @ 15884]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13474
diff changeset
1417 written += fprintf(data->file, "Conversation with %s at %s on %s (%s)\n",
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1418 log->name, date,
36637
9b0109ae118d Renamed some prpl stuff to protocol stuff.
Ankit Vani <a@nevitus.org>
parents: 36626
diff changeset
1419 purple_account_get_username(log->account), proto);
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1420 g_free(date);
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1421 g_date_time_unref(dt);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1422 }
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1423
7623
ea9fc2f9c46b [gaim-migrate @ 8247]
Nathan Walp <nwalp@pidgin.im>
parents: 7618
diff changeset
1424 /* if we can't write to the file, give up before we hurt ourselves */
ea9fc2f9c46b [gaim-migrate @ 8247]
Nathan Walp <nwalp@pidgin.im>
parents: 7618
diff changeset
1425 if(!data->file)
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1426 return 0;
7623
ea9fc2f9c46b [gaim-migrate @ 8247]
Nathan Walp <nwalp@pidgin.im>
parents: 7618
diff changeset
1427
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1428 stripped = purple_markup_strip_html(message);
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1429 date = log_get_timestamp(log, time);
12692
249f9d844f6f [gaim-migrate @ 15035]
Douglas Thrift <douglas@douglasthrift.net>
parents: 12574
diff changeset
1430
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1431 if(log->type == PURPLE_LOG_SYSTEM){
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1432 written += fprintf(data->file, "---- %s @ %s ----\n", stripped, date);
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1433 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1434 if (type & PURPLE_MESSAGE_SEND ||
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1435 type & PURPLE_MESSAGE_RECV) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1436 if (type & PURPLE_MESSAGE_AUTO_RESP) {
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1437 written += fprintf(data->file, _("(%s) %s <AUTO-REPLY>: %s\n"), date,
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1438 from, stripped);
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1439 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1440 if(purple_message_meify(stripped, -1))
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1441 written += fprintf(data->file, "(%s) ***%s %s\n", date, from,
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1442 stripped);
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1443 else
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1444 written += fprintf(data->file, "(%s) %s: %s\n", date, from,
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1445 stripped);
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1446 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1447 } else if (type & PURPLE_MESSAGE_SYSTEM ||
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1448 type & PURPLE_MESSAGE_ERROR ||
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1449 type & PURPLE_MESSAGE_RAW)
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1450 written += fprintf(data->file, "(%s) %s\n", date, stripped);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1451 else if (type & PURPLE_MESSAGE_NO_LOG) {
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1452 /* This shouldn't happen */
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1453 g_free(stripped);
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1454 return written;
36086
5e1693f7c0d5 Remove whisper completely, fix flags property in PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36034
diff changeset
1455 } else
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1456 written += fprintf(data->file, "(%s) %s%s %s\n", date, from ? from : "",
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1457 from ? ":" : "", stripped);
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1458 }
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1459 g_free(date);
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1460 g_free(stripped);
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1461 fflush(data->file);
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1462
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1463 return written;
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1464 }
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1465
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1466 static void txt_logger_finalize(PurpleLog *log)
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1467 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1468 PurpleLogCommonLoggerData *data = log->logger_data;
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1469 if (data) {
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1470 if(data->file)
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1471 fclose(data->file);
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14068
diff changeset
1472 g_free(data->path);
13624
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
1473
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1474 g_slice_free(PurpleLogCommonLoggerData, data);
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1475 }
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1476 }
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1477
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1478 static GList *txt_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account)
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1479 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1480 return purple_log_common_lister(type, sn, account, ".txt", txt_logger);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1481 }
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1482
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1483 static GList *txt_logger_list_syslog(PurpleAccount *account)
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
1484 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1485 return purple_log_common_lister(PURPLE_LOG_SYSTEM, ".system", account, ".txt", txt_logger);
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
1486 }
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
1487
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1488 static char *txt_logger_read(PurpleLog *log, PurpleLogReadFlags *flags)
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1489 {
15676
5f5dc48279f4 Unused variables
Daniel Atallah <datallah@pidgin.im>
parents: 15595
diff changeset
1490 char *read, *minus_header;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1491 PurpleLogCommonLoggerData *data = log->logger_data;
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1492 *flags = 0;
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1493 if (!data || !data->path)
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1494 return g_strdup(_("<font color=\"red\"><b>Unable to find log path!</b></font>"));
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1495 if (g_file_get_contents(data->path, &read, NULL, NULL)) {
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1496 minus_header = strchr(read, '\n');
15594
300c61e1ff2a Fix SF Bug #1644796
Richard Laager <rlaager@pidgin.im>
parents: 15585
diff changeset
1497
300c61e1ff2a Fix SF Bug #1644796
Richard Laager <rlaager@pidgin.im>
parents: 15585
diff changeset
1498 if (minus_header)
300c61e1ff2a Fix SF Bug #1644796
Richard Laager <rlaager@pidgin.im>
parents: 15585
diff changeset
1499 return process_txt_log(minus_header + 1, read);
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1500 else
15594
300c61e1ff2a Fix SF Bug #1644796
Richard Laager <rlaager@pidgin.im>
parents: 15585
diff changeset
1501 return process_txt_log(read, NULL);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1502 }
8578
694cb265241b [gaim-migrate @ 9327]
Nathan Walp <nwalp@pidgin.im>
parents: 8577
diff changeset
1503 return g_strdup_printf(_("<font color=\"red\"><b>Could not read file: %s</b></font>"), data->path);
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1504 }
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1505
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1506 static int txt_logger_total_size(PurpleLogType type, const char *name, PurpleAccount *account)
13389
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
1507 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1508 return purple_log_common_total_sizer(type, name, account, ".txt");
13389
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
1509 }
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
1510
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1511
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1512 /****************
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1513 * OLD LOGGER ***
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1514 ****************/
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1515
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1516 /* The old logger doesn't write logs, only reads them. This is to include
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1517 * old logs in the log viewer transparently.
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1518 */
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1519
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1520 struct old_logger_data {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1521 PurpleStringref *pathref;
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1522 int offset;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1523 int length;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1524 };
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1525
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1526 static GList *old_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account)
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1527 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1528 char *logfile = g_strdup_printf("%s.log", purple_normalize(account, sn));
38870
575e41bfc15e Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents: 37554
diff changeset
1529 char *pathstr = g_build_filename(purple_data_dir(), "logs", logfile, NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1530 PurpleStringref *pathref = purple_stringref_new(pathstr);
33940
b44d15793c83 Use GStatBuf instead of struct stat
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33774
diff changeset
1531 GStatBuf st;
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1532 time_t log_last_modified;
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1533 FILE *index;
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1534 FILE *file;
36030
9a2250c4e9d1 Fix Coverity TOCTOU warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36027
diff changeset
1535 int file_fd, index_fd;
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1536 char *index_tmp;
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1537 char buf[BUF_LONG];
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1538 gint year, month, day, hour, minute, second;
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1539 char month_str[4];
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1540 struct old_logger_data *data = NULL;
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1541 int logfound = 0;
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1542 int lastoff = 0;
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1543 int newlen;
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1544 GDateTime *lasttime = NULL;
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1545
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1546 PurpleLog *log = NULL;
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1547 GList *list = NULL;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1548
7473
881da47ca83f [gaim-migrate @ 8086]
Mark Doliner <markdoliner@pidgin.im>
parents: 7472
diff changeset
1549 g_free(logfile);
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1550
36030
9a2250c4e9d1 Fix Coverity TOCTOU warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36027
diff changeset
1551 file_fd = g_open(purple_stringref_value(pathref), 0, O_RDONLY);
9a2250c4e9d1 Fix Coverity TOCTOU warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36027
diff changeset
1552 if (file_fd == -1 || (file = fdopen(file_fd, "rb")) == NULL) {
9a2250c4e9d1 Fix Coverity TOCTOU warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36027
diff changeset
1553 purple_debug_error("log",
9a2250c4e9d1 Fix Coverity TOCTOU warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36027
diff changeset
1554 "Failed to open log file \"%s\" for reading: %s\n",
9a2250c4e9d1 Fix Coverity TOCTOU warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36027
diff changeset
1555 purple_stringref_value(pathref), g_strerror(errno));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1556 purple_stringref_unref(pathref);
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1557 g_free(pathstr);
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1558 return NULL;
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1559 }
36034
4bba5ea5d08a Provide a portable alternative for fstat
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36031
diff changeset
1560 if (_purple_fstat(file_fd, &st) == -1) {
36030
9a2250c4e9d1 Fix Coverity TOCTOU warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36027
diff changeset
1561 purple_stringref_unref(pathref);
9a2250c4e9d1 Fix Coverity TOCTOU warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36027
diff changeset
1562 g_free(pathstr);
9a2250c4e9d1 Fix Coverity TOCTOU warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36027
diff changeset
1563 fclose(file);
9a2250c4e9d1 Fix Coverity TOCTOU warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36027
diff changeset
1564 return NULL;
9a2250c4e9d1 Fix Coverity TOCTOU warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36027
diff changeset
1565 } else
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1566 log_last_modified = st.st_mtime;
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1567
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1568 /* Change the .log extension to .idx */
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1569 strcpy(pathstr + strlen(pathstr) - 3, "idx");
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1570
35995
d0bbb2dad7f3 Fix some CWE-367 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35992
diff changeset
1571 index_fd = g_open(pathstr, 0, O_RDONLY);
d0bbb2dad7f3 Fix some CWE-367 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35992
diff changeset
1572 if (index_fd != -1) {
36034
4bba5ea5d08a Provide a portable alternative for fstat
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36031
diff changeset
1573 if (_purple_fstat(index_fd, &st) != 0) {
35995
d0bbb2dad7f3 Fix some CWE-367 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35992
diff changeset
1574 close(index_fd);
d0bbb2dad7f3 Fix some CWE-367 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35992
diff changeset
1575 index_fd = -1;
d0bbb2dad7f3 Fix some CWE-367 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35992
diff changeset
1576 }
d0bbb2dad7f3 Fix some CWE-367 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35992
diff changeset
1577 }
d0bbb2dad7f3 Fix some CWE-367 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35992
diff changeset
1578
d0bbb2dad7f3 Fix some CWE-367 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35992
diff changeset
1579 if (index_fd != -1) {
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1580 if (st.st_mtime < log_last_modified)
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1581 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1582 purple_debug_warning("log", "Index \"%s\" exists, but is older than the log.\n", pathstr);
36027
175e769076e1 Fix newly generated coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35995
diff changeset
1583 close(index_fd);
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1584 }
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1585 else
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1586 {
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1587 /* The index file exists and is at least as new as the log, so open it. */
35995
d0bbb2dad7f3 Fix some CWE-367 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35992
diff changeset
1588 if (!(index = fdopen(index_fd, "rb"))) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1589 purple_debug_error("log", "Failed to open index file \"%s\" for reading: %s\n",
21389
e1dd8142bb87 replace most calls to strerror with calls to g_strerror. strerror will return
Nathan Walp <nwalp@pidgin.im>
parents: 20147
diff changeset
1590 pathstr, g_strerror(errno));
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1591
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1592 /* Fall through so that we'll parse the log file. */
35995
d0bbb2dad7f3 Fix some CWE-367 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35992
diff changeset
1593 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1594 purple_debug_info("log", "Using index: %s\n", pathstr);
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1595 g_free(pathstr);
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1596 while (fgets(buf, BUF_LONG, index))
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1597 {
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1598 unsigned long idx_time;
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1599 if (sscanf(buf, "%d\t%d\t%lu", &lastoff, &newlen, &idx_time) == 3)
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1600 {
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1601 log = purple_log_new(PURPLE_LOG_IM, sn, account, NULL, NULL);
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1602 log->logger = old_logger;
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1603 log->time = g_date_time_new_from_unix_local(idx_time);
13624
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
1604
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
1605 /* IMPORTANT: Always set all members of struct old_logger_data */
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
1606 data = g_slice_new(struct old_logger_data);
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
1607
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1608 data->pathref = purple_stringref_ref(pathref);
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1609 data->offset = lastoff;
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1610 data->length = newlen;
13624
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
1611
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1612 log->logger_data = data;
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1613 list = g_list_prepend(list, log);
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1614 }
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1615 }
13469
6c9da180e40d [gaim-migrate @ 15843]
Richard Laager <rlaager@pidgin.im>
parents: 13412
diff changeset
1616 fclose(index);
22599
7987eb3eb3e6 Fix a couple of memory leaks
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22189
diff changeset
1617 purple_stringref_unref(pathref);
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1618
36030
9a2250c4e9d1 Fix Coverity TOCTOU warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36027
diff changeset
1619 fclose(file);
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1620 return list;
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1621 }
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1622 }
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1623 }
7473
881da47ca83f [gaim-migrate @ 8086]
Mark Doliner <markdoliner@pidgin.im>
parents: 7472
diff changeset
1624
13473
8fe2387d215b [gaim-migrate @ 15848]
Richard Laager <rlaager@pidgin.im>
parents: 13472
diff changeset
1625 index_tmp = g_strdup_printf("%s.XXXXXX", pathstr);
8fe2387d215b [gaim-migrate @ 15848]
Richard Laager <rlaager@pidgin.im>
parents: 13472
diff changeset
1626 if ((index_fd = g_mkstemp(index_tmp)) == -1) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1627 purple_debug_error("log", "Failed to open index temp file: %s\n",
33596
ddb6a095d2e5 Whitespace fixes
Richard Laager <rlaager@pidgin.im>
parents: 32001
diff changeset
1628 g_strerror(errno));
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1629 g_free(pathstr);
13473
8fe2387d215b [gaim-migrate @ 15848]
Richard Laager <rlaager@pidgin.im>
parents: 13472
diff changeset
1630 g_free(index_tmp);
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1631 index = NULL;
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1632 } else {
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1633 if ((index = fdopen(index_fd, "wb")) == NULL)
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1634 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1635 purple_debug_error("log", "Failed to fdopen() index temp file: %s\n",
33596
ddb6a095d2e5 Whitespace fixes
Richard Laager <rlaager@pidgin.im>
parents: 32001
diff changeset
1636 g_strerror(errno));
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1637 close(index_fd);
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1638 if (index_tmp != NULL)
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1639 {
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1640 g_unlink(index_tmp);
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1641 g_free(index_tmp);
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1642 }
13412
67ef3053ef45 [gaim-migrate @ 15786]
Richard Laager <rlaager@pidgin.im>
parents: 13407
diff changeset
1643 g_free(pathstr);
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1644 }
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1645 }
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1646
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1647 while (fgets(buf, BUF_LONG, file)) {
30626
bec413ce77c7 Fix some "Dead nested assignment"s and then kill off some useless
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29801
diff changeset
1648 if (strstr(buf, "---- New C") != NULL) {
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1649 int length;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1650 int offset;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1651 char convostart[32];
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1652 char *temp = strchr(buf, '@');
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1653
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1654 if (temp == NULL || strlen(temp) < 2)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1655 continue;
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1656
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1657 temp++;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1658 length = strcspn(temp, "-");
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1659 if (length > 31) length = 31;
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1660
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1661 offset = ftell(file);
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1662
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1663 if (logfound) {
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1664 newlen = offset - lastoff - length;
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1665 if(strstr(buf, "----</H3><BR>")) {
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1666 newlen -=
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1667 sizeof("<HR><BR><H3 Align=Center> ---- New Conversation @ ") +
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1668 sizeof("----</H3><BR>") - 2;
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1669 } else {
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1670 newlen -=
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1671 sizeof("---- New Conversation @ ") + sizeof("----") - 2;
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1672 }
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1673
7461
964030541dc0 [gaim-migrate @ 8074]
Nathan Walp <nwalp@pidgin.im>
parents: 7457
diff changeset
1674 if(strchr(buf, '\r'))
7770
cb9d21d75531 [gaim-migrate @ 8415]
Kevin Stange <kstange@pidgin.im>
parents: 7764
diff changeset
1675 newlen--;
7461
964030541dc0 [gaim-migrate @ 8074]
Nathan Walp <nwalp@pidgin.im>
parents: 7457
diff changeset
1676
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1677 if (newlen != 0) {
38622
0d8e51f600c9 Fix possible GDateTime leaks in old logger loader.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38621
diff changeset
1678 log = purple_log_new(PURPLE_LOG_IM, sn, account, NULL, lasttime);
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
1679 log->logger = old_logger;
13624
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
1680
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
1681 /* IMPORTANT: Always set all members of struct old_logger_data */
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
1682 data = g_slice_new(struct old_logger_data);
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
1683
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1684 data->pathref = purple_stringref_ref(pathref);
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1685 data->offset = lastoff;
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1686 data->length = newlen;
13624
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
1687
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1688 log->logger_data = data;
11703
6b22ef099870 [gaim-migrate @ 13994]
Richard Laager <rlaager@pidgin.im>
parents: 11698
diff changeset
1689 list = g_list_prepend(list, log);
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1690
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1691 if (index != NULL)
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1692 fprintf(index, "%d\t%d\t%lu\n", data->offset, data->length, (unsigned long)log->time);
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1693 }
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1694 }
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1695
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1696 logfound = 1;
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1697 lastoff = offset;
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1698
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1699 g_snprintf(convostart, length, "%s", temp);
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1700 year = month = day = hour = minute = second = 0;
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1701 if (sscanf(convostart, "%*s %3s %d %d:%d:%d %d", month_str,
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1702 &day, &hour, &minute, &second, &year) != 6)
35991
e6937e52930b Fix some CWE-252 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35252
diff changeset
1703 {
e6937e52930b Fix some CWE-252 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35252
diff changeset
1704 purple_debug_warning("log", "invalid date format\n");
e6937e52930b Fix some CWE-252 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35252
diff changeset
1705 }
7676
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
1706 /* Ugly hack, in case current locale is not English */
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1707 if (purple_strequal(month_str, "Jan")) {
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1708 month = 1;
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1709 } else if (purple_strequal(month_str, "Feb")) {
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1710 month = 2;
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1711 } else if (purple_strequal(month_str, "Mar")) {
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1712 month = 3;
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1713 } else if (purple_strequal(month_str, "Apr")) {
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1714 month = 4;
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1715 } else if (purple_strequal(month_str, "May")) {
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1716 month = 5;
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1717 } else if (purple_strequal(month_str, "Jun")) {
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1718 month = 6;
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1719 } else if (purple_strequal(month_str, "Jul")) {
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1720 month = 7;
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1721 } else if (purple_strequal(month_str, "Aug")) {
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1722 month = 8;
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1723 } else if (purple_strequal(month_str, "Sep")) {
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1724 month = 9;
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1725 } else if (purple_strequal(month_str, "Oct")) {
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1726 month = 10;
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1727 } else if (purple_strequal(month_str, "Nov")) {
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1728 month = 11;
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1729 } else if (purple_strequal(month_str, "Dec")) {
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1730 month = 12;
7676
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
1731 }
38622
0d8e51f600c9 Fix possible GDateTime leaks in old logger loader.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38621
diff changeset
1732 if (lasttime)
0d8e51f600c9 Fix possible GDateTime leaks in old logger loader.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38621
diff changeset
1733 g_date_time_unref(lasttime);
38620
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1734 lasttime = g_date_time_new_local(year, month, day,
b02941b9fa9a Change purple_log_new to use GDateTime.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38298
diff changeset
1735 hour, minute, second);
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1736 }
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1737 }
7613
d5a283c09b1d [gaim-migrate @ 8237]
Nathan Walp <nwalp@pidgin.im>
parents: 7612
diff changeset
1738
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1739 if (logfound) {
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1740 if ((newlen = ftell(file) - lastoff) != 0) {
38622
0d8e51f600c9 Fix possible GDateTime leaks in old logger loader.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38621
diff changeset
1741 log = purple_log_new(PURPLE_LOG_IM, sn, account, NULL, lasttime);
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
1742 log->logger = old_logger;
13624
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
1743
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
1744 /* IMPORTANT: Always set all members of struct old_logger_data */
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
1745 data = g_slice_new(struct old_logger_data);
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
1746
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1747 data->pathref = purple_stringref_ref(pathref);
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1748 data->offset = lastoff;
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1749 data->length = newlen;
13624
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
1750
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1751 log->logger_data = data;
11703
6b22ef099870 [gaim-migrate @ 13994]
Richard Laager <rlaager@pidgin.im>
parents: 11698
diff changeset
1752 list = g_list_prepend(list, log);
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1753
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1754 if (index != NULL)
33597
8ab5ed149286 Cleanup the time_t handling in log.c
Richard Laager <rlaager@pidgin.im>
parents: 33596
diff changeset
1755 fprintf(index, "%d\t%d\t%lu\n", data->offset, data->length, (unsigned long)log->time);
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1756 }
7613
d5a283c09b1d [gaim-migrate @ 8237]
Nathan Walp <nwalp@pidgin.im>
parents: 7612
diff changeset
1757 }
d5a283c09b1d [gaim-migrate @ 8237]
Nathan Walp <nwalp@pidgin.im>
parents: 7612
diff changeset
1758
38622
0d8e51f600c9 Fix possible GDateTime leaks in old logger loader.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38621
diff changeset
1759 if (lasttime)
0d8e51f600c9 Fix possible GDateTime leaks in old logger loader.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38621
diff changeset
1760 g_date_time_unref(lasttime);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1761 purple_stringref_unref(pathref);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1762 fclose(file);
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1763 if (index != NULL)
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1764 {
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1765 fclose(index);
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1766
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1767 if (index_tmp == NULL)
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1768 {
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1769 g_free(pathstr);
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1770 g_return_val_if_reached(list);
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1771 }
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1772
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1773 if (g_rename(index_tmp, pathstr))
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1774 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1775 purple_debug_warning("log", "Failed to rename index temp file \"%s\" to \"%s\": %s\n",
21389
e1dd8142bb87 replace most calls to strerror with calls to g_strerror. strerror will return
Nathan Walp <nwalp@pidgin.im>
parents: 20147
diff changeset
1776 index_tmp, pathstr, g_strerror(errno));
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1777 g_unlink(index_tmp);
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1778 }
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1779 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1780 purple_debug_info("log", "Built index: %s\n", pathstr);
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1781
22599
7987eb3eb3e6 Fix a couple of memory leaks
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22189
diff changeset
1782 g_free(index_tmp);
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1783 g_free(pathstr);
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1784 }
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1785 return list;
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1786 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4227
diff changeset
1787
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1788 static int old_logger_total_size(PurpleLogType type, const char *name, PurpleAccount *account)
8096
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
1789 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1790 char *logfile = g_strdup_printf("%s.log", purple_normalize(account, name));
38870
575e41bfc15e Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents: 37554
diff changeset
1791 char *pathstr = g_build_filename(purple_data_dir(), "logs", logfile, NULL);
8096
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
1792 int size;
33940
b44d15793c83 Use GStatBuf instead of struct stat
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33774
diff changeset
1793 GStatBuf st;
8096
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
1794
10589
4e10236e06d4 [gaim-migrate @ 11994]
Daniel Atallah <datallah@pidgin.im>
parents: 10577
diff changeset
1795 if (g_stat(pathstr, &st))
8096
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
1796 size = 0;
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
1797 else
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
1798 size = st.st_size;
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
1799
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
1800 g_free(logfile);
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
1801 g_free(pathstr);
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
1802
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
1803 return size;
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
1804 }
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
1805
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1806 static char * old_logger_read (PurpleLog *log, PurpleLogReadFlags *flags)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4227
diff changeset
1807 {
22189
641712d18a3d Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 21985
diff changeset
1808 size_t result;
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1809 struct old_logger_data *data = log->logger_data;
22189
641712d18a3d Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 21985
diff changeset
1810 const char *path = purple_stringref_value(data->pathref);
641712d18a3d Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 21985
diff changeset
1811 FILE *file = g_fopen(path, "rb");
35992
34a67264df99 Fix some CWE-476 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
1812 char *read;
34a67264df99 Fix some CWE-476 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
1813
34a67264df99 Fix some CWE-476 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
1814 g_return_val_if_fail(file, g_strdup(""));
34a67264df99 Fix some CWE-476 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
1815 read = g_malloc(data->length + 1);
34a67264df99 Fix some CWE-476 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
1816
35991
e6937e52930b Fix some CWE-252 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35252
diff changeset
1817 if (fseek(file, data->offset, SEEK_SET) != 0)
e6937e52930b Fix some CWE-252 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35252
diff changeset
1818 result = 0;
e6937e52930b Fix some CWE-252 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35252
diff changeset
1819 else
e6937e52930b Fix some CWE-252 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35252
diff changeset
1820 result = fread(read, data->length, 1, file);
22189
641712d18a3d Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 21985
diff changeset
1821 if (result != 1)
641712d18a3d Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 21985
diff changeset
1822 purple_debug_error("log", "Unable to read from log file: %s\n", path);
8370
ce5393bfcf57 [gaim-migrate @ 9097]
Mark Doliner <markdoliner@pidgin.im>
parents: 8111
diff changeset
1823 fclose(file);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1824 read[data->length] = '\0';
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1825 *flags = 0;
15594
300c61e1ff2a Fix SF Bug #1644796
Richard Laager <rlaager@pidgin.im>
parents: 15585
diff changeset
1826 if (strstr(read, "<BR>"))
300c61e1ff2a Fix SF Bug #1644796
Richard Laager <rlaager@pidgin.im>
parents: 15585
diff changeset
1827 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1828 *flags |= PURPLE_LOG_READ_NO_NEWLINE;
15594
300c61e1ff2a Fix SF Bug #1644796
Richard Laager <rlaager@pidgin.im>
parents: 15585
diff changeset
1829 return read;
10906
1825ffb6b495 [gaim-migrate @ 12636]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10822
diff changeset
1830 }
15594
300c61e1ff2a Fix SF Bug #1644796
Richard Laager <rlaager@pidgin.im>
parents: 15585
diff changeset
1831
300c61e1ff2a Fix SF Bug #1644796
Richard Laager <rlaager@pidgin.im>
parents: 15585
diff changeset
1832 return process_txt_log(read, NULL);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1833 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4227
diff changeset
1834
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1835 static int old_logger_size (PurpleLog *log)
7556
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
1836 {
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
1837 struct old_logger_data *data = log->logger_data;
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1838 return data ? data->length : 0;
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1839 }
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1840
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1841 static void old_logger_get_log_sets(PurpleLogSetCallback cb, GHashTable *sets)
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1842 {
38870
575e41bfc15e Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents: 37554
diff changeset
1843 char *log_path = g_build_filename(purple_data_dir(), "logs", NULL);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1844 GDir *log_dir = g_dir_open(log_path, 0, NULL);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1845 gchar *name;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1846 PurpleBlistNode *gnode, *cnode, *bnode;
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1847
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1848 g_free(log_path);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1849 if (log_dir == NULL)
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
1850 return;
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1851
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1852 /* Don't worry about the cast, name will be filled with a dynamically allocated data shortly. */
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1853 while ((name = (gchar *)g_dir_read_name(log_dir)) != NULL) {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1854 size_t len;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1855 gchar *ext;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1856 PurpleLogSet *set;
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1857 gboolean found = FALSE;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1858
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1859 /* Unescape the filename. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1860 name = g_strdup(purple_unescape_filename(name));
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1861
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1862 /* Get the (possibly new) length of name. */
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1863 len = strlen(name);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1864
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1865 if (len < 5) {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1866 g_free(name);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1867 continue;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1868 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1869
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1870 /* Make sure we're dealing with a log file. */
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1871 ext = &name[len - 4];
25859
b42be7bb9dac Patch from Paul Aurich to add purple_strequal to help readability and simplicity of code. Ie, don't need to negate the value of strcmp, since this does a strcmp and does the negation for us
Paul Aurich <darkrain42@pidgin.im>
parents: 24971
diff changeset
1872 if (!purple_strequal(ext, ".log")) {
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1873 g_free(name);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1874 continue;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1875 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1876
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1877 /* IMPORTANT: Always set all members of PurpleLogSet */
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1878 set = g_slice_new(PurpleLogSet);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1879
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1880 /* Chat for .chat at the end of the name to determine the type. */
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1881 *ext = '\0';
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1882 set->type = PURPLE_LOG_IM;
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1883 if (len > 9) {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1884 char *tmp = &name[len - 9];
25859
b42be7bb9dac Patch from Paul Aurich to add purple_strequal to help readability and simplicity of code. Ie, don't need to negate the value of strcmp, since this does a strcmp and does the negation for us
Paul Aurich <darkrain42@pidgin.im>
parents: 24971
diff changeset
1885 if (purple_strequal(tmp, ".chat")) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1886 set->type = PURPLE_LOG_CHAT;
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1887 *tmp = '\0';
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1888 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1889 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1890
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
1891 set->name = set->normalized_name = name;
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1892
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1893 /* Search the buddy list to find the account and to determine if this is a buddy. */
24955
77727fac30c6 Finish off the libpurple updates for the hidden blist structs
Gary Kramlich <grim@reaperworld.com>
parents: 24177
diff changeset
1894 for (gnode = purple_blist_get_root();
77727fac30c6 Finish off the libpurple updates for the hidden blist structs
Gary Kramlich <grim@reaperworld.com>
parents: 24177
diff changeset
1895 !found && gnode != NULL;
33596
ddb6a095d2e5 Whitespace fixes
Richard Laager <rlaager@pidgin.im>
parents: 32001
diff changeset
1896 gnode = purple_blist_node_get_sibling_next(gnode))
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1897 {
34696
6e0d13978666 Global replace to use GObject-style macros. See details.
Ankit Vani <a@nevitus.org>
parents: 33940
diff changeset
1898 if (!PURPLE_IS_GROUP(gnode))
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1899 continue;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1900
24955
77727fac30c6 Finish off the libpurple updates for the hidden blist structs
Gary Kramlich <grim@reaperworld.com>
parents: 24177
diff changeset
1901 for (cnode = purple_blist_node_get_first_child(gnode);
77727fac30c6 Finish off the libpurple updates for the hidden blist structs
Gary Kramlich <grim@reaperworld.com>
parents: 24177
diff changeset
1902 !found && cnode != NULL;
77727fac30c6 Finish off the libpurple updates for the hidden blist structs
Gary Kramlich <grim@reaperworld.com>
parents: 24177
diff changeset
1903 cnode = purple_blist_node_get_sibling_next(cnode))
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1904 {
34696
6e0d13978666 Global replace to use GObject-style macros. See details.
Ankit Vani <a@nevitus.org>
parents: 33940
diff changeset
1905 if (!PURPLE_IS_CONTACT(cnode))
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1906 continue;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1907
24955
77727fac30c6 Finish off the libpurple updates for the hidden blist structs
Gary Kramlich <grim@reaperworld.com>
parents: 24177
diff changeset
1908 for (bnode = purple_blist_node_get_first_child(cnode);
77727fac30c6 Finish off the libpurple updates for the hidden blist structs
Gary Kramlich <grim@reaperworld.com>
parents: 24177
diff changeset
1909 !found && bnode != NULL;
33596
ddb6a095d2e5 Whitespace fixes
Richard Laager <rlaager@pidgin.im>
parents: 32001
diff changeset
1910 bnode = purple_blist_node_get_sibling_next(bnode))
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1911 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1912 PurpleBuddy *buddy = (PurpleBuddy *)bnode;
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1913
25859
b42be7bb9dac Patch from Paul Aurich to add purple_strequal to help readability and simplicity of code. Ie, don't need to negate the value of strcmp, since this does a strcmp and does the negation for us
Paul Aurich <darkrain42@pidgin.im>
parents: 24971
diff changeset
1914 if (purple_strequal(purple_buddy_get_name(buddy), name)) {
24955
77727fac30c6 Finish off the libpurple updates for the hidden blist structs
Gary Kramlich <grim@reaperworld.com>
parents: 24177
diff changeset
1915 set->account = purple_buddy_get_account(buddy);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1916 set->buddy = TRUE;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1917 found = TRUE;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1918 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1919 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1920 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1921 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1922
13624
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
1923 if (!found)
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
1924 {
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
1925 set->account = NULL;
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
1926 set->buddy = FALSE;
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
1927 }
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
1928
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
1929 cb(sets, set);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1930 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1931 g_dir_close(log_dir);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1932 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1933
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1934 static void old_logger_finalize(PurpleLog *log)
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1935 {
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1936 struct old_logger_data *data = log->logger_data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15676
diff changeset
1937 purple_stringref_unref(data->pathref);
13624
c6577def4e2a [gaim-migrate @ 16009]
Richard Laager <rlaager@pidgin.im>
parents: 13584
diff changeset
1938 g_slice_free(struct old_logger_data, data);
7556
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
1939 }

mercurial