here's the same test rebased on top of my previous test, which was committed in the meantime...
On Sun, Sep 15, 2019 at 11:01 AM enh <[email protected]> wrote: > > (you beat me getting back to this...) > > On Sun, Sep 15, 2019 at 12:18 AM Rob Landley <[email protected]> wrote: > > > > On 9/13/19 8:17 PM, Rob Landley wrote: > > > I think what we need to do is add up the segments. (Which is what I > > > thought it > > > _was_ doing, but my head cold has turned into dizzy+headache and I has a > > > tired.) > > > > > > I can fix this when I feel better if you don't get to it. > > > > I pushed a patch. It only calls truncate() when it hits a zero length > > segment > > (and only when lseek() didn't fail, so writing to a nonseekable output > > shouldn't > > gratuitously fail at the truncate) > > (yeah, i hadn't thought about anything other than regular files.) > > >, and it uses the last offset+length as a > > sparse file as the display length. > > > > I think that fixes it? > > it fixes extraction, yes. i can confirm that i get the same results > for the motivating tar files with GNU and toybox tar now. > > but if you try the attached patch which adds a test for a sparse file > with a hole at the end, it passes with TEST_HOST=1 but fails otherwise > because i don't think we're adding the final entry? > > > Rob
From 231cfab7c1f243e7a57657e5eebd196565dd6276 Mon Sep 17 00:00:00 2001 From: Elliott Hughes <[email protected]> Date: Mon, 16 Sep 2019 15:21:08 -0700 Subject: [PATCH] tar.test: add a test for a sparse file with a hole at the end. --- tests/tar.test | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/tests/tar.test b/tests/tar.test index aacf2466..235c3160 100644 --- a/tests/tar.test +++ b/tests/tar.test @@ -222,19 +222,29 @@ rm fweep for i in $(seq 8 3 200) do dd if=/dev/zero of=fweep bs=65536 seek=$i count=1 2>/dev/null + dd if=/dev/zero of=fweep2 bs=65536 seek=$i count=1 2>/dev/null done +truncate -s 20m fweep2 testing "sparse double overflow" "$TAR --sparse fweep | SUM 7" \ "f1fe57f8313a9d682ec9013a80f3798910b6ff51\n" "" "" tar c --sparse fweep > fweep.tar -FWEEP=$(du fweep) +FWEEP=$(stat -c "%b %s" fweep) rm fweep -testing "sparse extract" "tar xf fweep.tar && du fweep" "$FWEEP\n" "" "" +testing "sparse extract" "tar xf fweep.tar && stat -c '%b %s' fweep" \ + "$FWEEP\n" "" "" testing "sparse tvf" "tar tvf fweep.tar | grep -wq 13172736 && echo right size"\ "right size\n" "" "" rm fweep fweep.tar +tar c --sparse fweep2 > fweep2.tar +FWEEP=$(stat -c "%b %s" fweep2) +rm fweep2 +testing "sparse extract hole at end" \ + "tar xf fweep2.tar && stat -c '%b %s' fweep2" "$FWEEP\n" "" "" +rm fweep2 fweep2.tar + if false then -- 2.23.0.237.gc6a4ce50a0-goog
_______________________________________________ Toybox mailing list [email protected] http://lists.landley.net/listinfo.cgi/toybox-landley.net
