Make FileSystem objects in GParted_Core accessible and usable by others
Part 1 of 4 to provide new UUID support for NTFS. See Bug #667278 - Add support for setting UUID
This commit is contained in:
parent
7b83febf19
commit
ce9feeda0e
|
@ -58,6 +58,7 @@ public:
|
|||
Glib::ustring get_libparted_version() ;
|
||||
Glib::ustring get_thread_status_message() ;
|
||||
|
||||
FileSystem * get_filesystem_object( const FILESYSTEM & filesystem ) ;
|
||||
private:
|
||||
//detectionstuff..
|
||||
void init_maps() ;
|
||||
|
@ -201,6 +202,7 @@ private:
|
|||
static PedExceptionOption ped_exception_handler( PedException * e ) ;
|
||||
|
||||
std::vector<FS> FILESYSTEMS ;
|
||||
std::map< FILESYSTEM, FileSystem * > FILESYSTEM_MAP ;
|
||||
FileSystem * p_filesystem ;
|
||||
std::vector<PedPartitionFlag> flags;
|
||||
Glib::ustring temp ;
|
||||
|
|
|
@ -92,71 +92,48 @@ GParted_Core::GParted_Core()
|
|||
|
||||
void GParted_Core::find_supported_filesystems()
|
||||
{
|
||||
std::map< FILESYSTEM, FileSystem * >::iterator f ;
|
||||
|
||||
// TODO: determine whether it is safe to initialize this only once
|
||||
for ( f = FILESYSTEM_MAP .begin() ; f != FILESYSTEM_MAP .end() ; f++ ) {
|
||||
if ( f ->second )
|
||||
delete f ->second ;
|
||||
}
|
||||
|
||||
FILESYSTEM_MAP .clear() ;
|
||||
|
||||
FILESYSTEM_MAP[ FS_BTRFS ] = new btrfs() ;
|
||||
FILESYSTEM_MAP[ FS_EXFAT ] = new exfat() ;
|
||||
FILESYSTEM_MAP[ FS_EXT2 ] = new ext2() ;
|
||||
FILESYSTEM_MAP[ FS_EXT3 ] = new ext3() ;
|
||||
FILESYSTEM_MAP[ FS_EXT4 ] = new ext4() ;
|
||||
FILESYSTEM_MAP[ FS_FAT16 ] = new fat16() ;
|
||||
FILESYSTEM_MAP[ FS_FAT32 ] = new fat32() ;
|
||||
FILESYSTEM_MAP[ FS_HFS ] = new hfs() ;
|
||||
FILESYSTEM_MAP[ FS_HFSPLUS ] = new hfsplus() ;
|
||||
FILESYSTEM_MAP[ FS_JFS ] = new jfs() ;
|
||||
FILESYSTEM_MAP[ FS_LINUX_SWAP ] = new linux_swap() ;
|
||||
FILESYSTEM_MAP[ FS_LVM2_PV ] = new lvm2_pv() ;
|
||||
FILESYSTEM_MAP[ FS_NILFS2 ] = new nilfs2() ;
|
||||
FILESYSTEM_MAP[ FS_NTFS ] = new ntfs() ;
|
||||
FILESYSTEM_MAP[ FS_REISER4 ] = new reiser4() ;
|
||||
FILESYSTEM_MAP[ FS_REISERFS ] = new reiserfs() ;
|
||||
FILESYSTEM_MAP[ FS_UFS ] = new ufs() ;
|
||||
FILESYSTEM_MAP[ FS_XFS ] = new xfs() ;
|
||||
FILESYSTEM_MAP[ FS_LUKS ] = NULL ;
|
||||
FILESYSTEM_MAP[ FS_UNKNOWN ] = NULL ;
|
||||
|
||||
FILESYSTEMS .clear() ;
|
||||
|
||||
FS fs_notsupp;
|
||||
|
||||
btrfs fs_btrfs;
|
||||
FILESYSTEMS .push_back( fs_btrfs .get_filesystem_support() ) ;
|
||||
|
||||
exfat fs_exfat;
|
||||
FILESYSTEMS .push_back( fs_exfat .get_filesystem_support() ) ;
|
||||
|
||||
ext2 fs_ext2;
|
||||
FILESYSTEMS .push_back( fs_ext2 .get_filesystem_support() ) ;
|
||||
|
||||
ext3 fs_ext3;
|
||||
FILESYSTEMS .push_back( fs_ext3 .get_filesystem_support() ) ;
|
||||
|
||||
ext4 fs_ext4;
|
||||
FILESYSTEMS .push_back( fs_ext4 .get_filesystem_support() ) ;
|
||||
|
||||
fat16 fs_fat16;
|
||||
FILESYSTEMS .push_back( fs_fat16 .get_filesystem_support() ) ;
|
||||
|
||||
fat32 fs_fat32;
|
||||
FILESYSTEMS .push_back( fs_fat32 .get_filesystem_support() ) ;
|
||||
|
||||
hfs fs_hfs;
|
||||
FILESYSTEMS .push_back( fs_hfs .get_filesystem_support() ) ;
|
||||
|
||||
hfsplus fs_hfsplus;
|
||||
FILESYSTEMS .push_back( fs_hfsplus .get_filesystem_support() ) ;
|
||||
|
||||
jfs fs_jfs;
|
||||
FILESYSTEMS .push_back( fs_jfs .get_filesystem_support() ) ;
|
||||
|
||||
linux_swap fs_linux_swap;
|
||||
FILESYSTEMS .push_back( fs_linux_swap .get_filesystem_support() ) ;
|
||||
|
||||
lvm2_pv fs_lvm2_pv;
|
||||
FILESYSTEMS .push_back( fs_lvm2_pv .get_filesystem_support() ) ;
|
||||
|
||||
nilfs2 fs_nilfs2;
|
||||
FILESYSTEMS .push_back( fs_nilfs2 .get_filesystem_support() ) ;
|
||||
|
||||
ntfs fs_ntfs;
|
||||
FILESYSTEMS .push_back( fs_ntfs .get_filesystem_support() ) ;
|
||||
|
||||
reiser4 fs_reiser4;
|
||||
FILESYSTEMS .push_back( fs_reiser4 .get_filesystem_support() ) ;
|
||||
|
||||
reiserfs fs_reiserfs;
|
||||
FILESYSTEMS .push_back( fs_reiserfs .get_filesystem_support() ) ;
|
||||
|
||||
ufs fs_ufs;
|
||||
FILESYSTEMS .push_back( fs_ufs .get_filesystem_support() ) ;
|
||||
|
||||
xfs fs_xfs;
|
||||
FILESYSTEMS .push_back( fs_xfs .get_filesystem_support() ) ;
|
||||
|
||||
//luks encryption-- not a file system
|
||||
fs_notsupp .filesystem = GParted::FS_LUKS ;
|
||||
FILESYSTEMS .push_back( fs_notsupp ) ;
|
||||
|
||||
//unknown file system (default when no match is found)
|
||||
fs_notsupp .filesystem = GParted::FS_UNKNOWN ;
|
||||
FILESYSTEMS .push_back( fs_notsupp ) ;
|
||||
for ( f = FILESYSTEM_MAP .begin() ; f != FILESYSTEM_MAP .end() ; f++ ) {
|
||||
if ( f ->second )
|
||||
FILESYSTEMS .push_back( f ->second ->get_filesystem_support() ) ;
|
||||
else {
|
||||
fs_notsupp .filesystem = f ->first ;
|
||||
FILESYSTEMS .push_back( fs_notsupp ) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void GParted_Core::set_user_devices( const std::vector<Glib::ustring> & user_devices )
|
||||
|
@ -3008,34 +2985,19 @@ bool GParted_Core::calculate_exact_geom( const Partition & partition_old,
|
|||
|
||||
bool GParted_Core::set_proper_filesystem( const FILESYSTEM & filesystem )
|
||||
{
|
||||
delete p_filesystem;
|
||||
|
||||
switch( filesystem )
|
||||
{
|
||||
case FS_BTRFS : p_filesystem = new btrfs() ; break ;
|
||||
case FS_EXFAT : p_filesystem = new exfat() ; break ;
|
||||
case FS_EXT2 : p_filesystem = new ext2() ; break ;
|
||||
case FS_EXT3 : p_filesystem = new ext3() ; break ;
|
||||
case FS_EXT4 : p_filesystem = new ext4() ; break ;
|
||||
case FS_LINUX_SWAP : p_filesystem = new linux_swap() ; break ;
|
||||
case FS_LVM2_PV : p_filesystem = new lvm2_pv() ; break ;
|
||||
case FS_FAT16 : p_filesystem = new fat16() ; break ;
|
||||
case FS_FAT32 : p_filesystem = new fat32() ; break ;
|
||||
case FS_NILFS2 : p_filesystem = new nilfs2() ; break ;
|
||||
case FS_NTFS : p_filesystem = new ntfs() ; break ;
|
||||
case FS_REISERFS : p_filesystem = new reiserfs() ; break ;
|
||||
case FS_REISER4 : p_filesystem = new reiser4() ; break ;
|
||||
case FS_XFS : p_filesystem = new xfs() ; break ;
|
||||
case FS_JFS : p_filesystem = new jfs() ; break ;
|
||||
case FS_HFS : p_filesystem = new hfs() ; break ;
|
||||
case FS_HFSPLUS : p_filesystem = new hfsplus() ; break ;
|
||||
case FS_UFS : p_filesystem = new ufs() ; break ;
|
||||
default : p_filesystem = NULL ;
|
||||
}
|
||||
p_filesystem = get_filesystem_object( filesystem ) ;
|
||||
|
||||
return p_filesystem ;
|
||||
}
|
||||
|
||||
FileSystem * GParted_Core::get_filesystem_object( const FILESYSTEM & filesystem )
|
||||
{
|
||||
if ( FILESYSTEM_MAP .count( filesystem ) )
|
||||
return FILESYSTEM_MAP[ filesystem ] ;
|
||||
else
|
||||
return NULL ;
|
||||
}
|
||||
|
||||
#ifndef HAVE_LIBPARTED_3_0_0_PLUS
|
||||
bool GParted_Core::erase_filesystem_signatures( const Partition & partition )
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue