]> git.ipfire.org Git - thirdparty/cups.git/commitdiff
ppd-cache.c: Check for required attributes if URF or PWG Raster are found
authorZdenek Dohnal <zdohnal@redhat.com>
Thu, 15 Feb 2024 17:15:55 +0000 (18:15 +0100)
committerZdenek Dohnal <zdohnal@redhat.com>
Thu, 15 Feb 2024 17:15:55 +0000 (18:15 +0100)
Some devices have image/urf in document-format-supported, but is missing urf-supported
if AirPrint support is turned off, which breaks PPD generation. Check for attribute
urf-supported when we are about to decide whether the printer uses AirPrint, so in case
the device supports another driverless standard, we can use it for PPD generation.
Apply the same for PWG Raster too.

Fixes Fedora issue #2263053

CHANGES.md
cups/ppd-cache.c

index 8290c5e4bd86948a59916b75f36f338fb101096b..9688cad8f14f79385640d5305ce34f8cab90189e 100644 (file)
@@ -26,6 +26,7 @@ Changes in CUPS v2.4.8 (TBA)
   instead of keywords as `InputSlot` values (Issue #859)
 - Fixed IPP backend to support the "print-scaling" option with IPP printers
   (Issue #862)
+- Fixed checking for required attributes during PPD generation (Issue #890)
 
 
 Changes in CUPS v2.4.7 (2023-09-20)
index d664812a2b395a14d4d0905a98407ed0adc34c86..711a29f99d78f6ac63cb00f99ff1bb73e9213abe 100644 (file)
@@ -3469,9 +3469,11 @@ _ppdCreateFromIPP2(
 
   if ((attr = ippFindAttribute(supported, "document-format-supported", IPP_TAG_MIMETYPE)) != NULL)
   {
-    is_apple = ippContainsString(attr, "image/urf");
+    is_apple = ippContainsString(attr, "image/urf") && (ippFindAttribute(supported, "urf-supported", IPP_TAG_KEYWORD) != NULL);
     is_pdf   = ippContainsString(attr, "application/pdf");
-    is_pwg   = ippContainsString(attr, "image/pwg-raster") && !is_apple;
+    is_pwg   = ippContainsString(attr, "image/pwg-raster") && !is_apple &&
+              (ippFindAttribute(supported, "pwg-raster-document-resolution-supported", IPP_TAG_KEYWORD) != NULL) &&
+              (ippFindAttribute(supported, "pwg-raster-document-type-supported", IPP_TAG_KEYWORD) != NULL);
 
     if (ippContainsString(attr, "image/jpeg"))
       cupsFilePuts(fp, "*cupsFilter2: \"image/jpeg image/jpeg 0 -\"\n");