#!/bin/bash
#
# Generate a legacy floppy emulation ISO boot image
#
# genliso foo.liso foo.lkrn bar.lkrn ...
#
# The .liso image filename is the first argument followed by
#   a list of .lkrn images  include in .liso image

case $# in
0|1)
	echo Usage: $0 foo.liso foo.lkrn ...
	exit 1
	;;
esac

case "`mtools -V`" in
Mtools\ version\ 3.9.9*|Mtools\ version\ 3.9.1[0-9]*|[mM]tools\ *\ [4-9].*)
	;;
*)
	echo Mtools version 3.9.9 or later is required
	exit 1
	;;
esac

out=$1
shift

dir=`mktemp -d bin/liso.dir.XXXXXX`

img=$dir/boot.img
mformat -f 1440 -C -i $img ::

cfg=$dir/syslinux.cfg
cat > $cfg <<EOF
# These default options can be changed in the genliso script
SAY gPXE ISO boot image generated by genliso
TIMEOUT 30
EOF

first=
for f
do
	if [ ! -r $f ]
	then
		echo $f does not exist, skipping 1>&2
		continue
	fi
	# shorten name for 8.3 filesystem
	b=$(basename $f)
	g=${b%.lkrn}
	g=${g//[^a-z0-9]}
	g=${g:0:8}.krn
	case "$first" in
	"")
		echo DEFAULT $g
		;;
	esac
	first=$g
	echo LABEL $b
	echo "" KERNEL $g
	mcopy -m -i $img $f ::$g
done >> $cfg

mcopy -i $img $cfg ::syslinux.cfg

if ! syslinux $img
then
	exit 1
fi

mkisofs -q -o $out -c boot.cat -b boot.img $dir

rm -fr $dir
