Ticket #3331: iso9660_UDF_list_extract.patch
File iso9660_UDF_list_extract.patch, 2.7 KB (added by SkyRE, 8 years ago) |
---|
-
mc/extfs.d/iso9660
old new 32 32 #*** file scope functions ********************************************** 33 33 34 34 XORRISO=$(which xorriso 2>/dev/null) 35 A7Z=$(which 7z 2>/dev/null) 36 UDF= 35 37 36 38 xorriso_list() { 37 39 if test -z "$XORRISO"; then … … xorriso_list() { 51 53 done 52 54 } 53 55 56 a7z_copyout() { 57 if test -z "$A7Z"; then 58 return 1 59 fi 60 $A7Z e -bd -so "$1" "$2" >$3 2>/dev/null 61 } 62 54 63 xorriso_copyout() { 55 64 if test -z "$XORRISO"; then 56 65 return 1 … … test_iso () { 105 114 106 115 ISOINFO_D_I="$(isoinfo -d -i "$1" 2>/dev/null)" 107 116 117 ISOINFO_L_I_README_TXT="$(isoinfo -l -i "$1" | /bin/grep "README.TXT" 2>/dev/null)" 118 119 ISOINFO_L_I="$(isoinfo -l -i "$1" | wc -l 2>/dev/null)" 120 108 121 echo "$ISOINFO_D_I" | /bin/grep "UCS level 1\|NO Joliet" > /dev/null || ISOINFO="$ISOINFO $JOLIET_OPT" 109 122 110 123 if [ $(echo "$ISOINFO_D_I" | /bin/grep "Joliet with UCS level 3 found" | wc -l) = 1 \ 111 124 -a $(echo "$ISOINFO_D_I" | /bin/grep "NO Rock Ridge" | wc -l) = 1 ] ; then 112 125 SEMICOLON="YES" 113 126 fi 127 if [ $(echo "$ISOINFO_D_I" | /bin/grep "NO Joliet present" | wc -l) = 1 \ 128 -a $(echo "$ISOINFO_D_I" | /bin/grep "NO Rock Ridge present"| wc -l) = 1 \ 129 -a $(echo "$ISOINFO_L_I") = 5 \ 130 -a $(echo "$ISOINFO_L_I_README_TXT"| wc -l) = 1 ] ; then 131 UDF="yes" 132 fi 114 133 } 115 134 116 135 mcisofs_list () { … … BEGIN { 156 175 }' 157 176 } 158 177 178 mcudffs_list () { 179 $A7Z l "$1" 2>/dev/null | awk ' 180 BEGIN { 181 split("Jan Feb Mch Apr May Jun Jul Aug Sep Oct Nov Dec", aMonths) 182 } 183 /^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]\ [0-9][0-9]:[0-9][0-9]:[0-9][0-9]\ D\.\.\.\./ { next } 184 /^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]\ [0-9][0-9]:[0-9][0-9]:[0-9][0-9]\ .*/ { 185 split($1, aDate, "-") 186 month=aDate[2]+0 187 date=aMonths[month] " " aDate[3] " " aDate[1] 188 attr="-r--r--r-- 1 root root" 189 printf ("%s %15s %s %s\n", attr, $4, date, $6); 190 }' 191 } 192 159 193 mcisofs_copyout () { 160 194 if [ "x$SEMICOLON" = "xYES" ]; then 161 195 $ISOINFO -i "$1" -x "/$2;1" 2>/dev/null > "$3" … … shift 173 207 174 208 case "$cmd" in 175 209 list) 176 xorriso_list "$@" || { 177 test_iso "$@"; 178 mcisofs_list "$@"; 179 } 210 test_iso "$@"; 211 if ! test -z "$UDF" ; then 212 mcudffs_list "$@"; 213 else 214 xorriso_list "$@" || { 215 test_iso "$@"; 216 mcisofs_list "$@"; 217 } 218 fi 180 219 exit 0 181 220 ;; 182 221 rm) … … case "$cmd" in 204 243 exit 0 205 244 ;; 206 245 copyout) 246 test_iso "$@"; 247 if ! test -z "$UDF" ; then 248 a7z_copyout "$@"; 249 else 207 250 xorriso_copyout "$@" || { 208 251 test_iso "$@"; 209 252 mcisofs_copyout "$@"; 210 253 } 254 fi 211 255 exit 0 212 256 ;; 213 257 esac