Fixed bug #324220 with the following changes:
- Removed gparted-disable-automount.fdi handling. - Renamed gparted binary to gpartedbin to permit a calling script to be named gparted. - Added new calling script gparted.in to permit using hal-lock to acuiqre device locks to prevent automounting while executing gpartedbin. - Renamed gparted.desktop.in to gparted.desktop.in.in to permit parsing installdir. svn path=/trunk/; revision=826
This commit is contained in:
parent
1eb4e1aea5
commit
605e1f4cdc
25
ChangeLog
25
ChangeLog
|
@ -1,3 +1,28 @@
|
|||
2008-04-21 Curtis Gedak <gedakc@gmail.com>
|
||||
|
||||
* Makefile.am: Enhanced for new calling script gparted
|
||||
- Added gparted script installation in sbin
|
||||
- Added installdir parsing for gparted and gparted.desktop
|
||||
|
||||
* gparted.desktop.in: Renamed gparted.desktop.in
|
||||
to gparted.desktop.in.in
|
||||
- This is to permit installdir parsing in gparted.desktop
|
||||
|
||||
* gparted.in: Added new calling script gparted
|
||||
- This is to permit using hal-lock to acquire device
|
||||
locks to prevent automounting prior to executing gpartedbin.
|
||||
- Closes GParted bug #324220
|
||||
|
||||
* src/GParted_Core.cc: Removed gparted-disable-automount.fdi handling
|
||||
- Removed signal handler patch from 2008-01-28
|
||||
- Removed initial work on disabling automount from 2006-08-09
|
||||
- /usr/share/hal/fdi/policy/gparted-disable-automount.fdi is
|
||||
no longer created.
|
||||
- This is to permit preferred alternative of using hal-lock.
|
||||
|
||||
* src/Makefile.am: Renamed gparted binary to gpartedbin
|
||||
- This is to permit a calling script to be named gparted.
|
||||
|
||||
2008-04-20 Curtis Gedak <gedakc@gmail.com>
|
||||
|
||||
* src/Dialog_Disklabel.cc: Improved ability to translate text
|
||||
|
|
18
Makefile.am
18
Makefile.am
|
@ -2,18 +2,32 @@ SUBDIRS = compose doc include pixmaps po src
|
|||
|
||||
@INTLTOOL_DESKTOP_RULE@
|
||||
|
||||
DESKTOP_IN_IN_FILES = gparted.desktop.in.in
|
||||
DESKTOP_IN_FILES = gparted.desktop.in
|
||||
DESKTOP_FILES =$(DESKTOP_IN_FILES:.desktop.in=.desktop)
|
||||
|
||||
desktopdir = $(datadir)/applications
|
||||
desktop_DATA = $(DESKTOP_FILES)
|
||||
|
||||
sbin_SCRIPTS = gparted
|
||||
CLEANFILES = $(sbin_SCRIPTS) $(DESKTOP_IN_FILES)
|
||||
|
||||
do_subst = sed -e 's,[@]installdir[@],$(sbindir),g'
|
||||
|
||||
gparted.desktop.in: gparted.desktop.in.in Makefile
|
||||
$(do_subst) < $(srcdir)/gparted.desktop.in.in > gparted.desktop.in
|
||||
|
||||
gparted: gparted.in Makefile
|
||||
$(do_subst) < $(srcdir)/gparted.in > gparted
|
||||
chmod +x gparted
|
||||
|
||||
EXTRA_DIST = \
|
||||
$(DESKTOP_IN_FILES) \
|
||||
$(DESKTOP_IN_IN_FILES) \
|
||||
$(DESKTOP_FILES) \
|
||||
intltool-extract.in \
|
||||
intltool-merge.in \
|
||||
intltool-update.in
|
||||
intltool-update.in \
|
||||
gparted.in
|
||||
|
||||
DISTCLEANFILES = \
|
||||
intltool-extract \
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
[Desktop Entry]
|
||||
_Name=GParted Partition Editor
|
||||
_Comment=Create, reorganize, and delete partitions
|
||||
Exec=gksu gparted
|
||||
Exec=gksu @installdir@/gparted
|
||||
Icon=gparted
|
||||
Terminal=false
|
||||
Type=Application
|
|
@ -0,0 +1,23 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Purpose: Acquire device locks prior to running gparted.
|
||||
# This is to prevent devices from being automounted.
|
||||
# File system problems can occur if devices are mounted
|
||||
# prior to the completion of GParted's operations.
|
||||
# See GParted bug #324220
|
||||
# http://bugzilla.gnome.org/show_bug.cgi?id=324220
|
||||
#
|
||||
#
|
||||
# Following is a quote from HAL 0.5.10 Specification.
|
||||
# http://people.freedesktop.org/~david/hal-spec/hal-spec.html#locking-guidelines
|
||||
#
|
||||
# In order to prevent HAL-based automounters from mounting partitions
|
||||
# that are being prepared, applications that access block devices
|
||||
# directly (and pokes the kernel to reload the partitioning table)
|
||||
# should lock out automounters by either a) obtaining the
|
||||
# org.freedesktop.Hal.Device.Storage lock on each drive being processed;
|
||||
# or b) obtaining the global org.freedesktop.Hal.Device.Storage lock.
|
||||
#
|
||||
|
||||
hal-lock --interface org.freedeskdesktop.Hal.Device.Storage --exclusive \
|
||||
--run @installdir@/gpartedbin $*
|
|
@ -1,3 +1,10 @@
|
|||
2008-04-21 Curtis Gedak <gedakc@gmail.com>
|
||||
|
||||
* POTFILES.skip: Created file and added gparted.desktop.in
|
||||
|
||||
* POTFILES.in: Renamed gparted.desktop.in to gparted.desktop.in.in
|
||||
- This is to permit parsing of installdir for gparted.desktop
|
||||
|
||||
2008-04-20 Vincent van Adrighem <adrighem@gnome.org>
|
||||
|
||||
* nl.po: Translation updated by Tino Meinen.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# List of source files containing translatable strings.
|
||||
# Please keep this file sorted alphabetically.
|
||||
gparted.desktop.in
|
||||
gparted.desktop.in.in
|
||||
src/Dialog_Base_Partition.cc
|
||||
src/Dialog_Disklabel.cc
|
||||
src/Dialog_Partition_Copy.cc
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
# List of source files containing translatable strings, but should be skipped.
|
||||
# Please keep this file sorted alphabetically.
|
||||
gparted.desktop.in
|
||||
|
|
@ -39,8 +39,6 @@
|
|||
#include "../include/ufs.h"
|
||||
|
||||
#include <cerrno>
|
||||
#include <cstdio>
|
||||
#include <csignal>
|
||||
#include <sys/statvfs.h>
|
||||
|
||||
std::vector<Glib::ustring> libparted_messages ; //see ped_exception_handler()
|
||||
|
@ -48,13 +46,6 @@ std::vector<Glib::ustring> libparted_messages ; //see ped_exception_handler()
|
|||
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 ;
|
||||
|
@ -64,44 +55,6 @@ GParted_Core::GParted_Core()
|
|||
|
||||
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" ) ;
|
||||
if ( fdi_file )
|
||||
{
|
||||
fdi_file << "<deviceinfo version='0.2'>" ;
|
||||
fdi_file << "<device>" ;
|
||||
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>" ;
|
||||
|
||||
fdi_file .close() ;
|
||||
}
|
||||
|
||||
//get valid flags ...
|
||||
for ( PedPartitionFlag flag = ped_partition_flag_next( static_cast<PedPartitionFlag>( NULL ) ) ;
|
||||
flag ;
|
||||
|
@ -2371,9 +2324,6 @@ GParted_Core::~GParted_Core()
|
|||
{
|
||||
if ( p_filesystem )
|
||||
delete p_filesystem ;
|
||||
|
||||
//remove .fdi file..
|
||||
remove( "/usr/share/hal/fdi/policy/gparted-disable-automount.fdi" ) ;
|
||||
}
|
||||
|
||||
} //GParted
|
||||
|
|
|
@ -7,9 +7,9 @@ AM_CFLAGS = -Wall
|
|||
|
||||
AM_CXXFLAGS = -Wall
|
||||
|
||||
sbin_PROGRAMS = gparted
|
||||
sbin_PROGRAMS = gpartedbin
|
||||
|
||||
gparted_SOURCES = \
|
||||
gpartedbin_SOURCES = \
|
||||
Device.cc \
|
||||
Dialog_Base_Partition.cc \
|
||||
Dialog_Disklabel.cc \
|
||||
|
@ -55,7 +55,7 @@ gparted_SOURCES = \
|
|||
ufs.cc \
|
||||
xfs.cc
|
||||
|
||||
gparted_LDFLAGS = -lparted -lgthread-2.0
|
||||
gpartedbin_LDFLAGS = -lparted -lgthread-2.0
|
||||
|
||||
gparted_LDADD = $(GTKMM_LIBS)
|
||||
gpartedbin_LDADD = $(GTKMM_LIBS)
|
||||
|
||||
|
|
Loading…
Reference in New Issue