From c9f605cb4a3903985f2c6f816c30c1edf728c1b5 Mon Sep 17 00:00:00 2001
From: Jon Salz <jsalz@google.com>
Date: Mon, 27 Jan 2014 16:04:33 +0800
Subject: [PATCH] Add --help-header option to prepend a string to the archive's
 --help.

---
 makeself-header.sh |  3 ++-
 makeself.sh        | 71 ++++++++++++++++++++++++++++++------------------------
 2 files changed, 41 insertions(+), 33 deletions(-)

diff --git a/makeself-header.sh b/makeself-header.sh
index e3f6c11..f97758c 100755
--- a/makeself-header.sh
+++ b/makeself-header.sh
@@ -13,6 +13,7 @@ label="$LABEL"
 script="$SCRIPT"
 scriptargs="$SCRIPTARGS"
 licensetxt="$LICENSE"
+helpheader='$HELPHEADER'
 targetdir="$archdirname"
 filesizes="$filesizes"
 keep="$KEEP"
@@ -119,7 +120,7 @@ MS_dd_Progress()
 MS_Help()
 {
     cat << EOH >&2
-Makeself version $MS_VERSION
+\${helpheader}Makeself version $MS_VERSION
  1) Getting help or info about \$0 :
   \$0 --help   Print this message
   \$0 --info   Print embedded info : title, default target directory, embedded script ...
diff --git a/makeself.sh b/makeself.sh
index 361d710..cb2d6f2 100755
--- a/makeself.sh
+++ b/makeself.sh
@@ -88,38 +88,39 @@ MS_Usage()
 {
     echo "Usage: $0 [params] archive_dir file_name label startup_script [args]"
     echo "params can be one or more of the following :"
-    echo "    --version | -v  : Print out Makeself version number and exit"
-    echo "    --help | -h     : Print out this help message"
-    echo "    --quiet | -q    : Do not print any messages other than errors."
-    echo "    --gzip          : Compress using gzip (default if detected)"
-    echo "    --bzip2         : Compress using bzip2 instead of gzip"
-    echo "    --pbzip2        : Compress using pbzip2 instead of gzip"
-    echo "    --xz            : Compress using xz instead of gzip"
-    echo "    --compress      : Compress using the UNIX 'compress' command"
-    echo "    --complevel lvl : Compression level for gzip xz bzip2 and pbzip2 (default 9)"
-    echo "    --base64        : Instead of compressing, encode the data using base64"
-    echo "    --nocomp        : Do not compress the data"
-    echo "    --notemp        : The archive will create archive_dir in the"
-    echo "                      current directory and uncompress in ./archive_dir"
-    echo "    --copy          : Upon extraction, the archive will first copy itself to"
-    echo "                      a temporary directory"
-    echo "    --append        : Append more files to an existing Makeself archive"
-    echo "                      The label and startup scripts will then be ignored"
-    echo "    --target dir    : Extract directly to a target directory"
-    echo "                      directory path can be either absolute or relative"
-    echo "    --current       : Files will be extracted to the current directory"
-    echo "                      Both --current and --target imply --notemp"
-    echo "    --tar-extra opt : Append more options to the tar command line"
-    echo "    --nomd5         : Don't calculate an MD5 for archive"
-    echo "    --nocrc         : Don't calculate a CRC for archive"
-    echo "    --header file   : Specify location of the header script"
-    echo "    --follow        : Follow the symlinks in the archive"
-    echo "    --noprogress    : Do not show the progress during the decompression"
-    echo "    --nox11         : Disable automatic spawn of a xterm"
-    echo "    --nowait        : Do not wait for user input after executing embedded"
-    echo "                      program from an xterm"
-    echo "    --lsm file      : LSM file describing the package"
-    echo "    --license file  : Append a license file"
+    echo "    --version | -v     : Print out Makeself version number and exit"
+    echo "    --help | -h        : Print out this help message"
+    echo "    --quiet | -q       : Do not print any messages other than errors."
+    echo "    --gzip             : Compress using gzip (default if detected)"
+    echo "    --bzip2            : Compress using bzip2 instead of gzip"
+    echo "    --pbzip2           : Compress using pbzip2 instead of gzip"
+    echo "    --xz               : Compress using xz instead of gzip"
+    echo "    --compress         : Compress using the UNIX 'compress' command"
+    echo "    --complevel lvl    : Compression level for gzip xz bzip2 and pbzip2 (default 9)"
+    echo "    --base64           : Instead of compressing, encode the data using base64"
+    echo "    --nocomp           : Do not compress the data"
+    echo "    --notemp           : The archive will create archive_dir in the"
+    echo "                         current directory and uncompress in ./archive_dir"
+    echo "    --copy             : Upon extraction, the archive will first copy itself to"
+    echo "                         a temporary directory"
+    echo "    --append           : Append more files to an existing Makeself archive"
+    echo "                         The label and startup scripts will then be ignored"
+    echo "    --target dir       : Extract directly to a target directory"
+    echo "                         directory path can be either absolute or relative"
+    echo "    --current          : Files will be extracted to the current directory"
+    echo "                         Both --current and --target imply --notemp"
+    echo "    --tar-extra opt    : Append more options to the tar command line"
+    echo "    --nomd5            : Don't calculate an MD5 for archive"
+    echo "    --nocrc            : Don't calculate a CRC for archive"
+    echo "    --header file      : Specify location of the header script"
+    echo "    --follow           : Follow the symlinks in the archive"
+    echo "    --noprogress       : Do not show the progress during the decompression"
+    echo "    --nox11            : Disable automatic spawn of a xterm"
+    echo "    --nowait           : Do not wait for user input after executing embedded"
+    echo "                         program from an xterm"
+    echo "    --lsm file         : LSM file describing the package"
+    echo "    --license file     : Append a license file"
+    echo "    --help-header file : Add a header to the archive's --help output"
     echo
     echo "Do not forget to give a fully qualified startup script name"
     echo "(i.e. with a ./ prefix if inside the archive)."
@@ -254,6 +255,12 @@ do
 	LSM_CMD="cat \"$2\" >> \"\$archname\""
     if ! shift 2; then MS_Help; exit 1; fi
 	;;
+    --help-header)
+	HELPHEADER=`sed -e "s/'/'\\\\\''/g" $2`
+    if ! shift 2; then MS_Help; exit 1; fi
+	[ -n "$HELPHEADER" ] && HELPHEADER="$HELPHEADER
+"
+    ;;
     -q | --quiet)
 	QUIET=y
 	shift
-- 
1.8.5.5

