diff --git a/gnome-system-monitor-sysinfo.patch b/gnome-system-monitor-sysinfo.patch index 6ae3a67..cbe55a3 100644 --- a/gnome-system-monitor-sysinfo.patch +++ b/gnome-system-monitor-sysinfo.patch @@ -1,512 +1,47 @@ -diff -urpN gnome-system-monitor-2.12.2-pristine/src/callbacks.c gnome-system-monitor-2.12.2/src/callbacks.c ---- gnome-system-monitor-2.12.2-pristine/src/callbacks.c 2005-08-11 10:50:26.000000000 -0400 -+++ gnome-system-monitor-2.12.2/src/callbacks.c 2006-06-06 11:28:44.000000000 -0400 -@@ -374,7 +374,7 @@ cb_change_current_page (GtkNotebook *nb, - procdata->config.current_tab = num; +--- src/sysinfo.cpp ++++ src/sysinfo.cpp +@@ -222,7 +222,7 @@ + GError *error = 0; + int status; - -- if (num == 0) { -+ if (num == 1) { - - cb_timeout (procdata); - -@@ -396,7 +396,7 @@ cb_change_current_page (GtkNotebook *nb, +- if (g_spawn_command_line_sync("lsb_release -irc", ++ if (g_spawn_command_line_sync("lsb_release -drc", + &out, + 0, + &status, +@@ -234,7 +234,7 @@ + and this->get_value(input, release) + and this->get_value(input, codename); + this->distro_release = release; +- if (codename != "") ++ if (codename != "" && codename != "n/a") + this->distro_release += " (" + codename + ')'; } + } +@@ -386,7 +386,7 @@ + gtk_frame_set_shadow_type(GTK_FRAME(distro_frame), GTK_SHADOW_NONE); + gtk_box_pack_start(GTK_BOX(vbox), distro_frame, FALSE, FALSE, 0); + alignment = gtk_alignment_new(0.5, 0.5, 1.0, 1.0); +- gtk_alignment_set_padding(GTK_ALIGNMENT(alignment), 0, 0, 12, 0); ++ gtk_alignment_set_padding(GTK_ALIGNMENT(alignment), 0, 0, 32, 0); + gtk_container_add(GTK_CONTAINER(distro_frame), alignment); + GtkWidget* distro_box = gtk_hbox_new(FALSE, 12); +@@ -434,7 +434,7 @@ + gtk_box_pack_start(GTK_BOX(vbox), hardware_frame, FALSE, FALSE, 0); -- if (num == 1) { -+ if (num == 2) { - load_graph_start (procdata->cpu_graph); - load_graph_start (procdata->mem_graph); - load_graph_start (procdata->net_graph); -@@ -408,7 +408,7 @@ cb_change_current_page (GtkNotebook *nb, - } + alignment = gtk_alignment_new(0.5, 0.5, 1.0, 1.0); +- gtk_alignment_set_padding(GTK_ALIGNMENT(alignment), 0, 0, 12, 0); ++ gtk_alignment_set_padding(GTK_ALIGNMENT(alignment), 0, 0, 32, 0); + gtk_container_add(GTK_CONTAINER(hardware_frame), alignment); + hardware_table = gtk_table_new(data->processors.size(), 2, FALSE); +@@ -500,7 +500,7 @@ + gtk_box_pack_start(GTK_BOX(vbox), disk_space_frame, FALSE, FALSE, 0); -- if (num == 2) { -+ if (num == 3) { + alignment = gtk_alignment_new(0.5, 0.5, 1.0, 1.0); +- gtk_alignment_set_padding(GTK_ALIGNMENT(alignment), 0, 0, 12, 0); ++ gtk_alignment_set_padding(GTK_ALIGNMENT(alignment), 0, 0, 32, 0); + gtk_container_add(GTK_CONTAINER(disk_space_frame), alignment); - cb_update_disks (procdata); - -diff -urpN gnome-system-monitor-2.12.2-pristine/src/interface.c gnome-system-monitor-2.12.2/src/interface.c ---- gnome-system-monitor-2.12.2-pristine/src/interface.c 2005-08-11 10:50:26.000000000 -0400 -+++ gnome-system-monitor-2.12.2/src/interface.c 2006-06-06 15:52:31.000000000 -0400 -@@ -29,6 +29,8 @@ - #include - #include - #include -+#include -+#include - - #include "procman.h" - #include "callbacks.h" -@@ -155,6 +157,413 @@ static const char ui_info[] = - " " - " "; - -+typedef struct { -+ gchar *distro_name; -+ gchar *distro_version; -+ gchar *distro_release; -+ -+ glong memory_bytes; -+ gint n_processors; -+ gchar **processor_models; -+ -+ guint64 free_space_bytes; -+} SysInfoData; -+ -+static SysInfoData *get_system_information (void); -+static void sys_info_data_free (SysInfoData *); -+ -+static void load_distro_info (SysInfoData *); -+static void load_memory_info (SysInfoData *); -+static void load_processor_info (SysInfoData *); -+static void load_disk_space_info (SysInfoData *); -+ -+static SysInfoData * -+get_system_information () -+{ -+ SysInfoData *data = g_new0 (SysInfoData, 1); -+ -+ load_distro_info (data); -+ load_memory_info (data); -+ load_processor_info (data); -+ load_disk_space_info (data); -+ -+ return data; -+} -+ -+static void -+sys_info_data_free (SysInfoData *data) -+{ -+ gint i; -+ -+ g_return_if_fail (data); -+ -+ g_free (data->distro_name); -+ g_free (data->distro_version); -+ g_free (data->distro_release); -+ -+ for (i = 0; i < data->n_processors; ++i) -+ g_free (data->processor_models [i]); -+ -+ g_free (data->processor_models); -+ -+ g_free (data); -+} -+ -+static void -+load_distro_info (SysInfoData *data) -+{ -+ gchar *contents; -+ gchar **lines; -+ -+ gchar *cursor; -+ gint i; -+ -+ GError *error = NULL; -+ -+ -+ g_assert (data); -+ -+ if (g_file_get_contents ("/etc/SuSE-release", & contents, NULL, & error)) { -+ lines = g_strsplit (contents, "\n", 0); -+ -+ for (i = 0; lines [i]; ++i) { -+ if (strstr (lines [i], "VERSION")) { -+ cursor = strstr (lines [i], "=") + 1; -+ g_strstrip (cursor); -+ -+ data->distro_version = g_strdup (cursor); -+ } -+ else if (strstr (lines [i], "RELEASE")) { -+ cursor = strstr (lines [i], "=") + 1; -+ g_strstrip (cursor); -+ -+ data->distro_release = g_strdup (cursor); -+ } -+ else if (! data->distro_name) { -+ g_strstrip (lines [i]); -+ -+ data->distro_name = g_strdup (lines [i]); -+ } -+ else -+ ; -+ } -+ -+ g_strfreev (lines); -+ g_free (contents); -+ } -+ else { -+ g_error ("Error opening /etc/SuSE-release [%s]\n", error->message); -+ -+ g_error_free (error); -+ } -+} -+ -+static void -+load_memory_info (SysInfoData *data) -+{ -+ gchar *contents; -+ gchar **lines; -+ gchar **tokens; -+ -+ gint i, j; -+ -+ GError *error = NULL; -+ -+ -+ g_assert (data); -+ -+ if (g_file_get_contents ("/proc/meminfo", & contents, NULL, & error)) { -+ lines = g_strsplit (contents, "\n", 0); -+ -+ for (i = 0; lines [i]; ++i) { -+ if (strstr (lines [i], "MemTotal: ")) { -+ tokens = g_strsplit (lines [i], " ", 0); -+ -+ for (j = 1; tokens [j]; ++j) -+ if (strlen (tokens [j]) > 0 && g_ascii_isdigit (* tokens [j])) -+ data->memory_bytes = atol (tokens [j]) * 1024; -+ -+ g_strfreev (tokens); -+ } -+ } -+ -+ g_strfreev (lines); -+ g_free (contents); -+ } -+ else { -+ g_error ("Error opening /proc/meminfo [%s]\n", error->message); -+ -+ g_error_free (error); -+ } -+} -+ -+static void -+load_processor_info (SysInfoData *data) -+{ -+ GList *processors; -+ gint n_processors; -+ -+ gchar *contents; -+ gchar **lines; -+ -+ gchar *cursor; -+ gint i; -+ -+ GList *node; -+ -+ GError *error = NULL; -+ -+ -+ g_assert (data); -+ -+ if (! g_file_get_contents ("/proc/cpuinfo", & contents, NULL, & error)) { -+ g_error ("Couldn't open /proc/cpuinfo: %s", error->message); -+ -+ g_error_free (error); -+ -+ return; -+ } -+ -+ lines = g_strsplit (contents, "\n", 0); -+ -+ processors = NULL; -+ n_processors = 0; -+ -+ for (i = 0; lines [i]; ++i) { -+ if (strstr (lines [i], "processor\t:")) { -+ n_processors ++; -+ -+ cursor = strstr (lines [i], ":"); -+ -+ for (; lines [i]; ++i) { -+ if (strstr (lines [i], "model name\t:")) { -+ cursor = strstr (lines [i], ":"); -+ -+ if (strlen (cursor) > 1) { -+ g_strstrip (++ cursor); -+ -+ processors = g_list_append (processors, cursor); -+ } -+ -+ break; -+ } -+ } -+ -+ if (! lines [i]) -+ break; -+ } -+ } -+ -+ data->n_processors = n_processors; -+ data->processor_models = g_new0 (gchar *, n_processors); -+ -+ for (i = 0, node = processors; i < n_processors && node; ++i, node = node->next) -+ data->processor_models [i] = g_strdup ((gchar *) node->data); -+ -+ g_strfreev (lines); -+ g_free (contents); -+} -+ -+static void -+load_disk_space_info (SysInfoData *data) -+{ -+ glibtop_mountentry *entries; -+ glibtop_mountlist mountlist; -+ glibtop_fsusage usage; -+ -+ gint i; -+ -+ -+ g_assert (data); -+ -+ entries = glibtop_get_mountlist (& mountlist, 0); -+ -+ data->free_space_bytes = 0; -+ -+ for (i = 0; i < mountlist.number; ++i) { -+ if (! strncmp (entries [i].devname, "/dev/", 5)) { -+ glibtop_get_fsusage (& usage, entries [i].mountdir); -+ -+ data->free_space_bytes += usage.bfree * usage.block_size; -+ } -+ } -+ -+ g_free (entries); -+} -+ -+static GtkWidget * -+create_sysinfo_view (void) -+{ -+ GtkWidget *hbox; -+ GtkWidget *vbox; -+ -+ SysInfoData *data; -+ -+ GtkWidget *novell_logo; -+ -+ GtkWidget *distro_frame; -+ -+ GtkWidget *hardware_frame; -+ GtkWidget *hardware_table; -+ GtkWidget *memory_label; -+ GtkWidget *processor_label; -+ -+ GtkWidget *disk_space_frame; -+ GtkWidget *disk_space_table; -+ GtkWidget *disk_space_label; -+ -+ GtkWidget *header; -+ GtkWidget *alignment; -+ -+ gchar *markup; -+ gint i; -+ -+ -+ if (! (data = get_system_information ())) -+ return NULL; -+ -+ hbox = gtk_hbox_new (FALSE, 12); -+ gtk_container_set_border_width (GTK_CONTAINER (hbox), 6); -+ -+/* left-side logo */ -+ -+ novell_logo = gtk_image_new_from_file (DATADIR "/pixmaps/gnome-system-monitor/n-side.png"); -+ gtk_misc_set_alignment (GTK_MISC (novell_logo), 0.5, 0.0); -+ gtk_misc_set_padding (GTK_MISC (novell_logo), 5, 12); -+ gtk_box_pack_start (GTK_BOX (hbox), novell_logo, FALSE, FALSE, 0); -+ -+ vbox = gtk_vbox_new (FALSE, 12); -+ gtk_container_set_border_width (GTK_CONTAINER (vbox), 12); -+ gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0); -+ -+/* distro section */ -+ -+ markup = g_strdup_printf ("%s", data->distro_name); -+ distro_frame = gtk_frame_new (markup); -+ gtk_frame_set_label_align (GTK_FRAME (distro_frame), 0.0, 0.5); -+ gtk_label_set_use_markup ( -+ GTK_LABEL (gtk_frame_get_label_widget (GTK_FRAME (distro_frame))), -+ TRUE -+ ); -+ gtk_frame_set_shadow_type (GTK_FRAME (distro_frame), GTK_SHADOW_NONE); -+ gtk_box_pack_start (GTK_BOX (vbox), distro_frame, FALSE, FALSE, 0); -+ g_free (markup); -+ -+ alignment = gtk_alignment_new (0.5, 0.5, 1.0, 1.0); -+ gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); -+ gtk_container_add (GTK_CONTAINER (distro_frame), alignment); -+ -+/* hardware section */ -+ -+ markup = g_strdup_printf (_("Hardware")); -+ hardware_frame = gtk_frame_new (markup); -+ gtk_frame_set_label_align (GTK_FRAME (hardware_frame), 0.0, 0.5); -+ gtk_label_set_use_markup ( -+ GTK_LABEL (gtk_frame_get_label_widget (GTK_FRAME (hardware_frame))), -+ TRUE -+ ); -+ gtk_frame_set_shadow_type (GTK_FRAME (hardware_frame), GTK_SHADOW_NONE); -+ gtk_box_pack_start (GTK_BOX (vbox), hardware_frame, FALSE, FALSE, 0); -+ g_free (markup); -+ -+ alignment = gtk_alignment_new (0.5, 0.5, 1.0, 1.0); -+ gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); -+ gtk_container_add (GTK_CONTAINER (hardware_frame), alignment); -+ -+ hardware_table = gtk_table_new (1 + data->n_processors, 2, FALSE); -+ gtk_table_set_row_spacings (GTK_TABLE (hardware_table), 6); -+ gtk_table_set_col_spacings (GTK_TABLE (hardware_table), 6); -+ gtk_container_set_border_width (GTK_CONTAINER (hardware_table), 6); -+ gtk_container_add (GTK_CONTAINER (alignment), hardware_table); -+ -+ header = gtk_label_new (_("Memory:")); -+ gtk_misc_set_alignment (GTK_MISC (header), 0.0, 0.5); -+ gtk_table_attach ( -+ GTK_TABLE (hardware_table), header, -+ 0, 1, 0, 1, -+ GTK_FILL, 0, 0, 0 -+ ); -+ -+ markup = SI_gnome_vfs_format_file_size_for_display (data->memory_bytes); -+ memory_label = gtk_label_new (markup); -+ gtk_misc_set_alignment (GTK_MISC (memory_label), 0.0, 0.5); -+ gtk_table_attach ( -+ GTK_TABLE (hardware_table), memory_label, -+ 1, 2, 0, 1, -+ GTK_FILL, 0, 0, 0 -+ ); -+ g_free (markup); -+ -+ for (i = 0; i < data->n_processors; ++i) { -+ if (data->n_processors > 1) { -+ markup = g_strdup_printf (_("Processor %d:"), i); -+ -+ header = gtk_label_new (markup); -+ } -+ else -+ header = gtk_label_new (_("Processor:")); -+ -+ gtk_misc_set_alignment (GTK_MISC (header), 0.0, 0.5); -+ gtk_table_attach ( -+ GTK_TABLE (hardware_table), header, -+ 0, 1, 1 + i, 2 + i, -+ GTK_FILL, 0, 0, 0 -+ ); -+ -+ processor_label = gtk_label_new (data->processor_models [i]); -+ gtk_misc_set_alignment (GTK_MISC (processor_label), 0.0, 0.5); -+ gtk_table_attach ( -+ GTK_TABLE (hardware_table), processor_label, -+ 1, 2, 1 + i, 2 + i, -+ GTK_FILL, 0, 0, 0 -+ ); -+ } -+ -+/* disk space section */ -+ -+ markup = g_strdup_printf (_("System Status")); -+ disk_space_frame = gtk_frame_new (markup); -+ gtk_frame_set_label_align (GTK_FRAME (disk_space_frame), 0.0, 0.5); -+ gtk_label_set_use_markup ( -+ GTK_LABEL (gtk_frame_get_label_widget (GTK_FRAME (disk_space_frame))), -+ TRUE -+ ); -+ gtk_frame_set_shadow_type (GTK_FRAME (disk_space_frame), GTK_SHADOW_NONE); -+ gtk_box_pack_start (GTK_BOX (vbox), disk_space_frame, FALSE, FALSE, 0); -+ g_free (markup); -+ -+ alignment = gtk_alignment_new (0.5, 0.5, 1.0, 1.0); -+ gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); -+ gtk_container_add (GTK_CONTAINER (disk_space_frame), alignment); -+ -+ disk_space_table = gtk_table_new (1, 2, FALSE); -+ gtk_table_set_row_spacings (GTK_TABLE (disk_space_table), 6); -+ gtk_table_set_col_spacings (GTK_TABLE (disk_space_table), 6); -+ gtk_container_set_border_width (GTK_CONTAINER (disk_space_table), 6); -+ gtk_container_add (GTK_CONTAINER (alignment), disk_space_table); -+ -+ header = gtk_label_new (_("User Space Free:")); -+ gtk_misc_set_alignment (GTK_MISC (header), 0.0, 0.5); -+ gtk_table_attach ( -+ GTK_TABLE (disk_space_table), header, -+ 0, 1, 0, 1, -+ GTK_FILL, 0, 0, 0 -+ ); -+ -+ markup = SI_gnome_vfs_format_file_size_for_display (data->free_space_bytes); -+ disk_space_label = gtk_label_new (markup); -+ gtk_misc_set_alignment (GTK_MISC (disk_space_label), 0.0, 0.5); -+ gtk_table_attach ( -+ GTK_TABLE (disk_space_table), disk_space_label, -+ 1, 2, 0, 1, -+ GTK_FILL, 0, 0, 0 -+ ); -+ g_free (markup); -+ -+ sys_info_data_free (data); -+ -+ return hbox; -+} - - static GtkWidget * - create_proc_view (ProcData *procdata) -@@ -676,6 +1085,8 @@ create_main_window (ProcData *procdata) - GtkWidget *tab_label1, *tab_label2, *tab_label3; - GtkWidget *vbox1; - GtkWidget *sys_box, *devices_box; -+ GtkWidget *sysinfo_box; -+ GtkWidget *sysinfo_label; - - app = gnome_app_new ("procman", _("System Monitor")); - -@@ -742,6 +1153,12 @@ create_main_window (ProcData *procdata) - 0); - gtk_widget_show (notebook); - -+ sysinfo_box = create_sysinfo_view (); -+ gtk_widget_show_all (sysinfo_box); -+ sysinfo_label = gtk_label_new (_("System")); -+ gtk_widget_show (sysinfo_label); -+ gtk_notebook_append_page (GTK_NOTEBOOK (notebook), sysinfo_box, sysinfo_label); -+ - vbox1 = create_proc_view (procdata); - gtk_widget_show (vbox1); - tab_label1 = gtk_label_new (_("Processes")); -Files gnome-system-monitor-2.12.2-pristine/src/.interface.c.swp and gnome-system-monitor-2.12.2/src/.interface.c.swp differ -diff -urpN gnome-system-monitor-2.12.2-pristine/src/procdialogs.c gnome-system-monitor-2.12.2/src/procdialogs.c ---- gnome-system-monitor-2.12.2-pristine/src/procdialogs.c 2005-07-07 19:41:25.000000000 -0400 -+++ gnome-system-monitor-2.12.2/src/procdialogs.c 2006-06-06 11:28:44.000000000 -0400 -@@ -799,7 +799,7 @@ procdialog_create_preferences_dialog (Pr - g_signal_connect (G_OBJECT (dialog), "response", - G_CALLBACK (prefs_dialog_button_pressed), procdata); - -- if (procdata->config.current_tab == 0) -+ if (procdata->config.current_tab <= 1) - gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), 0); - else - gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), 1); -diff -urpN gnome-system-monitor-2.12.2-pristine/src/procman.c gnome-system-monitor-2.12.2/src/procman.c ---- gnome-system-monitor-2.12.2-pristine/src/procman.c 2005-10-01 03:47:21.000000000 -0400 -+++ gnome-system-monitor-2.12.2/src/procman.c 2006-06-06 11:28:44.000000000 -0400 -@@ -73,7 +73,7 @@ view_as_changed_cb (GConfClient *client, - GConfValue *value = gconf_entry_get_value (entry); - - procdata->config.whose_process = gconf_value_get_int (value); -- procdata->config.whose_process = CLAMP (procdata->config.whose_process, 0, 2); -+ procdata->config.whose_process = CLAMP (procdata->config.whose_process, 0, 3); - proctable_clear_tree (procdata); - proctable_update_all (procdata); - -@@ -385,7 +385,7 @@ procman_data_new (GConfClient *client) - pd->config.graph_update_interval = MAX (pd->config.graph_update_interval, 250); - pd->config.disks_update_interval = MAX (pd->config.disks_update_interval, 1000); - pd->config.whose_process = CLAMP (pd->config.whose_process, 0, 2); -- pd->config.current_tab = CLAMP (pd->config.current_tab, 0, 2); -+ pd->config.current_tab = CLAMP (pd->config.current_tab, 0, 3); - - /* Determinie number of cpus since libgtop doesn't really tell you*/ - pd->config.num_cpus = 0; + disk_space_table = gtk_table_new(1, 2, FALSE); diff --git a/gnome-system-monitor.changes b/gnome-system-monitor.changes index a946a94..feb068b 100644 --- a/gnome-system-monitor.changes +++ b/gnome-system-monitor.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Thu Aug 30 23:10:06 CEST 2007 - sreeves@suse.de + +- fix for #253997 + ------------------------------------------------------------------- Tue Aug 7 21:42:14 CEST 2007 - maw@suse.de diff --git a/gnome-system-monitor.spec b/gnome-system-monitor.spec index a050814..e26b15f 100644 --- a/gnome-system-monitor.spec +++ b/gnome-system-monitor.spec @@ -15,7 +15,7 @@ BuildRequires: docbook-xsl-stylesheets fdupes gcc-c++ gnome-common gnome-doc-ut License: GPL v2 or later Group: System/GUI/GNOME Version: 2.19.6 -Release: 4 +Release: 17 Source0: ftp://ftp.gnome.org/pub/GNOME/sources/gnome-system-monitor/2.17/%{name}-%{version}.tar.bz2 URL: http://www.gnome.org BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -23,8 +23,6 @@ Summary: A Simple Process Monitor Requires: gnome-icon-theme Requires: %{name}-lang = %{version} Patch: gnome-system-monitor-desktop.patch -# FIXME: this patch needs to be fixed up. gnome-system-monitor is written in c++ now (woo) and as such -# several filenames have changed. Patch1: gnome-system-monitor-sysinfo.patch Patch2: gnome-system-monitor-resident-schema.patch @@ -46,7 +44,7 @@ Authors: %setup -q gnome-patch-translation-prepare %patch -p1 -# %patch1 -p1 +%patch1 -p0 %patch2 gnome-patch-translation-update @@ -92,6 +90,8 @@ rm -rf $RPM_BUILD_ROOT %files lang -f %{name}.lang %changelog +* Thu Aug 30 2007 - sreeves@suse.de +- fix for #253997 * Tue Aug 07 2007 - maw@suse.de - Split off a -lang subpackage. * Thu Aug 02 2007 - maw@suse.de