die("invalid mode: %s", optarg);
break;
case 's':
- if (mode->id != MODE_TIME)
- die("can't specify seconds in this mode");
cbdata.tv.tv_sec = strtoul(optarg, &end, 10);
if (*end != '\0')
die("invalid time value in seconds: %s", optarg);
break;
case 'u':
- if (mode->id != MODE_TIME)
- die("can't specify microseconds in this mode");
cbdata.tv.tv_usec = strtoul(optarg, &end, 10);
if (*end != '\0')
die("invalid time value in microseconds: %s",
optarg);
break;
case 'b':
- if (mode->id != MODE_SIGNAL && mode->id != MODE_TIME)
- die("can't daemonize in this mode");
cbdata.daemonize = true;
break;
case '?':
argc -= optind;
argv += optind;
+ if (mode->id != MODE_TIME && (cbdata.tv.tv_sec || cbdata.tv.tv_usec))
+ die("can't specify wait time in this mode");
+
+ if (mode->id != MODE_SIGNAL &&
+ mode->id != MODE_TIME &&
+ cbdata.daemonize)
+ die("can't daemonize in this mode");
+
if (argc < 1)
die("gpiochip must be specified");
TEST_ASSERT_NULL(test_tool_stdout());
TEST_ASSERT_NOT_NULL(test_tool_stderr());
TEST_ASSERT_STR_CONTAINS(test_tool_stderr(),
- "can't specify seconds in this mode");
+ "can't specify wait time in this mode");
test_tool_run("gpioset", "--mode=exit", "--usec=100",
test_chip_name(0), "0=1", (char *)NULL);
TEST_ASSERT_NULL(test_tool_stdout());
TEST_ASSERT_NOT_NULL(test_tool_stderr());
TEST_ASSERT_STR_CONTAINS(test_tool_stderr(),
- "can't specify microseconds in this mode");
+ "can't specify wait time in this mode");
}
TEST_DEFINE(gpioset_sec_usec_without_time,
"tools: gpioset - using --sec/--usec with mode other than 'time'",