56 lines
1.2 KiB
Bash
Executable File
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
|