src/log.c

Sat, 03 Apr 2004 18:34:29 +0000

author
Ka-Hing Cheung <khc@pidgin.im>
date
Sat, 03 Apr 2004 18:34:29 +0000
changeset 8573
3f37bd7005c8
parent 8517
a6647dc5baee
child 8577
64f25a17f8e4
permissions
-rw-r--r--

[gaim-migrate @ 9321]
" This patch reimplements the system log. It writes
system log to
~/.gaim/logs/<protocol>/<username>/.system/<timestamp>.(txt|html),
where <timestamp> is the time that the account
<username> with <protocol> signs on. Nathan (faceprint)
and LSchiere suggested this logging scheme. No code is
currently written to read the old system logs.
Note that if you change the logging format, you need to
re-login the accounts for the change to take effect."
--Ka-Hing (javabsp) Cheung

who continues:
"Now this one applies, also contains a rider patch that, if
you enable sound for "Someone says your name in chat", it
will not play a sound if the message is a system message,
like if jabber chat tells you that "*** becomes available"
and *** is you, it won't play a sound."

committer: Luke Schierer <lschiere@pidgin.im>

7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1 /**
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
2 * @file log.c Logging API
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
3 * @ingroup core
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
4 *
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
5 * gaim
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
6 *
8046
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 8027
diff changeset
7 * Gaim is the legal property of its developers, whose names are too numerous
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 8027
diff changeset
8 * 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
9 * source distribution.
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
10 *
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
11 * 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
12 * 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
13 * the Free Software Foundation; either version 2 of the License, or
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
14 * (at your option) any later version.
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
15 *
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
16 * 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
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
19 * GNU General Public License for more details.
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
20 *
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
21 * 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
22 * along with this program; if not, write to the Free Software
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
24 */
4195
37449660e3d5 [gaim-migrate @ 4426]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4192
diff changeset
25
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
26 #include "account.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5839
diff changeset
27 #include "debug.h"
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
28 #include "internal.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5839
diff changeset
29 #include "log.h"
5548
200682124464 [gaim-migrate @ 5949]
Nathan Walp <nwalp@pidgin.im>
parents: 5528
diff changeset
30 #include "prefs.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5839
diff changeset
31 #include "util.h"
7764
b1bb74f2f79d [gaim-migrate @ 8409]
Ethan Blanton <elb@pidgin.im>
parents: 7761
diff changeset
32 #include "stringref.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
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
36 static GaimLogLogger html_logger;
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
37 static GaimLogLogger txt_logger;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
38 static GaimLogLogger old_logger;
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5839
diff changeset
39
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
40 /**************************************************************************
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
41 * PUBLIC LOGGING FUNCTIONS ***********************************************
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
42 **************************************************************************/
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
43
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
44 GaimLog *gaim_log_new(GaimLogType type, const char *name, GaimAccount *account, time_t time)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
45 {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
46 GaimLog *log = g_new0(GaimLog, 1);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
47 log->name = g_strdup(name);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
48 log->account = account;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
49 log->time = time;
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
50 log->type = type;
8096
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
51 log->logger_data = NULL;
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
52 log->logger = gaim_log_logger_get();
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7436
diff changeset
53 if (log->logger && log->logger->create)
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7436
diff changeset
54 log->logger->create(log);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
55 return log;
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
56 }
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
57
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
58 void gaim_log_free(GaimLog *log)
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
59 {
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
60 g_return_if_fail(log);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
61 if (log->logger && log->logger->finalize)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
62 log->logger->finalize(log);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
63 g_free(log->name);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
64 g_free(log);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
65 }
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
66
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
67 void gaim_log_write(GaimLog *log, GaimMessageFlags type,
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
68 const char *from, time_t time, const char *message)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
69 {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
70 g_return_if_fail(log);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
71 g_return_if_fail(log->logger);
7442
247b4506d446 [gaim-migrate @ 8047]
Nathan Walp <nwalp@pidgin.im>
parents: 7441
diff changeset
72 g_return_if_fail(log->logger->write);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
73
7555
ca7ea5ff6007 [gaim-migrate @ 8169]
Nathan Walp <nwalp@pidgin.im>
parents: 7554
diff changeset
74 if ((log->type == GAIM_LOG_IM && gaim_prefs_get_bool("/core/logging/log_ims")) ||
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
75 (log->type == GAIM_LOG_CHAT && gaim_prefs_get_bool("/core/logging/log_chats")) ||
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
76 + (log->type == GAIM_LOG_SYSTEM && gaim_prefs_get_bool("/core/logging/log_system")))
7553
7eb0a6ec8b95 [gaim-migrate @ 8167]
Sean Egan <seanegan@pidgin.im>
parents: 7542
diff changeset
77 (log->logger->write)(log, type, from, time, message);
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
78 }
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
79
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
80 char *gaim_log_read(GaimLog *log, GaimLogReadFlags *flags)
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
81 {
7542
12e2a33137e9 [gaim-migrate @ 8156]
Nathan Walp <nwalp@pidgin.im>
parents: 7541
diff changeset
82 GaimLogReadFlags mflags;
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
83 g_return_val_if_fail(log && log->logger, NULL);
7462
c51a6ec98ba7 [gaim-migrate @ 8075]
Nathan Walp <nwalp@pidgin.im>
parents: 7461
diff changeset
84 if (log->logger->read) {
7535
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7501
diff changeset
85 char *ret = (log->logger->read)(log, flags ? flags : &mflags);
7478
a7df4df98778 [gaim-migrate @ 8091]
Herman Bloggs <herman@bluedigits.com>
parents: 7473
diff changeset
86 gaim_str_strip_cr(ret);
7462
c51a6ec98ba7 [gaim-migrate @ 8075]
Nathan Walp <nwalp@pidgin.im>
parents: 7461
diff changeset
87 return ret;
c51a6ec98ba7 [gaim-migrate @ 8075]
Nathan Walp <nwalp@pidgin.im>
parents: 7461
diff changeset
88 }
7470
9fd68772b853 [gaim-migrate @ 8083]
Mark Doliner <markdoliner@pidgin.im>
parents: 7463
diff changeset
89 return (_("<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
90 }
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
91
7556
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
92 int gaim_log_get_size(GaimLog *log)
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
93 {
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
94 g_return_val_if_fail(log && log->logger, 0);
8096
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
95
7556
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
96 if (log->logger->size)
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
97 return log->logger->size(log);
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
98 return 0;
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
99 }
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
100
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
101 int gaim_log_get_total_size(const char *name, GaimAccount *account)
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
102 {
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
103 int size = 0;
8096
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
104 GSList *n;
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
105
8096
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
106 for (n = loggers; n; n = n->next) {
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
107 GaimLogLogger *logger = n->data;
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
108
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
109 if(logger->total_size){
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
110 size += (logger->total_size)(name, account);
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
111 } else if(logger->list) {
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
112 GList *logs = (logger->list)(name, account);
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
113 int this_size = 0;
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
114
8096
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
115 while (logs) {
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
116 GList *logs2 = logs->next;
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
117 GaimLog *log = (GaimLog*)(logs->data);
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
118 this_size += gaim_log_get_size(log);
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
119 gaim_log_free(log);
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
120 g_list_free_1(logs);
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
121 logs = logs2;
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
122 }
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
123
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
124 size += this_size;
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
125 }
7556
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
126 }
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
127
7556
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
128 return size;
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
129 }
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
130
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
131 /****************************************************************************
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
132 * LOGGER FUNCTIONS *********************************************************
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
133 ****************************************************************************/
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
134
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
135 static GaimLogLogger *current_logger = NULL;
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
136
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
137 static void logger_pref_cb(const char *name, GaimPrefType type,
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
138 gpointer value, gpointer data)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
139 {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
140 GaimLogLogger *logger;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
141 GSList *l = loggers;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
142 while (l) {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
143 logger = l->data;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
144 if (!strcmp(logger->id, value)) {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
145 gaim_log_logger_set(logger);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
146 return;
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
147 }
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
148 l = l->next;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
149 }
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
150 gaim_log_logger_set(&txt_logger);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
151 }
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
152
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
153
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7436
diff changeset
154 GaimLogLogger *gaim_log_logger_new(void(*create)(GaimLog *),
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
155 void(*write)(GaimLog *, GaimMessageFlags, const char *,
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
156 time_t, const char *),
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
157 void(*finalize)(GaimLog *), GList*(*list)(const char*, GaimAccount*),
7556
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
158 char*(*read)(GaimLog*, GaimLogReadFlags*),
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
159 int(*size)(GaimLog*))
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
160 {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
161 GaimLogLogger *logger = g_new0(GaimLogLogger, 1);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7436
diff changeset
162 logger->create = create;
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
163 logger->write = write;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
164 logger->finalize = finalize;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
165 logger->list = list;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
166 logger->read = read;
7556
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
167 logger->size = size;
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
168 return logger;
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
169 }
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
170
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
171 void gaim_log_logger_free(GaimLogLogger *logger)
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
172 {
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
173 g_free(logger);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
174 }
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
175
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
176 void gaim_log_logger_add (GaimLogLogger *logger)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
177 {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
178 g_return_if_fail(logger);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
179 if (g_slist_find(loggers, logger))
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
180 return;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
181 loggers = g_slist_append(loggers, logger);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
182 }
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
183
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
184 void gaim_log_logger_remove (GaimLogLogger *logger)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
185 {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
186 g_return_if_fail(logger);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
187 g_slist_remove(loggers, logger);
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
188 }
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
189
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
190 void gaim_log_logger_set (GaimLogLogger *logger)
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
191 {
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
192 g_return_if_fail(logger);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
193 current_logger = logger;
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
194 }
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
195
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
196 GaimLogLogger *gaim_log_logger_get()
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
197 {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
198 return current_logger;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
199 }
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
200
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
201 GList *gaim_log_logger_get_options(void)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
202 {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
203 GSList *n;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
204 GList *list = NULL;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
205 GaimLogLogger *data;
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
206
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
207 for (n = loggers; n; n = n->next) {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
208 data = n->data;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
209 if (!data->write)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
210 continue;
7494
5b44781c5214 [gaim-migrate @ 8107]
Nathan Walp <nwalp@pidgin.im>
parents: 7491
diff changeset
211 list = g_list_append(list, _(data->name));
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
212 list = g_list_append(list, data->id);
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
213 }
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
214
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
215 return list;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
216 }
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
217
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
218 gint gaim_log_compare(gconstpointer y, gconstpointer z)
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
219 {
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
220 const GaimLog *a = y;
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
221 const GaimLog *b = z;
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
222
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
223 return b->time - a->time;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
224 }
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
225
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
226 GList *gaim_log_get_logs(const char *name, GaimAccount *account)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
227 {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
228 GList *logs = NULL;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
229 GSList *n;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
230 for (n = loggers; n; n = n->next) {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
231 GaimLogLogger *logger = n->data;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
232 if (!logger->list)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
233 continue;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
234 logs = g_list_concat(logs, logger->list(name, account));
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
235 }
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
236
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
237 return g_list_sort(logs, gaim_log_compare);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
238 }
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
239
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
240 GList *gaim_log_get_system_logs(GaimAccount *account)
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
241 {
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
242 GList *logs = NULL;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
243 GSList *n;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
244 for (n = loggers; n; n = n->next) {
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
245 GaimLogLogger *logger = n->data;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
246 if (!logger->list_syslog)
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
247 continue;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
248 logs = g_list_concat(logs, logger->list_syslog(account));
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
249 }
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
250
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
251 return g_list_sort(logs, gaim_log_compare);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
252 }
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
253
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
254 void gaim_log_init(void)
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
255 {
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
256 gaim_prefs_add_none("/core/logging");
7555
ca7ea5ff6007 [gaim-migrate @ 8169]
Nathan Walp <nwalp@pidgin.im>
parents: 7554
diff changeset
257 gaim_prefs_add_bool("/core/logging/log_ims", FALSE);
ca7ea5ff6007 [gaim-migrate @ 8169]
Nathan Walp <nwalp@pidgin.im>
parents: 7554
diff changeset
258 gaim_prefs_add_bool("/core/logging/log_chats", FALSE);
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
259 gaim_prefs_add_bool("/core/logging/log_system", FALSE);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
260 gaim_prefs_add_bool("/core/logging/log_signon_signoff", FALSE);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
261 gaim_prefs_add_bool("/core/logging/log_idle_state", FALSE);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
262 gaim_prefs_add_bool("/core/logging/log_away_state", FALSE);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
263 gaim_prefs_add_bool("/core/logging/log_own_states", FALSE);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
264
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
265 gaim_prefs_add_string("/core/logging/format", "txt");
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
266 gaim_log_logger_add(&html_logger);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
267 gaim_log_logger_add(&txt_logger);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
268 gaim_log_logger_add(&old_logger);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
269 gaim_prefs_connect_callback("/core/logging/format",
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
270 logger_pref_cb, NULL);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
271 gaim_prefs_trigger_callback("/core/logging/format");
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
272 }
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
273
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
274 /****************************************************************************
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
275 * LOGGERS ******************************************************************
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
276 ****************************************************************************/
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
277
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
278 struct generic_logger_data {
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
279 char *path;
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
280 FILE *file;
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
281 };
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
282
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
283 static GList *log_lister_common(const char *screenname, GaimAccount *account, const char *ext, GaimLogLogger *logger)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
284 {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
285 GDir *dir;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
286 GList *list = NULL;
7628
f76ce1d73e1c [gaim-migrate @ 8252]
Ethan Blanton <elb@pidgin.im>
parents: 7623
diff changeset
287 const char *filename;
8111
8c8fa8901d53 [gaim-migrate @ 8812]
Nathan Walp <nwalp@pidgin.im>
parents: 8096
diff changeset
288 char *me;
8c8fa8901d53 [gaim-migrate @ 8812]
Nathan Walp <nwalp@pidgin.im>
parents: 8096
diff changeset
289
8c8fa8901d53 [gaim-migrate @ 8812]
Nathan Walp <nwalp@pidgin.im>
parents: 8096
diff changeset
290 const char *prpl;
8c8fa8901d53 [gaim-migrate @ 8812]
Nathan Walp <nwalp@pidgin.im>
parents: 8096
diff changeset
291 char *path;
8c8fa8901d53 [gaim-migrate @ 8812]
Nathan Walp <nwalp@pidgin.im>
parents: 8096
diff changeset
292
8c8fa8901d53 [gaim-migrate @ 8812]
Nathan Walp <nwalp@pidgin.im>
parents: 8096
diff changeset
293 if(!account)
8c8fa8901d53 [gaim-migrate @ 8812]
Nathan Walp <nwalp@pidgin.im>
parents: 8096
diff changeset
294 return NULL;
8c8fa8901d53 [gaim-migrate @ 8812]
Nathan Walp <nwalp@pidgin.im>
parents: 8096
diff changeset
295
8c8fa8901d53 [gaim-migrate @ 8812]
Nathan Walp <nwalp@pidgin.im>
parents: 8096
diff changeset
296 me = g_strdup(gaim_normalize(account, gaim_account_get_username(account)));
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
297
7956
21d891f33b89 [gaim-migrate @ 8631]
Nathan Walp <nwalp@pidgin.im>
parents: 7882
diff changeset
298 /* does this seem like a bad way to get this component of the path to anyone else? --Nathan */
8111
8c8fa8901d53 [gaim-migrate @ 8812]
Nathan Walp <nwalp@pidgin.im>
parents: 8096
diff changeset
299 prpl = GAIM_PLUGIN_PROTOCOL_INFO
7956
21d891f33b89 [gaim-migrate @ 8631]
Nathan Walp <nwalp@pidgin.im>
parents: 7882
diff changeset
300 (gaim_find_prpl(gaim_account_get_protocol_id(account)))->list_icon(account, NULL);
8111
8c8fa8901d53 [gaim-migrate @ 8812]
Nathan Walp <nwalp@pidgin.im>
parents: 8096
diff changeset
301 path = g_build_filename(gaim_user_dir(), "logs", prpl, me, gaim_normalize(account, screenname), NULL);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
302
7447
4876aeb16c60 [gaim-migrate @ 8058]
Mark Doliner <markdoliner@pidgin.im>
parents: 7443
diff changeset
303 g_free(me);
4876aeb16c60 [gaim-migrate @ 8058]
Mark Doliner <markdoliner@pidgin.im>
parents: 7443
diff changeset
304
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
305 if (!(dir = g_dir_open(path, 0, NULL))) {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
306 g_free(path);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
307 return NULL;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
308 }
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
309 while ((filename = g_dir_read_name(dir))) {
7628
f76ce1d73e1c [gaim-migrate @ 8252]
Ethan Blanton <elb@pidgin.im>
parents: 7623
diff changeset
310 if (gaim_str_has_suffix(filename, ext)) {
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
311 const char *l = filename;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
312 struct tm time;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
313 GaimLog *log;
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
314 struct generic_logger_data *data;
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
315 char d[5];
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
316
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
317 strncpy(d, l, 4);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
318 d[4] = '\0';
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
319 time.tm_year = atoi(d) - 1900;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
320 l = l + 5;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
321
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
322 strncpy(d, l, 2);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
323 d[2] = '\0';
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
324 time.tm_mon = atoi(d) - 1;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
325 l = l + 3;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
326
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
327 strncpy(d, l, 2);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
328 time.tm_mday = atoi(d);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
329 l = l + 3;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
330
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
331 strncpy(d, l, 2);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
332 time.tm_hour = atoi(d);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
333 l = l + 2;
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
334
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
335 strncpy(d, l, 2);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
336 time.tm_min = atoi(d);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
337 l = l + 2;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
338
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
339 strncpy(d, l, 2);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
340 time.tm_sec = atoi(d);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
341 l = l + 2;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
342 log = gaim_log_new(GAIM_LOG_IM, screenname, account, mktime(&time));
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
343 log->logger = logger;
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
344 log->logger_data = data = g_new0(struct generic_logger_data, 1);
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
345 data->path = g_build_filename(path, filename, NULL);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
346 list = g_list_append(list, log);
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
347 }
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
348 }
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
349 g_dir_close(dir);
7447
4876aeb16c60 [gaim-migrate @ 8058]
Mark Doliner <markdoliner@pidgin.im>
parents: 7443
diff changeset
350 g_free(path);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
351 return list;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
352 }
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
353
7556
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
354 /* Only to be used with logs listed from log_lister_common */
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
355 int log_sizer_common(GaimLog *log)
7556
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
356 {
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
357 struct stat st;
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
358 struct generic_logger_data *data = log->logger_data;
7556
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
359
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
360 if (!data->path || stat(data->path, &st))
7556
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
361 st.st_size = 0;
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
362
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
363 return st.st_size;
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
364 }
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
365
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
366 #if 0 /* Maybe some other time. */
7443
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
367 /****************
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
368 ** XML LOGGER **
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
369 ****************/
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
370
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
371 static const char *str_from_msg_type (GaimMessageFlags type)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
372 {
7443
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
373
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
374 return "";
7443
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
375
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
376 }
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
377
7443
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
378 static void xml_logger_write(GaimLog *log,
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
379 GaimMessageFlags type,
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
380 const char *from, time_t time, const char *message)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
381 {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
382 char date[64];
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
383 char *xhtml = NULL;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
384 if (!log->logger_data) {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
385 /* 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
386 * 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
387 * 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
388 */
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
389 char *ud = gaim_user_dir();
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
390 char *guy = g_strdup(gaim_normalize(log->account, gaim_account_get_username(log->account)));
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
391 const char *prpl = GAIM_PLUGIN_PROTOCOL_INFO
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
392 (gaim_find_prpl(gaim_account_get_protocol(log->account)))->list_icon(log->account, NULL);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
393 char *dir;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
394 FILE *file;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
395
7453
df123b5965cd [gaim-migrate @ 8066]
Nathan Walp <nwalp@pidgin.im>
parents: 7447
diff changeset
396 strftime(date, sizeof(date), "%Y-%m-%d.%H%M%S.xml", localtime(&log->time));
7443
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
397
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
398 dir = g_build_filename(ud, "logs",
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
399 prpl, guy, gaim_normalize(log->account, log->name), NULL);
7612
4f5211591dbd [gaim-migrate @ 8236]
Ethan Blanton <elb@pidgin.im>
parents: 7564
diff changeset
400 gaim_build_dir (dir, S_IRUSR | S_IWUSR | S_IXUSR);
7447
4876aeb16c60 [gaim-migrate @ 8058]
Mark Doliner <markdoliner@pidgin.im>
parents: 7443
diff changeset
401 g_free(guy);
7443
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
402
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
403 char *filename = g_build_filename(dir, date, NULL);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
404 g_free(dir);
7443
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
405
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
406 log->logger_data = fopen(filename, "a");
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
407 if (!log->logger_data) {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
408 gaim_debug(GAIM_DEBUG_ERROR, "log", "Could not create log file %s\n", filename);
7564
baab99d239d8 [gaim-migrate @ 8180]
Nathan Walp <nwalp@pidgin.im>
parents: 7556
diff changeset
409 g_free(filename);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
410 return;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
411 }
7564
baab99d239d8 [gaim-migrate @ 8180]
Nathan Walp <nwalp@pidgin.im>
parents: 7556
diff changeset
412 g_free(filename);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
413 fprintf(log->logger_data, "<?xml version='1.0' encoding='UTF-8' ?>\n"
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
414 "<?xml-stylesheet href='file:///usr/src/web/htdocs/log-stylesheet.xsl' type='text/xml' ?>\n");
7443
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
415
7453
df123b5965cd [gaim-migrate @ 8066]
Nathan Walp <nwalp@pidgin.im>
parents: 7447
diff changeset
416 strftime(date, sizeof(date), "%Y-%m-%d %H:%M:%S", localtime(&log->time));
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
417 fprintf(log->logger_data, "<conversation time='%s' screenname='%s' protocol='%s'>\n",
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
418 date, log->name, prpl);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
419 }
7443
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
420
7453
df123b5965cd [gaim-migrate @ 8066]
Nathan Walp <nwalp@pidgin.im>
parents: 7447
diff changeset
421 strftime(date, sizeof(date), "%H:%M:%S", localtime(&time));
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
422 gaim_markup_html_to_xhtml(message, &xhtml, NULL);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
423 if (from)
7443
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
424 fprintf(log->logger_data, "<message %s %s from='%s' time='%s'>%s</message>\n",
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
425 str_from_msg_type(type),
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
426 type & GAIM_MESSAGE_SEND ? "direction='sent'" :
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
427 type & GAIM_MESSAGE_RECV ? "direction='received'" : "",
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
428 from, date, xhtml);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
429 else
7443
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
430 fprintf(log->logger_data, "<message %s %s time='%s'>%s</message>\n",
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
431 str_from_msg_type(type),
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
432 type & GAIM_MESSAGE_SEND ? "direction='sent'" :
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
433 type & GAIM_MESSAGE_RECV ? "direction='received'" : "",
7443
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
434 date, xhtml):
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
435 fflush(log->logger_data);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
436 g_free(xhtml);
7443
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
437 }
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
438
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
439 static void xml_logger_finalize(GaimLog *log)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
440 {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
441 if (log->logger_data) {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
442 fprintf(log->logger_data, "</conversation>\n");
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
443 fclose(log->logger_data);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
444 log->logger_data = NULL;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
445 }
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
446 }
7443
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
447
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
448 static GList *xml_logger_list(const char *sn, GaimAccount *account)
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 return log_lister_common(sn, account, ".xml", &xml_logger);
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
451 }
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
452
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
453 static GaimLogLogger xml_logger = {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
454 N_("XML"), "xml",
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
455 NULL,
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
456 xml_logger_write,
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
457 xml_logger_finalize,
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
458 xml_logger_list,
8096
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
459 NULL,
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
460 NULL
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
461 };
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
462 #endif
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5560
diff changeset
463
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
464 /****************************
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
465 ** HTML LOGGER *************
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
466 ****************************/
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
467
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
468 static void html_logger_write(GaimLog *log, GaimMessageFlags type,
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
469 const char *from, time_t time, const char *message)
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
470 {
7489
3a9ec132ad4a [gaim-migrate @ 8102]
Sean Egan <seanegan@pidgin.im>
parents: 7478
diff changeset
471 GaimConnection *gc = gaim_account_get_connection(log->account);
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
472 char date[64];
7882
7d95549fd6db [gaim-migrate @ 8536]
Nathan Walp <nwalp@pidgin.im>
parents: 7791
diff changeset
473 char *msg_fixed;
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
474 struct generic_logger_data *data = log->logger_data;
7618
b5ecf6d2c93b [gaim-migrate @ 8242]
Nathan Walp <nwalp@pidgin.im>
parents: 7616
diff changeset
475 if(!data) {
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
476 /* This log is new */
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
477 char *ud = gaim_user_dir();
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
478 char *guy = g_strdup(gaim_normalize(log->account, gaim_account_get_username(log->account)));
7553
7eb0a6ec8b95 [gaim-migrate @ 8167]
Sean Egan <seanegan@pidgin.im>
parents: 7542
diff changeset
479 char *chat;
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
480 const char *prpl = GAIM_PLUGIN_PROTOCOL_INFO
7956
21d891f33b89 [gaim-migrate @ 8631]
Nathan Walp <nwalp@pidgin.im>
parents: 7882
diff changeset
481 (gaim_find_prpl(gaim_account_get_protocol_id(log->account)))->list_icon(log->account, NULL);
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
482 char *dir;
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
483 char *filename;
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
484
7553
7eb0a6ec8b95 [gaim-migrate @ 8167]
Sean Egan <seanegan@pidgin.im>
parents: 7542
diff changeset
485 if (log->type == GAIM_LOG_CHAT) {
7eb0a6ec8b95 [gaim-migrate @ 8167]
Sean Egan <seanegan@pidgin.im>
parents: 7542
diff changeset
486 chat = g_strdup_printf("%s.chat", guy);
7eb0a6ec8b95 [gaim-migrate @ 8167]
Sean Egan <seanegan@pidgin.im>
parents: 7542
diff changeset
487 g_free(guy);
7eb0a6ec8b95 [gaim-migrate @ 8167]
Sean Egan <seanegan@pidgin.im>
parents: 7542
diff changeset
488 guy = chat;
7eb0a6ec8b95 [gaim-migrate @ 8167]
Sean Egan <seanegan@pidgin.im>
parents: 7542
diff changeset
489 }
7eb0a6ec8b95 [gaim-migrate @ 8167]
Sean Egan <seanegan@pidgin.im>
parents: 7542
diff changeset
490
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
491 strftime(date, sizeof(date), "%Y-%m-%d.%H%M%S.html", localtime(&log->time));
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
492
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
493 dir = g_build_filename(ud, "logs",
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
494 prpl, guy, gaim_normalize(log->account, log->name), NULL);
7612
4f5211591dbd [gaim-migrate @ 8236]
Ethan Blanton <elb@pidgin.im>
parents: 7564
diff changeset
495 gaim_build_dir (dir, S_IRUSR | S_IWUSR | S_IXUSR);
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
496 g_free(guy);
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
497
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
498 filename = g_build_filename(dir, date, NULL);
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
499 g_free(dir);
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
500
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
501 log->logger_data = data = g_new0(struct generic_logger_data, 1);
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
502
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
503 data->file = fopen(filename, "a");
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
504 if (!data->file) {
7623
ea9fc2f9c46b [gaim-migrate @ 8247]
Nathan Walp <nwalp@pidgin.im>
parents: 7618
diff changeset
505 gaim_debug(GAIM_DEBUG_ERROR, "log",
ea9fc2f9c46b [gaim-migrate @ 8247]
Nathan Walp <nwalp@pidgin.im>
parents: 7618
diff changeset
506 "Could not create log file %s\n", filename);
7564
baab99d239d8 [gaim-migrate @ 8180]
Nathan Walp <nwalp@pidgin.im>
parents: 7556
diff changeset
507 g_free(filename);
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
508 return;
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
509 }
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
510 g_free(filename);
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
511 strftime(date, sizeof(date), "%Y-%m-%d %H:%M:%S", localtime(&log->time));
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
512 fprintf(data->file, "<html><head><title>");
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
513 fprintf(data->file, "Conversation with %s at %s on %s (%s)",
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
514 log->name, date, gaim_account_get_username(log->account), prpl);
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
515 fprintf(data->file, "</title></head><body>");
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
516 fprintf(data->file,
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
517 "<h3>Conversation with %s at %s on %s (%s)</h3>\n",
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
518 log->name, date, gaim_account_get_username(log->account), prpl);
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
519 }
7623
ea9fc2f9c46b [gaim-migrate @ 8247]
Nathan Walp <nwalp@pidgin.im>
parents: 7618
diff changeset
520
ea9fc2f9c46b [gaim-migrate @ 8247]
Nathan Walp <nwalp@pidgin.im>
parents: 7618
diff changeset
521 /* 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
522 if(!data->file)
ea9fc2f9c46b [gaim-migrate @ 8247]
Nathan Walp <nwalp@pidgin.im>
parents: 7618
diff changeset
523 return;
ea9fc2f9c46b [gaim-migrate @ 8247]
Nathan Walp <nwalp@pidgin.im>
parents: 7618
diff changeset
524
7882
7d95549fd6db [gaim-migrate @ 8536]
Nathan Walp <nwalp@pidgin.im>
parents: 7791
diff changeset
525 gaim_markup_html_to_xhtml(message, &msg_fixed, NULL);
7d95549fd6db [gaim-migrate @ 8536]
Nathan Walp <nwalp@pidgin.im>
parents: 7791
diff changeset
526
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
527 if(log->type == GAIM_LOG_SYSTEM){
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
528 strftime(date, sizeof(date), "%c", localtime(&time));
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
529 fprintf(data->file, "---- %s @ %s ----<br/>\n", msg_fixed, date);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
530 } else {
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
531 strftime(date, sizeof(date), "%H:%M:%S", localtime(&time));
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
532 if (type & GAIM_MESSAGE_SYSTEM)
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
533 fprintf(data->file, "(%s)<b> %s</b><br/>\n", date, msg_fixed);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
534 else if (type & GAIM_MESSAGE_WHISPER)
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
535 fprintf(data->file, "<font color=\"#6C2585\">(%s)<b> %s:</b></font> %s<br/>\n",
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
536 date, from, msg_fixed);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
537 else if (type & GAIM_MESSAGE_AUTO_RESP) {
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
538 if (type & GAIM_MESSAGE_SEND)
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
539 fprintf(data->file, _("<font color=\"#16569E\">(%s) <b>%s &lt;AUTO-REPLY&gt;:</b></font> %s<br/>\n"), date, from, msg_fixed);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
540 else if (type & GAIM_MESSAGE_RECV)
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
541 fprintf(data->file, _("<font color=\"#A82F2F\">(%s) <b>%s &lt;AUTO-REPLY&gt;:</b></font> %s<br/>\n"), date, from, msg_fixed);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
542 } else if (type & GAIM_MESSAGE_RECV) {
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
543 if(gaim_message_meify(msg_fixed, -1))
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
544 fprintf(data->file, "<font color=\"#6C2585\">(%s) <b>***%s</b></font> <font sml=\"%s\">%s</font><br/>\n",
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
545 date, from, gc->prpl->info->name, msg_fixed);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
546 else
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
547 fprintf(data->file, "<font color=\"#A82F2F\">(%s) <b>%s:</b></font> <font sml=\"%s\">%s</font><br/>\n",
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
548 date, from, gc->prpl->info->name, msg_fixed);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
549 } else if (type & GAIM_MESSAGE_SEND) {
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
550 if(gaim_message_meify(msg_fixed, -1))
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
551 fprintf(data->file, "<font color=\"#6C2585\">(%s) <b>***%s</b></font> <font sml=\"%s\">%s</font><br/>\n",
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
552 date, from, gc->prpl->info->name, msg_fixed);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
553 else
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
554 fprintf(data->file, "<font color=\"#16569E\">(%s) <b>%s:</b></font> <font sml=\"%s\">%s</font><br/>\n",
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
555 date, from, gc->prpl->info->name, msg_fixed);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
556 }
7564
baab99d239d8 [gaim-migrate @ 8180]
Nathan Walp <nwalp@pidgin.im>
parents: 7556
diff changeset
557 }
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
558
7882
7d95549fd6db [gaim-migrate @ 8536]
Nathan Walp <nwalp@pidgin.im>
parents: 7791
diff changeset
559 g_free(msg_fixed);
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
560 fflush(data->file);
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
561 }
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
562
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
563 static void html_logger_finalize(GaimLog *log)
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
564 {
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
565 struct generic_logger_data *data = log->logger_data;
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
566 if (data) {
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
567 if(data->file) {
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
568 fprintf(data->file, "</body></html>");
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
569 fclose(data->file);
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
570 }
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
571 g_free(data->path);
7752
9f33d410e524 [gaim-migrate @ 8397]
Ethan Blanton <elb@pidgin.im>
parents: 7685
diff changeset
572 g_free(data);
7463
32338ddb9a7d [gaim-migrate @ 8076]
Nathan Walp <nwalp@pidgin.im>
parents: 7462
diff changeset
573 }
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
574 }
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
575
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
576 static GList *html_logger_list(const char *sn, GaimAccount *account)
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
577 {
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
578 return log_lister_common(sn, account, ".html", &html_logger);
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
579 }
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
580
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
581 static GList *html_logger_list_syslog(GaimAccount *account)
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
582 {
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
583 return log_lister_common(".system", account, ".html", &html_logger);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
584 }
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
585
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
586 static char *html_logger_read(GaimLog *log, GaimLogReadFlags *flags)
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
587 {
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
588 char *read, *minus_header;
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
589 struct generic_logger_data *data = log->logger_data;
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
590 *flags = GAIM_LOG_READ_NO_NEWLINE;
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
591 if (!data || !data->path)
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
592 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
593 if (g_file_get_contents(data->path, &read, NULL, NULL)) {
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
594 minus_header = strchr(read, '\n');
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
595 if (!minus_header)
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
596 minus_header = g_strdup(read);
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
597 else
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
598 minus_header = g_strdup(minus_header + 1);
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
599 g_free(read);
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
600 return minus_header;
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
601 }
7471
5de677038f87 [gaim-migrate @ 8084]
Mark Doliner <markdoliner@pidgin.im>
parents: 7470
diff changeset
602 return g_strdup(_("<font color=\"red\"><b>Could not read file: %s</b></font>"));
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
603 }
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
604
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
605 static void html_logger_create(GaimLog *log)
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
606 {
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
607 if(log->type == GAIM_LOG_SYSTEM){
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
608 char date[64];
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
609 const char *prpl = GAIM_PLUGIN_PROTOCOL_INFO
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
610 (gaim_find_prpl(gaim_account_get_protocol_id(log->account)))->list_icon(log->account, NULL);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
611 char *ud = gaim_user_dir();
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
612 char *dir = g_build_filename(ud, "logs", prpl, log->name, ".system", NULL);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
613 char *filename;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
614 struct generic_logger_data *data;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
615
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
616 gaim_build_dir (dir, S_IRUSR | S_IWUSR | S_IXUSR);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
617 strftime(date, sizeof(date), "%Y-%m-%d.%H%M%S.html", localtime(&log->time));
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
618 filename = g_build_filename(dir, date, NULL);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
619 g_free(dir);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
620
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
621 log->logger_data = data = g_new0(struct generic_logger_data, 1);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
622
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
623 data->file = fopen(filename, "a");
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
624 if (!data->file) {
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
625 gaim_debug(GAIM_DEBUG_ERROR, "log",
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
626 "Could not create log file %s\n", filename);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
627 g_free(filename);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
628 return;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
629 }
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
630 fprintf(data->file, "<html><head><title>");
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
631 fprintf(data->file, "System Log for %s (%s)",
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
632 gaim_account_get_username(log->account), prpl);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
633 fprintf(data->file, "</title></head><body>");
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
634 g_free(filename);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
635 }
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
636 }
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
637
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
638 static GaimLogLogger html_logger = {
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
639 N_("HTML"), "html",
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
640 html_logger_create,
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
641 html_logger_write,
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
642 html_logger_finalize,
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
643 html_logger_list,
7556
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
644 html_logger_read,
8096
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
645 log_sizer_common,
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
646 NULL,
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
647 html_logger_list_syslog
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
648 };
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
649
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
650
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
651
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
652
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
653 /****************************
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
654 ** PLAIN TEXT LOGGER *******
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
655 ****************************/
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
656
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
657 static void txt_logger_write(GaimLog *log,
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
658 GaimMessageFlags type,
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
659 const char *from, time_t time, const char *message)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
660 {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
661 char date[64];
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
662 char *stripped = NULL;
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
663 struct generic_logger_data *data = log->logger_data;
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
664 if (!data) {
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
665 /* 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
666 * 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
667 * that you open a convo with someone, but don't say anything.
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
668 *
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
669 * The log is also not system log. Because if it is, data would be
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
670 * created in txt_logger_create
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
671 */
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
672 char *ud = gaim_user_dir();
7473
881da47ca83f [gaim-migrate @ 8086]
Mark Doliner <markdoliner@pidgin.im>
parents: 7472
diff changeset
673 char *filename;
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
674 char *guy = g_strdup(gaim_normalize(log->account, gaim_account_get_username(log->account)));
7553
7eb0a6ec8b95 [gaim-migrate @ 8167]
Sean Egan <seanegan@pidgin.im>
parents: 7542
diff changeset
675 char *chat;
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
676 const char *prpl = GAIM_PLUGIN_PROTOCOL_INFO
7956
21d891f33b89 [gaim-migrate @ 8631]
Nathan Walp <nwalp@pidgin.im>
parents: 7882
diff changeset
677 (gaim_find_prpl(gaim_account_get_protocol_id(log->account)))->list_icon(log->account, NULL);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
678 char *dir;
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
679
7553
7eb0a6ec8b95 [gaim-migrate @ 8167]
Sean Egan <seanegan@pidgin.im>
parents: 7542
diff changeset
680 if (log->type == GAIM_LOG_CHAT) {
7eb0a6ec8b95 [gaim-migrate @ 8167]
Sean Egan <seanegan@pidgin.im>
parents: 7542
diff changeset
681 chat = g_strdup_printf("%s.chat", guy);
7eb0a6ec8b95 [gaim-migrate @ 8167]
Sean Egan <seanegan@pidgin.im>
parents: 7542
diff changeset
682 g_free(guy);
7eb0a6ec8b95 [gaim-migrate @ 8167]
Sean Egan <seanegan@pidgin.im>
parents: 7542
diff changeset
683 guy = chat;
7eb0a6ec8b95 [gaim-migrate @ 8167]
Sean Egan <seanegan@pidgin.im>
parents: 7542
diff changeset
684 }
7453
df123b5965cd [gaim-migrate @ 8066]
Nathan Walp <nwalp@pidgin.im>
parents: 7447
diff changeset
685 strftime(date, sizeof(date), "%Y-%m-%d.%H%M%S.txt", localtime(&log->time));
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
686
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
687 dir = g_build_filename(ud, "logs",
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
688 prpl, guy, gaim_normalize(log->account, log->name), NULL);
7612
4f5211591dbd [gaim-migrate @ 8236]
Ethan Blanton <elb@pidgin.im>
parents: 7564
diff changeset
689 gaim_build_dir (dir, S_IRUSR | S_IWUSR | S_IXUSR);
7447
4876aeb16c60 [gaim-migrate @ 8058]
Mark Doliner <markdoliner@pidgin.im>
parents: 7443
diff changeset
690 g_free(guy);
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
691
7473
881da47ca83f [gaim-migrate @ 8086]
Mark Doliner <markdoliner@pidgin.im>
parents: 7472
diff changeset
692 filename = g_build_filename(dir, date, NULL);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
693 g_free(dir);
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
694
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
695 log->logger_data = data = g_new0(struct generic_logger_data, 1);
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
696
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
697 data->file = fopen(filename, "a");
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
698 if (!data->file) {
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
699 gaim_debug(GAIM_DEBUG_ERROR, "log", "Could not create log file %s\n", filename);
7564
baab99d239d8 [gaim-migrate @ 8180]
Nathan Walp <nwalp@pidgin.im>
parents: 7556
diff changeset
700 g_free(filename);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
701 return;
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
702 }
7447
4876aeb16c60 [gaim-migrate @ 8058]
Mark Doliner <markdoliner@pidgin.im>
parents: 7443
diff changeset
703 g_free(filename);
7453
df123b5965cd [gaim-migrate @ 8066]
Nathan Walp <nwalp@pidgin.im>
parents: 7447
diff changeset
704 strftime(date, sizeof(date), "%Y-%m-%d %H:%M:%S", localtime(&log->time));
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
705 fprintf(data->file, "Conversation with %s at %s on %s (%s)\n",
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
706 log->name, date, gaim_account_get_username(log->account), prpl);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
707 }
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
708
7623
ea9fc2f9c46b [gaim-migrate @ 8247]
Nathan Walp <nwalp@pidgin.im>
parents: 7618
diff changeset
709 /* 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
710 if(!data->file)
ea9fc2f9c46b [gaim-migrate @ 8247]
Nathan Walp <nwalp@pidgin.im>
parents: 7618
diff changeset
711 return;
ea9fc2f9c46b [gaim-migrate @ 8247]
Nathan Walp <nwalp@pidgin.im>
parents: 7618
diff changeset
712
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
713 stripped = gaim_markup_strip_html(message);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
714
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
715 if(log->type == GAIM_LOG_SYSTEM){
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
716 strftime(date, sizeof(date), "%c", localtime(&time));
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
717 fprintf(data->file, "---- %s @ %s ----\n", stripped, date);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
718 } else {
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
719 strftime(date, sizeof(date), "%H:%M:%S", localtime(&time));
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
720 if (type & GAIM_MESSAGE_SEND ||
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
721 type & GAIM_MESSAGE_RECV) {
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
722 if (type & GAIM_MESSAGE_AUTO_RESP) {
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
723 fprintf(data->file, _("(%s) %s <AUTO-REPLY>: %s\n"), date,
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
724 from, stripped);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
725 } else {
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
726 if(gaim_message_meify(stripped, -1))
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
727 fprintf(data->file, "(%s) ***%s %s\n", date, from,
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
728 stripped);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
729 else
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
730 fprintf(data->file, "(%s) %s: %s\n", date, from,
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
731 stripped);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
732 }
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
733 } else if (type & GAIM_MESSAGE_SYSTEM)
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
734 fprintf(data->file, "(%s) %s\n", date, stripped);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
735 else if (type & GAIM_MESSAGE_NO_LOG) {
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
736 /* This shouldn't happen */
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
737 g_free(stripped);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
738 return;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
739 } else if (type & GAIM_MESSAGE_WHISPER)
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
740 fprintf(data->file, "(%s) *%s* %s", date, from, stripped);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
741 else
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
742 fprintf(data->file, "(%s) %s%s %s\n", date, from ? from : "",
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
743 from ? ":" : "", stripped);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
744 }
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
745
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
746 fflush(data->file);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
747 g_free(stripped);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
748 }
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
749
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
750 static void txt_logger_finalize(GaimLog *log)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
751 {
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
752 struct generic_logger_data *data = log->logger_data;
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
753 if (data) {
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
754 if(data->file)
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
755 fclose(data->file);
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
756 if(data->path)
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
757 g_free(data->path);
7752
9f33d410e524 [gaim-migrate @ 8397]
Ethan Blanton <elb@pidgin.im>
parents: 7685
diff changeset
758 g_free(data);
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
759 }
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
760 }
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
761
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
762 static GList *txt_logger_list(const char *sn, GaimAccount *account)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
763 {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
764 return log_lister_common(sn, account, ".txt", &txt_logger);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
765 }
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
766
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
767 static GList *txt_logger_list_syslog(GaimAccount *account)
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
768 {
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
769 return log_lister_common(".system", account, ".txt", &txt_logger);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
770 }
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
771
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
772 static char *txt_logger_read(GaimLog *log, GaimLogReadFlags *flags)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
773 {
8517
a6647dc5baee [gaim-migrate @ 9256]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8408
diff changeset
774 char *read, *minus_header, *minus_header2;
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
775 struct generic_logger_data *data = log->logger_data;
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
776 *flags = 0;
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
777 if (!data || !data->path)
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
778 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
779 if (g_file_get_contents(data->path, &read, NULL, NULL)) {
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
780 minus_header = strchr(read, '\n');
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
781 if (!minus_header)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
782 minus_header = g_strdup(read);
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
783 else
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
784 minus_header = g_strdup(minus_header + 1);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
785 g_free(read);
8517
a6647dc5baee [gaim-migrate @ 9256]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8408
diff changeset
786 minus_header2 = gaim_escape_html(minus_header);
a6647dc5baee [gaim-migrate @ 9256]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8408
diff changeset
787 g_free(minus_header);
a6647dc5baee [gaim-migrate @ 9256]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8408
diff changeset
788 return minus_header2;
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
789 }
7471
5de677038f87 [gaim-migrate @ 8084]
Mark Doliner <markdoliner@pidgin.im>
parents: 7470
diff changeset
790 return g_strdup(_("<font color=\"red\"><b>Could not read file: %s</b></font>"));
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
791 }
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
792
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
793 static void txt_logger_create(GaimLog *log)
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
794 {
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
795 if(log->type == GAIM_LOG_SYSTEM){
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
796 char date[64];
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
797 const char *prpl = GAIM_PLUGIN_PROTOCOL_INFO
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
798 (gaim_find_prpl(gaim_account_get_protocol_id(log->account)))->list_icon(log->account, NULL);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
799 char *ud = gaim_user_dir();
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
800 char *dir = g_build_filename(ud, "logs", prpl, log->name, ".system", NULL);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
801 char *filename;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
802 struct generic_logger_data *data;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
803
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
804 gaim_build_dir (dir, S_IRUSR | S_IWUSR | S_IXUSR);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
805 strftime(date, sizeof(date), "%Y-%m-%d.%H%M%S.txt", localtime(&log->time));
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
806 filename = g_build_filename(dir, date, NULL);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
807 g_free(dir);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
808
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
809 log->logger_data = data = g_new0(struct generic_logger_data, 1);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
810
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
811 data->file = fopen(filename, "a");
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
812 if (!data->file) {
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
813 gaim_debug(GAIM_DEBUG_ERROR, "log",
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
814 "Could not create log file %s\n", filename);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
815 g_free(filename);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
816 return;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
817 }
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
818 g_free(filename);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
819 }
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
820 }
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
821
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
822 static GaimLogLogger txt_logger = {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
823 N_("Plain text"), "txt",
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
824 txt_logger_create,
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
825 txt_logger_write,
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
826 txt_logger_finalize,
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
827 txt_logger_list,
7556
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
828 txt_logger_read,
8096
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
829 log_sizer_common,
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
830 NULL,
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
831 txt_logger_list_syslog
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
832 };
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
833
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
834 /****************
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
835 * OLD LOGGER ***
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
836 ****************/
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
837
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
838 /* 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
839 * old logs in the log viewer transparently.
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
840 */
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
841
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
842 struct old_logger_data {
7764
b1bb74f2f79d [gaim-migrate @ 8409]
Ethan Blanton <elb@pidgin.im>
parents: 7761
diff changeset
843 GaimStringref *pathref;
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
844 int offset;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
845 int length;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
846 };
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
847
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
848 static GList *old_logger_list(const char *sn, GaimAccount *account)
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
849 {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
850 FILE *file;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
851 char buf[BUF_LONG];
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
852 struct tm tm;
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
853 char month[4];
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
854 struct old_logger_data *data = NULL;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
855 char *logfile = g_strdup_printf("%s.log", gaim_normalize(account, sn));
7764
b1bb74f2f79d [gaim-migrate @ 8409]
Ethan Blanton <elb@pidgin.im>
parents: 7761
diff changeset
856 char *pathstr = g_build_filename(gaim_user_dir(), "logs", logfile, NULL);
b1bb74f2f79d [gaim-migrate @ 8409]
Ethan Blanton <elb@pidgin.im>
parents: 7761
diff changeset
857 GaimStringref *pathref = gaim_stringref_new(pathstr);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
858 char *newlog;
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
859 int logfound = 0;
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
860 int lastoff = 0;
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
861 int newlen;
7791
71b4031cdbda [gaim-migrate @ 8437]
Nathan Walp <nwalp@pidgin.im>
parents: 7770
diff changeset
862 time_t lasttime = 0;
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
863
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
864 GaimLog *log = NULL;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
865 GList *list = NULL;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
866
7473
881da47ca83f [gaim-migrate @ 8086]
Mark Doliner <markdoliner@pidgin.im>
parents: 7472
diff changeset
867 g_free(logfile);
7764
b1bb74f2f79d [gaim-migrate @ 8409]
Ethan Blanton <elb@pidgin.im>
parents: 7761
diff changeset
868 g_free(pathstr);
7473
881da47ca83f [gaim-migrate @ 8086]
Mark Doliner <markdoliner@pidgin.im>
parents: 7472
diff changeset
869
7764
b1bb74f2f79d [gaim-migrate @ 8409]
Ethan Blanton <elb@pidgin.im>
parents: 7761
diff changeset
870 if (!(file = fopen(gaim_stringref_value(pathref), "rb"))) {
b1bb74f2f79d [gaim-migrate @ 8409]
Ethan Blanton <elb@pidgin.im>
parents: 7761
diff changeset
871 gaim_stringref_unref(pathref);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
872 return NULL;
7447
4876aeb16c60 [gaim-migrate @ 8058]
Mark Doliner <markdoliner@pidgin.im>
parents: 7443
diff changeset
873 }
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
874
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
875 while (fgets(buf, BUF_LONG, file)) {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
876 if ((newlog = strstr(buf, "---- New C"))) {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
877 int length;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
878 int offset;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
879 char convostart[32];
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
880 char *temp = strchr(buf, '@');
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
881
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
882 if (temp == NULL || strlen(temp) < 2)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
883 continue;
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
884
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
885 temp++;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
886 length = strcspn(temp, "-");
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
887 if (length > 31) length = 31;
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
888
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
889 offset = ftell(file);
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
890
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
891 if (logfound) {
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
892 newlen = offset - lastoff - length;
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
893 if(strstr(buf, "----</H3><BR>")) {
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
894 newlen -=
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
895 sizeof("<HR><BR><H3 Align=Center> ---- New Conversation @ ") +
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
896 sizeof("----</H3><BR>") - 2;
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
897 } else {
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
898 newlen -=
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
899 sizeof("---- New Conversation @ ") + sizeof("----") - 2;
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
900 }
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
901
7461
964030541dc0 [gaim-migrate @ 8074]
Nathan Walp <nwalp@pidgin.im>
parents: 7457
diff changeset
902 if(strchr(buf, '\r'))
7770
cb9d21d75531 [gaim-migrate @ 8415]
Kevin Stange <kstange@pidgin.im>
parents: 7764
diff changeset
903 newlen--;
7461
964030541dc0 [gaim-migrate @ 8074]
Nathan Walp <nwalp@pidgin.im>
parents: 7457
diff changeset
904
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
905 if (newlen != 0) {
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
906 log = gaim_log_new(GAIM_LOG_IM, sn, account, -1);
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
907 log->logger = &old_logger;
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
908 log->time = lasttime;
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
909 data = g_new0(struct old_logger_data, 1);
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
910 data->offset = lastoff;
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
911 data->length = newlen;
7764
b1bb74f2f79d [gaim-migrate @ 8409]
Ethan Blanton <elb@pidgin.im>
parents: 7761
diff changeset
912 data->pathref = gaim_stringref_ref(pathref);
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
913 log->logger_data = data;
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
914 list = g_list_append(list, log);
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
915 }
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
916 }
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
917
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
918 logfound = 1;
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
919 lastoff = offset;
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
920
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
921 g_snprintf(convostart, length, "%s", temp);
7676
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
922 sscanf(convostart, "%*s %s %d %d:%d:%d %d",
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
923 month, &tm.tm_mday, &tm.tm_hour, &tm.tm_min, &tm.tm_sec, &tm.tm_year);
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
924 /* Ugly hack, in case current locale is not English */
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
925 if (strcmp(month, "Jan") == 0) {
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
926 tm.tm_mon= 0;
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
927 } else if (strcmp(month, "Feb") == 0) {
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
928 tm.tm_mon = 1;
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
929 } else if (strcmp(month, "Mar") == 0) {
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
930 tm.tm_mon = 2;
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
931 } else if (strcmp(month, "Apr") == 0) {
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
932 tm.tm_mon = 3;
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
933 } else if (strcmp(month, "May") == 0) {
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
934 tm.tm_mon = 4;
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
935 } else if (strcmp(month, "Jun") == 0) {
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
936 tm.tm_mon = 5;
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
937 } else if (strcmp(month, "Jul") == 0) {
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
938 tm.tm_mon = 6;
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
939 } else if (strcmp(month, "Aug") == 0) {
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
940 tm.tm_mon = 7;
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
941 } else if (strcmp(month, "Sep") == 0) {
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
942 tm.tm_mon = 8;
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
943 } else if (strcmp(month, "Oct") == 0) {
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
944 tm.tm_mon = 9;
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
945 } else if (strcmp(month, "Nov") == 0) {
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
946 tm.tm_mon = 10;
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
947 } else if (strcmp(month, "Dec") == 0) {
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
948 tm.tm_mon = 11;
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
949 }
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
950 tm.tm_year -= 1900;
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
951 lasttime = mktime(&tm);
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
952 }
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
953 }
7613
d5a283c09b1d [gaim-migrate @ 8237]
Nathan Walp <nwalp@pidgin.im>
parents: 7612
diff changeset
954
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
955 if (logfound) {
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
956 if ((newlen = ftell(file) - lastoff) != 0) {
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
957 log = gaim_log_new(GAIM_LOG_IM, sn, account, -1);
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
958 log->logger = &old_logger;
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
959 log->time = lasttime;
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
960 data = g_new0(struct old_logger_data, 1);
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
961 data->offset = lastoff;
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
962 data->length = newlen;
7764
b1bb74f2f79d [gaim-migrate @ 8409]
Ethan Blanton <elb@pidgin.im>
parents: 7761
diff changeset
963 data->pathref = gaim_stringref_ref(pathref);
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
964 log->logger_data = data;
7613
d5a283c09b1d [gaim-migrate @ 8237]
Nathan Walp <nwalp@pidgin.im>
parents: 7612
diff changeset
965 list = g_list_append(list, log);
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
966 }
7613
d5a283c09b1d [gaim-migrate @ 8237]
Nathan Walp <nwalp@pidgin.im>
parents: 7612
diff changeset
967 }
d5a283c09b1d [gaim-migrate @ 8237]
Nathan Walp <nwalp@pidgin.im>
parents: 7612
diff changeset
968
7764
b1bb74f2f79d [gaim-migrate @ 8409]
Ethan Blanton <elb@pidgin.im>
parents: 7761
diff changeset
969 gaim_stringref_unref(pathref);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
970 fclose(file);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
971 return list;
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
972 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4227
diff changeset
973
8096
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
974 static int old_logger_total_size(const char *name, GaimAccount *account)
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
975 {
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
976 char *logfile = g_strdup_printf("%s.log", gaim_normalize(account, name));
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
977 char *pathstr = g_build_filename(gaim_user_dir(), "logs", logfile, NULL);
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
978 int size;
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
979 struct stat st;
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
980
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
981 if (stat(pathstr, &st))
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
982 size = 0;
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
983 else
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
984 size = st.st_size;
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
985
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
986 g_free(logfile);
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
987 g_free(pathstr);
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
988
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
989 return size;
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
990 }
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
991
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
992 static char * old_logger_read (GaimLog *log, GaimLogReadFlags *flags)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4227
diff changeset
993 {
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
994 struct old_logger_data *data = log->logger_data;
7764
b1bb74f2f79d [gaim-migrate @ 8409]
Ethan Blanton <elb@pidgin.im>
parents: 7761
diff changeset
995 FILE *file = fopen(gaim_stringref_value(data->pathref), "rb");
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
996 char *read = g_malloc(data->length + 1);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
997 fseek(file, data->offset, SEEK_SET);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
998 fread(read, data->length, 1, file);
8370
ce5393bfcf57 [gaim-migrate @ 9097]
Mark Doliner <markdoliner@pidgin.im>
parents: 8111
diff changeset
999 fclose(file);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1000 read[data->length] = '\0';
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1001 *flags = 0;
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1002 if(strstr(read, "<BR>"))
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1003 *flags |= GAIM_LOG_READ_NO_NEWLINE;
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1004 return read;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1005 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4227
diff changeset
1006
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1007 static int old_logger_size (GaimLog *log)
7556
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
1008 {
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
1009 struct old_logger_data *data = log->logger_data;
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1010 return data ? data->length : 0;
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1011 }
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1012
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1013 static void old_logger_finalize(GaimLog *log)
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1014 {
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1015 struct old_logger_data *data = log->logger_data;
7764
b1bb74f2f79d [gaim-migrate @ 8409]
Ethan Blanton <elb@pidgin.im>
parents: 7761
diff changeset
1016 gaim_stringref_unref(data->pathref);
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1017 g_free(data);
7556
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
1018 }
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
1019
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1020 static GaimLogLogger old_logger = {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1021 "old logger", "old",
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1022 NULL, NULL,
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1023 old_logger_finalize,
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1024 old_logger_list,
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1025 old_logger_read,
8096
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
1026 old_logger_size,
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
1027 old_logger_total_size,
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
1028 NULL
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1029 };

mercurial