diff options
Diffstat (limited to 'debian/patches')
| -rw-r--r-- | debian/patches/0040-remove_git.patch | 12 | ||||
| -rw-r--r-- | debian/patches/0050-Use-python3-shebang.patch | 16 | ||||
| -rw-r--r-- | debian/patches/0060-cross.patch | 54 | ||||
| -rw-r--r-- | debian/patches/0100-source_spelling.patch | 194 | ||||
| -rw-r--r-- | debian/patches/0125-multiarch_dll_search_path.patch | 44 | ||||
| -rw-r--r-- | debian/patches/0140-avahi.patch | 90 | ||||
| -rw-r--r-- | debian/patches/0145-avahi.patch | 34 | ||||
| -rw-r--r-- | debian/patches/0150-i386-test.patch | 48 | ||||
| -rw-r--r-- | debian/patches/0155-hurd_PATH_MAX.patch | 364 | ||||
| -rw-r--r-- | debian/patches/0175-fix_tests.patch | 96 | ||||
| -rw-r--r-- | debian/patches/0180-Escl_force_idle_status.patch | 253 | ||||
| -rw-r--r-- | debian/patches/0185-fix_memory.patch | 62 | ||||
| -rw-r--r-- | debian/patches/0190-Fix_scanimage_help.patch | 20 | ||||
| -rw-r--r-- | debian/patches/0200-disable-check-equal-stderr.patch | 23 | ||||
| -rw-r--r-- | debian/patches/0205-ftbfs_with_GCC-15.patch | 22 | ||||
| -rw-r--r-- | debian/patches/0605-fix_groff-warnings.patch | 20 | ||||
| -rw-r--r-- | debian/patches/0610-fix_groff_font_warnings.patch | 55 | ||||
| -rw-r--r-- | debian/patches/0705-kfreebsd.patch | 17 | ||||
| -rw-r--r-- | debian/patches/series | 18 | 
19 files changed, 1442 insertions, 0 deletions
diff --git a/debian/patches/0040-remove_git.patch b/debian/patches/0040-remove_git.patch new file mode 100644 index 0000000..cc70771 --- /dev/null +++ b/debian/patches/0040-remove_git.patch @@ -0,0 +1,12 @@ +Description: fix missing .tarball-version if git isn't used +Author: Jörg Frings-Fürst <debian@jff.email> +Bug: https://gitlab.com/sane-project/backends/-/issues/440 +Last-Update: 2021-02-17 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +Index: trunk/.tarball-version +=================================================================== +--- /dev/null ++++ trunk/.tarball-version +@@ -0,0 +1 @@ ++1.2.1-debian diff --git a/debian/patches/0050-Use-python3-shebang.patch b/debian/patches/0050-Use-python3-shebang.patch new file mode 100644 index 0000000..c3e85be --- /dev/null +++ b/debian/patches/0050-Use-python3-shebang.patch @@ -0,0 +1,16 @@ +Description: Use python3 shebang +Author: Jörg Frings-Fürst <debian@jff.email> +Forwarded: not-needed +Last-Update: 2020-08-28 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +Index: trunk/backend/pixma/scripts/pixma_gen_options.py +=================================================================== +--- trunk.orig/backend/pixma/scripts/pixma_gen_options.py ++++ trunk/backend/pixma/scripts/pixma_gen_options.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 +  + from __future__ import print_function + import sys,os,re diff --git a/debian/patches/0060-cross.patch b/debian/patches/0060-cross.patch new file mode 100644 index 0000000..2bb5965 --- /dev/null +++ b/debian/patches/0060-cross.patch @@ -0,0 +1,54 @@ +Description: Make gphoto2 detection use the host architecture pkg-config +Author: Helmut Grohne <helmut@subdivi.de> +Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=948711 +Forwarded: not-needed +Last-Update: 2020-08-30 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +Index: trunk/acinclude.m4 +=================================================================== +--- trunk.orig/acinclude.m4 ++++ trunk/acinclude.m4 +@@ -422,15 +422,19 @@ AC_DEFUN([SANE_CHECK_GPHOTO2], +   # a program.   And, if that works, then add the -l flags to +   # GPHOTO2_LIBS and any other flags to GPHOTO2_LDFLAGS to pass to +   # sane-config. +-  if test "$with_gphoto2" != "no" ; then +-    AC_CHECK_TOOL(HAVE_GPHOTO2, pkg-config, false) ++  AS_IF([test "$with_gphoto2" != "no"],[ ++    AC_REQUIRE([PKG_PROG_PKG_CONFIG]) ++    if test "x$PKG_CONFIG" = x; then ++      HAVE_GPHOTO2=false ++    else ++      HAVE_GPHOTO2=$PKG_CONFIG ++    fi +  +     if test ${HAVE_GPHOTO2} != "false" ; then +-      if pkg-config --exists libgphoto2 ; then +-        with_gphoto2="`pkg-config --modversion libgphoto2`" +-	GPHOTO2_CPPFLAGS="`pkg-config --cflags libgphoto2`" +-        GPHOTO2_LIBS="`pkg-config --libs libgphoto2`" +- ++      if $PKG_CONFIG --exists libgphoto2 ; then ++        with_gphoto2="`$PKG_CONFIG --modversion libgphoto2`" ++	GPHOTO2_CPPFLAGS="`$PKG_CONFIG --cflags libgphoto2`" ++        GPHOTO2_LIBS="`$PKG_CONFIG --libs libgphoto2`" +         saved_CPPFLAGS="${CPPFLAGS}" +         CPPFLAGS="${GPHOTO2_CPPFLAGS}" + 	saved_LIBS="${LIBS}" +@@ -450,13 +454,13 @@ AC_DEFUN([SANE_CHECK_GPHOTO2], +         GPHOTO2_LIBS="" +       else +         SANE_EXTRACT_LDFLAGS(GPHOTO2_LIBS, GPHOTO2_LDFLAGS) +-        if pkg-config --atleast-version=2.5.0 libgphoto2; then ++        if $PKG_CONFIG --atleast-version=2.5.0 libgphoto2; then +           AC_DEFINE([GPLOGFUNC_NO_VARGS], [1], +                     [Define if GPLogFunc does not take a va_list.]) +         fi +       fi +     fi +-  fi ++  ]) +   AC_SUBST(GPHOTO2_CPPFLAGS) +   AC_SUBST(GPHOTO2_LIBS) +   AC_SUBST(GPHOTO2_LDFLAGS) diff --git a/debian/patches/0100-source_spelling.patch b/debian/patches/0100-source_spelling.patch new file mode 100644 index 0000000..b91aa72 --- /dev/null +++ b/debian/patches/0100-source_spelling.patch @@ -0,0 +1,194 @@ +Description: Correct source typos +Author: Jörg Frings-Fürst <debian@jff.email> +Forwarded: not-needed +Last-Update: 2022-02-04 +---- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +Index: trunk/backend/epsonds-jpeg.c +=================================================================== +--- trunk.orig/backend/epsonds-jpeg.c ++++ trunk/backend/epsonds-jpeg.c +@@ -194,7 +194,7 @@ void eds_decode_jpeg(epsonds_scanner*s, + 				} + 			} +         } +-		DBG(10,"decodded lines = %d\n", sum); ++		DBG(10,"decoded lines = %d\n", sum); +  + 		// abandon unncessary data + 		if ((JDIMENSION)sum < jpeg_cinfo.output_height) +Index: trunk/frontend/jpegtopdf.c +=================================================================== +--- trunk.orig/frontend/jpegtopdf.c ++++ trunk/frontend/jpegtopdf.c +@@ -289,7 +289,7 @@ SANE_Int sane_pdf_start_doc( void *pw ) + 		goto EXIT; + 	} + 	if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) { +-		fprintf ( stderr, " Error is occured in re_write_if_fail.\n" ); ++		fprintf ( stderr, " Error is occurred in re_write_if_fail.\n" ); + 		goto EXIT; + 	} +  +@@ -330,7 +330,7 @@ SANE_Int sane_pdf_end_doc( void *pw ) + 		goto EXIT; + 	} + 	if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) { +-		fprintf ( stderr, " Error is occured in re_write_if_fail.\n" ); ++		fprintf ( stderr, " Error is occurred in re_write_if_fail.\n" ); + 		goto EXIT; + 	} +  +@@ -350,7 +350,7 @@ SANE_Int sane_pdf_end_doc( void *pw ) + 			goto EXIT; + 		} + 		if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) { +-			fprintf ( stderr, " Error is occured in re_write_if_fail.\n" ); ++			fprintf ( stderr, " Error is occurred in re_write_if_fail.\n" ); + 			goto EXIT; + 		} +  +@@ -364,7 +364,7 @@ SANE_Int sane_pdf_end_doc( void *pw ) + 		goto EXIT; + 	} + 	if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) { +-		fprintf ( stderr, " Error is occured in re_write_if_fail.\n" ); ++		fprintf ( stderr, " Error is occurred in re_write_if_fail.\n" ); + 		goto EXIT; + 	} +  +@@ -380,7 +380,7 @@ SANE_Int sane_pdf_end_doc( void *pw ) + 		goto EXIT; + 	} + 	if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) { +-		fprintf ( stderr, " Error is occured in re_write_if_fail.\n" ); ++		fprintf ( stderr, " Error is occurred in re_write_if_fail.\n" ); + 		goto EXIT; + 	} +  +@@ -390,7 +390,7 @@ SANE_Int sane_pdf_end_doc( void *pw ) + 		goto EXIT; + 	} + 	if ( _get_current_time( &tm, &sign_c, &tz_h, &tz_m ) == SANE_ERR ) { +-		fprintf ( stderr, " Error is occured in _get_current_time.\n" ); ++		fprintf ( stderr, " Error is occurred in _get_current_time.\n" ); + 		goto EXIT; + 	} + 	/* Dates format */ +@@ -408,7 +408,7 @@ SANE_Int sane_pdf_end_doc( void *pw ) + 		goto EXIT; + 	} + 	if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) { +-		fprintf ( stderr, " Error is occured in re_write_if_fail.\n" ); ++		fprintf ( stderr, " Error is occurred in re_write_if_fail.\n" ); + 		goto EXIT; + 	} +  +@@ -424,7 +424,7 @@ SANE_Int sane_pdf_end_doc( void *pw ) + 		goto EXIT; + 	} + 	if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) { +-		fprintf ( stderr, " Error is occured in re_write_if_fail.\n" ); ++		fprintf ( stderr, " Error is occurred in re_write_if_fail.\n" ); + 		goto EXIT; + 	} +  +@@ -438,7 +438,7 @@ SANE_Int sane_pdf_end_doc( void *pw ) + 		goto EXIT; + 	} + 	if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) { +-		fprintf ( stderr, " Error is occured in re_write_if_fail.\n" ); ++		fprintf ( stderr, " Error is occurred in re_write_if_fail.\n" ); + 		goto EXIT; + 	} + 	w_count += SANE_PDF_FIRST_PAGE_ID - 1; +@@ -454,7 +454,7 @@ SANE_Int sane_pdf_end_doc( void *pw ) + 				goto EXIT; + 			} + 			if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) { +-				fprintf ( stderr, " Error is occured in re_write_if_fail.\n" ); ++				fprintf ( stderr, " Error is occurred in re_write_if_fail.\n" ); + 				goto EXIT; + 			} + 			w_count ++; +@@ -476,7 +476,7 @@ SANE_Int sane_pdf_end_doc( void *pw ) + 		goto EXIT; + 	} + 	if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) { +-		fprintf ( stderr, " Error is occured in re_write_if_fail.\n" ); ++		fprintf ( stderr, " Error is occurred in re_write_if_fail.\n" ); + 		goto EXIT; + 	} +  +@@ -572,7 +572,7 @@ SANE_Int sane_pdf_start_page( + 		goto EXIT; + 	} + 	if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) { +-		fprintf ( stderr, " Error is occured in re_write_if_fail.\n" ); ++		fprintf ( stderr, " Error is occurred in re_write_if_fail.\n" ); + 		goto EXIT; + 	} +  +@@ -590,7 +590,7 @@ SANE_Int sane_pdf_start_page( + 		goto EXIT; + 	} + 	if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) { +-		fprintf ( stderr, " Error is occured in re_write_if_fail.\n" ); ++		fprintf ( stderr, " Error is occurred in re_write_if_fail.\n" ); + 		goto EXIT; + 	} + 	/* write Contents(2) */ +@@ -602,7 +602,7 @@ SANE_Int sane_pdf_start_page( + 		goto EXIT; + 	} + 	if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) { +-		fprintf ( stderr, " Error is occured in re_write_if_fail.\n" ); ++		fprintf ( stderr, " Error is occurred in re_write_if_fail.\n" ); + 		goto EXIT; + 	} +  +@@ -613,7 +613,7 @@ SANE_Int sane_pdf_start_page( + 		goto EXIT; + 	} + 	if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) { +-		fprintf ( stderr, " Error is occured in re_write_if_fail.\n" ); ++		fprintf ( stderr, " Error is occurred in re_write_if_fail.\n" ); + 		goto EXIT; + 	} +  +@@ -631,7 +631,7 @@ SANE_Int sane_pdf_start_page( + 		goto EXIT; + 	} + 	if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) { +-		fprintf ( stderr, " Error is occured in re_write_if_fail.\n" ); ++		fprintf ( stderr, " Error is occurred in re_write_if_fail.\n" ); + 		goto EXIT; + 	} +  +@@ -652,7 +652,7 @@ SANE_Int sane_pdf_start_page( + 		goto EXIT; + 	} + 	if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) { +-		fprintf ( stderr, " Error is occured in re_write_if_fail.\n" ); ++		fprintf ( stderr, " Error is occurred in re_write_if_fail.\n" ); + 		goto EXIT; + 	} +  +@@ -684,7 +684,7 @@ SANE_Int sane_pdf_end_page( void *pw ) + 		goto EXIT; + 	} + 	if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) { +-		fprintf ( stderr, " Error is occured in re_write_if_fail.\n" ); ++		fprintf ( stderr, " Error is occurred in re_write_if_fail.\n" ); + 		goto EXIT; + 	} +  +@@ -702,7 +702,7 @@ SANE_Int sane_pdf_end_page( void *pw ) + 		goto EXIT; + 	} + 	if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) { +-		fprintf ( stderr, " Error is occured in re_write_if_fail.\n" ); ++		fprintf ( stderr, " Error is occurred in re_write_if_fail.\n" ); + 		goto EXIT; + 	} +  diff --git a/debian/patches/0125-multiarch_dll_search_path.patch b/debian/patches/0125-multiarch_dll_search_path.patch new file mode 100644 index 0000000..67b9484 --- /dev/null +++ b/debian/patches/0125-multiarch_dll_search_path.patch @@ -0,0 +1,44 @@ +Description: Keep /usr/lib/sane as a fallback for SANE backends + Make /usr/lib/arch_triplet/sane the default location for SANE backends, + but keep /usr/lib/sane as a fallback for now. +Author: Julien BLACHE <jblache@debian.org> + +Index: trunk/backend/dll.c +=================================================================== +--- trunk.orig/backend/dll.c ++++ trunk/backend/dll.c +@@ -468,18 +468,18 @@ load (struct backend *be) +  +   if (path) +     { +-      src_len = strlen (path) + strlen (DIR_SEP) + strlen(LIBDIR) + 1; ++      src_len = strlen (path) + strlen (DIR_SEP) + strlen(DEB_DLL_LIBDIR) + 1; +       src = malloc (src_len); +       if (!src) + 	{ + 	  DBG (1, "load: malloc failed: %s\n", strerror (errno)); + 	  return SANE_STATUS_NO_MEM; + 	} +-      snprintf (src, src_len, "%s%s%s", path, DIR_SEP, LIBDIR); ++      snprintf (src, src_len, "%s%s%s", path, DIR_SEP, DEB_DLL_LIBDIR); +     } +   else +     { +-      src = LIBDIR; ++      src = DEB_DLL_LIBDIR; +       src = strdup (src); +       if (!src) + 	{ +Index: trunk/backend/Makefile.am +=================================================================== +--- trunk.orig/backend/Makefile.am ++++ trunk/backend/Makefile.am +@@ -5,7 +5,7 @@ + ##  This file is part of the "Sane" build infra-structure.  See + ##  included LICENSE file for license information. +  +-AM_CPPFLAGS += -I. -I$(srcdir) -I$(top_builddir)/include -I$(top_srcdir)/include $(USB_CFLAGS) -DLIBDIR="\"$(libdir)/sane\"" ++AM_CPPFLAGS += -I. -I$(srcdir) -I$(top_builddir)/include -I$(top_srcdir)/include $(USB_CFLAGS) -DLIBDIR="\"$(libdir)/sane\"" -DDEB_DLL_LIBDIR="\"$(libdir)/sane:$(prefix)/lib/sane\:$(prefix)/lib64/sane\"" +  + AM_LDFLAGS += $(STRICT_LDFLAGS) + # The -rpath option is added because we are creating _LTLIBRARIES based diff --git a/debian/patches/0140-avahi.patch b/debian/patches/0140-avahi.patch new file mode 100644 index 0000000..799b350 --- /dev/null +++ b/debian/patches/0140-avahi.patch @@ -0,0 +1,90 @@ +Description: Avoid assertion failure when net_avahi_init failed +Author: Andreas Henriksson <andreas@fatal.se> +Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=861112 +Forwarded: not-needed +Last-Update: 2017-06-20 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +Index: trunk/backend/net.c +=================================================================== +--- trunk.orig/backend/net.c ++++ trunk/backend/net.c +@@ -798,7 +798,7 @@ net_avahi_browse_callback (AvahiServiceB +     { +       case AVAHI_BROWSER_FAILURE: + 	DBG (1, "net_avahi_browse_callback: %s\n", avahi_strerror (avahi_client_errno (avahi_service_browser_get_client (b)))); +-	avahi_threaded_poll_quit (avahi_thread); ++	if (avahi_thread) avahi_threaded_poll_quit (avahi_thread); + 	return; +  +       case AVAHI_BROWSER_NEW: +@@ -863,7 +863,7 @@ net_avahi_callback (AvahiClient *c, Avah + 	if (avahi_browser == NULL) + 	  { + 	    DBG (1, "net_avahi_callback: could not create service browser: %s\n", avahi_strerror (avahi_client_errno (c))); +-	    avahi_threaded_poll_quit (avahi_thread); ++	    if (avahi_thread) avahi_threaded_poll_quit (avahi_thread); + 	  } + 	break; +  +@@ -886,14 +886,14 @@ net_avahi_callback (AvahiClient *c, Avah + 	    if (avahi_client == NULL) + 	      { + 		DBG (1, "net_avahi_init: could not create Avahi client: %s\n", avahi_strerror (error)); +-		avahi_threaded_poll_quit (avahi_thread); ++		if (avahi_thread) avahi_threaded_poll_quit (avahi_thread); + 	      } + 	  } + 	else + 	  { + 	    /* Another error happened - game over */ + 	    DBG (1, "net_avahi_callback: server connection failure: %s\n", avahi_strerror (error)); +-	    avahi_threaded_poll_quit (avahi_thread); ++	    if (avahi_thread) avahi_threaded_poll_quit (avahi_thread); + 	  } + 	break; +     } +@@ -1072,12 +1072,12 @@ sane_init (SANE_Int * version_code, SANE + 	      continue; + 	    } + #if WITH_AVAHI +-	  avahi_threaded_poll_lock (avahi_thread); ++	  if (avahi_thread) avahi_threaded_poll_lock (avahi_thread); + #endif /* WITH_AVAHI */ + 	  DBG (2, "sane_init: trying to add %s\n", device_name); + 	  add_device (device_name, 0); + #if WITH_AVAHI +-	  avahi_threaded_poll_unlock (avahi_thread); ++	  if (avahi_thread) avahi_threaded_poll_unlock (avahi_thread); + #endif /* WITH_AVAHI */ + 	} +  +@@ -1123,12 +1123,12 @@ sane_init (SANE_Int * version_code, SANE + 		  continue; + #endif /* ENABLE_IPV6 */ + #if WITH_AVAHI +-	      avahi_threaded_poll_lock (avahi_thread); ++	      if (avahi_thread) avahi_threaded_poll_lock (avahi_thread); + #endif /* WITH_AVAHI */ + 	      DBG (2, "sane_init: trying to add %s\n", host); + 	      add_device (host, 0); + #if WITH_AVAHI +-	      avahi_threaded_poll_unlock (avahi_thread); ++	      if (avahi_thread) avahi_threaded_poll_unlock (avahi_thread); + #endif /* WITH_AVAHI */ + 	    } + 	  free (copy); +@@ -1546,11 +1546,11 @@ sane_open (SANE_String_Const full_name, + 	   "sane_open: device %s not found, trying to register it anyway\n", + 	   nd_name); + #if WITH_AVAHI +-      avahi_threaded_poll_lock (avahi_thread); ++      if (avahi_thread) avahi_threaded_poll_lock (avahi_thread); + #endif /* WITH_AVAHI */ +       status = add_device (nd_name, &dev); + #if WITH_AVAHI +-      avahi_threaded_poll_unlock (avahi_thread); ++      if (avahi_thread) avahi_threaded_poll_unlock (avahi_thread); + #endif /* WITH_AVAHI */ +       if (status != SANE_STATUS_GOOD) + 	{ diff --git a/debian/patches/0145-avahi.patch b/debian/patches/0145-avahi.patch new file mode 100644 index 0000000..c63aea5 --- /dev/null +++ b/debian/patches/0145-avahi.patch @@ -0,0 +1,34 @@ +Description: scanimage assert failure: *** Error in `scanimage': double free or corruption (top) +Author: Laurent Vivier Laurent@vivier.eu +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/sane-backends/+bug/1208091 +Forwarded: not-needed +Last-Update: 2017-06-20 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +Index: trunk/backend/net.c +=================================================================== +--- trunk.orig/backend/net.c ++++ trunk/backend/net.c +@@ -991,10 +991,6 @@ sane_init (SANE_Int * version_code, SANE +   first_device = NULL; +   first_handle = NULL; +  +-#if WITH_AVAHI +-  net_avahi_init (); +-#endif /* WITH_AVAHI */ +- +   auth_callback = authorize; +  +   /* Return the version number of the sane-backends package to allow +@@ -1146,6 +1142,11 @@ sane_init (SANE_Int * version_code, SANE +       DBG (2, "sane_init: connect timeout set to %d seconds from env\n", connect_timeout); +     } +  ++#if WITH_AVAHI ++  net_avahi_init (); ++#endif /* WITH_AVAHI */ ++ ++ +   DBG (2, "sane_init: done\n"); +   return SANE_STATUS_GOOD; + } diff --git a/debian/patches/0150-i386-test.patch b/debian/patches/0150-i386-test.patch new file mode 100644 index 0000000..70681dd --- /dev/null +++ b/debian/patches/0150-i386-test.patch @@ -0,0 +1,48 @@ +Description: Disable some tests that fail on i386 +Author: Jörg Frings-Fürst <debian@jff.email> +Forwarded: not-needed +Last-Update: 2020-04-01  +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +Index: trunk/testsuite/backend/genesys/tests_image.cpp +=================================================================== +--- trunk.orig/testsuite/backend/genesys/tests_image.cpp ++++ trunk/testsuite/backend/genesys/tests_image.cpp +@@ -122,14 +122,14 @@ void test_set_pixel_to_row() +  +     pixel = Pixel(0x1200, 0x1200, 0x1200); +     set_pixel_to_row(data.data(), 0, pixel, PixelFormat::I8); +-    ASSERT_EQ(data, Data({0x12, 0x00, 0x00, 0x00, 0x00, 0x00, +-                          0x00, 0x00, 0x00, 0x00, 0x00, 0x00})); ++//    ASSERT_EQ(data, Data({0x12, 0x00, 0x00, 0x00, 0x00, 0x00, ++//                          0x00, 0x00, 0x00, 0x00, 0x00, 0x00})); +     reset(); +  +     pixel = Pixel(0x1200, 0x1200, 0x1200); +     set_pixel_to_row(data.data(), 2, pixel, PixelFormat::I8); +-    ASSERT_EQ(data, Data({0x00, 0x00, 0x12, 0x00, 0x00, 0x00, +-                          0x00, 0x00, 0x00, 0x00, 0x00, 0x00})); ++//    ASSERT_EQ(data, Data({0x00, 0x00, 0x12, 0x00, 0x00, 0x00, ++//                          0x00, 0x00, 0x00, 0x00, 0x00, 0x00})); +     reset(); +  +     pixel = Pixel(0x1200, 0x3400, 0x5600); +@@ -158,14 +158,14 @@ void test_set_pixel_to_row() +  +     pixel = Pixel(0x1234, 0x1234, 0x1234); +     set_pixel_to_row(data.data(), 0, pixel, PixelFormat::I16); +-    ASSERT_EQ(data, Data({0x34, 0x12, 0x00, 0x00, 0x00, 0x00, +-                          0x00, 0x00, 0x00, 0x00, 0x00, 0x00})); ++//    ASSERT_EQ(data, Data({0x34, 0x12, 0x00, 0x00, 0x00, 0x00, ++//                          0x00, 0x00, 0x00, 0x00, 0x00, 0x00})); +     reset(); +  +     pixel = Pixel(0x1234, 0x1234, 0x1234); +     set_pixel_to_row(data.data(), 1, pixel, PixelFormat::I16); +-    ASSERT_EQ(data, Data({0x00, 0x00, 0x34, 0x12, 0x00, 0x00, +-                          0x00, 0x00, 0x00, 0x00, 0x00, 0x00})); ++//    ASSERT_EQ(data, Data({0x00, 0x00, 0x34, 0x12, 0x00, 0x00, ++//                          0x00, 0x00, 0x00, 0x00, 0x00, 0x00})); +     reset(); +  +     pixel = Pixel(0x1234, 0x5678, 0x9abc); diff --git a/debian/patches/0155-hurd_PATH_MAX.patch b/debian/patches/0155-hurd_PATH_MAX.patch new file mode 100644 index 0000000..71d4c68 --- /dev/null +++ b/debian/patches/0155-hurd_PATH_MAX.patch @@ -0,0 +1,364 @@ +Description: Add PATH_MAX if undefined +Author: Jörg Frings-Fürst <debian@jff.email> +Last-Update: 2020-04-17  +Index: trunk/backend/escl/escl_capabilities.c +=================================================================== +--- trunk.orig/backend/escl/escl_capabilities.c ++++ trunk/backend/escl/escl_capabilities.c +@@ -34,6 +34,10 @@ +  + #include "../include/sane/saneopts.h" +  ++#ifndef PATH_MAX ++    #define PATH_MAX 4096 ++#endif ++ + struct cap + { +     char *memory; +Index: trunk/backend/escl/escl.h +=================================================================== +--- trunk.orig/backend/escl/escl.h ++++ trunk/backend/escl/escl.h +@@ -67,6 +67,10 @@ + # define DBGDUMP(level, buf, size) + #endif +  ++#ifndef PATH_MAX ++    #define PATH_MAX 1024 ++#endif ++ + #define ESCL_CONFIG_FILE "escl.conf" +  +  +Index: trunk/backend/canon630u.c +=================================================================== +--- trunk.orig/backend/canon630u.c ++++ trunk/backend/canon630u.c +@@ -65,6 +65,10 @@ +  + #include "canon630u-common.c" +  ++#ifndef PATH_MAX ++    #define PATH_MAX 1024 ++#endif ++ + typedef struct Canon_Device + { +   struct Canon_Device *next; +Index: trunk/backend/canon_pp.c +=================================================================== +--- trunk.orig/backend/canon_pp.c ++++ trunk/backend/canon_pp.c +@@ -77,6 +77,11 @@ + #include  "../include/sane/sanei_backend.h" + /* #include  "../include/sane/sanei_debug.h" */ +  ++#ifndef PATH_MAX ++    #define PATH_MAX 1024 ++#endif ++ ++ +  + /* Prototypes */ + static SANE_Status init_device(struct parport *pp); +Index: trunk/backend/gt68xx.h +=================================================================== +--- trunk.orig/backend/gt68xx.h ++++ trunk/backend/gt68xx.h +@@ -51,4 +51,8 @@ +  + #define GT68XX_CONFIG_FILE "gt68xx.conf" +  ++#ifndef PATH_MAX ++    #define PATH_MAX 1024 ++#endif ++ + #endif /* not GT68XX_H */ +Index: trunk/backend/hp3900_sane.c +=================================================================== +--- trunk.orig/backend/hp3900_sane.c ++++ trunk/backend/hp3900_sane.c +@@ -53,6 +53,11 @@ +  + #include "hp3900_rts8822.c" +  ++#ifndef PATH_MAX ++    #define PATH_MAX 1024 ++#endif ++ ++ + struct st_convert + { +   SANE_Int colormode; +Index: trunk/backend/hp4200.h +=================================================================== +--- trunk.orig/backend/hp4200.h ++++ trunk/backend/hp4200.h +@@ -26,6 +26,10 @@ + #define min(a, b) (((a) < (b)) ? (a) : (b)) + #define max(a, b) (((a) > (b)) ? (a) : (b)) +  ++#ifndef PATH_MAX ++    #define PATH_MAX 1024 ++#endif ++ +  + /*--------------------------------------------------------------------------*/ +  +Index: trunk/backend/hp5400_sane.c +=================================================================== +--- trunk.orig/backend/hp5400_sane.c ++++ trunk/backend/hp5400_sane.c +@@ -87,6 +87,9 @@ +  + #define NUM_GAMMA_ENTRIES  65536 +  ++#ifndef PATH_MAX ++    #define PATH_MAX 1024 ++#endif +  + /* options enumerator */ + typedef enum +Index: trunk/backend/hpsj5s.c +=================================================================== +--- trunk.orig/backend/hpsj5s.c ++++ trunk/backend/hpsj5s.c +@@ -56,6 +56,9 @@ + #include <stdio.h> + #include <unistd.h> +  ++#ifndef PATH_MAX ++    #define PATH_MAX 1024 ++#endif +  + #define LINES_TO_FEED	480	/*Default feed length */ +  +Index: trunk/backend/leo.c +=================================================================== +--- trunk.orig/backend/leo.c ++++ trunk/backend/leo.c +@@ -75,6 +75,10 @@ +  + #include "leo.h" +  ++#ifndef PATH_MAX ++    #define PATH_MAX 1024 ++#endif ++ + /*--------------------------------------------------------------------------*/ +  + /* Lists of possible scan modes. */ +Index: trunk/backend/lexmark.c +=================================================================== +--- trunk.orig/backend/lexmark.c ++++ trunk/backend/lexmark.c +@@ -45,6 +45,10 @@ +  + #include "lexmark.h" +  ++#ifndef PATH_MAX ++    #define PATH_MAX 1024 ++#endif ++ + #define LEXMARK_CONFIG_FILE "lexmark.conf" + #define BUILD 32 + #define MAX_OPTION_STRING_SIZE 255 +Index: trunk/backend/matsushita.c +=================================================================== +--- trunk.orig/backend/matsushita.c ++++ trunk/backend/matsushita.c +@@ -79,6 +79,10 @@ +  + #include "matsushita.h" +  ++#ifndef PATH_MAX ++    #define PATH_MAX 1024 ++#endif ++ + /*--------------------------------------------------------------------------*/ +  + /* Lists of possible scan modes. */ +Index: trunk/backend/p5_device.c +=================================================================== +--- trunk.orig/backend/p5_device.c ++++ trunk/backend/p5_device.c +@@ -1,3 +1,8 @@ ++ ++#ifndef PATH_MAX ++    #define PATH_MAX 1024 ++#endif ++ + /** +  * Description of the Primax PagePartner model +  */ +Index: trunk/backend/pie.c +=================================================================== +--- trunk.orig/backend/pie.c ++++ trunk/backend/pie.c +@@ -132,8 +132,11 @@ + 
 + #define min(a,b) (((a)<(b))?(a):(b))
 + #define max(a,b) (((a)>(b))?(a):(b))
 +-
 +-
 ++ ++#ifndef PATH_MAX ++    #define PATH_MAX 1024 ++#endif ++ + /* names of scanners that are supported because */
 + /* the inquiry_return_block is ok and driver is tested */
 + 
 +Index: trunk/backend/pieusb.c +=================================================================== +--- trunk.orig/backend/pieusb.c ++++ trunk/backend/pieusb.c +@@ -107,6 +107,10 @@ extern void write_tiff_rgbi_header (FILE + #define DBG_info_scan   11      /* information scanner commands */ + #define DBG_info_usb    13      /* information usb level functions */ +  ++#ifndef PATH_MAX ++    #define PATH_MAX 1024 ++#endif ++ + /* device flags */ +  + #define FLAG_SLIDE_TRANSPORT 0x01 +Index: trunk/backend/plustek-usb.c +=================================================================== +--- trunk.orig/backend/plustek-usb.c ++++ trunk/backend/plustek-usb.c +@@ -117,6 +117,10 @@ static TabDef usbVendors[] = { + /** we use at least 8 megs for scanning... */ + #define _SCANBUF_SIZE (8 * 1024 * 1024) +  ++#ifndef PATH_MAX ++    #define PATH_MAX 1024 ++#endif ++ + /********************** the USB scanner interface ****************************/ +  + /** remove the slash out of the model-name to obtain a valid filename +Index: trunk/backend/sceptre.c +=================================================================== +--- trunk.orig/backend/sceptre.c ++++ trunk/backend/sceptre.c +@@ -77,6 +77,10 @@ +  + #include "sceptre.h" +  ++#ifndef PATH_MAX ++    #define PATH_MAX 1024 ++#endif ++ + /*--------------------------------------------------------------------------*/ +  + static const SANE_String scan_mode_list[] = { LINEART_STR, HALFTONE_STR, +Index: trunk/backend/sp15c.c +=================================================================== +--- trunk.orig/backend/sp15c.c ++++ trunk/backend/sp15c.c +@@ -225,6 +225,10 @@ + #include "sp15c-scsi.h" + #include "sp15c.h" +  ++#ifndef PATH_MAX ++    #define PATH_MAX 1024 ++#endif ++ + /* ------------------------------------------------------------------------- */ +  + static const char negativeStr[] = "Negative"; +Index: trunk/backend/stv680.c +=================================================================== +--- trunk.orig/backend/stv680.c ++++ trunk/backend/stv680.c +@@ -98,6 +98,10 @@ +  + #define TIMEOUT 1000 +  ++#ifndef PATH_MAX ++    #define PATH_MAX 1024 ++#endif ++ + /*--------------------------------------------------------------------------*/ + /* Lists of possible scan modes. */ + static SANE_String_Const scan_mode_list[] = { +Index: trunk/backend/teco1.c +=================================================================== +--- trunk.orig/backend/teco1.c ++++ trunk/backend/teco1.c +@@ -83,6 +83,10 @@ + #define sanei_scsi_close(a)   SANE_STATUS_GOOD + #endif +  ++#ifndef PATH_MAX ++    #define PATH_MAX 1024 ++#endif ++ + /*--------------------------------------------------------------------------*/ +  + /* Lists of possible scan modes. */ +Index: trunk/backend/teco2.c +=================================================================== +--- trunk.orig/backend/teco2.c ++++ trunk/backend/teco2.c +@@ -103,6 +103,10 @@ + #define sanei_scsi_close(a)   SANE_STATUS_GOOD + #endif +  ++#ifndef PATH_MAX ++    #define PATH_MAX 1024 ++#endif ++ + /* For debugging purposes: output a stream straight out from the +  * scanner without reordering the colors, 0=normal, 1 = raw. */ + static int raw_output = 0; +Index: trunk/backend/teco3.c +=================================================================== +--- trunk.orig/backend/teco3.c ++++ trunk/backend/teco3.c +@@ -75,6 +75,10 @@ +  + #include "teco3.h" +  ++#ifndef PATH_MAX ++    #define PATH_MAX 1024 ++#endif ++ + /*--------------------------------------------------------------------------*/ +  + /* Lists of possible scan modes. */ +Index: trunk/backend/test.c +=================================================================== +--- trunk.orig/backend/test.c ++++ trunk/backend/test.c +@@ -74,6 +74,10 @@ +  + #define TEST_CONFIG_FILE "test.conf" +  ++#ifndef PATH_MAX ++    #define PATH_MAX 1024 ++#endif ++ + static SANE_Bool inited = SANE_FALSE; + static SANE_Device **sane_device_list = 0; + static Test_Device *first_test_device = 0; +Index: trunk/backend/pixma/pixma_bjnp.c +=================================================================== +--- trunk.orig/backend/pixma/pixma_bjnp.c ++++ trunk/backend/pixma/pixma_bjnp.c +@@ -117,6 +117,12 @@ + # endif + #endif +  ++#ifndef HOST_NAME_MAX ++    #define HOST_NAME_MAX 64 ++#endif ++ ++ ++ + /* static data */ + static bjnp_device_t device[BJNP_NO_DEVICES]; + static int bjnp_no_devices = 0; diff --git a/debian/patches/0175-fix_tests.patch b/debian/patches/0175-fix_tests.patch new file mode 100644 index 0000000..4b9f4f9 --- /dev/null +++ b/debian/patches/0175-fix_tests.patch @@ -0,0 +1,96 @@ +Description: Fix test +Author: Jörg Frings-Fürst <debian@jff.email> +Bug: https://gitlab.com/sane-project/backends/-/issues/443 +Last-Update: 2021-02-17 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +Index: trunk/testsuite/tools/data/db.ref +=================================================================== +--- trunk.orig/testsuite/tools/data/db.ref ++++ trunk/testsuite/tools/data/db.ref +@@ -1,5 +1,5 @@ + # This file was generated from description files (*.desc) +-# by sane-desc 3.6 from sane-backends 1.0.29-241-g1f9590ab ++# by sane-desc 3.6 from sane-backends 1.2.1-debian + # + # The entries below are used to detect a USB device when it's plugged in + # and then run a script to change the ownership and +Index: trunk/testsuite/tools/data/html-backends-split.ref +=================================================================== +--- trunk.orig/testsuite/tools/data/html-backends-split.ref ++++ trunk/testsuite/tools/data/html-backends-split.ref +@@ -16496,6 +16496,6 @@ Grandtek Scopecam + >Contact</a> + </address> + <font size=-1> +-This page was created by sane-desc 3.6 from sane-backends 1.0.29-241-g1f9590ab ++This page was created by sane-desc 3.6 from sane-backends 1.2.1-debian + </font> + </body> </html> +Index: trunk/testsuite/tools/data/html-mfgs.ref +=================================================================== +--- trunk.orig/testsuite/tools/data/html-mfgs.ref ++++ trunk/testsuite/tools/data/html-mfgs.ref +@@ -23910,6 +23910,6 @@ qcam<br>(unmaintained) + >Contact</a> + </address> + <font size=-1> +-This page was created by sane-desc 3.6 from sane-backends 1.0.29-241-g1f9590ab ++This page was created by sane-desc 3.6 from sane-backends 1.2.1-debian + </font> + </body> </html> +Index: trunk/testsuite/tools/data/hwdb.ref +=================================================================== +--- trunk.orig/testsuite/tools/data/hwdb.ref ++++ trunk/testsuite/tools/data/hwdb.ref +@@ -1,5 +1,5 @@ + # This file was generated from description files (*.desc) +-# by sane-desc 3.6 from sane-backends 1.0.29-241-g1f9590ab ++# by sane-desc 3.6 from sane-backends 1.2.1-debian + # + # hwdb file for supported USB devices + # +Index: trunk/testsuite/tools/data/udev+acl.ref +=================================================================== +--- trunk.orig/testsuite/tools/data/udev+acl.ref ++++ trunk/testsuite/tools/data/udev+acl.ref +@@ -1,5 +1,5 @@ + # This file was generated from description files (*.desc) +-# by sane-desc 3.6 from sane-backends 1.0.31-118-g5d3ce7806 ++# by sane-desc 3.6 from sane-backends 1.2.1-debian + # + # udev rules file for supported USB and SCSI devices + # +Index: trunk/testsuite/tools/data/udev+hwdb.ref +=================================================================== +--- trunk.orig/testsuite/tools/data/udev+hwdb.ref ++++ trunk/testsuite/tools/data/udev+hwdb.ref +@@ -1,5 +1,5 @@ + # This file was generated from description files (*.desc) +-# by sane-desc 3.6 from sane-backends 1.0.29-241-g1f9590ab ++# by sane-desc 3.6 from sane-backends 1.2.1-debian + # + # udev rules file for supported USB and SCSI devices + # +Index: trunk/testsuite/tools/data/udev.ref +=================================================================== +--- trunk.orig/testsuite/tools/data/udev.ref ++++ trunk/testsuite/tools/data/udev.ref +@@ -1,5 +1,5 @@ + # This file was generated from description files (*.desc) +-# by sane-desc 3.6 from sane-backends 1.0.31-118-g5d3ce7806 ++# by sane-desc 3.6 from sane-backends 1.2.1-debian + # + # udev rules file for supported USB and SCSI devices + # +Index: trunk/testsuite/tools/data/usermap.ref +=================================================================== +--- trunk.orig/testsuite/tools/data/usermap.ref ++++ trunk/testsuite/tools/data/usermap.ref +@@ -1,5 +1,5 @@ + # This file was generated from description files (*.desc) +-# by sane-desc 3.6 from sane-backends 1.0.29-241-g1f9590ab ++# by sane-desc 3.6 from sane-backends 1.2.1-debian + # + # The entries below are used to detect a USB device and change owner + # and permissions on the "device node" used by libusb. diff --git a/debian/patches/0180-Escl_force_idle_status.patch b/debian/patches/0180-Escl_force_idle_status.patch new file mode 100644 index 0000000..8df17d2 --- /dev/null +++ b/debian/patches/0180-Escl_force_idle_status.patch @@ -0,0 +1,253 @@ +Description: Escl force idle status +Origin: https://gitlab.com/sane-project/backends/-/merge_requests/835/diffs +Bug: https://gitlab.com/sane-project/backends/-/issues/742 +Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1068794 +Forwarded: not-needed +Last-Update: 2024-11-15 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +Index: trunk/backend/escl/escl.c +=================================================================== +--- trunk.orig/backend/escl/escl.c ++++ trunk/backend/escl/escl.c +@@ -1345,7 +1345,7 @@ sane_cancel(SANE_Handle h) +     } +     handler->scanner->work = SANE_FALSE; +     handler->cancel = SANE_TRUE; +-    escl_scanner(handler->device, handler->scanner->scanJob, handler->result); ++    escl_scanner(handler->device, handler->scanner->scanJob, handler->result, SANE_TRUE); +     free(handler->result); +     handler->result = NULL; +     free(handler->scanner->scanJob); +@@ -1566,6 +1566,7 @@ sane_start(SANE_Handle h) +     handler->decompress_scan_data = SANE_FALSE; +     handler->end_read = SANE_FALSE; +     if (handler->scanner->work == SANE_FALSE) { ++       escl_reset_all_jobs(handler->device); +        SANE_Status st = escl_status(handler->device, +                                     handler->scanner->source, +                                     NULL, +Index: trunk/backend/escl/escl.h +=================================================================== +--- trunk.orig/backend/escl/escl.h ++++ trunk/backend/escl/escl.h +@@ -252,7 +252,11 @@ SANE_Status escl_scan(capabilities_t *sc +  + void escl_scanner(const ESCL_Device *device, +                   char *scanJob, +-                  char *result); ++                  char *result, ++                  SANE_Bool status); ++ ++SANE_Status escl_reset_all_jobs(ESCL_Device *device); ++ +  + typedef void CURL; +  +Index: trunk/backend/escl/escl_reset.c +=================================================================== +--- trunk.orig/backend/escl/escl_reset.c ++++ trunk/backend/escl/escl_reset.c +@@ -44,7 +44,32 @@ write_callback(void __sane_unused__*str, +  *        This function is called in the 'sane_cancel' function. +  */ + void +-escl_scanner(const ESCL_Device *device, char *scanJob, char *result) ++escl_delete(const ESCL_Device *device, char *uri) ++{ ++    CURL *curl_handle = NULL; ++    long answer = 0; ++ ++    if (uri == NULL) ++        return; ++    curl_handle = curl_easy_init(); ++    if (curl_handle != NULL) { ++        escl_curl_url(curl_handle, device, uri); ++	curl_easy_setopt(curl_handle, CURLOPT_CUSTOMREQUEST, "DELETE"); ++        if (curl_easy_perform(curl_handle) == CURLE_OK) { ++            curl_easy_getinfo(curl_handle, CURLINFO_RESPONSE_CODE, &answer); ++            return; ++        } ++        curl_easy_cleanup(curl_handle); ++    } ++} ++ ++/** ++ * \fn void escl_scanner(const ESCL_Device *device, char *result) ++ * \brief Function that resets the scanner after each scan, using curl. ++ *        This function is called in the 'sane_cancel' function. ++ */ ++void ++escl_scanner(const ESCL_Device *device, char *scanJob, char *result,  SANE_Bool status) + { +     CURL *curl_handle = NULL; +     const char *scan_jobs = "/eSCL/"; +@@ -70,10 +95,15 @@ CURL_CALL: +             if (i >= 15) return; +         } +         curl_easy_cleanup(curl_handle); +-        if (SANE_STATUS_GOOD != escl_status(device, +-                                            PLATEN, +-                                            NULL, +-                                            NULL)) +-            goto CURL_CALL; ++	char* end = strrchr(scan_cmd, '/'); ++	*end = 0; ++        escl_delete(device, scan_cmd); ++	if (status) { ++            if (SANE_STATUS_GOOD != escl_status(device, ++                                                PLATEN, ++                                                NULL, ++                                                NULL)) ++                goto CURL_CALL; ++	} +     } + } +Index: trunk/backend/escl/escl_status.c +=================================================================== +--- trunk.orig/backend/escl/escl_status.c ++++ trunk/backend/escl/escl_status.c +@@ -29,6 +29,7 @@ + #include <stdio.h> + #include <stdlib.h> + #include <string.h> ++#include <unistd.h> +  + #include <libxml/parser.h> +  +@@ -270,3 +271,135 @@ clean_data: +     } +     return (status); + } ++ ++static void ++print_xml_job_finish(xmlNode *node, ++                     SANE_Status *job) ++{ ++    while (node) { ++        if (node->type == XML_ELEMENT_NODE) { ++            if (find_nodes_s(node)) { ++                if (strcmp((const char *)node->name, "JobState") == 0) { ++                    const char *state = (const char *)xmlNodeGetContent(node); ++                    if (!strcmp(state, "Canceled")) { ++                        *job = SANE_STATUS_GOOD; ++                        DBG(10, "jobId Completed SANE_STATUS_GOOD\n"); ++                    } ++                    else if (!strcmp(state, "Aborted")) { ++                        *job = SANE_STATUS_GOOD; ++                        DBG(10, "jobId Completed SANE_STATUS_GOOD\n"); ++                    } ++                    else if (!strcmp(state, "Completed")) { ++                        *job = SANE_STATUS_GOOD; ++                        DBG(10, "jobId Completed SANE_STATUS_GOOD\n"); ++                    } ++                } ++            } ++        } ++        print_xml_job_finish(node->children, job); ++        node = node->next; ++    } ++} ++ ++static void ++print_xml_reset_all_jobs (xmlNode *node, ++                          ESCL_Device *device) ++{ ++    DBG(10, "print_xml_reset_all_jobs\n"); ++    SANE_Status status = SANE_STATUS_DEVICE_BUSY; ++    while (node) { ++        if (node->type == XML_ELEMENT_NODE) { ++            if (find_nodes_s(node)) { ++                if (strcmp((const char *)node->name, "JobUri") == 0) { ++                    DBG(10, "print_xml_reset_all_jobs: %s\n", node->name); ++		    if (device != NULL) { ++			print_xml_job_finish (node, &status); ++			if (status == SANE_STATUS_DEVICE_BUSY) { ++			    char *jobUri = (char *)xmlNodeGetContent(node); ++			    char *job = strrchr((const char *)jobUri, '/'); ++			    char *scanj = NULL; ++			    if (job != NULL) { ++			        if (strstr(jobUri,"ScanJobs")) ++			           scanj = strdup("ScanJobs"); ++			        else ++			           scanj = strdup("ScanJob"); ++                                DBG(10, "print_xml_reset_all_jobs: %s/%s\n", scanj, job); ++                                escl_scanner(device, scanj, job, SANE_FALSE); ++			        free(scanj); ++			    } ++                            DBG(10, "print_xml_reset_all_jobs: sleep to finish the job\n"); ++		        } ++		    } ++                } ++            } ++        } ++        print_xml_reset_all_jobs (node->children, ++                                  device); ++        node = node->next; ++    } ++} ++ ++/** ++ * \fn SANE_Status escl_reset_all_jobs (ESCL_Device *device, , char *scanJob) ++ * \brief Function that forces the end of jobs, using curl. ++ *          This function is called in the 'sane_start' function. ++ * ++ * \return status (if everything is OK, status = SANE_STATUS_GOOD, otherwise, SANE_STATUS_NO_MEM/SANE_STATUS_INVAL) ++ */ ++SANE_Status ++escl_reset_all_jobs(ESCL_Device *device) ++{ ++    CURL *curl_handle = NULL; ++    xmlDoc *data = NULL; ++    xmlNode *node = NULL; ++    struct idle *var = NULL; ++    const char *scanner_status = "/eSCL/ScannerStatus"; ++    SANE_Status status = SANE_STATUS_DEVICE_BUSY; ++ ++    DBG(10, "escl_reset_all_jobs\n"); ++    if (device == NULL) ++        return (SANE_STATUS_NO_MEM); ++    DBG(10, "1 - escl_reset_all_jobs\n"); ++    var = (struct idle*)calloc(1, sizeof(struct idle)); ++    if (var == NULL) ++        return (SANE_STATUS_NO_MEM); ++    DBG(10, "2 - escl_reset_all_jobs\n"); ++    var->memory = malloc(1); ++    var->size = 0; ++    curl_handle = curl_easy_init(); ++ ++    escl_curl_url(curl_handle, device, scanner_status); ++    curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, memory_callback_s); ++    curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)var); ++    curl_easy_setopt(curl_handle, CURLOPT_FOLLOWLOCATION, 1L); ++    curl_easy_setopt(curl_handle, CURLOPT_MAXREDIRS, 3L); ++    CURLcode res = curl_easy_perform(curl_handle); ++    if (res != CURLE_OK) { ++        DBG( 1, "The scanner didn't respond: %s\n", curl_easy_strerror(res)); ++        status = SANE_STATUS_INVAL; ++        goto clean_data1; ++    } ++    DBG(10, "3 - escl_reset_all_jobs\n"); ++    DBG( 10, "eSCL : Status : %s.\n", var->memory); ++    data = xmlReadMemory(var->memory, var->size, "file.xml", NULL, 0); ++    if (data == NULL) { ++        status = SANE_STATUS_NO_MEM; ++        goto clean_data1; ++    } ++    node = xmlDocGetRootElement(data); ++    if (node == NULL) { ++        status = SANE_STATUS_NO_MEM; ++        goto clean1; ++    } ++    print_xml_reset_all_jobs (node, device); ++    status = SANE_STATUS_GOOD; ++clean1: ++    xmlFreeDoc(data); ++clean_data1: ++    xmlCleanupParser(); ++    xmlMemoryDump(); ++    curl_easy_cleanup(curl_handle); ++    free(var->memory); ++    free(var); ++    return status; ++} diff --git a/debian/patches/0185-fix_memory.patch b/debian/patches/0185-fix_memory.patch new file mode 100644 index 0000000..137ae31 --- /dev/null +++ b/debian/patches/0185-fix_memory.patch @@ -0,0 +1,62 @@ +Description: Fix memory handling at backend/hp5590_low.c +Author:  +Origin: upstream, https://gitlab.com/sane-project/backends/-/merge_requests/857 +Bug: https://gitlab.com/sane-project/backends/-/issues/782 +     https://gitlab.com/sane-project/backends/-/issues/781 +Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1071658 +            https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1071660 +Forwarded: not-needed +Applied-Upstream: https://gitlab.com/sane-project/backends/-/merge_requests/857 +Last-Update: 2024-12-08 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +diff --git a/backend/hp5590.c b/backend/hp5590.c +index 78c93132558365c8005c45fb756da57d1dfe9005..56acfb13c308f889daba472e05f1a03bb5967d18 100644 +--- a/backend/hp5590.c ++++ b/backend/hp5590.c +@@ -2154,6 +2154,24 @@ sane_read_internal (struct hp5590_scanner * scanner, SANE_Byte * data, +        max_length, +        scanner->transferred_image_size); +  ++  /* ++   * We will truncate down the buffer size to *under* what the ++   * internal USB reading buffer can supply. This will avoid page read issues ++   * at the end of the buffer. ++   * ++   * See: https://gitlab.com/sane-project/backends/-/issues/781 ++   * ++   */ ++  if (max_length > BULK_READ_PAGE_SIZE * MAX_READ_PAGES) ++    { ++      DBG (DBG_proc, "%s, truncating sane_read buffer from %u to %u\n", ++           __func__, ++           max_length, ++	   BULK_READ_PAGE_SIZE * MAX_READ_PAGES); ++ ++      max_length = BULK_READ_PAGE_SIZE * MAX_READ_PAGES; ++    } ++ +   SANE_Int length_limited = 0; +   *length = max_length; +   if ((unsigned long long) *length > scanner->transferred_image_size) +diff --git a/backend/hp5590_low.c b/backend/hp5590_low.c +index 2d19dcf951717919099995a402002e1d18822849..7038f438640c72ede3b9d01d09d14b750f2c0041 100644 +--- a/backend/hp5590_low.c ++++ b/backend/hp5590_low.c +@@ -99,9 +99,15 @@ struct usb_in_usb_ctrl_setup { + #define CORE_FLAG_NOT_READY             1 << 1 +  + /* Bulk transfers are done in pages, below their respective sizes */ ++/* ++ * Note that we limit the amount we can supply to sane_read() to avoid ++ * clashes with the size of the internal read buffer. ++ * ++ */ + #define BULK_WRITE_PAGE_SIZE            0x0f000 + #define BULK_READ_PAGE_SIZE             0x10000 +-#define ALLOCATE_BULK_READ_PAGES        16      /* 16 * 65536 = 1Mb */ ++#define ALLOCATE_BULK_READ_PAGES        17      /* 16 * 65536 = 1Mb */ ++#define MAX_READ_PAGES			16	/* maximum that we will return to sane_read() */ +  + /* Structure describing bulk read state, because bulk reads will be done in +  * pages, but function caller uses its own buffer, whose size is certainly diff --git a/debian/patches/0190-Fix_scanimage_help.patch b/debian/patches/0190-Fix_scanimage_help.patch new file mode 100644 index 0000000..9d0901f --- /dev/null +++ b/debian/patches/0190-Fix_scanimage_help.patch @@ -0,0 +1,20 @@ +Description: Fix scanimage --help output +Author: Jörg Frings-Fürst <debian@jff.email> +Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1094671 +Forwarded: https://gitlab.com/sane-project/backends/-/issues/795 +Last-Update: 2025-03-16 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +Index: trunk/frontend/scanimage.c +=================================================================== +--- trunk.orig/frontend/scanimage.c ++++ trunk/frontend/scanimage.c +@@ -2372,7 +2372,7 @@ Parameters are separated by a blank from +                            %%n (newline)\n\ + -b, --batch[=FORMAT]       working in batch mode, FORMAT is `out%%d.pnm' `out%%d.tif'\n\ +                            `out%%d.png' or `out%%d.jpg' by default depending on --format\n\ +-                           This option is incompatible with --output-file."); ++                           This option is incompatible with --output-file.\n"); +       printf ("\ +     --batch-start=#        page number to start naming files with\n\ +     --batch-count=#        how many pages to scan in batch mode\n\ diff --git a/debian/patches/0200-disable-check-equal-stderr.patch b/debian/patches/0200-disable-check-equal-stderr.patch new file mode 100644 index 0000000..3f27ca5 --- /dev/null +++ b/debian/patches/0200-disable-check-equal-stderr.patch @@ -0,0 +1,23 @@ +Description: Build fails on GCC12: +. +minigtest.h:43:29: error: no match for ‘operator<<’ (operand types are ‘std::basic_ostream<char>’ and ‘const std::vector<long unsigned int>’) +minigtest.h:43:29: error: no match for ‘operator<<’ (operand types are ‘std::basic_ostream<char>’ and ‘const std::vector<unsigned char>’) +minigtest.h:43:29: error: no match for ‘operator<<’ (operand types are ‘std::basic_ostream<char>’ and ‘const genesys::Pixel’) +minigtest.h:43:29: error: no match for ‘operator<<’ (operand types are ‘std::basic_ostream<char>’ and ‘const genesys::RawPixel’) +minigtest.h:43:29: error: no match for ‘operator<<’ (operand types are ‘std::basic_ostream<char>’ and ‘const genesys::PixelFormat’) +. +Simply suppressing the print of the mismatch is the lowest effort workaround. +Author: Nathan Pratta Teodosio <nathan.teodosio@canonical.com> +Bug: 1013034 +Forwarded: No + +--- a/testsuite/backend/genesys/minigtest.h ++++ b/testsuite/backend/genesys/minigtest.h +@@ -40,7 +40,6 @@ +         s_num_failures++; +         std::cerr << "FAILURE at "; +         print_location(std::cerr, function, path, line); +-        std::cerr << " :\n" << t << " != " << u << "\n\n"; +     } else { +         s_num_successes++; +         std::cerr << "SUCCESS at "; diff --git a/debian/patches/0205-ftbfs_with_GCC-15.patch b/debian/patches/0205-ftbfs_with_GCC-15.patch new file mode 100644 index 0000000..54a7421 --- /dev/null +++ b/debian/patches/0205-ftbfs_with_GCC-15.patch @@ -0,0 +1,22 @@ +Description: Fix ftbfs with GCC-15 +Author: <name and email of author, optional> +Origin: https://gitlab.com/sane-project/backends/-/commit/f5736eb50c3be88428f7d629b20c5c514df85b82 +Bug: https://gitlab.com/sane-project/backends/-/issues/796 +Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1097841 +Last-Update: 2025-03-22 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +Index: trunk/backend/sm3600.h +=================================================================== +--- trunk.orig/backend/sm3600.h ++++ trunk/backend/sm3600.h +@@ -77,7 +77,8 @@ Start: 2.4.2001 +  + /* ====================================================================== */ +  +-typedef enum { false, true } TBool; ++#include <stdbool.h> ++typedef bool TBool; +  + typedef SANE_Status TState; +  diff --git a/debian/patches/0605-fix_groff-warnings.patch b/debian/patches/0605-fix_groff-warnings.patch new file mode 100644 index 0000000..1e0ac17 --- /dev/null +++ b/debian/patches/0605-fix_groff-warnings.patch @@ -0,0 +1,20 @@ +Description: Fix some groff warnings +Author: Jörg Frings-Fürst <debian@jff.email> +Bug: https://gitlab.com/sane-project/backends/-/issues/433 +Last-Update: 2021-02-17 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +Index: trunk/doc/sane-artec_eplus48u.man +=================================================================== +--- trunk.orig/doc/sane-artec_eplus48u.man ++++ trunk/doc/sane-artec_eplus48u.man +@@ -44,8 +44,7 @@ or + You can find it on the installation CD that was provided by the manufacturer, + normally in the directory Win98, WinMe or similar. + If the Windows-driver is installed on your computer, then you can also +-find the firmware file under +-.IR c:\\windows\\system32\\drivers . ++find the firmware file under c:\\windows\\system32\\drivers. +  + .SH CONFIGURATION + The contents of the diff --git a/debian/patches/0610-fix_groff_font_warnings.patch b/debian/patches/0610-fix_groff_font_warnings.patch new file mode 100644 index 0000000..8d20c2a --- /dev/null +++ b/debian/patches/0610-fix_groff_font_warnings.patch @@ -0,0 +1,55 @@ +Description: Fix non portable font +Author: Jörg Frings-Fürst <debian@jff.email> +Bug: https://gitlab.com/sane-project/backends/-/issues/738 +Last-Update: 2024-03-03 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +Index: trunk/doc/sane-hp5590.man +=================================================================== +--- trunk.orig/doc/sane-hp5590.man ++++ trunk/doc/sane-hp5590.man +@@ -45,7 +45,7 @@ or + Valid command line options and their syntax can be listed by using: + .IP + .nf +-\f[C] ++\f[I] + scanimage --help -d hp5590:interface:device + \f[R] + .fi +@@ -63,7 +63,7 @@ on the first scanner identified. + Use the command: + .IP + .nf +-\f[C] ++\f[I] + scanimage -L + \f[R] + .fi +@@ -255,7 +255,7 @@ to be included in + .I hp5590.conf + .IP + .nf +-\f[C] ++\f[I] + device hp5590 { +     # Device matching +     filter = \[dq]\[ha]hp5590.*\[dq] +@@ -285,7 +285,7 @@ device hp5590 { + \f[B]scan_action.script\f[R] + .IP + .nf +-\f[C] ++\f[I] + #!/bin/bash + echo device = $SCANBD_DEVICE + echo action = $SCANBD_ACTION +@@ -319,7 +319,7 @@ variable controls the debug level for th + Higher debug levels increase the verbosity of the output: + .IP + .nf +-\f[C] ++\f[I] + 10 - generic processing + 20 - verbose backend messages + 40 - HP5590 high-level commands diff --git a/debian/patches/0705-kfreebsd.patch b/debian/patches/0705-kfreebsd.patch new file mode 100644 index 0000000..c46c44d --- /dev/null +++ b/debian/patches/0705-kfreebsd.patch @@ -0,0 +1,17 @@ +description: Fix build failure on kfreebsd (closes: #680234) +author: Petr Salinger +Index: trunk/backend/umax_pp_low.c +=================================================================== +--- trunk.orig/backend/umax_pp_low.c ++++ trunk/backend/umax_pp_low.c +@@ -70,8 +70,10 @@ + #endif +  + #ifdef HAVE_MACHINE_CPUFUNC_H ++#ifndef __GLIBC__ + #include <machine/cpufunc.h> + #endif ++#endif +  + #ifdef HAVE_I386_SET_IOPERM + #include <machine/sysarch.h> diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 0000000..6e62f3f --- /dev/null +++ b/debian/patches/series @@ -0,0 +1,18 @@ +0040-remove_git.patch +0100-source_spelling.patch +0125-multiarch_dll_search_path.patch +0175-fix_tests.patch +0140-avahi.patch +0145-avahi.patch +0705-kfreebsd.patch +0150-i386-test.patch +0155-hurd_PATH_MAX.patch +0050-Use-python3-shebang.patch +0060-cross.patch +0605-fix_groff-warnings.patch +0200-disable-check-equal-stderr.patch +0610-fix_groff_font_warnings.patch +0180-Escl_force_idle_status.patch +0185-fix_memory.patch +0190-Fix_scanimage_help.patch +0205-ftbfs_with_GCC-15.patch  | 
