I found this discrepancy surprising:

$ find /bin -print | cpio -o -Hustar >foo
$ file foo
foo: POSIX tar archive
$ find /bin -print | cpio -Hustar -o >foo 
$ file foo                                
foo: ASCII cpio archive (SVR4 with CRC)

The argument order should not matter here.

Fix: When processing the -o switch, only set the archive format if
not already set.

ok?

Index: bin/pax/options.c
===================================================================
RCS file: /cvs/src/bin/pax/options.c,v
retrieving revision 1.102
diff -u -p -r1.102 options.c
--- bin/pax/options.c   13 Sep 2018 12:33:43 -0000      1.102
+++ bin/pax/options.c   14 Nov 2019 20:59:04 -0000
@@ -1226,7 +1226,8 @@ cpio_options(int argc, char **argv)
                                 * create an archive
                                 */
                                act = ARCHIVE;
-                               frmt = &(fsub[F_CPIO]);
+                               if (frmt == NULL)
+                                       frmt = &(fsub[F_CPIO]);
                                break;
                        case 'p':
                                /*
-- 
Christian "naddy" Weisgerber                          na...@mips.inka.de

Reply via email to