This patch allows calling: git-instaweb -d apache2 and have the script Do The Right Thing. In particular, the auto-discovery mechanism has been extended in order to be used for module listing as well, and the call convention is that if the daemon is apache2/lighttpd and the parameter to the "-d" option does not end by "-f", the "-f" is added to the end of the option itself. Another minor change is a substitution of a shell sub-call using "$()" by means of backticks. In my understanding, plain /bin/sh does not support "$()". Signed-off-by: Flavio Poletti <flavio@xxxxxxxxxxx> --- Hello, this is the first time I submit a patch here so please point me to the right FM to Read if I've messed up with the standard submission procedure at http://repo.or.cz/w/git.git?a=blob_plain;f=Documentation/SubmittingPatches;hb=HEAD Cheers, Flavio. git-instaweb.sh | 34 +++++++++++++++++++++++++--------- 1 files changed, 25 insertions(+), 9 deletions(-) diff --git a/git-instaweb.sh b/git-instaweb.sh index 6f91c8f..cc9d4f3 100755 --- a/git-instaweb.sh +++ b/git-instaweb.sh @@ -37,11 +37,23 @@ test -z "$httpd" && httpd='lighttpd -f' # any untaken local port will do... test -z "$port" && port=1234 -start_httpd () { - httpd_only="`echo $httpd | cut -f1 -d' '`" +resolve_httpd () { + local_httpd=$1 + + case "$local_httpd" in + *apache2*|*lighttpd*) + # ensure that the apache2/lighttpd command ends with "-f" + if ! echo "$local_httpd" | grep -- '-f *$' >/dev/null 2>&1 + then + local_httpd="$local_httpd -f" + fi + ;; + esac + + httpd_only="`echo $local_httpd | cut -f1 -d' '`" if case "$httpd_only" in /*) : ;; *) which $httpd_only >/dev/null;; esac then - $httpd "$fqgitdir/gitweb/httpd.conf" + echo $local_httpd else # many httpds are installed in /usr/sbin or /usr/local/sbin # these days and those are not in most users $PATHs @@ -51,16 +63,19 @@ start_httpd () { do if test -x "$i/$httpd_only" then - # don't quote $httpd, there can be - # arguments to it (-f) - $i/$httpd "$fqgitdir/gitweb/httpd.conf" + echo $i/$local_httpd return fi done - echo "$httpd_only not found. Install $httpd_only or use" \ + echo >&2 "$httpd_only not found. Install $httpd_only or use" \ "--httpd to specify another http daemon." exit 1 fi +} + +start_httpd () { + # don't quote $httpd, there can be arguments to it (-f) + $httpd "$fqgitdir/gitweb/httpd.conf" if test $? != 0; then echo "Could not execute http daemon $httpd." exit 1 @@ -71,6 +86,7 @@ stop_httpd () { test -f "$fqgitdir/pid" && kill `cat "$fqgitdir/pid"` } +httpd=`resolve_httpd "$httpd"` while test $# != 0 do case "$1" in @@ -92,7 +108,7 @@ do ;; -d|--httpd) shift - httpd="$1" + httpd=`resolve_httpd "$1"` ;; -b|--browser) shift @@ -228,7 +244,7 @@ EOF } script=' -s#^(my|our) \$projectroot =.*#$1 \$projectroot = "'$(dirname "$fqgitdir")'";#; +s#^(my|our) \$projectroot =.*#$1 \$projectroot = "'`dirname "$fqgitdir"`'";#; s#(my|our) \$gitbin =.*#$1 \$gitbin = "'$GIT_EXEC_PATH'";#; s#(my|our) \$projects_list =.*#$1 \$projects_list = \$projectroot;#; s#(my|our) \$git_temp =.*#$1 \$git_temp = "'$fqgitdir/gitweb/tmp'";#;' -- 1.5.5.3 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html