From: Junio C Hamano <gitster@pobox.com>
To: David Jack Olrik <david@olrik.dk>
Cc: git@vger.kernel.org, ukleinek@informatik.uni-freiburg.de
Subject: Re: [PATCH] Fixed non portable use of expr and removed incorrect use of test -eq for string comparison
Date: Wed, 22 Aug 2007 14:56:18 -0700 [thread overview]
Message-ID: <7vejhvi67x.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: <11878139102715-git-send-email-david@olrik.dk> (David Jack Olrik's message of "Wed, 22 Aug 2007 22:18:30 +0200")
David Jack Olrik <david@olrik.dk> writes:
> On 22/08/2007, at 15.23, Uwe Kleine-König wrote:
>
>> > You'd then need to check against 2 instead of 1, which I find less
>> > obvious as we are testing for a '/' at the begining of the string.
>> If I understood the problem right you only need to test for the exit
>> code, that is the program test is not required at all.
>
> Ah, yes that's true. The following should make it more clear that we are
> looking at the first character.
>
> if expr "$httpd_only" : "\/" >/dev/null
Then why not avoid the fork with something like:
case "$httpd_only" in
/*)
... begins with slash ...
esac
By the way, I do not know if the use of "which" there is
portable. Have Solaris folks tried this program ever?
How about doing it this way?
* No need to use "cut"; just let IFS do its job.
* No need to use "which"; we will need to do a discovery with
custom paths anyway, so use the same logic for discovery from
the normal $PATH as well.
* The original code wanted to allow the httpd command that
comes to the function to have arguments and preserve it but
did so only for the case where the command was not specified
with a full pathname. Allow it for full-path case as well
for consistency.
* The original code returned without checking for error when
httpd was specified without a full path, and checked and
complained when it was. Check the error exit for both cases.
---
git-instaweb.sh | 42 ++++++++++++++++++++++++++----------------
1 files changed, 26 insertions(+), 16 deletions(-)
diff --git a/git-instaweb.sh b/git-instaweb.sh
index b79c6b6..a17c9b3 100755
--- a/git-instaweb.sh
+++ b/git-instaweb.sh
@@ -29,32 +29,42 @@ test -z "$browser" && browser='firefox'
test -z "$port" && port=1234
start_httpd () {
- httpd_only="`echo $httpd | cut -f1 -d' '`"
- if test "`expr index $httpd_only /`" -eq '1' || \
- which $httpd_only >/dev/null
- then
- $httpd $fqgitdir/gitweb/httpd.conf
- else
+ set x $httpd
+ shift
+
+ httpd=
+ case "$1" in
+ /*)
+ : full path -- no discovery
+ httpd="$1"
+ ;;
+ *)
# many httpds are installed in /usr/sbin or /usr/local/sbin
# these days and those are not in most users $PATHs
- for i in /usr/local/sbin /usr/sbin
+ paths="$PATH:/usr/sbin:/usr/local/sbin"
+ oIFS="$IFS"
+ IFS=:
+ for p in $paths
do
- if test -x "$i/$httpd_only"
+ if test -x "$p/$1"
then
- # don't quote $httpd, there can be
- # arguments to it (-f)
- $i/$httpd "$fqgitdir/gitweb/httpd.conf"
- return
+ httpd="$p/$1"
+ break
fi
done
- echo "$httpd_only not found. Install $httpd_only or use" \
- "--httpd to specify another http daemon."
+ IFS="$oIFS"
+ ;;
+ esac
+ if test -z "$httpd"
+ then
+ echo "$1 not found. Install $1 or use --httpd to specify another http daemon."
exit 1
fi
- if test $? != 0; then
+ shift
+ "$httpd" "$@" "$fqgitdir/gitweb/httpd.conf" || {
echo "Could not execute http daemon $httpd."
exit 1
- fi
+ }
}
stop_httpd () {
next prev parent reply other threads:[~2007-08-22 21:56 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-22 12:02 [PATCH] Fixed non portable use of expr, and incorrect use of test -eq for string comparison David Jack Olrik
2007-08-22 12:21 ` Uwe Kleine-König
2007-08-22 12:30 ` David Jack Olrik
2007-08-22 13:23 ` Uwe Kleine-König
2007-08-22 20:18 ` [PATCH] Fixed non portable use of expr and removed " David Jack Olrik
2007-08-22 21:56 ` Junio C Hamano [this message]
2007-08-23 9:06 ` Uwe Kleine-König
2007-08-23 9:25 ` Junio C Hamano
2007-08-23 10:02 ` Uwe Kleine-König
2007-08-23 8:58 ` Uwe Kleine-König
2007-08-22 21:00 ` [PATCH] Fixed non portable use of expr, and " martin f krafft
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7vejhvi67x.fsf@gitster.siamese.dyndns.org \
--to=gitster@pobox.com \
--cc=david@olrik.dk \
--cc=git@vger.kernel.org \
--cc=ukleinek@informatik.uni-freiburg.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).