src/log.c

Thu, 17 Aug 2006 07:44:52 +0000

author
Mark Doliner <markdoliner@pidgin.im>
date
Thu, 17 Aug 2006 07:44:52 +0000
changeset 14225
35fa1f6160b4
parent 14097
0c340861ab79
permissions
-rw-r--r--

[gaim-migrate @ 16811]
Split the DNS query stuff out into it's own file. Eventually
we should move the dnssrv code into this same file. Maybe
even share some code?

Also the first steps toward cancelable DNS queries.

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

mercurial