[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[PATCH 2/2] partman: Add partman_list_allowed() and use it in -crypto, -lvm, -md



From: Max Vozeler <max@nusquama.org>

Consolidates identical code.

[Not yet tested, only for review.]

---
 packages/partman/partman-base/lib/base.sh          |   33 ++++++++++++++++++
 packages/partman/partman-crypto/lib/crypto-base.sh |   36 +++++---------------
 packages/partman/partman-lvm/lib/lvm-base.sh       |   29 +---------------
 packages/partman/partman-md/lib/md-base.sh         |   29 +---------------
 4 files changed, 44 insertions(+), 83 deletions(-)

diff --git a/packages/partman/partman-base/lib/base.sh b/packages/partman/partman-base/lib/base.sh
index 95ff807..8c91aed 100644
--- a/packages/partman/partman-base/lib/base.sh
+++ b/packages/partman/partman-base/lib/base.sh
@@ -1103,6 +1103,39 @@ partman_unlock_unit() {
 	cd "$cwd"
 }
 
+partman_list_allowed() {
+	local allowed_func=$1
+	local IFS
+	local partitions
+	local freenum=1
+	for dev in $DEVICES/*; do
+		[ -d $dev ] || continue
+		cd $dev
+
+		open_dialog PARTITIONS
+		partitions="$(read_paragraph)"
+		close_dialog
+
+		local id size fs path
+		IFS="$TAB"
+		echo "$partitions" |
+		while { read x1 id size x4 fs path x7; [ "$id" ]; }; do
+			restore_ifs
+			if $allowed_func "$dev" "$id"; then
+				if [ "$fs" = free ]; then
+					printf "%s\t%s\t%s\t%s free #%d\n" "$dev" "$id" "$size" "$(mapdevfs "$(cat "$dev/device")")" "$freenum"
+					freenum="$(($freenum + 1))"
+				else
+					printf "%s\t%s\t%s\t%s\n" "$dev" "$id" "$size" "$(mapdevfs "$path")"
+				fi
+			fi
+			IFS="$TAB"
+		done
+		restore_ifs
+	done
+}
+
+
 [ "$PARTMAN_TEST" ] || log '*******************************************************'
 
 # Local Variables:
diff --git a/packages/partman/partman-crypto/lib/crypto-base.sh b/packages/partman/partman-crypto/lib/crypto-base.sh
index 82e16de..0d28e21 100644
--- a/packages/partman/partman-crypto/lib/crypto-base.sh
+++ b/packages/partman/partman-crypto/lib/crypto-base.sh
@@ -1,35 +1,17 @@
 . /lib/partman/lib/base.sh
 . /lib/partman/lib/commit.sh
 
-crypto_list_allowed() {
-	local IFS
-	local partitions
-	local freenum=1
-	for dev in $DEVICES/*; do
-		if [ ! -d "$dev" ] || [ -f "$dev/crypt_realdev" ]; then
-			continue
-		fi
-		cd "$dev"
+# Would this partition be allowed as a physical volume for crypto?
+crypto_allowed() {
+	local dev=$1
+	local id=$2
 
-		open_dialog PARTITIONS
-		partitions="$(read_paragraph)"
-		close_dialog
+	# Allow unless this is a crypto device
+	[ ! -f "$dev/crypto_realdev" ]
+}
 
-		local id size fs path
-		IFS="$TAB"
-		echo "$partitions" |
-		while { read x1 id size x4 fs path x7; [ "$id" ]; }; do
-			restore_ifs
-			if [ "$fs" = free ]; then
-				printf "%s\t%s\t%s\t%s free #%d\n" "$dev" "$id" "$size" "$(mapdevfs "$(cat "$dev/device")")" "$freenum"
-				freenum="$(($freenum + 1))"
-			else
-				printf "%s\t%s\t%s\t%s\n" "$dev" "$id" "$size" "$(mapdevfs "$path")"
-			fi
-			IFS="$TAB"
-		done
-		restore_ifs
-	done
+crypto_list_allowed() {
+	partman_list_allowed crypto_allowed
 }
 
 crypto_list_allowed_free() {
diff --git a/packages/partman/partman-lvm/lib/lvm-base.sh b/packages/partman/partman-lvm/lib/lvm-base.sh
index 97aeb0b..a1425d9 100644
--- a/packages/partman/partman-lvm/lib/lvm-base.sh
+++ b/packages/partman/partman-lvm/lib/lvm-base.sh
@@ -241,34 +241,7 @@ pv_allowed () {
 }
 
 pv_list_allowed () {
-	local IFS
-	local partitions
-	local freenum=1
-	for dev in $DEVICES/*; do
-		[ -d $dev ] || continue
-		cd $dev
-
-		open_dialog PARTITIONS
-		partitions="$(read_paragraph)"
-		close_dialog
-
-		local id size fs path
-		IFS="$TAB"
-		echo "$partitions" |
-		while { read x1 id size x4 fs path x7; [ "$id" ]; }; do
-			restore_ifs
-			if pv_allowed "$dev" "$id"; then
-				if [ "$fs" = free ]; then
-					printf "%s\t%s\t%s\t%s free #%d\n" "$dev" "$id" "$size" "$(mapdevfs "$(cat "$dev/device")")" "$freenum"
-					freenum="$(($freenum + 1))"
-				else
-					printf "%s\t%s\t%s\t%s\n" "$dev" "$id" "$size" "$(mapdevfs "$path")"
-				fi
-			fi
-			IFS="$TAB"
-		done
-		restore_ifs
-	done
+	partman_list_allowed pv_allowed
 }
 
 pv_list_allowed_free () {
diff --git a/packages/partman/partman-md/lib/md-base.sh b/packages/partman/partman-md/lib/md-base.sh
index a927014..2685182 100644
--- a/packages/partman/partman-md/lib/md-base.sh
+++ b/packages/partman/partman-md/lib/md-base.sh
@@ -60,34 +60,7 @@ md_allowed () {
 }
 
 md_list_allowed () {
-	local IFS
-	local partitions
-	local freenum=1
-	for dev in $DEVICES/*; do
-		[ -d $dev ] || continue
-		cd $dev
-
-		open_dialog PARTITIONS
-		partitions="$(read_paragraph)"
-		close_dialog
-
-		local id size fs path
-		IFS="$TAB"
-		echo "$partitions" |
-		while { read x1 id size x4 fs path x7; [ "$id" ]; }; do
-			restore_ifs
-			if md_allowed "$dev" "$id"; then
-				if [ "$fs" = free ]; then
-					printf "%s\t%s\t%s\t%s free #%d\n" "$dev" "$id" "$size" "$(mapdevfs "$(cat "$dev/device")")" "$freenum"
-					freenum="$(($freenum + 1))"
-				else
-					printf "%s\t%s\t%s\t%s\n" "$dev" "$id" "$size" "$(mapdevfs "$path")"
-				fi
-			fi
-			IFS="$TAB"
-		done
-		restore_ifs
-	done
+	partman_list_allowed md_allowed
 }
 
 md_list_allowed_free () {
-- 
1.6.3.3


Reply to: