I wanted to use httpd's fastcgi "socket" and "strip" options and based upon
the man page's brief text:

     [no] fastcgi [option]
             Enable FastCGI instead of serving files.  Valid options are:

tried "obvious" permutations such as:

  fastcgi strip 1 socket "..."
  fastcgi socket "..." strip 1
  fastcgi socket "...", strip 1

but with each was greeted by a terse "syntax error".

After hunting around in the relevant parse.y file, it transpires that the
grammar allows, roughly speaking, the following:

  fastcgi
  fastcgi option
  fastcgi { option ((',' '\n'? | '\n') option)* }

In other words, if you want to use more than one option you *have* to use
the {...} notation, but there's more than one way for options inside curly
brackets to be separated. In my case I can specify:

  fastcgi {
    socket "..."
    strip 1
  }

or:

  fastcgi {
    socket "...", strip 1
  }

or:

  fastcgi {
    socket "...",
    strip 1
  }

This raised a couple of questions in my mind.

First, stylistically, I'm not quite sure if having three slightly different
ways of separating multiple options is useful or not. That said, I assume
that some people might already be taking advantage of this flexibility, so
perhaps worrying about it now is pointless.

Second, is it worthwhile giving users a hint about what to do when multiple
options need to be specified? For example, something like:

     [no] fastcgi [option]
             Enable FastCGI instead of serving files.  If more than option
             is specified, they must be included inside { ... }, with each
             option separated by a comma or newline.  Valid options are:

I'm happy to raise a patch if other people think this is worth fixing,
although I'm not entirely sure if we want to make people aware of the full
extent of the grammar, or something a little less complete such as the
suggestion above.


Laurie

Reply via email to