{"thread":{"id":"9924","subject":"[PATCH] instaweb: added support Ruby's WEBrick server","startedAt":"2007-09-18T12:16:34Z","lastAt":"2007-10-14T09:49:22Z","messageCount":8,"participants":["mike dalessio","Eric Wong","Junio C Hamano","David Symonds","Johannes Schindelin","mike@csa.net"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"53462","messageId":"20070918121634.E8EFF814635@cyrano","threadId":"9924","inReplyTo":null,"subject":"[PATCH] instaweb: added support Ruby's WEBrick server","fromName":"mike dalessio","fromEmail":"mike@csa.net","sentAt":"2007-09-18T12:16:34Z","receivedAt":"2007-09-18T12:16:34Z","isPatch":true,"sender":{"key":"mike@csa.net","avatar":"https://gravatar.com/avatar/c2938a5c3b56507c507ab95ea79d8655737fa78bf1ad0ea383bf03a3858bc5f9?d=mp&s=160"},"body":"running the webrick server with git requires Ruby and Ruby's YAML and\nWebrick libraries (both of which come standard with Ruby). nice for\nsingle-user standalone invocations.\n\nthe --httpd=webrick option generates a ruby script on the fly to read\nhttpd.conf options and invoke the web server via library call. this\nscript is placed in the .git/gitweb directory. it also generates a\nshell script in a feeble attempt to invoke ruby in a portable manner,\nwhich assumes that 'ruby' is in the user's $PATH.\n\nSigned-off-by: Mike Dalessio <mike@csa.net>\n---\n Documentation/git-instaweb.txt |    3 +-\n git-instaweb.sh                |   44 +++++++++++++++++++++++++++++++++++++++-\n 2 files changed, 45 insertions(+), 2 deletions(-)\n\ndiff --git a/Documentation/git-instaweb.txt b/Documentation/git-instaweb.txt\nindex cec60ee..914fc4c 100644\n--- a/Documentation/git-instaweb.txt\n+++ b/Documentation/git-instaweb.txt\n@@ -27,7 +27,8 @@ OPTIONS\n \tThe HTTP daemon command-line that will be executed.\n \tCommand-line options may be specified here, and the\n \tconfiguration file will be added at the end of the command-line.\n-\tCurrently, lighttpd and apache2 are the only supported servers.\n+\tCurrently, lighttpd, apache2 and webrick are the only supported\n+\tservers.\n \t(Default: lighttpd)\n \n -m|--module-path::\ndiff --git a/git-instaweb.sh b/git-instaweb.sh\nindex b79c6b6..803a754 100755\n--- a/git-instaweb.sh\n+++ b/git-instaweb.sh\n@@ -37,7 +37,9 @@ start_httpd () {\n \telse\n \t\t# many httpds are installed in /usr/sbin or /usr/local/sbin\n \t\t# these days and those are not in most users $PATHs\n-\t\tfor i in /usr/local/sbin /usr/sbin\n+\t\t# in addition, we may have generated a server script\n+\t\t# in $fqgitdir/gitweb.\n+\t\tfor i in /usr/local/sbin /usr/sbin $fqgitdir/gitweb\n \t\tdo\n \t\t\tif test -x \"$i/$httpd_only\"\n \t\t\tthen\n@@ -137,6 +139,43 @@ GIT_DIR=\"$fqgitdir\"\n export GIT_EXEC_PATH GIT_DIR\n \n \n+webrick_conf () {\n+\t# generate a standalone server script in $fqgitdir/gitweb.\n+\tcat > \"$fqgitdir/gitweb/$httpd.rb\" <<EOF\n+require 'webrick'\n+require 'yaml'\n+options = YAML::load_file(ARGV[0])\n+options[:StartCallback] = proc do\n+  File.open(options[:PidFile],\"w\") do |f|\n+    f.puts Process.pid\n+  end\n+end\n+options[:ServerType] = WEBrick::Daemon\n+server = WEBrick::HTTPServer.new(options)\n+['INT', 'TERM'].each do |signal|\n+  trap(signal) {server.shutdown}\n+end\n+server.start\n+EOF\n+\t# generate a shell script to invoke the above ruby script,\n+\t# which assumes _ruby_ is in the user's $PATH. that's _one_\n+\t# portable way to run ruby, which could be installed anywhere,\n+\t# really.\n+\tcat > \"$fqgitdir/gitweb/$httpd\" <<EOF\n+#! /bin/sh\n+ruby $fqgitdir/gitweb/$httpd.rb \\$*\n+EOF\n+\tchmod +x \"$fqgitdir/gitweb/$httpd\"\n+\n+\tcat > \"$conf\" <<EOF\n+:Port: $port\n+:DocumentRoot: \"$fqgitdir/gitweb\"\n+:DirectoryIndex: [\"gitweb.cgi\"]\n+:PidFile: \"$fqgitdir/pid\"\n+EOF\n+\ttest \"$local\" = true && echo ':BindAddress: \"127.0.0.1\"' >> \"$conf\"\n+}\n+\n lighttpd_conf () {\n \tcat > \"$conf\" <<EOF\n server.document-root = \"$fqgitdir/gitweb\"\n@@ -237,6 +276,9 @@ case \"$httpd\" in\n *apache2*)\n \tapache2_conf\n \t;;\n+webrick)\n+\twebrick_conf\n+\t;;\n *)\n \techo \"Unknown httpd specified: $httpd\"\n \texit 1\n-- \n1.5.2.5\n"},{"id":"53502","messageId":"20070918204012.GA28273@untitled","threadId":"9924","inReplyTo":"20070918121634.E8EFF814635@cyrano","subject":"Re: [PATCH] instaweb: added support Ruby's WEBrick server","fromName":"Eric Wong","fromEmail":"normalperson@yhbt.net","sentAt":"2007-09-18T20:40:33Z","receivedAt":"2007-09-18T20:40:33Z","isPatch":true,"sender":{"key":"e@80x24.org","avatar":null},"body":"mike dalessio <mike@csa.net> wrote:\n> running the webrick server with git requires Ruby and Ruby's YAML and\n> Webrick libraries (both of which come standard with Ruby). nice for\n> single-user standalone invocations.\n> \n> the --httpd=webrick option generates a ruby script on the fly to read\n> httpd.conf options and invoke the web server via library call. this\n> script is placed in the .git/gitweb directory. it also generates a\n> shell script in a feeble attempt to invoke ruby in a portable manner,\n> which assumes that 'ruby' is in the user's $PATH.\n> \n> Signed-off-by: Mike Dalessio <mike@csa.net>\n\nAcked-by: Eric Wong <normalperson@yhbt.net>\n\n> ---\n>  Documentation/git-instaweb.txt |    3 +-\n>  git-instaweb.sh                |   44 +++++++++++++++++++++++++++++++++++++++-\n>  2 files changed, 45 insertions(+), 2 deletions(-)\n> \n> diff --git a/Documentation/git-instaweb.txt b/Documentation/git-instaweb.txt\n> index cec60ee..914fc4c 100644\n> --- a/Documentation/git-instaweb.txt\n> +++ b/Documentation/git-instaweb.txt\n> @@ -27,7 +27,8 @@ OPTIONS\n>  \tThe HTTP daemon command-line that will be executed.\n>  \tCommand-line options may be specified here, and the\n>  \tconfiguration file will be added at the end of the command-line.\n> -\tCurrently, lighttpd and apache2 are the only supported servers.\n> +\tCurrently, lighttpd, apache2 and webrick are the only supported\n> +\tservers.\n>  \t(Default: lighttpd)\n>  \n>  -m|--module-path::\n> diff --git a/git-instaweb.sh b/git-instaweb.sh\n> index b79c6b6..803a754 100755\n> --- a/git-instaweb.sh\n> +++ b/git-instaweb.sh\n> @@ -37,7 +37,9 @@ start_httpd () {\n>  \telse\n>  \t\t# many httpds are installed in /usr/sbin or /usr/local/sbin\n>  \t\t# these days and those are not in most users $PATHs\n> -\t\tfor i in /usr/local/sbin /usr/sbin\n> +\t\t# in addition, we may have generated a server script\n> +\t\t# in $fqgitdir/gitweb.\n> +\t\tfor i in /usr/local/sbin /usr/sbin $fqgitdir/gitweb\n>  \t\tdo\n>  \t\t\tif test -x \"$i/$httpd_only\"\n>  \t\t\tthen\n> @@ -137,6 +139,43 @@ GIT_DIR=\"$fqgitdir\"\n>  export GIT_EXEC_PATH GIT_DIR\n>  \n>  \n> +webrick_conf () {\n> +\t# generate a standalone server script in $fqgitdir/gitweb.\n> +\tcat > \"$fqgitdir/gitweb/$httpd.rb\" <<EOF\n> +require 'webrick'\n> +require 'yaml'\n> +options = YAML::load_file(ARGV[0])\n> +options[:StartCallback] = proc do\n> +  File.open(options[:PidFile],\"w\") do |f|\n> +    f.puts Process.pid\n> +  end\n> +end\n> +options[:ServerType] = WEBrick::Daemon\n> +server = WEBrick::HTTPServer.new(options)\n> +['INT', 'TERM'].each do |signal|\n> +  trap(signal) {server.shutdown}\n> +end\n> +server.start\n> +EOF\n> +\t# generate a shell script to invoke the above ruby script,\n> +\t# which assumes _ruby_ is in the user's $PATH. that's _one_\n> +\t# portable way to run ruby, which could be installed anywhere,\n> +\t# really.\n> +\tcat > \"$fqgitdir/gitweb/$httpd\" <<EOF\n> +#! /bin/sh\n> +ruby $fqgitdir/gitweb/$httpd.rb \\$*\n> +EOF\n> +\tchmod +x \"$fqgitdir/gitweb/$httpd\"\n> +\n> +\tcat > \"$conf\" <<EOF\n> +:Port: $port\n> +:DocumentRoot: \"$fqgitdir/gitweb\"\n> +:DirectoryIndex: [\"gitweb.cgi\"]\n> +:PidFile: \"$fqgitdir/pid\"\n> +EOF\n> +\ttest \"$local\" = true && echo ':BindAddress: \"127.0.0.1\"' >> \"$conf\"\n> +}\n> +\n>  lighttpd_conf () {\n>  \tcat > \"$conf\" <<EOF\n>  server.document-root = \"$fqgitdir/gitweb\"\n> @@ -237,6 +276,9 @@ case \"$httpd\" in\n>  *apache2*)\n>  \tapache2_conf\n>  \t;;\n> +webrick)\n> +\twebrick_conf\n> +\t;;\n>  *)\n>  \techo \"Unknown httpd specified: $httpd\"\n>  \texit 1\n> -- \n> 1.5.2.5\n> \n\n-- \nEric Wong\n"},{"id":"53527","messageId":"7vodfztviv.fsf@gitster.siamese.dyndns.org","threadId":"9924","inReplyTo":"20070918121634.E8EFF814635@cyrano","subject":"Re: [PATCH] instaweb: added support Ruby's WEBrick server","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2007-09-18T23:15:52Z","receivedAt":"2007-09-18T23:15:52Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"mike@csa.net (mike dalessio) writes:\n\n> diff --git a/Documentation/git-instaweb.txt b/Documentation/git-instaweb.txt\n> index cec60ee..914fc4c 100644\n> --- a/Documentation/git-instaweb.txt\n> +++ b/Documentation/git-instaweb.txt\n> @@ -27,7 +27,8 @@ OPTIONS\n>  \tThe HTTP daemon command-line that will be executed.\n>  \tCommand-line options may be specified here, and the\n>  \tconfiguration file will be added at the end of the command-line.\n> -\tCurrently, lighttpd and apache2 are the only supported servers.\n> +\tCurrently, lighttpd, apache2 and webrick are the only supported\n> +\tservers.\n>  \t(Default: lighttpd)\n\nPerhaps we can start thinking about rewording \"are the only\nsuported servers\" to \"are supported\".\n\n> diff --git a/git-instaweb.sh b/git-instaweb.sh\n> index b79c6b6..803a754 100755\n> --- a/git-instaweb.sh\n> +++ b/git-instaweb.sh\n> @@ -37,7 +37,9 @@ start_httpd () {\n>  \telse\n>  \t\t# many httpds are installed in /usr/sbin or /usr/local/sbin\n>  \t\t# these days and those are not in most users $PATHs\n> -\t\tfor i in /usr/local/sbin /usr/sbin\n> +\t\t# in addition, we may have generated a server script\n> +\t\t# in $fqgitdir/gitweb.\n> +\t\tfor i in /usr/local/sbin /usr/sbin $fqgitdir/gitweb\n>  \t\tdo\n>  \t\t\tif test -x \"$i/$httpd_only\"\n>  \t\t\tthen\n\nI do not think this hunk belongs to this patch.  It alone would\nbe a useful addition to the program even without the rest of\nyour patch, wouldn't it?  Imagine a case where I automatically\nwould reject all patches that have \"Ruby\" in it for some unknown\nreason.  Do we want to drop this hunk in such a case?\n\n> +\t# generate a shell script to invoke the above ruby script,\n> +\t# which assumes _ruby_ is in the user's $PATH. that's _one_\n> +\t# portable way to run ruby, which could be installed anywhere,\n> +\t# really.\n\nNo games with env, type, nor which.  Good.\n\nJust a few style things (-) and one concern (+):\n\n> +\tcat > \"$fqgitdir/gitweb/$httpd\" <<EOF\n> +#! /bin/sh\n> +ruby $fqgitdir/gitweb/$httpd.rb \\$*\n> +EOF\n\n - I do not like extra whitespace between she-bang #! and the\n   path.  Looks very ugly.\n\n - I do not like extra whitespace between redirection > and\n   redirected filename either.  Looks very ugly.\n\n - I prefer such wrapper to exec the command, like this:\n\n\t#!/bin/sh\n        exec ruby ...\n\n + fqgitdir and httpd need to be shell quoted.  I do not think\n   anybody is stupid enough to have his GIT_DIR set to something\n   like \"/opt/funny/; rm -f / nuke-me/.git/\" but you would see\n   spaces and single quotes in pathnames in odd environments.\n\nI wonder how popular instaweb is and how widely it is used.\nI've actually wondering if we should demote it to contrib/\nsomewhere, but it gets occasional updates so people must be\nusing it...\n"},{"id":"53539","messageId":"ee77f5c20709181741jbb2d727t59f561eeaaa075d@mail.gmail.com","threadId":"9924","inReplyTo":"7vodfztviv.fsf@gitster.siamese.dyndns.org","subject":"Re: [PATCH] instaweb: added support Ruby's WEBrick server","fromName":"David Symonds","fromEmail":"dsymonds@gmail.com","sentAt":"2007-09-19T00:41:43Z","receivedAt":"2007-09-19T00:41:43Z","isPatch":true,"sender":{"key":"dsymonds@gmail.com","avatar":"https://gravatar.com/avatar/b22f5051cbfc11836e36cf7a690e6cde4e225d835e13295ff98d15c7a9ee3c0f?d=mp&s=160"},"body":"On 19/09/2007, Junio C Hamano <gitster@pobox.com> wrote:\n\n>  - I do not like extra whitespace between she-bang #! and the\n>    path.  Looks very ugly.\n\nAt least according to the Autoconf manual, there are some UNIXes that\nrequire a space after the shebang. Not that I've seen such a system.\nPersonally, I find it easier to read with the space.\n\n\nDave.\n"},{"id":"53543","messageId":"Pine.LNX.4.64.0709190225550.28395@racer.site","threadId":"9924","inReplyTo":"7vodfztviv.fsf@gitster.siamese.dyndns.org","subject":"Re: [PATCH] instaweb: added support Ruby's WEBrick server","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2007-09-19T01:27:18Z","receivedAt":"2007-09-19T01:27:18Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Tue, 18 Sep 2007, Junio C Hamano wrote:\n\n> I wonder how popular instaweb is and how widely it is used. I've \n> actually wondering if we should demote it to contrib/ somewhere, but it \n> gets occasional updates so people must be using it...\n\nI have to admit that I found it easier to install gitweb manually, \nespecially with recent documentation enhancements, _and_ the constraint \nthat I had to use an existing DocumentRoot.\n\nSo I would not be opposed to move this into contrib/.\n\nCiao,\nDscho\n"},{"id":"55020","messageId":"11916917892652-git-send-email-mike@csa.net","threadId":"9924","inReplyTo":"7vodfztviv.fsf@gitster.siamese.dyndns.org","subject":"[PATCH 1/2] instaweb: allow for use of auto-generated scripts","fromName":"","fromEmail":"mike@csa.net","sentAt":"2007-10-06T17:29:48Z","receivedAt":"2007-10-06T17:29:48Z","isPatch":true,"sender":{"key":"mike@csa.net","avatar":"https://gravatar.com/avatar/c2938a5c3b56507c507ab95ea79d8655737fa78bf1ad0ea383bf03a3858bc5f9?d=mp&s=160"},"body":"this patch allows scripts that reside in $fqgitdir/gitweb to be used\nfor firing up an instaweb server. this lays the groundwork for\nextending instaweb support to non-standard web servers, which may\nrequire a script for proper invocation.\n\nSigned-off-by: Mike Dalessio <mike@csa.net>\n---\n git-instaweb.sh |    4 +++-\n 1 files changed, 3 insertions(+), 1 deletions(-)\n\ndiff --git a/git-instaweb.sh b/git-instaweb.sh\nindex b79c6b6..42d9c34 100755\n--- a/git-instaweb.sh\n+++ b/git-instaweb.sh\n@@ -37,7 +37,9 @@ start_httpd () {\n \telse\n \t\t# many httpds are installed in /usr/sbin or /usr/local/sbin\n \t\t# these days and those are not in most users $PATHs\n-\t\tfor i in /usr/local/sbin /usr/sbin\n+\t\t# in addition, we may have generated a server script\n+\t\t# in $fqgitdir/gitweb.\n+\t\tfor i in /usr/local/sbin /usr/sbin \"$fqgitdir/gitweb\"\n \t\tdo\n \t\t\tif test -x \"$i/$httpd_only\"\n \t\t\tthen\n-- \n1.5.2.5\n"},{"id":"55021","messageId":"1191691789249-git-send-email-mike@csa.net","threadId":"9924","inReplyTo":"11916917892652-git-send-email-mike@csa.net","subject":"[PATCH 2/2] instaweb: support for Ruby's WEBrick server","fromName":"","fromEmail":"mike@csa.net","sentAt":"2007-10-06T17:29:49Z","receivedAt":"2007-10-06T17:29:49Z","isPatch":true,"sender":{"key":"mike@csa.net","avatar":"https://gravatar.com/avatar/c2938a5c3b56507c507ab95ea79d8655737fa78bf1ad0ea383bf03a3858bc5f9?d=mp&s=160"},"body":"running the webrick server with git requires Ruby and Ruby's YAML and\nWebrick libraries (both of which come standard with Ruby). nice for\nsingle-user standalone invocations.\n\nthe --httpd=webrick option generates a ruby script on the fly to read\nhttpd.conf options and invoke the web server via library call. this\nscript is placed in the .git/gitweb directory. it also generates a\nshell script in a feeble attempt to invoke ruby in a portable manner,\nwhich assumes that 'ruby' is in the user's $PATH.\n\nSigned-off-by: Mike Dalessio <mike@csa.net>\n---\n Documentation/git-instaweb.txt |    2 +-\n git-instaweb.sh                |   40 ++++++++++++++++++++++++++++++++++++++++\n 2 files changed, 41 insertions(+), 1 deletions(-)\n\ndiff --git a/Documentation/git-instaweb.txt b/Documentation/git-instaweb.txt\nindex cec60ee..735008c 100644\n--- a/Documentation/git-instaweb.txt\n+++ b/Documentation/git-instaweb.txt\n@@ -27,7 +27,7 @@ OPTIONS\n \tThe HTTP daemon command-line that will be executed.\n \tCommand-line options may be specified here, and the\n \tconfiguration file will be added at the end of the command-line.\n-\tCurrently, lighttpd and apache2 are the only supported servers.\n+\tCurrently lighttpd, apache2 and webrick are supported.\n \t(Default: lighttpd)\n \n -m|--module-path::\ndiff --git a/git-instaweb.sh b/git-instaweb.sh\nindex 42d9c34..859be4a 100755\n--- a/git-instaweb.sh\n+++ b/git-instaweb.sh\n@@ -139,6 +139,43 @@ GIT_DIR=\"$fqgitdir\"\n export GIT_EXEC_PATH GIT_DIR\n \n \n+webrick_conf () {\n+\t# generate a standalone server script in $fqgitdir/gitweb.\n+\tcat >\"$fqgitdir/gitweb/$httpd.rb\" <<EOF\n+require 'webrick'\n+require 'yaml'\n+options = YAML::load_file(ARGV[0])\n+options[:StartCallback] = proc do\n+  File.open(options[:PidFile],\"w\") do |f|\n+    f.puts Process.pid\n+  end\n+end\n+options[:ServerType] = WEBrick::Daemon\n+server = WEBrick::HTTPServer.new(options)\n+['INT', 'TERM'].each do |signal|\n+  trap(signal) {server.shutdown}\n+end\n+server.start\n+EOF\n+\t# generate a shell script to invoke the above ruby script,\n+\t# which assumes _ruby_ is in the user's $PATH. that's _one_\n+\t# portable way to run ruby, which could be installed anywhere,\n+\t# really.\n+\tcat >\"$fqgitdir/gitweb/$httpd\" <<EOF\n+#!/bin/sh\n+exec ruby \"$fqgitdir/gitweb/$httpd.rb\" \\$*\n+EOF\n+\tchmod +x \"$fqgitdir/gitweb/$httpd\"\n+\n+\tcat >\"$conf\" <<EOF\n+:Port: $port\n+:DocumentRoot: \"$fqgitdir/gitweb\"\n+:DirectoryIndex: [\"gitweb.cgi\"]\n+:PidFile: \"$fqgitdir/pid\"\n+EOF\n+\ttest \"$local\" = true && echo ':BindAddress: \"127.0.0.1\"' >> \"$conf\"\n+}\n+\n lighttpd_conf () {\n \tcat > \"$conf\" <<EOF\n server.document-root = \"$fqgitdir/gitweb\"\n@@ -239,6 +276,9 @@ case \"$httpd\" in\n *apache2*)\n \tapache2_conf\n \t;;\n+webrick)\n+\twebrick_conf\n+\t;;\n *)\n \techo \"Unknown httpd specified: $httpd\"\n \texit 1\n-- \n1.5.2.5\n"},{"id":"55691","messageId":"20071014094922.GA20297@soma","threadId":"9924","inReplyTo":"55e906d58f15c79c61d83ad4c52ef085de8ad736.1191687881.git.mike@csa.net","subject":"Re: [PATCH 1/2] instaweb: allow for use of auto-generated scripts","fromName":"Eric Wong","fromEmail":"normalperson@yhbt.net","sentAt":"2007-10-14T09:49:22Z","receivedAt":"2007-10-14T09:49:22Z","isPatch":true,"sender":{"key":"e@80x24.org","avatar":null},"body":"mike@csa.net wrote:\n> this patch allows scripts that reside in $fqgitdir/gitweb to be used\n> for firing up an instaweb server. this lays the groundwork for\n> extending instaweb support to non-standard web servers, which may\n> require a script for proper invocation.\n> \n> Signed-off-by: Mike Dalessio <mike@csa.net>\n\nThanks, sorry for the late reply, it slipped my mind for a while.\n\nBoth patches in this series:\nAcked-by: Eric Wong <normalperson@yhbt.net>\n\n> ---\n>  git-instaweb.sh |    4 +++-\n>  1 files changed, 3 insertions(+), 1 deletions(-)\n> \n> diff --git a/git-instaweb.sh b/git-instaweb.sh\n> index b79c6b6..42d9c34 100755\n> --- a/git-instaweb.sh\n> +++ b/git-instaweb.sh\n> @@ -37,7 +37,9 @@ start_httpd () {\n>  \telse\n>  \t\t# many httpds are installed in /usr/sbin or /usr/local/sbin\n>  \t\t# these days and those are not in most users $PATHs\n> -\t\tfor i in /usr/local/sbin /usr/sbin\n> +\t\t# in addition, we may have generated a server script\n> +\t\t# in $fqgitdir/gitweb.\n> +\t\tfor i in /usr/local/sbin /usr/sbin \"$fqgitdir/gitweb\"\n>  \t\tdo\n>  \t\t\tif test -x \"$i/$httpd_only\"\n>  \t\t\tthen\n> -- \n-- \nEric Wong\n"}]}