HatariWii/tools/hatari-tos-register.sh

56 lines
1.2 KiB
Bash
Executable File

#!/bin/sh
#
# minimal Linux init script for registering Hatari as binfmt_misc
# handler for TOS binaries
# name given for binftm_misc
name=TOS
# first bytes for GEMDOS programs
magic="\x60\x1a"
# what is used to "interpret" (run) these programs
runner=/usr/bin/hatari
register_binfmt ()
{
# Mount the binfmt_misc directory if not already mounted
if [ ! -e /proc/sys/fs/binfmt_misc/register ]; then
(set -e; mount none /proc/sys/fs/binfmt_misc -t binfmt_misc)
fi
if [ -e /proc/sys/fs/binfmt_misc/$name ] ; then
echo "WARNING: $name binfmt_misc handler already registered."
return
fi
# Register runner for files starting with specified magic
regfile=/proc/sys/fs/binfmt_misc/register
if ! echo ":$name:M::$magic::$runner:" > $regfile ; then
echo "ERROR: registering $name binfmt_misc handler failed!"
exit 1
fi
echo "Registered $name binfmt_misc handler."
}
deregister_binfmt ()
{
if [ -e /proc/sys/fs/binfmt_misc/$name ] ; then
echo -1 > /proc/sys/fs/binfmt_misc/$name
echo "De-registered $name binfmt_misc handler."
else
echo "WARNING: no binfmt_misc handler for $name."
fi
}
case "$1" in
start)
register_binfmt
;;
stop)
deregister_binfmt
;;
*)
echo "Usage: ${0##*/} start|stop" >&2
exit 1
;;
esac