lots of stuff and cleanups, including fixing getting used/unused space of
* lots of stuff and cleanups, including fixing getting used/unused space of hfs/hfs+/fat16/fat32 * also fixes bug #161362
This commit is contained in:
parent
ece676d4bd
commit
61cd0ce778
|
@ -1,3 +1,7 @@
|
|||
2005-09-13 Bart Hakvoort <hakvoort@cvs.gnome.org>
|
||||
* lots of stuff and cleanups, including fixing getting used/unused space of hfs/hfs+/fat16/fat32
|
||||
* also fixes bug #161362
|
||||
|
||||
2005-08-31 Bart Hakvoort <hakvoort@cvs.gnome.org>
|
||||
|
||||
* src/Dialog_Filesystems.cc: at startup closebutton is focused (#308381)
|
||||
|
|
|
@ -179,8 +179,8 @@ namespace UStringPrivate
|
|||
: arg_no(1)
|
||||
{
|
||||
#if __GNUC__ >= 3
|
||||
//plors: i've uncommented this one since it caused a crasher at line 124 for some locales (e.g. nl_BE)
|
||||
//os.imbue(std::locale("")); // use the user's locale for the stream
|
||||
//see #157871
|
||||
//os.imbue(std::locale("")); // use the user's locale for the stream
|
||||
#endif
|
||||
std::string::size_type b = 0, i = 0;
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
#include "../include/xfs.h"
|
||||
#include "../include/jfs.h"
|
||||
#include "../include/hfs.h"
|
||||
#include "../include/hfsplus.h"
|
||||
#include "../include/reiser4.h"
|
||||
|
||||
#include <glibmm/ustring.h>
|
||||
|
|
|
@ -71,11 +71,6 @@ inline long Sector_To_MB( Sector sectors )
|
|||
return Round( sectors * 0.000488281250 ) ; // that's what 512/1024/1024 gives you :)
|
||||
}
|
||||
|
||||
inline Sector Abs( Sector sectors )
|
||||
{
|
||||
return sectors < 0 ? sectors - 2*sectors : sectors ;
|
||||
}
|
||||
|
||||
inline Gtk::Label * mk_label( const Glib::ustring & text, bool use_markup = true, bool align_left = true, bool wrap = false, const Glib::ustring & text_color = "black" )
|
||||
{
|
||||
Gtk::Label * label = manage( new Gtk::Label( text ) ) ;
|
||||
|
@ -96,9 +91,10 @@ inline Gtk::Label * mk_label( const Glib::ustring & text, bool use_markup = true
|
|||
return label ;
|
||||
}
|
||||
|
||||
inline Glib::ustring num_to_str( Sector number )
|
||||
inline Glib::ustring num_to_str( Sector number, bool use_C_locale = false )
|
||||
{
|
||||
std::stringstream ss;
|
||||
std::stringstream ss ;
|
||||
//ss.imbue( std::locale( use_C_locale ? "C" : "" ) ) ; see #157871
|
||||
ss << number ;
|
||||
return ss .str( ) ;
|
||||
}
|
||||
|
@ -128,6 +124,7 @@ inline Glib::ustring Get_Color( const Glib::ustring & filesystem )
|
|||
else if ( filesystem == "jfs" ) return "#E0C39E" ;
|
||||
|
||||
else if ( filesystem == "hfs" ) return "#E0B6AF" ;
|
||||
else if ( filesystem == "hfs+" ) return "#C0A39E" ;
|
||||
|
||||
else if ( filesystem == "ufs" ) return "#D1940C" ;
|
||||
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
/* Copyright (C) 2004 Bart
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef HFSPLUS
|
||||
#define HFSPLUS
|
||||
|
||||
#include "../include/FileSystem.h"
|
||||
|
||||
namespace GParted
|
||||
{
|
||||
|
||||
class hfsplus : public FileSystem
|
||||
{
|
||||
public:
|
||||
FS get_filesystem_support( ) ;
|
||||
void Set_Used_Sectors( Partition & partition ) ;
|
||||
bool Create( const Partition & new_partition ) ;
|
||||
bool Resize( const Partition & partition_new, bool fill_partition = false ) ;
|
||||
bool Copy( const Glib::ustring & src_part_path, const Glib::ustring & dest_part_path ) ;
|
||||
bool Check_Repair( const Partition & partition ) ;
|
||||
int get_estimated_time( long MB_to_Consider ) ;
|
||||
};
|
||||
|
||||
} //GParted
|
||||
|
||||
#endif //HFSPLUS
|
|
@ -43,6 +43,9 @@ void GParted_Core::find_supported_filesystems( )
|
|||
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( ) ) ;
|
||||
|
||||
|
@ -311,7 +314,7 @@ int GParted_Core::get_estimated_time( const Operation & operation )
|
|||
case GParted::RESIZE_MOVE:
|
||||
set_proper_filesystem( operation .partition_new .filesystem ) ;
|
||||
if ( p_filesystem )
|
||||
return p_filesystem ->get_estimated_time( Abs( operation .partition_original .Get_Length_MB( ) - operation .partition_new .Get_Length_MB( ) ) ) ;
|
||||
return p_filesystem ->get_estimated_time( std::abs( operation .partition_original .Get_Length_MB( ) - operation .partition_new .Get_Length_MB( ) ) ) ;
|
||||
|
||||
break ;
|
||||
|
||||
|
@ -736,6 +739,8 @@ void GParted_Core::set_proper_filesystem( const Glib::ustring & filesystem )
|
|||
p_filesystem = new fat32( ) ;
|
||||
else if ( filesystem == "hfs" )
|
||||
p_filesystem = new hfs( ) ;
|
||||
else if ( filesystem == "hfs+" )
|
||||
p_filesystem = new hfsplus( ) ;
|
||||
else if ( filesystem == "jfs" )
|
||||
p_filesystem = new jfs( ) ;
|
||||
else if ( filesystem == "linux-swap" )
|
||||
|
|
|
@ -37,6 +37,7 @@ gparted_SOURCES = \
|
|||
fat16.cc\
|
||||
fat32.cc\
|
||||
hfs.cc\
|
||||
hfsplus.cc\
|
||||
jfs.cc\
|
||||
linux_swap.cc\
|
||||
main.cc\
|
||||
|
|
|
@ -60,7 +60,7 @@ Glib::ustring Operation::Get_String( )
|
|||
/*TO TRANSLATORS: looks like Create Logical Partition #1 (ntfs, 2345 MB) on /dev/hda */
|
||||
return String::ucompose( _("Create %1 #%2 (%3, %4 MB) on %5"), temp, partition_new.partition_number, partition_new.filesystem , partition_new .Get_Length_MB( ), device .path ) ;
|
||||
case RESIZE_MOVE: //if startsector has changed >= 1 MB we consider it a move
|
||||
diff = Abs( partition_new .sector_start - partition_original .sector_start ) ;
|
||||
diff = std::abs( partition_new .sector_start - partition_original .sector_start ) ;
|
||||
if ( diff >= MEGABYTE )
|
||||
{
|
||||
if ( partition_new .sector_start > partition_original .sector_start )
|
||||
|
@ -70,8 +70,8 @@ Glib::ustring Operation::Get_String( )
|
|||
}
|
||||
|
||||
//check if size has changed ( we only consider changes >= 1 MB )
|
||||
diff = Abs( (partition_original .sector_end - partition_original .sector_start) - (partition_new .sector_end - partition_new .sector_start) ) ;
|
||||
|
||||
diff = std::abs( (partition_original .sector_end - partition_original .sector_start) - (partition_new .sector_end - partition_new .sector_start) ) ;
|
||||
|
||||
if ( diff >= MEGABYTE )
|
||||
{
|
||||
if ( temp .empty( ) )
|
||||
|
|
|
@ -85,17 +85,17 @@ bool ext2::Create( const Partition & new_partition )
|
|||
|
||||
bool ext2::Resize( const Partition & partition_new, bool fill_partition )
|
||||
{
|
||||
Glib::ustring str_temp = "LC_NUMERIC=C resize2fs " + partition_new .partition ;
|
||||
Glib::ustring str_temp = "resize2fs " + partition_new .partition ;
|
||||
|
||||
if ( ! fill_partition )
|
||||
str_temp += " " + num_to_str( partition_new .Get_Length_MB( ) - cylinder_size ) + "M" ;
|
||||
str_temp += " " + num_to_str( partition_new .Get_Length_MB( ) - cylinder_size, true ) + "M" ;
|
||||
|
||||
return ! Execute_Command( str_temp ) ;
|
||||
}
|
||||
|
||||
bool ext2::Copy( const Glib::ustring & src_part_path, const Glib::ustring & dest_part_path )
|
||||
{
|
||||
if ( ! Execute_Command( "LC_NUMERIC=C dd bs=8192 if=" + src_part_path + " of=" + dest_part_path ) )
|
||||
if ( ! Execute_Command( "dd bs=8192 if=" + src_part_path + " of=" + dest_part_path ) )
|
||||
{
|
||||
Partition partition ;
|
||||
partition .partition = dest_part_path ;
|
||||
|
|
|
@ -85,17 +85,17 @@ bool ext3::Create( const Partition & new_partition )
|
|||
|
||||
bool ext3::Resize( const Partition & partition_new, bool fill_partition )
|
||||
{
|
||||
Glib::ustring str_temp = "LC_NUMERIC=C resize2fs " + partition_new .partition ;
|
||||
Glib::ustring str_temp = "resize2fs " + partition_new .partition ;
|
||||
|
||||
if ( ! fill_partition )
|
||||
str_temp += " " + num_to_str( partition_new .Get_Length_MB( ) - cylinder_size ) + "M" ;
|
||||
str_temp += " " + num_to_str( partition_new .Get_Length_MB( ) - cylinder_size, true ) + "M" ;
|
||||
|
||||
return ! Execute_Command( str_temp ) ;
|
||||
}
|
||||
|
||||
bool ext3::Copy( const Glib::ustring & src_part_path, const Glib::ustring & dest_part_path )
|
||||
{
|
||||
if ( ! Execute_Command( "LC_NUMERIC=C dd bs=8192 if=" + src_part_path + " of=" + dest_part_path ) )
|
||||
if ( ! Execute_Command( "dd bs=8192 if=" + src_part_path + " of=" + dest_part_path ) )
|
||||
{
|
||||
Partition partition ;
|
||||
partition .partition = dest_part_path ;
|
||||
|
|
52
src/fat16.cc
52
src/fat16.cc
|
@ -26,14 +26,16 @@ FS fat16::get_filesystem_support( )
|
|||
FS fs ;
|
||||
|
||||
fs .filesystem = "fat16" ;
|
||||
fs .read = true ; //provided by libparted
|
||||
|
||||
|
||||
//find out if we can create fat16 filesystems
|
||||
if ( ! system( "which mkdosfs 1>/dev/null 2>/dev/null" ) )
|
||||
fs .create = true ;
|
||||
|
||||
if ( ! system( "which dosfsck 1>/dev/null 2>/dev/null" ) )
|
||||
{
|
||||
fs .check = true ;
|
||||
fs .read = true ;
|
||||
}
|
||||
|
||||
//resizing of start and endpoint are provided by libparted
|
||||
fs .grow = true ;
|
||||
|
@ -43,7 +45,7 @@ FS fat16::get_filesystem_support( )
|
|||
if ( ! system( "which dd 1>/dev/null 2>/dev/null" ) )
|
||||
fs .copy = true ;
|
||||
|
||||
fs .MIN = 32 ;
|
||||
fs .MIN = 16 ;
|
||||
fs .MAX = 4096 ;
|
||||
|
||||
return fs ;
|
||||
|
@ -51,31 +53,33 @@ FS fat16::get_filesystem_support( )
|
|||
|
||||
void fat16::Set_Used_Sectors( Partition & partition )
|
||||
{
|
||||
PedFileSystem *fs = NULL;
|
||||
PedConstraint *constraint = NULL;
|
||||
PedPartition *c_part = NULL ;
|
||||
char c_buf[ 512 ] ;
|
||||
FILE *f ;
|
||||
|
||||
if ( disk )
|
||||
Glib::ustring output ;
|
||||
Sector free_clusters = -1, bytes_per_cluster = -1 ;
|
||||
|
||||
//get free blocks..
|
||||
f = popen( ( "LC_ALL=C echo 2 | dosfsck -v " + partition .partition ) .c_str( ), "r" ) ;
|
||||
while ( fgets( c_buf, 512, f ) )
|
||||
{
|
||||
c_part = ped_disk_get_partition_by_sector( disk, (partition .sector_end + partition .sector_start) / 2 ) ;
|
||||
if ( c_part )
|
||||
output = Glib::locale_to_utf8( c_buf ) ;
|
||||
|
||||
//bytes per cluster
|
||||
if ( output .find( "bytes per cluster" ) < output .length( ) )
|
||||
bytes_per_cluster = atol( output .substr( 0, output .find( "b" ) ) .c_str( ) ) ;
|
||||
|
||||
//free clusters
|
||||
if ( output .find( partition .partition ) < output .length( ) )
|
||||
{
|
||||
fs = ped_file_system_open( & c_part ->geom );
|
||||
|
||||
if ( fs )
|
||||
{
|
||||
constraint = ped_file_system_get_resize_constraint ( fs ) ;
|
||||
if ( constraint )
|
||||
{
|
||||
partition .Set_Unused( (partition .sector_end - partition .sector_start) - constraint ->min_size ) ;
|
||||
|
||||
ped_constraint_destroy ( constraint );
|
||||
}
|
||||
|
||||
ped_file_system_close( fs ) ;
|
||||
}
|
||||
output = output .substr( output .find( "," ) +2, output .length( ) ) ;
|
||||
free_clusters = atol( output .substr( output .find( "/" ) +1, output .find( " " ) ) .c_str( ) ) - atol( output .substr( 0, output .find( "/" ) ) .c_str( ) ) ;
|
||||
}
|
||||
}
|
||||
pclose( f ) ;
|
||||
|
||||
if ( free_clusters > -1 && bytes_per_cluster > -1 )
|
||||
partition .Set_Unused( free_clusters * bytes_per_cluster / 512 ) ;
|
||||
}
|
||||
|
||||
bool fat16::Create( const Partition & new_partition )
|
||||
|
@ -91,7 +95,7 @@ bool fat16::Resize( const Partition & partition_new, bool fill_partition )
|
|||
|
||||
bool fat16::Copy( const Glib::ustring & src_part_path, const Glib::ustring & dest_part_path )
|
||||
{
|
||||
return ! Execute_Command( "LC_NUMERIC=C dd bs=8192 if=" + src_part_path + " of=" + dest_part_path ) ;
|
||||
return ! Execute_Command( "dd bs=8192 if=" + src_part_path + " of=" + dest_part_path ) ;
|
||||
}
|
||||
|
||||
bool fat16::Check_Repair( const Partition & partition )
|
||||
|
|
52
src/fat32.cc
52
src/fat32.cc
|
@ -26,14 +26,16 @@ FS fat32::get_filesystem_support( )
|
|||
FS fs ;
|
||||
|
||||
fs .filesystem = "fat32" ;
|
||||
fs .read = true ; //provided by libparted
|
||||
|
||||
|
||||
//find out if we can create fat32 filesystems
|
||||
if ( ! system( "which mkdosfs 1>/dev/null 2>/dev/null" ) )
|
||||
fs .create = true ;
|
||||
|
||||
if ( ! system( "which dosfsck 1>/dev/null 2>/dev/null" ) )
|
||||
{
|
||||
fs .check = true ;
|
||||
fs .read = true ;
|
||||
}
|
||||
|
||||
//resizing of start and endpoint are provided by libparted
|
||||
fs .grow = true ;
|
||||
|
@ -43,38 +45,40 @@ FS fat32::get_filesystem_support( )
|
|||
if ( ! system( "which dd 1>/dev/null 2>/dev/null" ) )
|
||||
fs .copy = true ;
|
||||
|
||||
fs .MIN = 256 ;
|
||||
fs .MIN = 32 ; //smaller fs'es will cause windows scandisk to fail..
|
||||
|
||||
return fs ;
|
||||
}
|
||||
|
||||
void fat32::Set_Used_Sectors( Partition & partition )
|
||||
{
|
||||
PedFileSystem *fs = NULL;
|
||||
PedConstraint *constraint = NULL;
|
||||
PedPartition *c_part = NULL ;
|
||||
char c_buf[ 512 ] ;
|
||||
FILE *f ;
|
||||
|
||||
if ( disk )
|
||||
Glib::ustring output ;
|
||||
Sector free_clusters = -1, bytes_per_cluster = -1 ;
|
||||
|
||||
//get free blocks..
|
||||
f = popen( ( "LC_ALL=C echo 2 | dosfsck -v " + partition .partition ) .c_str( ), "r" ) ;
|
||||
while ( fgets( c_buf, 512, f ) )
|
||||
{
|
||||
c_part = ped_disk_get_partition_by_sector( disk, (partition .sector_end + partition .sector_start) / 2 ) ;
|
||||
if ( c_part )
|
||||
output = Glib::locale_to_utf8( c_buf ) ;
|
||||
|
||||
//bytes per cluster
|
||||
if ( output .find( "bytes per cluster" ) < output .length( ) )
|
||||
bytes_per_cluster = atol( output .substr( 0, output .find( "b" ) ) .c_str( ) ) ;
|
||||
|
||||
//free clusters
|
||||
if ( output .find( partition .partition ) < output .length( ) )
|
||||
{
|
||||
fs = ped_file_system_open( & c_part ->geom );
|
||||
|
||||
if ( fs )
|
||||
{
|
||||
constraint = ped_file_system_get_resize_constraint ( fs ) ;
|
||||
if ( constraint )
|
||||
{
|
||||
partition .Set_Unused( (partition .sector_end - partition .sector_start) - constraint ->min_size ) ;
|
||||
|
||||
ped_constraint_destroy ( constraint );
|
||||
}
|
||||
|
||||
ped_file_system_close( fs ) ;
|
||||
}
|
||||
output = output .substr( output .find( "," ) +2, output .length( ) ) ;
|
||||
free_clusters = atol( output .substr( output .find( "/" ) +1, output .find( " " ) ) .c_str( ) ) - atol( output .substr( 0, output .find( "/" ) ) .c_str( ) ) ;
|
||||
}
|
||||
}
|
||||
pclose( f ) ;
|
||||
|
||||
if ( free_clusters > -1 && bytes_per_cluster > -1 )
|
||||
partition .Set_Unused( free_clusters * bytes_per_cluster / 512 ) ;
|
||||
}
|
||||
|
||||
bool fat32::Create( const Partition & new_partition )
|
||||
|
@ -90,7 +94,7 @@ bool fat32::Resize( const Partition & partition_new, bool fill_partition )
|
|||
|
||||
bool fat32::Copy( const Glib::ustring & src_part_path, const Glib::ustring & dest_part_path )
|
||||
{
|
||||
return ! Execute_Command( "LC_NUMERIC=C dd bs=8192 if=" + src_part_path + " of=" + dest_part_path ) ;
|
||||
return ! Execute_Command( "dd bs=8192 if=" + src_part_path + " of=" + dest_part_path ) ;
|
||||
}
|
||||
|
||||
bool fat32::Check_Repair( const Partition & partition )
|
||||
|
|
43
src/hfs.cc
43
src/hfs.cc
|
@ -24,10 +24,10 @@ namespace GParted
|
|||
FS hfs::get_filesystem_support( )
|
||||
{
|
||||
FS fs ;
|
||||
|
||||
|
||||
fs .filesystem = "hfs" ;
|
||||
if ( ! system( "which hfs 1>/dev/null 2>/dev/null" ) )
|
||||
fs .read = true ;
|
||||
|
||||
fs .read = true ; //provided by libparted
|
||||
|
||||
if ( ! system( "which hformat 1>/dev/null 2>/dev/null" ) )
|
||||
fs .create = true ;
|
||||
|
@ -42,26 +42,31 @@ FS hfs::get_filesystem_support( )
|
|||
|
||||
void hfs::Set_Used_Sectors( Partition & partition )
|
||||
{
|
||||
char c_buf[ 512 ] ;
|
||||
FILE *f ;
|
||||
PedFileSystem *fs = NULL;
|
||||
PedConstraint *constraint = NULL;
|
||||
PedPartition *c_part = NULL ;
|
||||
|
||||
Glib::ustring output ;
|
||||
|
||||
//get free bytes..
|
||||
f = popen( ( "echo 'quit' | LC_ALL=C hfs " + partition .partition ) .c_str( ), "r" ) ;
|
||||
while ( fgets( c_buf, 512, f ) )
|
||||
if ( disk )
|
||||
{
|
||||
output = Glib::locale_to_utf8( c_buf ) ;
|
||||
|
||||
if ( output .find( "bytes free" ) < output .length( ) )
|
||||
c_part = ped_disk_get_partition_by_sector( disk, (partition .sector_end + partition .sector_start) / 2 ) ;
|
||||
if ( c_part )
|
||||
{
|
||||
output = output .substr( 0, output .find( " bytes free" ) ) ;
|
||||
|
||||
partition .Set_Unused( atol( (output .substr( output .find_last_of( ' ' ) ) ) .c_str( ) ) / 512 ) ;
|
||||
break ;
|
||||
fs = ped_file_system_open( & c_part ->geom );
|
||||
|
||||
if ( fs )
|
||||
{
|
||||
constraint = ped_file_system_get_resize_constraint ( fs ) ;
|
||||
if ( constraint )
|
||||
{
|
||||
partition .Set_Unused( (partition .sector_end - partition .sector_start) - constraint ->min_size ) ;
|
||||
|
||||
ped_constraint_destroy ( constraint );
|
||||
}
|
||||
|
||||
ped_file_system_close( fs ) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
pclose( f ) ;
|
||||
}
|
||||
|
||||
bool hfs::Create( const Partition & new_partition )
|
||||
|
@ -76,7 +81,7 @@ bool hfs::Resize( const Partition & partition_new, bool fill_partition )
|
|||
|
||||
bool hfs::Copy( const Glib::ustring & src_part_path, const Glib::ustring & dest_part_path )
|
||||
{
|
||||
return ! Execute_Command( "LC_NUMERIC=C dd bs=8192 if=" + src_part_path + " of=" + dest_part_path ) ;
|
||||
return ! Execute_Command( "dd bs=8192 if=" + src_part_path + " of=" + dest_part_path ) ;
|
||||
}
|
||||
|
||||
bool hfs::Check_Repair( const Partition & partition )
|
||||
|
|
|
@ -0,0 +1,92 @@
|
|||
/* Copyright (C) 2004 Bart
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
|
||||
#include "../include/hfsplus.h"
|
||||
|
||||
namespace GParted
|
||||
{
|
||||
|
||||
FS hfsplus::get_filesystem_support( )
|
||||
{
|
||||
FS fs ;
|
||||
|
||||
fs .filesystem = "hfs+" ;
|
||||
|
||||
fs .read = true ; //provided by libparted
|
||||
|
||||
return fs ;
|
||||
}
|
||||
|
||||
void hfsplus::Set_Used_Sectors( Partition & partition )
|
||||
{
|
||||
PedFileSystem *fs = NULL;
|
||||
PedConstraint *constraint = NULL;
|
||||
PedPartition *c_part = NULL ;
|
||||
|
||||
if ( disk )
|
||||
{
|
||||
c_part = ped_disk_get_partition_by_sector( disk, (partition .sector_end + partition .sector_start) / 2 ) ;
|
||||
if ( c_part )
|
||||
{
|
||||
fs = ped_file_system_open( & c_part ->geom );
|
||||
|
||||
if ( fs )
|
||||
{
|
||||
constraint = ped_file_system_get_resize_constraint ( fs ) ;
|
||||
if ( constraint )
|
||||
{
|
||||
partition .Set_Unused( (partition .sector_end - partition .sector_start) - constraint ->min_size ) ;
|
||||
|
||||
ped_constraint_destroy ( constraint );
|
||||
}
|
||||
|
||||
ped_file_system_close( fs ) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool hfsplus::Create( const Partition & new_partition )
|
||||
{
|
||||
return true ;
|
||||
}
|
||||
|
||||
bool hfsplus::Resize( const Partition & partition_new, bool fill_partition )
|
||||
{
|
||||
return true ;
|
||||
}
|
||||
|
||||
bool hfsplus::Copy( const Glib::ustring & src_part_path, const Glib::ustring & dest_part_path )
|
||||
{
|
||||
return true ;
|
||||
}
|
||||
|
||||
bool hfsplus::Check_Repair( const Partition & partition )
|
||||
{
|
||||
return true ;
|
||||
}
|
||||
|
||||
int hfsplus::get_estimated_time( long MB_to_Consider )
|
||||
{
|
||||
return -1 ;
|
||||
}
|
||||
|
||||
|
||||
} //GParted
|
||||
|
||||
|
|
@ -112,7 +112,7 @@ bool jfs::Resize( const Partition & partition_new, bool fill_partition )
|
|||
|
||||
bool jfs::Copy( const Glib::ustring & src_part_path, const Glib::ustring & dest_part_path )
|
||||
{
|
||||
if ( ! Execute_Command( "LC_NUMERIC=C dd bs=8192 if=" + src_part_path + " of=" + dest_part_path ) )
|
||||
if ( ! Execute_Command( "dd bs=8192 if=" + src_part_path + " of=" + dest_part_path ) )
|
||||
{
|
||||
Partition partition ;
|
||||
partition .partition = dest_part_path ;
|
||||
|
|
|
@ -24,7 +24,7 @@ int main( int argc, char *argv[ ] )
|
|||
Glib::thread_init( );
|
||||
|
||||
Gtk::Main kit( argc, argv );
|
||||
|
||||
|
||||
//i18n
|
||||
bindtextdomain( GETTEXT_PACKAGE, GNOMELOCALEDIR );
|
||||
bind_textdomain_codeset( GETTEXT_PACKAGE, "UTF-8" );
|
||||
|
|
|
@ -81,10 +81,10 @@ bool ntfs::Create( const Partition & new_partition )
|
|||
|
||||
bool ntfs::Resize( const Partition & partition_new, bool fill_partition )
|
||||
{
|
||||
Glib::ustring str_temp = "echo y | LC_NUMERIC=C ntfsresize -f " + partition_new .partition ;
|
||||
Glib::ustring str_temp = "echo y | ntfsresize -f " + partition_new .partition ;
|
||||
|
||||
if ( ! fill_partition )
|
||||
str_temp += " -s " + num_to_str( partition_new .Get_Length_MB( ) - cylinder_size ) + "M" ;
|
||||
str_temp += " -s " + num_to_str( partition_new .Get_Length_MB( ) - cylinder_size, true ) + "M" ;
|
||||
|
||||
return ! Execute_Command( str_temp ) ;
|
||||
}
|
||||
|
|
|
@ -84,7 +84,7 @@ void reiser4::Set_Used_Sectors( Partition & partition )
|
|||
|
||||
bool reiser4::Create( const Partition & new_partition )
|
||||
{
|
||||
return ! Execute_Command( "mkfs.reiser4 -y " + new_partition .partition ) ;
|
||||
return ! Execute_Command( "mkfs.reiser4 --yes " + new_partition .partition ) ;
|
||||
}
|
||||
|
||||
bool reiser4::Resize( const Partition & partition_new, bool fill_partition )
|
||||
|
@ -114,7 +114,7 @@ bool reiser4::Copy( const Glib::ustring & src_part_path, const Glib::ustring & d
|
|||
|
||||
bool reiser4::Check_Repair( const Partition & partition )
|
||||
{
|
||||
return ! Execute_Command( "fsck.reiser4 -y --fix " + partition .partition ) ;
|
||||
return ! Execute_Command( "fsck.reiser4 --yes --fix " + partition .partition ) ;
|
||||
}
|
||||
|
||||
int reiser4::get_estimated_time( long MB_to_Consider )
|
||||
|
|
|
@ -89,17 +89,17 @@ bool reiserfs::Create( const Partition & new_partition )
|
|||
|
||||
bool reiserfs::Resize( const Partition & partition_new, bool fill_partition )
|
||||
{
|
||||
Glib::ustring str_temp = "echo y | LC_NUMERIC=C resize_reiserfs " + partition_new .partition ;
|
||||
Glib::ustring str_temp = "echo y | resize_reiserfs " + partition_new .partition ;
|
||||
|
||||
if ( ! fill_partition )
|
||||
str_temp += " -s " + num_to_str( partition_new .Get_Length_MB( ) - cylinder_size ) + "M" ;
|
||||
str_temp += " -s " + num_to_str( partition_new .Get_Length_MB( ) - cylinder_size, true ) + "M" ;
|
||||
|
||||
return ! Execute_Command( str_temp ) ;
|
||||
}
|
||||
|
||||
bool reiserfs::Copy( const Glib::ustring & src_part_path, const Glib::ustring & dest_part_path )
|
||||
{
|
||||
if ( ! Execute_Command( "LC_NUMERIC=C dd bs=8192 if=" + src_part_path + " of=" + dest_part_path ) )
|
||||
if ( ! Execute_Command( "dd bs=8192 if=" + src_part_path + " of=" + dest_part_path ) )
|
||||
{
|
||||
Partition partition ;
|
||||
partition .partition = dest_part_path ;
|
||||
|
|
Loading…
Reference in New Issue