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);
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);