changeset 4184:af2eeb7f7cf8

[gaim-migrate @ 4415] Moves most of the logging functions into their own file, log.c. committer: Tailor Script <tailor@pidgin.im>
author Christian Hammond <chipx86@chipx86.com>
date Fri, 03 Jan 2003 07:53:15 +0000
parents e6810f691393
children e52b0571ca95
files src/Makefile.am src/conversation.c src/gaim.h src/log.c src/ui.h src/util.c
diffstat 6 files changed, 462 insertions(+), 452 deletions(-) [+]
line wrap: on
line diff
--- a/src/Makefile.am	Fri Jan 03 07:26:22 2003 +0000
+++ b/src/Makefile.am	Fri Jan 03 07:53:15 2003 +0000
@@ -16,6 +16,7 @@
 		html.c \
 		idle.c \
 		list.c \
+		log.c \
 		md5.c \
 		module.c \
 		multi.c \
--- a/src/conversation.c	Fri Jan 03 07:26:22 2003 +0000
+++ b/src/conversation.c	Fri Jan 03 07:53:15 2003 +0000
@@ -300,44 +300,6 @@
 	return NULL;
 }
 
-/* ---------------------------------------------------
- * Function to remove a log file entry
- * ---------------------------------------------------
- */
-
-void rm_log(struct log_conversation *a)
-{
-	struct conversation *cnv = find_conversation(a->name);
-
-	log_conversations = g_list_remove(log_conversations, a);
-
-	save_prefs();
-
-	if (cnv && !(im_options & OPT_IM_ONE_WINDOW))
-		set_convo_title(cnv);
-}
-
-struct log_conversation *find_log_info(const char *name)
-{
-	char *pname = g_malloc(BUF_LEN);
-	GList *lc = log_conversations;
-	struct log_conversation *l;
-
-
-	strcpy(pname, normalize(name));
-
-	while (lc) {
-		l = (struct log_conversation *)lc->data;
-		if (!g_strcasecmp(pname, normalize(l->name))) {
-			g_free(pname);
-			return l;
-		}
-		lc = lc->next;
-	}
-	g_free(pname);
-	return NULL;
-}
-
 void delete_conversation(struct conversation *c)
 {
 	plugin_event(event_del_conversation, c);
@@ -371,50 +333,6 @@
 	g_free(c);
 }
 
-void update_log_convs()
-{
-	GSList *C = connections;
-	struct gaim_connection *g;
-	GSList *bcs;
-	GList *cnv = conversations;
-	struct conversation *c;
-
-	while (cnv) {
-		c = (struct conversation *)cnv->data;
-		if (c->log_button) {
-			if (c->is_chat)
-				gtk_widget_set_sensitive(GTK_WIDGET(c->log_button),
-						   ((logging_options & OPT_LOG_CHATS)) ? FALSE : TRUE);
-			else
-				gtk_widget_set_sensitive(GTK_WIDGET(c->log_button),
-							 ((logging_options & OPT_LOG_CONVOS)) ? FALSE : TRUE);
-		}
-
-		cnv = cnv->next;
-	}
-
-	while (C) {
-		g = (struct gaim_connection *)C->data;
-		bcs = g->buddy_chats;
-		while (bcs) {
-			c = (struct conversation *)bcs->data;
-			if (c->log_button) {
-				if (c->is_chat)
-					gtk_widget_set_sensitive(GTK_WIDGET(c->log_button),
-					 		   ((logging_options & OPT_LOG_CHATS)) ? FALSE :
-							   TRUE);
-				else
-					gtk_widget_set_sensitive(GTK_WIDGET(c->log_button),
-								 ((logging_options & OPT_LOG_CONVOS)) ? FALSE :
-								 TRUE);
-			}
-
-			bcs = bcs->next;
-		}
-		C = C->next;
-	}
-}
-
 void update_font_buttons()
 {
 	GList *cnv = conversations;
@@ -485,40 +403,6 @@
 	c->makesound = !c->makesound;
 }
 
-static void do_save_convo(GtkObject *obj, GtkWidget *wid)
-{
-	struct conversation *c = gtk_object_get_user_data(obj);
-	const char *filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(wid));
-	FILE *f;
-	if (file_is_dir(filename, wid))
-		return;
-	if (!((!c->is_chat && g_list_find(conversations, c)) ||
-	      (c->is_chat && g_slist_find(connections, c->gc) && g_slist_find(c->gc->buddy_chats, c))))
- 		filename = NULL;
-	gtk_widget_destroy(wid);
-	if (!filename)
-		return;
-	f = fopen(filename, "w+");
-	if (!f)
-		return;
-	fprintf(f, "%s", c->history->str);
-	fclose(f);
-}
-
-void save_convo(GtkWidget *save, struct conversation *c)
-{
-	char buf[BUF_LONG];
-	GtkWidget *window = gtk_file_selection_new(_("Gaim - Save Conversation"));
-	g_snprintf(buf, sizeof(buf), "%s" G_DIR_SEPARATOR_S "%s.log", gaim_home_dir(), normalize(c->name));
-	gtk_file_selection_set_filename(GTK_FILE_SELECTION(window), buf);
-	gtk_object_set_user_data(GTK_OBJECT(GTK_FILE_SELECTION(window)->ok_button), c);
-	g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(window)->ok_button),
-			   "clicked", G_CALLBACK(do_save_convo), window);
-	g_signal_connect_swapped(GTK_OBJECT(GTK_FILE_SELECTION(window)->cancel_button),
-				  "clicked", G_CALLBACK(gtk_widget_destroy), (gpointer)window);
-	gtk_widget_show(window);
-}
-
 static void do_insert_image(GtkObject *obj, GtkWidget *wid)
 {
 	struct conversation *c = gtk_object_get_user_data(obj);
@@ -1548,47 +1432,6 @@
 	}
 }
 
