Glenn wrote:

On Sat, Oct 25, 2003 at 11:33:35AM -0700, Stas Bekman wrote:

Ted Rolle wrote:
[...]

The calling module has the responsibility of providing a good r->filename,
even when it's not used.

what's a good r->filename? /dev/null sounds good to me.


How about "" as in the empty string containing only the '\0' character?
This way, filters after the trans_hook could be sure that r->filename
is never NULL and at the same time, any stat calls on "" will fail.
Smarter modules would be able to check
  if (*r->filename != '\0') {
      ....
  }
and modules that require a mapping to the filesystem could quickly do
  if (*r->filename == '\0') {
      return DECLINED;
  }
to simply decline when they detect that there is no filesystem mapping.

how about something like


ap_request_filename(r) that returns ptr to filename or NULL

ap_request_filename_str(r) that returns ptr to filename or ""

ap_request_filename_set(r, filename) that takes NULL or real filename and does the right thing under the covers

Apache >= 2.1 changes name of r->filename field to r->private_filename
Apache >= 2.1 makes sure r->private_filename is set sanely (whatever that is) after translate name hook


as far as Apache 2.0... there are modules that set r->filename to something even when it makes no sense... there are modules that set it to NULL... probably modules that expect r->filename==NULL to mean something

probably Apache core shouldn't change the (vague) semantics of r->filename but it can provide the access functions mentioned above

modules for 2.0 that look at r->filename could call ap_request_filename() or ap_request_filename_str() depending on the requirement (dumb logging code would just call _str() version)




Reply via email to