From: Max Vozeler <m...@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


-- 
To UNSUBSCRIBE, email to debian-boot-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to