mirror of https://git.tukaani.org/xz.git
xz: Add --experimental-arm64[=width=WIDTH].
It will be renamed to --arm64 once it is stable. Man page or --long-help weren't updated yet.
This commit is contained in:
parent
ecb966de30
commit
d5b0906fa5
|
@ -126,6 +126,7 @@ parse_real(args_info *args, int argc, char **argv)
|
||||||
OPT_IA64,
|
OPT_IA64,
|
||||||
OPT_ARM,
|
OPT_ARM,
|
||||||
OPT_ARMTHUMB,
|
OPT_ARMTHUMB,
|
||||||
|
OPT_ARM64,
|
||||||
OPT_SPARC,
|
OPT_SPARC,
|
||||||
OPT_DELTA,
|
OPT_DELTA,
|
||||||
OPT_LZMA1,
|
OPT_LZMA1,
|
||||||
|
@ -197,6 +198,7 @@ parse_real(args_info *args, int argc, char **argv)
|
||||||
{ "ia64", optional_argument, NULL, OPT_IA64 },
|
{ "ia64", optional_argument, NULL, OPT_IA64 },
|
||||||
{ "arm", optional_argument, NULL, OPT_ARM },
|
{ "arm", optional_argument, NULL, OPT_ARM },
|
||||||
{ "armthumb", optional_argument, NULL, OPT_ARMTHUMB },
|
{ "armthumb", optional_argument, NULL, OPT_ARMTHUMB },
|
||||||
|
{ "experimental-arm64", optional_argument, NULL, OPT_ARM64 },
|
||||||
{ "sparc", optional_argument, NULL, OPT_SPARC },
|
{ "sparc", optional_argument, NULL, OPT_SPARC },
|
||||||
{ "delta", optional_argument, NULL, OPT_DELTA },
|
{ "delta", optional_argument, NULL, OPT_DELTA },
|
||||||
|
|
||||||
|
@ -370,6 +372,11 @@ parse_real(args_info *args, int argc, char **argv)
|
||||||
options_bcj(optarg));
|
options_bcj(optarg));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case OPT_ARM64:
|
||||||
|
coder_add_filter(LZMA_FILTER_ARM64,
|
||||||
|
options_arm64(optarg));
|
||||||
|
break;
|
||||||
|
|
||||||
case OPT_SPARC:
|
case OPT_SPARC:
|
||||||
coder_add_filter(LZMA_FILTER_SPARC,
|
coder_add_filter(LZMA_FILTER_SPARC,
|
||||||
options_bcj(optarg));
|
options_bcj(optarg));
|
||||||
|
|
|
@ -1036,6 +1036,13 @@ message_filters_to_str(char buf[FILTERS_STR_SIZE],
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case LZMA_FILTER_ARM64: {
|
||||||
|
const lzma_options_arm64 *opt = filters[i].options;
|
||||||
|
my_snprintf(&pos, &left, "arm64=width=%" PRIu32,
|
||||||
|
opt->width);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case LZMA_FILTER_DELTA: {
|
case LZMA_FILTER_DELTA: {
|
||||||
const lzma_options_delta *opt = filters[i].options;
|
const lzma_options_delta *opt = filters[i].options;
|
||||||
my_snprintf(&pos, &left, "delta=dist=%" PRIu32,
|
my_snprintf(&pos, &left, "delta=dist=%" PRIu32,
|
||||||
|
|
|
@ -224,6 +224,45 @@ options_bcj(const char *str)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///////////
|
||||||
|
// ARM64 //
|
||||||
|
///////////
|
||||||
|
|
||||||
|
enum {
|
||||||
|
OPT_WIDTH,
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
set_arm64(void *options, unsigned key, uint64_t value,
|
||||||
|
const char *valuestr lzma_attribute((__unused__)))
|
||||||
|
{
|
||||||
|
lzma_options_arm64 *opt = options;
|
||||||
|
switch (key) {
|
||||||
|
case OPT_WIDTH:
|
||||||
|
opt->width = value;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
extern lzma_options_arm64 *
|
||||||
|
options_arm64(const char *str)
|
||||||
|
{
|
||||||
|
static const option_map opts[] = {
|
||||||
|
{ "width", NULL, LZMA_ARM64_WIDTH_MIN, LZMA_ARM64_WIDTH_MAX },
|
||||||
|
{ NULL, NULL, 0, 0 }
|
||||||
|
};
|
||||||
|
|
||||||
|
lzma_options_arm64 *options = xmalloc(sizeof(lzma_options_arm64));
|
||||||
|
options->width = LZMA_ARM64_WIDTH_DEFAULT;
|
||||||
|
|
||||||
|
parse_options(str, opts, &set_arm64, options);
|
||||||
|
|
||||||
|
return options;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//////////
|
//////////
|
||||||
// LZMA //
|
// LZMA //
|
||||||
//////////
|
//////////
|
||||||
|
|
|
@ -24,6 +24,13 @@ extern lzma_options_delta *options_delta(const char *str);
|
||||||
extern lzma_options_bcj *options_bcj(const char *str);
|
extern lzma_options_bcj *options_bcj(const char *str);
|
||||||
|
|
||||||
|
|
||||||
|
/// \brief Parser for ARM64 options
|
||||||
|
///
|
||||||
|
/// \return Pointer to allocated options structure.
|
||||||
|
/// Doesn't return on error.
|
||||||
|
extern lzma_options_arm64 *options_arm64(const char *str);
|
||||||
|
|
||||||
|
|
||||||
/// \brief Parser for LZMA options
|
/// \brief Parser for LZMA options
|
||||||
///
|
///
|
||||||
/// \return Pointer to allocated options structure.
|
/// \return Pointer to allocated options structure.
|
||||||
|
|
Loading…
Reference in New Issue