}
case OPT_SWITCH_TIMER:
{
- unsigned long v;
+ uint64_t v;
errno = 0;
opt_arg = poptGetOptArg(pc);
- v = strtoul(opt_arg, NULL, 0);
- if (errno != 0 || !isdigit(opt_arg[0])) {
- ERR("Wrong value in --switch-timer parameter: %s", opt_arg);
+
+ if (utils_parse_time_suffix(opt_arg, &v) < 0) {
+ ERR("Wrong value for --switch-timer parameter: %s", opt_arg);
ret = CMD_ERROR;
goto end;
}
+
if (v != (uint32_t) v) {
ERR("32-bit overflow in --switch-timer parameter: %s", opt_arg);
ret = CMD_ERROR;
}
case OPT_READ_TIMER:
{
- unsigned long v;
+ uint64_t v;
errno = 0;
opt_arg = poptGetOptArg(pc);
- v = strtoul(opt_arg, NULL, 0);
- if (errno != 0 || !isdigit(opt_arg[0])) {
- ERR("Wrong value in --read-timer parameter: %s", opt_arg);
+
+ if (utils_parse_time_suffix(opt_arg, &v) < 0) {
+ ERR("Wrong value for --read-timer parameter: %s", opt_arg);
ret = CMD_ERROR;
goto end;
}
+
if (v != (uint32_t) v) {
ERR("32-bit overflow in --read-timer parameter: %s", opt_arg);
ret = CMD_ERROR;