mirror of
				https://github.com/isar/libmdbx.git
				synced 2025-10-31 03:29:01 +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) { | ||||
|     *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; | ||||
|     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, | ||||
|                   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; | ||||
|   if (!parse_option(argc, argv, narg, option, &value_cstr, | ||||
|                     allow_empty ? "" : nullptr)) | ||||
|   if (!parse_option(argc, argv, narg, option, &value_cstr, default_value)) | ||||
|     return false; | ||||
|  | ||||
|   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, | ||||
|                   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; | ||||
|   if (!parse_option(argc, argv, narg, option, &value_cstr)) | ||||
|     return false; | ||||
|  | ||||
|   if (default_value && strcmp(value_cstr, "default") == 0) { | ||||
|     value = default_value; | ||||
|     return true; | ||||
|   } | ||||
|  | ||||
|   char *suffix = nullptr; | ||||
|   errno = 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, | ||||
|                   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; | ||||
|   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; | ||||
|   value = (unsigned)huge; | ||||
|   return true; | ||||
| } | ||||
|  | ||||
| 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; | ||||
|   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; | ||||
|   value = (uint8_t)huge; | ||||
|   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 &value) { | ||||
|   const char *value_cstr = NULL; | ||||
|   const char *value_cstr = nullptr; | ||||
|   if (!parse_option(argc, argv, narg, option, &value_cstr, "yes")) { | ||||
|     const char *current = argv[narg]; | ||||
|     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, | ||||
|                   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 &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, | ||||
|                   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, | ||||
|                   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, | ||||
|                   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) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user