Johannes Schindelin <johannes.schindelin@xxxxxx> writes: > According to POSIX, basename("/path/") should return "path", not > "path/". Likewise, basename(NULL) and basename("abc") should both > return ".". Did you mean basename("abc"), not basename(""), here? > Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx> > --- > compat/basename.c | 20 +++++++++++++++++--- > 1 file changed, 17 insertions(+), 3 deletions(-) > > diff --git a/compat/basename.c b/compat/basename.c > index 9f00421..0f1b0b0 100644 > --- a/compat/basename.c > +++ b/compat/basename.c > @@ -4,10 +4,24 @@ > char *gitbasename (char *path) > { > const char *base; > - skip_dos_drive_prefix(&path); > + > + if (path) > + skip_dos_drive_prefix(&path); > + > + if (!path || !*path) > + return "."; > + > for (base = path; *path; path++) { > - if (is_dir_sep(*path)) > - base = path + 1; > + if (!is_dir_sep(*path)) > + continue; > + do { > + path++; > + } while (is_dir_sep(*path)); > + if (*path) > + base = path; > + else > + while (--path != base && is_dir_sep(*path)) > + *path = '\0'; > } > return (char *)base; > } -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html