From: Matheus Izvekov Date: Fri, 9 Jul 2010 17:40:00 +0000 (+0200) Subject: diff: fix "diff dir1 dir2/". Closes bug 2203 X-Git-Tag: 1_18_0~436 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=61f5f7823c4f217dd9bad2f1df547f81b9338c76;p=oweals%2Fbusybox.git diff: fix "diff dir1 dir2/". Closes bug 2203 Signed-off-by: Matheus Izvekov Signed-off-by: Denys Vlasenko --- diff --git a/editors/diff.c b/editors/diff.c index 07594e8d8..8d91b83bf 100644 --- a/editors/diff.c +++ b/editors/diff.c @@ -760,9 +760,11 @@ static int FAST_FUNC add_to_dirlist(const char *filename, void *userdata, int depth UNUSED_PARAM) { struct dlist *const l = userdata; + const char *file = filename + l->len; l->dl = xrealloc_vector(l->dl, 6, l->e); - /* + 1 skips "/" after dirname */ - l->dl[l->e] = xstrdup(filename + l->len + 1); + while(*file == '/') + file++; + l->dl[l->e] = xstrdup(file); l->e++; return TRUE; } diff --git a/testsuite/diff.tests b/testsuite/diff.tests index 06d5a4fd7..27a4b33a7 100755 --- a/testsuite/diff.tests +++ b/testsuite/diff.tests @@ -4,7 +4,7 @@ . ./testing.sh -# testing "test name" "options" "expected result" "file input" "stdin" +# testing "test name" "commands" "expected result" "file input" "stdin" # diff outputs date/time in the header, which should not be analysed # NB: sed has tab character in s command! @@ -100,9 +100,11 @@ testing "diff always takes context from old file" \ "abc\na c\ndef\n" \ "a c\n" -# testing "test name" "options" "expected result" "file input" "stdin" +# testing "test name" "commands" "expected result" "file input" "stdin" +# clean up rm -rf diff1 diff2 + mkdir diff1 diff2 diff2/subdir echo qwe >diff1/- echo asd >diff2/subdir/- @@ -187,4 +189,29 @@ SKIP= # clean up rm -rf diff1 diff2 +# NOT using directory structure from prev test... +mkdir diff1 diff2 +echo qwe >diff1/- +echo rty >diff2/- +optional FEATURE_DIFF_DIR +testing "diff diff1 diff2/" \ + "diff -ur diff1 diff2/ | $TRIM_TAB; diff -ur .///diff1 diff2//// | $TRIM_TAB" \ +"\ +--- diff1/- ++++ diff2/- +@@ -1 +1 @@ +-qwe ++rty +--- .///diff1/- ++++ diff2////- +@@ -1 +1 @@ +-qwe ++rty +" \ + "" "" +SKIP= + +# clean up +rm -rf diff1 diff2 + exit $FAILCOUNT