I was trying to use the driverless thing in CUPS to be able to add 
AirPrint printers on my network but 'driverless list' would never 
show any printers even with Avahi running.

Turns out the driverless binary is shelling out to ippfind and 
passing a long string of args to act as a filter, and that filter 
depends on echo having an -e flag to print in a format that 
driverless reads back.  Since we don't have -e, it was just reading 
back garbage.

    ippfind -T 0 _ipps._tcp _ipp._tcp ! --txt printer-type --and \( --txt-pdl 
image/pwg-raster --or --txt-pdl application/PCLm --or --txt-pdl image/urf --or 
--txt-pdl application/pdf \) -x echo -en 
'\n{service_scheme}\t{service_name}\t{service_domain}\t{txt_usb_MFG}\t{txt_usb_MDL}\t{txt_product}\t{txt_ty}\t{service_name}\t{txt_pdl}\t{txt_UUID}\t{txt_rfo}\t'
 \; --local -x echo -en L \;

The easiest solution seemed to be to depend on gecho from coreutils 
but maybe there's a shorter path.


diff --git print/cups-filters/Makefile print/cups-filters/Makefile
index c34782cf7e5..9ec9dfb9e60 100644
--- print/cups-filters/Makefile
+++ print/cups-filters/Makefile
@@ -2,7 +2,7 @@ COMMENT=                OpenPrinting CUPS filters
 
 V=                     2.0.1
 DISTNAME=              cups-filters-${V}
-REVISION=              0
+REVISION=              1
 
 CATEGORIES=            print
 
@@ -32,7 +32,8 @@ LIB_DEPENDS=          print/libcupsfilters \
 
 # make it easier for users: bring in foomatic-db and allow the
 # regeneration of PPD files from share/foomatic/db/source/*/*.xml
-RUN_DEPENDS +=         print/foomatic-db-engine
+RUN_DEPENDS +=         print/foomatic-db-engine \
+                       sysutils/coreutils
 
 FAKE_FLAGS=            pkgfontconfigdir=${PREFIX}/share/examples/cups-filters \
                        
pkgcupsserverrootdir=${PREFIX}/share/examples/cups-filters/cups
diff --git print/cups-filters/patches/patch-utils_driverless_c 
print/cups-filters/patches/patch-utils_driverless_c
new file mode 100644
index 00000000000..e234226fbec
--- /dev/null
+++ print/cups-filters/patches/patch-utils_driverless_c
@@ -0,0 +1,26 @@
+--- utils/driverless.c.orig    Sun Feb 15 21:03:40 2026
++++ utils/driverless.c Sun Feb 15 21:04:25 2026
+@@ -419,7 +419,11 @@
+   ippfind_argv[i++] = "application/pdf";  /* PDF */
+   ippfind_argv[i++] = ")";
+   ippfind_argv[i++] = "-x";
++#ifdef __OpenBSD__
++  ippfind_argv[i++] = "gecho";            /* Output the needed data fields */
++#else
+   ippfind_argv[i++] = "echo";             /* Output the needed data fields */
++#endif
+   ippfind_argv[i++] = "-en";              /* separated by tab characters */
+   if (mode < 0) {
+     if (isFax)
+@@ -440,7 +444,11 @@
+   if (mode < 0) {
+     ippfind_argv[i++] = "--local";        /* Rest only if local service */
+     ippfind_argv[i++] = "-x";
++#ifdef __OpenBSD__
++    ippfind_argv[i++] = "gecho";          /* Output an 'L' at the end of the 
*/
++#else
+     ippfind_argv[i++] = "echo";           /* Output an 'L' at the end of the 
*/
++#endif
+     ippfind_argv[i++] = "-en";            /* line */
+     ippfind_argv[i++] = "L";
+     ippfind_argv[i++] = ";";

Reply via email to