Flavio Poletti <flavio@xxxxxxxxxxx> wrote: > 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. > > Changed all backticks to $( ... ) as per Documentation/CodingGuidelines: > > For shell scripts specifically (not exhaustive): > > - We prefer $( ... ) for command substitution; unlike ``, it > properly nests. It should have been the way Bourne spelled > it from day one, but unfortunately isn't. > > The rationale is that the POSIX shell does support $( ... ), and git > does make use of it rather extensively. (Thanks to Jakub Narebski for > pointing this out). > > Signed-off-by: Flavio Poletti <flavio@xxxxxxxxxxx> Acked-by: Eric Wong <normalperson@xxxxxxxx> > --- > > Sorry for the traffic, but I noticed that a stray warning was emitted > due to a last-second change (which teaches me once more that those > "innocent" last-second it-cannot-spoil-anything changes are the > most poisonus snakes in programming. > > git-instaweb.sh | 48 +++++++++++++++++++++++++++++++++--------------- > 1 files changed, 33 insertions(+), 15 deletions(-) > > diff --git a/git-instaweb.sh b/git-instaweb.sh > index 6f91c8f..af0fde5 100755 > --- a/git-instaweb.sh > +++ b/git-instaweb.sh > @@ -22,10 +22,10 @@ restart restart the web server > . git-sh-setup > > fqgitdir="$GIT_DIR" > -local="`git config --bool --get instaweb.local`" > -httpd="`git config --get instaweb.httpd`" > -port=`git config --get instaweb.port` > -module_path="`git config --get instaweb.modulepath`" > +local="$(git config --bool --get instaweb.local)" > +httpd="$(git config --get instaweb.httpd)" > +port=$(git config --get instaweb.port) > +module_path="$(git config --get instaweb.modulepath)" > > conf="$GIT_DIR/gitweb/httpd.conf" > > @@ -37,11 +37,21 @@ 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_full_httpd () { > + case "$httpd" in > + *apache2*|*lighttpd*) > + # ensure that the apache2/lighttpd command ends with "-f" > + if ! echo "$httpd" | grep -- '-f *$' >/dev/null 2>&1 > + then > + httpd="$httpd -f" > + fi > + ;; > + esac > + > + httpd_only="$(echo $httpd | cut -f1 -d' ')" > if case "$httpd_only" in /*) : ;; *) which $httpd_only >/dev/null;; esac > then > - $httpd "$fqgitdir/gitweb/httpd.conf" > + full_httpd=$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 +61,23 @@ 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" > + full_httpd=$i/$httpd > return > fi > done > - echo "$httpd_only not found. Install $httpd_only or use" \ > - "--httpd to specify another http daemon." > + > + echo >&2 "$httpd_only not found. Install $httpd_only or use" \ > + "--httpd to specify another httpd daemon." > exit 1 > fi > +} > + > +start_httpd () { > + # here $httpd should have a meaningful value > + resolve_full_httpd > + > + # don't quote $full_httpd, there can be arguments to it (-f) > + $full_httpd "$fqgitdir/gitweb/httpd.conf" > if test $? != 0; then > echo "Could not execute http daemon $httpd." > exit 1 > @@ -68,7 +85,7 @@ start_httpd () { > } > > stop_httpd () { > - test -f "$fqgitdir/pid" && kill `cat "$fqgitdir/pid"` > + test -f "$fqgitdir/pid" && kill $(cat "$fqgitdir/pid") > } > > while test $# != 0 > @@ -116,7 +133,7 @@ do > done > > mkdir -p "$GIT_DIR/gitweb/tmp" > -GIT_EXEC_PATH="`git --exec-path`" > +GIT_EXEC_PATH="$(git --exec-path)" > GIT_DIR="$fqgitdir" > export GIT_EXEC_PATH GIT_DIR > > @@ -215,7 +232,8 @@ PerlPassEnv GIT_EXEC_DIR > EOF > else > # plain-old CGI > - list_mods=`echo "$httpd" | sed "s/-f$/-l/"` > + resolve_full_httpd > + list_mods=$(echo "$full_httpd" | sed "s/-f$/-l/") > $list_mods | grep 'mod_cgi\.c' >/dev/null 2>&1 || \ > echo "LoadModule cgi_module $module_path/mod_cgi.so" >> "$conf" > cat >> "$conf" <<EOF > -- > 1.5.5.4 > -- 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