mirror of
https://github.com/MidnightCommander/mc
synced 2024-12-22 20:36:50 +03:00
Ticket #3933: report iso9660 listing errors.
Variation 1: Steps to reproduce: * create empty .iso file (touch foo.iso) * run 'mc' and press enter on empty .iso Expected result: some error about invalid file format (sililar to what F3 view would yield). Actual result: mc elters a file as if it would be empty valid file. Variation 2: Steps to reproduce: * pick valid .iso file * deinstall all helper tools that handle .sio (isoinfo, xorriso, etc.) * run 'mc' and press enter on empty .iso Expected result: some error about invalid file format (sililar to what F3 view would yield) Actual result: mc enters a file as if it would be empty valid file Variation 2 is especially confusing for users as it does not hint them that they should install a tool to get it working. They just observe silently broken behaviour. Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
This commit is contained in:
parent
3a1f3d7ff7
commit
afdc9719f3
@ -93,6 +93,8 @@ xorriso_rm() {
|
|||||||
|
|
||||||
# tested to comply with isoinfo 2.0's output
|
# tested to comply with isoinfo 2.0's output
|
||||||
test_iso () {
|
test_iso () {
|
||||||
|
which isoinfo 2>/dev/null || (echo "isoinfo not found" >&2; return 1)
|
||||||
|
|
||||||
CHARSET=$(locale charmap 2>/dev/null)
|
CHARSET=$(locale charmap 2>/dev/null)
|
||||||
if test -z "$CHARSET"; then
|
if test -z "$CHARSET"; then
|
||||||
CHARSET=$(locale 2>/dev/null | @GREP@ LC_CTYPE | sed -n -e 's/.*\.\(.*\)"$/\1/p')
|
CHARSET=$(locale 2>/dev/null | @GREP@ LC_CTYPE | sed -n -e 's/.*\.\(.*\)"$/\1/p')
|
||||||
@ -119,6 +121,8 @@ test_iso () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
mcisofs_list () {
|
mcisofs_list () {
|
||||||
|
local lsl r
|
||||||
|
|
||||||
# left as a reminder to implement compressed image support =)
|
# left as a reminder to implement compressed image support =)
|
||||||
case "$1" in
|
case "$1" in
|
||||||
*.lz) MYCAT="lzip -dc";;
|
*.lz) MYCAT="lzip -dc";;
|
||||||
@ -133,7 +137,11 @@ mcisofs_list () {
|
|||||||
*) MYCAT="cat";;
|
*) MYCAT="cat";;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
$ISOINFO -l -i "$1" 2>/dev/null | @AWK@ -v SEMICOLON=$SEMICOLON '
|
lsl=$($ISOINFO -l -i "$1" 2>/dev/null)
|
||||||
|
r=$?
|
||||||
|
test $r -gt 0 && return $r
|
||||||
|
|
||||||
|
echo "$lsl" | @AWK@ -v SEMICOLON=$SEMICOLON '
|
||||||
BEGIN {
|
BEGIN {
|
||||||
dir="";
|
dir="";
|
||||||
# Pattern to match 8 first fields.
|
# Pattern to match 8 first fields.
|
||||||
@ -183,8 +191,8 @@ shift
|
|||||||
case "$cmd" in
|
case "$cmd" in
|
||||||
list)
|
list)
|
||||||
xorriso_list "$@" || {
|
xorriso_list "$@" || {
|
||||||
test_iso "$@";
|
test_iso "$@" || exit 1
|
||||||
mcisofs_list "$@";
|
mcisofs_list "$@" || exit 1
|
||||||
}
|
}
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
|
Loading…
Reference in New Issue
Block a user