]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
unc-paths-current-directory-20040727
authorJeffrey Altman <jaltman@mit.edu>
Wed, 28 Jul 2004 04:54:19 +0000 (04:54 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Wed, 28 Jul 2004 04:54:19 +0000 (04:54 +0000)
fix the handling of unc paths in pioctl calls when the current directory
is the unc path.  (not likely to be the case with cmd.exe since it does
not support pure unc path environments.  4nt.exe shows the problem though.)

src/sys/pioctl_nt.c

index 3bed3772e39a291f00aed8c0b4ee16bb4c913b2c..a03117c537dc5266889ccf16d06468a44d38af50 100644 (file)
@@ -309,8 +309,24 @@ fs_GetFullPath(char *pathp, char *outPathp, long outSize)
     GetCurrentDirectory(sizeof(tpath), tpath);
        if (tpath[1] == ':')
            strcpy(outPathp, tpath + 2);        /* skip drive letter */
-       else
-               strcpy(outPathp, tpath);                /* copy entire UNC path */
+       else if ( tpath[0] == '\\' && tpath[1] == '\\') {
+        /* UNC path - strip off the server and sharename */
+        int i, count;
+        for ( i=2,count=2; count < 4 && tpath[i]; i++ ) {
+            if ( tpath[i] == '\\' || tpath[i] == '/' ) {
+                count++;
+            }
+        }
+        if ( tpath[i] == 0 ) {
+            strcpy(outPathp,"\\");
+        } else {
+            strcpy(outPathp,&tpath[--i]);
+        }
+    } else {
+        /* this should never happen */
+        strcpy(outPathp, tpath);
+    }
+
     /* if there is a non-null name after the drive, append it */
     if (*firstp != 0) {
                int len = strlen(outPathp);