rpms/gnome-utils/F-8 logview-versions-crash.patch, NONE, 1.1 logview-versions-format.patch, NONE, 1.1 gnome-utils.spec, 1.157, 1.158

Matthias Clasen (mclasen) fedora-extras-commits at redhat.com
Fri Nov 16 22:29:25 UTC 2007


Author: mclasen

Update of /cvs/extras/rpms/gnome-utils/F-8
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv14252

Modified Files:
	gnome-utils.spec 
Added Files:
	logview-versions-crash.patch logview-versions-format.patch 
Log Message:
fix handling of versions


logview-versions-crash.patch:

--- NEW FILE logview-versions-crash.patch ---
diff -up gnome-utils-2.20.0.1/logview/log_repaint.c.versions gnome-utils-2.20.0.1/logview/log_repaint.c
--- gnome-utils-2.20.0.1/logview/log_repaint.c.versions	2007-11-16 13:29:00.000000000 -0500
+++ gnome-utils-2.20.0.1/logview/log_repaint.c	2007-11-16 13:29:43.000000000 -0500
@@ -226,6 +226,8 @@ logview_update_version_bar (LogviewWindo
 		else
 			recent = log;
 			
+		g_signal_handler_block (logview->version_selector, logview->version_changed_id);
+
 		for (i=5; i>-1; i--)
 			gtk_combo_box_remove_text (GTK_COMBO_BOX (logview->version_selector), i);
 
@@ -241,6 +243,8 @@ logview_update_version_bar (LogviewWindo
 		gtk_combo_box_set_active (GTK_COMBO_BOX (logview->version_selector), 
                                           log->current_version);
 
+		g_signal_handler_unblock (logview->version_selector, logview->version_changed_id);
+
 	} else {
 		gtk_widget_hide (logview->version_bar);
 	}
diff -up gnome-utils-2.20.0.1/logview/logview.h.versions gnome-utils-2.20.0.1/logview/logview.h
--- gnome-utils-2.20.0.1/logview/logview.h.versions	2007-11-16 13:27:55.000000000 -0500
+++ gnome-utils-2.20.0.1/logview/logview.h	2007-11-16 13:28:05.000000000 -0500
@@ -55,6 +55,7 @@ struct _LogviewWindow {
 	Log *curlog;
 
 	int original_fontsize, fontsize;
+	gulong version_changed_id;
 };
 
 struct _LogviewWindowClass {
diff -up gnome-utils-2.20.0.1/logview/logview.c.versions gnome-utils-2.20.0.1/logview/logview.c
--- gnome-utils-2.20.0.1/logview/logview.c.versions	2007-11-16 13:28:13.000000000 -0500
+++ gnome-utils-2.20.0.1/logview/logview.c	2007-11-16 13:28:52.000000000 -0500
@@ -432,6 +432,9 @@ logview_version_selector_changed (GtkCom
 
     g_assert (LOGVIEW_IS_WINDOW (logview));
 
+	if (!log)
+		return;
+
 	selected = gtk_combo_box_get_active (version_selector);
 
 	if (selected == log->current_version)
@@ -903,7 +906,7 @@ logview_init (LogviewWindow *logview)
    logview->version_bar = gtk_hbox_new (FALSE, 0);
    gtk_container_set_border_width (GTK_CONTAINER (logview->version_bar), 3);
    logview->version_selector = gtk_combo_box_new_text ();
-   g_signal_connect (G_OBJECT (logview->version_selector), "changed",
+   logview->version_changed_id = g_signal_connect (G_OBJECT (logview->version_selector), "changed",
                      G_CALLBACK (logview_version_selector_changed), logview);
    label = gtk_label_new (_("Version: "));
    

logview-versions-format.patch:

--- NEW FILE logview-versions-format.patch ---
diff -up gnome-utils-2.20.0.1/logview/logrtns.c.versions2 gnome-utils-2.20.0.1/logview/logrtns.c
--- gnome-utils-2.20.0.1/logview/logrtns.c.versions2	2007-11-16 13:35:29.000000000 -0500
+++ gnome-utils-2.20.0.1/logview/logrtns.c	2007-11-16 16:16:12.000000000 -0500
@@ -26,6 +26,7 @@
 #endif
 #include <gtk/gtk.h>
 #include <glib/gi18n.h>
+#include <glib/gstdio.h>
 #include <string.h>
 #include <stdlib.h>
 #include "logview.h"
@@ -251,12 +252,13 @@ log_read_dates (gchar **buffer_lines, ti
          while (newdate == NULL && !done) {
            i++;
            date_string = string_get_date_string (buffer_lines[i]);
-           if (date_string == NULL)
+           if (date_string == NULL) {
              if (i==n-1) {
                done = TRUE;
                break;
              } else
                continue;
+	   }
            newdate = string_get_date (buffer_lines[i]);
            
            if (newdate == NULL && i==n-1)
@@ -355,6 +357,26 @@ log_stats_new (char *filename, gboolean 
    return (stats);
 }
 
+typedef struct {
+    char *path;
+    time_t mtime;
+} FileTime;
+
+static gint sort_file_time (gconstpointer a, gconstpointer b)
+{
+   const FileTime *at = a;
+   const FileTime *bt = b;
+
+   return bt->mtime - at->mtime;
+}
+
+static void
+free_file_time (FileTime *ft)
+{
+   g_free (ft->path);
+   g_free (ft);
+}
+
 Log *
 log_open (char *filename, gboolean show_error)
 {
@@ -365,7 +387,11 @@ log_open (char *filename, gboolean show_
    int i, size;
    GList *days;
    Log *log;
-   
+   GDir *dir;
+   gchar *dirname, *basename, *path;
+   const gchar *name, *p;
+   GList *list, *l;
+
    stats = log_stats_new (filename, show_error);
    if (stats == NULL) {
        if (file_is_zipped (filename)) {    
@@ -382,7 +408,6 @@ log_open (char *filename, gboolean show_
        error_message = g_strdup_printf (_("%s is not a log file."), filename);
        goto error;
    }
-
    log = g_new0 (Log, 1);   
    if (log == NULL) {
        error_message = g_strdup (_("Not enough memory."));
@@ -429,20 +454,54 @@ log_open (char *filename, gboolean show_
    log->versions = 0;
    log->current_version = 0;
    log->parent_log = NULL;
-   for (i=1; i<5; i++) {
-       gchar *older_name;
-       older_name = g_strdup_printf ("%s.%d", log->name, i);
-       log->older_logs[i] = log_open (older_name, FALSE);
-       g_free (older_name);
-       if (log->older_logs[i] != NULL) {
-           log->older_logs[i]->parent_log = log;
-           log->older_logs[i]->current_version = i;
-           log->versions++;
-       }
-       else
-           break;
+
+   /* check for versions like cron-20071108 */
+   dirname = g_path_get_dirname (log->name);
+   basename = g_path_get_basename (log->name);
+   dir = g_dir_open (dirname, 0, NULL);
+   if (dir) {
+	list = NULL;
+   	while ((name = g_dir_read_name (dir))) {
+		FileTime *file;
+		struct stat buf;
+
+		if (!g_str_has_prefix (name, basename))
+			continue;
+
+		p = name + strlen (basename);
+		if (*p != '.' && *p != '-')
+			continue;
+
+		file = g_new (FileTime, 1);
+		file->path  = g_build_filename (dirname, name, NULL);
+
+		g_stat (file->path, &buf);
+		file->mtime = buf.st_mtime;
+
+		list = g_list_prepend (list, file);
+	}
+
+	list = g_list_sort (list, sort_file_time);
+	
+	for (l = list, i = 1; l && i < 5; l = l->next, i++) {
+		FileTime *ft = l->data;
+
+		log->older_logs[i] = log_open (ft->path, FALSE);
+		if (log->older_logs[i] != NULL) {
+           		log->older_logs[i]->parent_log = log;
+           		log->older_logs[i]->current_version = i;
+           		log->versions++;
+		}
+	}
+
+	g_list_foreach (list, free_file_time, NULL);
+	g_list_free (list);
+	g_dir_close (dir);
    }
 
+   g_free (dirname);
+   g_free (basename);
+
    return log;
 
 error:


Index: gnome-utils.spec
===================================================================
RCS file: /cvs/extras/rpms/gnome-utils/F-8/gnome-utils.spec,v
retrieving revision 1.157
retrieving revision 1.158
diff -u -r1.157 -r1.158
--- gnome-utils.spec	19 Oct 2007 15:59:52 -0000	1.157
+++ gnome-utils.spec	16 Nov 2007 22:28:52 -0000	1.158
@@ -10,7 +10,7 @@
 
 Name:           gnome-utils
 Version:        2.20.0.1
-Release:        2%{?dist}
+Release:        3%{?dist}
 Epoch: 		1
 Summary:        GNOME utility programs
 
@@ -22,6 +22,10 @@
 
 Patch0: 	logview-close-crash.patch
 Patch1:		logview-scroll-crash.patch
+# http://bugzilla.gnome.org/show_bug.cgi?id=497489
+Patch2:		logview-versions-crash.patch
+# http://bugzilla.gnome.org/show_bug.cgi?id=497490
+Patch3:		logview-versions-format.patch
 
 BuildRequires:  gnome-doc-utils >= %{gnome_doc_utils_version}
 BuildRequires: 	glib2-devel >= %{glib2_version}
@@ -77,6 +81,8 @@
 %setup -q
 %patch0 -p1 -b .logview-close
 %patch1 -p1 -b .logview-scroll
+%patch2 -p1 -b .versions-crash
+%patch3 -p1 -b .versions-format
 
 # Hide from menus
 pushd gsearchtool
@@ -236,6 +242,10 @@
 
 
 %changelog
+* Fri Nov 16 2007 Matthias Clasen <mclasen at redhat.com> - 2.20.0.1-3
+- Don't crash when multiple versions are present (#386511)
+- Make gnome-system-log pick up the versioning of rsyslog
+
 * Thu Oct 18 2007 Matthias Clasen <mclasen at redhat.com> - 2.20.0.1-2
 - Fix some crashes when scrolling (#321701)
 




More information about the fedora-extras-commits mailing list