Annotation of hatari/tools/hatari-tos-register.sh, revision 1.1.1.2

1.1       root        1: #!/bin/sh
                      2: #
                      3: # minimal Linux init script for registering Hatari as binfmt_misc
                      4: # handler for TOS binaries
1.1.1.2 ! root        5: #
        !             6: # NOTE: newer Debian derived distributions have convenience functionality
        !             7: # for this.  Just put something like this to /usr/share/binfmts/hatari:
        !             8: #      package hatari
        !             9: #      interpreter /usr/bin/hatari
        !            10: #      magic \x60\x1a
        !            11: # And call these when Hatari is installed and removed:
        !            12: #      update-binfmts --import hatari
        !            13: #      update-binfmts --remove hatari /usr/bin/hatari
1.1       root       14: 
                     15: # name given for binftm_misc
                     16: name=TOS
                     17: 
                     18: # first bytes for GEMDOS programs
                     19: magic="\x60\x1a"
                     20: 
                     21: # what is used to "interpret" (run) these programs
                     22: runner=/usr/bin/hatari
                     23: 
                     24: register_binfmt ()
                     25: {
                     26:        # Mount the binfmt_misc directory if not already mounted
                     27:        if [ ! -e /proc/sys/fs/binfmt_misc/register ]; then
                     28:                (set -e; mount none /proc/sys/fs/binfmt_misc -t binfmt_misc)
                     29:        fi
                     30:        if [ -e /proc/sys/fs/binfmt_misc/$name ] ; then
                     31:                echo "WARNING: $name binfmt_misc handler already registered."
                     32:                return
                     33:        fi
                     34:        # Register runner for files starting with specified magic
                     35:        regfile=/proc/sys/fs/binfmt_misc/register
                     36:        if ! echo ":$name:M::$magic::$runner:" > $regfile ; then
                     37:                echo "ERROR: registering $name binfmt_misc handler failed!"
                     38:                exit 1
                     39:        fi
                     40:        echo "Registered $name binfmt_misc handler."
                     41: }
                     42: 
                     43: deregister_binfmt ()
                     44: {
                     45:        if [ -e /proc/sys/fs/binfmt_misc/$name ] ; then
                     46:                echo -1 > /proc/sys/fs/binfmt_misc/$name
                     47:                echo "De-registered $name binfmt_misc handler."
                     48:        else
                     49:                echo "WARNING: no binfmt_misc handler for $name."
                     50:        fi
                     51: }
                     52: 
                     53: case "$1" in
                     54:        start)
                     55:                register_binfmt
                     56:                ;;
                     57:        stop)
                     58:                deregister_binfmt
                     59:                ;;
                     60:        *)
                     61:                echo "Usage: ${0##*/} start|stop" >&2
                     62:                exit 1
                     63:                ;;
                     64: esac

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.