-static char *html_logize(char *p)
-{
-
-	char *temp_p = p;
-	char *buffer_p;
-	char *buffer_start;
-	int num_cr = 0;
-	int char_len = 0;
-
-	while (*temp_p != '\0') {
-		char_len++;
-		if ((*temp_p == '\n') || ((*temp_p == '<') && (*(temp_p + 1) == '!')))
-			num_cr++;
-		++temp_p;
-	}
-
-	temp_p = p;
-	buffer_p = g_malloc(char_len + (4 * num_cr) + 1);
-	buffer_start = buffer_p;
-
-	while (*temp_p != '\0') {
-		if (*temp_p == '\n') {
-			*buffer_p++ = '<';
-			*buffer_p++ = 'B';
-			*buffer_p++ = 'R';
-			*buffer_p++ = '>';
-			*buffer_p++ = '\n';
-		} else if ((*temp_p == '<') && (*(temp_p + 1) == '!')) {
-			*buffer_p++ = '&';
-			*buffer_p++ = 'l';
-			*buffer_p++ = 't';
-			*buffer_p++ = ';';
-		} else
-			*buffer_p++ = *temp_p;
-		++temp_p;
-	}
-	*buffer_p = '\0';
-
-	return buffer_start;
-}
-
 void surround(struct conversation *c, char *pre, char *post)
 {
 	GtkTextIter start, end;
--- a/src/gaim.h	Fri Jan 03 07:26:22 2003 +0000
+++ b/src/gaim.h	Fri Jan 03 07:53:15 2003 +0000
@@ -454,7 +454,6 @@
 extern void clean_pid();
 extern char *date();
 extern gint linkify_text(char *);
-extern FILE *open_log_file (const char *, int);
 extern char *sec_to_text(guint);
 extern struct aim_user *find_user(const char *, int) G_GNUC_PURE;
 extern char *full_date() G_GNUC_PURE;
@@ -468,7 +467,6 @@
 extern void strncpy_withhtml(gchar *, const gchar *, size_t);
 extern gchar *strdup_withhtml(const gchar *);
 extern void away_on_login(char *);
-extern void system_log(enum log_event, struct gaim_connection *, struct buddy *, int);
 extern char *add_cr(char *);
 extern void strip_linefeed(char *);
 extern time_t get_time(int, int, int, int, int, int) G_GNUC_CONST;
@@ -476,6 +474,15 @@
 extern char *convert_string(char *, const char *, const char *);
 extern const char *handle_uri(char *);
 
+/* Functions in log.h */
+extern FILE *open_log_file (const char *, int);
+extern void system_log(enum log_event, struct gaim_connection *, struct buddy *, int);
+extern void rm_log(struct log_conversation *);
+extern struct log_conversation *find_log_info(const char *);
+extern void update_log_convs();
+extern void save_convo(GtkWidget *save, struct conversation *c);
+extern char *html_logize(char *p);
+
 /*------------------------------------------------------------------------*/
 /*  Multi-Entry dialog and vCard dialog support                           */
 /*------------------------------------------------------------------------*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/log.c	Fri Jan 03 07:53:15 2003 +0000
@@ -0,0 +1,452 @@
+/* ---------------------------------------------------
+ * Function to remove a log file entry
+ * ---------------------------------------------------
+ */
+#include "gaim.h"
+#include "core.h"
+#include "multi.h"
+#include "prpl.h"
+#include <sys/stat.h>
+
+void rm_log(struct log_conversation *a)
+{
+	struct conversation *cnv = find_conversation(a->name);
+
+	log_conversations = g_list_remove(log_conversations, a);
+
+	save_prefs();
+
+	if (cnv && !(im_options & OPT_IM_ONE_WINDOW))
+		set_convo_title(cnv);
+}
+
+struct log_conversation *find_log_info(const char *name)
+{
+	char *pname = g_malloc(BUF_LEN);
+	GList *lc = log_conversations;
+	struct log_conversation *l;
+
+
+	strcpy(pname, normalize(name));
+
+	while (lc) {
+		l = (struct log_conversation *)lc->data;
+		if (!g_strcasecmp(pname, normalize(l->name))) {
+			g_free(pname);
+			return l;
+		}
+		lc = lc->next;
+	}
+	g_free(pname);
+	return NULL;
+}
+
+void update_log_convs()
+{
+	GSList *C = connections;
+	struct gaim_connection *g;
+	GSList *bcs;
+	GList *cnv = conversations;
+	struct conversation *c;
+
+	while (cnv) {
+		c = (struct conversation *)cnv->data;
+		if (c->log_button) {
+			if (c->is_chat)
+				gtk_widget_set_sensitive(GTK_WIDGET(c->log_button),
+						   ((logging_options & OPT_LOG_CHATS)) ? FALSE : TRUE);
+			else
+				gtk_widget_set_sensitive(GTK_WIDGET(c->log_button),
+							 ((logging_options & OPT_LOG_CONVOS)) ? FALSE : TRUE);
+		}
+
+		cnv = cnv->next;
+	}
+
+	while (C) {
+		g = (struct gaim_connection *)C->data;
+		bcs = g->buddy_chats;
+		while (bcs) {
+			c = (struct conversation *)bcs->data;
+			if (c->log_button) {
+				if (c->is_chat)
+					gtk_widget_set_sensitive(GTK_WIDGET(c->log_button),
+					 		   ((logging_options & OPT_LOG_CHATS)) ? FALSE :
+							   TRUE);
+				else
+					gtk_widget_set_sensitive(GTK_WIDGET(c->log_button),
+								 ((logging_options & OPT_LOG_CONVOS)) ? FALSE :
+								 TRUE);
+			}
+
+			bcs = bcs->next;
+		}
+		C = C->next;
+	}
+}
+
+static void do_save_convo(GtkObject *obj, GtkWidget *wid)
+{
+	struct conversation *c = gtk_object_get_user_data(obj);
+	const char *filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(wid));
+	FILE *f;
+	if (file_is_dir(filename, wid))
+		return;
+	if (!((!c->is_chat && g_list_find(conversations, c)) ||
+	      (c->is_chat && g_slist_find(connections, c->gc) && g_slist_find(c->gc->buddy_chats, c))))
+ 		filename = NULL;
+	gtk_widget_destroy(wid);
+	if (!filename)
+		return;
+	f = fopen(filename, "w+");
+	if (!f)
+		return;
+	fprintf(f, "%s", c->history->str);
+	fclose(f);
+}
+
+
+void save_convo(GtkWidget *save, struct conversation *c)
+{
+	char buf[BUF_LONG];
+	GtkWidget *window = gtk_file_selection_new(_("Gaim - Save Conversation"));
+	g_snprintf(buf, sizeof(buf), "%s" G_DIR_SEPARATOR_S "%s.log", gaim_home_dir(), normalize(c->name));
+	gtk_file_selection_set_filename(GTK_FILE_SELECTION(window), buf);
+	gtk_object_set_user_data(GTK_OBJECT(GTK_FILE_SELECTION(window)->ok_button), c);
+	g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(window)->ok_button),
+			   "clicked", G_CALLBACK(do_save_convo), window);
+	g_signal_connect_swapped(GTK_OBJECT(GTK_FILE_SELECTION(window)->cancel_button),
+				  "clicked", G_CALLBACK(gtk_widget_destroy), (gpointer)window);
+	gtk_widget_show(window);
+}
+
+char *html_logize(char *p)
+{
+	char *temp_p = p;
+	char *buffer_p;
+	char *buffer_start;
+	int num_cr = 0;
+	int char_len = 0;
+
+	while (*temp_p != '\0') {
+		char_len++;
+		if ((*temp_p == '\n') || ((*temp_p == '<') && (*(temp_p + 1) == '!')))
+			num_cr++;
+		++temp_p;
+	}
+
+	temp_p = p;
+	buffer_p = g_malloc(char_len + (4 * num_cr) + 1);
+	buffer_start = buffer_p;
+
+	while (*temp_p != '\0') {
+		if (*temp_p == '\n') {
+			*buffer_p++ = '<';
+			*buffer_p++ = 'B';
+			*buffer_p++ = 'R';
+			*buffer_p++ = '>';
+			*buffer_p++ = '\n';
+		} else if ((*temp_p == '<') && (*(temp_p + 1) == '!')) {
+			*buffer_p++ = '&';
+			*buffer_p++ = 'l';
+			*buffer_p++ = 't';
+			*buffer_p++ = ';';
+		} else
+			*buffer_p++ = *temp_p;
+		++temp_p;
+	}
+	*buffer_p = '\0';
+
+	return buffer_start;
+}
+
+static FILE *open_gaim_log_file(const char *name, int *flag)
+{
+	char *buf;
+	char *buf2;
+	char log_all_file[256];
+	struct stat st;
+	FILE *fd;
+#ifndef _WIN32
+	int res;
+#endif
+	gchar *gaim_dir;
+
+	buf = g_malloc(BUF_LONG);
+	buf2 = g_malloc(BUF_LONG);
+	gaim_dir = gaim_user_dir();
+
+	/*  Dont log yourself */
+	strncpy(log_all_file, gaim_dir, 256);
+
+#ifndef _WIN32
+	stat(log_all_file, &st);
+	if (!S_ISDIR(st.st_mode))
+		unlink(log_all_file);
+
+	fd = fopen(log_all_file, "r");
+
+	if (!fd) {
+		res = mkdir(log_all_file, S_IRUSR | S_IWUSR | S_IXUSR);
+		if (res < 0) {
+			g_snprintf(buf, BUF_LONG, _("Unable to make directory %s for logging"),
+				   log_all_file);
+			do_error_dialog(buf, NULL, GAIM_ERROR);
+			g_free(buf);
+			g_free(buf2);
+			return NULL;
+		}
+	} else
+		fclose(fd);
+
+	g_snprintf(log_all_file, 256, "%s" G_DIR_SEPARATOR_S "logs", gaim_dir);
+
+	if (stat(log_all_file, &st) < 0)
+		*flag = 1;
+	if (!S_ISDIR(st.st_mode))
+		unlink(log_all_file);
+
+	fd = fopen(log_all_file, "r");
+	if (!fd) {
+		res = mkdir(log_all_file, S_IRUSR | S_IWUSR | S_IXUSR);
+		if (res < 0) {
+			g_snprintf(buf, BUF_LONG, _("Unable to make directory %s for logging"),
+				   log_all_file);
+			do_error_dialog(buf, NULL, GAIM_ERROR);
+			g_free(buf);
+			g_free(buf2);
+			return NULL;
+		}
+	} else
+		fclose(fd);
+#else /* _WIN32 */
+	g_snprintf(log_all_file, 256, "%s" G_DIR_SEPARATOR_S "logs", gaim_dir);
+
+	if( _mkdir(log_all_file) < 0 && errno != EEXIST ) {
+	  g_snprintf(buf, BUF_LONG, _("Unable to make directory %s for logging"), log_all_file);
+	  do_error_dialog(buf, NULL, GAIM_ERROR);
+	  g_free(buf);
+	  g_free(buf2);
+	  return NULL;
+	}
+#endif
+
+	g_snprintf(log_all_file, 256, "%s" G_DIR_SEPARATOR_S "logs" G_DIR_SEPARATOR_S "%s", gaim_dir, name);
+	if (stat(log_all_file, &st) < 0)
+		*flag = 1;
+
+	debug_printf("Logging to: \"%s\"\n", log_all_file);
+
+	fd = fopen(log_all_file, "a");
+
+	g_free(buf);
+	g_free(buf2);
+	return fd;
+}
+
+static FILE *open_system_log_file(char *name)
+{
+	int x;
+
+	if (name)
+		return open_log_file(name, 2);
+	else
+		return open_gaim_log_file("system", &x);
+}
+
+FILE *open_log_file(const char *name, int is_chat)
+{
+	struct stat st;
+	char realname[256];
+	struct log_conversation *l;
+	FILE *fd;
+	int flag = 0;
+
+	if (((is_chat == 2) && !(logging_options & OPT_LOG_INDIVIDUAL))
+		|| ((is_chat == 1) && !(logging_options & OPT_LOG_CHATS))
+		|| ((is_chat == 0) && !(logging_options & OPT_LOG_CONVOS))) {
+
+		l = find_log_info(name);
+		if (!l)
+			return NULL;
+
+		if (stat(l->filename, &st) < 0)
+			flag = 1;
+
+		fd = fopen(l->filename, "a");
+
+		if (flag) {	/* is a new file */
+			if (logging_options & OPT_LOG_STRIP_HTML) {
+				fprintf(fd, _("IM Sessions with %s\n"), name);
+			} else {
+				fprintf(fd, "<HTML><HEAD><TITLE>");
+				fprintf(fd, _("IM Sessions with %s"), name);
+				fprintf(fd, "</TITLE></HEAD><BODY BGCOLOR=\"ffffff\">\n");
+			}
+		}
+
+		return fd;
+	}
+
+	g_snprintf(realname, sizeof(realname), "%s.log", normalize(name));
+	fd = open_gaim_log_file(realname, &flag);
+
+	if (fd && flag) {	/* is a new file */
+		if (logging_options & OPT_LOG_STRIP_HTML) {
+			fprintf(fd, _("IM Sessions with %s\n"), name);
+		} else {
+			fprintf(fd, "<HTML><HEAD><TITLE>");
+			fprintf(fd, _("IM Sessions with %s"), name);
+			fprintf(fd, "</TITLE></HEAD><BODY BGCOLOR=\"ffffff\">\n");
+		}
+	}
+
+	return fd;
+}
+
+void system_log(enum log_event what, struct gaim_connection *gc,
+				struct buddy *who, int why)
+{
+	FILE *fd;
+	char text[256], html[256];
+
+	if ((logging_options & why) != why)
+		return;
+
+	if (logging_options & OPT_LOG_INDIVIDUAL) {
+		if (why & OPT_LOG_MY_SIGNON)
+			fd = open_system_log_file(gc ? gc->username : NULL);
+		else
+			fd = open_system_log_file(who->name);
+	} else
+		fd = open_system_log_file(NULL);
+
+	if (!fd)
+		return;
+
+	if (why & OPT_LOG_MY_SIGNON) {
+		switch (what) {
+		case log_signon:
+			g_snprintf(text, sizeof(text), "+++ %s (%s) signed on @ %s",
+				   gc->username, gc->prpl->name, full_date());
+			g_snprintf(html, sizeof(html), "<B>%s</B>", text);
+			break;
+		case log_signoff:
+			g_snprintf(text, sizeof(text), "+++ %s (%s) signed off @ %s",
+				   gc->username, gc->prpl->name, full_date());
+			g_snprintf(html, sizeof(html), "<I><FONT COLOR=GRAY>%s</FONT></I>", text);
+			break;
+		case log_away:
+			g_snprintf(text, sizeof(text), "+++ %s (%s) changed away state @ %s",
+				   gc->username, gc->prpl->name, full_date());
+			g_snprintf(html, sizeof(html), "<FONT COLOR=OLIVE>%s</FONT>", text);
+			break;
+		case log_back:
+			g_snprintf(text, sizeof(text), "+++ %s (%s) came back @ %s",
+				   gc->username, gc->prpl->name, full_date());
+			g_snprintf(html, sizeof(html), "%s", text);
+			break;
+		case log_idle:
+			g_snprintf(text, sizeof(text), "+++ %s (%s) became idle @ %s",
+				   gc->username, gc->prpl->name, full_date());
+			g_snprintf(html, sizeof(html), "<FONT COLOR=GRAY>%s</FONT>", text);
+			break;
+		case log_unidle:
+			g_snprintf(text, sizeof(text), "+++ %s (%s) returned from idle @ %s",
+				   gc->username, gc->prpl->name, full_date());
+			g_snprintf(html, sizeof(html), "%s", text);
+			break;
+		case log_quit:
+			g_snprintf(text, sizeof(text), "+++ Program exit @ %s", full_date());
+			g_snprintf(html, sizeof(html), "<I><FONT COLOR=GRAY>%s</FONT></I>", text);
+			break;
+		}
+	} else if (strcmp(who->name, who->show)) {
+		switch (what) {
+		case log_signon:
+			g_snprintf(text, sizeof(text), "%s (%s) reported that %s (%s) signed on @ %s",
+				   gc->username, gc->prpl->name, who->show, who->name, full_date());
+			g_snprintf(html, sizeof(html), "<B>%s</B>", text);
+			break;
+		case log_signoff:
+			g_snprintf(text, sizeof(text), "%s (%s) reported that %s (%s) signed off @ %s",
+				   gc->username, gc->prpl->name, who->show, who->name, full_date());
+			g_snprintf(html, sizeof(html), "<I><FONT COLOR=GRAY>%s</FONT></I>", text);
+			break;
+		case log_away:
+			g_snprintf(text, sizeof(text), "%s (%s) reported that %s (%s) went away @ %s",
+				   gc->username, gc->prpl->name, who->show, who->name, full_date());
+			g_snprintf(html, sizeof(html), "<FONT COLOR=OLIVE>%s</FONT>", text);
+			break;
+		case log_back:
+			g_snprintf(text, sizeof(text), "%s (%s) reported that %s (%s) came back @ %s",
+				   gc->username, gc->prpl->name, who->show, who->name, full_date());
+			g_snprintf(html, sizeof(html), "%s", text);
+			break;
+		case log_idle:
+			g_snprintf(text, sizeof(text), "%s (%s) reported that %s (%s) became idle @ %s",
+				   gc->username, gc->prpl->name, who->show, who->name, full_date());
+			g_snprintf(html, sizeof(html), "<FONT COLOR=GRAY>%s</FONT>", text);
+			break;
+		case log_unidle:
+			g_snprintf(text, sizeof(text),
+				   "%s (%s) reported that %s (%s) returned from idle @ %s", gc->username,
+				   gc->prpl->name, who->show, who->name, full_date());
+			g_snprintf(html, sizeof(html), "%s", text);
+			break;
+		default:
+			fclose(fd);
+			return;
+			break;
+		}
+	} else {
+		switch (what) {
+		case log_signon:
+			g_snprintf(text, sizeof(text), "%s (%s) reported that %s signed on @ %s",
+				   gc->username, gc->prpl->name, who->name, full_date());
+			g_snprintf(html, sizeof(html), "<B>%s</B>", text);
+			break;
+		case log_signoff:
+			g_snprintf(text, sizeof(text), "%s (%s) reported that %s signed off @ %s",
+				   gc->username, gc->prpl->name, who->name, full_date());
+			g_snprintf(html, sizeof(html), "<I><FONT COLOR=GRAY>%s</FONT></I>", text);
+			break;
+		case log_away:
+			g_snprintf(text, sizeof(text), "%s (%s) reported that %s went away @ %s",
+				   gc->username, gc->prpl->name, who->name, full_date());
+			g_snprintf(html, sizeof(html), "<FONT COLOR=OLIVE>%s</FONT>", text);
+			break;
+		case log_back:
+			g_snprintf(text, sizeof(text), "%s (%s) reported that %s came back @ %s",
+				   gc->username, gc->prpl->name, who->name, full_date());
+			g_snprintf(html, sizeof(html), "%s", text);
+			break;
+		case log_idle:
+			g_snprintf(text, sizeof(text), "%s (%s) reported that %s became idle @ %s",
+				   gc->username, gc->prpl->name, who->name, full_date());
+			g_snprintf(html, sizeof(html), "<FONT COLOR=GRAY>%s</FONT>", text);
+			break;
+		case log_unidle:
+			g_snprintf(text, sizeof(text),
+				   "%s (%s) reported that %s returned from idle @ %s", gc->username,
+				   gc->prpl->name, who->name, full_date());
+			g_snprintf(html, sizeof(html), "%s", text);
+			break;
+		default:
+			fclose(fd);
+			return;
+			break;
+		}
+	}
+
+	if (logging_options & OPT_LOG_STRIP_HTML) {
+		fprintf(fd, "---- %s ----\n", text);
+	} else {
+		if (logging_options & OPT_LOG_INDIVIDUAL)
+			fprintf(fd, "<HR>%s<BR><HR><BR>\n", html);
+		else
+			fprintf(fd, "%s<BR>\n", html);
+	}
+
+	fclose(fd);
+}
--- a/src/ui.h	Fri Jan 03 07:26:22 2003 +0000
+++ b/src/ui.h	Fri Jan 03 07:53:15 2003 +0000
@@ -394,10 +394,7 @@
 extern void surround(struct conversation *, char *, char *);
 extern int is_logging(char *);
 extern void set_state_lock(int);
