#!/bin/sh
# (c) 2010 Alexander Wirt <formorer@formorer.de>
# 
# The general idea for this script got collected from several blog entrys
# and the syslinux wiki. If you think you should get mentioned in the authors
# or copyright file, please tell me :). 
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

set -e

IMAGES=/boot/images

if [ -e "/etc/default/grub-imageboot" ]
then
	. /etc/default/grub-imageboot
fi

. /usr/lib/grub/grub-mkconfig_lib
if test -e /boot/memdisk ; then
	MEMDISKPATH=$( make_system_path_relative_to_its_root "/boot/memdisk" )
	echo "Found memdisk: $MEMDISKPATH" >&2
	if [ ! -d "$IMAGES" ]; then
		echo "Imagepath $IMAGES not found" >&2
		exit
	fi
	find $IMAGES -name "*.iso" -o -name '*.img' | sort | 
	while read image ; do
		IMAGEPATH=$( make_system_path_relative_to_its_root "$image" )
		case "$image" in
			*.iso)
				echo "Found iso image: $image" >&2
				test -z "$ISOOPTS" && ISOOPTS="iso"
				cat << EOF
menuentry "Bootable ISO Image: $(basename $IMAGEPATH | sed s/.iso//)" {
EOF
				prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/"
				cat << EOF
	linux16 $MEMDISKPATH $ISOOPTS
	initrd16 $IMAGEPATH
}
EOF
				;;
			*.img)
				echo "Found floppy image: $image" >&2
				test -z "$IMAGEOPTS" && IMAGEOPTS="rawimg"
				cat << EOF
menuentry "Bootable Floppy Image: $(basename $IMAGEPATH | sed s/.img//)" {
EOF
				prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/"
				cat << EOF
	linux16 $MEMDISKPATH $IMAGEOPTS
	initrd16 $IMAGEPATH
}
EOF
				;;
		esac
	done
else 
	echo "memdisk not found" >&2
	echo "Please copy /usr/lib/syslinux/memdisk to /boot/memdisk" >&2 
fi
