You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@apr.apache.org by "William A. Rowe, Jr." <wr...@rowe-clan.net> on 2003/03/28 18:34:49 UTC

Re: [PATCH]: srclib/apr/file_io/win32/filestat.c (Bug #8014: Apache cannot handle NTFS Junctions (Symlinks))

At 06:32 AM 3/28/2003, Spinka, Kristofer wrote:
>  I'm not 100% this fixes the issue mentioned at
>http://nagoya.apache.org/bugzilla/show_bug.cgi?id=8014 though I tried to
>reproduce the issue as I understood it.  If one of the bug submitters
>could test it that would be great.  Bill, if you could verify that this
>change is reasonable I would appreciate it, the 'wanted' thing is a
>little vague to me.
>
>--- filestat.c.orig     Fri Mar  7 14:21:29 2003
>+++ filestat.c  Fri Mar 28 07:16:02 2003
>@@ -363,7 +363,8 @@
>         finfo->size = 0x7fffffff;
> #endif
> 
>-    if (wininfo->dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) {
>+    if (wanted & APR_FINFO_LINK &&
>+        wininfo->dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) {
>         finfo->filetype = APR_LNK;
>     }
>     else if (wininfo->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {


Ok, a reparse point (Junction) is a symlink of sorts pointing at another
Directory.  The wanted bit APR_FINFO_LINK tells Apache we want the
actual details about the LINK itself, we don't want the info about the
link target directory.

If we omit APR_FINFO_LINK and the junction is valid, we should return
the stats of the target directory.  So your patch looks essentially correct.

Bill