libisoburn/releng/manual_devices

167 lines
3.9 KiB
Plaintext
Raw Normal View History

#!/bin/bash
2011-07-11 09:40:23 +00:00
# Copyright 2011 George Danchev <danchev@spnet.net>
2011-07-15 06:08:29 +00:00
# Copyright 2011 Thomas Schmitt <scdbackup@gmx.net>
# Licensed under GNU GPL version 2 or later
2011-07-11 09:40:23 +00:00
# set -e
2011-07-15 06:08:29 +00:00
print_specific_help() {
cat << HLP
Specific options:
--dev path Suppress dialog and use path as drive address.
Overview:
Test device scanning and list of speeds.
HLP
2011-07-13 11:24:32 +00:00
}
2011-07-15 06:08:29 +00:00
# Include common bits and interpret general options
getopts_inc=inc/releng_getopts.inc
2011-07-15 06:08:29 +00:00
if test -e "$getopts_inc"
then
. "$getopts_inc"
2011-07-18 17:22:59 +00:00
if test "$SPECIFIC_HELP" = 1
2011-07-15 06:08:29 +00:00
then
print_specific_help
exit 0
fi
else
echo >&2
echo "File not found: $getopts_inc" >&2
echo "Are we in the ./releng directory of a libisoburn SVN checkout ?" >&2
echo "(Please execute the tests from that ./releng directory.)" >&2
echo >&2
exit 2
fi
# Interpret private options, they begin after the first --.
dev=
next_is=ignore
for i in "$@"
do
if test "$next_is" = "ignore"
then
if test "$i" = "--"
then
next_is=""
fi
elif test "$next_is" = "dev"
then
dev="$i"
next_is=""
elif test "$i" = "--dev"
then
next_is="dev"
else
echo >&2
echo "Unknown test specific option: $i" >&2
print_help
print_specific_help
exit 31
fi
done
2011-07-15 06:08:29 +00:00
# Insist in having a xorriso
check_for_xorriso -x
#
get_speeds() {
2011-07-15 06:08:29 +00:00
echo -e "\n${SELF}: Running: ${RELENG_XORRISO} -report_about WARNING -outdev ${1} -toc -list_formats -list_profiles out -list_speeds"
"$RELENG_XORRISO" -report_about WARNING -outdev "$1" \
-print '---toc :' -toc \
-print '---list_formats :' -list_formats \
-print '---list_profiles :' -list_profiles out \
-print '---list_speeds :' -list_speeds
}
2011-07-15 06:08:29 +00:00
cat_var() {
# $1 = variable to put out with line feeds
cat <<+
$1
2011-07-13 11:41:39 +00:00
+
2011-07-15 06:08:29 +00:00
}
get_devices() {
# $1 = if not empty: device lines from xorriso -devices
# $2 = if not empty: suppress dialog and use $2 as input
2011-07-15 06:08:29 +00:00
if test -n "$1"
then
DEVICES="$1"
else
DEVICES=$("$RELENG_XORRISO" -devices 2>/dev/null | grep "\-dev")
fi
NUM_DEV=$(cat_var "$DEVICES" | wc -l)
case "${NUM_DEV}" in
0)
2011-07-15 06:08:29 +00:00
echo -e "\n${SELF}: No drives found."
exit 1
;;
1)
2011-07-15 06:08:29 +00:00
echo -e "\n${SELF}: 1 drive found:\n"
;;
*)
2011-07-15 06:08:29 +00:00
echo -e "\n${SELF}: ${NUM_DEV} drives found:\n"
;;
esac
2011-07-15 06:08:29 +00:00
echo =================================================================
echo "$DEVICES"
echo =================================================================
OUTDEV=$( cat_var "$DEVICES" | head -1 | \
sed -e "s/[0-9] *-dev '\//\//" -e "s/'.*$//" )
if test -n "$2"
then
x="$2"
else
echo >&2
echo "WARNING: The following tests might pull in the drive tray." >&2
echo " Best is if you now put in a suitable media and" >&2
echo " load it manually, so nobody gets surprised. :))" >&2
echo >&2
echo "Which drive to examine ? (Empty input = ${OUTDEV})" >&2
read x
fi
if test -n "$x"
then
OUTDEV="$x"
fi
get_speeds "$OUTDEV"
}
# main
2011-07-15 06:08:29 +00:00
"$RELENG_XORRISO" -version
echo -e "\n${SELF}: Running: $RELENG_XORRISO -devices..."
2011-07-15 06:08:29 +00:00
devices=$("$RELENG_XORRISO" -report_about WARNING -devices | grep "\-dev")
RET="$?"
if test "$SIMULATE_FAILURE" = 1
then
echo "===" >&2
echo "=== SIMULATING FAILURE BY OVERRIDING EXIT VALUE OF XORRISO" >&2
echo "===" >&2
echo "FAIL : ${SELF} : Simulated failure caused by option -f"
RET=1
fi
case ${RET} in
0)
2011-07-15 06:08:29 +00:00
get_devices "$devices" "$dev"
RET="$?"
if test "$RET" = 0
then :
2011-07-15 06:08:29 +00:00
else
echo "FAIL : ${SELF} : Device scan or single drive listing failed"
exit "$RET"
fi
;;
*)
2011-07-15 06:08:29 +00:00
boldify
echo -ne "\n${SELF}: ${RELENG_XORRISO} -devices returned ${RET}."
unboldify
echo -e "\n${SELF}: Already mounted?"
df -kh
esac
exit 0