cpio: add support for --ignore-devno like GNU cpio
The --ignore-devno option is used to set device numbers to (0, 0). This can be useful in verifying whether a CPIO archive is reproducible. function old new delta cpio_o 922 961 +39 .rodata 78407 78422 +15 bbconfig_config_bz2 6161 6167 +6 packed_usage 25770 25764 -6 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 3/1 up/down: 60/-6) Total: 54 bytes Signed-off-by: Ariadne Conill <ariadne@dereferenced.org> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
aaf3d5ba74
commit
8aa5585ff4
@ -38,6 +38,13 @@
|
|||||||
//config: depends on FEATURE_CPIO_O
|
//config: depends on FEATURE_CPIO_O
|
||||||
//config: help
|
//config: help
|
||||||
//config: Passthrough mode. Rarely used.
|
//config: Passthrough mode. Rarely used.
|
||||||
|
//config:
|
||||||
|
//config:config FEATURE_CPIO_IGNORE_DEVNO
|
||||||
|
//config: bool "Support --ignore-devno like GNU cpio"
|
||||||
|
//config: default y
|
||||||
|
//config: depends on FEATURE_CPIO_O && LONG_OPTS
|
||||||
|
//config: help
|
||||||
|
//config: Optionally ignore device numbers when creating archives.
|
||||||
|
|
||||||
//applet:IF_CPIO(APPLET(cpio, BB_DIR_BIN, BB_SUID_DROP))
|
//applet:IF_CPIO(APPLET(cpio, BB_DIR_BIN, BB_SUID_DROP))
|
||||||
|
|
||||||
@ -75,6 +82,9 @@
|
|||||||
//usage: "\n -R USER[:GRP] Set owner of created files"
|
//usage: "\n -R USER[:GRP] Set owner of created files"
|
||||||
//usage: "\n -L Dereference symlinks"
|
//usage: "\n -L Dereference symlinks"
|
||||||
//usage: "\n -0 NUL terminated input"
|
//usage: "\n -0 NUL terminated input"
|
||||||
|
//usage: IF_FEATURE_CPIO_IGNORE_DEVNO(
|
||||||
|
//usage: "\n --ignore-devno"
|
||||||
|
//usage: )
|
||||||
|
|
||||||
/* GNU cpio 2.9 --help (abridged):
|
/* GNU cpio 2.9 --help (abridged):
|
||||||
|
|
||||||
@ -162,11 +172,13 @@ enum {
|
|||||||
IF_FEATURE_CPIO_P(OPTBIT_PASSTHROUGH,)
|
IF_FEATURE_CPIO_P(OPTBIT_PASSTHROUGH,)
|
||||||
IF_LONG_OPTS( OPTBIT_QUIET ,)
|
IF_LONG_OPTS( OPTBIT_QUIET ,)
|
||||||
IF_LONG_OPTS( OPTBIT_2STDOUT ,)
|
IF_LONG_OPTS( OPTBIT_2STDOUT ,)
|
||||||
|
IF_FEATURE_CPIO_IGNORE_DEVNO(OPTBIT_IGNORE_DEVNO,)
|
||||||
OPT_CREATE = IF_FEATURE_CPIO_O((1 << OPTBIT_CREATE )) + 0,
|
OPT_CREATE = IF_FEATURE_CPIO_O((1 << OPTBIT_CREATE )) + 0,
|
||||||
OPT_FORMAT = IF_FEATURE_CPIO_O((1 << OPTBIT_FORMAT )) + 0,
|
OPT_FORMAT = IF_FEATURE_CPIO_O((1 << OPTBIT_FORMAT )) + 0,
|
||||||
OPT_PASSTHROUGH = IF_FEATURE_CPIO_P((1 << OPTBIT_PASSTHROUGH)) + 0,
|
OPT_PASSTHROUGH = IF_FEATURE_CPIO_P((1 << OPTBIT_PASSTHROUGH)) + 0,
|
||||||
OPT_QUIET = IF_LONG_OPTS( (1 << OPTBIT_QUIET )) + 0,
|
OPT_QUIET = IF_LONG_OPTS( (1 << OPTBIT_QUIET )) + 0,
|
||||||
OPT_2STDOUT = IF_LONG_OPTS( (1 << OPTBIT_2STDOUT )) + 0,
|
OPT_2STDOUT = IF_LONG_OPTS( (1 << OPTBIT_2STDOUT )) + 0,
|
||||||
|
OPT_IGNORE_DEVNO = IF_FEATURE_CPIO_IGNORE_DEVNO((1 << OPTBIT_IGNORE_DEVNO)) + 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define OPTION_STR "it0uvdmLF:R:"
|
#define OPTION_STR "it0uvdmLF:R:"
|
||||||
@ -304,6 +316,11 @@ static NOINLINE int cpio_o(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if ENABLE_FEATURE_CPIO_IGNORE_DEVNO
|
||||||
|
if (option_mask32 & OPT_IGNORE_DEVNO)
|
||||||
|
st.st_dev = st.st_rdev = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
bytes += printf("070701"
|
bytes += printf("070701"
|
||||||
"%08X%08X%08X%08X%08X%08X%08X"
|
"%08X%08X%08X%08X%08X%08X%08X"
|
||||||
"%08X%08X%08X%08X" /* GNU cpio uses uppercase hex */
|
"%08X%08X%08X%08X" /* GNU cpio uses uppercase hex */
|
||||||
@ -379,6 +396,9 @@ int cpio_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
"null\0" No_argument "0"
|
"null\0" No_argument "0"
|
||||||
"quiet\0" No_argument "\xff"
|
"quiet\0" No_argument "\xff"
|
||||||
"to-stdout\0" No_argument "\xfe"
|
"to-stdout\0" No_argument "\xfe"
|
||||||
|
#if ENABLE_FEATURE_CPIO_IGNORE_DEVNO
|
||||||
|
"ignore-devno\0" No_argument "\xfd"
|
||||||
|
#endif
|
||||||
;
|
;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user