1 #include "../git-compat-util.h"
4 /* Adapted from libiberty's basename.c. */
5 char *gitbasename (char *path
)
10 skip_dos_drive_prefix(&path
);
15 for (base
= path
; *path
; path
++) {
16 if (!is_dir_sep(*path
))
20 } while (is_dir_sep(*path
));
24 while (--path
!= base
&& is_dir_sep(*path
))
30 char *gitdirname(char *path
)
32 static struct strbuf buf
= STRBUF_INIT
;
33 char *p
= path
, *slash
= NULL
, c
;
39 if ((dos_drive_prefix
= skip_dos_drive_prefix(&p
)) && !*p
)
43 * POSIX.1-2001 says dirname("/") should return "/", and dirname("//")
44 * should return "//", but dirname("///") should return "/" again.
47 if (!p
[1] || (is_dir_sep(p
[1]) && !p
[2]))
53 char *tentative
= p
- 1;
55 /* POSIX.1-2001 says to ignore trailing slashes */
56 while (is_dir_sep(*p
))
69 strbuf_addf(&buf
, "%.*s.", dos_drive_prefix
, path
);