Whoops. blkoff was getting set in the wrong place, overwriting the old archive contents under `tar rf'. Reference: /n/sources/patch/applied/tar-r-fix Date: Sat Nov 12 21:32:41 CET 2005 --- /sys/src/cmd/tar.c Sat Nov 12 21:32:06 2005 +++ /sys/src/cmd/tar.c Sat Nov 12 21:32:01 2005 @@ -248,9 +248,9 @@ if (first) seekable = seek(ar, 0, 1) >= 0; + blkoff = seek(ar, 0, 1); /* note position for `tar r' */ /* try to size non-pipe input at first read */ if (first && usefile) { - blkoff = seek(ar, 0, 1); /* note position */ n = read(ar, bufs, bytes); if (n <= 0) sysfatal("error reading archive: %r");