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.
This commit is contained in:
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