diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/dirname.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/dirname.c b/lib/dirname.c index 483c33867..cf62de7a0 100644 --- a/lib/dirname.c +++ b/lib/dirname.c @@ -57,8 +57,17 @@ dir_name (const char *path) else { /* Remove any trailing slashes from the result. */ +#ifdef MSDOS + char *lim = (path[0] >= 'A' && path[0] <= 'z' && path[1] == ':') + ? path + 2 : path; + + /* If canonicalized "d:/path", leave alone the root case "d:/". */ + while (slash > lim && *slash == '/') + --slash; +#else while (slash > path && *slash == '/') --slash; +#endif length = slash - path + 1; } |