196,204c196 < elif [ "${cpass}" = "ASK" ]; then < printf "\nOpening '${cname}' volume:\n" < < if $CS isLuks $csrc 2>/dev/null; then < $CS $copts luksOpen $csrc $cname < /dev/console < else < $CS $copts create $cname $csrc < /dev/console < fi < elif [ "${cpass:0:1}" != "/" ]; then --- > elif [ "${cpass:0:1}" != "/" -a "${cpass}" != "ASK" ]; then 210a203,251 > #lets see if this device needs to be mounted... > cleanupcryptmount="NO" > cryptmountpoint="/tmp" #I have to mount over /tmp because root is ro... :( > if [ ! -z `echo ${cpass} | cut -sd ':' -f 2` ]; then > try=10 > dev=`echo ${cpass} | cut -sd ':' -f 1` > key=`echo ${cpass} | cut -sd ':' -f 2` > > printf "\nWaiting for ${dev} ...\n" > while [ ! -b "${dev}" -a ${try} -gt 0 ]; do > sleep 1 > try=$((${try}-1)) > done > > if [ -b ${dev} ]; then > if mount -n -o ro ${dev} ${cryptmountpoint}; then > cleanupcryptmount="YES" > if [ -e ${cryptmountpoint}/${key} ]; then > cpass=${cryptmountpoint}/${key} > else > printf "${key} not found on ${dev}\n" && cpass="ASK" > fi > else > printf "Failed to mount ${dev}\n" && cpass="ASK" > fi > else > printf "No block device ${dev}\n" && cpass="ASK" > fi > fi > > if [ "${cpass}" != "ASK" ]; then > if $CS isLuks $csrc 2>/dev/null; then > $CS -d $cpass $copts luksOpen $csrc $cname >/dev/null > else > $CS -d $cpass $copts create $cname $csrc >/dev/null > fi > else > printf "Falling back to password...\n" > fi > > > if [ "${cleanupcryptmount}" == "YES" ]; then > umount ${cryptmountpoint} > fi > fi > > if [ "${cpass}" = "ASK" ]; then > printf "\nOpening '${cname}' volume:\n" > 212c253 < $CS -d $cpass $copts luksOpen $csrc $cname >/dev/null --- > $CS $copts luksOpen $csrc $cname < /dev/console 214c255 < $CS -d $cpass $copts create $cname $csrc >/dev/null --- > $CS $copts create $cname $csrc < /dev/console 216a258 >