parent
3d0c5a5f83
commit
6a4655ca40
@ -0,0 +1,74 @@
|
||||
diff --git a/configure.in b/configure.in
|
||||
index 427de2a..436051d 100644
|
||||
--- a/configure.in
|
||||
+++ b/configure.in
|
||||
@@ -131,6 +131,55 @@ int main ()
|
||||
LIBS="$LIBS_save"
|
||||
|
||||
|
||||
+dnl======================
|
||||
+dnl check whether libparted >= 3.0 (libparted is missing file system resizing API)
|
||||
+dnl======================
|
||||
+LIBPARTED_VERSION=3.0
|
||||
+AC_MSG_CHECKING([if libparted >= $LIBPARTED_VERSION (libparted is missing file system resizing API)])
|
||||
+LIBS_save="$LIBS"
|
||||
+LIBS="-lparted -luuid -ldl"
|
||||
+need_work_around=yes
|
||||
+AC_TRY_RUN([
|
||||
+#include <stdio.h>
|
||||
+#include <parted/parted.h>
|
||||
+
|
||||
+int main ()
|
||||
+{
|
||||
+ int min_major = 0;
|
||||
+ int min_minor = 0;
|
||||
+ int min_micro = 0;
|
||||
+ int major = 0;
|
||||
+ int minor = 0;
|
||||
+ int micro = 0;
|
||||
+
|
||||
+ if ( ( sscanf( "$LIBPARTED_VERSION", "%d.%d.%d", &min_major, &min_minor, &min_micro ) == 3 ) ||
|
||||
+ ( sscanf( "$LIBPARTED_VERSION", "%d.%d", &min_major, &min_minor ) == 2 ) ||
|
||||
+ ( sscanf( "$LIBPARTED_VERSION", "%d", &min_major ) == 1 )
|
||||
+ )
|
||||
+ {
|
||||
+ if ( ( sscanf( ped_get_version(), "%d.%d.%d", &major, &minor, µ ) == 3 ) ||
|
||||
+ ( sscanf( ped_get_version(), "%d.%d", &major, &minor ) == 2 ) ||
|
||||
+ ( sscanf( ped_get_version(), "%d", &major ) == 1 )
|
||||
+ )
|
||||
+ {
|
||||
+ return ! ( (major > min_major) ||
|
||||
+ ( (major == min_major) && (minor > min_minor) ) ||
|
||||
+ ( (major == min_major) && (minor == min_minor) && (micro >= min_micro) )
|
||||
+ ) ;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return 1 ;
|
||||
+}
|
||||
+], [AC_MSG_RESULT([yes])
|
||||
+ AC_DEFINE([HAVE_LIBPARTED_3_0_0_PLUS], [1], [Define to 1 if libparted >= 3.0])
|
||||
+ have_lp_fs_resize_api=no]
|
||||
+, [AC_MSG_RESULT([no])
|
||||
+ have_lp_fs_resize_api=yes]
|
||||
+)
|
||||
+LIBS="$LIBS_save"
|
||||
+
|
||||
+
|
||||
dnl GTKMM
|
||||
PKG_CHECK_MODULES([GTKMM], [gtkmm-2.4 > 2.8])
|
||||
AC_SUBST([GTKMM_LIBS])
|
||||
@@ -215,9 +215,12 @@
|
||||
echo ""
|
||||
echo " Build documentation? : $enable_doc"
|
||||
echo ""
|
||||
+echo " Use native libparted dmraid support? : $enable_libparted_dmraid"
|
||||
+echo ""
|
||||
+echo " --- Features Based On Libparted Version ---"
|
||||
echo " Need part table re-read work around? : $need_pt_reread_work_around"
|
||||
echo " Supports sector sizes > 512 bytes? : $support_sector_size_gt_512"
|
||||
-echo " Use native libparted dmraid support? : $enable_libparted_dmraid"
|
||||
+echo " Have libparted file system resizing API? : $have_lp_fs_resize_api"
|
||||
echo ""
|
||||
echo " If all settings are OK, type make and make install "
|
||||
echo "========================================================"
|
@ -0,0 +1,372 @@
|
||||
diff --git a/include/GParted_Core.h b/include/GParted_Core.h
|
||||
index 55bd6f5..03ad852 100644
|
||||
--- a/include/GParted_Core.h
|
||||
+++ b/include/GParted_Core.h
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Copyright (C) 2004 Bart
|
||||
- * Copyright (C) 2008, 2009, 2010 Curtis Gedak
|
||||
+ * Copyright (C) 2008, 2009, 2010, 2011 Curtis Gedak
|
||||
*
|
||||
* 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
|
||||
@@ -78,7 +78,9 @@ private:
|
||||
bool inside_extended ) ;
|
||||
void set_mountpoints( std::vector<Partition> & partitions ) ;
|
||||
void set_used_sectors( std::vector<Partition> & partitions ) ;
|
||||
+#ifndef HAVE_LIBPARTED_3_0_0_PLUS
|
||||
void LP_set_used_sectors( Partition & partition );
|
||||
+#endif
|
||||
void set_flags( Partition & partition ) ;
|
||||
|
||||
//operationstuff...
|
||||
@@ -103,9 +105,11 @@ private:
|
||||
bool move_filesystem( const Partition & partition_old,
|
||||
const Partition & partition_new,
|
||||
OperationDetail & operationdetail ) ;
|
||||
+#ifndef HAVE_LIBPARTED_3_0_0_PLUS
|
||||
bool resize_move_filesystem_using_libparted( const Partition & partition_old,
|
||||
const Partition & partition_new,
|
||||
OperationDetail & operationdetail ) ;
|
||||
+#endif
|
||||
bool resize( const Partition & partition_old,
|
||||
const Partition & partition_new,
|
||||
OperationDetail & operationdetail ) ;
|
||||
@@ -176,7 +180,9 @@ private:
|
||||
Partition & partition_new,
|
||||
OperationDetail & operationdetail ) ;
|
||||
bool set_proper_filesystem( const FILESYSTEM & filesystem ) ;
|
||||
+#ifndef HAVE_LIBPARTED_3_0_0_PLUS
|
||||
bool erase_filesystem_signatures( const Partition & partition ) ;
|
||||
+#endif
|
||||
bool update_bootsector( const Partition & partition, OperationDetail & operationdetail ) ;
|
||||
|
||||
//general..
|
||||
diff --git a/include/Utils.h b/include/Utils.h
|
||||
index 180416b..e154d6f 100644
|
||||
--- a/include/Utils.h
|
||||
+++ b/include/Utils.h
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Copyright (C) 2004 Bart
|
||||
- * Copyright (C) 2008, 2009, 2010 Curtis Gedak
|
||||
+ * Copyright (C) 2008, 2009, 2010, 2011 Curtis Gedak
|
||||
*
|
||||
* 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
|
||||
@@ -94,7 +94,9 @@ struct FS
|
||||
{
|
||||
NONE = 0,
|
||||
GPARTED = 1,
|
||||
+#ifndef HAVE_LIBPARTED_3_0_0_PLUS
|
||||
LIBPARTED = 2,
|
||||
+#endif
|
||||
EXTERNAL = 3
|
||||
};
|
||||
|
||||
diff --git a/src/Dialog_Partition_New.cc b/src/Dialog_Partition_New.cc
|
||||
index 7ecb2e5..7be8ef4 100644
|
||||
--- a/src/Dialog_Partition_New.cc
|
||||
+++ b/src/Dialog_Partition_New.cc
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Copyright (C) 2004 Bart
|
||||
- * Copyright (C) 2008, 2009, 2010 Curtis Gedak
|
||||
+ * Copyright (C) 2008, 2009, 2010, 2011 Curtis Gedak
|
||||
*
|
||||
* 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
|
||||
@@ -61,7 +61,7 @@ void Dialog_Partition_New::Set_Data( const Partition & partition,
|
||||
FS fs_tmp ;
|
||||
//add FS_UNFORMATTED
|
||||
fs_tmp .filesystem = GParted::FS_UNFORMATTED ;
|
||||
- fs_tmp .create = GParted::FS::LIBPARTED ;
|
||||
+ fs_tmp .create = FS::GPARTED ;
|
||||
this ->FILESYSTEMS .push_back( fs_tmp ) ;
|
||||
|
||||
//add FS_EXTENDED
|
||||
diff --git a/src/GParted_Core.cc b/src/GParted_Core.cc
|
||||
index 847ca74..a39b88f 100644
|
||||
--- a/src/GParted_Core.cc
|
||||
+++ b/src/GParted_Core.cc
|
||||
@@ -1223,8 +1223,10 @@ void GParted_Core::read_label( Partition & partition )
|
||||
if ( set_proper_filesystem( partition .filesystem ) )
|
||||
p_filesystem ->read_label( partition ) ;
|
||||
break ;
|
||||
+#ifndef HAVE_LIBPARTED_3_0_0_PLUS
|
||||
case FS::LIBPARTED:
|
||||
break ;
|
||||
+#endif
|
||||
|
||||
default:
|
||||
break ;
|
||||
@@ -1396,9 +1398,11 @@ void GParted_Core::set_used_sectors( std::vector<Partition> & partitions )
|
||||
if ( set_proper_filesystem( partitions[ t ] .filesystem ) )
|
||||
p_filesystem ->set_used_sectors( partitions[ t ] ) ;
|
||||
break ;
|
||||
+#ifndef HAVE_LIBPARTED_3_0_0_PLUS
|
||||
case GParted::FS::LIBPARTED :
|
||||
LP_set_used_sectors( partitions[ t ] ) ;
|
||||
break ;
|
||||
+#endif
|
||||
|
||||
default:
|
||||
break ;
|
||||
@@ -1430,6 +1434,7 @@ void GParted_Core::set_used_sectors( std::vector<Partition> & partitions )
|
||||
}
|
||||
}
|
||||
|
||||
+#ifndef HAVE_LIBPARTED_3_0_0_PLUS
|
||||
void GParted_Core::LP_set_used_sectors( Partition & partition )
|
||||
{
|
||||
PedFileSystem *fs = NULL;
|
||||
@@ -1458,6 +1463,7 @@ void GParted_Core::LP_set_used_sectors( Partition & partition )
|
||||
}
|
||||
}
|
||||
}
|
||||
+#endif
|
||||
|
||||
void GParted_Core::set_flags( Partition & partition )
|
||||
{
|
||||
@@ -1572,7 +1578,11 @@ bool GParted_Core::create_partition( Partition & new_partition, OperationDetail
|
||||
close_device_and_disk() ;
|
||||
}
|
||||
|
||||
- bool succes = new_partition .partition_number > 0 && erase_filesystem_signatures( new_partition ) ;
|
||||
+ bool succes = new_partition .partition_number > 0
|
||||
+#ifndef HAVE_LIBPARTED_3_0_0_PLUS
|
||||
+ && erase_filesystem_signatures( new_partition )
|
||||
+#endif
|
||||
+ ;
|
||||
|
||||
#ifndef USE_LIBPARTED_DMRAID
|
||||
//create dev map entries if dmraid
|
||||
@@ -1600,8 +1610,10 @@ bool GParted_Core::create_filesystem( const Partition & partition, OperationDeta
|
||||
break ;
|
||||
case GParted::FS::GPARTED:
|
||||
break ;
|
||||
+#ifndef HAVE_LIBPARTED_3_0_0_PLUS
|
||||
case GParted::FS::LIBPARTED:
|
||||
break ;
|
||||
+#endif
|
||||
case GParted::FS::EXTERNAL:
|
||||
succes = set_proper_filesystem( partition .filesystem ) &&
|
||||
p_filesystem ->create( partition, operationdetail .get_last_child() ) ;
|
||||
@@ -1614,9 +1626,11 @@ bool GParted_Core::create_filesystem( const Partition & partition, OperationDeta
|
||||
}
|
||||
|
||||
bool GParted_Core::format( const Partition & partition, OperationDetail & operationdetail )
|
||||
-{
|
||||
+{
|
||||
+#ifndef HAVE_LIBPARTED_3_0_0_PLUS
|
||||
//remove all file system signatures...
|
||||
erase_filesystem_signatures( partition ) ;
|
||||
+#endif
|
||||
|
||||
return set_partition_type( partition, operationdetail ) && create_filesystem( partition, operationdetail ) ;
|
||||
}
|
||||
@@ -1684,8 +1698,10 @@ bool GParted_Core::label_partition( const Partition & partition, OperationDetail
|
||||
succes = set_proper_filesystem( partition .filesystem ) &&
|
||||
p_filesystem ->write_label( partition, operationdetail .get_last_child() ) ;
|
||||
break ;
|
||||
+#ifndef HAVE_LIBPARTED_3_0_0_PLUS
|
||||
case FS::LIBPARTED:
|
||||
break ;
|
||||
+#endif
|
||||
|
||||
default:
|
||||
break ;
|
||||
@@ -1867,11 +1883,13 @@ bool GParted_Core::move_filesystem( const Partition & partition_old,
|
||||
succes = copy_filesystem( partition_old, partition_new, operationdetail .get_last_child() ) ;
|
||||
|
||||
break ;
|
||||
+#ifndef HAVE_LIBPARTED_3_0_0_PLUS
|
||||
case GParted::FS::LIBPARTED:
|
||||
succes = resize_move_filesystem_using_libparted( partition_old,
|
||||
partition_new,
|
||||
operationdetail .get_last_child() ) ;
|
||||
break ;
|
||||
+#endif
|
||||
case GParted::FS::EXTERNAL:
|
||||
succes = set_proper_filesystem( partition_new .filesystem ) &&
|
||||
p_filesystem ->move( partition_old
|
||||
@@ -1885,6 +1903,7 @@ bool GParted_Core::move_filesystem( const Partition & partition_old,
|
||||
return succes ;
|
||||
}
|
||||
|
||||
+#ifndef HAVE_LIBPARTED_3_0_0_PLUS
|
||||
bool GParted_Core::resize_move_filesystem_using_libparted( const Partition & partition_old,
|
||||
const Partition & partition_new,
|
||||
OperationDetail & operationdetail )
|
||||
@@ -1921,6 +1940,7 @@ bool GParted_Core::resize_move_filesystem_using_libparted( const Partition & par
|
||||
|
||||
return return_value ;
|
||||
}
|
||||
+#endif
|
||||
|
||||
bool GParted_Core::resize( const Partition & partition_old,
|
||||
const Partition & partition_new,
|
||||
@@ -2173,11 +2193,13 @@ bool GParted_Core::resize_filesystem( const Partition & partition_old,
|
||||
break ;
|
||||
case GParted::FS::GPARTED:
|
||||
break ;
|
||||
+#ifndef HAVE_LIBPARTED_3_0_0_PLUS
|
||||
case GParted::FS::LIBPARTED:
|
||||
succes = resize_move_filesystem_using_libparted( partition_old,
|
||||
partition_new,
|
||||
operationdetail .get_last_child() ) ;
|
||||
break ;
|
||||
+#endif
|
||||
case GParted::FS::EXTERNAL:
|
||||
succes = set_proper_filesystem( partition_new .filesystem ) &&
|
||||
p_filesystem ->resize( partition_new,
|
||||
@@ -2244,10 +2266,12 @@ bool GParted_Core::copy( const Partition & partition_src,
|
||||
partition_dst,
|
||||
operationdetail .get_last_child() ) ;
|
||||
break ;
|
||||
-
|
||||
+
|
||||
+#ifndef HAVE_LIBPARTED_3_0_0_PLUS
|
||||
case GParted::FS::LIBPARTED :
|
||||
//FIXME: see if copying through libparted has any advantages
|
||||
break ;
|
||||
+#endif
|
||||
|
||||
case GParted::FS::EXTERNAL :
|
||||
succes = set_proper_filesystem( partition_dst .filesystem ) &&
|
||||
@@ -2479,8 +2503,10 @@ bool GParted_Core::check_repair_filesystem( const Partition & partition, Operati
|
||||
break ;
|
||||
case GParted::FS::GPARTED:
|
||||
break ;
|
||||
+#ifndef HAVE_LIBPARTED_3_0_0_PLUS
|
||||
case GParted::FS::LIBPARTED:
|
||||
break ;
|
||||
+#endif
|
||||
case GParted::FS::EXTERNAL:
|
||||
succes = set_proper_filesystem( partition .filesystem ) &&
|
||||
p_filesystem ->check_repair( partition, operationdetail .get_last_child() ) ;
|
||||
@@ -2908,7 +2934,8 @@ bool GParted_Core::set_proper_filesystem( const FILESYSTEM & filesystem )
|
||||
|
||||
return p_filesystem ;
|
||||
}
|
||||
-
|
||||
+
|
||||
+#ifndef HAVE_LIBPARTED_3_0_0_PLUS
|
||||
bool GParted_Core::erase_filesystem_signatures( const Partition & partition )
|
||||
{
|
||||
bool return_value = false ;
|
||||
@@ -2935,7 +2962,8 @@ bool GParted_Core::erase_filesystem_signatures( const Partition & partition )
|
||||
|
||||
return return_value ;
|
||||
}
|
||||
-
|
||||
+#endif
|
||||
+
|
||||
bool GParted_Core::update_bootsector( const Partition & partition, OperationDetail & operationdetail )
|
||||
{
|
||||
//only for ntfs atm...
|
||||
diff --git a/src/fat16.cc b/src/fat16.cc
|
||||
index a9d418a..2fe73c9 100644
|
||||
--- a/src/fat16.cc
|
||||
+++ b/src/fat16.cc
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Copyright (C) 2004 Bart
|
||||
- * Copyright (C) 2008, 2009, 2010 Curtis Gedak
|
||||
+ * Copyright (C) 2008, 2009, 2010, 2011 Curtis Gedak
|
||||
*
|
||||
* 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
|
||||
@@ -49,11 +49,15 @@ FS fat16::get_filesystem_support()
|
||||
fs .write_label = FS::EXTERNAL ;
|
||||
}
|
||||
|
||||
+#ifndef HAVE_LIBPARTED_3_0_0_PLUS
|
||||
//resizing of start and endpoint are provided by libparted
|
||||
fs .grow = GParted::FS::LIBPARTED ;
|
||||
fs .shrink = GParted::FS::LIBPARTED ;
|
||||
fs .move = GParted::FS::LIBPARTED ;
|
||||
-
|
||||
+#else
|
||||
+ fs.move = FS::GPARTED ;
|
||||
+#endif
|
||||
+
|
||||
fs .copy = GParted::FS::GPARTED ;
|
||||
|
||||
fs .MIN = 16 * MEBIBYTE ;
|
||||
diff --git a/src/fat32.cc b/src/fat32.cc
|
||||
index f7990dd..8860a5e 100644
|
||||
--- a/src/fat32.cc
|
||||
+++ b/src/fat32.cc
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Copyright (C) 2004 Bart
|
||||
- * Copyright (C) 2008, 2009, 2010 Curtis Gedak
|
||||
+ * Copyright (C) 2008, 2009, 2010, 2011 Curtis Gedak
|
||||
*
|
||||
* 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
|
||||
@@ -48,12 +48,16 @@ FS fat32::get_filesystem_support()
|
||||
fs .read_label = FS::EXTERNAL ;
|
||||
fs .write_label = FS::EXTERNAL ;
|
||||
}
|
||||
-
|
||||
+
|
||||
+#ifndef HAVE_LIBPARTED_3_0_0_PLUS
|
||||
//resizing of start and endpoint are provided by libparted
|
||||
fs .grow = GParted::FS::LIBPARTED ;
|
||||
fs .shrink = GParted::FS::LIBPARTED ;
|
||||
fs .move = GParted::FS::LIBPARTED ;
|
||||
-
|
||||
+#else
|
||||
+ fs .move = FS::GPARTED ;
|
||||
+#endif
|
||||
+
|
||||
fs .copy = GParted::FS::GPARTED ;
|
||||
|
||||
fs .MIN = 32 * MEBIBYTE ; //smaller fs'es will cause windows scandisk to fail..
|
||||
diff --git a/src/hfs.cc b/src/hfs.cc
|
||||
index aa6fed7..0856aaa 100644
|
||||
--- a/src/hfs.cc
|
||||
+++ b/src/hfs.cc
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Copyright (C) 2004 Bart
|
||||
- * Copyright (C) 2008, 2009, 2010 Curtis Gedak
|
||||
+ * Copyright (C) 2008, 2009, 2010, 2011 Curtis Gedak
|
||||
*
|
||||
* 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
|
||||
@@ -27,9 +27,11 @@ FS hfs::get_filesystem_support()
|
||||
FS fs ;
|
||||
|
||||
fs .filesystem = GParted::FS_HFS ;
|
||||
-
|
||||
+
|
||||
+#ifndef HAVE_LIBPARTED_3_0_0_PLUS
|
||||
fs .read = GParted::FS::LIBPARTED ;
|
||||
fs .shrink = GParted::FS::LIBPARTED ;
|
||||
+#endif
|
||||
|
||||
if ( ! Glib::find_program_in_path( "hformat" ) .empty() )
|
||||
fs .create = GParted::FS::EXTERNAL ;
|
||||
diff --git a/src/hfsplus.cc b/src/hfsplus.cc
|
||||
index bb5126d..31925a0 100644
|
||||
--- a/src/hfsplus.cc
|
||||
+++ b/src/hfsplus.cc
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Copyright (C) 2004 Bart
|
||||
- * Copyright (C) 2008, 2009, 2010 Curtis Gedak
|
||||
+ * Copyright (C) 2008, 2009, 2010, 2011 Curtis Gedak
|
||||
*
|
||||
* 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
|
||||
@@ -27,10 +27,12 @@ FS hfsplus::get_filesystem_support()
|
||||
FS fs ;
|
||||
|
||||
fs .filesystem = GParted::FS_HFSPLUS ;
|
||||
-
|
||||
+
|
||||
+#ifndef HAVE_LIBPARTED_3_0_0_PLUS
|
||||
fs .read = GParted::FS::LIBPARTED ;
|
||||
fs .shrink = GParted::FS::LIBPARTED ;
|
||||
-
|
||||
+#endif
|
||||
+
|
||||
if ( ! Glib::find_program_in_path( "mkfs.hfsplus" ) .empty() )
|
||||
fs .create = GParted::FS::EXTERNAL ;
|
||||
|
Loading…
Reference in new issue