[gparted] Enhance file system detection to use FS_Info method - blkid
- From: Curtis Gedak <gedakc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gparted] Enhance file system detection to use FS_Info method - blkid
- Date: Wed, 28 Apr 2010 18:59:36 +0000 (UTC)
commit 9e5e9f5627e0fb1b547f07cdaaac773c7b6035b9
Author: Curtis Gedak <gedakc gmail com>
Date: Wed Apr 28 12:58:28 2010 -0600
Enhance file system detection to use FS_Info method - blkid
This enhancement was added because the current libparted library,
version 2.2, does not appear to detect file systems for sector
sizes other than 512 bytes.
src/GParted_Core.cc | 79 +++++++++++++++++++++++++++++---------------------
1 files changed, 46 insertions(+), 33 deletions(-)
---
diff --git a/src/GParted_Core.cc b/src/GParted_Core.cc
index d25191f..c76821f 100644
--- a/src/GParted_Core.cc
+++ b/src/GParted_Core.cc
@@ -920,56 +920,69 @@ GParted::FILESYSTEM GParted_Core::get_filesystem()
}
}
- //standard libparted file systems..
+ FS_Info fs_info ;
+ Glib::ustring fs_type = "" ;
+
+ //Standard libparted file system detection
if ( lp_partition && lp_partition ->fs_type )
{
- if ( Glib::ustring( lp_partition ->fs_type ->name ) == "extended" )
+ fs_type = lp_partition ->fs_type ->name ;
+
+ //TODO: Temporary code to detect ext4.
+ // Replace when libparted >= 1.9.0 is chosen as minimum required version.
+ temp = fs_info .get_fs_type( Glib::ustring( ped_partition_get_path( lp_partition ) ) ) ;
+ if ( temp == "ext4" || temp == "ext4dev" )
+ fs_type = temp ;
+ }
+
+ //FS_Info (blkid) file system detection because current libparted (v2.2) does not
+ // appear to detect file systems for sector sizes other than 512 bytes.
+ if ( fs_type .empty() )
+ {
+ //TODO: blkid does not return anything for an "extended" partition. Need to handle this somehow
+ fs_type = fs_info .get_fs_type( Glib::ustring( ped_partition_get_path( lp_partition ) ) ) ;
+ }
+
+ if ( ! fs_type .empty() )
+ {
+ if ( fs_type == "extended" )
return GParted::FS_EXTENDED ;
- else if ( Glib::ustring( lp_partition ->fs_type ->name ) == "btrfs" )
+ else if ( fs_type == "btrfs" )
return GParted::FS_BTRFS ;
- else if ( Glib::ustring( lp_partition ->fs_type ->name ) == "ext2" )
+ else if ( fs_type == "ext2" )
return GParted::FS_EXT2 ;
- else if ( Glib::ustring( lp_partition ->fs_type ->name ) == "ext3" )
- {
- //FIXME: Temporary code to detect ext4.
- // Replace when libparted bug #188 "ext4 detected as ext3" is fixed.
- // http://parted.alioth.debian.org/cgi-bin/trac.cgi/ticket/188
- FS_Info fs_info ;
- temp = fs_info .get_fs_type( Glib::ustring( ped_partition_get_path( lp_partition ) ) ) ;
- if ( temp == "ext4" || temp == "ext4dev" )
- return GParted::FS_EXT4 ;
- else
- return GParted::FS_EXT3 ;
- }
- else if ( Glib::ustring( lp_partition ->fs_type ->name ) == "ext4" )
+ else if ( fs_type == "ext3" )
+ return GParted::FS_EXT3 ;
+ else if ( fs_type == "ext4" ||
+ fs_type == "ext4dev" )
return GParted::FS_EXT4 ;
- else if ( Glib::ustring( lp_partition ->fs_type ->name ) == "linux-swap" ||
- Glib::ustring( lp_partition ->fs_type ->name ) == "linux-swap(v1)" ||
- Glib::ustring( lp_partition ->fs_type ->name ) == "linux-swap(new)" ||
- Glib::ustring( lp_partition ->fs_type ->name ) == "linux-swap(v0)" ||
- Glib::ustring( lp_partition ->fs_type ->name ) == "linux-swap(old)" )
+ else if ( fs_type == "linux-swap" ||
+ fs_type == "linux-swap(v1)" ||
+ fs_type == "linux-swap(new)" ||
+ fs_type == "linux-swap(v0)" ||
+ fs_type == "linux-swap(old)" )
return GParted::FS_LINUX_SWAP ;
- else if ( Glib::ustring( lp_partition ->fs_type ->name ) == "fat16" )
+ else if ( fs_type == "fat16" )
return GParted::FS_FAT16 ;
- else if ( Glib::ustring( lp_partition ->fs_type ->name ) == "fat32" )
+ else if ( fs_type == "fat32" )
return GParted::FS_FAT32 ;
- else if ( Glib::ustring( lp_partition ->fs_type ->name ) == "ntfs" )
+ else if ( fs_type == "ntfs" )
return GParted::FS_NTFS ;
- else if ( Glib::ustring( lp_partition ->fs_type ->name ) == "reiserfs" )
+ else if ( fs_type == "reiserfs" )
return GParted::FS_REISERFS ;
- else if ( Glib::ustring( lp_partition ->fs_type ->name ) == "xfs" )
+ else if ( fs_type == "xfs" )
return GParted::FS_XFS ;
- else if ( Glib::ustring( lp_partition ->fs_type ->name ) == "jfs" )
+ else if ( fs_type == "jfs" )
return GParted::FS_JFS ;
- else if ( Glib::ustring( lp_partition ->fs_type ->name ) == "hfs" )
+ else if ( fs_type == "hfs" )
return GParted::FS_HFS ;
- else if ( Glib::ustring( lp_partition ->fs_type ->name ) == "hfs+" )
+ else if ( fs_type == "hfs+" )
return GParted::FS_HFSPLUS ;
- else if ( Glib::ustring( lp_partition ->fs_type ->name ) == "ufs" )
+ else if ( fs_type == "ufs" )
return GParted::FS_UFS ;
}
-
-
+
+
//other file systems libparted couldn't detect (i've send patches for these file systems to the parted guys)
// - no patches sent to parted for lvm2, or luks
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]