#! @BUILD_SHEBANG@
# Copyright (C) 2013  Free Software Foundation, Inc.
#
# GRUB 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.
#
# GRUB 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 GRUB.  If not, see <http://www.gnu.org/licenses/>.

set -e
grubshell=@builddir@/grub-shell

. "@builddir@/grub-core/modinfo.sh"

case "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" in
    # PLATFORM: Don't mess with real devices when OS is active
    *-emu)
	exit 0;;
    # FIXME: qemu gets bonito DMA wrong
    mipsel-loongson)
	exit 0;;
    # PLATFORM: no USB on ARC and qemu-mips platforms
    mips*-arc | mips*-qemu_mips)
	exit 0;;
    # FIXME: No native drivers are available for those
    powerpc-ieee1275 | sparc64-ieee1275 | arm*-efi)
	exit 0;;
esac

imgfile="`mktemp "${TMPDIR:-/tmp}/tmp.XXXXXXXXXX"`" || exit 1
outfile="`mktemp "${TMPDIR:-/tmp}/tmp.XXXXXXXXXX"`" || exit 1

echo "hello" > "$outfile"

tar cf "$imgfile" "$outfile"

if [ "$(echo "nativedisk; source '(usb0)/$outfile';" | "${grubshell}" --qemu-opts="-usb -usbdevice disk:$imgfile" | tail -n 1)" != "Hello World" ]; then
   rm "$imgfile"
   rm "$outfile"
   exit 1
fi

rm "$imgfile"
rm "$outfile"
