aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatheus Izvekov <mizvekov@gmail.com>2010-07-09 19:40:00 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2010-07-09 19:40:00 +0200
commit61f5f7823c4f217dd9bad2f1df547f81b9338c76 (patch)
tree3175e3e36be86c6cbd5534f17c40eb10caf039a4
parent1883cb174619cfc90ca86da08598f470d3a11315 (diff)
downloadbusybox-w32-61f5f7823c4f217dd9bad2f1df547f81b9338c76.tar.gz
busybox-w32-61f5f7823c4f217dd9bad2f1df547f81b9338c76.tar.bz2
busybox-w32-61f5f7823c4f217dd9bad2f1df547f81b9338c76.zip
diff: fix "diff dir1 dir2/". Closes bug 2203
Signed-off-by: Matheus Izvekov <mizvekov@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--editors/diff.c6
-rwxr-xr-xtestsuite/diff.tests31
2 files changed, 33 insertions, 4 deletions
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,
760 void *userdata, int depth UNUSED_PARAM) 760 void *userdata, int depth UNUSED_PARAM)
761{ 761{
762 struct dlist *const l = userdata; 762 struct dlist *const l = userdata;
763 const char *file = filename + l->len;
763 l->dl = xrealloc_vector(l->dl, 6, l->e); 764 l->dl = xrealloc_vector(l->dl, 6, l->e);
764 /* + 1 skips "/" after dirname */ 765 while(*file == '/')
765 l->dl[l->e] = xstrdup(filename + l->len + 1); 766 file++;
767 l->dl[l->e] = xstrdup(file);
766 l->e++; 768 l->e++;
767 return TRUE; 769 return TRUE;
768} 770}
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 @@
4 4
5. ./testing.sh 5. ./testing.sh
6 6
7# testing "test name" "options" "expected result" "file input" "stdin" 7# testing "test name" "commands" "expected result" "file input" "stdin"
8 8
9# diff outputs date/time in the header, which should not be analysed 9# diff outputs date/time in the header, which should not be analysed
10# NB: sed has tab character in s command! 10# NB: sed has tab character in s command!
@@ -100,9 +100,11 @@ testing "diff always takes context from old file" \
100 "abc\na c\ndef\n" \ 100 "abc\na c\ndef\n" \
101 "a c\n" 101 "a c\n"
102 102
103# testing "test name" "options" "expected result" "file input" "stdin" 103# testing "test name" "commands" "expected result" "file input" "stdin"
104 104
105# clean up
105rm -rf diff1 diff2 106rm -rf diff1 diff2
107
106mkdir diff1 diff2 diff2/subdir 108mkdir diff1 diff2 diff2/subdir
107echo qwe >diff1/- 109echo qwe >diff1/-
108echo asd >diff2/subdir/- 110echo asd >diff2/subdir/-
@@ -187,4 +189,29 @@ SKIP=
187# clean up 189# clean up
188rm -rf diff1 diff2 190rm -rf diff1 diff2
189 191
192# NOT using directory structure from prev test...
193mkdir diff1 diff2
194echo qwe >diff1/-
195echo rty >diff2/-
196optional FEATURE_DIFF_DIR
197testing "diff diff1 diff2/" \
198 "diff -ur diff1 diff2/ | $TRIM_TAB; diff -ur .///diff1 diff2//// | $TRIM_TAB" \
199"\
200--- diff1/-
201+++ diff2/-
202@@ -1 +1 @@
203-qwe
204+rty
205--- .///diff1/-
206+++ diff2////-
207@@ -1 +1 @@
208-qwe
209+rty
210" \
211 "" ""
212SKIP=
213
214# clean up
215rm -rf diff1 diff2
216
190exit $FAILCOUNT 217exit $FAILCOUNT