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)
