diff --git a/makeself-header.sh b/makeself-header.sh index b991a5a..8c5b229 100755 --- a/makeself-header.sh +++ b/makeself-header.sh @@ -24,14 +24,7 @@ scriptargs="$SCRIPTARGS" cleanup_script="${CLEANUP_SCRIPT}" licensetxt="$LICENSE" helpheader="${HELPHEADER}" -preextract=' -EOF -if test -n "${PREEXTRACT_FILE}"; then - sed -e "s/['\\]/\\\\&/g" "${PREEXTRACT_FILE}" >> "$archname" -fi -cat << EOF >> "$archname" -' -preextract="\${preextract#?}"; preextract="\${preextract%?}" # trim redundant newlines +preextract="${PREEXTRACT_ENCODED}" targetdir="$archdirname" filesizes="$filesizes" totalsize="$totalsize" @@ -326,8 +319,8 @@ MS_Preextract() fi fi - prescript=\`mktemp -t XXXXX -p "\$tmpdir"\` - echo "\$preextract" > "\$prescript" + prescript=\`mktemp "\$tmpdir/XXXXXX"\` + echo "\$preextract" | base64 -d > "\$prescript" chmod a+x "\$prescript" (cd "\$tmpdir"; eval "\"\$prescript\" \$scriptargs \"\\\$@\""); res=\$? @@ -495,7 +488,7 @@ EOLSM echo "Pre-extraction script is not provided." >&2 exit 1 fi - echo "\$preextract" + echo "\$preextract" | base64 -d exit 0 ;; --confirm) diff --git a/makeself.sh b/makeself.sh index f3d87d8..d80abcf 100755 --- a/makeself.sh +++ b/makeself.sh @@ -313,9 +313,10 @@ do shift 2 || { MS_Usage; exit 1; } ;; --preextract) - PREEXTRACT_FILE="$2" + preextract_file="$2" shift 2 || { MS_Usage; exit 1; } - test -r "$PREEXTRACT_FILE" || { echo "Unable to open pre-extraction script: $PREEXTRACT_FILE" >&2; exit 1; } + test -r "$preextract_file" || { echo "Unable to open pre-extraction script: $preextract_file" >&2; exit 1; } + PREEXTRACT_ENCODED=`base64 "$preextract_file"` ;; --cleanup) CLEANUP_SCRIPT="$2"