changeset 7436:7cdbd2eb7546

[gaim-migrate @ 8041] clean up whitespace, and make it not crash on old logs w/o HTML committer: Tailor Script <tailor@pidgin.im>
author Nathan Walp <nwalp@pidgin.im>
date Wed, 05 Nov 2003 22:12:55 +0000
parents be5a715b71c8
children bb9c06e7cf6d
files src/gtklog.c src/log.c
diffstat 2 files changed, 51 insertions(+), 39 deletions(-) [+]
line wrap: on
line diff
--- a/src/gtklog.c	Wed Nov 05 18:54:36 2003 +0000
+++ b/src/gtklog.c	Wed Nov 05 22:12:55 2003 +0000
@@ -121,8 +121,8 @@
 	GtkWidget *icon, *label, *pane, *sw, *button;
 	GList *logs;
 	char *text;
-	struct log_viewer_hash_t *ht = g_malloc(sizeof(struct log_viewer_hash_t)); 
-	
+	struct log_viewer_hash_t *ht = g_new0(struct log_viewer_hash_t, 1);
+
 	ht->screenname = g_strdup(screenname);
 	ht->account = account;
 
--- a/src/log.c	Wed Nov 05 18:54:36 2003 +0000
+++ b/src/log.c	Wed Nov 05 22:12:55 2003 +0000
@@ -5,7 +5,7 @@
  * gaim
  *
  * Copyright (C) 2003 Buzz Lightyear
- * 
+ *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
@@ -55,9 +55,9 @@
 	g_free(log->name);
 	g_free(log);
 }
-	
+
 
