Mercurial > pidgin
annotate src/log.c @ 5786:f8bee920b14e
[gaim-migrate @ 6211]
Matthew Hall (mthz) writes:
" In server.c, "plugin_event(event_buddy_idle, gc,
b->name);" gets fired to the plugins BEFORE the call to
"gaim_blist_update_buddy_idle(b, idle);" is made a few
lines later to update the the buddy struct's idle
member. So, if a plugin catches event_buddy_idle and
attempts to figure out the buddy's idle time, it will
not be correct (in some cases when one first signs on,
it will even be completely blank, as it is still
zeroed). As far as I can tell, there is nothing wrong
with reversing the order of the calls. Attached to
this is a patch for the latest CVS... as of 4-9-03 Noon."
because he put the patch in the bugs tracker, it took me this long to find
it. patches should be in the patch tracker.
committer: Tailor Script <tailor@pidgin.im>
| author | Luke Schierer <lschiere@pidgin.im> |
|---|---|
| date | Sat, 07 Jun 2003 03:42:16 +0000 |
| parents | dae79aefac8d |
| children | 5e685e42931e |
| rev | line source |
|---|---|
| 4184 | 1 /* --------------------------------------------------- |
| 2 * Function to remove a log file entry | |
| 3 * --------------------------------------------------- | |
| 4 */ | |
| 4195 | 5 #ifdef HAVE_CONFIG_H |
| 6 #include <config.h> | |
| 7 #endif | |
| 8 #include <string.h> | |
| 9 | |
| 10 #ifndef _WIN32 | |
| 11 #include <unistd.h> | |
| 12 #endif | |
| 13 | |
| 4184 | 14 #include "gaim.h" |
| 15 #include "core.h" | |
| 16 #include "multi.h" | |
| 5548 | 17 #include "prefs.h" |
| 4184 | 18 #include "prpl.h" |
|
5436
ad445074d239
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
19 #include "notify.h" |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
20 #include <string.h> |
| 4184 | 21 #include <sys/stat.h> |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
22 #include <unistd.h> |
| 4184 | 23 |
|
4192
17187504bfc2
[gaim-migrate @ 4423]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
4184
diff
changeset
|
24 #ifdef _WIN32 |
|
17187504bfc2
[gaim-migrate @ 4423]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
4184
diff
changeset
|
25 #include "win32dep.h" |
|
17187504bfc2
[gaim-migrate @ 4423]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
4184
diff
changeset
|
26 #endif |
|
17187504bfc2
[gaim-migrate @ 4423]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
4184
diff
changeset
|
27 |
| 4184 | 28 void rm_log(struct log_conversation *a) |
| 29 { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5593
diff
changeset
|
30 GaimConversation *cnv = gaim_find_conversation(a->name); |
| 4184 | 31 |
| 5528 | 32 /* Added the following if statements for sanity check */ |
| 33 if (!a) | |
| 34 { | |
| 35 gaim_notify_error (NULL, NULL, _("Error in specifying buddy conversation."), NULL); | |
| 36 return; | |
| 37 } | |
| 38 cnv = gaim_find_conversation(a->name); | |
| 39 if (!cnv) | |
| 40 { | |
| 41 gaim_notify_error (NULL, NULL, _("Unable to find conversation log"), NULL); | |
| 42 return; | |
| 43 } | |
| 44 | |
| 4184 | 45 log_conversations = g_list_remove(log_conversations, a); |
| 46 } | |
| 47 | |
| 48 struct log_conversation *find_log_info(const char *name) | |
| 49 { | |
| 50 char *pname = g_malloc(BUF_LEN); | |
| 51 GList *lc = log_conversations; | |
| 52 struct log_conversation *l; | |
| 53 | |
| 54 | |
| 55 strcpy(pname, normalize(name)); | |
| 56 | |
| 57 while (lc) { | |
| 58 l = (struct log_conversation *)lc->data; | |
| 4793 | 59 if (!gaim_utf8_strcasecmp(pname, normalize(l->name))) { |
| 4184 | 60 g_free(pname); |
| 61 return l; | |
| 62 } | |
| 63 lc = lc->next; | |
| 64 } | |
| 65 g_free(pname); | |
| 66 return NULL; | |
| 67 } | |
| 68 | |
| 69 void update_log_convs() | |
| 70 { | |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
71 GList *cnv; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5593
diff
changeset
|
72 GaimConversation *c; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5593
diff
changeset
|
73 GaimGtkConversation *gtkconv; |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
74 |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
75 for (cnv = gaim_get_conversations(); cnv != NULL; cnv = cnv->next) { |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
76 |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5593
diff
changeset
|
77 c = (GaimConversation *)cnv->data; |
| 4184 | 78 |
|
4398
a8249a5250b6
[gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
79 if (!GAIM_IS_GTK_CONVERSATION(c)) |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
80 continue; |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
81 |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
82 gtkconv = GAIM_GTK_CONVERSATION(c); |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
83 |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
84 if (gtkconv->toolbar.log) { |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
85 if (gaim_conversation_get_type(c) == GAIM_CONV_CHAT) |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
86 gtk_widget_set_sensitive(GTK_WIDGET(gtkconv->toolbar.log), |
| 5548 | 87 !gaim_prefs_get_bool("/gaim/gtk/logging/log_chats")); |
| 4184 | 88 else |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
89 gtk_widget_set_sensitive(GTK_WIDGET(gtkconv->toolbar.log), |
| 5548 | 90 !gaim_prefs_get_bool("/gaim/gtk/logging/log_ims")); |
| 4184 | 91 } |
| 92 } | |
| 93 } | |
| 94 | |
| 4635 | 95 static void do_save_convo(GObject *obj, GtkWidget *wid) |
| 4184 | 96 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5593
diff
changeset
|
97 GaimConversation *c = g_object_get_data(obj, "gaim_conversation"); |
| 4184 | 98 const char *filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(wid)); |
| 99 FILE *f; | |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
100 |
| 4184 | 101 if (file_is_dir(filename, wid)) |
| 102 return; | |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
103 |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
104 if (!((gaim_conversation_get_type(c) != GAIM_CONV_CHAT && |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
105 g_list_find(gaim_get_ims(), c)) || |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
106 (gaim_conversation_get_type(c) == GAIM_CONV_CHAT && |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
107 g_list_find(gaim_get_chats(), c)))) |
| 4184 | 108 filename = NULL; |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
109 |
| 4184 | 110 gtk_widget_destroy(wid); |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
111 |
| 4184 | 112 if (!filename) |
| 113 return; | |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
114 |
| 4184 | 115 f = fopen(filename, "w+"); |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
116 |
| 4184 | 117 if (!f) |
| 118 return; | |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
119 |
| 4184 | 120 fprintf(f, "%s", c->history->str); |
| 121 fclose(f); | |
| 122 } | |
| 123 | |
| 124 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5593
diff
changeset
|
125 void save_convo(GtkWidget *save, GaimConversation *c) |
| 4184 | 126 { |
| 127 char buf[BUF_LONG]; | |
| 128 GtkWidget *window = gtk_file_selection_new(_("Gaim - Save Conversation")); | |
| 129 g_snprintf(buf, sizeof(buf), "%s" G_DIR_SEPARATOR_S "%s.log", gaim_home_dir(), normalize(c->name)); | |
| 130 gtk_file_selection_set_filename(GTK_FILE_SELECTION(window), buf); | |
| 4635 | 131 g_object_set_data(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button), |
| 132 "gaim_conversation", c); | |
|
5314
1f901484599d
[gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
133 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button), |
| 4184 | 134 "clicked", G_CALLBACK(do_save_convo), window); |
|
5314
1f901484599d
[gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
135 g_signal_connect_swapped(G_OBJECT(GTK_FILE_SELECTION(window)->cancel_button), |
| 4184 | 136 "clicked", G_CALLBACK(gtk_widget_destroy), (gpointer)window); |
| 137 gtk_widget_show(window); | |
| 138 } | |
| 139 | |
| 140 static FILE *open_gaim_log_file(const char *name, int *flag) | |
| 141 { | |
| 142 char *buf; | |
| 143 char *buf2; | |
| 144 char log_all_file[256]; | |
| 145 struct stat st; | |
| 146 FILE *fd; | |
| 147 #ifndef _WIN32 | |
| 148 int res; | |
| 149 #endif | |
| 150 gchar *gaim_dir; | |
| 151 | |
| 152 buf = g_malloc(BUF_LONG); | |
| 153 buf2 = g_malloc(BUF_LONG); | |
| 154 gaim_dir = gaim_user_dir(); | |
| 155 | |
| 156 /* Dont log yourself */ | |
| 157 strncpy(log_all_file, gaim_dir, 256); | |
| 158 | |
| 159 #ifndef _WIN32 | |
| 160 stat(log_all_file, &st); | |
| 161 if (!S_ISDIR(st.st_mode)) | |
| 162 unlink(log_all_file); | |
| 163 | |
| 164 fd = fopen(log_all_file, "r"); | |
| 165 | |
| 166 if (!fd) { | |
| 167 res = mkdir(log_all_file, S_IRUSR | S_IWUSR | S_IXUSR); | |
| 168 if (res < 0) { | |
| 169 g_snprintf(buf, BUF_LONG, _("Unable to make directory %s for logging"), | |
| 170 log_all_file); | |
|
5436
ad445074d239
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
171 gaim_notify_error(NULL, NULL, buf, NULL); |
| 4184 | 172 g_free(buf); |
| 173 g_free(buf2); | |
| 174 return NULL; | |
| 175 } | |
| 176 } else | |
| 177 fclose(fd); | |
| 178 | |
| 179 g_snprintf(log_all_file, 256, "%s" G_DIR_SEPARATOR_S "logs", gaim_dir); | |
| 180 | |
| 181 if (stat(log_all_file, &st) < 0) | |
| 182 *flag = 1; | |
| 183 if (!S_ISDIR(st.st_mode)) | |
| 184 unlink(log_all_file); | |
| 185 | |
| 186 fd = fopen(log_all_file, "r"); | |
| 187 if (!fd) { | |
| 188 res = mkdir(log_all_file, S_IRUSR | S_IWUSR | S_IXUSR); | |
| 189 if (res < 0) { | |
| 190 g_snprintf(buf, BUF_LONG, _("Unable to make directory %s for logging"), | |
| 191 log_all_file); | |
|
5436
ad445074d239
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
192 gaim_notify_error(NULL, NULL, buf, NULL); |
| 4184 | 193 g_free(buf); |
| 194 g_free(buf2); | |
| 195 return NULL; | |
| 196 } | |
| 197 } else | |
| 198 fclose(fd); | |
| 199 #else /* _WIN32 */ | |
| 200 g_snprintf(log_all_file, 256, "%s" G_DIR_SEPARATOR_S "logs", gaim_dir); | |
| 201 | |
| 202 if( _mkdir(log_all_file) < 0 && errno != EEXIST ) { | |
| 203 g_snprintf(buf, BUF_LONG, _("Unable to make directory %s for logging"), log_all_file); | |
|
5436
ad445074d239
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
204 gaim_notify_error(NULL, NULL, buf, NULL); |
| 4184 | 205 g_free(buf); |
| 206 g_free(buf2); | |
| 207 return NULL; | |
| 208 } | |
| 209 #endif | |
| 210 | |
| 211 g_snprintf(log_all_file, 256, "%s" G_DIR_SEPARATOR_S "logs" G_DIR_SEPARATOR_S "%s", gaim_dir, name); | |
| 212 if (stat(log_all_file, &st) < 0) | |
| 213 *flag = 1; | |
| 214 | |
|
5211
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
215 gaim_debug(GAIM_DEBUG_INFO, "log", "Logging to: \"%s\"\n", log_all_file); |
| 4184 | 216 |
| 217 fd = fopen(log_all_file, "a"); | |
| 218 | |
| 219 g_free(buf); | |
| 220 g_free(buf2); | |
| 221 return fd; | |
| 222 } | |
| 223 | |
| 224 static FILE *open_system_log_file(char *name) | |
| 225 { | |
| 226 int x; | |
| 227 | |
| 228 if (name) | |
| 229 return open_log_file(name, 2); | |
| 230 else | |
| 231 return open_gaim_log_file("system", &x); | |
| 232 } | |
| 233 | |
| 234 FILE *open_log_file(const char *name, int is_chat) | |
| 235 { | |
| 236 struct stat st; | |
| 237 char realname[256]; | |
| 238 struct log_conversation *l; | |
| 239 FILE *fd; | |
| 240 int flag = 0; | |
| 241 | |
|
5554
7b36d02031a2
[gaim-migrate @ 5955]
Christian Hammond <chipx86@chipx86.com>
parents:
5548
diff
changeset
|
242 if (((is_chat == 2) && !gaim_prefs_get_bool("/gaim/gtk/logging/individual_logs")) |
| 5548 | 243 || ((is_chat == 1) && !gaim_prefs_get_bool("/gaim/gtk/logging/log_chats")) |
| 244 || ((is_chat == 0) && !gaim_prefs_get_bool("/gaim/gtk/logging/log_ims"))) { | |
| 4184 | 245 |
| 246 l = find_log_info(name); | |
| 247 if (!l) | |
| 248 return NULL; | |
| 249 | |
| 250 if (stat(l->filename, &st) < 0) | |
| 251 flag = 1; | |
| 252 | |
| 253 fd = fopen(l->filename, "a"); | |
| 254 | |
| 255 if (flag) { /* is a new file */ | |
|
5554
7b36d02031a2
[gaim-migrate @ 5955]
Christian Hammond <chipx86@chipx86.com>
parents:
5548
diff
changeset
|
256 if (gaim_prefs_get_bool("/gaim/gtk/logging/strip_html")) { |
| 4184 | 257 fprintf(fd, _("IM Sessions with %s\n"), name); |
| 258 } else { | |
| 259 fprintf(fd, "<HTML><HEAD><TITLE>"); | |
| 260 fprintf(fd, _("IM Sessions with %s"), name); | |
| 5138 | 261 fprintf(fd, "</TITLE></HEAD><BODY BGCOLOR=\"#ffffff\">\n"); |
| 4184 | 262 } |
| 263 } | |
| 264 | |
| 265 return fd; | |
| 266 } | |
| 267 | |
| 268 g_snprintf(realname, sizeof(realname), "%s.log", normalize(name)); | |
| 269 fd = open_gaim_log_file(realname, &flag); | |
| 270 | |
| 271 if (fd && flag) { /* is a new file */ | |
|
5554
7b36d02031a2
[gaim-migrate @ 5955]
Christian Hammond <chipx86@chipx86.com>
parents:
5548
diff
changeset
|
272 if (gaim_prefs_get_bool("/gaim/gtk/logging/strip_html")) { |
| 4184 | 273 fprintf(fd, _("IM Sessions with %s\n"), name); |
| 274 } else { | |
| 275 fprintf(fd, "<HTML><HEAD><TITLE>"); | |
| 276 fprintf(fd, _("IM Sessions with %s"), name); | |
| 5138 | 277 fprintf(fd, "</TITLE></HEAD><BODY BGCOLOR=\"#ffffff\">\n"); |
| 4184 | 278 } |
| 279 } | |
| 280 | |
| 281 return fd; | |
| 282 } | |
| 283 | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
284 void system_log(enum log_event what, GaimConnection *gc, |
| 4184 | 285 struct buddy *who, int why) |
| 286 { | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
287 GaimAccount *account; |
| 4184 | 288 FILE *fd; |
| 289 char text[256], html[256]; | |
| 290 | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
291 account = gaim_connection_get_account(gc); |
|
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
292 |
|
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
293 if (((why & OPT_LOG_MY_SIGNON) && |
|
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
294 !gaim_prefs_get_bool("/gaim/gtk/logging/log_own_states"))) { |
|
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
295 |
| 4184 | 296 return; |
|
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
297 } |
| 4184 | 298 |
|
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
299 if (gaim_prefs_get_bool("/gaim/gtk/logging/individual_logs")) { |
| 4184 | 300 if (why & OPT_LOG_MY_SIGNON) |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
301 fd = open_system_log_file(gc ? (char *)gaim_account_get_username(account) : NULL); |
| 4184 | 302 else |
| 303 fd = open_system_log_file(who->name); | |
| 304 } else | |
| 305 fd = open_system_log_file(NULL); | |
| 306 | |
| 307 if (!fd) | |
| 308 return; | |
| 309 | |
| 310 if (why & OPT_LOG_MY_SIGNON) { | |
| 311 switch (what) { | |
| 312 case log_signon: | |
| 4195 | 313 g_snprintf(text, sizeof(text), _("+++ %s (%s) signed on @ %s"), |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
314 gaim_account_get_username(account), gc->prpl->info->name, full_date()); |
| 4184 | 315 g_snprintf(html, sizeof(html), "<B>%s</B>", text); |
| 316 break; | |
| 317 case log_signoff: | |
| 4195 | 318 g_snprintf(text, sizeof(text), _("+++ %s (%s) signed off @ %s"), |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
319 gaim_account_get_username(account), gc->prpl->info->name, full_date()); |
| 4184 | 320 g_snprintf(html, sizeof(html), "<I><FONT COLOR=GRAY>%s</FONT></I>", text); |
| 321 break; | |
| 322 case log_away: | |
| 4195 | 323 g_snprintf(text, sizeof(text), _("+++ %s (%s) changed away state @ %s"), |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
324 gaim_account_get_username(account), gc->prpl->info->name, full_date()); |
| 4184 | 325 g_snprintf(html, sizeof(html), "<FONT COLOR=OLIVE>%s</FONT>", text); |
| 326 break; | |
| 327 case log_back: | |
| 4195 | 328 g_snprintf(text, sizeof(text), _("+++ %s (%s) came back @ %s"), |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
329 gaim_account_get_username(account), gc->prpl->info->name, full_date()); |
| 4184 | 330 g_snprintf(html, sizeof(html), "%s", text); |
| 331 break; | |
| 332 case log_idle: | |
| 4195 | 333 g_snprintf(text, sizeof(text), _("+++ %s (%s) became idle @ %s"), |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
334 gaim_account_get_username(account), gc->prpl->info->name, full_date()); |
| 4184 | 335 g_snprintf(html, sizeof(html), "<FONT COLOR=GRAY>%s</FONT>", text); |
| 336 break; | |
| 337 case log_unidle: | |
| 4195 | 338 g_snprintf(text, sizeof(text), _("+++ %s (%s) returned from idle @ %s"), |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
339 gaim_account_get_username(account), gc->prpl->info->name, full_date()); |
| 4184 | 340 g_snprintf(html, sizeof(html), "%s", text); |
| 341 break; | |
| 342 case log_quit: | |
| 4195 | 343 g_snprintf(text, sizeof(text), _("+++ Program exit @ %s"), full_date()); |
| 4184 | 344 g_snprintf(html, sizeof(html), "<I><FONT COLOR=GRAY>%s</FONT></I>", text); |
| 345 break; | |
| 346 } | |
| 4687 | 347 } else if (gaim_get_buddy_alias_only(who)) { |
| 4184 | 348 switch (what) { |
| 349 case log_signon: | |
| 4195 | 350 g_snprintf(text, sizeof(text), _("%s (%s) reported that %s (%s) signed on @ %s"), |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
351 gaim_account_get_username(account), gc->prpl->info->name, gaim_get_buddy_alias(who), who->name, full_date()); |
| 4184 | 352 g_snprintf(html, sizeof(html), "<B>%s</B>", text); |
| 353 break; | |
| 354 case log_signoff: | |
| 4195 | 355 g_snprintf(text, sizeof(text), _("%s (%s) reported that %s (%s) signed off @ %s"), |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
356 gaim_account_get_username(account), gc->prpl->info->name, gaim_get_buddy_alias(who), who->name, full_date()); |
| 4184 | 357 g_snprintf(html, sizeof(html), "<I><FONT COLOR=GRAY>%s</FONT></I>", text); |
| 358 break; | |
| 359 case log_away: | |
| 4195 | 360 g_snprintf(text, sizeof(text), _("%s (%s) reported that %s (%s) went away @ %s"), |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
361 gaim_account_get_username(account), gc->prpl->info->name, gaim_get_buddy_alias(who), who->name, full_date()); |
| 4184 | 362 g_snprintf(html, sizeof(html), "<FONT COLOR=OLIVE>%s</FONT>", text); |
| 363 break; | |
| 364 case log_back: | |
| 4195 | 365 g_snprintf(text, sizeof(text), _("%s (%s) reported that %s (%s) came back @ %s"), |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
366 gaim_account_get_username(account), gc->prpl->info->name, gaim_get_buddy_alias(who), who->name, full_date()); |
| 4184 | 367 g_snprintf(html, sizeof(html), "%s", text); |
| 368 break; | |
| 369 case log_idle: | |
| 4195 | 370 g_snprintf(text, sizeof(text), _("%s (%s) reported that %s (%s) became idle @ %s"), |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
371 gaim_account_get_username(account), gc->prpl->info->name, gaim_get_buddy_alias(who), who->name, full_date()); |
| 4184 | 372 g_snprintf(html, sizeof(html), "<FONT COLOR=GRAY>%s</FONT>", text); |
| 373 break; | |
| 374 case log_unidle: | |
| 375 g_snprintf(text, sizeof(text), | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
376 _("%s (%s) reported that %s (%s) returned from idle @ %s"), gaim_account_get_username(account), |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5138
diff
changeset
|
377 gc->prpl->info->name, gaim_get_buddy_alias(who), who->name, full_date()); |
| 4184 | 378 g_snprintf(html, sizeof(html), "%s", text); |
| 379 break; | |
| 380 default: | |
| 381 fclose(fd); | |
| 382 return; | |
| 383 break; | |
| 384 } | |
| 385 } else { | |
| 386 switch (what) { | |
| 387 case log_signon: | |
| 4195 | 388 g_snprintf(text, sizeof(text), _("%s (%s) reported that %s signed on @ %s"), |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
389 gaim_account_get_username(account), gc->prpl->info->name, who->name, full_date()); |
| 4184 | 390 g_snprintf(html, sizeof(html), "<B>%s</B>", text); |
| 391 break; | |
| 392 case log_signoff: | |
| 4195 | 393 g_snprintf(text, sizeof(text), _("%s (%s) reported that %s signed off @ %s"), |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
394 gaim_account_get_username(account), gc->prpl->info->name, who->name, full_date()); |
| 4184 | 395 g_snprintf(html, sizeof(html), "<I><FONT COLOR=GRAY>%s</FONT></I>", text); |
| 396 break; | |
| 397 case log_away: | |
| 4195 | 398 g_snprintf(text, sizeof(text), _("%s (%s) reported that %s went away @ %s"), |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
399 gaim_account_get_username(account), gc->prpl->info->name, who->name, full_date()); |
| 4184 | 400 g_snprintf(html, sizeof(html), "<FONT COLOR=OLIVE>%s</FONT>", text); |
| 401 break; | |
| 402 case log_back: | |
| 4195 | 403 g_snprintf(text, sizeof(text), _("%s (%s) reported that %s came back @ %s"), |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
404 gaim_account_get_username(account), gc->prpl->info->name, who->name, full_date()); |
| 4184 | 405 g_snprintf(html, sizeof(html), "%s", text); |
| 406 break; | |
| 407 case log_idle: | |
| 4195 | 408 g_snprintf(text, sizeof(text), _("%s (%s) reported that %s became idle @ %s"), |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
409 gaim_account_get_username(account), gc->prpl->info->name, who->name, full_date()); |
| 4184 | 410 g_snprintf(html, sizeof(html), "<FONT COLOR=GRAY>%s</FONT>", text); |
| 411 break; | |
| 412 case log_unidle: | |
| 413 g_snprintf(text, sizeof(text), | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
414 _("%s (%s) reported that %s returned from idle @ %s"), gaim_account_get_username(account), |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5138
diff
changeset
|
415 gc->prpl->info->name, who->name, full_date()); |
| 4184 | 416 g_snprintf(html, sizeof(html), "%s", text); |
| 417 break; | |
| 418 default: | |
| 419 fclose(fd); | |
| 420 return; | |
| 421 break; | |
| 422 } | |
| 423 } | |
| 424 | |
|
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
425 if (gaim_prefs_get_bool("/gaim/gtk/logging/strip_html")) |
| 4184 | 426 fprintf(fd, "---- %s ----\n", text); |
|
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
427 else if (gaim_prefs_get_bool("/gaim/gtk/logging/individual_logs")) |
|
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
428 fprintf(fd, "<HR>%s<BR><HR><BR>\n", html); |
|
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
429 else |
|
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5554
diff
changeset
|
430 fprintf(fd, "%s<BR>\n", html); |
| 4184 | 431 |
| 432 fclose(fd); | |
| 433 } | |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
434 |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
435 char *html_logize(const char *p) |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
436 { |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
437 const char *temp_p; |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
438 char *buffer_p; |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
439 char *buffer_start; |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
440 int num_cr = 0; |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
441 int char_len = 0; |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
442 |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
443 for (temp_p = p; *temp_p != '\0'; temp_p++) { |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
444 char_len++; |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
445 |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
446 if ((*temp_p == '\n') || ((*temp_p == '<') && (*(temp_p + 1) == '!'))) |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
447 num_cr++; |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
448 } |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
449 |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
450 buffer_p = g_malloc(char_len + (4 * num_cr) + 1); |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
451 |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
452 for (temp_p = p, buffer_start = buffer_p; |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
453 *temp_p != '\0'; |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
454 temp_p++) { |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
455 |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
456 if (*temp_p == '\n') { |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
457 *buffer_p++ = '<'; |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
458 *buffer_p++ = 'B'; |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
459 *buffer_p++ = 'R'; |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
460 *buffer_p++ = '>'; |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
461 *buffer_p++ = '\n'; |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
462 |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
463 } else if ((*temp_p == '<') && (*(temp_p + 1) == '!')) { |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
464 *buffer_p++ = '&'; |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
465 *buffer_p++ = 'l'; |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
466 *buffer_p++ = 't'; |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
467 *buffer_p++ = ';'; |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
468 |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
469 } else |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
470 *buffer_p++ = *temp_p; |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
471 } |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
472 |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
473 *buffer_p = '\0'; |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
474 |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
475 return buffer_start; |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4227
diff
changeset
|
476 } |
