From 06ab5fb6b9d641ee184facb81eaee718e418d9b2 Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Sat, 2 Sep 2006 18:40:10 +0000 Subject: [PATCH] tar: tar xf foo.tar dir/dir did not extract all subdirs. Added testsuite entry for this --- archival/libunarchive/find_list_entry.c | 2 +- testsuite/README | 3 +++ testsuite/tar/tar-extracts-all-subdirs | 12 ++++++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 testsuite/tar/tar-extracts-all-subdirs diff --git a/archival/libunarchive/find_list_entry.c b/archival/libunarchive/find_list_entry.c index 49bdd2d..57ffec6 100644 --- a/archival/libunarchive/find_list_entry.c +++ b/archival/libunarchive/find_list_entry.c @@ -13,7 +13,7 @@ const llist_t *find_list_entry(const llist_t *list, const char *filename) { while (list) { - if (fnmatch(list->data, filename, 0) == 0) { + if (fnmatch(list->data, filename, FNM_LEADING_DIR) == 0) { return (list); } list = list->link; diff --git a/testsuite/README b/testsuite/README index 40439bf..377f20e 100644 --- a/testsuite/README +++ b/testsuite/README @@ -1,3 +1,6 @@ +Update: doesn't work as described. Try "make check" from parent dir... +* * * + To run the test suite, change to this directory and run "./runtest". It will run all of the test cases, and list those with unexpected outcomes. Adding the -v option will cause it to show expected outcomes as well. To only run the test diff --git a/testsuite/tar/tar-extracts-all-subdirs b/testsuite/tar/tar-extracts-all-subdirs new file mode 100644 index 0000000..886c37c --- /dev/null +++ b/testsuite/tar/tar-extracts-all-subdirs @@ -0,0 +1,12 @@ +# FEATURE: CONFIG_FEATURE_TAR_CREATE +mkdir -p foo/{1,2,3} +mkdir -p foo/1/{10,11} +mkdir -p foo/1/10/{100,101,102} +tar cf foo.tar -C foo . +rm -rf foo/* +busybox tar xf foo.tar -C foo ./1/10 +find foo | sort >logfile.bb +rm -rf foo/* +tar xf foo.tar -C foo ./1/10 +find foo | sort >logfile.gnu +cmp logfile.gnu logfile.bb -- 2.7.4