[PATCH] diff: strip trailing / on dirs
Denys Vlasenko
vda.linux at googlemail.com
Fri Jul 9 17:40:56 UTC 2010
On Friday 09 July 2010 17:46, Matheus Izvekov wrote:
> On 09:40 Fri 09 Jul , Natanael Copa wrote:
> > fixes #2203
> > https://bugs.busybox.net/show_bug.cgi?id=2203
> > ---
> > editors/diff.c | 6 ++++++
> > 1 files changed, 6 insertions(+), 0 deletions(-)
> >
> > diff --git a/editors/diff.c b/editors/diff.c
> > index 07594e8..e2da626 100644
> > --- a/editors/diff.c
> > +++ b/editors/diff.c
> > @@ -788,9 +788,15 @@ static void diffdir(char *p[2], const char *s_start)
> >
> > memset(&list, 0, sizeof(list));
> > for (i = 0; i < 2; i++) {
> > + char *lc;
> > /*list[i].s = list[i].e = 0; - memset did it */
> > /*list[i].dl = NULL; */
> >
> > + /* trim trailing / in dirs. */
> > + lc = last_char_is(p[i], '/');
> > + if (lc && lc != p[i])
> > + *lc = '\0';
> > +
> > /* We need to trim root directory prefix.
> > * Using list.len to specify its length,
> > * add_to_dirlist will remove it. */
> > --
> > 1.7.1.1
> >
> > _______________________________________________
> > busybox mailing list
> > busybox at busybox.net
> > http://lists.busybox.net/mailman/listinfo/busybox
>
> Thanks for reporting that bug!
> Besides stripping only one slash, as Bernhard pointed out, the
> problem with this patch is that it directly modifiles the file names
> stored in argv, so in case the files do differ, the headers are wrong.
> Consider this output from gnu diff:
> % diff -ur diff1 diff2/////
> diff -ur diff1/test diff2//////test
> --- diff1/test 2010-07-09 12:26:55.248987189 -0300
> +++ diff2//////test 2010-07-09 11:26:08.454402145 -0300
>
> Notice the slashes are preserved in the header.
>
> The patch below should fix the issue properly, but please do test!
Applied, thanks!
--
vda
More information about the busybox
mailing list