[SCM] live-boot branch, debian-next, updated. debian/3.0_a20-1-7-g41112e3

Tails developers amnesia at boum.org
Wed Sep 7 15:59:30 UTC 2011


The following commit has been merged in the debian-next branch:
commit 3f02456e392ead3abf36bc181692fcb75c8f16f3
Author: Tails developers <amnesia at boum.org>
Date:   Mon Nov 1 18:23:05 2010 +0100

    Factorizing loops on removable/non-removable devices.
    
    The already duplicated code will be needed a few more times for the upcoming
    persistent-media={removable,removable-usb} boot option. Copy/pasting it a few
    more times seems the wrong way to go, hence this factorization.
    
    Depending on the place they are used, the newly introduced functions must return
    a list of devices named either /sys/block/* or /dev/*. Their first parameter
    therefore specifies the wanted output format (default is /dev/* as it is the
    most often used).

diff --git a/scripts/live b/scripts/live
index de82082..952d479 100755
--- a/scripts/live
+++ b/scripts/live
@@ -1693,38 +1693,29 @@ find_livefs ()
 	# first look at the one specified in the command line
 	case "${LIVE_MEDIA}" in
 		removable-usb)
-			for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -vE "/(loop|ram|dm-|fd)")
+			for sysblock in $(removable_usb_dev "sys")
 			do
-				if [ "$(cat ${sysblock}/removable)" = "1" ]
-				then
-					if readlink ${sysblock} | grep -q usb
+				for dev in $(subdevices "${sysblock}")
+				do
+					if check_dev "${dev}"
 					then
-						for dev in $(subdevices "${sysblock}")
-						do
-							if check_dev "${dev}"
-							then
-								return 0
-							fi
-						done
+						return 0
 					fi
-				fi
+				done
 			done
 			return 1
 			;;
 
 		removable)
-			for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -vE "/(loop|ram|dm-|fd)")
+			for sysblock in $(removable_dev "sys")
 			do
-				if [ "$(cat ${sysblock}/removable)" = "1" ]
-				then
-					for dev in $(subdevices "${sysblock}")
-					do
-						if check_dev "${dev}"
-						then
-							return 0
-						fi
-					done
-				fi
+				for dev in $(subdevices "${sysblock}")
+				do
+					if check_dev "${dev}"
+					then
+						return 0
+					fi
+				done
 			done
 			return 1
 			;;
@@ -1742,16 +1733,7 @@ find_livefs ()
 
 	# or do the scan of block devices
 	# prefer removable devices over non-removable devices, so scan them first
-	for sysblock in $(echo /sys/block/* | tr ' ' '\n' | egrep -v "/(loop|ram|dm-|fd)")
-	do
-		if [ "$(cat ${sysblock}/removable)" = "1" ]
-		then
-			removable_devices_to_scan="$removable_devices_to_scan $sysblock"
-		else
-			nonremovable_devices_to_scan="$nonremovable_devices_to_scan $sysblock"
-		fi
-	done
-	devices_to_scan="$removable_devices_to_scan $nonremovable_devices_to_scan"
+	devices_to_scan="$(removable_dev 'sys') $(non_removable_dev 'sys')"
 
 	for sysblock in $devices_to_scan
 	do
diff --git a/scripts/live-helpers b/scripts/live-helpers
index 7f8649f..73d9f9d 100644
--- a/scripts/live-helpers
+++ b/scripts/live-helpers
@@ -488,3 +488,73 @@ is_luks()
     fi
 
 }
+
+removable_dev ()
+{
+	output_format="${1}"
+	want_usb="${2}"
+	ret=
+
+	for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -vE "/(loop|ram|dm-|fd)")
+	do
+		dev_ok=
+		if [ "$(cat ${sysblock}/removable)" = "1" ]
+		then
+			if [ -z "${want_usb}" ]
+			then
+				dev_ok="yes"
+			else
+				if readlink ${sysblock} | grep -q usb
+				then
+					dev_ok="yes"
+				fi
+			fi
+		fi
+
+		if [ "${dev_ok}" = "yes" ]
+		then
+			case "${output_format}" in
+				sys)
+					ret="${ret} ${sysblock}"
+					;;
+				*)
+					devname=$(sys2dev "${sysblock}")
+					ret="${ret} ${devname}"
+					;;
+			esac
+		fi
+	done
+
+	echo "${ret}"
+}
+
+removable_usb_dev ()
+{
+	output_format="${1}"
+
+	removable_dev "${output_format}" "want_usb"
+}
+
+non_removable_dev ()
+{
+	output_format="${1}"
+	ret=
+
+	for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -vE "/(loop|ram|dm-|fd)")
+	do
+		if [ "$(cat ${sysblock}/removable)" = "0" ]
+		then
+			case "${output_format}" in
+				sys)
+					ret="${ret} ${sysblock}"
+					;;
+				*)
+					devname=$(sys2dev "${sysblock}")
+					ret="${ret} ${devname}"
+					;;
+			esac
+		fi
+	done
+
+	echo "${ret}"
+}

-- 
live-boot



More information about the debian-live-changes mailing list