diff options
author | Isaac Dunham <ibid.ag@gmail.com> | 2013-11-16 10:37:49 -0600 |
---|---|---|
committer | Isaac Dunham <ibid.ag@gmail.com> | 2013-11-16 10:37:49 -0600 |
commit | 59272f2019b6f1a5b984fa2bbf36f9c0174b4dcb (patch) | |
tree | e8d5a9f00376d44382161ff3b9de526763835721 /toys/pending | |
parent | dcf52cbf25572b001e1b8d5f0091e5559b662b07 (diff) | |
download | toybox-59272f2019b6f1a5b984fa2bbf36f9c0174b4dcb.tar.gz |
Support -F, and ignore -u since that's what we do anyway.
(Really, checking the original file date is the Right Thing, but I
haven't written it yet.)
Diffstat (limited to 'toys/pending')
-rw-r--r-- | toys/pending/cpio.c | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/toys/pending/cpio.c b/toys/pending/cpio.c index 5608e97c..802dc33a 100644 --- a/toys/pending/cpio.c +++ b/toys/pending/cpio.c @@ -2,25 +2,33 @@ * * Written 2013 AD by Isaac Dunham; this code is placed under the * same license as toybox or as CC0, at your option. -USE_CPIO(NEWTOY(cpio, "H:iot", TOYFLAG_BIN)) + * + * http://refspecs.linuxfoundation.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic/cpio.html + * + * http://pubs.opengroup.org/onlinepubs/7908799/xcu/cpio.html + +USE_CPIO(NEWTOY(cpio, "H:iotuF:", TOYFLAG_BIN)) config CPIO bool "cpio" default n help - usage: cpio { -i | -o | -t } [-H fmt] + usage: cpio { -iu | -o | -t } [-H FMT] [-F ARCHIVE] copy files into and out of an archive -i extract from archive into file system (stdin is an archive) -o create archive (stdin is a list of files, stdout is an archive) -t list files (stdin is an archive, stdout is a list of files) - -H fmt Write archive in specified format: + -u always overwrite files (current default) + -H FMT write archive in specified format: newc SVR4 new character format (default) + -F ARCHIVE read from or write to ARCHIVE */ #define FOR_cpio #include "toys.h" GLOBALS( +char * archive; char * fmt; ) @@ -217,6 +225,16 @@ void read_cpio_archive(int fd, int how) void cpio_main(void) { + if (TT.archive) { + if (toys.optflags & (FLAG_i|FLAG_t)) { + xclose(0); + xopen(TT.archive, O_RDONLY); + } else if (toys.optflags & FLAG_o) { + xclose(1); + xcreate(TT.archive, O_CREAT|O_WRONLY|O_TRUNC, 0755); + } + } + switch (toys.optflags & (FLAG_i | FLAG_o | FLAG_t)) { case FLAG_o: loopfiles_stdin(write_cpio_member); |