src/log.c

Tue, 21 Mar 2006 01:15:50 +0000

author
Richard Laager <rlaager@pidgin.im>
date
Tue, 21 Mar 2006 01:15:50 +0000
changeset 13539
8036a635a316
parent 13520
f89ab3c41f4b
child 13568
406e8503a006
permissions
-rw-r--r--

[gaim-migrate @ 15915]
Change "Clear formatting" to "Reset formatting". This is more clear (no
pun intended), and helps to remove ambiguity with the "Clear scrollback"
option in the Conversation menu. I've also noted the mnemonic on this entry
in the right-click menu in conversations.

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
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
36 static GaimLogLogger *html_logger;
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
37 static GaimLogLogger *txt_logger;
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
38 static GaimLogLogger *old_logger;
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5839
diff changeset
39
8635
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
40 struct _gaim_logsize_user {
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
41 char *name;
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
42 GaimAccount *account;
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
43 };
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
44 static GHashTable *logsize_users = NULL;
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
45
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
46 static void log_get_log_sets_common(GHashTable *sets);
8635
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
47
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
48 static gsize html_logger_write(GaimLog *log, GaimMessageFlags type,
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
49 const char *from, time_t time, const char *message);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
50 static void html_logger_finalize(GaimLog *log);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
51 static GList *html_logger_list(GaimLogType type, const char *sn, GaimAccount *account);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
52 static GList *html_logger_list_syslog(GaimAccount *account);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
53 static char *html_logger_read(GaimLog *log, GaimLogReadFlags *flags);
13389
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
54 static int html_logger_total_size(GaimLogType type, const char *name, GaimAccount *account);
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
55
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
56 static GList *old_logger_list(GaimLogType type, const char *sn, GaimAccount *account);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
57 static int old_logger_total_size(GaimLogType type, const char *name, GaimAccount *account);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
58 static char * old_logger_read (GaimLog *log, GaimLogReadFlags *flags);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
59 static int old_logger_size (GaimLog *log);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
60 static void old_logger_get_log_sets(GaimLogSetCallback cb, GHashTable *sets);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
61 static void old_logger_finalize(GaimLog *log);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
62
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
63 static gsize txt_logger_write(GaimLog *log,
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
64 GaimMessageFlags type,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
65 const char *from, time_t time, const char *message);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
66 static void txt_logger_finalize(GaimLog *log);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
67 static GList *txt_logger_list(GaimLogType type, const char *sn, GaimAccount *account);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
68 static GList *txt_logger_list_syslog(GaimAccount *account);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
69 static char *txt_logger_read(GaimLog *log, GaimLogReadFlags *flags);
13389
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
70 static int txt_logger_total_size(GaimLogType type, const char *name, GaimAccount *account);
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
71
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
72 /**************************************************************************
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
73 * PUBLIC LOGGING FUNCTIONS ***********************************************
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
74 **************************************************************************/
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
75
11292
13068c68def6 [gaim-migrate @ 13492]
Richard Laager <rlaager@pidgin.im>
parents: 11256
diff changeset
76 GaimLog *gaim_log_new(GaimLogType type, const char *name, GaimAccount *account,
13120
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
77 GaimConversation *conv, time_t time, const struct tm *tm)
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
78 {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
79 GaimLog *log = g_new0(GaimLog, 1);
8635
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
80 log->name = g_strdup(gaim_normalize(account, name));
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
81 log->account = account;
11292
13068c68def6 [gaim-migrate @ 13492]
Richard Laager <rlaager@pidgin.im>
parents: 11256
diff changeset
82 log->conv = conv;
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
83 log->time = time;
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
84 log->type = type;
8096
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
85 log->logger_data = NULL;
13120
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
86 if (tm != NULL)
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
87 {
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
88 log->tm = g_new0(struct tm, 1);
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
89 *(log->tm) = *tm;
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
90
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
91 #ifdef HAVE_STRUCT_TM_TM_ZONE
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
92 /* XXX: This is so wrong... */
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
93 if (log->tm->tm_zone != NULL)
13161
8f84bea3949f [gaim-migrate @ 15523]
Richard Laager <rlaager@pidgin.im>
parents: 13160
diff changeset
94 {
8f84bea3949f [gaim-migrate @ 15523]
Richard Laager <rlaager@pidgin.im>
parents: 13160
diff changeset
95 char *tmp = g_locale_from_utf8(log->tm->tm_zone, -1, NULL, NULL, NULL);
8f84bea3949f [gaim-migrate @ 15523]
Richard Laager <rlaager@pidgin.im>
parents: 13160
diff changeset
96 if (tmp != NULL)
8f84bea3949f [gaim-migrate @ 15523]
Richard Laager <rlaager@pidgin.im>
parents: 13160
diff changeset
97 log->tm->tm_zone = (const char *)tmp;
8f84bea3949f [gaim-migrate @ 15523]
Richard Laager <rlaager@pidgin.im>
parents: 13160
diff changeset
98 else
8f84bea3949f [gaim-migrate @ 15523]
Richard Laager <rlaager@pidgin.im>
parents: 13160
diff changeset
99 /* Just shove the UTF-8 bytes in and hope... */
8f84bea3949f [gaim-migrate @ 15523]
Richard Laager <rlaager@pidgin.im>
parents: 13160
diff changeset
100 log->tm->tm_zone = (const char *)g_strdup(log->tm->tm_zone);
8f84bea3949f [gaim-migrate @ 15523]
Richard Laager <rlaager@pidgin.im>
parents: 13160
diff changeset
101 }
13120
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
102 #endif
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
103 }
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
104 log->logger = gaim_log_logger_get();
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7436
diff changeset
105 if (log->logger && log->logger->create)
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7436
diff changeset
106 log->logger->create(log);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
107 return log;
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
108 }
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
109
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
110 void gaim_log_free(GaimLog *log)
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
111 {
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
112 g_return_if_fail(log);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
113 if (log->logger && log->logger->finalize)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
114 log->logger->finalize(log);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
115 g_free(log->name);
13120
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
116
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
117 if (log->tm != NULL)
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
118 {
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
119 #ifdef HAVE_STRUCT_TM_TM_ZONE
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
120 /* XXX: This is so wrong... */
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
121 g_free((char *)log->tm->tm_zone);
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
122 #endif
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
123 g_free(log->tm);
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
124 }
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
125
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
126 g_free(log);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
127 }
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
128
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
129 void gaim_log_write(GaimLog *log, GaimMessageFlags type,
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
130 const char *from, time_t time, const char *message)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
131 {
10173
335358c9cee4 [gaim-migrate @ 11287]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10171
diff changeset
132 struct _gaim_logsize_user *lu;
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
133 gsize written, total = 0;
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
134 gpointer ptrsize;
10173
335358c9cee4 [gaim-migrate @ 11287]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10171
diff changeset
135
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
136 g_return_if_fail(log);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
137 g_return_if_fail(log->logger);
7442
247b4506d446 [gaim-migrate @ 8047]
Nathan Walp <nwalp@pidgin.im>
parents: 7441
diff changeset
138 g_return_if_fail(log->logger->write);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
139
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
140 written = (log->logger->write)(log, type, from, time, message);
10171
814764a2d24c [gaim-migrate @ 11263]
Luke Schierer <lschiere@pidgin.im>
parents: 10087
diff changeset
141
814764a2d24c [gaim-migrate @ 11263]
Luke Schierer <lschiere@pidgin.im>
parents: 10087
diff changeset
142 lu = g_new(struct _gaim_logsize_user, 1);
9892
281f62b8824e [gaim-migrate @ 10780]
Luke Schierer <lschiere@pidgin.im>
parents: 9883
diff changeset
143
10171
814764a2d24c [gaim-migrate @ 11263]
Luke Schierer <lschiere@pidgin.im>
parents: 10087
diff changeset
144 lu->name = g_strdup(gaim_normalize(log->account, log->name));
814764a2d24c [gaim-migrate @ 11263]
Luke Schierer <lschiere@pidgin.im>
parents: 10087
diff changeset
145 lu->account = log->account;
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
146
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
147 if(g_hash_table_lookup_extended(logsize_users, lu, NULL, &ptrsize)) {
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
148 total = GPOINTER_TO_INT(ptrsize);
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
149 total += written;
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
150 g_hash_table_replace(logsize_users, lu, GINT_TO_POINTER(total));
13077
418101346d08 [gaim-migrate @ 15438]
Richard Laager <rlaager@pidgin.im>
parents: 13069
diff changeset
151 } else {
418101346d08 [gaim-migrate @ 15438]
Richard Laager <rlaager@pidgin.im>
parents: 13069
diff changeset
152 g_free(lu->name);
418101346d08 [gaim-migrate @ 15438]
Richard Laager <rlaager@pidgin.im>
parents: 13069
diff changeset
153 g_free(lu);
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
154 }
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
155
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
156 }
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
157
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
158 char *gaim_log_read(GaimLog *log, GaimLogReadFlags *flags)
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
159 {
7542
12e2a33137e9 [gaim-migrate @ 8156]
Nathan Walp <nwalp@pidgin.im>
parents: 7541
diff changeset
160 GaimLogReadFlags mflags;
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
161 g_return_val_if_fail(log && log->logger, NULL);
7462
c51a6ec98ba7 [gaim-migrate @ 8075]
Nathan Walp <nwalp@pidgin.im>
parents: 7461
diff changeset
162 if (log->logger->read) {
7535
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7501
diff changeset
163 char *ret = (log->logger->read)(log, flags ? flags : &mflags);
11920
be80617ec59b [gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11703
diff changeset
164 gaim_str_strip_char(ret, '\r');
7462
c51a6ec98ba7 [gaim-migrate @ 8075]
Nathan Walp <nwalp@pidgin.im>
parents: 7461
diff changeset
165 return ret;
c51a6ec98ba7 [gaim-migrate @ 8075]
Nathan Walp <nwalp@pidgin.im>
parents: 7461
diff changeset
166 }
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13105
diff changeset
167 return g_strdup(_("<b><font color=\"red\">The logger has no read function</font></b>"));
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
168 }
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
169
7556
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
170 int gaim_log_get_size(GaimLog *log)
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
171 {
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
172 g_return_val_if_fail(log && log->logger, 0);
8096
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
173
7556
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
174 if (log->logger->size)
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
175 return log->logger->size(log);
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
176 return 0;
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
177 }
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
178
8635
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
179 static guint _gaim_logsize_user_hash(struct _gaim_logsize_user *lu)
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
180 {
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
181 return g_str_hash(lu->name);
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
182 }
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
183
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
184 static guint _gaim_logsize_user_equal(struct _gaim_logsize_user *lu1,
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
185 struct _gaim_logsize_user *lu2)
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
186 {
13078
724fb0043eea [gaim-migrate @ 15439]
Richard Laager <rlaager@pidgin.im>
parents: 13077
diff changeset
187 return (lu1->account == lu2->account && (!strcmp(lu1->name, lu2->name)));
8635
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
188 }
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
189
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
190 static void _gaim_logsize_user_free_key(struct _gaim_logsize_user *lu)
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
191 {
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
192 g_free(lu->name);
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
193 g_free(lu);
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
194 }
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
195
8898
85f5615bc27e [gaim-migrate @ 9667]
Mark Doliner <markdoliner@pidgin.im>
parents: 8635
diff changeset
196 int gaim_log_get_total_size(GaimLogType type, const char *name, GaimAccount *account)
7556
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
197 {
9677
1e4f158006e1 [gaim-migrate @ 10529]
Nathan Walp <nwalp@pidgin.im>
parents: 9613
diff changeset
198 gpointer ptrsize;
1e4f158006e1 [gaim-migrate @ 10529]
Nathan Walp <nwalp@pidgin.im>
parents: 9613
diff changeset
199 int size = 0;
8096
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
200 GSList *n;
8635
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
201 struct _gaim_logsize_user *lu;
8096
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
202
8635
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
203 lu = g_new(struct _gaim_logsize_user, 1);
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
204 lu->name = g_strdup(gaim_normalize(account, name));
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
205 lu->account = account;
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
206
9677
1e4f158006e1 [gaim-migrate @ 10529]
Nathan Walp <nwalp@pidgin.im>
parents: 9613
diff changeset
207 if(g_hash_table_lookup_extended(logsize_users, lu, NULL, &ptrsize)) {
1e4f158006e1 [gaim-migrate @ 10529]
Nathan Walp <nwalp@pidgin.im>
parents: 9613
diff changeset
208 size = GPOINTER_TO_INT(ptrsize);
8635
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
209 g_free(lu->name);
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
210 g_free(lu);
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
211 } else {
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
212 for (n = loggers; n; n = n->next) {
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
213 GaimLogLogger *logger = n->data;
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
214
8635
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
215 if(logger->total_size){
8898
85f5615bc27e [gaim-migrate @ 9667]
Mark Doliner <markdoliner@pidgin.im>
parents: 8635
diff changeset
216 size += (logger->total_size)(type, name, account);
8635
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
217 } else if(logger->list) {
8898
85f5615bc27e [gaim-migrate @ 9667]
Mark Doliner <markdoliner@pidgin.im>
parents: 8635
diff changeset
218 GList *logs = (logger->list)(type, name, account);
8635
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
219 int this_size = 0;
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
220
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
221 while (logs) {
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
222 GList *logs2 = logs->next;
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
223 GaimLog *log = (GaimLog*)(logs->data);
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
224 this_size += gaim_log_get_size(log);
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
225 gaim_log_free(log);
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
226 g_list_free_1(logs);
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
227 logs = logs2;
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
228 }
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
229
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
230 size += this_size;
8096
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
231 }
8635
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
232 }
8096
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
233
8635
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
234 g_hash_table_replace(logsize_users, lu, GINT_TO_POINTER(size));
7556
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
235 }
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
236 return size;
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
237 }
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
238
10822
142911801a14 [gaim-migrate @ 12484]
Kevin Stange <kstange@pidgin.im>
parents: 10735
diff changeset
239 char *
10577
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
240 gaim_log_get_log_dir(GaimLogType type, const char *name, GaimAccount *account)
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
241 {
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
242 GaimPlugin *prpl;
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
243 GaimPluginProtocolInfo *prpl_info;
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
244 const char *prpl_name;
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
245 char *acct_name;
9926
9957e01fd88a [gaim-migrate @ 10818]
Nathan Walp <nwalp@pidgin.im>
parents: 9923
diff changeset
246 const char *target;
10577
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
247 char *dir;
9926
9957e01fd88a [gaim-migrate @ 10818]
Nathan Walp <nwalp@pidgin.im>
parents: 9923
diff changeset
248
10577
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
249 prpl = gaim_find_prpl(gaim_account_get_protocol_id(account));
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
250 if (!prpl)
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
251 return NULL;
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
252 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(prpl);
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
253 prpl_name = prpl_info->list_icon(account, NULL);
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
254
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
255 acct_name = g_strdup(gaim_escape_filename(gaim_normalize(account,
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
256 gaim_account_get_username(account))));
9923
f3060096e964 [gaim-migrate @ 10815]
Daniel Atallah <datallah@pidgin.im>
parents: 9892
diff changeset
257
f3060096e964 [gaim-migrate @ 10815]
Daniel Atallah <datallah@pidgin.im>
parents: 9892
diff changeset
258 if (type == GAIM_LOG_CHAT) {
f3060096e964 [gaim-migrate @ 10815]
Daniel Atallah <datallah@pidgin.im>
parents: 9892
diff changeset
259 char *temp = g_strdup_printf("%s.chat", gaim_normalize(account, name));
9926
9957e01fd88a [gaim-migrate @ 10818]
Nathan Walp <nwalp@pidgin.im>
parents: 9923
diff changeset
260 target = gaim_escape_filename(temp);
9923
f3060096e964 [gaim-migrate @ 10815]
Daniel Atallah <datallah@pidgin.im>
parents: 9892
diff changeset
261 g_free(temp);
f3060096e964 [gaim-migrate @ 10815]
Daniel Atallah <datallah@pidgin.im>
parents: 9892
diff changeset
262 } else if(type == GAIM_LOG_SYSTEM) {
9926
9957e01fd88a [gaim-migrate @ 10818]
Nathan Walp <nwalp@pidgin.im>
parents: 9923
diff changeset
263 target = ".system";
9923
f3060096e964 [gaim-migrate @ 10815]
Daniel Atallah <datallah@pidgin.im>
parents: 9892
diff changeset
264 } else {
9926
9957e01fd88a [gaim-migrate @ 10818]
Nathan Walp <nwalp@pidgin.im>
parents: 9923
diff changeset
265 target = gaim_escape_filename(gaim_normalize(account, name));
9923
f3060096e964 [gaim-migrate @ 10815]
Daniel Atallah <datallah@pidgin.im>
parents: 9892
diff changeset
266 }
f3060096e964 [gaim-migrate @ 10815]
Daniel Atallah <datallah@pidgin.im>
parents: 9892
diff changeset
267
10577
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
268 dir = g_build_filename(gaim_user_dir(), "logs", prpl_name, acct_name, target, NULL);
9926
9957e01fd88a [gaim-migrate @ 10818]
Nathan Walp <nwalp@pidgin.im>
parents: 9923
diff changeset
269
9923
f3060096e964 [gaim-migrate @ 10815]
Daniel Atallah <datallah@pidgin.im>
parents: 9892
diff changeset
270 g_free(acct_name);
10577
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
271
9923
f3060096e964 [gaim-migrate @ 10815]
Daniel Atallah <datallah@pidgin.im>
parents: 9892
diff changeset
272 return dir;
f3060096e964 [gaim-migrate @ 10815]
Daniel Atallah <datallah@pidgin.im>
parents: 9892
diff changeset
273 }
f3060096e964 [gaim-migrate @ 10815]
Daniel Atallah <datallah@pidgin.im>
parents: 9892
diff changeset
274
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
275 /****************************************************************************
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
276 * LOGGER FUNCTIONS *********************************************************
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
277 ****************************************************************************/
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
278
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
279 static GaimLogLogger *current_logger = NULL;
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
280
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
281 static void logger_pref_cb(const char *name, GaimPrefType type,
12816
5f93e09fa9a6 [gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents: 12738
diff changeset
282 gconstpointer value, gpointer data)
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
283 {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
284 GaimLogLogger *logger;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
285 GSList *l = loggers;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
286 while (l) {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
287 logger = l->data;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
288 if (!strcmp(logger->id, value)) {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
289 gaim_log_logger_set(logger);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
290 return;
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
291 }
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
292 l = l->next;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
293 }
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
294 gaim_log_logger_set(txt_logger);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
295 }
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
296
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
297
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
298 GaimLogLogger *gaim_log_logger_new(const char *id, const char *name, int functions, ...)
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
299 {
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
300 #if 0
8898
85f5615bc27e [gaim-migrate @ 9667]
Mark Doliner <markdoliner@pidgin.im>
parents: 8635
diff changeset
301 void(*create)(GaimLog *),
13068
4670b6342951 [gaim-migrate @ 15430]
Richard Laager <rlaager@pidgin.im>
parents: 13059
diff changeset
302 gsize(*write)(GaimLog *, GaimMessageFlags, const char *, time_t, const char *),
8898
85f5615bc27e [gaim-migrate @ 9667]
Mark Doliner <markdoliner@pidgin.im>
parents: 8635
diff changeset
303 void(*finalize)(GaimLog *),
85f5615bc27e [gaim-migrate @ 9667]
Mark Doliner <markdoliner@pidgin.im>
parents: 8635
diff changeset
304 GList*(*list)(GaimLogType type, const char*, GaimAccount*),
85f5615bc27e [gaim-migrate @ 9667]
Mark Doliner <markdoliner@pidgin.im>
parents: 8635
diff changeset
305 char*(*read)(GaimLog*, GaimLogReadFlags*),
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
306 int(*size)(GaimLog*),
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
307 int(*total_size)(GaimLogType type, const char *name, GaimAccount *account),
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
308 GList*(*list_syslog)(GaimAccount *account),
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
309 void(*get_log_sets)(GaimLogSetCallback cb, GHashTable *sets))
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
310 {
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
311 #endif
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
312 GaimLogLogger *logger;
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
313 va_list args;
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
314
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
315 g_return_val_if_fail(id != NULL, NULL);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
316 g_return_val_if_fail(name != NULL, NULL);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
317 g_return_val_if_fail(functions >= 1, NULL);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
318
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
319 logger = g_new0(GaimLogLogger, 1);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
320 logger->id = g_strdup(id);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
321 logger->name = g_strdup(name);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
322
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
323 va_start(args, functions);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
324
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
325 if (functions >= 1)
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
326 logger->create = va_arg(args, void *);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
327 if (functions >= 2)
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
328 logger->write = va_arg(args, void *);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
329 if (functions >= 3)
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
330 logger->finalize = va_arg(args, void *);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
331 if (functions >= 4)
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
332 logger->list = va_arg(args, void *);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
333 if (functions >= 5)
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
334 logger->read = va_arg(args, void *);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
335 if (functions >= 6)
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
336 logger->size = va_arg(args, void *);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
337 if (functions >= 7)
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
338 logger->total_size = va_arg(args, void *);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
339 if (functions >= 8)
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
340 logger->list_syslog = va_arg(args, void *);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
341 if (functions >= 9)
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
342 logger->get_log_sets = va_arg(args, void *);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
343
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
344 if (functions > 9)
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
345 gaim_debug_info("log", "Dropping new functions for logger: %s (%s)\n", name, id);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
346
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
347 va_end(args);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
348
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
349 return logger;
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
350 }
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
351
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
352 void gaim_log_logger_free(GaimLogLogger *logger)
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
353 {
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
354 g_free(logger->name);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
355 g_free(logger->id);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
356 g_free(logger);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
357 }
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
358
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
359 void gaim_log_logger_add (GaimLogLogger *logger)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
360 {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
361 g_return_if_fail(logger);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
362 if (g_slist_find(loggers, logger))
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
363 return;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
364 loggers = g_slist_append(loggers, logger);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
365 }
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
366
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
367 void gaim_log_logger_remove (GaimLogLogger *logger)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
368 {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
369 g_return_if_fail(logger);
12574
3c80324a3ea5 [gaim-migrate @ 14896]
Mark Doliner <markdoliner@pidgin.im>
parents: 12241
diff changeset
370 loggers = g_slist_remove(loggers, logger);
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
371 }
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
372
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
373 void gaim_log_logger_set (GaimLogLogger *logger)
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
374 {
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
375 g_return_if_fail(logger);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
376 current_logger = logger;
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
377 }
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
378
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
379 GaimLogLogger *gaim_log_logger_get()
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
380 {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
381 return current_logger;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
382 }
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
383
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
384 GList *gaim_log_logger_get_options(void)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
385 {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
386 GSList *n;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
387 GList *list = NULL;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
388 GaimLogLogger *data;
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
389
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
390 for (n = loggers; n; n = n->next) {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
391 data = n->data;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
392 if (!data->write)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
393 continue;
12241
29b388429db5 [gaim-migrate @ 14543]
Richard Laager <rlaager@pidgin.im>
parents: 12240
diff changeset
394 list = g_list_append(list, data->name);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
395 list = g_list_append(list, data->id);
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
396 }
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
397
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
398 return list;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
399 }
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
400
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
401 gint gaim_log_compare(gconstpointer y, gconstpointer z)
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
402 {
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
403 const GaimLog *a = y;
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
404 const GaimLog *b = z;
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
405
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
406 return b->time - a->time;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
407 }
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
408
8898
85f5615bc27e [gaim-migrate @ 9667]
Mark Doliner <markdoliner@pidgin.im>
parents: 8635
diff changeset
409 GList *gaim_log_get_logs(GaimLogType type, const char *name, GaimAccount *account)
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
410 {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
411 GList *logs = NULL;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
412 GSList *n;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
413 for (n = loggers; n; n = n->next) {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
414 GaimLogLogger *logger = n->data;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
415 if (!logger->list)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
416 continue;
11703
6b22ef099870 [gaim-migrate @ 13994]
Richard Laager <rlaager@pidgin.im>
parents: 11698
diff changeset
417 logs = g_list_concat(logger->list(type, name, account), logs);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
418 }
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
419
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
420 return g_list_sort(logs, gaim_log_compare);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
421 }
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
422
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
423 gint gaim_log_set_compare(gconstpointer y, gconstpointer z)
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
424 {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
425 const GaimLogSet *a = y;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
426 const GaimLogSet *b = z;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
427 gint ret = 0;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
428
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
429 /* This logic seems weird at first...
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
430 * If either account is NULL, we pretend the accounts are
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
431 * equal. This allows us to detect duplicates that will
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
432 * exist if one logger knows the account and another
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
433 * doesn't. */
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
434 if (a->account != NULL && b->account != NULL) {
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
435 ret = strcmp(gaim_account_get_username(a->account), gaim_account_get_username(b->account));
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
436 if (ret != 0)
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
437 return ret;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
438 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
439
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
440 ret = strcmp(a->normalized_name, b->normalized_name);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
441 if (ret != 0)
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
442 return ret;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
443
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
444 return (gint)b->type - (gint)a->type;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
445 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
446
11677
89c2ab8d2ebf [gaim-migrate @ 13963]
Mark Doliner <markdoliner@pidgin.im>
parents: 11503
diff changeset
447 static guint
89c2ab8d2ebf [gaim-migrate @ 13963]
Mark Doliner <markdoliner@pidgin.im>
parents: 11503
diff changeset
448 log_set_hash(gconstpointer key)
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
449 {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
450 const GaimLogSet *set = key;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
451
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
452 /* The account isn't hashed because we need GaimLogSets with NULL accounts
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
453 * to be found when we search by a GaimLogSet that has a non-NULL account
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
454 * but the same type and name. */
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
455 return g_int_hash((gint *)&set->type) + g_str_hash(set->name);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
456 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
457
11677
89c2ab8d2ebf [gaim-migrate @ 13963]
Mark Doliner <markdoliner@pidgin.im>
parents: 11503
diff changeset
458 static gboolean
89c2ab8d2ebf [gaim-migrate @ 13963]
Mark Doliner <markdoliner@pidgin.im>
parents: 11503
diff changeset
459 log_set_equal(gconstpointer a, gconstpointer b)
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
460 {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
461 /* I realize that the choices made for GList and GHashTable
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
462 * make sense for those data types, but I wish the comparison
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
463 * functions were compatible. */
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
464 return !gaim_log_set_compare(a, b);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
465 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
466
11677
89c2ab8d2ebf [gaim-migrate @ 13963]
Mark Doliner <markdoliner@pidgin.im>
parents: 11503
diff changeset
467 static void
89c2ab8d2ebf [gaim-migrate @ 13963]
Mark Doliner <markdoliner@pidgin.im>
parents: 11503
diff changeset
468 log_add_log_set_to_hash(GHashTable *sets, GaimLogSet *set)
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
469 {
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
470 GaimLogSet *existing_set = g_hash_table_lookup(sets, set);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
471
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
472 if (existing_set == NULL)
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
473 g_hash_table_insert(sets, set, set);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
474 else if (existing_set->account == NULL && set->account != NULL)
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
475 g_hash_table_replace(sets, set, set);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
476 else
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
477 gaim_log_set_free(set);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
478 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
479
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
480 GHashTable *gaim_log_get_log_sets(void)
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
481 {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
482 GSList *n;
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
483 GHashTable *sets = g_hash_table_new_full(log_set_hash, log_set_equal,
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
484 (GDestroyNotify)gaim_log_set_free, NULL);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
485
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
486 /* Get the log sets from all the loggers. */
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
487 for (n = loggers; n; n = n->next) {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
488 GaimLogLogger *logger = n->data;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
489
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
490 if (!logger->get_log_sets)
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
491 continue;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
492
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
493 logger->get_log_sets(log_add_log_set_to_hash, sets);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
494 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
495
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
496 log_get_log_sets_common(sets);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
497
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
498 /* Return the GHashTable of unique GaimLogSets. */
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
499 return sets;
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
500 }
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
501
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
502 void gaim_log_set_free(GaimLogSet *set)
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
503 {
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
504 g_return_if_fail(set != NULL);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
505
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
506 g_free(set->name);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
507 if (set->normalized_name != set->name)
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
508 g_free(set->normalized_name);
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
509 g_free(set);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
510 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
511
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
512 GList *gaim_log_get_system_logs(GaimAccount *account)
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
513 {
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
514 GList *logs = NULL;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
515 GSList *n;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
516 for (n = loggers; n; n = n->next) {
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
517 GaimLogLogger *logger = n->data;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
518 if (!logger->list_syslog)
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
519 continue;
11703
6b22ef099870 [gaim-migrate @ 13994]
Richard Laager <rlaager@pidgin.im>
parents: 11698
diff changeset
520 logs = g_list_concat(logger->list_syslog(account), logs);
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
521 }
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
522
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
523 return g_list_sort(logs, gaim_log_compare);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
524 }
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
525
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
526 /****************************************************************************
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
527 * LOG SUBSYSTEM ************************************************************
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
528 ****************************************************************************/
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
529
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
530 void *
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
531 gaim_log_get_handle(void)
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
532 {
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
533 static int handle;
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
534
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
535 return &handle;
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
536 }
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
537
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
538 void gaim_log_init(void)
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
539 {
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
540 void *handle = gaim_log_get_handle();
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
541
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
542 gaim_prefs_add_none("/core/logging");
7555
ca7ea5ff6007 [gaim-migrate @ 8169]
Nathan Walp <nwalp@pidgin.im>
parents: 7554
diff changeset
543 gaim_prefs_add_bool("/core/logging/log_ims", FALSE);
ca7ea5ff6007 [gaim-migrate @ 8169]
Nathan Walp <nwalp@pidgin.im>
parents: 7554
diff changeset
544 gaim_prefs_add_bool("/core/logging/log_chats", FALSE);
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
545 gaim_prefs_add_bool("/core/logging/log_system", FALSE);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
546
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
547 gaim_prefs_add_string("/core/logging/format", "txt");
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
548
12240
194dc3367706 [gaim-migrate @ 14542]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 11920
diff changeset
549 html_logger = gaim_log_logger_new("html", _("HTML"), 8,
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
550 NULL,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
551 html_logger_write,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
552 html_logger_finalize,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
553 html_logger_list,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
554 html_logger_read,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
555 gaim_log_common_sizer,
13389
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
556 html_logger_total_size,
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
557 html_logger_list_syslog);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
558 gaim_log_logger_add(html_logger);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
559
12240
194dc3367706 [gaim-migrate @ 14542]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 11920
diff changeset
560 txt_logger = gaim_log_logger_new("txt", _("Plain text"), 8,
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
561 NULL,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
562 txt_logger_write,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
563 txt_logger_finalize,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
564 txt_logger_list,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
565 txt_logger_read,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
566 gaim_log_common_sizer,
13389
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
567 txt_logger_total_size,
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
568 txt_logger_list_syslog);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
569 gaim_log_logger_add(txt_logger);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
570
12240
194dc3367706 [gaim-migrate @ 14542]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 11920
diff changeset
571 old_logger = gaim_log_logger_new("old", _("Old Gaim"), 9,
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
572 NULL,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
573 NULL,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
574 old_logger_finalize,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
575 old_logger_list,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
576 old_logger_read,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
577 old_logger_size,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
578 old_logger_total_size,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
579 NULL,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
580 old_logger_get_log_sets);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
581 gaim_log_logger_add(old_logger);
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
582
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
583 gaim_signal_register(handle, "log-timestamp",
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
584 gaim_marshal_POINTER__POINTER_POINTER,
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
585 gaim_value_new(GAIM_TYPE_POINTER), 2,
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
586 gaim_value_new(GAIM_TYPE_SUBTYPE,
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
587 GAIM_SUBTYPE_LOG),
12834
213fe18cfeb8 [gaim-migrate @ 15182]
Richard Laager <rlaager@pidgin.im>
parents: 12816
diff changeset
588 gaim_value_new(GAIM_TYPE_BOXED,
213fe18cfeb8 [gaim-migrate @ 15182]
Richard Laager <rlaager@pidgin.im>
parents: 12816
diff changeset
589 "struct tm *"));
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
590
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9977
diff changeset
591 gaim_prefs_connect_callback(NULL, "/core/logging/format",
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
592 logger_pref_cb, NULL);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
593 gaim_prefs_trigger_callback("/core/logging/format");
8635
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
594
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
595 logsize_users = g_hash_table_new_full((GHashFunc)_gaim_logsize_user_hash,
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
596 (GEqualFunc)_gaim_logsize_user_equal,
a0c7f0bfedfa [gaim-migrate @ 9387]
Nathan Walp <nwalp@pidgin.im>
parents: 8619
diff changeset
597 (GDestroyNotify)_gaim_logsize_user_free_key, NULL);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
598 }
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
599
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
600 void
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
601 gaim_log_uninit(void)
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
602 {
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
603 gaim_signals_unregister_by_instance(gaim_log_get_handle());
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
604 }
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
605
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
606 /****************************************************************************
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
607 * LOGGERS ******************************************************************
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
608 ****************************************************************************/
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
609
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
610 static char *log_get_timestamp(GaimLog *log, time_t when)
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
611 {
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
612 char *date;
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
613 struct tm tm = *(localtime(&when));
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
614
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
615 date = gaim_signal_emit_return_1(gaim_log_get_handle(),
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
616 "log-timestamp",
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
617 log, &tm);
13105
8f9c66e4af87 [gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents: 13078
diff changeset
618 if (date != NULL)
8f9c66e4af87 [gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents: 13078
diff changeset
619 return date;
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
620
13105
8f9c66e4af87 [gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents: 13078
diff changeset
621 if (log->type == GAIM_LOG_SYSTEM || time(NULL) > when + 20*60)
8f9c66e4af87 [gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents: 13078
diff changeset
622 return g_strdup(gaim_date_format_long(&tm));
8f9c66e4af87 [gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents: 13078
diff changeset
623 else
8f9c66e4af87 [gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents: 13078
diff changeset
624 return g_strdup(gaim_time_format(&tm));
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
625 }
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
626
11292
13068c68def6 [gaim-migrate @ 13492]
Richard Laager <rlaager@pidgin.im>
parents: 11256
diff changeset
627 void gaim_log_common_writer(GaimLog *log, const char *ext)
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
628 {
10822
142911801a14 [gaim-migrate @ 12484]
Kevin Stange <kstange@pidgin.im>
parents: 10735
diff changeset
629 GaimLogCommonLoggerData *data = log->logger_data;
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
630
11292
13068c68def6 [gaim-migrate @ 13492]
Richard Laager <rlaager@pidgin.im>
parents: 11256
diff changeset
631 if (data == NULL)
13068c68def6 [gaim-migrate @ 13492]
Richard Laager <rlaager@pidgin.im>
parents: 11256
diff changeset
632 {
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
633 /* This log is new */
13105
8f9c66e4af87 [gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents: 13078
diff changeset
634 char *dir;
13163
2026e49825df [gaim-migrate @ 15525]
Richard Laager <rlaager@pidgin.im>
parents: 13161
diff changeset
635 struct tm *tm;
2026e49825df [gaim-migrate @ 15525]
Richard Laager <rlaager@pidgin.im>
parents: 13161
diff changeset
636 const char *tz;
13105
8f9c66e4af87 [gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents: 13078
diff changeset
637 const char *date;
8f9c66e4af87 [gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents: 13078
diff changeset
638 char *filename;
8f9c66e4af87 [gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents: 13078
diff changeset
639 char *path;
10577
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
640
9923
f3060096e964 [gaim-migrate @ 10815]
Daniel Atallah <datallah@pidgin.im>
parents: 9892
diff changeset
641 dir = gaim_log_get_log_dir(log->type, log->name, log->account);
10577
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
642 if (dir == NULL)
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
643 return;
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
644
9923
f3060096e964 [gaim-migrate @ 10815]
Daniel Atallah <datallah@pidgin.im>
parents: 9892
diff changeset
645 gaim_build_dir (dir, S_IRUSR | S_IWUSR | S_IXUSR);
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
646
13163
2026e49825df [gaim-migrate @ 15525]
Richard Laager <rlaager@pidgin.im>
parents: 13161
diff changeset
647 tm = localtime(&log->time);
2026e49825df [gaim-migrate @ 15525]
Richard Laager <rlaager@pidgin.im>
parents: 13161
diff changeset
648 tz = gaim_escape_filename(gaim_utf8_strftime("%Z", tm));
2026e49825df [gaim-migrate @ 15525]
Richard Laager <rlaager@pidgin.im>
parents: 13161
diff changeset
649 date = gaim_utf8_strftime("%Y-%m-%d.%H%M%S%z", tm);
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
650
13163
2026e49825df [gaim-migrate @ 15525]
Richard Laager <rlaager@pidgin.im>
parents: 13161
diff changeset
651 filename = g_strdup_printf("%s%s%s", date, tz, ext ? ext : "");
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
652
13163
2026e49825df [gaim-migrate @ 15525]
Richard Laager <rlaager@pidgin.im>
parents: 13161
diff changeset
653 path = g_build_filename(dir, filename, NULL);
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
654 g_free(dir);
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
655 g_free(filename);
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
656
10822
142911801a14 [gaim-migrate @ 12484]
Kevin Stange <kstange@pidgin.im>
parents: 10735
diff changeset
657 log->logger_data = data = g_new0(GaimLogCommonLoggerData, 1);
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
658
10589
4e10236e06d4 [gaim-migrate @ 11994]
Daniel Atallah <datallah@pidgin.im>
parents: 10577
diff changeset
659 data->file = g_fopen(path, "a");
11292
13068c68def6 [gaim-migrate @ 13492]
Richard Laager <rlaager@pidgin.im>
parents: 11256
diff changeset
660 if (data->file == NULL)
13068c68def6 [gaim-migrate @ 13492]
Richard Laager <rlaager@pidgin.im>
parents: 11256
diff changeset
661 {
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
662 gaim_debug(GAIM_DEBUG_ERROR, "log",
9892
281f62b8824e [gaim-migrate @ 10780]
Luke Schierer <lschiere@pidgin.im>
parents: 9883
diff changeset
663 "Could not create log file %s\n", path);
11292
13068c68def6 [gaim-migrate @ 13492]
Richard Laager <rlaager@pidgin.im>
parents: 11256
diff changeset
664
13068c68def6 [gaim-migrate @ 13492]
Richard Laager <rlaager@pidgin.im>
parents: 11256
diff changeset
665 if (log->conv != NULL)
13068c68def6 [gaim-migrate @ 13492]
Richard Laager <rlaager@pidgin.im>
parents: 11256
diff changeset
666 gaim_conversation_write(log->conv, NULL, _("Logging of this conversation failed."),
13068c68def6 [gaim-migrate @ 13492]
Richard Laager <rlaager@pidgin.im>
parents: 11256
diff changeset
667 GAIM_MESSAGE_ERROR, time(NULL));
13068c68def6 [gaim-migrate @ 13492]
Richard Laager <rlaager@pidgin.im>
parents: 11256
diff changeset
668
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
669 g_free(path);
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
670 return;
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
671 }
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
672 g_free(path);
10577
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
673 }
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
674 }
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
675
10822
142911801a14 [gaim-migrate @ 12484]
Kevin Stange <kstange@pidgin.im>
parents: 10735
diff changeset
676 GList *gaim_log_common_lister(GaimLogType type, const char *name, GaimAccount *account, const char *ext, GaimLogLogger *logger)
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
677 {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
678 GDir *dir;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
679 GList *list = NULL;
13160
8177a80d9e27 [gaim-migrate @ 15522]
Richard Laager <rlaager@pidgin.im>
parents: 13157
diff changeset
680 const char *filename;
8111
8c8fa8901d53 [gaim-migrate @ 8812]
Nathan Walp <nwalp@pidgin.im>
parents: 8096
diff changeset
681 char *path;
8c8fa8901d53 [gaim-migrate @ 8812]
Nathan Walp <nwalp@pidgin.im>
parents: 8096
diff changeset
682
8c8fa8901d53 [gaim-migrate @ 8812]
Nathan Walp <nwalp@pidgin.im>
parents: 8096
diff changeset
683 if(!account)
8c8fa8901d53 [gaim-migrate @ 8812]
Nathan Walp <nwalp@pidgin.im>
parents: 8096
diff changeset
684 return NULL;
8c8fa8901d53 [gaim-migrate @ 8812]
Nathan Walp <nwalp@pidgin.im>
parents: 8096
diff changeset
685
9923
f3060096e964 [gaim-migrate @ 10815]
Daniel Atallah <datallah@pidgin.im>
parents: 9892
diff changeset
686 path = gaim_log_get_log_dir(type, name, account);
10577
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
687 if (path == NULL)
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
688 return NULL;
7447
4876aeb16c60 [gaim-migrate @ 8058]
Mark Doliner <markdoliner@pidgin.im>
parents: 7443
diff changeset
689
12969
823d3591438c [gaim-migrate @ 15322]
Richard Laager <rlaager@pidgin.im>
parents: 12958
diff changeset
690 if (!(dir = g_dir_open(path, 0, NULL)))
823d3591438c [gaim-migrate @ 15322]
Richard Laager <rlaager@pidgin.im>
parents: 12958
diff changeset
691 {
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
692 g_free(path);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
693 return NULL;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
694 }
8898
85f5615bc27e [gaim-migrate @ 9667]
Mark Doliner <markdoliner@pidgin.im>
parents: 8635
diff changeset
695
13160
8177a80d9e27 [gaim-migrate @ 15522]
Richard Laager <rlaager@pidgin.im>
parents: 13157
diff changeset
696 while ((filename = g_dir_read_name(dir)))
12969
823d3591438c [gaim-migrate @ 15322]
Richard Laager <rlaager@pidgin.im>
parents: 12958
diff changeset
697 {
8577
64f25a17f8e4 [gaim-migrate @ 9326]
Nathan Walp <nwalp@pidgin.im>
parents: 8573
diff changeset
698 if (gaim_str_has_suffix(filename, ext) &&
12969
823d3591438c [gaim-migrate @ 15322]
Richard Laager <rlaager@pidgin.im>
parents: 12958
diff changeset
699 strlen(filename) >= (17 + strlen(ext)))
823d3591438c [gaim-migrate @ 15322]
Richard Laager <rlaager@pidgin.im>
parents: 12958
diff changeset
700 {
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
701 GaimLog *log;
10822
142911801a14 [gaim-migrate @ 12484]
Kevin Stange <kstange@pidgin.im>
parents: 10735
diff changeset
702 GaimLogCommonLoggerData *data;
13120
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
703 #if defined (HAVE_TM_GMTOFF) && defined (HAVE_STRUCT_TM_TM_ZONE)
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
704 struct tm tm;
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
705 long tz_off;
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
706 const char *rest;
13160
8177a80d9e27 [gaim-migrate @ 15522]
Richard Laager <rlaager@pidgin.im>
parents: 13157
diff changeset
707 time_t stamp = gaim_str_to_time(gaim_unescape_filename(filename), FALSE, &tm, &tz_off, &rest);
13120
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
708 char *end;
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
709
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
710 /* As zero is a valid offset, GAIM_NO_TZ_OFF means no offset was
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
711 * provided. See util.h. Yes, it's kinda ugly. */
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
712 if (tz_off != GAIM_NO_TZ_OFF)
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
713 tm.tm_gmtoff = tz_off - tm.tm_gmtoff;
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
714
13163
2026e49825df [gaim-migrate @ 15525]
Richard Laager <rlaager@pidgin.im>
parents: 13161
diff changeset
715 if (rest == NULL || (end = strchr(rest, '.')) == NULL || strchr(rest, ' ') != NULL)
13120
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
716 {
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
717 log = gaim_log_new(type, name, account, NULL, stamp, NULL);
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
718 }
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
719 else
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
720 {
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
721 char *tmp = g_strndup(rest, end - rest);
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
722 tm.tm_zone = tmp;
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
723 log = gaim_log_new(type, name, account, NULL, stamp, &tm);
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
724 g_free(tmp);
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
725 }
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
726 #else
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
727 time_t stamp = gaim_str_to_time(filename, FALSE, NULL, NULL, NULL);
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
728
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
729 log = gaim_log_new(type, name, account, NULL, stamp, NULL);
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
730 #endif
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
731
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
732 log->logger = logger;
10822
142911801a14 [gaim-migrate @ 12484]
Kevin Stange <kstange@pidgin.im>
parents: 10735
diff changeset
733 log->logger_data = data = g_new0(GaimLogCommonLoggerData, 1);
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
734 data->path = g_build_filename(path, filename, NULL);
11703
6b22ef099870 [gaim-migrate @ 13994]
Richard Laager <rlaager@pidgin.im>
parents: 11698
diff changeset
735 list = g_list_prepend(list, log);
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
736 }
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
737 }
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
738 g_dir_close(dir);
7447
4876aeb16c60 [gaim-migrate @ 8058]
Mark Doliner <markdoliner@pidgin.im>
parents: 7443
diff changeset
739 g_free(path);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
740 return list;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
741 }
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
742
13389
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
743 int gaim_log_common_total_sizer(GaimLogType type, const char *name, GaimAccount *account, const char *ext)
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
744 {
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
745 GDir *dir;
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
746 int size = 0;
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
747 const char *filename;
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
748 char *path;
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
749
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
750 if(!account)
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
751 return 0;
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
752
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
753 path = gaim_log_get_log_dir(type, name, account);
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
754 if (path == NULL)
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
755 return 0;
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
756
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
757 if (!(dir = g_dir_open(path, 0, NULL)))
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
758 {
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
759 g_free(path);
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
760 return 0;
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
761 }
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
762
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
763 while ((filename = g_dir_read_name(dir)))
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
764 {
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
765 if (gaim_str_has_suffix(filename, ext) &&
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
766 strlen(filename) >= (17 + strlen(ext)))
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
767 {
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
768 char *tmp = g_build_filename(path, filename, NULL);
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
769 struct stat st;
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
770 if (g_stat(tmp, &st))
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
771 {
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
772 gaim_debug_error("log", "Error stating log file: %s\n", tmp);
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
773 g_free(tmp);
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
774 continue;
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
775 }
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
776 g_free(tmp);
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
777 size += st.st_size;
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
778 }
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
779 }
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
780 g_dir_close(dir);
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
781 g_free(path);
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
782 return size;
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
783 }
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
784
10822
142911801a14 [gaim-migrate @ 12484]
Kevin Stange <kstange@pidgin.im>
parents: 10735
diff changeset
785 int gaim_log_common_sizer(GaimLog *log)
7556
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
786 {
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
787 struct stat st;
10822
142911801a14 [gaim-migrate @ 12484]
Kevin Stange <kstange@pidgin.im>
parents: 10735
diff changeset
788 GaimLogCommonLoggerData *data = log->logger_data;
7556
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
789
10589
4e10236e06d4 [gaim-migrate @ 11994]
Daniel Atallah <datallah@pidgin.im>
parents: 10577
diff changeset
790 if (!data->path || g_stat(data->path, &st))
7556
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
791 st.st_size = 0;
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
792
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
793 return st.st_size;
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
794 }
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
795
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
796 /* This will build log sets for all loggers that use the common logger
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
797 * functions because they use the same directory structure. */
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
798 static void log_get_log_sets_common(GHashTable *sets)
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
799 {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
800 gchar *log_path = g_build_filename(gaim_user_dir(), "logs", NULL);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
801 GDir *log_dir = g_dir_open(log_path, 0, NULL);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
802 const gchar *protocol;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
803
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
804 if (log_dir == NULL) {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
805 g_free(log_path);
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
806 return;
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
807 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
808
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
809 while ((protocol = g_dir_read_name(log_dir)) != NULL) {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
810 gchar *protocol_path = g_build_filename(log_path, protocol, NULL);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
811 GDir *protocol_dir;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
812 const gchar *username;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
813 gchar *protocol_unescaped;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
814 GList *account_iter;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
815 GList *accounts = NULL;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
816
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
817 if ((protocol_dir = g_dir_open(protocol_path, 0, NULL)) == NULL) {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
818 g_free(protocol_path);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
819 continue;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
820 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
821
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
822 /* Using g_strdup() to cover the one-in-a-million chance that a
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
823 * prpl's list_icon function uses gaim_unescape_filename(). */
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
824 protocol_unescaped = g_strdup(gaim_unescape_filename(protocol));
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
825
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
826 /* Find all the accounts for protocol. */
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
827 for (account_iter = gaim_accounts_get_all() ; account_iter != NULL ; account_iter = account_iter->next) {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
828 GaimPlugin *prpl;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
829 GaimPluginProtocolInfo *prpl_info;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
830
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
831 prpl = gaim_find_prpl(gaim_account_get_protocol_id((GaimAccount *)account_iter->data));
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
832 if (!prpl)
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
833 continue;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
834 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(prpl);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
835
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
836 if (!strcmp(protocol_unescaped, prpl_info->list_icon((GaimAccount *)account_iter->data, NULL)))
11703
6b22ef099870 [gaim-migrate @ 13994]
Richard Laager <rlaager@pidgin.im>
parents: 11698
diff changeset
837 accounts = g_list_prepend(accounts, account_iter->data);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
838 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
839 g_free(protocol_unescaped);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
840
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
841 while ((username = g_dir_read_name(protocol_dir)) != NULL) {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
842 gchar *username_path = g_build_filename(protocol_path, username, NULL);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
843 GDir *username_dir;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
844 const gchar *username_unescaped;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
845 GaimAccount *account = NULL;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
846 gchar *name;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
847
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
848 if ((username_dir = g_dir_open(username_path, 0, NULL)) == NULL) {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
849 g_free(username_path);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
850 continue;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
851 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
852
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
853 /* Find the account for username in the list of accounts for protocol. */
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
854 username_unescaped = gaim_unescape_filename(username);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
855 for (account_iter = g_list_first(accounts) ; account_iter != NULL ; account_iter = account_iter->next) {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
856 if (!strcmp(((GaimAccount *)account_iter->data)->username, username_unescaped)) {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
857 account = account_iter->data;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
858 break;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
859 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
860 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
861
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
862 /* Don't worry about the cast, name will point to dynamically allocated memory shortly. */
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
863 while ((name = (gchar *)g_dir_read_name(username_dir)) != NULL) {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
864 size_t len;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
865 GaimLogSet *set = g_new0(GaimLogSet, 1);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
866
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
867 /* Unescape the filename. */
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
868 name = g_strdup(gaim_unescape_filename(name));
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
869
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
870 /* Get the (possibly new) length of name. */
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
871 len = strlen(name);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
872
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
873 set->account = account;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
874 set->name = name;
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
875 set->normalized_name = g_strdup(gaim_normalize(account, name));
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
876
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
877 /* Chat for .chat or .system at the end of the name to determine the type. */
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
878 set->type = GAIM_LOG_IM;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
879 if (len > 7) {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
880 gchar *tmp = &name[len - 7];
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
881 if (!strcmp(tmp, ".system")) {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
882 set->type = GAIM_LOG_SYSTEM;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
883 *tmp = '\0';
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
884 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
885 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
886 if (len > 5) {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
887 gchar *tmp = &name[len - 5];
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
888 if (!strcmp(tmp, ".chat")) {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
889 set->type = GAIM_LOG_CHAT;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
890 *tmp = '\0';
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
891 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
892 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
893
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
894 /* Determine if this (account, name) combination exists as a buddy. */
11458
68f0a3698528 [gaim-migrate @ 13697]
Richard Laager <rlaager@pidgin.im>
parents: 11292
diff changeset
895 if (account != NULL)
68f0a3698528 [gaim-migrate @ 13697]
Richard Laager <rlaager@pidgin.im>
parents: 11292
diff changeset
896 set->buddy = (gaim_find_buddy(account, name) != NULL);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
897
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
898 log_add_log_set_to_hash(sets, set);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
899 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
900 g_free(username_path);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
901 g_dir_close(username_dir);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
902 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
903 g_free(protocol_path);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
904 g_dir_close(protocol_dir);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
905 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
906 g_free(log_path);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
907 g_dir_close(log_dir);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
908 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
909
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
910 #if 0 /* Maybe some other time. */
7443
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
911 /****************
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
912 ** XML LOGGER **
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
913 ****************/
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
914
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
915 static const char *str_from_msg_type (GaimMessageFlags type)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
916 {
7443
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
917
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
918 return "";
7443
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
919
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
920 }
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
921
7443
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
922 static void xml_logger_write(GaimLog *log,
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
923 GaimMessageFlags type,
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
924 const char *from, time_t time, const char *message)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
925 {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
926 char *xhtml = NULL;
10577
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
927
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
928 if (!log->logger_data) {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
929 /* 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
930 * 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
931 * 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
932 */
13163
2026e49825df [gaim-migrate @ 15525]
Richard Laager <rlaager@pidgin.im>
parents: 13161
diff changeset
933 struct tm *tm;
2026e49825df [gaim-migrate @ 15525]
Richard Laager <rlaager@pidgin.im>
parents: 13161
diff changeset
934 const char *tz;
13105
8f9c66e4af87 [gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents: 13078
diff changeset
935 const char *date;
9923
f3060096e964 [gaim-migrate @ 10815]
Daniel Atallah <datallah@pidgin.im>
parents: 9892
diff changeset
936 char *dir = gaim_log_get_log_dir(log->type, log->name, log->account);
13163
2026e49825df [gaim-migrate @ 15525]
Richard Laager <rlaager@pidgin.im>
parents: 13161
diff changeset
937 char *name;
13155
fa27cdf2986e [gaim-migrate @ 15517]
Richard Laager <rlaager@pidgin.im>
parents: 13120
diff changeset
938 char *filename;
10577
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
939
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
940 if (dir == NULL)
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
941 return;
f27149d1cddf [gaim-migrate @ 11971]
Richard Laager <rlaager@pidgin.im>
parents: 10173
diff changeset
942
13163
2026e49825df [gaim-migrate @ 15525]
Richard Laager <rlaager@pidgin.im>
parents: 13161
diff changeset
943 tm = localtime(&log->time);
2026e49825df [gaim-migrate @ 15525]
Richard Laager <rlaager@pidgin.im>
parents: 13161
diff changeset
944 tz = gaim_escape_filename(gaim_utf8_strftime("%Z", tm);
2026e49825df [gaim-migrate @ 15525]
Richard Laager <rlaager@pidgin.im>
parents: 13161
diff changeset
945 date = gaim_utf8_strftime("%Y-%m-%d.%H%M%S%z", tm);
2026e49825df [gaim-migrate @ 15525]
Richard Laager <rlaager@pidgin.im>
parents: 13161
diff changeset
946
2026e49825df [gaim-migrate @ 15525]
Richard Laager <rlaager@pidgin.im>
parents: 13161
diff changeset
947 name = g_strdup_printf("%s%s%s", date, tz, ext ? ext : "");
7443
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
948
7612
4f5211591dbd [gaim-migrate @ 8236]
Ethan Blanton <elb@pidgin.im>
parents: 7564
diff changeset
949 gaim_build_dir (dir, S_IRUSR | S_IWUSR | S_IXUSR);
7443
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
950
13163
2026e49825df [gaim-migrate @ 15525]
Richard Laager <rlaager@pidgin.im>
parents: 13161
diff changeset
951 filename = g_build_filename(dir, name, NULL);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
952 g_free(dir);
13163
2026e49825df [gaim-migrate @ 15525]
Richard Laager <rlaager@pidgin.im>
parents: 13161
diff changeset
953 g_free(name);
7443
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
954
10589
4e10236e06d4 [gaim-migrate @ 11994]
Daniel Atallah <datallah@pidgin.im>
parents: 10577
diff changeset
955 log->logger_data = g_fopen(filename, "a");
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
956 if (!log->logger_data) {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
957 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
958 g_free(filename);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
959 return;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
960 }
7564
baab99d239d8 [gaim-migrate @ 8180]
Nathan Walp <nwalp@pidgin.im>
parents: 7556
diff changeset
961 g_free(filename);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
962 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
963 "<?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
964
13105
8f9c66e4af87 [gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents: 13078
diff changeset
965 date = gaim_utf8_strftime("%Y-%m-%d %H:%M:%S", localtime(&log->time));
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
966 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
967 date, log->name, prpl);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
968 }
7443
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
969
9923
f3060096e964 [gaim-migrate @ 10815]
Daniel Atallah <datallah@pidgin.im>
parents: 9892
diff changeset
970 /* if we can't write to the file, give up before we hurt ourselves */
f3060096e964 [gaim-migrate @ 10815]
Daniel Atallah <datallah@pidgin.im>
parents: 9892
diff changeset
971 if(!data->file)
f3060096e964 [gaim-migrate @ 10815]
Daniel Atallah <datallah@pidgin.im>
parents: 9892
diff changeset
972 return;
f3060096e964 [gaim-migrate @ 10815]
Daniel Atallah <datallah@pidgin.im>
parents: 9892
diff changeset
973
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
974 date = log_get_timestamp(log, time);
12692
249f9d844f6f [gaim-migrate @ 15035]
Douglas Thrift <douglas@douglasthrift.net>
parents: 12574
diff changeset
975
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
976 gaim_markup_html_to_xhtml(message, &xhtml, NULL);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
977 if (from)
7443
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
978 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
979 str_from_msg_type(type),
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
980 type & GAIM_MESSAGE_SEND ? "direction='sent'" :
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
981 type & GAIM_MESSAGE_RECV ? "direction='received'" : "",
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
982 from, date, xhtml);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
983 else
7443
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
984 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
985 str_from_msg_type(type),
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
986 type & GAIM_MESSAGE_SEND ? "direction='sent'" :
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
987 type & GAIM_MESSAGE_RECV ? "direction='received'" : "",
7443
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
988 date, xhtml):
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
989 fflush(log->logger_data);
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
990 g_free(date);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
991 g_free(xhtml);
7443
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
992 }
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
993
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
994 static void xml_logger_finalize(GaimLog *log)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
995 {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
996 if (log->logger_data) {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
997 fprintf(log->logger_data, "</conversation>\n");
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
998 fclose(log->logger_data);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
999 log->logger_data = NULL;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1000 }
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1001 }
7443
16eb71497755 [gaim-migrate @ 8048]
Luke Schierer <lschiere@pidgin.im>
parents: 7442
diff changeset
1002
8898
85f5615bc27e [gaim-migrate @ 9667]
Mark Doliner <markdoliner@pidgin.im>
parents: 8635
diff changeset
1003 static GList *xml_logger_list(GaimLogType type, const char *sn, GaimAccount *account)
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1004 {
10822
142911801a14 [gaim-migrate @ 12484]
Kevin Stange <kstange@pidgin.im>
parents: 10735
diff changeset
1005 return gaim_log_common_lister(type, sn, account, ".xml", &xml_logger);
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1006 }
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1007
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1008 static GaimLogLogger xml_logger = {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1009 N_("XML"), "xml",
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1010 NULL,
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1011 xml_logger_write,
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1012 xml_logger_finalize,
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1013 xml_logger_list,
8096
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
1014 NULL,
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1015 NULL,
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1016 NULL
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1017 };
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1018 #endif
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5560
diff changeset
1019
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1020 /****************************
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1021 ** HTML LOGGER *************
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1022 ****************************/
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1023
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1024 static gsize html_logger_write(GaimLog *log, GaimMessageFlags type,
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
1025 const char *from, time_t time, const char *message)
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1026 {
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
1027 char *msg_fixed;
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1028 char *date;
13514
735953c0929d [gaim-migrate @ 15889]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 13513
diff changeset
1029 char *header;
9613
cd81e0c76ec0 [gaim-migrate @ 10456]
Kevin Stange <kstange@pidgin.im>
parents: 9592
diff changeset
1030 GaimPlugin *plugin = gaim_find_prpl(gaim_account_get_protocol_id(log->account));
10822
142911801a14 [gaim-migrate @ 12484]
Kevin Stange <kstange@pidgin.im>
parents: 10735
diff changeset
1031 GaimLogCommonLoggerData *data = log->logger_data;
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1032 gsize written = 0;
9613
cd81e0c76ec0 [gaim-migrate @ 10456]
Kevin Stange <kstange@pidgin.im>
parents: 9592
diff changeset
1033
7618
b5ecf6d2c93b [gaim-migrate @ 8242]
Nathan Walp <nwalp@pidgin.im>
parents: 7616
diff changeset
1034 if(!data) {
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
1035 const char *prpl =
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
1036 GAIM_PLUGIN_PROTOCOL_INFO(plugin)->list_icon(log->account, NULL);
13105
8f9c66e4af87 [gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents: 13078
diff changeset
1037 const char *date;
11292
13068c68def6 [gaim-migrate @ 13492]
Richard Laager <rlaager@pidgin.im>
parents: 11256
diff changeset
1038 gaim_log_common_writer(log, ".html");
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1039
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
1040 data = log->logger_data;
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1041
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
1042 /* if we can't write to the file, give up before we hurt ourselves */
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
1043 if(!data->file)
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1044 return 0;
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1045
13120
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
1046 date = gaim_date_format_full(localtime(&log->time));
13105
8f9c66e4af87 [gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents: 13078
diff changeset
1047
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1048 written += fprintf(data->file, "<html><head>");
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1049 written += fprintf(data->file, "<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">");
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1050 written += fprintf(data->file, "<title>");
13509
38ebac941c40 [gaim-migrate @ 15884]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13474
diff changeset
1051 if (log->type == GAIM_LOG_SYSTEM)
13514
735953c0929d [gaim-migrate @ 15889]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 13513
diff changeset
1052 header = g_strdup_printf("System log for account %s (%s) connected at %s",
13509
38ebac941c40 [gaim-migrate @ 15884]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13474
diff changeset
1053 gaim_account_get_username(log->account), prpl, date);
38ebac941c40 [gaim-migrate @ 15884]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13474
diff changeset
1054 else
13514
735953c0929d [gaim-migrate @ 15889]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 13513
diff changeset
1055 header = g_strdup_printf("Conversation with %s at %s on %s (%s)",
13509
38ebac941c40 [gaim-migrate @ 15884]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13474
diff changeset
1056 log->name, date, gaim_account_get_username(log->account), prpl);
38ebac941c40 [gaim-migrate @ 15884]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13474
diff changeset
1057
13514
735953c0929d [gaim-migrate @ 15889]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 13513
diff changeset
1058 written += fprintf(data->file, "%s", header);
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1059 written += fprintf(data->file, "</title></head><body>");
13509
38ebac941c40 [gaim-migrate @ 15884]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13474
diff changeset
1060 written += fprintf(data->file, "<h3>%s</h3>\n", header);
13514
735953c0929d [gaim-migrate @ 15889]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 13513
diff changeset
1061 g_free(header);
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1062 }
7623
ea9fc2f9c46b [gaim-migrate @ 8247]
Nathan Walp <nwalp@pidgin.im>
parents: 7618
diff changeset
1063
9892
281f62b8824e [gaim-migrate @ 10780]
Luke Schierer <lschiere@pidgin.im>
parents: 9883
diff changeset
1064 /* if we can't write to the file, give up before we hurt ourselves */
281f62b8824e [gaim-migrate @ 10780]
Luke Schierer <lschiere@pidgin.im>
parents: 9883
diff changeset
1065 if(!data->file)
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1066 return 0;
9892
281f62b8824e [gaim-migrate @ 10780]
Luke Schierer <lschiere@pidgin.im>
parents: 9883
diff changeset
1067
7882
7d95549fd6db [gaim-migrate @ 8536]
Nathan Walp <nwalp@pidgin.im>
parents: 7791
diff changeset
1068 gaim_markup_html_to_xhtml(message, &msg_fixed, NULL);
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1069 date = log_get_timestamp(log, time);
7882
7d95549fd6db [gaim-migrate @ 8536]
Nathan Walp <nwalp@pidgin.im>
parents: 7791
diff changeset
1070
8577
64f25a17f8e4 [gaim-migrate @ 9326]
Nathan Walp <nwalp@pidgin.im>
parents: 8573
diff changeset
1071 if(log->type == GAIM_LOG_SYSTEM){
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1072 written += fprintf(data->file, "---- %s @ %s ----<br/>\n", msg_fixed, date);
8577
64f25a17f8e4 [gaim-migrate @ 9326]
Nathan Walp <nwalp@pidgin.im>
parents: 8573
diff changeset
1073 } else {
64f25a17f8e4 [gaim-migrate @ 9326]
Nathan Walp <nwalp@pidgin.im>
parents: 8573
diff changeset
1074 if (type & GAIM_MESSAGE_SYSTEM)
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1075 written += fprintf(data->file, "<font size=\"2\">(%s)</font><b> %s</b><br/>\n", date, msg_fixed);
13069
37b879f161f4 [gaim-migrate @ 15431]
Richard Laager <rlaager@pidgin.im>
parents: 13068
diff changeset
1076 else if (type & GAIM_MESSAGE_ERROR)
37b879f161f4 [gaim-migrate @ 15431]
Richard Laager <rlaager@pidgin.im>
parents: 13068
diff changeset
1077 written += fprintf(data->file, "<font color=\"#FF0000\"><font size=\"2\">(%s)</font><b> %s</b></font><br/>\n", date, msg_fixed);
8577
64f25a17f8e4 [gaim-migrate @ 9326]
Nathan Walp <nwalp@pidgin.im>
parents: 8573
diff changeset
1078 else if (type & GAIM_MESSAGE_WHISPER)
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1079 written += fprintf(data->file, "<font color=\"#6C2585\"><font size=\"2\">(%s)</font><b> %s:</b></font> %s<br/>\n",
8577
64f25a17f8e4 [gaim-migrate @ 9326]
Nathan Walp <nwalp@pidgin.im>
parents: 8573
diff changeset
1080 date, from, msg_fixed);
64f25a17f8e4 [gaim-migrate @ 9326]
Nathan Walp <nwalp@pidgin.im>
parents: 8573
diff changeset
1081 else if (type & GAIM_MESSAGE_AUTO_RESP) {
64f25a17f8e4 [gaim-migrate @ 9326]
Nathan Walp <nwalp@pidgin.im>
parents: 8573
diff changeset
1082 if (type & GAIM_MESSAGE_SEND)
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1083 written += fprintf(data->file, _("<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-REPLY&gt;:</b></font> %s<br/>\n"), date, from, msg_fixed);
8577
64f25a17f8e4 [gaim-migrate @ 9326]
Nathan Walp <nwalp@pidgin.im>
parents: 8573
diff changeset
1084 else if (type & GAIM_MESSAGE_RECV)
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1085 written += fprintf(data->file, _("<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-REPLY&gt;:</b></font> %s<br/>\n"), date, from, msg_fixed);
8577
64f25a17f8e4 [gaim-migrate @ 9326]
Nathan Walp <nwalp@pidgin.im>
parents: 8573
diff changeset
1086 } else if (type & GAIM_MESSAGE_RECV) {
64f25a17f8e4 [gaim-migrate @ 9326]
Nathan Walp <nwalp@pidgin.im>
parents: 8573
diff changeset
1087 if(gaim_message_meify(msg_fixed, -1))
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1088 written += fprintf(data->file, "<font color=\"#062585\"><font size=\"2\">(%s)</font> <b>***%s</b></font> %s<br/>\n",
10645
f00e65bebc8b [gaim-migrate @ 12157]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
1089 date, from, msg_fixed);
8577
64f25a17f8e4 [gaim-migrate @ 9326]
Nathan Walp <nwalp@pidgin.im>
parents: 8573
diff changeset
1090 else
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1091 written += fprintf(data->file, "<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s:</b></font> %s<br/>\n",
10645
f00e65bebc8b [gaim-migrate @ 12157]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
1092 date, from, msg_fixed);
8577
64f25a17f8e4 [gaim-migrate @ 9326]
Nathan Walp <nwalp@pidgin.im>
parents: 8573
diff changeset
1093 } else if (type & GAIM_MESSAGE_SEND) {
64f25a17f8e4 [gaim-migrate @ 9326]
Nathan Walp <nwalp@pidgin.im>
parents: 8573
diff changeset
1094 if(gaim_message_meify(msg_fixed, -1))
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1095 written += fprintf(data->file, "<font color=\"#062585\"><font size=\"2\">(%s)</font> <b>***%s</b></font> %s<br/>\n",
10645
f00e65bebc8b [gaim-migrate @ 12157]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
1096 date, from, msg_fixed);
8577
64f25a17f8e4 [gaim-migrate @ 9326]
Nathan Walp <nwalp@pidgin.im>
parents: 8573
diff changeset
1097 else
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1098 written += fprintf(data->file, "<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s:</b></font> %s<br/>\n",
10645
f00e65bebc8b [gaim-migrate @ 12157]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
1099 date, from, msg_fixed);
13069
37b879f161f4 [gaim-migrate @ 15431]
Richard Laager <rlaager@pidgin.im>
parents: 13068
diff changeset
1100 } else {
37b879f161f4 [gaim-migrate @ 15431]
Richard Laager <rlaager@pidgin.im>
parents: 13068
diff changeset
1101 gaim_debug_error("log", "Unhandled message type.");
37b879f161f4 [gaim-migrate @ 15431]
Richard Laager <rlaager@pidgin.im>
parents: 13068
diff changeset
1102 written += fprintf(data->file, "<font size=\"2\">(%s)</font><b> %s:</b></font> %s<br/>\n",
13520
f89ab3c41f4b [gaim-migrate @ 15895]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 13514
diff changeset
1103 date, from, msg_fixed);
8577
64f25a17f8e4 [gaim-migrate @ 9326]
Nathan Walp <nwalp@pidgin.im>
parents: 8573
diff changeset
1104 }
7564
baab99d239d8 [gaim-migrate @ 8180]
Nathan Walp <nwalp@pidgin.im>
parents: 7556
diff changeset
1105 }
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1106 g_free(date);
7882
7d95549fd6db [gaim-migrate @ 8536]
Nathan Walp <nwalp@pidgin.im>
parents: 7791
diff changeset
1107 g_free(msg_fixed);
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1108 fflush(data->file);
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1109
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1110 return written;
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1111 }
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1112
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1113 static void html_logger_finalize(GaimLog *log)
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1114 {
10822
142911801a14 [gaim-migrate @ 12484]
Kevin Stange <kstange@pidgin.im>
parents: 10735
diff changeset
1115 GaimLogCommonLoggerData *data = log->logger_data;
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1116 if (data) {
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1117 if(data->file) {
12881
d4db623e3d8c [gaim-migrate @ 15233]
Richard Laager <rlaager@pidgin.im>
parents: 12834
diff changeset
1118 fprintf(data->file, "</body></html>\n");
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1119 fclose(data->file);
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1120 }
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1121 g_free(data->path);
7752
9f33d410e524 [gaim-migrate @ 8397]
Ethan Blanton <elb@pidgin.im>
parents: 7685
diff changeset
1122 g_free(data);
7463
32338ddb9a7d [gaim-migrate @ 8076]
Nathan Walp <nwalp@pidgin.im>
parents: 7462
diff changeset
1123 }
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1124 }
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1125
8898
85f5615bc27e [gaim-migrate @ 9667]
Mark Doliner <markdoliner@pidgin.im>
parents: 8635
diff changeset
1126 static GList *html_logger_list(GaimLogType type, const char *sn, GaimAccount *account)
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1127 {
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
1128 return gaim_log_common_lister(type, sn, account, ".html", html_logger);
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1129 }
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1130
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
1131 static GList *html_logger_list_syslog(GaimAccount *account)
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
1132 {
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
1133 return gaim_log_common_lister(GAIM_LOG_SYSTEM, ".system", account, ".html", html_logger);
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
1134 }
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
1135
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1136 static char *html_logger_read(GaimLog *log, GaimLogReadFlags *flags)
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1137 {
12958
706645a0b944 [gaim-migrate @ 15311]
Richard Laager <rlaager@pidgin.im>
parents: 12881
diff changeset
1138 char *read;
10822
142911801a14 [gaim-migrate @ 12484]
Kevin Stange <kstange@pidgin.im>
parents: 10735
diff changeset
1139 GaimLogCommonLoggerData *data = log->logger_data;
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1140 *flags = GAIM_LOG_READ_NO_NEWLINE;
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1141 if (!data || !data->path)
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1142 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
1143 if (g_file_get_contents(data->path, &read, NULL, NULL)) {
12958
706645a0b944 [gaim-migrate @ 15311]
Richard Laager <rlaager@pidgin.im>
parents: 12881
diff changeset
1144 char *minus_header = strchr(read, '\n');
706645a0b944 [gaim-migrate @ 15311]
Richard Laager <rlaager@pidgin.im>
parents: 12881
diff changeset
1145
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1146 if (!minus_header)
12958
706645a0b944 [gaim-migrate @ 15311]
Richard Laager <rlaager@pidgin.im>
parents: 12881
diff changeset
1147 return read;
706645a0b944 [gaim-migrate @ 15311]
Richard Laager <rlaager@pidgin.im>
parents: 12881
diff changeset
1148
706645a0b944 [gaim-migrate @ 15311]
Richard Laager <rlaager@pidgin.im>
parents: 12881
diff changeset
1149 minus_header = g_strdup(minus_header + 1);
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1150 g_free(read);
12958
706645a0b944 [gaim-migrate @ 15311]
Richard Laager <rlaager@pidgin.im>
parents: 12881
diff changeset
1151
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1152 return minus_header;
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1153 }
8578
694cb265241b [gaim-migrate @ 9327]
Nathan Walp <nwalp@pidgin.im>
parents: 8577
diff changeset
1154 return g_strdup_printf(_("<font color=\"red\"><b>Could not read file: %s</b></font>"), data->path);
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1155 }
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1156
13389
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
1157 static int html_logger_total_size(GaimLogType type, const char *name, GaimAccount *account)
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
1158 {
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
1159 return gaim_log_common_total_sizer(type, name, account, ".html");
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
1160 }
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1161
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1162
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1163 /****************************
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1164 ** PLAIN TEXT LOGGER *******
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1165 ****************************/
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1166
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1167 static gsize txt_logger_write(GaimLog *log,
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
1168 GaimMessageFlags type,
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
1169 const char *from, time_t time, const char *message)
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1170 {
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1171 char *date;
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
1172 GaimPlugin *plugin = gaim_find_prpl(gaim_account_get_protocol_id(log->account));
10822
142911801a14 [gaim-migrate @ 12484]
Kevin Stange <kstange@pidgin.im>
parents: 10735
diff changeset
1173 GaimLogCommonLoggerData *data = log->logger_data;
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
1174 char *stripped = NULL;
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
1175
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1176 gsize written = 0;
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1177
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
1178 if (data == NULL) {
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1179 /* 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
1180 * 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
1181 * 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
1182 */
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
1183 const char *prpl =
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
1184 GAIM_PLUGIN_PROTOCOL_INFO(plugin)->list_icon(log->account, NULL);
11292
13068c68def6 [gaim-migrate @ 13492]
Richard Laager <rlaager@pidgin.im>
parents: 11256
diff changeset
1185 gaim_log_common_writer(log, ".txt");
8898
85f5615bc27e [gaim-migrate @ 9667]
Mark Doliner <markdoliner@pidgin.im>
parents: 8635
diff changeset
1186
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
1187 data = log->logger_data;
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1188
9763
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
1189 /* if we can't write to the file, give up before we hurt ourselves */
b206758cab4b [gaim-migrate @ 10631]
Ka-Hing Cheung <khc@pidgin.im>
parents: 9677
diff changeset
1190 if(!data->file)
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1191 return 0;
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1192
13509
38ebac941c40 [gaim-migrate @ 15884]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13474
diff changeset
1193 if (log->type == GAIM_LOG_SYSTEM)
38ebac941c40 [gaim-migrate @ 15884]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13474
diff changeset
1194 written += fprintf(data->file, "System log for account %s (%s) connected at %s\n",
38ebac941c40 [gaim-migrate @ 15884]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13474
diff changeset
1195 gaim_account_get_username(log->account), prpl,
38ebac941c40 [gaim-migrate @ 15884]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13474
diff changeset
1196 gaim_date_format_full(localtime(&log->time)));
38ebac941c40 [gaim-migrate @ 15884]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13474
diff changeset
1197 else
38ebac941c40 [gaim-migrate @ 15884]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13474
diff changeset
1198 written += fprintf(data->file, "Conversation with %s at %s on %s (%s)\n",
38ebac941c40 [gaim-migrate @ 15884]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13474
diff changeset
1199 log->name, gaim_date_format_full(localtime(&log->time)),
38ebac941c40 [gaim-migrate @ 15884]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13474
diff changeset
1200 gaim_account_get_username(log->account), prpl);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1201 }
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1202
7623
ea9fc2f9c46b [gaim-migrate @ 8247]
Nathan Walp <nwalp@pidgin.im>
parents: 7618
diff changeset
1203 /* 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
1204 if(!data->file)
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1205 return 0;
7623
ea9fc2f9c46b [gaim-migrate @ 8247]
Nathan Walp <nwalp@pidgin.im>
parents: 7618
diff changeset
1206
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1207 stripped = gaim_markup_strip_html(message);
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1208 date = log_get_timestamp(log, time);
12692
249f9d844f6f [gaim-migrate @ 15035]
Douglas Thrift <douglas@douglasthrift.net>
parents: 12574
diff changeset
1209
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1210 if(log->type == GAIM_LOG_SYSTEM){
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1211 written += fprintf(data->file, "---- %s @ %s ----\n", stripped, date);
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1212 } else {
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1213 if (type & GAIM_MESSAGE_SEND ||
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1214 type & GAIM_MESSAGE_RECV) {
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1215 if (type & GAIM_MESSAGE_AUTO_RESP) {
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1216 written += fprintf(data->file, _("(%s) %s <AUTO-REPLY>: %s\n"), date,
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1217 from, stripped);
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1218 } else {
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1219 if(gaim_message_meify(stripped, -1))
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1220 written += fprintf(data->file, "(%s) ***%s %s\n", date, from,
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1221 stripped);
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1222 else
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1223 written += fprintf(data->file, "(%s) %s: %s\n", date, from,
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1224 stripped);
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1225 }
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1226 } else if (type & GAIM_MESSAGE_SYSTEM)
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1227 written += fprintf(data->file, "(%s) %s\n", date, stripped);
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1228 else if (type & GAIM_MESSAGE_NO_LOG) {
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1229 /* This shouldn't happen */
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1230 g_free(stripped);
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1231 return written;
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1232 } else if (type & GAIM_MESSAGE_WHISPER)
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1233 written += fprintf(data->file, "(%s) *%s* %s", date, from, stripped);
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1234 else
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1235 written += fprintf(data->file, "(%s) %s%s %s\n", date, from ? from : "",
12737
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1236 from ? ":" : "", stripped);
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1237 }
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1238 g_free(date);
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1239 g_free(stripped);
e1300804318e [gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents: 12692
diff changeset
1240 fflush(data->file);
13059
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1241
1d6ae30f6a6d [gaim-migrate @ 15421]
Nathan Walp <nwalp@pidgin.im>
parents: 12969
diff changeset
1242 return written;
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1243 }
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1244
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1245 static void txt_logger_finalize(GaimLog *log)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1246 {
10822
142911801a14 [gaim-migrate @ 12484]
Kevin Stange <kstange@pidgin.im>
parents: 10735
diff changeset
1247 GaimLogCommonLoggerData *data = log->logger_data;
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1248 if (data) {
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1249 if(data->file)
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1250 fclose(data->file);
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1251 if(data->path)
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1252 g_free(data->path);
7752
9f33d410e524 [gaim-migrate @ 8397]
Ethan Blanton <elb@pidgin.im>
parents: 7685
diff changeset
1253 g_free(data);
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1254 }
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1255 }
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1256
8898
85f5615bc27e [gaim-migrate @ 9667]
Mark Doliner <markdoliner@pidgin.im>
parents: 8635
diff changeset
1257 static GList *txt_logger_list(GaimLogType type, const char *sn, GaimAccount *account)
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1258 {
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
1259 return gaim_log_common_lister(type, sn, account, ".txt", txt_logger);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1260 }
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1261
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
1262 static GList *txt_logger_list_syslog(GaimAccount *account)
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
1263 {
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
1264 return gaim_log_common_lister(GAIM_LOG_SYSTEM, ".system", account, ".txt", txt_logger);
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
1265 }
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8517
diff changeset
1266
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1267 static char *txt_logger_read(GaimLog *log, GaimLogReadFlags *flags)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1268 {
8517
a6647dc5baee [gaim-migrate @ 9256]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8408
diff changeset
1269 char *read, *minus_header, *minus_header2;
10822
142911801a14 [gaim-migrate @ 12484]
Kevin Stange <kstange@pidgin.im>
parents: 10735
diff changeset
1270 GaimLogCommonLoggerData *data = log->logger_data;
7457
ee2680e31bad [gaim-migrate @ 8070]
Nathan Walp <nwalp@pidgin.im>
parents: 7453
diff changeset
1271 *flags = 0;
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1272 if (!data || !data->path)
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1273 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
1274 if (g_file_get_contents(data->path, &read, NULL, NULL)) {
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1275 minus_header = strchr(read, '\n');
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1276 if (!minus_header)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1277 minus_header = g_strdup(read);
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1278 else
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1279 minus_header = g_strdup(minus_header + 1);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1280 g_free(read);
10732
5e314ab498bf [gaim-migrate @ 12334]
Richard Laager <rlaager@pidgin.im>
parents: 10645
diff changeset
1281 minus_header2 = g_markup_escape_text(minus_header, -1);
8517
a6647dc5baee [gaim-migrate @ 9256]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8408
diff changeset
1282 g_free(minus_header);
13358
9504caa8cb7f [gaim-migrate @ 15730]
Richard Laager <rlaager@pidgin.im>
parents: 13334
diff changeset
1283 read = gaim_markup_linkify(minus_header2);
9504caa8cb7f [gaim-migrate @ 15730]
Richard Laager <rlaager@pidgin.im>
parents: 13334
diff changeset
1284 g_free(minus_header2);
9504caa8cb7f [gaim-migrate @ 15730]
Richard Laager <rlaager@pidgin.im>
parents: 13334
diff changeset
1285 return read;
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1286 }
8578
694cb265241b [gaim-migrate @ 9327]
Nathan Walp <nwalp@pidgin.im>
parents: 8577
diff changeset
1287 return g_strdup_printf(_("<font color=\"red\"><b>Could not read file: %s</b></font>"), data->path);
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1288 }
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1289
13389
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
1290 static int txt_logger_total_size(GaimLogType type, const char *name, GaimAccount *account)
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
1291 {
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
1292 return gaim_log_common_total_sizer(type, name, account, ".txt");
27cf7d84dfd1 [gaim-migrate @ 15761]
Richard Laager <rlaager@pidgin.im>
parents: 13358
diff changeset
1293 }
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
1294
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1295
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1296 /****************
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1297 * OLD LOGGER ***
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1298 ****************/
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1299
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1300 /* 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
1301 * old logs in the log viewer transparently.
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1302 */
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1303
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1304 struct old_logger_data {
7764
b1bb74f2f79d [gaim-migrate @ 8409]
Ethan Blanton <elb@pidgin.im>
parents: 7761
diff changeset
1305 GaimStringref *pathref;
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1306 int offset;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1307 int length;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1308 };
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1309
8898
85f5615bc27e [gaim-migrate @ 9667]
Mark Doliner <markdoliner@pidgin.im>
parents: 8635
diff changeset
1310 static GList *old_logger_list(GaimLogType type, const char *sn, GaimAccount *account)
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1311 {
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1312 char *logfile = g_strdup_printf("%s.log", gaim_normalize(account, sn));
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1313 char *pathstr = g_build_filename(gaim_user_dir(), "logs", logfile, NULL);
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1314 GaimStringref *pathref = gaim_stringref_new(pathstr);
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1315 struct stat st;
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1316 time_t log_last_modified;
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1317 FILE *index;
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1318 FILE *file;
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1319 int index_fd;
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1320 char *index_tmp;
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1321 char buf[BUF_LONG];
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1322 struct tm tm;
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1323 char month[4];
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1324 struct old_logger_data *data = NULL;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1325 char *newlog;
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1326 int logfound = 0;
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1327 int lastoff = 0;
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1328 int newlen;
7791
71b4031cdbda [gaim-migrate @ 8437]
Nathan Walp <nwalp@pidgin.im>
parents: 7770
diff changeset
1329 time_t lasttime = 0;
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1330
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1331 GaimLog *log = NULL;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1332 GList *list = NULL;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1333
7473
881da47ca83f [gaim-migrate @ 8086]
Mark Doliner <markdoliner@pidgin.im>
parents: 7472
diff changeset
1334 g_free(logfile);
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1335
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1336 if (g_stat(gaim_stringref_value(pathref), &st))
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1337 {
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1338 gaim_stringref_unref(pathref);
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1339 g_free(pathstr);
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1340 return NULL;
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1341 }
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1342 else
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1343 log_last_modified = st.st_mtime;
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1344
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1345 /* Change the .log extension to .idx */
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1346 strcpy(pathstr + strlen(pathstr) - 3, "idx");
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1347
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1348 if (g_stat(pathstr, &st) == 0)
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1349 {
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1350 if (st.st_mtime < log_last_modified)
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1351 {
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1352 gaim_debug_warning("log", "Index \"%s\" exists, but is older than the log.\n", pathstr);
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1353 }
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1354 else
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1355 {
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1356 /* The index file exists and is at least as new as the log, so open it. */
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1357 if (!(index = g_fopen(pathstr, "rb")))
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1358 {
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1359 gaim_debug_error("log", "Failed to open index file \"%s\" for reading: %s\n",
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1360 pathstr, strerror(errno));
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1361
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1362 /* Fall through so that we'll parse the log file. */
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1363 }
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1364 else
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1365 {
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1366 gaim_debug_info("log", "Using index: %s\n", pathstr);
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1367 g_free(pathstr);
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1368 while (fgets(buf, BUF_LONG, index))
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1369 {
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1370 unsigned long idx_time;
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1371 if (sscanf(buf, "%d\t%d\t%lu", &lastoff, &newlen, &idx_time) == 3)
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1372 {
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1373 log = gaim_log_new(GAIM_LOG_IM, sn, account, NULL, -1, NULL);
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1374 log->logger = old_logger;
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1375 log->time = (time_t)idx_time;
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1376 data = g_new0(struct old_logger_data, 1);
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1377 data->offset = lastoff;
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1378 data->length = newlen;
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1379 data->pathref = gaim_stringref_ref(pathref);
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1380 log->logger_data = data;
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1381 list = g_list_prepend(list, log);
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1382 }
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1383 }
13469
6c9da180e40d [gaim-migrate @ 15843]
Richard Laager <rlaager@pidgin.im>
parents: 13412
diff changeset
1384 fclose(index);
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1385
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1386 return list;
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1387 }
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1388 }
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1389 }
7473
881da47ca83f [gaim-migrate @ 8086]
Mark Doliner <markdoliner@pidgin.im>
parents: 7472
diff changeset
1390
10589
4e10236e06d4 [gaim-migrate @ 11994]
Daniel Atallah <datallah@pidgin.im>
parents: 10577
diff changeset
1391 if (!(file = g_fopen(gaim_stringref_value(pathref), "rb"))) {
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1392 gaim_debug_error("log", "Failed to open log file \"%s\" for reading: %s\n",
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1393 gaim_stringref_value(pathref), strerror(errno));
7764
b1bb74f2f79d [gaim-migrate @ 8409]
Ethan Blanton <elb@pidgin.im>
parents: 7761
diff changeset
1394 gaim_stringref_unref(pathref);
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1395 g_free(pathstr);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1396 return NULL;
7447
4876aeb16c60 [gaim-migrate @ 8058]
Mark Doliner <markdoliner@pidgin.im>
parents: 7443
diff changeset
1397 }
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1398
13473
8fe2387d215b [gaim-migrate @ 15848]
Richard Laager <rlaager@pidgin.im>
parents: 13472
diff changeset
1399 index_tmp = g_strdup_printf("%s.XXXXXX", pathstr);
8fe2387d215b [gaim-migrate @ 15848]
Richard Laager <rlaager@pidgin.im>
parents: 13472
diff changeset
1400 if ((index_fd = g_mkstemp(index_tmp)) == -1) {
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1401 gaim_debug_error("log", "Failed to open index temp file: %s\n",
13473
8fe2387d215b [gaim-migrate @ 15848]
Richard Laager <rlaager@pidgin.im>
parents: 13472
diff changeset
1402 strerror(errno));
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1403 g_free(pathstr);
13473
8fe2387d215b [gaim-migrate @ 15848]
Richard Laager <rlaager@pidgin.im>
parents: 13472
diff changeset
1404 g_free(index_tmp);
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1405 index = NULL;
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1406 } else {
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1407 if ((index = fdopen(index_fd, "wb")) == NULL)
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1408 {
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1409 gaim_debug_error("log", "Failed to fdopen() index temp file: %s\n",
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1410 strerror(errno));
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1411 close(index_fd);
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1412 if (index_tmp != NULL)
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1413 {
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1414 g_unlink(index_tmp);
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1415 g_free(index_tmp);
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1416 }
13412
67ef3053ef45 [gaim-migrate @ 15786]
Richard Laager <rlaager@pidgin.im>
parents: 13407
diff changeset
1417 g_free(pathstr);
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1418 }
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1419 }
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1420
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1421 while (fgets(buf, BUF_LONG, file)) {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1422 if ((newlog = strstr(buf, "---- New C"))) {
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1423 int length;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1424 int offset;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1425 char convostart[32];
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1426 char *temp = strchr(buf, '@');
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1427
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1428 if (temp == NULL || strlen(temp) < 2)
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1429 continue;
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1430
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1431 temp++;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1432 length = strcspn(temp, "-");
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1433 if (length > 31) length = 31;
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1434
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1435 offset = ftell(file);
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1436
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1437 if (logfound) {
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1438 newlen = offset - lastoff - length;
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1439 if(strstr(buf, "----</H3><BR>")) {
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1440 newlen -=
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1441 sizeof("<HR><BR><H3 Align=Center> ---- New Conversation @ ") +
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1442 sizeof("----</H3><BR>") - 2;
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1443 } else {
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1444 newlen -=
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1445 sizeof("---- New Conversation @ ") + sizeof("----") - 2;
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1446 }
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1447
7461
964030541dc0 [gaim-migrate @ 8074]
Nathan Walp <nwalp@pidgin.im>
parents: 7457
diff changeset
1448 if(strchr(buf, '\r'))
7770
cb9d21d75531 [gaim-migrate @ 8415]
Kevin Stange <kstange@pidgin.im>
parents: 7764
diff changeset
1449 newlen--;
7461
964030541dc0 [gaim-migrate @ 8074]
Nathan Walp <nwalp@pidgin.im>
parents: 7457
diff changeset
1450
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1451 if (newlen != 0) {
13120
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
1452 log = gaim_log_new(GAIM_LOG_IM, sn, account, NULL, -1, NULL);
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
1453 log->logger = old_logger;
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1454 log->time = lasttime;
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1455 data = g_new0(struct old_logger_data, 1);
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1456 data->offset = lastoff;
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1457 data->length = newlen;
7764
b1bb74f2f79d [gaim-migrate @ 8409]
Ethan Blanton <elb@pidgin.im>
parents: 7761
diff changeset
1458 data->pathref = gaim_stringref_ref(pathref);
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1459 log->logger_data = data;
11703
6b22ef099870 [gaim-migrate @ 13994]
Richard Laager <rlaager@pidgin.im>
parents: 11698
diff changeset
1460 list = g_list_prepend(list, log);
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1461
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1462 /* XXX: There is apparently Is there a proper way to print a time_t? */
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1463 if (index != NULL)
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1464 fprintf(index, "%d\t%d\t%lu\n", data->offset, data->length, (unsigned long)log->time);
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1465 }
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1466 }
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1467
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1468 logfound = 1;
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1469 lastoff = offset;
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1470
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1471 g_snprintf(convostart, length, "%s", temp);
7676
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
1472 sscanf(convostart, "%*s %s %d %d:%d:%d %d",
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
1473 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
1474 /* Ugly hack, in case current locale is not English */
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
1475 if (strcmp(month, "Jan") == 0) {
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
1476 tm.tm_mon= 0;
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
1477 } else if (strcmp(month, "Feb") == 0) {
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
1478 tm.tm_mon = 1;
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
1479 } else if (strcmp(month, "Mar") == 0) {
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
1480 tm.tm_mon = 2;
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
1481 } else if (strcmp(month, "Apr") == 0) {
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
1482 tm.tm_mon = 3;
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
1483 } else if (strcmp(month, "May") == 0) {
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
1484 tm.tm_mon = 4;
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
1485 } else if (strcmp(month, "Jun") == 0) {
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
1486 tm.tm_mon = 5;
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
1487 } else if (strcmp(month, "Jul") == 0) {
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
1488 tm.tm_mon = 6;
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
1489 } else if (strcmp(month, "Aug") == 0) {
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
1490 tm.tm_mon = 7;
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
1491 } else if (strcmp(month, "Sep") == 0) {
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
1492 tm.tm_mon = 8;
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
1493 } else if (strcmp(month, "Oct") == 0) {
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
1494 tm.tm_mon = 9;
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
1495 } else if (strcmp(month, "Nov") == 0) {
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
1496 tm.tm_mon = 10;
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
1497 } else if (strcmp(month, "Dec") == 0) {
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
1498 tm.tm_mon = 11;
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
1499 }
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7628
diff changeset
1500 tm.tm_year -= 1900;
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1501 lasttime = mktime(&tm);
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1502 }
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1503 }
7613
d5a283c09b1d [gaim-migrate @ 8237]
Nathan Walp <nwalp@pidgin.im>
parents: 7612
diff changeset
1504
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1505 if (logfound) {
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1506 if ((newlen = ftell(file) - lastoff) != 0) {
13120
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
1507 log = gaim_log_new(GAIM_LOG_IM, sn, account, NULL, -1, NULL);
11503
9f15d4c089b9 [gaim-migrate @ 13748]
Richard Laager <rlaager@pidgin.im>
parents: 11458
diff changeset
1508 log->logger = old_logger;
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1509 log->time = lasttime;
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1510 data = g_new0(struct old_logger_data, 1);
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1511 data->offset = lastoff;
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1512 data->length = newlen;
7764
b1bb74f2f79d [gaim-migrate @ 8409]
Ethan Blanton <elb@pidgin.im>
parents: 7761
diff changeset
1513 data->pathref = gaim_stringref_ref(pathref);
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1514 log->logger_data = data;
11703
6b22ef099870 [gaim-migrate @ 13994]
Richard Laager <rlaager@pidgin.im>
parents: 11698
diff changeset
1515 list = g_list_prepend(list, log);
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1516
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1517 /* XXX: Is there a proper way to print a time_t? */
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1518 if (index != NULL)
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1519 fprintf(index, "%d\t%d\t%d\n", data->offset, data->length, (int)log->time);
7761
8b457575a0c4 [gaim-migrate @ 8406]
Ethan Blanton <elb@pidgin.im>
parents: 7752
diff changeset
1520 }
7613
d5a283c09b1d [gaim-migrate @ 8237]
Nathan Walp <nwalp@pidgin.im>
parents: 7612
diff changeset
1521 }
d5a283c09b1d [gaim-migrate @ 8237]
Nathan Walp <nwalp@pidgin.im>
parents: 7612
diff changeset
1522
7764
b1bb74f2f79d [gaim-migrate @ 8409]
Ethan Blanton <elb@pidgin.im>
parents: 7761
diff changeset
1523 gaim_stringref_unref(pathref);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1524 fclose(file);
13407
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1525 if (index != NULL)
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1526 {
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1527 fclose(index);
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1528
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1529 if (index_tmp == NULL)
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1530 {
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1531 g_free(pathstr);
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1532 g_return_val_if_reached(list);
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1533 }
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1534
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1535 if (g_rename(index_tmp, pathstr))
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1536 {
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1537 gaim_debug_warning("log", "Failed to rename index temp file \"%s\" to \"%s\": %s\n",
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1538 index_tmp, pathstr, strerror(errno));
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1539 g_unlink(index_tmp);
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1540 g_free(index_tmp);
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1541 }
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1542 else
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1543 gaim_debug_info("log", "Built index: %s\n", pathstr);
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1544
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1545 g_free(pathstr);
8b5d4dc349b1 [gaim-migrate @ 15781]
Richard Laager <rlaager@pidgin.im>
parents: 13389
diff changeset
1546 }
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1547 return list;
4184
c8beb71e54bc [gaim-migrate @ 4415]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1548 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4227
diff changeset
1549
8898
85f5615bc27e [gaim-migrate @ 9667]
Mark Doliner <markdoliner@pidgin.im>
parents: 8635
diff changeset
1550 static int old_logger_total_size(GaimLogType type, const char *name, GaimAccount *account)
8096
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
1551 {
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
1552 char *logfile = g_strdup_printf("%s.log", gaim_normalize(account, name));
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
1553 char *pathstr = g_build_filename(gaim_user_dir(), "logs", logfile, NULL);
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
1554 int size;
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
1555 struct stat st;
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
1556
10589
4e10236e06d4 [gaim-migrate @ 11994]
Daniel Atallah <datallah@pidgin.im>
parents: 10577
diff changeset
1557 if (g_stat(pathstr, &st))
8096
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
1558 size = 0;
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
1559 else
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
1560 size = st.st_size;
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
1561
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
1562 g_free(logfile);
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
1563 g_free(pathstr);
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
1564
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
1565 return size;
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
1566 }
306a66d5171a [gaim-migrate @ 8795]
Luke Schierer <lschiere@pidgin.im>
parents: 8062
diff changeset
1567
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1568 static char * old_logger_read (GaimLog *log, GaimLogReadFlags *flags)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4227
diff changeset
1569 {
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1570 struct old_logger_data *data = log->logger_data;
10589
4e10236e06d4 [gaim-migrate @ 11994]
Daniel Atallah <datallah@pidgin.im>
parents: 10577
diff changeset
1571 FILE *file = g_fopen(gaim_stringref_value(data->pathref), "rb");
10906
1825ffb6b495 [gaim-migrate @ 12636]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10822
diff changeset
1572 char *tmp, *read = g_malloc(data->length + 1);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1573 fseek(file, data->offset, SEEK_SET);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1574 fread(read, data->length, 1, file);
8370
ce5393bfcf57 [gaim-migrate @ 9097]
Mark Doliner <markdoliner@pidgin.im>
parents: 8111
diff changeset
1575 fclose(file);
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1576 read[data->length] = '\0';
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1577 *flags = 0;
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1578 if(strstr(read, "<BR>"))
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
1579 *flags |= GAIM_LOG_READ_NO_NEWLINE;
10906
1825ffb6b495 [gaim-migrate @ 12636]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10822
diff changeset
1580 else {
1825ffb6b495 [gaim-migrate @ 12636]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10822
diff changeset
1581 tmp = g_markup_escape_text(read, -1);
1825ffb6b495 [gaim-migrate @ 12636]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10822
diff changeset
1582 g_free(read);
13358
9504caa8cb7f [gaim-migrate @ 15730]
Richard Laager <rlaager@pidgin.im>
parents: 13334
diff changeset
1583 read = gaim_markup_linkify(tmp);
9504caa8cb7f [gaim-migrate @ 15730]
Richard Laager <rlaager@pidgin.im>
parents: 13334
diff changeset
1584 g_free(tmp);
10906
1825ffb6b495 [gaim-migrate @ 12636]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10822
diff changeset
1585 }
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1586 return read;
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7322
diff changeset
1587 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4227
diff changeset
1588
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1589 static int old_logger_size (GaimLog *log)
7556
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
1590 {
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
1591 struct old_logger_data *data = log->logger_data;
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1592 return data ? data->length : 0;
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1593 }
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1594
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
1595 static void old_logger_get_log_sets(GaimLogSetCallback cb, GHashTable *sets)
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1596 {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1597 char *log_path = g_build_filename(gaim_user_dir(), "logs", NULL);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1598 GDir *log_dir = g_dir_open(log_path, 0, NULL);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1599 gchar *name;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1600 GaimBlistNode *gnode, *cnode, *bnode;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1601
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1602 g_free(log_path);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1603 if (log_dir == NULL)
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
1604 return;
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1605
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1606 /* Don't worry about the cast, name will be filled with a dynamically allocated data shortly. */
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1607 while ((name = (gchar *)g_dir_read_name(log_dir)) != NULL) {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1608 size_t len;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1609 gchar *ext;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1610 GaimLogSet *set;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1611 gboolean found = FALSE;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1612
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1613 /* Unescape the filename. */
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1614 name = g_strdup(gaim_unescape_filename(name));
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1615
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1616 /* Get the (possibly new) length of name. */
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1617 len = strlen(name);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1618
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1619 if (len < 5) {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1620 g_free(name);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1621 continue;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1622 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1623
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1624 /* Make sure we're dealing with a log file. */
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1625 ext = &name[len - 4];
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1626 if (strcmp(ext, ".log")) {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1627 g_free(name);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1628 continue;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1629 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1630
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1631 set = g_new0(GaimLogSet, 1);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1632
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1633 /* Chat for .chat at the end of the name to determine the type. */
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1634 *ext = '\0';
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1635 set->type = GAIM_LOG_IM;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1636 if (len > 9) {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1637 char *tmp = &name[len - 9];
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1638 if (!strcmp(tmp, ".chat")) {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1639 set->type = GAIM_LOG_CHAT;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1640 *tmp = '\0';
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1641 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1642 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1643
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
1644 set->name = set->normalized_name = name;
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1645
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1646 /* Search the buddy list to find the account and to determine if this is a buddy. */
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1647 for (gnode = gaim_get_blist()->root; !found && gnode != NULL; gnode = gnode->next)
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1648 {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1649 if (!GAIM_BLIST_NODE_IS_GROUP(gnode))
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1650 continue;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1651
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1652 for (cnode = gnode->child; !found && cnode != NULL; cnode = cnode->next)
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1653 {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1654 if (!GAIM_BLIST_NODE_IS_CONTACT(cnode))
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1655 continue;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1656
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1657 for (bnode = cnode->child; !found && bnode != NULL; bnode = bnode->next)
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1658 {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1659 GaimBuddy *buddy = (GaimBuddy *)bnode;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1660
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1661 if (!strcmp(buddy->name, name)) {
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1662 set->account = buddy->account;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1663 set->buddy = TRUE;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1664 found = TRUE;
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1665 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1666 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1667 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1668 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1669
11177
534ca3ae0bfc [gaim-migrate @ 13285]
Richard Laager <rlaager@pidgin.im>
parents: 11094
diff changeset
1670 cb(sets, set);
11025
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1671 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1672 g_dir_close(log_dir);
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1673 }
41b6449f7dff [gaim-migrate @ 12899]
Richard Laager <rlaager@pidgin.im>
parents: 10906
diff changeset
1674
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1675 static void old_logger_finalize(GaimLog *log)
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1676 {
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1677 struct old_logger_data *data = log->logger_data;
7764
b1bb74f2f79d [gaim-migrate @ 8409]
Ethan Blanton <elb@pidgin.im>
parents: 7761
diff changeset
1678 gaim_stringref_unref(data->pathref);
7616
461cf59752d8 [gaim-migrate @ 8240]
Nathan Walp <nwalp@pidgin.im>
parents: 7613
diff changeset
1679 g_free(data);
7556
2154c3f5be68 [gaim-migrate @ 8170]
Sean Egan <seanegan@pidgin.im>
parents: 7555
diff changeset
1680 }

mercurial