unc-paths-current-directory-20040727

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.)
This commit is contained in:
Jeffrey Altman 2004-07-28 04:54:19 +00:00 committed by Jeffrey Altman
parent 49fb21afc5
commit b20129a337

View File

@ -309,8 +309,24 @@ fs_GetFullPath(char *pathp, char *outPathp, long outSize)
GetCurrentDirectory(sizeof(tpath), tpath); GetCurrentDirectory(sizeof(tpath), tpath);
if (tpath[1] == ':') if (tpath[1] == ':')
strcpy(outPathp, tpath + 2); /* skip drive letter */ strcpy(outPathp, tpath + 2); /* skip drive letter */
else else if ( tpath[0] == '\\' && tpath[1] == '\\') {
strcpy(outPathp, tpath); /* copy entire UNC path */ /* 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 there is a non-null name after the drive, append it */
if (*firstp != 0) { if (*firstp != 0) {
int len = strlen(outPathp); int len = strlen(outPathp);