wok diff syslinux/stuff/iso2exe/iso2exe.sh @ rev 18804
Up vanessa_adt (0.0.9), vanessa_logger (0.0.10), vanessa_socket (0.0.12)
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Wed Jan 13 22:13:51 2016 +0100 (2016-01-13) |
parents | 429407501864 |
children | 49be2e5503d0 |
line diff
1.1 --- a/syslinux/stuff/iso2exe/iso2exe.sh Tue Jan 12 15:40:40 2016 +0100 1.2 +++ b/syslinux/stuff/iso2exe/iso2exe.sh Wed Jan 13 22:13:51 2016 +0100 1.3 @@ -35,7 +35,7 @@ 1.4 { 1.5 TMP=/tmp/iso2exe$$ 1.6 mkdir -p $TMP/bin $TMP/dev 1.7 - cp -a /dev/?d?* /dev/tty /dev/tty0 $TMP/dev 1.8 + cp -a /dev/tty /dev/tty0 $TMP/dev 1.9 $0 --get init > $TMP/init.exe 1.10 # mount -o loop,ro $1 $TMP 1.11 # oldslitaz="$(ls $TMP/boot/isolinux/splash.lss 2> /dev/null)" 1.12 @@ -125,6 +125,49 @@ 1.13 fi 1.14 } 1.15 1.16 +fileofs() 1.17 +{ 1.18 + [ $(get 1024 $ISO) -eq 35615 ] && i=1024 || i=$((512*(1+$(get 417 $ISO 1)))) 1.19 + stub=$(($(get 20 $ISO) - 0xC0)) 1.20 + SIZE=0; OFFSET=0 1.21 + case "$1" in 1.22 + win32.exe) [ $i -eq 1024 ] || SIZE=$(($i - 512));; 1.23 + syslinux.mbr) [ $i -eq 1024 ] || OFFSET=$(($i - 512)); SIZE=512;; 1.24 + flavor.info) OFFSET=$i; SIZE=-1;; 1.25 + floppy.boot) SIZE=$(($(get 26 $ISO 1)*512)) 1.26 + OFFSET=$(($(get 64 $ISO) - 0xC0 - $SIZE));; 1.27 + rootfs.gz) SIZE=$(get 24 $ISO); OFFSET=$(($stub - $SIZE));; 1.28 + tazboot.com) OFFSET=$(($(get 64 $ISO) - 0xC0)) 1.29 + SIZE=$(($stub - $(get 24 $ISO) - $OFFSET));; 1.30 + dosstub) OFFSET=$stub; SIZE=$((0x8000 - $OFFSET));; 1.31 + md5) OFFSET=$((0x7FF0)); SIZE=16;; 1.32 + esac 1.33 +} 1.34 + 1.35 +list() 1.36 +{ 1.37 + for f in win32.exe syslinux.mbr flavor.info floppy.boot \ 1.38 + dosstub rootfs.gz tazboot.com md5 ; do 1.39 + fileofs $f 1.40 + [ $SIZE -eq 0 ] && continue 1.41 + echo -n "$f at $(printf "%X\n" $OFFSET)" 1.42 + [ $SIZE -eq -1 ] || echo -n " ($SIZE bytes)" 1.43 + echo . 1.44 + done 1.45 +} 1.46 + 1.47 +extract() 1.48 +{ 1.49 + for f in $@; do 1.50 + fileofs $f 1.51 + case "$SIZE" in 1.52 + 0) ;; 1.53 + -1) ddq bs=1 count=20480 skip=$OFFSET if="$ISO" | zcat >$f ;; 1.54 + *) ddq bs=1 count=$SIZE skip=$OFFSET if="$ISO" >$f ;; 1.55 + esac 1.56 + done 1.57 +} 1.58 + 1.59 custom_config_sector() 1.60 { 1.61 echo $(($(get 32848 "$1" 4)+16)) 1.62 @@ -304,6 +347,9 @@ 1.63 -i*) initrd="$2" ; shift 2 ;; 1.64 -e*) extract_custom_config "$2" 1.65 exit ;; 1.66 + -r*) ISO="$2" ; shift 2 1.67 + [ -z "$1" ] && list || extract $@ 1.68 + exit ;; 1.69 *) cat > /dev/null 1.70 break 1.71 esac