#!/bin/sh
#
# Unregister any stale qemu-*-static binfmt handlers and (re-)register the ones
# shipped by this image via systemd-binfmt, so the host always uses the recent
# qemu-user-static built into this image (registered with the "F" fix-binary
# flag from /usr/lib/binfmt.d).
#
# Based on https://www.itix.fr/blog/qemu-user-static-with-podman/

set -Eeuo pipefail

if [ ! -d /proc/sys/fs/binfmt_misc ]; then
    echo "No binfmt support in the kernel."
    echo "  Try: '/sbin/modprobe binfmt_misc' from the host"
    exit 1
fi

if [ ! -f /proc/sys/fs/binfmt_misc/register ]; then
    echo "Mounting /proc/sys/fs/binfmt_misc..."
    mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc
fi

echo "Cleaning up..."
find /proc/sys/fs/binfmt_misc -type f -name 'qemu-*' -exec sh -c 'echo -1 > {}' \;

echo "Registering..."
exec /usr/lib/systemd/systemd-binfmt
