Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package sane-airscan for openSUSE:Factory checked in at 2026-03-17 19:05:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/sane-airscan (Old) and /work/SRC/openSUSE:Factory/.sane-airscan.new.8177 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "sane-airscan" Tue Mar 17 19:05:23 2026 rev:11 rq:1339551 version:0.99.37 Changes: -------- --- /work/SRC/openSUSE:Factory/sane-airscan/sane-airscan.changes 2025-07-25 17:07:37.859028898 +0200 +++ /work/SRC/openSUSE:Factory/.sane-airscan.new.8177/sane-airscan.changes 2026-03-17 19:07:22.295818039 +0100 @@ -1,0 +2,13 @@ +Tue Mar 17 09:19:22 UTC 2026 - [email protected] + +- Update to version 0.99.37: + * Document support for Canon Pixma TR4527 + * mdns: fixed assertion, if avahi_service_browser_new returns NULL + * Fixed SIGSEGV in http_data_set_content_type() + * Fixed compilation with ISO C23-capable compiler + * Document support for Brother DCP-L2530DW + * Document support for Brother DCP-L2660DW + * Documented Canon MF660C Series support + * Add EPSON EW-M752T to support list + +------------------------------------------------------------------- Old: ---- sane-airscan-0.99.36.tar.zst New: ---- sane-airscan-0.99.37.tar.zst ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ sane-airscan.spec ++++++ --- /var/tmp/diff_new_pack.Wo1JIZ/_old 2026-03-17 19:07:22.807839258 +0100 +++ /var/tmp/diff_new_pack.Wo1JIZ/_new 2026-03-17 19:07:22.811839424 +0100 @@ -1,7 +1,7 @@ # # spec file for package sane-airscan # -# Copyright (c) 2025 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,7 +17,7 @@ Name: sane-airscan -Version: 0.99.36 +Version: 0.99.37 Release: 0 Summary: Universal driver for Apple AirScan (eSCL) and WSD License: SUSE-GPL-2.0+-with-sane-exception @@ -53,7 +53,7 @@ %install %meson_install -rm %{buildroot}%{_libdir}/sane/libsane-airscan.so +rm %{buildroot}%{_libdir}/sane/lib%{name}.so %files %license LICENSE COPYING @@ -61,7 +61,7 @@ %{_bindir}/airscan-discover %config(noreplace) %{_sysconfdir}/sane.d/airscan.conf %config %{_sysconfdir}/sane.d/dll.d/airscan -%{_libdir}/sane/libsane-airscan.so.1 +%{_libdir}/sane/lib%{name}.so.1 %{_mandir}/man?/{sane-airscan,airscan-discover}.?%{?ext_man} %if 0%{?suse_version} == 1500 %dir %{_sysconfdir}/sane.d/dll.d ++++++ _service ++++++ --- /var/tmp/diff_new_pack.Wo1JIZ/_old 2026-03-17 19:07:22.851841081 +0100 +++ /var/tmp/diff_new_pack.Wo1JIZ/_new 2026-03-17 19:07:22.855841247 +0100 @@ -2,7 +2,7 @@ <service name="tar_scm" mode="manual"> <param name="url">https://github.com/alexpevzner/sane-airscan.git</param> <param name="scm">git</param> - <param name="revision">0.99.36</param> + <param name="revision">0.99.37</param> <param name="versionformat">@PARENT_TAG@</param> <param name="changesgenerate">enable</param> </service> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.Wo1JIZ/_old 2026-03-17 19:07:22.887842573 +0100 +++ /var/tmp/diff_new_pack.Wo1JIZ/_new 2026-03-17 19:07:22.895842905 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/alexpevzner/sane-airscan.git</param> - <param name="changesrevision">48cfe8d3ae4ad22006fa002852c9363627d0f78d</param></service></servicedata> + <param name="changesrevision">03eddd0d8058c482462bccabadad0e56e8400cb4</param></service></servicedata> (No newline at EOF) ++++++ sane-airscan-0.99.36.tar.zst -> sane-airscan-0.99.37.tar.zst ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sane-airscan-0.99.36/README.md new/sane-airscan-0.99.37/README.md --- old/sane-airscan-0.99.36/README.md 2025-07-25 13:41:45.000000000 +0200 +++ new/sane-airscan-0.99.37/README.md 2026-03-10 18:26:18.000000000 +0100 @@ -61,8 +61,10 @@ | Brother DCP-7070DW | No | Yes | | Brother DCP-9020CDW | No | Yes | | Brother DCP-J552DW | No | Yes | +| Brother DCP-L2530DW | Yes | Yes | | Brother DCP-L2540DW | No | Yes | | Brother DCP-L2550DN / DCP-L2550DW | Yes | | +| Brother DCP-L2660DW | Yes | | | Brother HL-L2380DW series | No | Yes | | Brother HL-L2395DW series | Yes | | | Brother MFC-7360N | No | Yes | @@ -105,6 +107,7 @@ | Canon MF440 Series | Yes | Yes | | Canon MF645Cx | Yes | | | Canon MF650C Series | Yes | | +| Canon MF660C Series | Yes | | | Canon MF745C/746C | Yes | Yes | | Canon MG5200 series | No | Yes | | Canon MG5300 series | No | Yes | @@ -116,6 +119,7 @@ | Canon PIXMA MG7700 Series | Yes | | | Canon PIXMA TS5000 Series | Yes | | | Canon PIXMA TS 9550 Series | Yes | | +| Canon TR4527 | Yes | | | Canon TR4529 (PIXMA TR4500 Series) | Yes | Yes | | Canon TR4700 series | Yes | | | Canon TR7500 Series | No | Yes | @@ -142,6 +146,7 @@ | EPSON ET-4750 Series | No | Yes | | EPSON ET-4850 Series | Yes | | | EPSON ET-M2170 Series | Yes | | +| EPSON EW-M752T Series | No | Yes | | EPSON L6570 Series | Yes | Yes | | EPSON Stylus SX535WD | No | Yes | | EPSON WF-2760 Series | | Yes | diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sane-airscan-0.99.36/airscan-http.c new/sane-airscan-0.99.37/airscan-http.c --- old/sane-airscan-0.99.36/airscan-http.c 2025-07-25 13:41:45.000000000 +0200 +++ new/sane-airscan-0.99.37/airscan-http.c 2026-03-10 18:26:18.000000000 +0100 @@ -662,7 +662,7 @@ /* Find 1st occurrence of the character in the string, * defined by begin and end pointers */ -static char * +static const char * http_uri_str_chr(const char *beg, const char *end, char c) { return memchr(beg, c, end - beg); @@ -737,8 +737,8 @@ * the next "/" character or the end of the input buffer. */ } else { - char *s = http_uri_str_chr(input + 1, end, '/'); - size_t sz = s ? s - input : end - input; + const char *s = http_uri_str_chr(input + 1, end, '/'); + size_t sz = s ? s - input : end - input; memmove(path_end, input, sz); path_end += sz; @@ -1783,13 +1783,14 @@ if (content_type == NULL) { content_type = str_dup("text/plain"); } else { - char *s; + char *content_type2 = str_dup_tolower(content_type); + char *s = strchr(content_type2, ';'); - content_type = str_dup_tolower(content_type); - s = strchr(content_type, ';'); if (s != NULL) { *s = '\0'; } + + content_type = content_type2; } data->content_type = content_type; @@ -2156,7 +2157,8 @@ static void http_query_set_host (http_query *q) { - char *host, *end, *buf; + const char *host, *end; + char *buf; size_t len; const struct sockaddr *addr = http_uri_addr(q->uri); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sane-airscan-0.99.36/airscan-mdns.c new/sane-airscan-0.99.37/airscan-mdns.c --- old/sane-airscan-0.99.36/airscan-mdns.c 2025-07-25 13:41:45.000000000 +0200 +++ new/sane-airscan-0.99.37/airscan-mdns.c 2026-03-10 18:26:18.000000000 +0100 @@ -75,6 +75,7 @@ static const AvahiPoll *mdns_avahi_poll; static AvahiTimeout *mdns_avahi_restart_timer; static AvahiClient *mdns_avahi_client; +static bool mdns_avahi_client_set_pending; static bool mdns_avahi_browser_running; static AvahiServiceBrowser *mdns_avahi_browser[NUM_MDNS_SERVICE]; static bool mdns_initscan[NUM_MDNS_SERVICE]; @@ -109,12 +110,12 @@ sprintf(ifname, "%d", interface); } - if (in_name == NULL) { + if (in_name != NULL && in_type != NULL) { + snprintf(buf, sizeof(buf), "\"%s\", \"%s\"", in_type, in_name); + } else if (in_type != NULL) { snprintf(buf, sizeof(buf), "\"%s\"", in_type); - } else if (in_type == NULL) { + } else if (in_name != NULL) { snprintf(buf, sizeof(buf), "\"%s\"", in_name); - } else { - snprintf(buf, sizeof(buf), "\"%s\", \"%s\"", in_type, in_name); } flags &= AVAHI_LOOKUP_RESULT_CACHED | @@ -901,7 +902,10 @@ * return, so mdns_avahi_client may be still unset. * Fix it here */ - mdns_avahi_client = client; + if (mdns_avahi_client_set_pending) { + mdns_avahi_client = client; + mdns_avahi_client_set_pending = false; + } if (!mdns_avahi_browser_running) { if (!mdns_avahi_browser_start()) { @@ -946,12 +950,28 @@ static void mdns_avahi_client_start (void) { - int error; + int error; + AvahiClient *client; log_assert(mdns_log, mdns_avahi_client == NULL); - mdns_avahi_client = avahi_client_new (mdns_avahi_poll, + /* Note: mdns_avahi_client_callback may be invoked before + * avahi_client_new() returns. In that case, the callback will + * save the mdns_avahi_client pointer. The callback may also + * initiate further operations that could fail, in which case it + * might reset mdns_avahi_client to NULL. To prevent this function + * from overwriting the callback's updates to mdns_avahi_client, + * we use the mdns_avahi_client_set_pending flag to coordinate access. + */ + mdns_avahi_client_set_pending = true; + client = avahi_client_new (mdns_avahi_poll, AVAHI_CLIENT_NO_FAIL, mdns_avahi_client_callback, NULL, &error); + + if (mdns_avahi_client_set_pending) { + mdns_avahi_client = client; + mdns_avahi_client_set_pending = false; + } + if (mdns_avahi_client == NULL) { log_debug(mdns_log, "avahi_client_new failed: %s", avahi_strerror(error)); }
