#!/bin/sh

## Copyright (C) 2006-2013 Daniel Baumann <mail@daniel-baumann.ch>
##
## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING.
## This is free software, and you are welcome to redistribute it
## under certain conditions; see COPYING for details.


set -e

. /usr/share/extlinux/extlinux-update.sh

if [ "${EXTLINUX_MEMDISK}" != "true" ]
then
	echo "I: memdisk disabled in /etc/default/extlinux: Skipping ${_EXTLINUX_DIRECTORY}/memdisk.cfg"
	exit 0
fi

if [ ! -e /usr/lib/syslinux/memdisk ]
then
	echo "I: /usr/lib/syslinux/memdisk - No such file: Skipping ${_EXTLINUX_DIRECTORY}/memdisk.cfg"
	exit 0
fi

cp -f /usr/lib/syslinux/memdisk "${_EXTLINUX_DIRECTORY}"

# Create memdisk.cfg
_CONFIG="\
## ${_EXTLINUX_DIRECTORY}/memdisk.cfg
##
## IMPORTANT WARNING
##
## The configuration of this file is generated automatically.
## Do not edit this file manually, use: extlinux-update


"

for _IMAGE in "${EXTLINUX_MEMDISK_DIRECTORY}"/*.iso "${EXTLINUX_MEMDISK_DIRECTORY}"/*.img
do
	# Skip non-existing files and files matching '^initrd.*'
	if [ ! -e "${_IMAGE}" ] || [ "$(basename ${_IMAGE} | cut -b 1-6)" = "initrd" ]
	then
		continue
	fi

	_NUMBER="${_NUMBER:-0}"

	echo "P: Writing config for ${_IMAGE}..."

	case "${_IMAGE}" in
		*.iso)
			_IMAGE_APPEND="iso"
			;;

		*.img)
			_IMAGE_APPEND="raw"
			;;
	esac

	if [ -n "${_BOOT_DIRECTORY}" ]
	then
		# / and /boot are on the same filesystem
		_MEMDISK_DIRECTORY="${_EXTLINUX_DIRECTORY}"
	else
		# / and /boot are not on the same filesystem
		_MEMDISK_DIRECTORY="$(echo ${_EXTLINUX_DIRECTORY} | sed -e 's|^/boot||')"
		_IMAGE="$(echo ${_IMAGE} | sed -e 's|^/boot||')"
	fi

	# Writing image entry
	_CONFIG="${_CONFIG}

label m${_NUMBER}
	menu label Memdisk, image $(basename ${_IMAGE})"

	if [ "${EXTLINUX_DEFAULT}" = "m${_NUMBER}" ]
	then
		_CONFIG="${_CONFIG}
	menu default"
	fi

		_CONFIG="${_CONFIG}
	linux ${_MEMDISK_DIRECTORY}/memdisk
	initrd ${_IMAGE}
	append ${_IMAGE_APPEND}"

	_NUMBER="$((${_NUMBER} + 1))"
done

_NUMBER=""

Update "${_EXTLINUX_DIRECTORY}/memdisk.cfg" "${_CONFIG}"
