Re: [PATCH v4 2/2] diff: generate pretty filenames in prep_temp_blob()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]