diff: fix "diff dir1 dir2/". Closes bug 2203
No binary (build failed)
—
(log yok)
| @@ -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; | |
| } | |
| @@ -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 | |