# HG changeset patch # User Pascal Bellard # Date 1428743389 -7200 # Node ID 250b01dd3a54f3f48716de030e2113d97684789c # Parent 36278632a653389766aac3479192615d9ab7196b syslinux/taziso: batch mode diff -r 36278632a653 -r 250b01dd3a54 syslinux/stuff/iso2exe/taziso --- a/syslinux/stuff/iso2exe/taziso Fri Apr 10 16:29:03 2015 +0200 +++ b/syslinux/stuff/iso2exe/taziso Sat Apr 11 11:09:49 2015 +0200 @@ -256,8 +256,11 @@ windev() { - DEV="$(blkid | grep -iE "(msdos|vfat|ntfs)" | sed 's/:.*//;s|/dev/||')" - [ "$DEV" ] || return + if [ -b "$1" ]; then + device=$1 + else + DEV="$(blkid | grep -iE "(msdos|vfat|ntfs)" | sed 's/:.*//;s|/dev/||')" + [ "$DEV" ] || return cat > /tmp/dialog$$ <&1 - [ $? -eq 0 ] || return - device=$(. /tmp/dialog$$ 2>&1 1>&3) - exec 3>&- - rm -f /tmp/dialog$$ + exec 3>&1 + [ $? -eq 0 ] || return + device=$(. /tmp/dialog$$ 2>&1 1>&3) + exec 3>&- + rm -f /tmp/dialog$$ + fi mnt=/tmp/mnt$$ mkdir -p $mnt && mount $device $mnt } @@ -419,17 +423,25 @@ install() { - windev || return + windev $1 || return packages_list= packages_dir= - _install && bootinstalled /sbin/init + if [ "$1" ]; then + doinstall + else + _install && bootinstalled /sbin/init + fi umount $mnt rm -rf $mnt } inst2zip() { - mkzip _install + if [ "$1" ]; then + doinstall + else + mkzip _install + fi } _installtaz() @@ -453,17 +465,25 @@ installtaz() { - windev || return + windev $1 || return packages_list= packages_dir= - _installtaz && bootinstalled /boot/bzimage + if [ "$1" ]; then + doinstall tazusblike + else + _installtaz && bootinstalled /boot/bzimage + fi umount $mnt rm -rf $mnt } insttaz2zip() { - mkzip _installtaz + if [ "$1" ]; then + doinstall tazusblike + else + mkzip _installtaz + fi } bootiso() @@ -512,9 +532,13 @@ dotwait "Checking files" ( cd /media/cdrom ; ${1:-md5sum -c md5sum*} ) > /tmp/data rm -f /tmp/wait - $DIALOG --clear \ - --title " Checked files " \ - --textbox /tmp/data 24 78 + if [ "$1 "]; then + cat /tmp/data + else + $DIALOG --clear \ + --title " Checked files " \ + --textbox /tmp/data 24 78 + fi rm -f /tmp/data } @@ -531,41 +555,50 @@ { gotcdfile 'sha*sum*' sha=$(basename $file) - md5 "${sha%sum*}sum -c ${file#/media/cdrom/}" + md5 "${sha%sum*}sum -c ${file#/media/cdrom/}" $@ } readme() { gotcdfile 'README*' - $DIALOG --clear \ - --title " Readme " \ - --textbox $file 24 78 + if [ "$1" ]; then + cat $file + else + $DIALOG --clear \ + --title " Readme " \ + --textbox $file 24 78 + fi } bzimage() { - $DIALOG --clear \ - --title " Create linux.exe ? " \ - --yes-label "Install" --yesno \ + if [ "$1" ]; then + $DIALOG --clear \ + --title " Create linux.exe ? " \ + --yes-label "Install" --yesno \ "\nLinux.exe launches the linux kernel under DOS (in real mode only). The cmdline arguments are supported except initrd=, vga= (you can try 'rdev -v') and mem= (partially). \nExample:\nC:\\> linux.exe root=/dev/hda2 ro panic=60\n " 12 70 - [ $? -eq 0 ] || return + [ $? -eq 0 ] || return + fi cp /media/cdrom/boot/bzImage linux.exe } memtest() { - $DIALOG --clear \ - --title " Create memtest.exe ? " \ - --yes-label "Install" --yesno \ + if [ -z "$1" ]; then + $DIALOG --clear \ + --title " Create memtest.exe ? " \ + --yes-label "Install" --yesno \ "\nMemtest86 is a thorough, stand alone memory test for x86 architecture computers. BIOS based memory tests are a quick, cursory check and often miss many of the failures that are detected by Memtest86.\n " 12 70 - [ $? -eq 0 ] && gotcdfile 'memtest*' && cp $file memtest.exe + [ $? -eq 0 ] || return + fi + gotcdfile 'memtest*' && cp $file memtest.exe } mkfat12() @@ -602,15 +635,18 @@ fdmemtest() { - $DIALOG --clear \ - --title " Create a Memtest86 boot floppy " \ - --yes-label "Create floppy" --yesno \ + if [ -z "$1" ]; then + $DIALOG --clear \ + --title " Create a Memtest86 boot floppy " \ + --yes-label "Create floppy" --yesno \ "\nMemtest86 is a thorough, stand alone memory test for x86 architecture computers. BIOS based memory tests are a quick, cursory check and often miss many of the failures that are detected by Memtest86.\n\n Please insert a blank disk in floppy drive.\n " 12 70 - [ $? -eq 0 ] && gotcdfile 'memtest*' && mkfloppy $file + [ $? -eq 0 ] || return + fi + gotcdfile 'memtest*' && mkfloppy $file } pxe() @@ -630,22 +666,30 @@ fdpxe() { - $DIALOG --clear \ - --title " Create a SliTaz Web boot floppy " \ - --yes-label "Create floppy" --yesno \ + if [ -z "$1" ]; then + $DIALOG --clear \ + --title " Create a SliTaz Web boot floppy " \ + --yes-label "Create floppy" --yesno \ "\nBoot your operating system from the internet and enjoy a full system working entirely in RAM with speed and stability in mind. The Linux Kernel and the complete SliTaz compressed root filesystem will be loaded into RAM from the Web using PXE and HTTP protocols.\n\n Please insert a blank disk in floppy drive.\n " 12 70 - [ $? -eq 0 ] && gotcdfile '?pxe' && mkfloppy $file + [ $? -eq 0 ] || return + fi + gotcdfile '?pxe' && mkfloppy $file +} + +menuitem() +{ + [ "$3" ] && shift + echo -en "\"$1\" \"$2\"" } gotposixovl() { - mount.posixovl 2>&1 | grep -qi usage && - echo -en "\"$1\" \"$2\"" + mount.posixovl 2>&1 | grep -qi usage && menuitem "$@" } gotposixovlzip() @@ -655,12 +699,12 @@ xfile() { - [ "$(which $1)" ] && echo -en "\"$2\" \"$3\"" + [ "$(which $1)" ] && menuitem "$@" } cdfile() { - gotcdfile "$1" && echo -en "\"$2\" \"$3\"" + gotcdfile "$1" && menuitem "$@" } isbzImage() @@ -671,10 +715,7 @@ cdfilex() { - gotcdfile "$1" && - [ "$(which kexec)" ] && - isbzImage && - echo -en "\"$2\" \"$3\"" + gotcdfile "$1" && [ "$(which kexec)" ] && isbzImage && menuitem "$@" } cdfilef() @@ -686,15 +727,14 @@ { gotcdfile "$1" && [ $(get 0 $file 2>/dev/null || echo 0) -eq 23117 ] && - echo -en "\"$2\" \"$3\"" + menuitem "$@" } misspkg() { for i in zip kexec-tools posixovl ; do [ -d /var/lib/tazpkg/installed/$i/ ] && continue - [ "$1" != "install" ] && - echo -en "\"$1\" \"$2\"" && return + [ "$1" != "install" ] && menuitem "$@" && return tazpkg get-install $i done } @@ -710,21 +750,19 @@ [ $(get $C $ISO 4) -eq 1 ] || return [ $(get $(($C+30)) $ISO 4) -eq $((0x88AA55)) ] || return C=$((2048*$(get $(($C+40)) $ISO 4))) - [ $(get $(($C+64)) $ISO 4) -eq 1886961915 ] && - echo -en "\"$1\" \"$2\"" + [ $(get $(($C+64)) $ISO 4) -eq 1886961915 ] && menuitem "$@" } isiso() { - [ $(get 32769 $ISO 4) -eq 808469571 ] && - echo -en "\"$1\" \"$2\"" + [ $(get 32769 $ISO 4) -eq 808469571 ] && menuitem "$@" } gotisomd5() { [ "$(which md5sum 2> /dev/null)" ] && [ $(get 0 $ISO) -eq 23117 ] && - [ $(get 18 $ISO) -ne 0 ] && echo -en "\"$1\" \"$2\"" + [ $(get 18 $ISO) -ne 0 ] && menuitem "$@" } isomd5() @@ -742,6 +780,7 @@ echo "OK" || echo "ERROR" fi rm -f /tmp/wait + [ "$1" ] || return 0 echo -e "\rPress RETURN to continue." read n } @@ -783,27 +822,31 @@ usbbootkey() { - $DIALOG --clear \ - --title " Create a USB boot key " \ - --yes-label "Continue" --yesno \ + if [ -b "$1" ]; then + device=$1 + else + $DIALOG --clear \ + --title " Create a USB boot key " \ + --yes-label "Continue" --yesno \ "\nThe USB key will be used like a CD-ROM. You will not be able to write any data on the boot partition.\n\n An extra FAT32 partition will be created with the remaining free space.\n\n $(tazusbmsg)Please plug your USB stick in now.\n " 16 70 - [ $? -eq 0 ] || return - usbdev || return + [ $? -eq 0 ] || return + usbdev || return - # perform dd in progress bar - max=$(($(stat -c %s $ISO)/2048)) - i=0; ddq if=$ISO bs=1024k | ( - while ddq bs=1024k count=1 ; do - i=$(($i + 1)) - [ $i -gt $max ] && break - echo $((($i*100)/$max)) | dialog --gauge \ - " The ISO image transfer can be long. Please wait..." \ - 6 70 0 > /dev/tty 2>&1 - done ) > $device + # perform dd in progress bar + max=$(($(stat -c %s $ISO)/2048)) + i=0; ddq if=$ISO bs=1024k | ( + while ddq bs=1024k count=1 ; do + i=$(($i + 1)) + [ $i -gt $max ] && break + echo $((($i*100)/$max)) | dialog --gauge \ + " The ISO image transfer can be long. Please wait..." \ + 6 70 0 > /dev/tty 2>&1 + done ) > $device + fi # partition + fat32 format for the remaining space for p in 0 16; do @@ -895,6 +938,17 @@ [ -z "$(isiso 2> /dev/null)" ] && echo "Usage : $0 file.iso" && exit 1 mount -o loop,ro $ISO /media/cdrom +if grep -q "^$2()" $0; then + exe=$2 + shift 2 + if [ "$(eval $(grep "\"$exe\"" $0 | \ + sed '/^\$/!d;s/.(\(.*\)[\t ]*".*"[\t ]*".*/\1/'))" ]; then + grep "\"$exe\"" $0 | sed '/^\$/!d;s/.*"[\t ]*"\(.*\)".*/\1/' + $exe "$@" + fi + quit +fi + while true; do cat > /tmp/dialog$$ <&1 value=$(. /tmp/dialog$$ 2>&1 1>&3)