jmacd / xdelta

open-source binary diff, delta/differential compression tools, VCDIFF/RFC 3284 delta compression
http://xdelta.org
1.1k stars 184 forks source link

stream source via stdin when decompressing? #221

Open mpvader opened 8 years ago

mpvader commented 8 years ago

Hi!

I have an embedded system where the source files that I want to decompress with xdelta3 are stored in a cpio archive. Extracting those files first requires a lot of (temporary) diskspace. cpio can output the files one by one to stdout instead of writing to disk.

Therefore I am trying to get the decompress command to read the source from stdin. But I can't get it to work:

$ xdelta3 -d -c ./out < ./source > ./target
xdelta3: using default source filename: ./my-file-name.vfat
xdelta3: file open failed: read: ./my-file-name.vfat: No such file or directory

Streaming the out file via stdin works fine:

xdelta3 -d -c -s ./source < ./out > ./target

But is not really useful in this case, as obviously the out file is the small one, and the source file is the large one and therefore the one I'd like to stream.

The Command Line syntax writes this: "Without -s SOURCE, xdelta3 behaves like gzip for stdin/stdout purposes."

Does that mean streaming the source file is possible in a certain way when decompressing? How?

thanks, Matthijs

i30817 commented 6 years ago

isn't the '-' flag usually used for this in supported apps? Problem obviously is that xdelta needs two files of input. It can be done in bash with process substitution iirc though (but in code... well, nope).