[arch-commits] CVS update of extra/system/gparted (2 files)

James Rayner james at archlinux.org
Tue Jan 29 10:41:28 UTC 2008


    Date: Tuesday, January 29, 2008 @ 05:41:28
  Author: james
    Path: /home/cvs-extra/extra/system/gparted

   Added: 02_fdi_robustification.patch (1.1)
          gparted-0.3.3-device-reload-crash.patch (1.1)

added missing patches


-----------------------------------------+
 02_fdi_robustification.patch            |   67 ++++++++++++++++++++++++++++++
 gparted-0.3.3-device-reload-crash.patch |   17 +++++++
 2 files changed, 84 insertions(+)


Index: extra/system/gparted/02_fdi_robustification.patch
diff -u /dev/null extra/system/gparted/02_fdi_robustification.patch:1.1
--- /dev/null	Tue Jan 29 05:41:28 2008
+++ extra/system/gparted/02_fdi_robustification.patch	Tue Jan 29 05:41:28 2008
@@ -0,0 +1,67 @@
+diff -Nur gparted-0.3.3/src/GParted_Core.cc gparted-0.3.3.new/src/GParted_Core.cc
+--- gparted-0.3.3/src/GParted_Core.cc	2006-12-05 20:39:31.000000000 +0100
++++ gparted-0.3.3.new/src/GParted_Core.cc	2007-10-01 08:34:03.000000000 +0200
+@@ -38,6 +38,8 @@
+ #include "../include/ufs.h"
+ 
+ #include <cerrno>
++#include <cstdio>
++#include <csignal>
+ #include <sys/statvfs.h>	
+ 
+ std::vector<Glib::ustring> libparted_messages ; //see ped_exception_handler()
+@@ -45,6 +47,13 @@
+ namespace GParted
+ {
+ 
++// Clean up the fdi when terminating
++void sig_fdi_cleanup( int signum )
++{
++	remove( "/usr/share/hal/fdi/policy/gparted-disable-automount.fdi" );
++	raise( signum );
++}
++
+ GParted_Core::GParted_Core() 
+ {
+ 	lp_device = NULL ;
+@@ -53,6 +62,29 @@
+ 	p_filesystem = NULL ;
+ 
+ 	ped_exception_set_handler( ped_exception_handler ) ; 
++
++	//make sure that the fdi is cleaned up on all but the most forceful
++	//program exits
++	struct sigaction sa;
++	sa.sa_handler = sig_fdi_cleanup;
++	sigemptyset( &sa.sa_mask );
++	sa.sa_flags = SA_RESETHAND;
++	if( sigaction( SIGHUP, &sa, NULL ) == -1 ||
++	    sigaction( SIGINT, &sa, NULL ) == -1 ||
++	    sigaction( SIGQUIT, &sa, NULL ) == -1 ||
++	    sigaction( SIGILL, &sa, NULL ) == -1 ||
++	    sigaction( SIGABRT, &sa, NULL ) == -1 ||
++	    sigaction( SIGFPE, &sa, NULL ) == -1 ||
++	    sigaction( SIGSEGV, &sa, NULL ) == -1 ||
++	    sigaction( SIGPIPE, &sa, NULL ) == -1 ||
++	    sigaction( SIGALRM, &sa, NULL ) == -1 ||
++	    sigaction( SIGTERM, &sa, NULL ) == -1 ||
++	    sigaction( SIGUSR1, &sa, NULL ) == -1 ||
++	    sigaction( SIGUSR2, &sa, NULL ) == -1 ||
++	    sigaction( SIGBUS, &sa, NULL ) == -1 ||
++	    sigaction( SIGXCPU, &sa, NULL ) == -1 ||
++	    sigaction( SIGXFSZ, &sa, NULL ) == -1 )
++		perror( "Could not set signal handler" );
+ 	
+ 	//disable automount //FIXME: temporary hack, till i find a better solution...
+ 	std::ofstream fdi_file( "/usr/share/hal/fdi/policy/gparted-disable-automount.fdi" ) ;
+@@ -60,8 +92,8 @@
+ 	{
+ 		fdi_file << "<deviceinfo version='0.2'>" ;
+ 		fdi_file << "<device>" ;
+-		fdi_file << "<match key='@block.storage_device:storage.hotpluggable' bool='true'>" ;
+-		fdi_file << "<merge key='volume.ignore' type='bool'>true</merge>" ;
++		fdi_file << "<match key='storage.hotpluggable' bool='true'>" ;
++		fdi_file << "<merge key='storage.automount_enabled_hint' type='bool'>false</merge>" ;
+ 		fdi_file << "</match>" ;
+ 		fdi_file << "</device>" ;
+ 		fdi_file << "</deviceinfo>" ;
Index: extra/system/gparted/gparted-0.3.3-device-reload-crash.patch
diff -u /dev/null extra/system/gparted/gparted-0.3.3-device-reload-crash.patch:1.1
--- /dev/null	Tue Jan 29 05:41:28 2008
+++ extra/system/gparted/gparted-0.3.3-device-reload-crash.patch	Tue Jan 29 05:41:28 2008
@@ -0,0 +1,17 @@
+diff -ur gparted-0.3.3.orig/src/Win_GParted.cc gparted-0.3.3/src/Win_GParted.cc
+--- gparted-0.3.3.orig/src/Win_GParted.cc	2006-12-01 18:14:23.000000000 +0500
++++ gparted-0.3.3/src/Win_GParted.cc	2007-11-04 11:46:32.000000000 +0500
+@@ -916,8 +916,13 @@
+ 
+ void Win_GParted::combo_devices_changed()
+ {
++	unsigned int old_current_device = current_device;
+ 	//set new current device
+ 	current_device = combo_devices .get_active_row_number() ;
++	if ( current_device == (unsigned int) -1 )
++		current_device = old_current_device;
++	if ( current_device >= devices .size() )
++		current_device = 0 ;
+ 	set_title( String::ucompose( _("%1 - GParted"), devices[ current_device ] .get_path() ) );
+ 	
+ 	//refresh label_device_info




More information about the arch-commits mailing list