[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: