- char *newpath;
- char *slash;
- int length; /* Length of result, not including NUL. */
-
- slash = strrchr (path, '/');
- if (slash == 0)
- {
- /* File is in the current directory. */
- path = ".";
- length = 1;
- }
- 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;
- }
- newpath = (char *) malloc (length + 1);
- if (newpath == 0)
- return 0;
- strncpy (newpath, path, length);
- newpath[length] = 0;
- return newpath;