--- iso9660 Thu Jul 22 17:00:02 2004 +++ iso9660.new Thu Jul 22 01:33:24 2004 @@ -18,9 +18,14 @@ else JOLIET_OPT="-J" fi - ISOINFO="isoinfo -R" - # isoinfo -d -i "$1" | grep "NO Joliet" > /dev/null || ISOINFO="$ISOINFO $JOLIET_OPT" - isoinfo -d -i "$1" | grep "Joliet with UCS level [2-9] found" > /dev/null && ISOINFO="$ISOINFO $JOLIET_OPT" + ISOINFO_CMD="isoinfo" + + ISOINFO=`isoinfo -d -i "$1"` + if echo $ISOINFO | grep "Rock Ridge signatures version [1-9] found" > /dev/null; then + ISOINFO_CMD="$ISOINFO_CMD -R" + else + echo $ISOINFO | grep "Joliet with UCS level [2-9] found" > /dev/null && ISOINFO_CMD="$ISOINFO_CMD $JOLIET_OPT" + fi } mcisofs_list () { @@ -33,14 +38,14 @@ *) MYCAT="cat";; esac -$ISOINFO -l -i "$1" | gawk ' +$ISOINFO_CMD -l -i "$1" | gawk ' BEGIN { dir=""; # Pattern to match 8 first fields. rx = "[^ ]+[ ]+"; + irx = "^..\[ [0-9 ]+\] "; rx = "^" rx rx rx rx rx rx rx rx; # irx = "^. *[0-9]+. "; - irx = "^..\[[ 0-9]+\] "; } /^$/ { next } /^d---------/ { next } @@ -57,6 +62,8 @@ # fix perms sub("^---------- 0 0 0", "-r--r--r-- 1 root root", attr) sub(" $", "", name) + # for pure ISO9660 and Joliet UCS level 3 + sub(";1$", "", name) ## sub(";[0-9]+$", "", name) ## would break copyout # skip . and .. if (name ~ /^\.\.?/) next; @@ -65,7 +72,7 @@ } mcisofs_copyout () { - $ISOINFO -i "$1" -x "/$2" > "$3" + $ISOINFO_CMD -i "$1" -x "/$2" > "$3" } save_ctype=`locale | grep LC_CTYPE` @@ -79,6 +86,7 @@ test_iso "$@"; mcisofs_list "$@"; exit 0;; + copyout) test_iso "$@"; mcisofs_copyout "$@";