[Replicant] [libsamsung-ipc] [PATCH 25/26] tools: ipc-modem: handle --call= and --call start
Denis 'GNUtoo' Carikli
GNUtoo at cyberdimension.org
Mon Mar 28 20:20:39 UTC 2022
Without that fix with --call= it picks an empty string as the number:
$ ipc-modem --debug --dry-run start --call=
CC ipc-modem.o
CCLD ipc-modem
[I] Got call number!
[I] Debug enabled
[I] dry-run mode
[1] Starting dummy modem_read_loop on FMT client
[I] modem_dummy_read_loop: looping
[...]
and with --call start, it things that "start" is the number and fails
because the "start" command is not found:
$ ipc-modem --debug --dry-run --call start
make: Nothing to be done for 'all'.
[I] Got call number!
Error: No command given. You need to use a command.
See the help below for more details.
usage: ipc-modem <command>
commands:
boot boot modem only
power-on power on the modem only
power-off power off the modem only
start boot modem and start read loop
arguments:
--call=[NUMBER] call NUMBER
--debug enable debug messages
--dry-run Test the ipc-modem program without talking to the modem.
--help print this help message
--pin=[PIN] provide SIM card PIN
With this fix it handles both situation by printing the right error:
$ipc-modem --debug --dry-run start --call=
make: Nothing to be done for 'all'.
[E] Missing call number
$ make ; ./ipc-modem --debug --dry-run --call start
make: Nothing to be done for 'all'.
[E] Missing call number
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo at cyberdimension.org>
---
tools/ipc-modem.c | 7 ++++++-
tools/ipc-modem.py | 14 ++++++++++++--
2 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/tools/ipc-modem.c b/tools/ipc-modem.c
index 9990d4f..08f9c3a 100644
--- a/tools/ipc-modem.c
+++ b/tools/ipc-modem.c
@@ -686,7 +686,12 @@ int parse_cmdline_opts(struct ipc_modem_data *data, int argc, char *argv[])
if (strcmp(opt_l[opt_i].name, "call") == 0) {
if (optarg) {
- if (strlen(optarg) < 14) {
+ if (strlen(optarg) == 0) {
+ ipc_modem_log(data->client,
+ MODEM_LOG_ERROR,
+ "Missing call number\n");
+ return EX_USAGE;
+ } else if (strlen(optarg) < 14) {
assert(strlen(optarg) <
sizeof(data->call_number));
ipc_modem_log(data->client,
diff --git a/tools/ipc-modem.py b/tools/ipc-modem.py
index 12ee774..0fe76d7 100755
--- a/tools/ipc-modem.py
+++ b/tools/ipc-modem.py
@@ -75,7 +75,7 @@ class IpcModem(object):
else:
raise Exception()
- def test_call(self, timeout=3):
+ def test_call_with_number(self, timeout=3):
expected_output = "[I] Got call number!"
output = ""
try:
@@ -88,12 +88,22 @@ class IpcModem(object):
if output != expected_output:
raise Exception()
+ def test_call_without_number(self, timeout=3):
+ expected_output = "[E] Missing call number"
+ output = get_output(self.ipc_modem('power-on',
+ '--call=',
+ _timeout=timeout,
+ _ok_code=SysExit.EX_USAGE.exit_code))
+ if output != expected_output:
+ raise Exception()
+
def test_commands(self):
self.test_boot()
self.test_power_on()
self.test_power_off()
self.test_start()
- self.test_call()
+ self.test_call_with_number()
+ self.test_call_without_number()
def main():
ipc_modem = IpcModem()
--
2.35.1
More information about the Replicant
mailing list