/* -L makes sense only with -o or -p */
#if !ENABLE_FEATURE_CPIO_O
+ /* no parameters */
+ opt_complementary = "=0";
opt = getopt32(argv, OPTION_STR, &cpio_filename);
#else
+ /* _exactly_ one parameter for -p, thus <= 1 param if -p is allowed */
+ opt_complementary = ENABLE_FEATURE_CPIO_P ? "?1" : "=0";
opt = getopt32(argv, OPTION_STR "oH:" IF_FEATURE_CPIO_P("p"), &cpio_filename, &cpio_fmt);
argv += optind;
if (opt & CPIO_OPT_PASSTHROUGH) {
xchdir(*argv++);
close(pp.wr);
xmove_fd(pp.rd, STDIN_FILENO);
- opt &= ~CPIO_OPT_PASSTHROUGH;
+ //opt &= ~CPIO_OPT_PASSTHROUGH;
opt |= CPIO_OPT_EXTRACT;
goto skip;
}
/* -o */
if (opt & CPIO_OPT_CREATE) {
- if (*cpio_fmt != 'n') /* we _require_ "-H newc" */
+ if (cpio_fmt[0] != 'n') /* we _require_ "-H newc" */
bb_show_usage();
if (opt & CPIO_OPT_FILE) {
xmove_fd(xopen3(cpio_filename, O_WRONLY | O_CREAT | O_TRUNC, 0666), STDOUT_FILENO);
if (archive_handle->filter(archive_handle) == EXIT_SUCCESS) {
archive_handle->action_data(archive_handle);
+//TODO: run "echo /etc/hosts | cpio -pv /tmp" twice. On 2nd run:
+//cpio: etc/hosts not created: newer or same age file exists
+//etc/hosts <-- should NOT show it
+//2 blocks <-- should say "0 blocks"
archive_handle->action_header(file_header);
} else {
data_skip(archive_handle);
void FAST_FUNC header_list(const file_header_t *file_header)
{
+//TODO: cpio -vp DIR should output "DIR/NAME", not just "NAME" */
puts(file_header->name);
}
"\n -l,-s Create (sym)links" \
#define cpio_trivial_usage \
- "-[ti" IF_FEATURE_CPIO_O("o") IF_FEATURE_CPIO_P("p") "dmvu] [-F FILE]" \
- IF_FEATURE_CPIO_O( " [-H newc]" )
+ "[-ti" IF_FEATURE_CPIO_O("o") "]" IF_FEATURE_CPIO_P(" [-p DIR]") \
+ " [-dmvu] [-F FILE]" IF_FEATURE_CPIO_O(" [-H newc]")
#define cpio_full_usage "\n\n" \
"Extract or list files from a cpio archive" \
- IF_FEATURE_CPIO_O( ", or create a cpio archive" ) \
+ IF_FEATURE_CPIO_O(", or" \
+ "\ncreate an archive" IF_FEATURE_CPIO_P(" (-o) or copy files (-p)") \
+ " using file list on standard input" \
+ ) \
+ "\n" \
"\nMain operation mode:" \
"\n -t List" \
"\n -i Extract" \
"\n -o Create" \
) \
IF_FEATURE_CPIO_P( \
- "\n -p Passthrough" \
+ "\n -p DIR Copy files to DIR" \
) \
"\nOptions:" \
"\n -d Make leading directories" \