Mail Archives: cygwin-developers/1998/09/16/15:56:10
In article <19980916110023 DOT A11938 DOT cygnus DOT cygwin32 DOT developers AT cygnus DOT com>,
Christopher Faylor <cgf AT cygnus DOT com> wrote:
>There are still problems with symlinks in the snapshot that Sergey's
>recent patch has helped unearth. I'm working on fixing the problems
>and hope to have a patch soon.
>
>This is just a heads up for people so we don't duplicate effort.
The patch is below. I was being overly aggressive in detecting
an error condition. It kicked out symbolic links referring to
a drive's root directory.
Index: path.cc
===================================================================
RCS file: /cvs/cvsfiles/devo/winsup/path.cc,v
retrieving revision 1.85
diff -u -p -r1.85 path.cc
--- path.cc 1998/09/16 03:49:52 1.85
+++ path.cc 1998/09/16 15:42:33
@@ -278,19 +278,20 @@ path_conv::path_conv (const char *src, i
}
return; // file found
}
- if (len > 0 && component == 0)
+ else if (len > 0)
{
- symlink_p = 1; // last component of path was a symlink.
- if (!follow_mode)
+ if (component == 0)
{
- fileattr = attr;
- return;
+ symlink_p = 1; // last component of path was a symlink.
+ if (!follow_mode)
+ {
+ fileattr = attr;
+ return;
+ }
}
+ break;
}
- if (len > 0 && (follow_mode || component > 0))
- break; // symlink found
-
s.reset (); // remember this errno
if (!(tail = strrchr (path_copy, '\\')) ||
@@ -331,8 +332,7 @@ path_conv::path_conv (const char *src, i
and translate it back from MS-DOS mode to POSIX. */
if (*sym_buf == '/' || *sym_buf == '\\')
src = sym_buf;
- else if (!(tail = strrchr (path_copy, '\\')) ||
- (tail > path_copy && tail[-1] == ':'))
+ else if (!(tail = strrchr (path_copy, '\\')))
system_printf ("problem parsing %s - '%s'", src, full_path);
else
{
--
cgf AT cygnus DOT com
http://www.cygnus.com/
- Raw text -