[Parted-commits] GNU Parted Official Repository: Changes to 'master'

Jim Meyering meyering at alioth.debian.org
Wed Jun 22 19:59:31 UTC 2011


 configure.ac                 |    2 +-
 libparted/unit.c             |    8 +++++++-
 tests/Makefile.am            |    2 ++
 tests/t9022-one-unit-snap.sh |   42 ++++++++++++++++++++++++++++++++++++++++++
 tests/t9023-value-lt-one.sh  |   32 ++++++++++++++++++++++++++++++++
 5 files changed, 84 insertions(+), 2 deletions(-)

New commits:
commit b8f017f18fa99f9377ef461cbbd3264c7878a9aa
Author: Brian C. Lane <bcl at redhat.com>
Date:   Tue Jun 21 10:44:18 2011 -0700

    tests: add test for value less than 1
    
    * tests/t9023-value-lt-one.sh: New file.
    * tests/Makefile.am (TESTS): Add it.

diff --git a/tests/Makefile.am b/tests/Makefile.am
index 7487a5d..b57142b 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -45,6 +45,7 @@ TESTS = \
   t9020-alignment.sh \
   t9021-maxima.sh \
   t9022-one-unit-snap.sh \
+  t9023-value-lt-one.sh \
   t9030-align-check.sh \
   t9040-many-partitions.sh \
   t9041-undetected-in-use-16th-partition.sh \
diff --git a/tests/t9023-value-lt-one.sh b/tests/t9023-value-lt-one.sh
new file mode 100644
index 0000000..67be8d6
--- /dev/null
+++ b/tests/t9023-value-lt-one.sh
@@ -0,0 +1,32 @@
+#!/bin/sh
+# Confirm that a value between 0 and 1 throws an error
+
+# Copyright (C) 2011 Free Software Foundation, Inc.
+
+# 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 3 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 General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+
+ss=$sector_size_
+n_sectors=3000
+dev=dev-file
+
+echo 'Error: Use a smaller unit instead of a value < 1' > exp
+
+dd if=/dev/null of=$dev bs=$ss seek=$n_sectors || fail=1
+parted --align=none -s $dev mklabel msdos mkpart pri 0 0.5MB \
+    > err 2>&1
+compare err exp || fail=1
+
+Exit $fail

commit 801a0d9957116757dddc4e62abe62a403d22c9b2
Author: Brian C. Lane <bcl at redhat.com>
Date:   Tue Jun 21 10:44:17 2011 -0700

    tests: add test for radius divide by 2 fix
    
    * tests/t9022-one-unit-snap.sh: New file.
    * tests/Makefile.am (TESTS): Add it.

diff --git a/tests/Makefile.am b/tests/Makefile.am
index 4ea08f3..7487a5d 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -44,6 +44,7 @@ TESTS = \
   t9010-big-sector.sh \
   t9020-alignment.sh \
   t9021-maxima.sh \
+  t9022-one-unit-snap.sh \
   t9030-align-check.sh \
   t9040-many-partitions.sh \
   t9041-undetected-in-use-16th-partition.sh \
diff --git a/tests/t9022-one-unit-snap.sh b/tests/t9022-one-unit-snap.sh
new file mode 100644
index 0000000..ce903a5
--- /dev/null
+++ b/tests/t9022-one-unit-snap.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+# Confirm that specifying 1 unit snaps to the correct value
+
+# Copyright (C) 2011 Free Software Foundation, Inc.
+
+# 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 3 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 General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
+
+ss=$sector_size_
+n_sectors=3000
+dev=dev-file
+
+# Create an example of what the result should look like
+# start should be at 1 sector.
+dd if=/dev/null of=$dev bs=$ss seek=$n_sectors || fail=1
+parted --align=none -s $dev mklabel msdos mkpart pri 1s $((1000*1000))B \
+    > err 2>&1 || fail=1
+compare err /dev/null || fail=1
+parted -m -s $dev u s p > exp || fail=1
+
+rm $dev
+dd if=/dev/null of=$dev bs=$ss seek=$n_sectors || fail=1
+parted --align=none -s $dev mklabel msdos mkpart pri 0 1MB \
+    > err 2>&1 || fail=1
+compare err /dev/null || fail=1
+parted -m -s $dev u s p > out || fail=1
+
+compare out exp || fail=1
+
+Exit $fail

