change all bool parsers to accept any value

This patch changes the behavior of all boolean parsing callers to
accept any one of "true/enable/on/yes/1" or "false/disable/off/no/0".

Since one particular pair will be most appropriate in any given
situation, the specific macros should continue to be used in
order to display the most informative error messages possible.
__archive__
Zachary T Welch 2009-11-18 12:41:20 -08:00
parent 7e4adfe1c5
commit 4d8d1d32d0
2 changed files with 5 additions and 6 deletions

View File

@ -955,7 +955,7 @@ DEFINE_PARSE_LONG(_s32, int32_t, n < INT32_MIN, INT32_MAX)
DEFINE_PARSE_LONG(_s16, int16_t, n < INT16_MIN, INT16_MAX)
DEFINE_PARSE_LONG(_s8, int8_t, n < INT8_MIN, INT8_MAX)
int command_parse_bool(const char *in, bool *out,
static int command_parse_bool(const char *in, bool *out,
const char *on, const char *off)
{
if (strcasecmp(in, on) == 0)
@ -967,7 +967,7 @@ int command_parse_bool(const char *in, bool *out,
return ERROR_OK;
}
int command_parse_bool_any(const char *in, bool *out)
int command_parse_bool_arg(const char *in, bool *out)
{
if (command_parse_bool(in, out, "on", "off") == ERROR_OK)
return ERROR_OK;
@ -987,7 +987,7 @@ COMMAND_HELPER(handle_command_parse_bool, bool *out, const char *label)
switch (CMD_ARGC) {
case 1: {
const char *in = CMD_ARGV[0];
if (command_parse_bool_any(in, out) != ERROR_OK)
if (command_parse_bool_arg(in, out) != ERROR_OK)
{
LOG_ERROR("%s: argument '%s' is not valid", CMD_NAME, in);
return ERROR_INVALID_ARGUMENTS;

View File

@ -272,7 +272,7 @@ DECLARE_PARSE_WRAPPER(_s8, int8_t);
#define COMMAND_PARSE_BOOL(in, out, on, off) \
do { \
bool value; \
int retval = command_parse_bool(in, &value, on, off); \
int retval = command_parse_bool_arg(in, &value); \
if (ERROR_OK != retval) { \
command_print(CMD_CTX, stringify(out) \
" option value ('%s') is not valid", in); \
@ -283,8 +283,7 @@ DECLARE_PARSE_WRAPPER(_s8, int8_t);
out = value; \
} while (0)
int command_parse_bool(const char *in, bool *out,
const char *on, const char *off);
int command_parse_bool_arg(const char *in, bool *out);
COMMAND_HELPER(handle_command_parse_bool, bool *out, const char *label);
/// parses an on/off command argument