- char *slash;
- int length; /* Length of result, not including NUL. */
-
- slash = strrchr (path, '/');
- if (BACKSLASH_IS_PATH_SEPARATOR)
- {
- char *b = strrchr (path, '\\');
- if (b && slash < b)
- slash = b;
- }
-
- /* If the last byte of PATH is a slash, decrement SLASH until it's
- pointing at the leftmost in a sequence of trailing slashes. */
- if (slash && slash[1] == 0)
- {
- while (path < slash && ISSLASH (slash[-1]))
- {
- --slash;
- }
-
- if (path < slash)
- {
- slash = memrchr (path, '/', slash - path);
- if (BACKSLASH_IS_PATH_SEPARATOR)
- {
- char *b = memrchr (path, '\\', slash - path);
- if (b && slash < b)
- slash = b;
- }
- }
- }