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