346 lines
80 KiB
Plaintext
Executable file
346 lines
80 KiB
Plaintext
Executable file
#!/bin/sh
|
||
THISFILE="$0"
|
||
CC=cc
|
||
PMEXEC=./.pm-exec-`arch`
|
||
set -e
|
||
|
||
extract_section() {
|
||
sed -e "0,/^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
|
||
9949
|
||
‹ |