-extern void rm_log(struct log_conversation *);
-extern struct log_conversation *find_log_info(const char *);
 extern void remove_tags(struct conversation *, char *);
-extern void update_log_convs();
 extern void update_transparency();
 extern void update_font_buttons();
 extern void toggle_sensitive(GtkWidget *widget, GtkWidget *to_toggle);
--- a/src/util.c	Fri Jan 03 07:26:22 2003 +0000
+++ b/src/util.c	Fri Jan 03 07:53:15 2003 +0000
@@ -342,150 +342,6 @@
 }
 
 
-FILE *open_gaim_log_file(const char *name, int *flag)
-{
-	char *buf;
-	char *buf2;
-	char log_all_file[256];
-	struct stat st;
-	FILE *fd;
-#ifndef _WIN32
-	int res;
-#endif
-	gchar *gaim_dir;
-
-	buf = g_malloc(BUF_LONG);
-	buf2 = g_malloc(BUF_LONG);
-	gaim_dir = gaim_user_dir();
-
-	/*  Dont log yourself */
-	strncpy(log_all_file, gaim_dir, 256);
-
-#ifndef _WIN32
-	stat(log_all_file, &st);
-	if (!S_ISDIR(st.st_mode))
-		unlink(log_all_file);
-
-	fd = fopen(log_all_file, "r");
-
-	if (!fd) {
-		res = mkdir(log_all_file, S_IRUSR | S_IWUSR | S_IXUSR);
-		if (res < 0) {
-			g_snprintf(buf, BUF_LONG, _("Unable to make directory %s for logging"),
-				   log_all_file);
-			do_error_dialog(buf, NULL, GAIM_ERROR);
-			g_free(buf);
-			g_free(buf2);
-			return NULL;
-		}
-	} else
-		fclose(fd);
-
-	g_snprintf(log_all_file, 256, "%s" G_DIR_SEPARATOR_S "logs", gaim_dir);
-
-	if (stat(log_all_file, &st) < 0)
-		*flag = 1;
-	if (!S_ISDIR(st.st_mode))
-		unlink(log_all_file);
-
-	fd = fopen(log_all_file, "r");
-	if (!fd) {
-		res = mkdir(log_all_file, S_IRUSR | S_IWUSR | S_IXUSR);
-		if (res < 0) {
-			g_snprintf(buf, BUF_LONG, _("Unable to make directory %s for logging"),
-				   log_all_file);
-			do_error_dialog(buf, NULL, GAIM_ERROR);
-			g_free(buf);
-			g_free(buf2);
-			return NULL;
-		}
-	} else
-		fclose(fd);
-#else /* _WIN32 */
-	g_snprintf(log_all_file, 256, "%s" G_DIR_SEPARATOR_S "logs", gaim_dir);
-
-	if( _mkdir(log_all_file) < 0 && errno != EEXIST ) {
-	  g_snprintf(buf, BUF_LONG, _("Unable to make directory %s for logging"), log_all_file);
-	  do_error_dialog(buf, NULL, GAIM_ERROR);
-	  g_free(buf);
-	  g_free(buf2);
-	  return NULL;
-	}
-#endif
-
-	g_snprintf(log_all_file, 256, "%s" G_DIR_SEPARATOR_S "logs" G_DIR_SEPARATOR_S "%s", gaim_dir, name);
-	if (stat(log_all_file, &st) < 0)
-		*flag = 1;
-
-	debug_printf("Logging to: \"%s\"\n", log_all_file);
-
-	fd = fopen(log_all_file, "a");
-
-	g_free(buf);
-	g_free(buf2);
-	return fd;
-}
-
-FILE *open_log_file(const char *name, int is_chat)
-{
-	struct stat st;
-	char realname[256];
-	struct log_conversation *l;
-	FILE *fd;
-	int flag = 0;
-
-	if (((is_chat == 2) && !(logging_options & OPT_LOG_INDIVIDUAL))
-		|| ((is_chat == 1) && !(logging_options & OPT_LOG_CHATS))
-		|| ((is_chat == 0) && !(logging_options & OPT_LOG_CONVOS))) {
-
-		l = find_log_info(name);
-		if (!l)
-			return NULL;
-
-		if (stat(l->filename, &st) < 0)
-			flag = 1;
-
-		fd = fopen(l->filename, "a");
-
-		if (flag) {	/* is a new file */
-			if (logging_options & OPT_LOG_STRIP_HTML) {
-				fprintf(fd, _("IM Sessions with %s\n"), name);
-			} else {
-				fprintf(fd, "<HTML><HEAD><TITLE>");
-				fprintf(fd, _("IM Sessions with %s"), name);
-				fprintf(fd, "</TITLE></HEAD><BODY BGCOLOR=\"ffffff\">\n");
-			}
-		}
-
-		return fd;
-	}
-
-	g_snprintf(realname, sizeof(realname), "%s.log", normalize(name));
-	fd = open_gaim_log_file(realname, &flag);
-
-	if (fd && flag) {	/* is a new file */
-		if (logging_options & OPT_LOG_STRIP_HTML) {
-			fprintf(fd, _("IM Sessions with %s\n"), name);
-		} else {
-			fprintf(fd, "<HTML><HEAD><TITLE>");
-			fprintf(fd, _("IM Sessions with %s"), name);
-			fprintf(fd, "</TITLE></HEAD><BODY BGCOLOR=\"ffffff\">\n");
-		}
-	}
-
-	return fd;
-}
-
-FILE *open_system_log_file(char *name)
-{
-	int x;
-
-	if (name)
-		return open_log_file(name, 2);
-	else
-		return open_gaim_log_file("system", &x);
-}
-
 const char alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" "0123456789+/";
 
 /* XXX Find bug */