-void gaim_log_write(GaimLog *log, GaimMessageFlags type, 
+void gaim_log_write(GaimLog *log, GaimMessageFlags type,
 		    const char *from, time_t time, const char *message)
 {
 	g_return_if_fail(log);
@@ -81,7 +81,7 @@
 
 static GaimLogLogger *current_logger = NULL;
 static GSList *loggers = NULL;
-	 
+
 static void logger_pref_cb(const char *name, GaimPrefType type,
 			   gpointer value, gpointer data)
 {
@@ -100,7 +100,7 @@
 
 
 GaimLogLogger *gaim_log_logger_new(void(*new)(GaimLog *),
-				   void(*write)(GaimLog *, GaimMessageFlags, const char *, 
+				   void(*write)(GaimLog *, GaimMessageFlags, const char *,
 						time_t, const char *),
 				   void(*finalize)(GaimLog *), GList*(*list)(const char*, GaimAccount*),
 				   char*(*read)(GaimLog*, GaimLogReadFlags*))
@@ -137,7 +137,7 @@
 {
 	g_return_if_fail(logger);
 	current_logger = logger;
-}	
+}
 
 GaimLogLogger *gaim_log_logger_get()
 {
@@ -161,8 +161,11 @@
 	return list;
 }
 
-static gint log_compare(GaimLog *a, GaimLog *b)
+static gint log_compare(gconstpointer y, gconstpointer z)
 {
+	const GaimLog *a = y;
+	const GaimLog *b = z;
+
 	return b->time - a->time;
 }
 
@@ -176,12 +179,12 @@
 			continue;
 		logs = g_list_concat(logs, logger->list(name, account));
 	}
-	
+
 	return g_list_sort(logs, log_compare);
 }
 
 void gaim_log_init(void)
-{      
+{
 	gaim_prefs_add_none("/core/logging");
 	gaim_prefs_add_string("/core/logging/format", "txt");
 	gaim_log_logger_add(&txt_logger);
@@ -217,7 +220,7 @@
 			struct tm time;
 			GaimLog *log;
 			char d[5];
-			
+
 			strncpy(d, l, 4);
 			d[4] = '\0';
 			time.tm_year = atoi(d) - 1900;
@@ -235,7 +238,7 @@
 			strncpy(d, l, 2);
 			time.tm_hour = atoi(d);
 			l = l + 2;
-			
+
 			strncpy(d, l, 2);
 			time.tm_min = atoi(d);
 			l = l + 2;
@@ -368,8 +371,8 @@
  ** PLAIN TEXT LOGGER *******
  ****************************/
 
-static void txt_logger_write(GaimLog *log, 
-			     GaimMessageFlags type, 
+static void txt_logger_write(GaimLog *log,
+			     GaimMessageFlags type,
 			     const char *from, time_t time, const char *message)
 {
 	char date[64];
@@ -385,33 +388,33 @@
 			(gaim_find_prpl(gaim_account_get_protocol(log->account)))->list_icon(log->account, NULL);
 		char *dir;
 		FILE *file;
-		
+
 		strftime(date, sizeof(date), "%F.%H%M%S.txt", localtime(&log->time));
-		
+
 		dir = g_build_filename(ud, "logs", NULL);
 		mkdir (dir, S_IRUSR | S_IWUSR | S_IXUSR);
 		g_free(dir);
-		dir = g_build_filename(ud, "logs", 
+		dir = g_build_filename(ud, "logs",
 				       prpl, NULL);
 		mkdir (dir, S_IRUSR | S_IWUSR | S_IXUSR);
 		g_free(dir);
-		dir = g_build_filename(ud, "logs", 
+		dir = g_build_filename(ud, "logs",
 				       prpl, guy, NULL);
 		mkdir (dir, S_IRUSR | S_IWUSR | S_IXUSR);
-		g_free(dir);	      
-		dir = g_build_filename(ud, "logs", 
+		g_free(dir);
+		dir = g_build_filename(ud, "logs",
 				       prpl, guy, gaim_normalize(log->account, log->name), NULL);
 		mkdir (dir, S_IRUSR | S_IWUSR | S_IXUSR);
-						 
+
 		char *filename = g_build_filename(dir, date, NULL);
 		g_free(dir);
-		
+
 		file = fopen(dir, "r");
 		if(!file)
 			mkdir(dir, S_IRUSR | S_IWUSR | S_IXUSR);
 		else
 			fclose(file);
-		
+
 		log->logger_data = fopen(filename, "a");
 		if (!log->logger_data) {
 			gaim_debug(GAIM_DEBUG_ERROR, "log", "Could not create log file %s\n", filename);
@@ -421,7 +424,7 @@
 		fprintf(log->logger_data, "Conversation with %s at %s on %s (%s)\n",
 			log->name, date, gaim_account_get_username(log->account), prpl);
 	}
-	
+
 	strftime(date, sizeof(date), "%T", localtime(&time));
 	stripped = gaim_markup_strip_html(message);
 	fprintf(log->logger_data, "(%s) %s%s %s\n", date, from ? from : "", from ? ":" : "", stripped);
@@ -449,13 +452,13 @@
 		minus_header = strchr(read, '\n');
 		if (!minus_header)
 			minus_header = g_strdup(read);
-		else 
+		else
 			minus_header = g_strdup(minus_header + 1);
 		g_free(read);
 		return minus_header;
 	}
         return g_strdup(_("<font color='red'><b>Could not read file: %s</b></font>"));
-}		
+}
 
 static GaimLogLogger txt_logger = {
 	N_("Plain text"), "txt",
@@ -480,7 +483,7 @@
 	int length;
 };
 
-static GList *old_logger_list(const char *sn, GaimAccount *account) 
+static GList *old_logger_list(const char *sn, GaimAccount *account)
 {
 	FILE *file;
 	char buf[BUF_LONG];
@@ -497,7 +500,7 @@
 
 	if (!(file = fopen(path, "r")))
 		return NULL;
-	
+
 	while (fgets(buf, BUF_LONG, file)) {
 		if ((newlog = strstr(buf, "---- New C"))) {
 			int length;
@@ -505,20 +508,27 @@
 			GDate gdate;
 			char convostart[32];
 			char *temp = strchr(buf, '@');
-			
+
 			if (temp == NULL || strlen(temp) < 2)
 				continue;
-		
+
 			temp++;
 			length = strcspn(temp, "-");
 			if (length > 31) length = 31;
-			
+
 			offset = ftell(file);
-			
+
 			if (data) {
-				data->length = offset - data->offset - length - 
-					strlen("<HR><BR><H3 Align=Center> ---- New Conversation @ ") -
-					strlen("----</H3><BR>");
+				data->length = offset - data->offset - length;
+				if(strstr(buf, "----</H3><BR>")) {
+					data->length -=
+						strlen("<HR><BR><H3 Align=Center> ---- New Conversation @ ") +
+						strlen("----</H3><BR>");
+				} else {
+					data->length -=
+						strlen("---- New Conversation @ ") + strlen("----");
+				}
+
 				if (data->length != 0)
 					list = g_list_append(list, log);
 				else
@@ -528,12 +538,12 @@
 			log = gaim_log_new(GAIM_LOG_IM, sn, account, -1);
 			log->logger = &old_logger;
 
-			data = g_malloc(sizeof(struct old_logger_data));
+			data = g_new0(struct old_logger_data, 1);
 			data->offset = offset;
 			data->path   = path;
 			log->logger_data = data;
 
-		
+
 			g_snprintf(convostart, length, "%s", temp);
 			sscanf(convostart, "%*s %s %s %d:%d:%d %s",
 			       month, day, &tm.tm_hour, &tm.tm_min, &tm.tm_sec, year);
@@ -552,13 +562,15 @@
 
 char * old_logger_read (GaimLog *log, GaimLogReadFlags *flags)
 {
-	*flags = GAIM_LOG_READ_NO_NEWLINE;
 	struct old_logger_data *data = log->logger_data;
 	FILE *file = fopen(data->path, "r");
 	char *read = g_malloc(data->length + 1);
 	fseek(file, data->offset, SEEK_SET);
 	fread(read, data->length, 1, file);
 	read[data->length] = '\0';
+	*flags = 0;
+	if(strstr(read, "<BR>"))
+		*flags |= GAIM_LOG_READ_NO_NEWLINE;
 	return read;
 }