Jeff passed this e-mail thread to me, since I'm the one who needs to rename directories on NT.
Currently, mod_dav.c has the responsibility for detecting the forbidden operation of renaming or copying an object onto itself. I think a case can be made for pushing that detection into the repository layer, at least in the rename case. In this case its clear that changing the case of a file on NT depends upon whether the underlying file system supports it or not. In this particular case, the mod_dav.c needs to avoid deleting the new resource in the case that they are the same, but it should leave to the repository the question about whether it is a sensible operation. In the case of a versioned file system, different versions of a file with the same content might be considered identical for some operations and yet different for other operations. I can't come up with a definite example, but something worth thinking about is a branch that inherits a version from a different branch. In some cases, changes to one need to be propagated to another, and in that case they should be the same. And yet in other cases they need to be different. It seems to me that the best policy is just to minimize checks for identity at the mod_dav level. What I'd like to do is submit a patch for moving the error for identical rename to the dav_fs_repos.c module, even though that would require other repository implementations to put a check for identity in their code. Comments? --Kim -----Original Message----- From: Jeff Costlow Sent: Friday, May 25, 2001 1:32 PM To: 'Greg Stein'; [EMAIL PROTECTED] Cc: [email protected]; Kim Peterson Subject: RE: [dav-dev] FW: Case-insensitive file system moves We've been looking into it a little bit, I think you are right that it needs to be done before getting into dav_fs_repos.c, but if the move is complicated, it might be good to use functions from that module. I'll let you know what we discover, I'm not sure I was aware that different NT filesystems would behave differently under the "ren foo FOO" situation, that may throw things off a bit. Thanks. -----Original Message----- From: Greg Stein [mailto:[EMAIL PROTECTED] Sent: Friday, May 25, 2001 12:26 PM To: Jeff Costlow; [EMAIL PROTECTED] Cc: [email protected] Subject: Re: [dav-dev] FW: Case-insensitive file system moves On Fri, May 25, 2001 at 01:47:04PM -0500, William A. Rowe, Jr. wrote: > From: "Jeff Costlow" <[EMAIL PROTECTED]> > Sent: Friday, May 25, 2001 1:32 PM > > > > We've encountered a problem with mod_dav that applies only to moving > > > objects on case-insensitive filesystems (like NT). I'm > pretty sure this has been discussed before, but I don't recall the conclusion. > > > > > > Try to move a file like this: > > > MOVE /file1.html HTTP/1.1 > > > Host: www.foo.bar > > > Destination: http://www.foo.bar/FILE1.html > > > > > > on NT, this will result in a 403 error returned to the client, because > > > apache is detecting it as the same resource. > > > > > > It would be nice if this were to succeed and actually change the name of > > > the file. Ideally it would work the same when moving a > collection to a new name as well. > > > Has anyone looked into mod_dav and thought about changing the code so > > > that if 2 resources did not strcmp, but were the same > resource (according to apache), a rename would actually take place? > > That can be done more easily in the upcoming version. > > Not every win32 filesystem accepts ren foo FOO, so some of the logic needs to > reside somewhere (Apache 2.0's APR) so the rename can proceed foo -> rand -> > FOO. Hrm. Interesting point. Jeff (Costlow): I'd be happy to apply a patch if you've got one. I looks like you would need something in dav_method_copymove(). (not much you could do with dav_fs_repos for this issue) Cheers, -g -- Greg Stein, http://www.lyra.org/
