diff --git a/posix/payload b/posix/payload index ae8be2e..1eb6e8a 100755 --- a/posix/payload +++ b/posix/payload @@ -1,6 +1,5 @@ #!/bin/sh -e -# TODO: verify checksum before extracting # TODO: extract self without resolving to $0 because it doesn't resolve links if [ -z "$XDG_CACHE_HOME" ]; then @@ -14,10 +13,16 @@ if ! [ -d "$destdir" ]; then fi if ! [ "$(head -n 1 "$destdir"/ID/checksum 2>/dev/null)" = 'SUM' ]; then + rm -rf "$destdir"/ID tail -c +BYTES "$0" | lz4 -dc | tar -x -C "$destdir" echo "SUM" > "$destdir"/ID/checksum fi +binname="$(basename "$0")" +if echo "$binname" | grep -q \.tin$; then + binname="$(echo "$binname" | sed s/\.tin//)" +fi + ORIGIN="$destdir"/ID LD_LIBRARY_PATH="$ORIGIN/lib" PATH="$ORIGIN/bin":$PATH @@ -27,5 +32,4 @@ export PATH # export LD_DEBUG='libs' -# TODO: use $0 instead -exec "$destdir"/ID/bin/"$(basename "$1")" +exec "$destdir"/ID/bin/"$binname" "$@"