wow, i was convinced i didn't write that and it must have been something you did, but `git blame` disagrees.
hmm... it looks like what happened was that i was trying to preserve the old use of hd(1)? see the minus lines at the top of this diff: -export BLOCKS=3 -SUM='head -c $(($BLOCKS*512)) | sha1sum | sed "s/ .*//"' -[ -n "$TARHD" ] && SUM="tee >(hd >&2) | $SUM" + +# Also amount of trailing NUL padding varies (1024 bytes is minimum, +# gnu/dammit does more) so look at first N 512-byte frames when +# analyzing header content. +function SUM() +{ + if [ -n "$TARHD" ]; then + # (Android's shell doesn't support process substitution.) + mkfifo xxd-pipe + xxd <xxd-pipe & pid=$! + tee xxd-pipe | head -c $(($1*512)) | sha1sum | sed "s/ .*//" + rm xxd-pipe + wait $pid + else + head -c $(($1*512)) | sha1sum | sed "s/ .*//" + fi +} but, yeah, afaict this is just an overly-literal translation of the old test into something that still works on Android. i think a temporary file in a snapshot would be fine. (in fact preferable, because my checkin comment complains that i wish i'd known about TARHD while trying to debug the tar tests. with a temporary file and stop on error, i wouldn't have needed to learn anything.) On Mon, Aug 16, 2021 at 11:37 PM Rob Landley <r...@landley.net> wrote: > I hit a transient tar bug (https://landley.net/notes-2021.html#06-08-2021) > I > couldn't reproduce so I'm trying to redo the SUM plumbing in tar to save a > snapshot of the raw data and it seems like the OBVIOUS thing to do would > be: > > function SUM() > { > tee save.dat | head -c $(($1*512)) | sha1sum | sed "s/ .*//" > } > > But right NOW it looks like: > > function SUM() > { > if [ -n "$TARHD" ]; then > # (Android's shell doesn't support process substitution.) > mkfifo xxd-pipe > xxd <xxd-pipe & pid=$! > tee xxd-pipe | head -c $(($1*512)) | sha1sum | sed "s/ .*//" > rm xxd-pipe > wait $pid > else > head -c $(($1*512)) | sha1sum | sed "s/ .*//" > fi > } > > And... is this actually used, or can it go if I save a snapshot of the > data for > later analysis in the "stop when you hit an error" mode which is now the > default? > > Rob >
_______________________________________________ Toybox mailing list Toybox@lists.landley.net http://lists.landley.net/listinfo.cgi/toybox-landley.net