mirror of
				https://github.com/isar/libmdbx.git
				synced 2025-11-04 05:08:57 +08:00 
			
		
		
		
	mdbx-test: add support for 'default' options values.
Change-Id: Ib8481e879e77bc6d02f8c92a2daad50b86782608
This commit is contained in:
		@@ -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)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user