commit bca7bb94e16acb1e88df97a5ce2c38adb76b072d
Author: Brian C. Lane <bcl at redhat.com>
Date:   Tue Jun 21 10:44:16 2011 -0700

    libparted: don't allow values less than 1 (#665496)
    
    When a value < 1 is used there is the possibility that the range can
    overlap sector 0. The user should use smaller units instead. 0 is a
    special case and is still allowed.
    
    * libparted/unit.c (ped_unit_parse_custom): Throw error if a value
    between 0 and 1 is used.

diff --git a/libparted/unit.c b/libparted/unit.c
index c2921e3..232f81b 100644
--- a/libparted/unit.c
+++ b/libparted/unit.c
@@ -531,6 +531,12 @@ ped_unit_parse_custom (const char* str, const PedDevice* dev, PedUnit unit,
 				_("Invalid number."));
 		goto error_free_copy;
 	}
+        if (num > 0 && num < 1) {
+            ped_exception_throw (
+                    PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+                    _("Use a smaller unit instead of a value < 1"));
+            goto error_free_copy;
+        }
 
 	unit_size = ped_unit_get_size (dev, unit);
 	radius = (ped_div_round_up (unit_size, dev->sector_size) / 2) - 1;

commit 18e727d492933ae1ebb16961e1df553f9299af8b
Author: Brian C. Lane <bcl at redhat.com>
Date:   Tue Jun 21 10:44:15 2011 -0700

    libparted: fix snap radius so that it is using half (#665496)
    
    The snap radius didn't match the documentation, it has been using +/-
    unit size instead +/- 0.5 * unit (eg. 500KB for a MB unit). This caused
    problems when specifying 1MB, 1GB, etc. as a partition start or end
    resulting in partitions being created that were nowhere near the
    specified size.
    
    * libparted/unit.c (ped_unit_parse_custom): divide radius by 2
    This addresses http://bugzilla.redhat.com/665496

diff --git a/libparted/unit.c b/libparted/unit.c
index dc4205b..c2921e3 100644
--- a/libparted/unit.c
+++ b/libparted/unit.c
@@ -533,7 +533,7 @@ ped_unit_parse_custom (const char* str, const PedDevice* dev, PedUnit unit,
 	}
 
 	unit_size = ped_unit_get_size (dev, unit);
-	radius = ped_div_round_up (unit_size, dev->sector_size) - 1;
+	radius = (ped_div_round_up (unit_size, dev->sector_size) / 2) - 1;
 	if (radius < 0)
 		radius = 0;
 	/* If the user specifies units in a power of 2, e.g., 4MiB, as in

commit bc84c8506c13f9b94099b84e19d052b8d9f0aa20
Author: Jim Meyering <meyering at redhat.com>
Date:   Fri Jun 10 12:13:02 2011 +0200

    maint: prefer AC_PROG_LIBTOOL over slightly deprecated AM_PROG_LIBTOOL
    
    * configure.ac: Use AC_PROG_LIBTOOL rather than slightly deprecated
    AM_PROG_LIBTOOL.

diff --git a/configure.ac b/configure.ac
index ce2b3b5..878b515 100644
--- a/configure.ac
+++ b/configure.ac
@@ -279,7 +279,7 @@ off_t is less than 8 bytes.  Using llseek syscall, and disabling shared
 libraries.)
 	AM_DISABLE_SHARED
 fi
-AM_PROG_LIBTOOL
+AC_PROG_LIBTOOL
 
 AM_GNU_GETTEXT_VERSION([0.18])
 AM_GNU_GETTEXT([external])



More information about the Parted-commits mailing list