Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package hamlib for openSUSE:Factory checked in at 2025-07-21 19:59:41 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/hamlib (Old) and /work/SRC/openSUSE:Factory/.hamlib.new.8875 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "hamlib" Mon Jul 21 19:59:41 2025 rev:25 rq:1294489 version:4.6.4 Changes: -------- --- /work/SRC/openSUSE:Factory/hamlib/hamlib.changes 2025-06-11 16:26:09.071535147 +0200 +++ /work/SRC/openSUSE:Factory/.hamlib.new.8875/hamlib.changes 2025-07-21 20:00:14.854954109 +0200 @@ -1,0 +2,13 @@ +Sat Jul 19 06:34:04 UTC 2025 - Andreas Stieger <andreas.stie...@gmx.de> + +- Update to 4.6.4: + * Fix handling of unprintable characters affecting radios such + as the TM-D710/TM-V71 + * Fix memory leak in rigctld + * Fix powerstat check for Icom R75 which rejects the command + * Restore TS-590S/SG RIG_LEVEL_RFPOWER_METER + * Fix rotctl \dump_caps output + * Add CW sending capability to Flex SmartSDR + * Handle spaces correctly for Fles SmartSDR + +------------------------------------------------------------------- Old: ---- hamlib-4.6.3.tar.gz hamlib-4.6.3.tar.gz.asc New: ---- hamlib-4.6.4.tar.gz hamlib-4.6.4.tar.gz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ hamlib.spec ++++++ --- /var/tmp/diff_new_pack.o6fyZL/_old 2025-07-21 20:00:15.634986569 +0200 +++ /var/tmp/diff_new_pack.o6fyZL/_new 2025-07-21 20:00:15.638986736 +0200 @@ -19,7 +19,7 @@ %define sover 4 Name: hamlib -Version: 4.6.3 +Version: 4.6.4 Release: 0 Summary: Run-time library to control radio transcievers and receivers License: LGPL-2.1-only ++++++ hamlib-4.6.3.tar.gz -> hamlib-4.6.4.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hamlib-4.6.3/NEWS new/hamlib-4.6.4/NEWS --- old/hamlib-4.6.3/NEWS 2025-06-10 03:08:39.000000000 +0200 +++ new/hamlib-4.6.4/NEWS 2025-07-18 20:31:35.000000000 +0200 @@ -15,6 +15,20 @@ Version 4.7.0 * 2025-12-01 (target) +Version 4.6.4 + * 2025-07-18--Hamlib's 25th birthday!!! + * Fix handling of unprintable characters in kenwood.c that broke radios + such as the TM-D710/TM-V71 that use EOM_TH (\r) as the command terminator. + (TNX, Lars Kellogg-Stedman and George Baltz). + * Fixed jrc_set_chan. (TNX Mark Fine). + * Fix memory leak in rigctl_parse.c and use unique separator character + for each rigctld connection--closes GitHub #1748. (TNX George Baltz). + * Fix powerstat check for Icom R75 which rejects the command. (TNX Mark Fine). + * Restore TS-590S/SG RIG_LEVEL_RFPOWER_METER, Fix rotctl \dump_caps output + (TNX, George Baltz). + * Add CW sending capability to Flex SmartSDR. (TNX Michael Morgan) + * Handle spaces correctly for Fles SmartSDR. (TNX Michael Morgan) + Version 4.6.3 * 2025-06-10 * Release dedicated to the memory of Michael Black, W9MDB (SK). Mike was a diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hamlib-4.6.3/configure new/hamlib-4.6.4/configure --- old/hamlib-4.6.3/configure 2025-06-10 03:08:46.000000000 +0200 +++ new/hamlib-4.6.4/configure 2025-07-18 20:31:42.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for Hamlib 4.6.3. +# Generated by GNU Autoconf 2.69 for Hamlib 4.6.4. # # Report bugs to <hamlib-develo...@lists.sourceforge.net>. # @@ -590,8 +590,8 @@ # Identity of this package. PACKAGE_NAME='Hamlib' PACKAGE_TARNAME='hamlib' -PACKAGE_VERSION='4.6.3' -PACKAGE_STRING='Hamlib 4.6.3' +PACKAGE_VERSION='4.6.4' +PACKAGE_STRING='Hamlib 4.6.4' PACKAGE_BUGREPORT='hamlib-develo...@lists.sourceforge.net' PACKAGE_URL='http://www.hamlib.org' @@ -1489,7 +1489,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Hamlib 4.6.3 to adapt to many kinds of systems. +\`configure' configures Hamlib 4.6.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1560,7 +1560,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Hamlib 4.6.3:";; + short | recursive ) echo "Configuration of Hamlib 4.6.4:";; esac cat <<\_ACEOF @@ -1715,7 +1715,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Hamlib configure 4.6.3 +Hamlib configure 4.6.4 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2579,7 +2579,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Hamlib $as_me 4.6.3, which was +It was created by Hamlib $as_me 4.6.4, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -4822,7 +4822,7 @@ # Define the identity of the package. PACKAGE='hamlib' - VERSION='4.6.3' + VERSION='4.6.4' cat >>confdefs.h <<_ACEOF @@ -5098,7 +5098,7 @@ # Set them here to keep c++/Makefile and src/Makefile in sync. ABI_VERSION=4 ABI_REVISION=6 -ABI_PATCH=3 +ABI_PATCH=4 ABI_AGE=0 @@ -24218,7 +24218,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Hamlib $as_me 4.6.3, which was +This file was extended by Hamlib $as_me 4.6.4, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -24285,7 +24285,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -Hamlib config.status 4.6.3 +Hamlib config.status 4.6.4 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hamlib-4.6.3/configure.ac new/hamlib-4.6.4/configure.ac --- old/hamlib-4.6.3/configure.ac 2025-06-10 03:08:39.000000000 +0200 +++ new/hamlib-4.6.4/configure.ac 2025-07-18 20:31:35.000000000 +0200 @@ -14,7 +14,7 @@ dnl however, the use of '~' should be fine as apt (others?) will treat dnl it as an earlier version than the actual release. TNX KA6MAL dnl PACKAGE_NAME + " " + PACKAGE_VERSION must not exceed 20 chars! -AC_INIT([Hamlib],[4.6.3],[hamlib-develo...@lists.sourceforge.net],[hamlib],[http://www.hamlib.org]) +AC_INIT([Hamlib],[4.6.4],[hamlib-develo...@lists.sourceforge.net],[hamlib],[http://www.hamlib.org]) #AC_INIT([PRODUCT_NAME], [Hamlib]) #AC_DEFINE([Hamlib], [PRODUCT_VERSION_RESOURCE]) @@ -76,7 +76,7 @@ # Set them here to keep c++/Makefile and src/Makefile in sync. ABI_VERSION=4 ABI_REVISION=6 -ABI_PATCH=3 +ABI_PATCH=4 ABI_AGE=0 AC_DEFINE_UNQUOTED([ABI_VERSION], [$ABI_VERSION], [Frontend ABI version]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hamlib-4.6.3/doc/hamlib.cfg new/hamlib-4.6.4/doc/hamlib.cfg --- old/hamlib-4.6.3/doc/hamlib.cfg 2025-06-10 03:09:01.000000000 +0200 +++ new/hamlib-4.6.4/doc/hamlib.cfg 2025-07-18 20:31:59.000000000 +0200 @@ -1,7 +1,7 @@ ## hamlib.cfg.in--converted into hamlib.cfg by config.status PROJECT_NAME = Hamlib -PROJECT_NUMBER = 4.6.3 +PROJECT_NUMBER = 4.6.4 PROJECT_LOGO = ../doc/hamlib.png # Output diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hamlib-4.6.3/doc/man1/rigctld.1 new/hamlib-4.6.4/doc/man1/rigctld.1 --- old/hamlib-4.6.3/doc/man1/rigctld.1 2025-06-10 03:08:39.000000000 +0200 +++ new/hamlib-4.6.4/doc/man1/rigctld.1 2025-07-18 20:31:35.000000000 +0200 @@ -25,6 +25,7 @@ .OP \-D type .OP \-s baud .OP \-c id +.OP \-S char .OP \-T IPADDR .OP \-t number .OP \-C parm=val diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hamlib-4.6.3/include/hamlib/rotator.h new/hamlib-4.6.4/include/hamlib/rotator.h --- old/hamlib-4.6.3/include/hamlib/rotator.h 2025-06-10 03:08:39.000000000 +0200 +++ new/hamlib-4.6.4/include/hamlib/rotator.h 2025-07-18 20:31:35.000000000 +0200 @@ -358,6 +358,8 @@ ROT_STATUS_OVERLAP_LEFT = (1 << 14), /*!< The azimuth rotator has rotated left (CCW) past 0 degrees. */ ROT_STATUS_OVERLAP_RIGHT = (1 << 16), /*!< The azimuth rotator has rotated right (CW) past 360 degrees. */ } rot_status_t; +// Update this if any additions to status definitions +#define HAMLIB_MAX_ROTOR_STATUS 16 //! @cond Doxygen_Suppress /* So far only used in tests/sprintflst.c. */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hamlib-4.6.3/rigs/flexradio/smartsdr.c new/hamlib-4.6.4/rigs/flexradio/smartsdr.c --- old/hamlib-4.6.3/rigs/flexradio/smartsdr.c 2025-06-10 03:08:39.000000000 +0200 +++ new/hamlib-4.6.4/rigs/flexradio/smartsdr.c 2025-07-18 20:31:35.000000000 +0200 @@ -45,6 +45,8 @@ pbwidth_t width); static int smartsdr_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width); +static int smartsdr_send_morse(RIG *rig, vfo_t vfo, const char *msg); +static int smartsdr_stop_morse(RIG *rig, vfo_t vfo); //static int smartsdr_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val); struct smartsdr_priv_data @@ -619,3 +621,42 @@ } } #endif + +int smartsdr_send_morse(RIG *rig, vfo_t vfo, const char *msg) +{ + ENTERFUNC; + + int retval; + size_t msg_len = strlen(msg); + size_t buf_len = msg_len + 20; + + char newmsg[msg_len + 1]; + strncpy(newmsg, msg, msg_len + 1); + + // Replace spaces with 0x7f + for (size_t i = 0; newmsg[i] != '\0'; i++) { + if (newmsg[i] == ' ') { + newmsg[i] = 0x7f; + } + } + + char cmd[buf_len]; + snprintf(cmd, sizeof(cmd), "cwx send \"%s\"", newmsg); + + retval = smartsdr_transaction(rig, cmd); + + RETURNFUNC(retval); +} + +int smartsdr_stop_morse(RIG *rig, vfo_t vfo) +{ + int retval; + char cmd[64]; + ENTERFUNC; + + sprintf(cmd, "cwx clear"); + retval = smartsdr_transaction(rig, cmd); + + RETURNFUNC(retval); + +} \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hamlib-4.6.3/rigs/flexradio/smartsdr_caps.h new/hamlib-4.6.4/rigs/flexradio/smartsdr_caps.h --- old/hamlib-4.6.3/rigs/flexradio/smartsdr_caps.h 2025-06-10 03:08:39.000000000 +0200 +++ new/hamlib-4.6.4/rigs/flexradio/smartsdr_caps.h 2025-07-18 20:31:35.000000000 +0200 @@ -75,4 +75,6 @@ // .reset = smartsdr_reset, // .set_level = smartsdr_set_level, // .set_func = _set_func, - .hamlib_check_rig_caps = HAMLIB_CHECK_RIG_CAPS + .send_morse = smartsdr_send_morse, + .stop_morse = smartsdr_stop_morse, + .hamlib_check_rig_caps = HAMLIB_CHECK_RIG_CAPS \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hamlib-4.6.3/rigs/icom/icr75.c new/hamlib-4.6.4/rigs/icom/icr75.c --- old/hamlib-4.6.3/rigs/icom/icr75.c 2025-06-10 03:08:39.000000000 +0200 +++ new/hamlib-4.6.4/rigs/icom/icr75.c 2025-07-18 20:31:35.000000000 +0200 @@ -245,7 +245,7 @@ .scan = icom_scan, .set_ts = icom_set_ts, .set_powerstat = icom_set_powerstat, - .get_powerstat = icom_get_powerstat, + //.get_powerstat = icom_get_powerstat, .set_channel = icr75_set_channel, .get_channel = icr75_get_channel, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hamlib-4.6.3/rigs/jrc/jrc.c new/hamlib-4.6.4/rigs/jrc/jrc.c --- old/hamlib-4.6.3/rigs/jrc/jrc.c 2025-06-10 03:08:39.000000000 +0200 +++ new/hamlib-4.6.4/rigs/jrc/jrc.c 2025-07-18 20:31:35.000000000 +0200 @@ -1459,6 +1459,8 @@ chan->levels[rig_setting2idx(RIG_LEVEL_AGC)].i); } + cmdbuf[priv->mem_len - 1] = 0x0d; + return jrc_transaction(rig, cmdbuf, strlen(cmdbuf), NULL, NULL); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hamlib-4.6.3/rigs/kenwood/kenwood.c new/hamlib-4.6.4/rigs/kenwood/kenwood.c --- old/hamlib-4.6.3/rigs/kenwood/kenwood.c 2025-06-10 03:08:39.000000000 +0200 +++ new/hamlib-4.6.4/rigs/kenwood/kenwood.c 2025-07-18 20:31:35.000000000 +0200 @@ -231,6 +231,12 @@ { RIG_CONF_END, NULL, } }; +// This function removes non-printable characters from a buffer. This was +// implemented to work around a problem reported with the uSDX transceiver +// [1], which emulates the Kenwood TS-480 but apparently generates garbage +// on the serial port in some situations. +// +// [1]: https://github.com/Hamlib/Hamlib/issues/1652 static int remove_nonprint(char *s) { int i, j = 0; @@ -443,9 +449,14 @@ rig_debug(RIG_DEBUG_TRACE, "%s: read_string len=%d '%s'\n", __func__, (int)strlen(buffer), buffer); - // this fixes the case when some corrupt data is returned - // let's us be a little more robust about funky serial data - remove_nonprint(buffer); + // This fixes the case when some corrupt data is returned; it lets us be a + // little more robust about funky serial data. If the terminator is + // printable(usually ';'), then there should be no nonprintables in the + // message; if it isn't (usually '\r') then don't touch the message. + if (isprint(caps->cmdtrm)) + { + remove_nonprint(buffer); + } if (retval < 0) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hamlib-4.6.3/rigs/kenwood/ts590.c new/hamlib-4.6.4/rigs/kenwood/ts590.c --- old/hamlib-4.6.3/rigs/kenwood/ts590.c 2025-06-10 03:08:39.000000000 +0200 +++ new/hamlib-4.6.4/rigs/kenwood/ts590.c 2025-07-18 20:31:35.000000000 +0200 @@ -1013,15 +1013,14 @@ case RIG_LEVEL_RFPOWER_METER: case RIG_LEVEL_RFPOWER_METER_WATTS: { - static cal_table_t power_meter = + int raw_value; + const static cal_table_t power_meter = { 7, { { 0, 0}, { 3, 5}, { 6, 10}, { 8, 15}, {12, 25}, { 17, 50}, { 30, 100} } }; - int raw_value; - if (CACHE(rig)->ptt == RIG_PTT_OFF) { val->f = 0; @@ -1037,8 +1036,6 @@ sscanf(ackbuf, "SM0%d", &raw_value); -// val->f = (float) raw_value / 30.0f; - if (level == RIG_LEVEL_RFPOWER_METER_WATTS) { val->f = roundf(rig_raw2val(raw_value, &power_meter)); @@ -1049,7 +1046,11 @@ } } - + else + { + val->f = (float) raw_value / 30.0f; + } + break; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hamlib-4.6.3/src/hamlibdatetime.h new/hamlib-4.6.4/src/hamlibdatetime.h --- old/hamlib-4.6.3/src/hamlibdatetime.h 2025-06-10 03:09:07.000000000 +0200 +++ new/hamlib-4.6.4/src/hamlibdatetime.h 2025-07-18 20:32:05.000000000 +0200 @@ -1,2 +1,2 @@ /* This date time is from the last non-merge commit to Hamlib. */ -#define HAMLIBDATETIME "2025-06-10T00:52:44Z SHA=371db9" +#define HAMLIBDATETIME "2025-07-18T18:23:23Z SHA=59e3d1" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hamlib-4.6.3/src/sprintflst.c new/hamlib-4.6.4/src/sprintflst.c --- old/hamlib-4.6.3/src/sprintflst.c 2025-06-10 03:08:39.000000000 +0200 +++ new/hamlib-4.6.4/src/sprintflst.c 2025-07-18 20:31:35.000000000 +0200 @@ -816,7 +816,7 @@ return 0; } - for (i = 0; i < HAMLIB_MAX_ROTORS; i++) + for (i = 0; i <= HAMLIB_MAX_ROTOR_STATUS; i++) { const char *sv = rot_strstatus(status & ROT_STATUS_N(i)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hamlib-4.6.3/tests/rigctl_parse.c new/hamlib-4.6.4/tests/rigctl_parse.c --- old/hamlib-4.6.3/tests/rigctl_parse.c 2025-06-10 03:08:39.000000000 +0200 +++ new/hamlib-4.6.4/tests/rigctl_parse.c 2025-07-18 20:31:35.000000000 +0200 @@ -497,9 +497,9 @@ // modifies s to remove quotes -void strip_quotes(char *s) +static void strip_quotes(char *s) { - char *s2 = strdup(s); + char *s2; char *p; if (s[0] != '\"') { return; } // no quotes @@ -510,6 +510,7 @@ if (p) { *p = 0; } strcpy(s, s2); + free(s2); } #ifdef HAVE_LIBREADLINE diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hamlib-4.6.3/tests/rigctld.c new/hamlib-4.6.4/tests/rigctld.c --- old/hamlib-4.6.3/tests/rigctld.c 2025-06-10 03:08:39.000000000 +0200 +++ new/hamlib-4.6.4/tests/rigctld.c 2025-07-18 20:31:35.000000000 +0200 @@ -1251,6 +1251,7 @@ char serv[NI_MAXSERV]; char send_cmd_term = '\r'; /* send_cmd termination char */ int ext_resp = 0; + char my_resp_sep = resp_sep; // Separator for this connection, initial default rig_powerstat = RIG_POWER_ON; // defaults to power on struct timespec powerstat_check_time; @@ -1299,7 +1300,7 @@ #else mutex_rigctld(1); retcode = rig_open(my_rig); - mutex_rigctld(1); + mutex_rigctld(0); if (RIG_OK == retcode && verbose > RIG_DEBUG_ERR) { @@ -1340,8 +1341,8 @@ __func__, handle_data_arg->vfo_mode, handle_data_arg->use_password); retcode = rigctl_parse(handle_data_arg->rig, fsockin, fsockout, NULL, 0, - mutex_rigctld, - 1, 0, &handle_data_arg->vfo_mode, send_cmd_term, &ext_resp, &resp_sep, + mutex_rigctld, 1, 0, &handle_data_arg->vfo_mode, + send_cmd_term, &ext_resp, &my_resp_sep, handle_data_arg->use_password); if (retcode != 0) { rig_debug(RIG_DEBUG_VERBOSE, "%s: rigctl_parse retcode=%d\n", __func__, retcode); }