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

[PATCH 1/2] partman: Add ask_active_partition to lib/base.sh



From: Max Vozeler <max@nusquama.org>

This replaces shared code in partman-base, -crypto and -partitioning.

The only non-mechanical change is the one to partman-partitioning, 
which would change the behaviour in case we have a bug somewhere that
makes us not clear the state of a deleted partition.

[Not yet tested, only for review.]

---
 .../choose_partition/partition_tree/do_option      |   34 +++----------------
 packages/partman/partman-base/lib/base.sh          |   33 ++++++++++++++++++
 packages/partman/partman-crypto/lib/crypto-base.sh |   36 +++-----------------
 .../partman-partitioning/free_space/new/do_option  |   15 +++-----
 4 files changed, 48 insertions(+), 70 deletions(-)

diff --git a/packages/partman/partman-base/choose_partition/partition_tree/do_option b/packages/partman/partman-base/choose_partition/partition_tree/do_option
index a8031b0..ebd68a2 100755
--- a/packages/partman/partman-base/choose_partition/partition_tree/do_option
+++ b/packages/partman/partman-base/choose_partition/partition_tree/do_option
@@ -75,35 +75,11 @@ else
 	    *)
 		while true; do
 			set +e
-			device="$(humandev $(cat device))"
-			db_subst partman/active_partition DEVICE "$device"
-			db_subst partman/active_partition PARTITION "$num"
-			if [ -f  $id/detected_filesystem ]; then
-				filesystem=$(cat $id/detected_filesystem)
-				RET=''
-				db_metaget partman/filesystem_long/"$filesystem" description || RET=''
-				if [ "$RET" ]; then
-					filesystem="$RET"
-				fi
-				db_subst partman/text/there_is_detected FILESYSTEM "$filesystem"
-				db_metaget partman/text/there_is_detected description
-			else
-				db_metaget partman/text/none_detected description
-			fi
-			db_subst partman/active_partition OTHERINFO "${RET}"
-
-			if [ -f $id/detected_filesystem ] && [ -f $id/format ]; then
-				db_metaget partman/text/destroyed description
-				db_subst partman/active_partition DESTROYED "${RET}"
-			else
-				db_subst partman/active_partition DESTROYED ''
-			fi
-
-			ask_user /lib/partman/active_partition "$dev" "$id"
-			exitcode="$?"
-			if [ "$exitcode" -ge 128 ] && [ "$exitcode" -lt 192 ]; then
-				exit "$exitcode" # killed by signal
-			elif [ "$exitcode" -ge 100 ]; then
+			local code=0
+			ask_active_partition "$dev" "$id" "$num" || code=$?
+			if [ "$code" -ge 128 ] && [ "$code" -lt 192 ]; then
+				exit "$code" # killed by signal
+			elif [ "$code" -ge 100 ]; then
 				break
 			fi
 			set -e
diff --git a/packages/partman/partman-base/lib/base.sh b/packages/partman/partman-base/lib/base.sh
index 3b38d7e..95ff807 100644
--- a/packages/partman/partman-base/lib/base.sh
+++ b/packages/partman/partman-base/lib/base.sh
@@ -201,6 +201,39 @@ ask_user () {
 	return 0
 }
 
