Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package microcom for openSUSE:Factory checked in at 2026-10-21 21:00:09 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/microcom (Old) and /work/SRC/openSUSE:Factory/.microcom.new.2252680 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "microcom" Wed Oct 21 21:00:09 2026 rev:4 rq:1386747 version:2025.11.0.0 Changes: -------- --- /work/SRC/openSUSE:Factory/microcom/microcom.changes 2024-10-25 19:22:59.379002898 +0200 +++ /work/SRC/openSUSE:Factory/.microcom.new.2252680/microcom.changes 2026-10-21 21:01:56.037184290 +0200 @@ -1,0 +2,10 @@ +Sun Oct 18 10:52:59 UTC 2026 - Martin Pluskal <[email protected]> + +- Update to version 2025.11.0.0: + * allow specifying the escape character + * error out on positional arguments instead of silently ignoring them + * set the local tty like `stty raw -echo` for transparent communication +- Switch _service from legacy mode="disabled" to mode="manual" and pin + revision v2025.11.0 (upstream renamed the default branch to main) + +------------------------------------------------------------------- Old: ---- microcom-2023.09.0.0.tar New: ---- microcom-2025.11.0.0.tar ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ microcom.spec ++++++ --- /var/tmp/diff_new_pack.ubgbQ8/_old 2026-10-21 21:01:56.773215236 +0200 +++ /var/tmp/diff_new_pack.ubgbQ8/_new 2026-10-21 21:01:56.775215319 +0200 @@ -1,7 +1,7 @@ # # spec file for package microcom # -# Copyright (c) 2020 SUSE LLC +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,16 +17,16 @@ Name: microcom -Version: 2023.09.0.0 +Version: 2025.11.0.0 Release: 0 Summary: Minimalistic terminal program License: GPL-2.0-only -Group: System/Console URL: https://github.com/pengutronix/microcom.git Source0: microcom-%{version}.tar BuildRequires: autoconf BuildRequires: automake -BuildRequires: readline-devel +BuildRequires: pkgconfig +BuildRequires: pkgconfig(readline) %description microcom is a minimalistic terminal program for communicating with devices over ++++++ _service ++++++ --- /var/tmp/diff_new_pack.ubgbQ8/_old 2026-10-21 21:01:56.825217422 +0200 +++ /var/tmp/diff_new_pack.ubgbQ8/_new 2026-10-21 21:01:56.832217716 +0200 @@ -2,14 +2,15 @@ <!-- for more details on the syntax --> <services> - <service name="tar_scm" mode="disabled"> + <service name="tar_scm" mode="manual"> <param name="scm">git</param> <param name="url">https://github.com/pengutronix/microcom.git</param> + <param name="revision">v2025.11.0</param> <param name="filename">microcom</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="versionrewrite-replacement">\1</param> <param name="versionformat">@PARENT_TAG@.@TAG_OFFSET@</param> </service> - <service mode="disabled" name="set_version" /> + <service mode="manual" name="set_version" /> </services> ++++++ microcom-2023.09.0.0.tar -> microcom-2025.11.0.0.tar ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/microcom-2023.09.0.0/.github/workflows/build.yml new/microcom-2025.11.0.0/.github/workflows/build.yml --- old/microcom-2023.09.0.0/.github/workflows/build.yml 2023-09-07 11:51:05.000000000 +0200 +++ new/microcom-2025.11.0.0/.github/workflows/build.yml 2025-11-28 17:35:18.000000000 +0100 @@ -1,4 +1,3 @@ ---- name: Build test on: push: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/microcom-2023.09.0.0/.github/workflows/release-pr.yml new/microcom-2025.11.0.0/.github/workflows/release-pr.yml --- old/microcom-2023.09.0.0/.github/workflows/release-pr.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/microcom-2025.11.0.0/.github/workflows/release-pr.yml 2025-11-28 17:35:18.000000000 +0100 @@ -0,0 +1,102 @@ +name: Draft Release + +on: + pull_request: + types: [opened, synchronize, reopened, closed] + paths: + - VERSION + branches: [main] + +permissions: + contents: write + pull-requests: write + +jobs: + validate-release-commit: + if: > + !(github.event.pull_request.merged == true && + !contains(join(github.event.pull_request.labels.*.name), 'release')) + + runs-on: ubuntu-latest + + steps: + - name: Checkout merge + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Get release commit info + id: version + run: | + ver=$(cat VERSION) + if ! echo "$ver" | grep -Eq '^[0-9]{4}\.[0-9]{2}\.[0-9]+$'; then + echo "Invalid version format: $ver" + exit 1 + fi + + echo "version=$ver" >> $GITHUB_OUTPUT + + headline="$(git show --format=%s ${{github.event.pull_request.head.sha}})" + if ! echo "$headline" | grep -Eq "^[Rr]elease microcom $ver$"; then + echo "Invalid commit headline: $headline" + exit 1 + fi + + body="$( + git show -s --format=%b ${{github.event.pull_request.head.sha}} \ + | sed -E '/^Signed-off-by: /d' + )" + + echo 'body<<EOF' >> $GITHUB_OUTPUT + echo "$body" >> $GITHUB_OUTPUT + echo 'EOF' >> $GITHUB_OUTPUT + + - name: Install Dependencies + run: sudo apt install -y libreadline6-dev autoconf automake + + - name: Build release packages + run: | + autoreconf -i + ./configure + make check + make dist + + # DRAFT release on pr creation and update + - name: Create or update release draft + if: github.event.pull_request.merged == false + uses: softprops/action-gh-release@v2 + with: + draft: true + tag_name: v${{steps.version.outputs.version}} + name: microcom ${{steps.version.outputs.version}} + body: ${{steps.version.outputs.body}} + files: | + microcom-*.tar.gz + microcom-*.tar.xz + + # PUBLISH release on merge + - name: Publish release on merge + if: github.event.pull_request.merged == true + uses: softprops/action-gh-release@v2 + with: + draft: false + tag_name: v${{steps.version.outputs.version}} + files: | + microcom-*.tar.gz + microcom-*.tar.xz + + - run: gh pr edit "$NUMBER" --add-label "$LABELS" + if: github.event.pull_request.merged == false + env: + GH_TOKEN: ${{secrets.GITHUB_TOKEN}} + GH_REPO: ${{github.repository}} + NUMBER: ${{github.event.pull_request.number}} + LABELS: release + + - run: gh pr comment "$NUMBER" --body "Release published!" + if: github.event.pull_request.merged == true + env: + GH_TOKEN: ${{secrets.GITHUB_TOKEN}} + GH_REPO: ${{github.repository}} + NUMBER: ${{github.event.pull_request.number}} + LABELS: release diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/microcom-2023.09.0.0/Makefile.am new/microcom-2025.11.0.0/Makefile.am --- old/microcom-2023.09.0.0/Makefile.am 2023-09-07 11:51:05.000000000 +0200 +++ new/microcom-2025.11.0.0/Makefile.am 2025-11-28 17:35:18.000000000 +0100 @@ -1,7 +1,7 @@ AUTOMAKE_OPTIONS = foreign ACLOCAL_AMFLAGS = -I m4 --install -EXTRA_DIST = DCO README.md +EXTRA_DIST = COPYING DCO README.md VERSION bin_PROGRAMS = microcom microcom_SOURCES = commands.c commands_fsl_imx.c microcom.c mux.c parser.c serial.c telnet.c diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/microcom-2023.09.0.0/VERSION new/microcom-2025.11.0.0/VERSION --- old/microcom-2023.09.0.0/VERSION 1970-01-01 01:00:00.000000000 +0100 +++ new/microcom-2025.11.0.0/VERSION 2025-11-28 17:35:18.000000000 +0100 @@ -0,0 +1 @@ +2025.11.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/microcom-2023.09.0.0/can.c new/microcom-2025.11.0.0/can.c --- old/microcom-2023.09.0.0/can.c 2023-09-07 11:51:05.000000000 +0200 +++ new/microcom-2025.11.0.0/can.c 2025-11-28 17:35:18.000000000 +0100 @@ -53,10 +53,7 @@ loopcount = min(count, sizeof(to_can.data)); memcpy(to_can.data, buf, loopcount); to_can.can_dlc = loopcount; -retry: err = write(ios->fd, &to_can, sizeof(to_can)); - if (err < 0 && errno == EINTR) - goto retry; if (err < 0) return err; @@ -75,10 +72,7 @@ struct can_frame from_can; ssize_t ret; -retry: ret = read(ios->fd, &from_can, sizeof(from_can)); - if (ret < 0 && errno != EINTR) - goto retry; if (ret < 0) return ret; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/microcom-2023.09.0.0/commands.c new/microcom-2025.11.0.0/commands.c --- old/microcom-2023.09.0.0/commands.c 2023-09-07 11:51:05.000000000 +0200 +++ new/microcom-2025.11.0.0/commands.c 2025-11-28 17:35:18.000000000 +0100 @@ -155,7 +155,8 @@ static int cmd_sendescape(int argc, char *argv[]) { - ios->write(ios, "\x1c", 1); + unsigned char tmp = CTRL(escape_char); + ios->write(ios, &tmp, 1); return 0; } @@ -234,7 +235,7 @@ }, { .name = "sendescape", .fn = cmd_sendescape, - .info = "send a Ctrl-\\", + .info = "send the escape sequence", }, { .name = "quit", .fn = cmd_quit, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/microcom-2023.09.0.0/configure.ac new/microcom-2025.11.0.0/configure.ac --- old/microcom-2023.09.0.0/configure.ac 2023-09-07 11:51:05.000000000 +0200 +++ new/microcom-2025.11.0.0/configure.ac 2025-11-28 17:35:18.000000000 +0100 @@ -1,4 +1,4 @@ -AC_INIT([microcom], [2023.09.0], [[email protected]]) +AC_INIT([microcom], [m4_esyscmd_s(cat VERSION)], [[email protected]]) AC_CONFIG_AUX_DIR([build-aux]) AC_CONFIG_MACRO_DIR([m4]) AM_INIT_AUTOMAKE([dist-xz]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/microcom-2023.09.0.0/microcom.1 new/microcom-2025.11.0.0/microcom.1 --- old/microcom-2023.09.0.0/microcom.1 2023-09-07 11:51:05.000000000 +0200 +++ new/microcom-2025.11.0.0/microcom.1 2025-11-28 17:35:18.000000000 +0100 @@ -14,6 +14,8 @@ .IR host : port ] .RB [\| \-s .IR speed \|] +.RB [\| \-e +.IR escape-char \|] .br .B microcom -c .IB interface : rx_id : tx_id @@ -65,6 +67,9 @@ .BI \-c\ interface\fB:\fIrx_id\fB:\fItx_id\fR,\ \fI \-\-can= interface\fB:\fIrx_id\fB:\fItx_id work in CAN mode (default: \fBcan0:200:200\fR) .TP +.BI \-e\ escape-character \fR,\ \fB\-\-escape-char= char +use specified escape charater with Ctrl (default \fB\\\fR). +.TP .BR -h ", " \-\-help Show help. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/microcom-2023.09.0.0/microcom.c new/microcom-2025.11.0.0/microcom.c --- old/microcom-2023.09.0.0/microcom.c 2023-09-07 11:51:05.000000000 +0200 +++ new/microcom-2025.11.0.0/microcom.c 2025-11-28 17:35:18.000000000 +0100 @@ -43,15 +43,17 @@ memcpy(&sts, &sots, sizeof (sots)); /* to be used upon exit */ - /* again, some arbitrary things */ - sts.c_iflag &= ~(IGNCR | INLCR | ICRNL); - sts.c_iflag |= IGNBRK; - sts.c_lflag &= ~ISIG; + /* Implement what `stty raw` does. */ + sts.c_iflag &= ~(IGNBRK | BRKINT | IGNPAR | PARMRK | INPCK | + ISTRIP | INLCR | IGNCR | ICRNL | IXON | IXOFF | + IUCLC | IXANY | IMAXBEL); + sts.c_lflag &= ~(ICANON | ISIG | XCASE); + sts.c_oflag &= ~OPOST; sts.c_cc[VMIN] = 1; sts.c_cc[VTIME] = 0; - sts.c_lflag &= ~ICANON; + /* no local echo: allow the other end to do the echoing */ - sts.c_lflag &= ~(ECHO | ECHOCTL | ECHONL); + sts.c_lflag &= ~ECHO; tcsetattr(STDIN_FILENO, TCSANOW, &sts); } @@ -99,12 +101,14 @@ " -l, --logfile=<logfile> log output to <logfile>\n" " -o, --listenonly Do not modify local terminal, do not send input\n" " from stdin\n" - " -a, --answerback=<str> specify the answerback string sent as response to\n" + " -a, --answerback=<str> specify the answerback string sent as response to\n" " an ENQ (ASCII 0x05) Character\n" + " -e, --escape-char=<chr> escape charater to use with Ctrl (%c)\n" " -v, --version print version string\n" " -h, --help This help\n", DEFAULT_DEVICE, DEFAULT_BAUDRATE, - DEFAULT_CAN_INTERFACE, DEFAULT_CAN_ID, DEFAULT_CAN_ID); + DEFAULT_CAN_INTERFACE, DEFAULT_CAN_ID, DEFAULT_CAN_ID, + DEFAULT_ESCAPE_CHAR); fprintf(stderr, "Exitcode %d - %s %s\n\n", exitcode, str, dev); exit(exitcode); } @@ -113,6 +117,7 @@ unsigned long current_speed = DEFAULT_BAUDRATE; int current_flow = FLOW_NONE; int listenonly = 0; +char escape_char = DEFAULT_ESCAPE_CHAR; int main(int argc, char *argv[]) { @@ -139,7 +144,7 @@ { }, }; - while ((opt = getopt_long(argc, argv, "hp:s:t:c:dfl:oi:a:v", long_options, NULL)) != -1) { + while ((opt = getopt_long(argc, argv, "hp:s:t:c:dfl:oi:a:e:v", long_options, NULL)) != -1) { switch (opt) { case '?': main_usage(1, "", ""); @@ -180,9 +185,19 @@ case 'a': answerback = optarg; break; + case 'e': + if (strlen(optarg) != 1) { + fprintf(stderr, "Option -e requires a single character argument.\n"); + exit(EXIT_FAILURE); + } + escape_char = *optarg; + break; } } + if (optind < argc) + main_usage(1, "", ""); + if (answerback) { ret = asprintf(&answerback, "%s\n", answerback); if (ret < 0) @@ -224,7 +239,7 @@ ios->set_flow(ios, current_flow); if (!listenonly) { - printf("Escape character: Ctrl-\\\n"); + printf("Escape character: Ctrl-%c\n", escape_char); printf("Type the escape character to get to the prompt.\n"); /* Now deal with the local terminal side */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/microcom-2023.09.0.0/microcom.h new/microcom-2025.11.0.0/microcom.h --- old/microcom-2023.09.0.0/microcom.h 2023-09-07 11:51:05.000000000 +0200 +++ new/microcom-2025.11.0.0/microcom.h 2025-11-28 17:35:18.000000000 +0100 @@ -29,6 +29,7 @@ #include <stdbool.h> #include <signal.h> #include <string.h> +#include <sys/ttydefaults.h> #include <termios.h> #include <unistd.h> #include <assert.h> @@ -37,6 +38,7 @@ #define DEFAULT_DEVICE "/dev/ttyS0" #define DEFAULT_CAN_INTERFACE "can0" #define DEFAULT_CAN_ID (0x200) +#define DEFAULT_ESCAPE_CHAR ('\\') struct ios_ops { ssize_t (*write)(struct ios_ops *, const void *buf, size_t count); @@ -73,6 +75,7 @@ extern int opt_force; extern int listenonly; extern char *answerback; +extern char escape_char; struct cmd { char *name; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/microcom-2023.09.0.0/mux.c new/microcom-2025.11.0.0/mux.c --- old/microcom-2023.09.0.0/mux.c 2023-09-07 11:51:05.000000000 +0200 +++ new/microcom-2025.11.0.0/mux.c 2025-11-28 17:35:18.000000000 +0100 @@ -73,7 +73,7 @@ while (current < num) { /* big while loop, to process all the charactes in buffer */ /* look for the next escape character (Ctrl-\) */ - while ((current < num) && (buf[current] != 28)) + while ((current < num) && (buf[current] != CTRL(escape_char))) current++; /* and write the sequence before esc char to the comm port */ if (current)
