[Hamlib-commits] Hamlib -- Ham radio control libraries branch master updated. 98f6da8ae325f7383a8b1
Library to control radio transceivers and receivers
Brought to you by:
n0nb
From: n0nb <n0...@us...> - 2025-08-14 13:00:28
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "Hamlib -- Ham radio control libraries". The branch, master has been updated via 98f6da8ae325f7383a8b1d2a9026516aa6fcf414 (commit) via 2f2b703ccf9417ca07b7f1e54603514f89ebea31 (commit) via b5b9e136a14138a33c79f782b01e9e586dbc22ea (commit) via fb4d2c6455d6cbc6b832f9bbc9365bc691e137e3 (commit) via 301391211102efba2e01ecb5fbdd059a2a00071c (commit) via 12ba55834370d0b314079f6a67983c11bb26a3b9 (commit) via a81aab6e116ba34fb20aaf01ae06edbe725d9bff (commit) via 762caa85c0eb094f0b311aaba74fe686b5e1970c (commit) via ff5500b2d933195344cb458e689d26c58a7a5f32 (commit) from 4b6b5415f546a7dd0ffa3aaff09c7275449adbc5 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 98f6da8ae325f7383a8b1d2a9026516aa6fcf414 Merge: 4b6b5415f 2f2b703cc Author: Nate Bargmann <n0...@n0...> Date: Wed Aug 13 20:43:09 2025 -0500 Merge GitHub PR #1845 commit 2f2b703ccf9417ca07b7f1e54603514f89ebea31 Author: Daniele Forsi IU5HKX <iu...@gm...> Date: Wed Aug 13 22:02:59 2025 +0200 Handle the question mark as second argument of set_parm KEYERTYPE in rigctl Test case: tests/rigctl -m 1 \ set_parm KEYERTYPE '?' \ set_parm BANDSELECT '?' STRAIGHT BUG PADDLE BANDUNUSED BAND70CM BAND33CM BAND23CM diff --git a/tests/rigctl_parse.c b/tests/rigctl_parse.c index 8503317e6..711dd7502 100644 --- a/tests/rigctl_parse.c +++ b/tests/rigctl_parse.c @@ -3719,11 +3719,10 @@ declare_proto_rig(set_parm) parm = rig_parse_parm(arg1); - if (parm == RIG_PARM_BANDSELECT && !strcmp(arg2, "?")) + if ((parm == RIG_PARM_BANDSELECT || parm == RIG_PARM_KEYERTYPE) && !strcmp(arg2, "?")) { char s[SPRINTF_MAX_SIZE]; - rig_sprintf_parm_gran(s, sizeof(s) - 1, RIG_PARM_BANDSELECT, - rig->caps->parm_gran); + rig_sprintf_parm_gran(s, sizeof(s) - 1, parm, rig->caps->parm_gran); char *p = strchr(s, ')'); if (p) { *p = 0; } commit b5b9e136a14138a33c79f782b01e9e586dbc22ea Author: Daniele Forsi IU5HKX <iu...@gm...> Date: Wed Aug 13 17:27:06 2025 +0200 Do not use strcmp() when we are going to get a RIG_PARM_* define anyway diff --git a/tests/rigctl_parse.c b/tests/rigctl_parse.c index 2fef0aadc..8503317e6 100644 --- a/tests/rigctl_parse.c +++ b/tests/rigctl_parse.c @@ -3717,7 +3717,9 @@ declare_proto_rig(set_parm) RETURNFUNC2(RIG_OK); } - if (strcmp(arg1, "BANDSELECT") == 0 && !strcmp(arg2, "?")) + parm = rig_parse_parm(arg1); + + if (parm == RIG_PARM_BANDSELECT && !strcmp(arg2, "?")) { char s[SPRINTF_MAX_SIZE]; rig_sprintf_parm_gran(s, sizeof(s) - 1, RIG_PARM_BANDSELECT, @@ -3740,7 +3742,7 @@ declare_proto_rig(set_parm) else { RETURNFUNC2(-RIG_EINTERNAL); } } - if (strcmp(arg1, "KEYERTYPE") == 0 && strcmp(arg2, "?") != 0) + if (parm == RIG_PARM_KEYERTYPE && strcmp(arg2, "?") != 0) { if (strcmp(arg2, "STRAIGHT") == 0) {arg2 = "0";} else if (strcmp(arg2, "BUG") == 0) {arg2 = "1";} @@ -3748,8 +3750,6 @@ declare_proto_rig(set_parm) else {RETURNFUNC2(-RIG_EINVAL)} } - parm = rig_parse_parm(arg1); - if (!rig_has_set_parm(rig, parm)) { const struct confparams *cfp; commit fb4d2c6455d6cbc6b832f9bbc9365bc691e137e3 Author: Daniele Forsi IU5HKX <iu...@gm...> Date: Wed Aug 13 16:43:32 2025 +0200 Fix segfault when using the dummy driver Steps to reproduce: tests/rigctl -m 1 \ get_parm KEYERTYPE Fixes: Thread 1 "rigctl" received signal SIGSEGV, Segmentation fault. 0x0000556aff4f890d in rigctl_get_parm (rig=<optimized out>, fout=0x7f87517f25c0 <_IO_2_1_stdout_>, fin=<optimized out>, interactive=1, prompt=1, vfo_opt=<optimized out>, send_cmd_term=13 '\r', ext_resp=0, resp_sep=10 '\n', cmd=0x556aff516050 <test_list+1520>, vfo=536870912, arg1=0x7ffc5985b5c0 "KEYERTYPE", arg2=0x556aff50cce8 "", arg3=0x556aff50cce8 "") at rigctl_parse.c:3947 3947 if (strcmp(val.s, "0") == 0) {s = "STRAIGHT";} (gdb) bt #0 0x0000556aff4f890d in rigctl_get_parm (rig=<optimized out>, fout=0x7f87517f25c0 <_IO_2_1_stdout_>, fin=<optimized out>, interactive=1, prompt=1, vfo_opt=<optimized out>, send_cmd_term=13 '\r', ext_resp=0, resp_sep=10 '\n', cmd=0x556aff516050 <test_list+1520>, vfo=536870912, arg1=0x7ffc5985b5c0 "KEYERTYPE", arg2=0x556aff50cce8 "", arg3=0x556aff50cce8 "") at rigctl_parse.c:3947 #1 0x0000556aff5007f6 in rigctl_parse (my_rig=<optimized out>, fin=<optimized out>, fout=<optimized out>, argv=argv@entry=0x7ffc5985d788, argc=argc@entry=3, sync_cb=sync_cb@entry=0x0, interactive=<optimized out>, prompt=<optimized out>, vfo_opt=<optimized out>, send_cmd_term=<optimized out>, ext_resp_ptr=<optimized out>, resp_sep_ptr=<optimized out>, use_password=<optimized out>) at rigctl_parse.c:1847 #2 0x0000556aff4eaadc in main (argc=<optimized out>, argv=0x7ffc5985d788) at rigctl.c:801 diff --git a/tests/rigctl_parse.c b/tests/rigctl_parse.c index 509031227..2fef0aadc 100644 --- a/tests/rigctl_parse.c +++ b/tests/rigctl_parse.c @@ -3944,7 +3944,8 @@ declare_proto_rig(get_parm) { const char *cs; - if (strcmp(val.cs, "0") == 0) {cs = "STRAIGHT";} + if (val.cs == NULL) {cs = "(null)";} + else if (strcmp(val.cs, "0") == 0) {cs = "STRAIGHT";} else if (strcmp(val.cs, "1") == 0) {cs = "BUG";} else if (strcmp(val.cs, "2") == 0) {cs = "PADDLE";} else {cs = "UNKNOWN";} commit 301391211102efba2e01ecb5fbdd059a2a00071c Author: Daniele Forsi IU5HKX <iu...@gm...> Date: Wed Aug 13 16:21:57 2025 +0200 Make get_param read back the value passed to set_param Test case: tests/rigctl -m 1 \ set_parm KEYERTYPE BUG get_parm KEYERTYPE \ set_parm KEYERTYPE PADDLE get_parm KEYERTYPE \ set_parm KEYERTYPE STRAIGHT get_parm KEYERTYPE BUG PADDLE STRAIGHT diff --git a/tests/rigctl_parse.c b/tests/rigctl_parse.c index 4bcb0b9d9..509031227 100644 --- a/tests/rigctl_parse.c +++ b/tests/rigctl_parse.c @@ -3942,12 +3942,14 @@ declare_proto_rig(get_parm) if (parm == RIG_PARM_KEYERTYPE) { - char *s = "STRAIGHT"; + const char *cs; - if (val.i == 1) { s = "BUG"; } - else if (val.i == 2) { s = "PADDLE"; } + if (strcmp(val.cs, "0") == 0) {cs = "STRAIGHT";} + else if (strcmp(val.cs, "1") == 0) {cs = "BUG";} + else if (strcmp(val.cs, "2") == 0) {cs = "PADDLE";} + else {cs = "UNKNOWN";} - fprintf(fout, "%s%c", s, resp_sep); + fprintf(fout, "%s%c", cs, resp_sep); } else if (RIG_PARM_IS_FLOAT(parm)) { commit 12ba55834370d0b314079f6a67983c11bb26a3b9 Author: Daniele Forsi IU5HKX <iu...@gm...> Date: Wed Aug 13 14:25:54 2025 +0200 Fix segfault with set_parm KEYERTYPE Steps to reproduce: tests/rigctl -m 1 \ set_parm KEYERTYPE BUG Fixes: Thread 1 "rigctl" received signal SIGSEGV, Segmentation fault. __strlen_sse2 () at ../sysdeps/x86_64/multiarch/strlen-sse2.S:142 warning: 142 ../sysdeps/x86_64/multiarch/strlen-sse2.S: File o directory non esistente (gdb) bt #0 __strlen_sse2 () at ../sysdeps/x86_64/multiarch/strlen-sse2.S:142 #1 0x00007ffac346e300 in __printf_buffer (buf=buf@entry=0x7ffc3bcf40d0, format=0x7ffac38aef17 "%s", ap=0x7ffc3bcf4190, mode_flags=0) at ./stdio-common/vfprintf-process-arg.c:435 #2 0x00007ffac3491daf in __vsnprintf_internal (string=<optimized out>, maxlen=<optimized out>, format=<optimized out>, args=args@entry=0x7ffc3bcf4190, mode_flags=mode_flags@entry=0) at ./libio/vsnprintf.c:96 #3 0x00007ffac3469642 in __GI___snprintf (s=s@entry=0x7ffc3bcf4290 "", maxlen=maxlen@entry=32, format=format@entry=0x7ffac38aef17 "%s") at ./stdio-common/snprintf.c:31 #4 0x00007ffac370b7b9 in dummy_set_parm (rig=0x558fe1991b20, parm=2048, val=...) at dummy.c:1704 #5 0x0000558fb536afbe in rigctl_set_parm (rig=0x558fe1991b20, fout=0x7ffac35f25c0 <_IO_2_1_stdout_>, fin=<optimized out>, interactive=<optimized out>, prompt=<optimized out>, vfo_opt=<optimized out>, send_cmd_term=13 '\r', ext_resp=0, resp_sep=10 '\n', cmd=0x558fb5388000 <test_list+1440>, vfo=536870912, arg1=0x7ffc3bcf4e10 "KEYERTYPE", arg2=0x558fb537fdb1 "1", arg3=0x558fb537ece8 "") at rigctl_parse.c:3829 #6 0x0000558fb53727d6 in rigctl_parse (my_rig=<optimized out>, fin=<optimized out>, fout=<optimized out>, argv=argv@entry=0x7ffc3bcf6fd8, argc=argc@entry=3, sync_cb=sync_cb@entry=0x0, interactive=<optimized out>, prompt=<optimized out>, vfo_opt=<optimized out>, send_cmd_term=<optimized out>, ext_resp_ptr=<optimized out>, resp_sep_ptr=<optimized out>, use_password=<optimized out>) at rigctl_parse.c:1847 #7 0x0000558fb535cadc in main (argc=<optimized out>, argv=0x7ffc3bcf6fd8) at rigctl.c:801 diff --git a/tests/rigctl_parse.c b/tests/rigctl_parse.c index 849bc23ad..4bcb0b9d9 100644 --- a/tests/rigctl_parse.c +++ b/tests/rigctl_parse.c @@ -3812,11 +3812,13 @@ declare_proto_rig(set_parm) } else if (RIG_PARM_IS_STRING(parm)) { +#if 0 if (parm == RIG_PARM_KEYERTYPE) { val.i = atoi(arg2); } else +#endif { val.cs = arg2; } commit a81aab6e116ba34fb20aaf01ae06edbe725d9bff Author: Daniele Forsi IU5HKX <iu...@gm...> Date: Wed Aug 13 14:20:14 2025 +0200 Return an error if the keyer type is unknown Instead of quietly doing nothing. diff --git a/tests/rigctl_parse.c b/tests/rigctl_parse.c index 75c1c1bea..849bc23ad 100644 --- a/tests/rigctl_parse.c +++ b/tests/rigctl_parse.c @@ -3745,6 +3745,7 @@ declare_proto_rig(set_parm) if (strcmp(arg2, "STRAIGHT") == 0) {arg2 = "0";} else if (strcmp(arg2, "BUG") == 0) {arg2 = "1";} else if (strcmp(arg2, "PADDLE") == 0) {arg2 = "2";} + else {RETURNFUNC2(-RIG_EINVAL)} } parm = rig_parse_parm(arg1); commit 762caa85c0eb094f0b311aaba74fe686b5e1970c Author: Daniele Forsi IU5HKX <iu...@gm...> Date: Wed Aug 13 12:54:58 2025 +0200 Remove stray char after printing value of KEYERTYPE Steps to reproduce: tests/rigctl -m 1 get_parm KEYERTYPE STRAIGHT v <-- this 'v' shouldn't be there diff --git a/tests/rigctl_parse.c b/tests/rigctl_parse.c index 732745b3f..75c1c1bea 100644 --- a/tests/rigctl_parse.c +++ b/tests/rigctl_parse.c @@ -3944,7 +3944,7 @@ declare_proto_rig(get_parm) if (val.i == 1) { s = "BUG"; } else if (val.i == 2) { s = "PADDLE"; } - fprintf(fout, "%s%cv", s, resp_sep); + fprintf(fout, "%s%c", s, resp_sep); } else if (RIG_PARM_IS_FLOAT(parm)) { commit ff5500b2d933195344cb458e689d26c58a7a5f32 Author: Daniele Forsi IU5HKX <iu...@gm...> Date: Wed Aug 13 12:31:56 2025 +0200 Avoid segfaulting when val.cs is NULL This is the case for BANDSELECT and KEYERTYPE. Use SNPRINTF() which deals with NULLs printing (null) and it is used with the other datatypes.. Steps to reproduce: tests/rigctl -m 1 set_parm KEYERTYPE '?' tests/rigctl -m 1 set_parm BANDSELECT 1 Fixes: Thread 1 "rigctl" received signal SIGSEGV, Segmentation fault. __strcpy_sse2_unaligned () at ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S:302 warning: 302 ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S: File o directory non esistente (gdb) bt #0 __strcpy_sse2_unaligned () at ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S:302 #1 0x00007f8ab4d0b7ab in dummy_set_parm (rig=0x55d19b6cab20, parm=2048, val=...) at dummy.c:1704 #2 0x000055d175b8c03d in rigctl_set_parm (rig=0x55d19b6cab20, fout=0x7f8ab4bf25c0 <_IO_2_1_stdout_>, fin=<optimized out>, interactive=<optimized out>, prompt=<optimized out>, vfo_opt=<optimized out>, send_cmd_term=13 '\r', ext_resp=0, resp_sep=10 '\n', cmd=0x55d175ba9000 <test_list+1440>, vfo=536870912, arg1=0x7ffd730281e0 "KEYERTYPE", arg2=0x7ffd730283e0 "'?'", arg3=0x55d175b9fce8 "") at rigctl_parse.c:3828 #3 0x000055d175b93756 in rigctl_parse (my_rig=<optimized out>, fin=<optimized out>, fout=<optimized out>, argv=argv@entry=0x7ffd7302a3a8, argc=argc@entry=3, sync_cb=sync_cb@entry=0x0, interactive=<optimized out>, prompt=<optimized out>, vfo_opt=<optimized out>, send_cmd_term=<optimized out>, ext_resp_ptr=<optimized out>, resp_sep_ptr=<optimized out>, use_password=<optimized out>) at rigctl_parse.c:1847 #4 0x000055d175b7dadc in main (argc=<optimized out>, argv=0x7ffd7302a3a8) at rigctl.c:801 diff --git a/rigs/dummy/dummy.c b/rigs/dummy/dummy.c index 544de59cc..dc9b5c69a 100644 --- a/rigs/dummy/dummy.c +++ b/rigs/dummy/dummy.c @@ -1701,7 +1701,7 @@ static int dummy_set_parm(RIG *rig, setting_t parm, value_t val) if (RIG_PARM_IS_STRING(parm)) { - strcpy(pstr, val.cs); + SNPRINTF(pstr, sizeof(pstr), "%s", val.cs); } else { ----------------------------------------------------------------------- Summary of changes: rigs/dummy/dummy.c | 2 +- tests/rigctl_parse.c | 25 +++++++++++++++---------- 2 files changed, 16 insertions(+), 11 deletions(-) hooks/post-receive -- Hamlib -- Ham radio control libraries |