[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