]> git.ipfire.org Git - thirdparty/cups.git/commitdiff
Fix an edge case for cupstestppd.
authormike <mike@7a7537e8-13f0-0310-91df-b6672ffda945>
Mon, 10 Dec 2012 23:18:19 +0000 (23:18 +0000)
committermike <mike@7a7537e8-13f0-0310-91df-b6672ffda945>
Mon, 10 Dec 2012 23:18:19 +0000 (23:18 +0000)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@10742 7a7537e8-13f0-0310-91df-b6672ffda945

systemv/cupstestppd.c

index 02b47a02176be9f115e09e608e61caad4c43cd1c..b39c93ae16fd8b76bc4bfb2802362820a03272ae 100644 (file)
@@ -3080,8 +3080,8 @@ check_sizes(ppd_file_t *ppd,              /* I - PPD file */
   const char   *prefix;                /* WARN/FAIL prefix */
   ppd_option_t *page_size,             /* PageSize option */
                *page_region;           /* PageRegion option */
-  _pwg_media_t  *pwg_media;             /* PWG media */
-  char          buf[1024];              /* PapeSize name that is supposed to be */
+  _pwg_media_t *pwg_media;             /* PWG media */
+  char         buf[PPD_MAX_NAME];      /* PapeSize name that is supposed to be */
   const char   *ptr;                   /* Pointer into string */
   int          width_2540ths,          /* PageSize width in 2540ths */
                length_2540ths;         /* PageSize length in 2540ths */
@@ -3217,6 +3217,11 @@ check_sizes(ppd_file_t *ppd,             /* I - PPD file */
                           _PWG_FROMPTS(size->width);
       pwg_media      = _pwgMediaForSize(width_2540ths, length_2540ths);
 
+      if (pwg_media &&
+          (fabs(pwg_media->width - width_2540ths) > 34 ||
+           fabs(pwg_media->length - length_2540ths) > 34))
+        pwg_media = NULL;              /* Only flag matches within a point */
+
       if (pwg_media && pwg_media->ppd &&
           (pwg_media->ppd[0] < 'a' || pwg_media->ppd[0] > 'z'))
       {
@@ -3324,14 +3329,26 @@ check_sizes(ppd_file_t *ppd,            /* I - PPD file */
 
         if (_cups_strcasecmp(size->name, buf))
         {
-          size_t buflen = strlen(buf); /* Length of proposed name */
+          size_t       buflen = strlen(buf);
+                                       /* Length of proposed name */
 
           if (_cups_strncasecmp(size->name, buf, buflen) ||
               (strcmp(size->name + buflen, "in") &&
                size->name[buflen] != '.'))
-           _cupsLangPrintf(stdout,
-                           _("      %s  Size \"%s\" should be \"%s\"."),
-                           prefix, size->name, buf);
+          {
+           char        altbuf[PPD_MAX_NAME];
+                                       /* Alternate "wNNNhNNN" name */
+           size_t      altlen;         /* Length of alternate name */
+
+           snprintf(altbuf, sizeof(altbuf), "w%.0fh%.0f", size->width,
+                    size->length);
+           altlen = strlen(altbuf);
+           if (_cups_strncasecmp(size->name, altbuf, altlen) ||
+               (size->name[altlen] && size->name[altlen] != '.'))
+             _cupsLangPrintf(stdout,
+                             _("      %s  Size \"%s\" should be \"%s\"."),
+                             prefix, size->name, buf);
+         }
         }
       }
     }