On Fri, May 29, 2009 at 03:55:37PM -0400, Jeff King wrote: > On Thu, May 28, 2009 at 05:49:24PM -0700, David Aguilar wrote: > > > @@ -1964,8 +1964,24 @@ static void prep_temp_blob(const char *path, struct diff_tempfile *temp, > > { > > int fd; > > struct strbuf buf = STRBUF_INIT; > > + struct strbuf template = STRBUF_INIT; > > + char *basename = ((char*)path) + strlen(path) - 1; > > Why do you drop constness in this assignment? That was a mistake. > > + /* Windows lacks basename() */ > > + while(*basename && basename > path) { > > + basename--; > > + if (is_dir_sep(*basename)) { > > + basename++; > > + break; > > + } > > + } > > This is such an easily-factorable bit, maybe it makes sense to add as > basename() in compat/? I would feel a little better calling it git_basename(const char *) and keeping it in path.c (or another name if basename is no good) The reason is from the manpage for basename: "Both dirname() and basename() may modify the contents of path, so it may be desirable to pass a copy when calling one of these functions." The above snippet is much simpler and does not have that restriction since we can guarantee const-ness. All this version cares about is being able to find the last dir_sep and returning a pointer. What do you think? -- David -- 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