80 KiB
Executable file
80 KiB
Executable file
#!/bin/sh
# Prime Mover
#
# © 2006 David Given.
# Prime Mover is licensed under the MIT open source license. To get the full
# license text, run this file with the '--license' option.
#
# $Id: shell 10 2006-07-20 14:50:06Z dtrg $
THISFILE="$0"
CC=cc
PMEXEC=./.pm-exec-`arch`
set -e
extract_section() {
sed -e "1,/^XXXXSTART$1/d" "$THISFILE" | (
read size
dd bs=1 count=$size 2>/dev/null
) | zcat
}
# If the bootstrap's built, run it.
if [ $PMEXEC -nt $0 ]; then
extract_section script | $PMEXEC /dev/stdin "$@"
exit $?
fi
# Otherwise, compile it and restart.
echo "pm: bootstrapping..."
CFILE=/tmp/pm-$$.c
trap "rm -f $CFILE" EXIT
extract_section interpreter > /tmp/pm-$$.c
$CC $CFILE -o $PMEXEC && exec "$THISFILE" "$@"
echo "pm: bootstrap failed."
exit 1
XXXXSTARTscript
10348
# Prime Mover
#
# © 2006 David Given.
# Prime Mover is licensed under the MIT open source license. To get the full
# license text, run this file with the '--license' option.
#
# $Id: shell 10 2006-07-20 14:50:06Z dtrg $
THISFILE="$0"
CC=cc
PMEXEC=./.pm-exec-`arch`
set -e
extract_section() {
sed -e "1,/^XXXXSTART$1/d" "$THISFILE" | (
read size
dd bs=1 count=$size 2>/dev/null
) | zcat
}
# If the bootstrap's built, run it.
if [ $PMEXEC -nt $0 ]; then
extract_section script | $PMEXEC /dev/stdin "$@"
exit $?
fi
# Otherwise, compile it and restart.
echo "pm: bootstrapping..."
CFILE=/tmp/pm-$$.c
trap "rm -f $CFILE" EXIT
extract_section interpreter > /tmp/pm-$$.c
$CC $CFILE -o $PMEXEC && exec "$THISFILE" "$@"
echo "pm: bootstrap failed."
exit 1
XXXXSTARTscript
10348