On 06.05.2009 21:33, Rainer Jung wrote: > While working on additional windows commandline options I noticed, that > there is no consistent checking for validity of the "-k" arguments. > > Those arguments are handled by the rewrite args hook, and some MPMs seem > to care somehow about invalid or duplicate "-k" arguments (e.g. Unix > outputs a somewhat wrong error message about -k being unknown), windows > seems to start the service when an unknown command is given. > > I would like to output a better error message for unknown or duplicate > commands (easy) and then call usage(). At the moment usage() is static > in main.c and there is not a single header file directly in the server/ > directory. > > So I would like to add a private header file in the server directory, at > the moment only containing usage() and switch usage() from static to > AP_DECLARE. Would that be right? I guess we have no reason to include it > in the public include files contained in includes/. > > Another possibility would be to let the rewrite args hook return a > value, stop processing as soon as one module doesn't return OK and call > the usage whenever rewrite args for a module do not return OK. I think > that's a bit fragile, because in the long run, more return values might > show up and cases, where usage() is not the right way to react, so > making usage() available in the mpm-specific module argument handling > seems to be the better way. > > Of course the usage message at the moment doesn't really reflect the MPM > architecture. The commandline specialities are reflected by ifdefs in > the usage, but that's another topic. For the above needed hardening of > parsing the -k flags, the usage message as it exists today is enough. > > Comments?
While experimenting with that: on Windows mpm_winnt.c can't use something in main.c, only vice versa. So usage() would have to be moved from main.c into any other file included in libhttpd (or a new one). Still the question is: is this the right way to go? If so, should I add a small new file with usage(), since the names of the existing ones do not really make a good fit? Regards, Rainer