+ask_active_partition () {
+	local dev=$1
+	local id=$2
+	local num=$3
+	local RET
+
+	db_subst partman/active_partition DEVICE "$(humandev $(cat device))"
+	db_subst partman/active_partition PARTITION "$num"
+
+	if [ -f $id/detected_filesystem ]; then
+		local filesystem=$(cat $id/detected_filesystem)
+		RET=''
+		db_metaget partman/filesystem_long/"$filesystem" description || RET=''
+		if [ "$RET" ]; then
+			filesystem="$RET"
+		fi
+		db_subst partman/text/there_is_detected FILESYSTEM "$filesystem"
+		db_metaget partman/text/there_is_detected description
+	else
+		db_metaget partman/text/none_detected description
+	fi
+	db_subst partman/active_partition OTHERINFO "${RET}"
+
+	if [ -f $id/detected_filesystem ] && [ -f $id/format ]; then
+		db_metaget partman/text/destroyed description
+		db_subst partman/active_partition DESTROYED "${RET}"
+	else
+		db_subst partman/active_partition DESTROYED ''
+	fi
+
+	ask_user /lib/partman/active_partition "$dev" "$id" || return $?
+}
+
 partition_tree_choices () {
 	local IFS
 	for dev in $DEVICES/*; do
diff --git a/packages/partman/partman-crypto/lib/crypto-base.sh b/packages/partman/partman-crypto/lib/crypto-base.sh
index 25d204b..82e16de 100644
--- a/packages/partman/partman-crypto/lib/crypto-base.sh
+++ b/packages/partman/partman-crypto/lib/crypto-base.sh
@@ -107,38 +107,12 @@ crypto_prepare () {
 		echo dm-crypt >"$id/crypto_type"
 		echo crypto >"$id/method"
 
-		# cloned-and-hacked from
-		# partman-base/choose_partition/partition_tree/do_option
 		while true; do
-			local device="$(humandev $(cat device))"
-			db_subst partman/active_partition DEVICE "$device"
-			db_subst partman/active_partition PARTITION "$num"
-			if [ -f  $id/detected_filesystem ]; then
-				local filesystem=$(cat $id/detected_filesystem)
-				RET=''
-				db_metaget partman/filesystem_long/"$filesystem" description || RET=''
-				if [ "$RET" ]; then
-					filesystem="$RET"
-				fi
-				db_subst partman/text/there_is_detected FILESYSTEM "$filesystem"
-				db_metaget partman/text/there_is_detected description
-			else
-				db_metaget partman/text/none_detected description
-			fi
-			db_subst partman/active_partition OTHERINFO "${RET}"
-
-			if [ -f $id/detected_filesystem ] && [ -f $id/format ]; then
-				db_metaget partman/text/destroyed description
-				db_subst partman/active_partition DESTROYED "${RET}"
-			else
-				db_subst partman/active_partition DESTROYED ''
-			fi
-
-			ask_user /lib/partman/active_partition "$dev" "$id"
-			exitcode="$?"
-			if [ "$exitcode" -ge 128 ] && [ "$exitcode" -lt 192 ]; then
-				exit "$exitcode" # killed by signal
-			elif [ "$exitcode" -ge 100 ]; then
+			local code=0
+			ask_active_partition "$dev" "$id" "$num" || code=$?
+			if [ "$code" -ge 128 ] && [ "$code" -lt 192 ]; then
+				exit "$code" # killed by signal
+			elif [ "$code" -ge 100 ]; then
 				break
 			fi
 		done
diff --git a/packages/partman/partman-partitioning/free_space/new/do_option b/packages/partman/partman-partitioning/free_space/new/do_option
index 5047525..0d3ec88 100755
--- a/packages/partman/partman-partitioning/free_space/new/do_option
+++ b/packages/partman/partman-partitioning/free_space/new/do_option
@@ -211,16 +211,11 @@ create_new_partition () {
 	if [ "$id" ]; then
 		while true; do
 			set +e
-			device="$(humandev $(cat device))"
-			db_subst partman/active_partition DEVICE "$device"
-			db_subst partman/active_partition PARTITION "$num"
-			db_metaget partman/text/none_detected description
-			db_subst partman/active_partition OTHERINFO "${RET}"
-			ask_user /lib/partman/active_partition "$dev" "$id"
-			exitcode="$?"
-			if [ "$exitcode" -ge 128 ] && [ "$exitcode" -lt 192 ]; then
-				exit "$exitcode" # killed by signal
-			elif [ "$exitcode" -ge 100 ]; then
+			local code=0
+			ask_active_partition "$dev" "$id" "$num" || code=$?
+			if [ "$code" -ge 128 ] && [ "$code" -lt 192 ]; then
+				exit "$code" # killed by signal
+			elif [ "$code" -ge 100 ]; then
 				break
 			fi
 			set -e
-- 
1.6.3.3


Reply to: