mirror of
https://github.com/isar/libmdbx.git
synced 2025-01-04 18:04:13 +08:00
mdbx-test: add support for 'default' options values.
Change-Id: Ib8481e879e77bc6d02f8c92a2daad50b86782608
This commit is contained in:
parent
a0d10e41b8
commit
b41bef8307
@ -43,6 +43,11 @@ bool parse_option(int argc, char *const argv[], int &narg, const char *option,
|
|||||||
|
|
||||||
if (narg + 1 < argc && strncmp("--", argv[narg + 1], 2) != 0) {
|
if (narg + 1 < argc && strncmp("--", argv[narg + 1], 2) != 0) {
|
||||||
*value = argv[narg + 1];
|
*value = argv[narg + 1];
|
||||||
|
if (strcmp(*value, "default") == 0) {
|
||||||
|
if (!default_value)
|
||||||
|
failure("Option '--%s' doen't accept default value\n", option);
|
||||||
|
*value = default_value;
|
||||||
|
}
|
||||||
++narg;
|
++narg;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -57,9 +62,15 @@ bool parse_option(int argc, char *const argv[], int &narg, const char *option,
|
|||||||
|
|
||||||
bool parse_option(int argc, char *const argv[], int &narg, const char *option,
|
bool parse_option(int argc, char *const argv[], int &narg, const char *option,
|
||||||
std::string &value, bool allow_empty) {
|
std::string &value, bool allow_empty) {
|
||||||
|
return parse_option(argc, argv, narg, option, value, allow_empty,
|
||||||
|
allow_empty ? "" : nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool parse_option(int argc, char *const argv[], int &narg, const char *option,
|
||||||
|
std::string &value, bool allow_empty,
|
||||||
|
const char *default_value) {
|
||||||
const char *value_cstr;
|
const char *value_cstr;
|
||||||
if (!parse_option(argc, argv, narg, option, &value_cstr,
|
if (!parse_option(argc, argv, narg, option, &value_cstr, default_value))
|
||||||
allow_empty ? "" : nullptr))
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (!allow_empty && strlen(value_cstr) == 0)
|
if (!allow_empty && strlen(value_cstr) == 0)
|
||||||
@ -110,12 +121,18 @@ bool parse_option(int argc, char *const argv[], int &narg, const char *option,
|
|||||||
|
|
||||||
bool parse_option(int argc, char *const argv[], int &narg, const char *option,
|
bool parse_option(int argc, char *const argv[], int &narg, const char *option,
|
||||||
uint64_t &value, const scale_mode scale,
|
uint64_t &value, const scale_mode scale,
|
||||||
const uint64_t minval, const uint64_t maxval) {
|
const uint64_t minval, const uint64_t maxval,
|
||||||
|
const uint64_t default_value) {
|
||||||
|
|
||||||
const char *value_cstr;
|
const char *value_cstr;
|
||||||
if (!parse_option(argc, argv, narg, option, &value_cstr))
|
if (!parse_option(argc, argv, narg, option, &value_cstr))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if (default_value && strcmp(value_cstr, "default") == 0) {
|
||||||
|
value = default_value;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
char *suffix = nullptr;
|
char *suffix = nullptr;
|
||||||
errno = 0;
|
errno = 0;
|
||||||
unsigned long long raw = strtoull(value_cstr, &suffix, 0);
|
unsigned long long raw = strtoull(value_cstr, &suffix, 0);
|
||||||
@ -179,28 +196,58 @@ bool parse_option(int argc, char *const argv[], int &narg, const char *option,
|
|||||||
|
|
||||||
bool parse_option(int argc, char *const argv[], int &narg, const char *option,
|
bool parse_option(int argc, char *const argv[], int &narg, const char *option,
|
||||||
unsigned &value, const scale_mode scale,
|
unsigned &value, const scale_mode scale,
|
||||||
const unsigned minval, const unsigned maxval) {
|
const unsigned minval, const unsigned maxval,
|
||||||
|
const unsigned default_value) {
|
||||||
|
|
||||||
uint64_t huge;
|
uint64_t huge;
|
||||||
if (!parse_option(argc, argv, narg, option, huge, scale, minval, maxval))
|
if (!parse_option(argc, argv, narg, option, huge, scale, minval, maxval,
|
||||||
|
default_value))
|
||||||
return false;
|
return false;
|
||||||
value = (unsigned)huge;
|
value = (unsigned)huge;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool parse_option(int argc, char *const argv[], int &narg, const char *option,
|
bool parse_option(int argc, char *const argv[], int &narg, const char *option,
|
||||||
uint8_t &value, const uint8_t minval, const uint8_t maxval) {
|
uint8_t &value, const uint8_t minval, const uint8_t maxval,
|
||||||
|
const uint8_t default_value) {
|
||||||
|
|
||||||
uint64_t huge;
|
uint64_t huge;
|
||||||
if (!parse_option(argc, argv, narg, option, huge, no_scale, minval, maxval))
|
if (!parse_option(argc, argv, narg, option, huge, no_scale, minval, maxval,
|
||||||
|
default_value))
|
||||||
return false;
|
return false;
|
||||||
value = (uint8_t)huge;
|
value = (uint8_t)huge;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool parse_option(int argc, char *const argv[], int &narg, const char *option,
|
||||||
|
int64_t &value, const int64_t minval, const int64_t maxval,
|
||||||
|
const int64_t default_value) {
|
||||||
|
uint64_t proxy = (size_t)value;
|
||||||
|
if (parse_option(argc, argv, narg, option, proxy, config::binary,
|
||||||
|
(uint64_t)minval, (uint64_t)maxval,
|
||||||
|
(uint64_t)default_value)) {
|
||||||
|
value = (int64_t)proxy;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool parse_option(int argc, char *const argv[], int &narg, const char *option,
|
||||||
|
int32_t &value, const int32_t minval, const int32_t maxval,
|
||||||
|
const int32_t default_value) {
|
||||||
|
uint64_t proxy = (size_t)value;
|
||||||
|
if (parse_option(argc, argv, narg, option, proxy, config::binary,
|
||||||
|
(uint64_t)minval, (uint64_t)maxval,
|
||||||
|
(uint64_t)default_value)) {
|
||||||
|
value = (int32_t)proxy;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
bool parse_option(int argc, char *const argv[], int &narg, const char *option,
|
bool parse_option(int argc, char *const argv[], int &narg, const char *option,
|
||||||
bool &value) {
|
bool &value) {
|
||||||
const char *value_cstr = NULL;
|
const char *value_cstr = nullptr;
|
||||||
if (!parse_option(argc, argv, narg, option, &value_cstr, "yes")) {
|
if (!parse_option(argc, argv, narg, option, &value_cstr, "yes")) {
|
||||||
const char *current = argv[narg];
|
const char *current = argv[narg];
|
||||||
if (strncmp(current, "--no-", 5) == 0 && strcmp(current + 5, option) == 0) {
|
if (strncmp(current, "--no-", 5) == 0 && strcmp(current + 5, option) == 0) {
|
||||||
|
@ -62,6 +62,10 @@ bool parse_option(int argc, char *const argv[], int &narg, const char *option,
|
|||||||
bool parse_option(int argc, char *const argv[], int &narg, const char *option,
|
bool parse_option(int argc, char *const argv[], int &narg, const char *option,
|
||||||
std::string &value, bool allow_empty = false);
|
std::string &value, bool allow_empty = false);
|
||||||
|
|
||||||
|
bool parse_option(int argc, char *const argv[], int &narg, const char *option,
|
||||||
|
std::string &value, bool allow_empty,
|
||||||
|
const char *default_value);
|
||||||
|
|
||||||
bool parse_option(int argc, char *const argv[], int &narg, const char *option,
|
bool parse_option(int argc, char *const argv[], int &narg, const char *option,
|
||||||
bool &value);
|
bool &value);
|
||||||
|
|
||||||
@ -75,16 +79,25 @@ bool parse_option(int argc, char *const argv[], int &narg, const char *option,
|
|||||||
|
|
||||||
bool parse_option(int argc, char *const argv[], int &narg, const char *option,
|
bool parse_option(int argc, char *const argv[], int &narg, const char *option,
|
||||||
uint64_t &value, const scale_mode scale,
|
uint64_t &value, const scale_mode scale,
|
||||||
const uint64_t minval = 0, const uint64_t maxval = INT64_MAX);
|
const uint64_t minval = 0, const uint64_t maxval = INT64_MAX,
|
||||||
|
const uint64_t default_value = 0);
|
||||||
|
|
||||||
bool parse_option(int argc, char *const argv[], int &narg, const char *option,
|
bool parse_option(int argc, char *const argv[], int &narg, const char *option,
|
||||||
unsigned &value, const scale_mode scale,
|
unsigned &value, const scale_mode scale,
|
||||||
const unsigned minval = 0, const unsigned maxval = INT32_MAX);
|
const unsigned minval = 0, const unsigned maxval = INT32_MAX,
|
||||||
|
const unsigned default_value = 0);
|
||||||
|
|
||||||
bool parse_option(int argc, char *const argv[], int &narg, const char *option,
|
bool parse_option(int argc, char *const argv[], int &narg, const char *option,
|
||||||
uint8_t &value, const uint8_t minval = 0,
|
uint8_t &value, const uint8_t minval = 0,
|
||||||
const uint8_t maxval = 255);
|
const uint8_t maxval = 255, const uint8_t default_value = 0);
|
||||||
|
|
||||||
|
bool parse_option(int argc, char *const argv[], int &narg, const char *option,
|
||||||
|
int64_t &value, const int64_t minval, const int64_t maxval,
|
||||||
|
const int64_t default_value = -1);
|
||||||
|
|
||||||
|
bool parse_option(int argc, char *const argv[], int &narg, const char *option,
|
||||||
|
int32_t &value, const int32_t minval, const int32_t maxval,
|
||||||
|
const int32_t default_value = -1);
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
#pragma pack(push, 1)
|
#pragma pack(push, 1)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user