httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bill Stoddard" <>
Subject WebDAV and ap_os_canonical_filename()
Date Tue, 14 Mar 2000 18:16:54 GMT
On Apache for Windows and OS/2, ap_os_canonical_filename is used to fold the
absolute filename to all lower case before access protections are checked.
URIs are case sensitive (A_file.html is different from a_file.html in the
general case) but the Win32 file system is not case sensitive (A_file.html
is the same as a_file.html), so it makes sense to fold the filename on
systems that have case insenstive file systems before checking access rules.
No problem with this. However, there are exceptional cases where filename
case needs to be preserved even on systems that have case insensitive (but
case preserving) file systems.

One notable exception is the name of Java class files. The filename must
exactly match, including case, the class name.   So here is the problem....
If I publish a Java class with a mixed case name with a DAV implementation
written to the Apache API, the filename case is not preserved by Apache (on
Windows) and my class will not compile once I fetch it out of the repository
again. We need to preserve filename case on a PUT request. The only solution
that comes to mind is to create a new char* in the request_rec structure
(char* case_canononical_filename ?) that contains the translated filename
that has not been folded to lower case. mod_dav can use this field when
handling PUT requests. Any other ideas?

Bill Stoddard

View raw message