@@ -986,152 +842,6 @@
 	return;
 }
 
-void system_log(enum log_event what, struct gaim_connection *gc, struct buddy *who, int why)
-{
-	FILE *fd;
-	char text[256], html[256];
-
-	if ((logging_options & why) != why)
-		return;
-
-	if (logging_options & OPT_LOG_INDIVIDUAL) {
-		if (why & OPT_LOG_MY_SIGNON)
-			fd = open_system_log_file(gc ? gc->username : NULL);
-		else
-			fd = open_system_log_file(who->name);
-	} else
-		fd = open_system_log_file(NULL);
-
-	if (!fd)
-		return;
-
-	if (why & OPT_LOG_MY_SIGNON) {
-		switch (what) {
-		case log_signon:
-			g_snprintf(text, sizeof(text), "+++ %s (%s) signed on @ %s",
-				   gc->username, gc->prpl->name, full_date());
-			g_snprintf(html, sizeof(html), "<B>%s</B>", text);
-			break;
-		case log_signoff:
-			g_snprintf(text, sizeof(text), "+++ %s (%s) signed off @ %s",
-				   gc->username, gc->prpl->name, full_date());
-			g_snprintf(html, sizeof(html), "<I><FONT COLOR=GRAY>%s</FONT></I>", text);
-			break;
-		case log_away:
-			g_snprintf(text, sizeof(text), "+++ %s (%s) changed away state @ %s",
-				   gc->username, gc->prpl->name, full_date());
-			g_snprintf(html, sizeof(html), "<FONT COLOR=OLIVE>%s</FONT>", text);
-			break;
-		case log_back:
-			g_snprintf(text, sizeof(text), "+++ %s (%s) came back @ %s",
-				   gc->username, gc->prpl->name, full_date());
-			g_snprintf(html, sizeof(html), "%s", text);
-			break;
-		case log_idle:
-			g_snprintf(text, sizeof(text), "+++ %s (%s) became idle @ %s",
-				   gc->username, gc->prpl->name, full_date());
-			g_snprintf(html, sizeof(html), "<FONT COLOR=GRAY>%s</FONT>", text);
-			break;
-		case log_unidle:
-			g_snprintf(text, sizeof(text), "+++ %s (%s) returned from idle @ %s",
-				   gc->username, gc->prpl->name, full_date());
-			g_snprintf(html, sizeof(html), "%s", text);
-			break;
-		case log_quit:
-			g_snprintf(text, sizeof(text), "+++ Program exit @ %s", full_date());
-			g_snprintf(html, sizeof(html), "<I><FONT COLOR=GRAY>%s</FONT></I>", text);
-			break;
-		}
-	} else if (strcmp(who->name, who->show)) {
-		switch (what) {
-		case log_signon:
-			g_snprintf(text, sizeof(text), "%s (%s) reported that %s (%s) signed on @ %s",
-				   gc->username, gc->prpl->name, who->show, who->name, full_date());
-			g_snprintf(html, sizeof(html), "<B>%s</B>", text);
-			break;
-		case log_signoff:
-			g_snprintf(text, sizeof(text), "%s (%s) reported that %s (%s) signed off @ %s",
-				   gc->username, gc->prpl->name, who->show, who->name, full_date());
-			g_snprintf(html, sizeof(html), "<I><FONT COLOR=GRAY>%s</FONT></I>", text);
-			break;
-		case log_away:
-			g_snprintf(text, sizeof(text), "%s (%s) reported that %s (%s) went away @ %s",
-				   gc->username, gc->prpl->name, who->show, who->name, full_date());
-			g_snprintf(html, sizeof(html), "<FONT COLOR=OLIVE>%s</FONT>", text);
-			break;
-		case log_back:
-			g_snprintf(text, sizeof(text), "%s (%s) reported that %s (%s) came back @ %s",
-				   gc->username, gc->prpl->name, who->show, who->name, full_date());
-			g_snprintf(html, sizeof(html), "%s", text);
-			break;
-		case log_idle:
-			g_snprintf(text, sizeof(text), "%s (%s) reported that %s (%s) became idle @ %s",
-				   gc->username, gc->prpl->name, who->show, who->name, full_date());
-			g_snprintf(html, sizeof(html), "<FONT COLOR=GRAY>%s</FONT>", text);
-			break;
-		case log_unidle:
-			g_snprintf(text, sizeof(text),
-				   "%s (%s) reported that %s (%s) returned from idle @ %s", gc->username,
-				   gc->prpl->name, who->show, who->name, full_date());
-			g_snprintf(html, sizeof(html), "%s", text);
-			break;
-		default:
-			fclose(fd);
-			return;
-			break;
-		}
-	} else {
-		switch (what) {
-		case log_signon:
-			g_snprintf(text, sizeof(text), "%s (%s) reported that %s signed on @ %s",
-				   gc->username, gc->prpl->name, who->name, full_date());
-			g_snprintf(html, sizeof(html), "<B>%s</B>", text);
-			break;
-		case log_signoff:
-			g_snprintf(text, sizeof(text), "%s (%s) reported that %s signed off @ %s",
-				   gc->username, gc->prpl->name, who->name, full_date());
-			g_snprintf(html, sizeof(html), "<I><FONT COLOR=GRAY>%s</FONT></I>", text);
-			break;
-		case log_away:
-			g_snprintf(text, sizeof(text), "%s (%s) reported that %s went away @ %s",
-				   gc->username, gc->prpl->name, who->name, full_date());
-			g_snprintf(html, sizeof(html), "<FONT COLOR=OLIVE>%s</FONT>", text);
-			break;
-		case log_back:
-			g_snprintf(text, sizeof(text), "%s (%s) reported that %s came back @ %s",
-				   gc->username, gc->prpl->name, who->name, full_date());
-			g_snprintf(html, sizeof(html), "%s", text);
-			break;
-		case log_idle:
-			g_snprintf(text, sizeof(text), "%s (%s) reported that %s became idle @ %s",
-				   gc->username, gc->prpl->name, who->name, full_date());
-			g_snprintf(html, sizeof(html), "<FONT COLOR=GRAY>%s</FONT>", text);
-			break;
-		case log_unidle:
-			g_snprintf(text, sizeof(text),
-				   "%s (%s) reported that %s returned from idle @ %s", gc->username,
-				   gc->prpl->name, who->name, full_date());
-			g_snprintf(html, sizeof(html), "%s", text);
-			break;
-		default:
-			fclose(fd);
-			return;
-			break;
-		}
-	}
-
-	if (logging_options & OPT_LOG_STRIP_HTML) {
-		fprintf(fd, "---- %s ----\n", text);
-	} else {
-		if (logging_options & OPT_LOG_INDIVIDUAL)
-			fprintf(fd, "<HR>%s<BR><HR><BR>\n", html);
-		else
-			fprintf(fd, "%s<BR>\n", html);
-	}
-
-	fclose(fd);
-}
-
 void strip_linefeed(gchar *text)
 {
 	int i, j;