]> git.ipfire.org Git - thirdparty/cups.git/commitdiff
Relaxed some of the page size checks in cupstestppd.
authormike <mike@7a7537e8-13f0-0310-91df-b6672ffda945>
Mon, 3 Oct 2011 15:40:15 +0000 (15:40 +0000)
committermike <mike@7a7537e8-13f0-0310-91df-b6672ffda945>
Mon, 3 Oct 2011 15:40:15 +0000 (15:40 +0000)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@10036 7a7537e8-13f0-0310-91df-b6672ffda945

CHANGES-1.5.txt
systemv/cupstestppd.c

index 2cb59eda696b75dedc5a47b4355c5f2b8b032537..4ddf7e1f2e6005a3a237ae696fcf2e9705dfb2b0 100644 (file)
@@ -4,6 +4,7 @@ CHANGES-1.5.txt
 CHANGES IN CUPS V1.5.1
 
        - Documentation updates (STR #3885)
+       - Relaxed some of the page size checks in cupstestppd.
        - The ipptool program now reports attributes that are repeated within
          the same attribute group.
        - Updated the PWG raster support to match the current draft
index 5fc7a7bc84a3387a889d467cfeb3be55be6d13d7..bc134e6079c3b64a3d1c91083bbd94e47c21dc5e 100644 (file)
@@ -3198,19 +3198,32 @@ check_sizes(ppd_file_t *ppd,            /* I - PPD file */
 
       if (pwg_media && pwg_media->ppd)
       {
+        size_t ppdlen = strlen(pwg_media->ppd);
+                                       /* Length of standard PPD name */
+
         strlcpy(buf, pwg_media->ppd, sizeof(buf));
 
         if (size->left == 0 && size->bottom == 0 &&
            size->right == size->width && size->top == size->length)
         {
           snprintf(buf, sizeof(buf), "%s.Fullbleed", pwg_media->ppd);
-         if (strcmp(size->name, buf))
-           is_ok = 0;
+         if (_cups_strcasecmp(size->name, buf))
+         {
+          /*
+           * Allow an additional qualifier such as ".WithTab"...
+           */
+
+           size_t buflen = strlen(buf);/* Length of full bleed name */
+
+            if (_cups_strncasecmp(size->name, buf, buflen) ||
+                size->name[buflen] != '.')
+             is_ok = 0;
+         }
         }
         else if (size->width > size->length)
         {
-         if ((ptr = pwg_media->ppd + strlen(pwg_media->ppd) - 7)
-                 >= pwg_media->ppd && !strcmp(ptr, "Rotated"))
+         if ((ptr = pwg_media->ppd + ppdlen - 7) >= pwg_media->ppd &&
+             !strcmp(ptr, "Rotated"))
          {
            if (strcmp(size->name, buf))
              is_ok = 0;
@@ -3226,11 +3239,17 @@ check_sizes(ppd_file_t *ppd,            /* I - PPD file */
            }
          }
         }
-       else
-        {
-         if ((!strncmp(size->name, pwg_media->ppd, strlen(pwg_media->ppd))))
+       else if (!strncmp(size->name, pwg_media->ppd, ppdlen))
+       {
+        /*
+         * Check for a proper qualifier (number or .something)...
+         */
+
+         ptr = size->name + ppdlen;
+
+         if (isdigit(*ptr & 255))
           {
-            for (ptr = size->name + strlen(pwg_media->ppd); *ptr; ptr ++)
+            for (ptr ++; *ptr; ptr ++)
             {
               if (!isdigit(*ptr & 255))
              {
@@ -3239,9 +3258,11 @@ check_sizes(ppd_file_t *ppd,             /* I - PPD file */
              }
             }
           }
-          else
-            is_ok = 0;
+          else if (*ptr != '.' && *ptr)
+           is_ok = 0;
         }
+       else
+         is_ok = 0;
 
         if (!is_ok)
           _cupsLangPrintf(stdout,