On 8/15/22 18:50, enh via Toybox wrote: > and here's their minimized repro case: > > echo > /tmp/foo.txt; echo /tmp/foo.txt > /tmp/find.txt > > cat /tmp/find.txt | prebuilts/build-tools/path/linux-x86/tar czf > /tmp/out.tar.gz \ > --absolute-names \ > --transform 's,^/,,' -T - > > This fails with > > tar: bad xform
Hmmm... $ echo > /tmp/foo.txt; echo /tmp/foo.txt > /tmp/find.txt $ cat /tmp/find.txt | PATH=$PWD/sub9:$PATH ./tar czf out.tar.gz \ --absolute-names --transform 's,^/,,' -T - $ tar tvf /tmp/out.tar.gz -rw-r--r-- landley/landley 1 2022-08-16 01:53 tmp/foo.txt Working for me? (The sub9 bit was because I stuck toybox sed in the $PATH to make sure that wasn't it...) > However, if the file names are fed via the -T /tmp/find.txt, it works: Hmmm... the child process shouldn't have access to the parent's stdin, we replaced it with a pipe? There was a potential bug in that area, but commit dc8b46d5ddab should have fixed it last month and I don't _think_ it would have applied here anyway... > echo > /tmp/foo.txt; echo /tmp/foo.txt > /tmp/find.txt > > prebuilts/build-tools/path/linux-x86/tar czf /tmp/out.tar.gz \ > --absolute-names \ > --transform 's,^/,,' -T /tmp/find.txt > > (the "prebuilts/build-tools/path/linux-x86/" stuff is just a directory full of > symlinks to toybox.) Multiplexer instead of standalone build shouldn't make a difference if you've disabled command recursion. (Modulo you're calling tar out a specific path but it then grabs sed out of the $PATH, but I haven't yet implemented the extra argument processing that would specifically require toybox sed...) (The extra error message is a little tricker than my first guess because you can have multiple --xform things which turn into a list of -e entries to sed... Possibly instead of error_exit() I should error_msg(), dump the sed command line on a second line, and then xexit()...) Rob _______________________________________________ Toybox mailing list Toybox@lists.landley.net http://lists.landley.net/listinfo.cgi/toybox-landley.net