Rewrote get_label to use vol_id command for hfs file system
svn path=/trunk/; revision=872
This commit is contained in:
parent
b12fbfb1b2
commit
0a95638dc8
1
AUTHORS
1
AUTHORS
|
@ -12,6 +12,7 @@ not an invitation to misrepresent who contributed to GNU GParted.
|
|||
We need to keep track of copyright (see the Maintainer HOWTO on www.gnu.org).
|
||||
|
||||
Curtis Gedak <gedakc@users.sourceforge.net>
|
||||
* Rewrote get_label functionality for hfs
|
||||
* Wrote create, get_label, and check_repair functionality for hfs+
|
||||
* Wrote get_label functionality for fat16 and fat32 filesystems
|
||||
* Wrote Utils::regexp_label() function
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
2008-07-25 Curtis Gedak <gedakc@gmail.com>
|
||||
|
||||
* src/hfs.cc: Rewrote get_label to use vol_id for hfs file system
|
||||
- Reason: not all hfsutils packages include hfsck (e.g. Ubuntu 7.10)
|
||||
|
||||
* src/hfsplus.cc: Enhanced support for hfsplus file system
|
||||
- Added create, get_label, and check_repair functionality
|
||||
- Additional feature support is provided by the hfsprogs package
|
||||
|
|
3
README
3
README
|
@ -98,10 +98,11 @@ Optional packages include:
|
|||
dosfstools
|
||||
mtools
|
||||
hfsutils
|
||||
hfsprogs
|
||||
jfsutils
|
||||
ntfsprogs
|
||||
reiser4progs
|
||||
reiserfsprogs
|
||||
xfsprogs
|
||||
NOTE: If the vol_id command is in the search PATH, it will be
|
||||
used to read linux-swap volume labels.
|
||||
used to read linux-swap, hfs, and hfs+ file system volume labels.
|
||||
|
|
28
src/hfs.cc
28
src/hfs.cc
|
@ -34,10 +34,10 @@ FS hfs::get_filesystem_support()
|
|||
fs .create = GParted::FS::EXTERNAL ;
|
||||
|
||||
if ( ! Glib::find_program_in_path( "hfsck" ) .empty() )
|
||||
{
|
||||
fs .get_label = FS::EXTERNAL ;
|
||||
fs .check = FS::EXTERNAL ;
|
||||
}
|
||||
|
||||
if ( ! Glib::find_program_in_path( "vol_id" ) .empty() )
|
||||
fs .get_label = FS::EXTERNAL ;
|
||||
|
||||
fs .copy = GParted::FS::GPARTED ;
|
||||
fs .move = GParted::FS::GPARTED ;
|
||||
|
@ -53,22 +53,12 @@ void hfs::set_used_sectors( Partition & partition )
|
|||
|
||||
void hfs::get_label( Partition & partition )
|
||||
{
|
||||
if ( ! Utils::execute_command( "hfsck -v " + partition .get_path(), output, error, true ) )
|
||||
if ( ! Utils::execute_command( "vol_id " + partition .get_path(), output, error, true ) )
|
||||
{
|
||||
char buf[512] ;
|
||||
index = output .find( "drVN" ) ;
|
||||
|
||||
if ( index < output .length() && sscanf( output .substr( index ) .c_str(), "drVN = %512s", buf ) == 1 )
|
||||
{
|
||||
partition .label = buf ;
|
||||
|
||||
//remove "" from the label..
|
||||
if ( partition .label .size() > 0 && partition .label[0] == '\"' )
|
||||
partition .label = partition .label .substr( 1 ) ;
|
||||
|
||||
if ( partition .label .size() > 0 && partition .label[ partition .label .size() -1 ] == '\"' )
|
||||
partition .label = partition .label .substr( 0, partition .label .size() -1 ) ;
|
||||
}
|
||||
Glib::ustring label = Utils::regexp_label( output, "ID_FS_LABEL=([^\n]*)" ) ;
|
||||
//FIXME: find a better way to see if label is empty.. imagine someone uses 'untitled' as label.... ;)
|
||||
if( label != "untitled" )
|
||||
partition .label = label ;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -114,5 +104,3 @@ bool hfs::check_repair( const Partition & partition, OperationDetail & operation
|
|||
}
|
||||
|
||||
} //GParted
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue