The parent path computation was leaving trailing slashes on the
path names which prevented the creation of mount points and symlinks
when UNC paths were used that contained mount points.
LICENSE MIT
Reviewed-on: http://gerrit.openafs.org/2886
Tested-by: Jeffrey Altman <jaltman@openafs.org>
Reviewed-by: Rod Widdowson <rdw@steadingsoftware.com>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
(cherry picked from commit
6ad0e5b529dbfd7a2401a0622eb4ea5269124ceb)
Change-Id: I55e67817c019dceab045973171bd53db468dfc2c
Reviewed-on: http://gerrit.openafs.org/3043
Tested-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
}
tp = strrchr(tspace, '\\');
if (tp) {
- *(tp+1) = 0; /* lv trailing slash so Parent("k:\foo") is "k:\" not "k:" */
+ if (tp - tspace > 2 &&
+ tspace[1] == ':' &&
+ &tspace[2] == tp)
+ *(tp+1) = 0; /* lv trailing slash so Parent("k:\foo") is "k:\" not "k:" */
+ else
+ *tp = 0;
}
else {
fs_ExtractDriveLetter(apath, tspace);
}
/* return a static pointer to a buffer */
-static char *Parent(apath)
-char *apath; {
+static char *Parent(char *apath)
+{
char *tp;
strcpy(tspace, apath);
tp = strrchr(tspace, '\\');
if (tp) {
- *(tp+1) = 0; /* lv trailing slash so Parent("k:\foo") is "k:\" not "k:" */
+ if (tp - tspace > 2 &&
+ tspace[1] == ':' &&
+ &tspace[2] == tp)
+ *(tp+1) = 0; /* lv trailing slash so Parent("k:\foo") is "k:\" not "k:" */
+ else
+ *tp = 0;
}
else {
fs_ExtractDriveLetter(apath, tspace);