[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