/*
* "$Id: cupstestppd.c 7807 2008-07-28 21:54:24Z mike $"
*
- * PPD test program for the Common UNIX Printing System (CUPS).
+ * PPD test program for CUPS.
*
- * Copyright 2007-2009 by Apple Inc.
+ * Copyright 2007-2011 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
* Include necessary headers...
*/
-#include <cups/string.h>
-#include <cups/cups.h>
+#include <cups/cups-private.h>
#include <cups/dir.h>
#include <cups/ppd-private.h>
-#include <cups/i18n.h>
#include <cups/raster.h>
-#include <errno.h>
-#include <stdlib.h>
#include <math.h>
+#ifdef WIN32
+# define X_OK 0
+#endif /* WIN32 */
/*
WARN_TRANSLATIONS = 16,
WARN_DUPLEX = 32,
WARN_SIZES = 64,
- WARN_ALL = 127
+ WARN_FILENAME = 128,
+ WARN_ALL = 255
};
/*
- * Standard Adobe media keywords (must remain sorted)...
+ * File permissions...
*/
-static const char adobe_size_names[][PPD_MAX_NAME] =
-{
- "10x11",
- "10x13",
- "10x14",
- "12x11",
- "15x11",
- "7x9",
- "8x10",
- "9x11",
- "9x12",
- "A0",
- "A1",
- "A10",
- "A2",
- "A3",
- "A3Extra",
- "A3Rotated",
- "A4",
- "A4Extra",
- "A4Plus",
- "A4Rotated",
- "A4Small",
- "A5",
- "A5Extra",
- "A5Rotated",
- "A6",
- "A6Rotated",
- "A7",
- "A8",
- "A9",
- "ARCHA",
- "ARCHB",
- "ARCHC",
- "ARCHD",
- "ARCHE",
- "AnsiA",
- "AnsiB",
- "AnsiC",
- "AnsiD",
- "AnsiE",
- "B0",
- "B1",
- "B1",
- "B10",
- "B2",
- "B3",
- "B4",
- "B4Rotated",
- "B5",
- "B5Rotated",
- "B6",
- "B6Rotated",
- "B7",
- "B8",
- "B9",
- "C4",
- "C5",
- "C6",
- "DL",
- "DoublePostcard",
- "DoublePostcardRotated",
- "Env10",
- "Env11",
- "Env12",
- "Env14",
- "Env9",
- "EnvC0",
- "EnvC1",
- "EnvC2",
- "EnvC3",
- "EnvC4",
- "EnvC5",
- "EnvC6",
- "EnvC65",
- "EnvC7",
- "EnvChou3",
- "EnvChou3Rotated",
- "EnvChou4",
- "EnvChou4Rotated",
- "EnvDL",
- "EnvISOB4",
- "EnvISOB5",
- "EnvISOB6",
- "EnvInvite",
- "EnvItalian",
- "EnvKaku2",
- "EnvKaku2Rotated",
- "EnvKaku3",
- "EnvKaku3Rotated",
- "EnvMonarch",
- "EnvPRC1",
- "EnvPRC10",
- "EnvPRC10Rotated",
- "EnvPRC1Rotated",
- "EnvPRC2",
- "EnvPRC2Rotated",
- "EnvPRC3",
- "EnvPRC3Rotated",
- "EnvPRC4",
- "EnvPRC4Rotated",
- "EnvPRC5",
- "EnvPRC5Rotated",
- "EnvPRC6",
- "EnvPRC6Rotated",
- "EnvPRC7",
- "EnvPRC7Rotated",
- "EnvPRC8",
- "EnvPRC8Rotated",
- "EnvPRC9",
- "EnvPRC9Rotated",
- "EnvPersonal",
- "EnvYou4",
- "EnvYou4Rotated",
- "Executive",
- "FanFoldGerman",
- "FanFoldGermanLegal",
- "FanFoldUS",
- "Folio",
- "ISOB0",
- "ISOB1",
- "ISOB10",
- "ISOB2",
- "ISOB3",
- "ISOB4",
- "ISOB5",
- "ISOB5Extra",
- "ISOB6",
- "ISOB7",
- "ISOB8",
- "ISOB9",
- "Ledger",
- "Legal",
- "LegalExtra",
- "Letter",
- "LetterExtra",
- "LetterPlus",
- "LetterRotated",
- "LetterSmall",
- "Monarch",
- "Note",
- "PRC16K",
- "PRC16KRotated",
- "PRC32K",
- "PRC32KBig",
- "PRC32KBigRotated",
- "PRC32KRotated",
- "Postcard",
- "PostcardRotated",
- "Quarto",
- "Statement",
- "SuperA",
- "SuperB",
- "Tabloid",
- "TabloidExtra"
-};
+#define MODE_WRITE 0022 /* Group/other write */
+#define MODE_MASK 0555 /* Owner/group/other read+exec/search */
+#define MODE_DATAFILE 0444 /* Owner/group/other read */
+#define MODE_DIRECTORY 0555 /* Owner/group/other read+search */
+#define MODE_PROGRAM 0555 /* Owner/group/other read+exec */
/*
int files; /* Number of files */
int verbose; /* Want verbose output? */
int warn; /* Which errors to just warn about */
+ int ignore; /* Which errors to ignore */
int status; /* Exit status */
int errors; /* Number of conformance errors */
int ppdversion; /* PPD spec version in PPD file */
status = ERROR_NONE;
root = "";
warn = WARN_NONE;
+ ignore = WARN_NONE;
for (i = 1; i < argc; i ++)
if (argv[i][0] == '-' && argv[i][1])
for (opt = argv[i] + 1; *opt; opt ++)
switch (*opt)
{
+ case 'I' : /* Ignore errors */
+ i ++;
+
+ if (i >= argc)
+ usage();
+
+ if (!strcmp(argv[i], "none"))
+ ignore = WARN_NONE;
+ else if (!strcmp(argv[i], "filename"))
+ ignore |= WARN_FILENAME;
+ else if (!strcmp(argv[i], "filters"))
+ ignore |= WARN_FILTERS;
+ else if (!strcmp(argv[i], "profiles"))
+ ignore |= WARN_PROFILES;
+ else if (!strcmp(argv[i], "all"))
+ ignore = WARN_FILTERS | WARN_PROFILES;
+ else
+ usage();
+ break;
+
case 'R' : /* Alternate root directory */
i ++;
root = argv[i];
break;
- case 'W' : /* Turn errors into warnings */
+ case 'W' : /* Turn errors into warnings */
i ++;
if (i >= argc)
{
_cupsLangPuts(stderr,
_("cupstestppd: The -q option is incompatible "
- "with the -v option.\n"));
+ "with the -v option."));
return (1);
}
{
_cupsLangPuts(stderr,
_("cupstestppd: The -v option is incompatible "
- "with the -q option.\n"));
+ "with the -q option."));
return (1);
}
*/
if (files && verbose >= 0)
- _cupsLangPuts(stdout, "\n");
+ puts("");
files ++;
status = ERROR_FILE_OPEN;
if (verbose >= 0)
+ {
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPrintf(stdout,
- _(" FAIL\n"
- " **FAIL** Unable to open PPD file - %s\n"),
+ _(" **FAIL** Unable to open PPD file - %s"),
strerror(errno));
+ }
}
else
{
status = ERROR_PPD_FORMAT;
if (verbose >= 0)
- {
+ {
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPrintf(stdout,
- _(" FAIL\n"
- " **FAIL** Unable to open PPD file - "
- "%s on line %d.\n"),
+ _(" **FAIL** Unable to open PPD file - "
+ "%s on line %d."),
ppdErrorString(error), line);
switch (error)
{
case PPD_MISSING_PPDADOBE4 :
_cupsLangPuts(stdout,
- _(" REF: Page 42, section 5.2.\n"));
+ _(" REF: Page 42, section "
+ "5.2."));
break;
case PPD_MISSING_VALUE :
_cupsLangPuts(stdout,
- _(" REF: Page 20, section 3.4.\n"));
+ _(" REF: Page 20, section "
+ "3.4."));
break;
case PPD_BAD_OPEN_GROUP :
case PPD_NESTED_OPEN_GROUP :
_cupsLangPuts(stdout,
- _(" REF: Pages 45-46, section 5.2.\n"));
+ _(" REF: Pages 45-46, section "
+ "5.2."));
break;
case PPD_BAD_OPEN_UI :
case PPD_NESTED_OPEN_UI :
_cupsLangPuts(stdout,
- _(" REF: Pages 42-45, section 5.2.\n"));
+ _(" REF: Pages 42-45, section "
+ "5.2."));
break;
case PPD_BAD_ORDER_DEPENDENCY :
_cupsLangPuts(stdout,
- _(" REF: Pages 48-49, section 5.2.\n"));
+ _(" REF: Pages 48-49, section "
+ "5.2."));
break;
case PPD_BAD_UI_CONSTRAINTS :
_cupsLangPuts(stdout,
- _(" REF: Pages 52-54, section 5.2.\n"));
+ _(" REF: Pages 52-54, section "
+ "5.2."));
break;
case PPD_MISSING_ASTERISK :
_cupsLangPuts(stdout,
- _(" REF: Page 15, section 3.2.\n"));
+ _(" REF: Page 15, section "
+ "3.2."));
break;
case PPD_LINE_TOO_LONG :
_cupsLangPuts(stdout,
- _(" REF: Page 15, section 3.1.\n"));
+ _(" REF: Page 15, section "
+ "3.1."));
break;
case PPD_ILLEGAL_CHARACTER :
_cupsLangPuts(stdout,
- _(" REF: Page 15, section 3.1.\n"));
+ _(" REF: Page 15, section "
+ "3.1."));
break;
case PPD_ILLEGAL_MAIN_KEYWORD :
_cupsLangPuts(stdout,
- _(" REF: Pages 16-17, section 3.2.\n"));
+ _(" REF: Pages 16-17, section "
+ "3.2."));
break;
case PPD_ILLEGAL_OPTION_KEYWORD :
_cupsLangPuts(stdout,
- _(" REF: Page 19, section 3.3.\n"));
+ _(" REF: Page 19, section "
+ "3.3."));
break;
case PPD_ILLEGAL_TRANSLATION :
_cupsLangPuts(stdout,
- _(" REF: Page 27, section 3.5.\n"));
+ _(" REF: Page 27, section "
+ "3.5."));
break;
default :
break;
if (verbose > 0)
_cupsLangPuts(stdout,
- _("\n DETAILED CONFORMANCE TEST RESULTS\n"));
+ _("\n DETAILED CONFORMANCE TEST RESULTS"));
if ((attr = ppdFindAttr(ppd, "FormatVersion", NULL)) != NULL &&
attr->value)
if (verbose >= 0)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPuts(stdout,
_(" **FAIL** REQUIRED DefaultImageableArea\n"
- " REF: Page 102, section 5.15.\n"));
+ " REF: Page 102, section 5.15."));
}
errors ++;
if (verbose >= 0)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPrintf(stdout,
- _(" **FAIL** BAD DefaultImageableArea %s!\n"
- " REF: Page 102, section 5.15.\n"),
+ _(" **FAIL** BAD DefaultImageableArea %s\n"
+ " REF: Page 102, section 5.15."),
attr->value);
}
else
{
if (verbose > 0)
- _cupsLangPuts(stdout, _(" PASS DefaultImageableArea\n"));
+ _cupsLangPuts(stdout, _(" PASS DefaultImageableArea"));
}
if ((attr = ppdFindAttr(ppd, "DefaultPaperDimension", NULL)) == NULL)
if (verbose >= 0)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPuts(stdout,
_(" **FAIL** REQUIRED DefaultPaperDimension\n"
- " REF: Page 103, section 5.15.\n"));
+ " REF: Page 103, section 5.15."));
}
errors ++;
if (verbose >= 0)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPrintf(stdout,
- _(" **FAIL** BAD DefaultPaperDimension %s!\n"
- " REF: Page 103, section 5.15.\n"),
+ _(" **FAIL** BAD DefaultPaperDimension %s\n"
+ " REF: Page 103, section 5.15."),
attr->value);
}
errors ++;
}
else if (verbose > 0)
- _cupsLangPuts(stdout, _(" PASS DefaultPaperDimension\n"));
+ _cupsLangPuts(stdout, _(" PASS DefaultPaperDimension"));
for (j = 0, group = ppd->groups; j < ppd->num_groups; j ++, group ++)
- for (k = 0, option = group->options; k < group->num_options; k ++, option ++)
+ for (k = 0, option = group->options;
+ k < group->num_options;
+ k ++, option ++)
{
/*
* Verify that we have a default choice...
if (verbose >= 0)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPrintf(stdout,
_(" **FAIL** BAD Default%s %s\n"
- " REF: Page 40, section 4.5.\n"),
+ " REF: Page 40, section 4.5."),
option->keyword, option->defchoice);
}
}
else if (verbose > 0)
_cupsLangPrintf(stdout,
- _(" PASS Default%s\n"),
+ _(" PASS Default%s"),
option->keyword);
}
else
if (verbose >= 0)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPrintf(stdout,
_(" **FAIL** REQUIRED Default%s\n"
- " REF: Page 40, section 4.5.\n"),
+ " REF: Page 40, section 4.5."),
option->keyword);
}
if (verbose >= 0)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPrintf(stdout,
_(" **FAIL** Bad FileVersion \"%s\"\n"
- " REF: Page 56, section 5.3.\n"),
+ " REF: Page 56, section 5.3."),
attr->value);
}
errors ++;
}
else if (verbose > 0)
- _cupsLangPuts(stdout, _(" PASS FileVersion\n"));
+ _cupsLangPuts(stdout, _(" PASS FileVersion"));
}
else
{
if (verbose >= 0)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPuts(stdout,
_(" **FAIL** REQUIRED FileVersion\n"
- " REF: Page 56, section 5.3.\n"));
+ " REF: Page 56, section 5.3."));
}
errors ++;
if (verbose >= 0)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPrintf(stdout,
_(" **FAIL** Bad FormatVersion \"%s\"\n"
- " REF: Page 56, section 5.3.\n"),
+ " REF: Page 56, section 5.3."),
attr->value);
}
errors ++;
}
else if (verbose > 0)
- _cupsLangPuts(stdout, _(" PASS FormatVersion\n"));
+ _cupsLangPuts(stdout, _(" PASS FormatVersion"));
}
else
{
if (verbose >= 0)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPuts(stdout,
_(" **FAIL** REQUIRED FormatVersion\n"
- " REF: Page 56, section 5.3.\n"));
+ " REF: Page 56, section 5.3."));
}
errors ++;
if (ppd->lang_encoding != NULL)
{
if (verbose > 0)
- _cupsLangPuts(stdout, _(" PASS LanguageEncoding\n"));
+ _cupsLangPuts(stdout, _(" PASS LanguageEncoding"));
}
else if (ppdversion > 40)
{
if (verbose >= 0)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPuts(stdout,
_(" **FAIL** REQUIRED LanguageEncoding\n"
- " REF: Pages 56-57, section 5.3.\n"));
+ " REF: Pages 56-57, section 5.3."));
}
errors ++;
if (ppd->lang_version != NULL)
{
if (verbose > 0)
- _cupsLangPuts(stdout, _(" PASS LanguageVersion\n"));
+ _cupsLangPuts(stdout, _(" PASS LanguageVersion"));
}
else
{
if (verbose >= 0)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPuts(stdout,
_(" **FAIL** REQUIRED LanguageVersion\n"
- " REF: Pages 57-58, section 5.3.\n"));
+ " REF: Pages 57-58, section 5.3."));
}
errors ++;
if (verbose >= 0)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPuts(stdout,
_(" **FAIL** BAD Manufacturer (should be "
"\"HP\")\n"
- " REF: Page 211, table D.1.\n"));
+ " REF: Page 211, table D.1."));
}
errors ++;
if (verbose >= 0)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPuts(stdout,
_(" **FAIL** BAD Manufacturer (should be "
"\"Oki\")\n"
- " REF: Page 211, table D.1.\n"));
+ " REF: Page 211, table D.1."));
}
errors ++;
}
else if (verbose > 0)
- _cupsLangPuts(stdout, _(" PASS Manufacturer\n"));
+ _cupsLangPuts(stdout, _(" PASS Manufacturer"));
}
else if (ppdversion >= 43)
{
if (verbose >= 0)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPuts(stdout,
_(" **FAIL** REQUIRED Manufacturer\n"
- " REF: Pages 58-59, section 5.3.\n"));
+ " REF: Pages 58-59, section 5.3."));
}
errors ++;
if (verbose >= 0)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPrintf(stdout,
_(" **FAIL** BAD ModelName - \"%c\" not "
"allowed in string.\n"
- " REF: Pages 59-60, section 5.3.\n"),
+ " REF: Pages 59-60, section 5.3."),
*ptr);
}
errors ++;
}
else if (verbose > 0)
- _cupsLangPuts(stdout, _(" PASS ModelName\n"));
+ _cupsLangPuts(stdout, _(" PASS ModelName"));
}
else
{
if (verbose >= 0)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPuts(stdout,
_(" **FAIL** REQUIRED ModelName\n"
- " REF: Pages 59-60, section 5.3.\n"));
+ " REF: Pages 59-60, section 5.3."));
}
errors ++;
if (ppd->nickname != NULL)
{
if (verbose > 0)
- _cupsLangPuts(stdout, _(" PASS NickName\n"));
+ _cupsLangPuts(stdout, _(" PASS NickName"));
}
else
{
if (verbose >= 0)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPuts(stdout,
_(" **FAIL** REQUIRED NickName\n"
- " REF: Page 60, section 5.3.\n"));
+ " REF: Page 60, section 5.3."));
}
errors ++;
if (ppdFindOption(ppd, "PageSize") != NULL)
{
if (verbose > 0)
- _cupsLangPuts(stdout, _(" PASS PageSize\n"));
+ _cupsLangPuts(stdout, _(" PASS PageSize"));
}
else
{
if (verbose >= 0)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPuts(stdout,
_(" **FAIL** REQUIRED PageSize\n"
- " REF: Pages 99-100, section 5.14.\n"));
+ " REF: Pages 99-100, section 5.14."));
}
errors ++;
if (ppdFindOption(ppd, "PageRegion") != NULL)
{
if (verbose > 0)
- _cupsLangPuts(stdout, _(" PASS PageRegion\n"));
+ _cupsLangPuts(stdout, _(" PASS PageRegion"));
}
else
{
if (verbose >= 0)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPuts(stdout,
_(" **FAIL** REQUIRED PageRegion\n"
- " REF: Page 100, section 5.14.\n"));
+ " REF: Page 100, section 5.14."));
}
errors ++;
if (ppd->pcfilename != NULL)
{
if (verbose > 0)
- _cupsLangPuts(stdout, _(" PASS PCFileName\n"));
+ _cupsLangPuts(stdout, _(" PASS PCFileName"));
}
- else
+ else if (!(ignore & WARN_FILENAME))
{
if (verbose >= 0)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPuts(stdout,
_(" **FAIL** REQUIRED PCFileName\n"
- " REF: Pages 61-62, section 5.3.\n"));
+ " REF: Pages 61-62, section 5.3."));
}
errors ++;
if (verbose >= 0)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPuts(stdout,
_(" **FAIL** BAD Product - not \"(string)\".\n"
- " REF: Page 62, section 5.3.\n"));
+ " REF: Page 62, section 5.3."));
}
errors ++;
}
else if (verbose > 0)
- _cupsLangPuts(stdout, _(" PASS Product\n"));
+ _cupsLangPuts(stdout, _(" PASS Product"));
}
else
{
if (verbose >= 0)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPuts(stdout,
_(" **FAIL** REQUIRED Product\n"
- " REF: Page 62, section 5.3.\n"));
+ " REF: Page 62, section 5.3."));
}
errors ++;
if (verbose >= 0)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPuts(stdout,
_(" **FAIL** BAD PSVersion - not \"(string) "
"int\".\n"
- " REF: Pages 62-64, section 5.3.\n"));
+ " REF: Pages 62-64, section 5.3."));
}
errors ++;
}
else if (verbose > 0)
- _cupsLangPuts(stdout, _(" PASS PSVersion\n"));
+ _cupsLangPuts(stdout, _(" PASS PSVersion"));
}
else
{
if (verbose >= 0)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPuts(stdout,
_(" **FAIL** REQUIRED PSVersion\n"
- " REF: Pages 62-64, section 5.3.\n"));
+ " REF: Pages 62-64, section 5.3."));
}
errors ++;
if (verbose >= 0)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPuts(stdout,
_(" **FAIL** BAD ShortNickName - longer "
"than 31 chars.\n"
- " REF: Pages 64-65, section 5.3.\n"));
+ " REF: Pages 64-65, section 5.3."));
}
errors ++;
}
else if (verbose > 0)
- _cupsLangPuts(stdout, _(" PASS ShortNickName\n"));
+ _cupsLangPuts(stdout, _(" PASS ShortNickName"));
}
else if (ppdversion >= 43)
{
if (verbose >= 0)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPuts(stdout,
_(" **FAIL** REQUIRED ShortNickName\n"
- " REF: Page 64-65, section 5.3.\n"));
+ " REF: Page 64-65, section 5.3."));
}
errors ++;
if (verbose >= 0)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPuts(stdout,
_(" **FAIL** BAD JobPatchFile attribute in file\n"
- " REF: Page 24, section 3.4.\n"));
+ " REF: Page 24, section 3.4."));
}
errors ++;
if (verbose >= 0)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPuts(stdout,
_(" **FAIL** REQUIRED PageSize\n"
" REF: Page 41, section 5.\n"
- " REF: Page 99, section 5.14.\n"));
+ " REF: Page 99, section 5.14."));
}
errors ++;
if (verbose >= 0)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPrintf(stdout,
_(" **FAIL** REQUIRED ImageableArea for "
"PageSize %s\n"
" REF: Page 41, section 5.\n"
- " REF: Page 102, section 5.15.\n"),
+ " REF: Page 102, section 5.15."),
size->name);
}
if (verbose >= 0)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPrintf(stdout,
_(" **FAIL** REQUIRED PaperDimension "
"for PageSize %s\n"
" REF: Page 41, section 5.\n"
- " REF: Page 103, section 5.15.\n"),
+ " REF: Page 103, section 5.15."),
size->name);
}
if (option != NULL)
{
- for (j = option->num_choices, choice = option->choices; j > 0; j --, choice ++)
+ for (j = option->num_choices, choice = option->choices;
+ j > 0;
+ j --, choice ++)
{
/*
* Verify that all resolution options are of the form NNNdpi
if (verbose >= 0)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPrintf(stdout,
- _(" **FAIL** Bad %s choice %s!\n"
- " REF: Page 84, section 5.9\n"),
+ _(" **FAIL** Bad %s choice %s\n"
+ " REF: Page 84, section 5.9"),
option->keyword, choice->choice);
}
if (verbose >= 0)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPrintf(stdout,
- _(" **FAIL** %s must be 1284DeviceID!\n"
- " REF: Page 72, section 5.5\n"),
+ _(" **FAIL** %s must be 1284DeviceID\n"
+ " REF: Page 72, section 5.5"),
attr->name);
}
if (!(warn & WARN_CONSTRAINTS))
errors = check_constraints(ppd, errors, verbose, 0);
- if (!(warn & WARN_FILTERS))
+ if (!(warn & WARN_FILTERS) && !(ignore & WARN_FILTERS))
errors = check_filters(ppd, root, errors, verbose, 0);
- if (!(warn & WARN_PROFILES))
+ if (!(warn & WARN_PROFILES) && !(ignore & WARN_PROFILES))
errors = check_profiles(ppd, root, errors, verbose, 0);
if (!(warn & WARN_SIZES))
if (!attr->value || strcmp(attr->value, "ISOLatin1"))
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
_(" **FAIL** Bad LanguageEncoding %s - "
- "must be ISOLatin1!\n"),
+ "must be ISOLatin1."),
attr->value ? attr->value : "(null)");
errors ++;
if (!ppd->lang_version || strcmp(ppd->lang_version, "English"))
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
_(" **FAIL** Bad LanguageVersion %s - "
- "must be English!\n"),
+ "must be English."),
ppd->lang_version ? ppd->lang_version : "(null)");
errors ++;
if (*ptr)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
_(" **FAIL** Default translation "
"string for option %s contains 8-bit "
- "characters!\n"),
+ "characters."),
option->keyword);
errors ++;
if (*ptr)
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
_(" **FAIL** Default translation "
"string for option %s choice %s contains "
- "8-bit characters!\n"),
+ "8-bit characters."),
option->keyword,
option->choices[j].choice);
if (errors)
status = ERROR_CONFORMANCE;
else if (!verbose)
- _cupsLangPuts(stdout, _(" PASS\n"));
+ _cupsLangPuts(stdout, _(" PASS"));
if (verbose >= 0)
{
check_basics(argv[i]);
- if (warn & WARN_CONSTRAINTS)
- errors = check_constraints(ppd, errors, verbose, 1);
-
if (warn & WARN_DEFAULTS)
errors = check_defaults(ppd, errors, verbose, 1);
- if (warn & WARN_PROFILES)
- errors = check_profiles(ppd, root, errors, verbose, 1);
+ if (warn & WARN_CONSTRAINTS)
+ errors = check_constraints(ppd, errors, verbose, 1);
- if (warn & WARN_FILTERS)
+ if ((warn & WARN_FILTERS) && !(ignore & WARN_FILTERS))
errors = check_filters(ppd, root, errors, verbose, 1);
+ if ((warn & WARN_PROFILES) && !(ignore & WARN_PROFILES))
+ errors = check_profiles(ppd, root, errors, verbose, 1);
+
if (warn & WARN_SIZES)
errors = check_sizes(ppd, errors, verbose, 1);
else
if (option)
_cupsLangPrintf(stdout,
_(" WARN Duplex option keyword %s may not "
- "work as expected and should be named Duplex!\n"
- " REF: Page 122, section 5.17\n"),
+ "work as expected and should be named Duplex.\n"
+ " REF: Page 122, section 5.17"),
option->keyword);
/*
!ppdFindOption(ppd, attr->name + 7))
_cupsLangPrintf(stdout,
_(" WARN %s has no corresponding "
- "options!\n"),
+ "options."),
attr->name);
}
if (ppdConflicts(ppd))
{
_cupsLangPuts(stdout,
- _(" WARN Default choices conflicting!\n"));
+ _(" WARN Default choices conflicting."));
show_conflicts(ppd);
}
if (ppdversion < 43)
{
_cupsLangPrintf(stdout,
- _(" WARN Obsolete PPD version %.1f!\n"
- " REF: Page 42, section 5.2.\n"),
+ _(" WARN Obsolete PPD version %.1f.\n"
+ " REF: Page 42, section 5.2."),
0.1f * ppdversion);
}
_cupsLangPuts(stdout,
_(" WARN LanguageEncoding required by PPD "
"4.3 spec.\n"
- " REF: Pages 56-57, section 5.3.\n"));
+ " REF: Pages 56-57, section 5.3."));
}
if (!ppd->manufacturer && ppdversion < 43)
_cupsLangPuts(stdout,
_(" WARN Manufacturer required by PPD "
"4.3 spec.\n"
- " REF: Pages 58-59, section 5.3.\n"));
+ " REF: Pages 58-59, section 5.3."));
}
/*
* a warning and not a hard error...
*/
- if (ppd->pcfilename && strlen(ppd->pcfilename) > 12)
- {
- _cupsLangPuts(stdout,
- _(" WARN PCFileName longer than 8.3 in "
- "violation of PPD spec.\n"
- " REF: Pages 61-62, section 5.3.\n"));
+ if (!(ignore & WARN_FILENAME) && ppd->pcfilename)
+ {
+ if (strlen(ppd->pcfilename) > 12)
+ {
+ _cupsLangPuts(stdout,
+ _(" WARN PCFileName longer than 8.3 in "
+ "violation of PPD spec.\n"
+ " REF: Pages 61-62, section "
+ "5.3."));
+ }
+
+ if (!strcasecmp(ppd->pcfilename, "unused.ppd"))
+ _cupsLangPuts(stdout,
+ _(" WARN PCFileName should contain a "
+ "unique filename.\n"
+ " REF: Pages 61-62, section "
+ "5.3."));
}
if (!ppd->shortnickname && ppdversion < 43)
_cupsLangPuts(stdout,
_(" WARN ShortNickName required by PPD "
"4.3 spec.\n"
- " REF: Pages 64-65, section 5.3.\n"));
+ " REF: Pages 64-65, section 5.3."));
}
/*
_cupsLangPuts(stdout,
_(" WARN Protocols contains both PJL "
"and BCP; expected TBCP.\n"
- " REF: Pages 78-79, section 5.7.\n"));
+ " REF: Pages 78-79, section 5.7."));
}
if (strstr(ppd->protocols, "PJL") &&
_cupsLangPuts(stdout,
_(" WARN Protocols contains PJL but JCL "
"attributes are not set.\n"
- " REF: Pages 78-79, section 5.7.\n"));
+ " REF: Pages 78-79, section 5.7."));
}
}
*/
for (j = 0, group = ppd->groups; j < ppd->num_groups; j ++, group ++)
- for (k = 0, option = group->options; k < group->num_options; k ++, option ++)
+ for (k = 0, option = group->options;
+ k < group->num_options;
+ k ++, option ++)
{
- len = strlen(option->keyword);
+ len = (int)strlen(option->keyword);
for (m = 0, group2 = ppd->groups;
m < ppd->num_groups;
n < group2->num_options;
n ++, option2 ++)
if (option != option2 &&
- len < strlen(option2->keyword) &&
+ len < (int)strlen(option2->keyword) &&
!strncmp(option->keyword, option2->keyword, len))
{
_cupsLangPrintf(stdout,
_(" WARN %s shares a common "
"prefix with %s\n"
" REF: Page 15, section "
- "3.2.\n"),
+ "3.2."),
option->keyword, option2->keyword);
}
}
if (verbose > 0)
{
if (errors)
- _cupsLangPrintf(stdout, _(" %d ERRORS FOUND\n"), errors);
+ _cupsLangPrintf(stdout, _(" %d ERRORS FOUND"), errors);
else
- _cupsLangPuts(stdout, _(" NO ERRORS FOUND\n"));
+ _cupsLangPuts(stdout, _(" NO ERRORS FOUND"));
}
/*
" language_level = %d\n"
" color_device = %s\n"
" variable_sizes = %s\n"
- " landscape = %d\n",
+ " landscape = %d",
ppd->language_level,
ppd->color_device ? "TRUE" : "FALSE",
ppd->variable_sizes ? "TRUE" : "FALSE",
switch (ppd->colorspace)
{
case PPD_CS_CMYK :
- _cupsLangPuts(stdout, " colorspace = PPD_CS_CMYK\n");
+ _cupsLangPuts(stdout, " colorspace = PPD_CS_CMYK");
break;
case PPD_CS_CMY :
- _cupsLangPuts(stdout, " colorspace = PPD_CS_CMY\n");
+ _cupsLangPuts(stdout, " colorspace = PPD_CS_CMY");
break;
case PPD_CS_GRAY :
- _cupsLangPuts(stdout, " colorspace = PPD_CS_GRAY\n");
+ _cupsLangPuts(stdout, " colorspace = PPD_CS_GRAY");
break;
case PPD_CS_RGB :
- _cupsLangPuts(stdout, " colorspace = PPD_CS_RGB\n");
+ _cupsLangPuts(stdout, " colorspace = PPD_CS_RGB");
break;
default :
- _cupsLangPuts(stdout, " colorspace = <unknown>\n");
+ _cupsLangPuts(stdout, " colorspace = <unknown>");
break;
}
- _cupsLangPrintf(stdout, " num_emulations = %d\n",
+ _cupsLangPrintf(stdout, " num_emulations = %d",
ppd->num_emulations);
for (j = 0; j < ppd->num_emulations; j ++)
- _cupsLangPrintf(stdout, " emulations[%d] = %s\n",
+ _cupsLangPrintf(stdout, " emulations[%d] = %s",
j, ppd->emulations[j].name);
- _cupsLangPrintf(stdout, " lang_encoding = %s\n",
+ _cupsLangPrintf(stdout, " lang_encoding = %s",
ppd->lang_encoding);
- _cupsLangPrintf(stdout, " lang_version = %s\n",
+ _cupsLangPrintf(stdout, " lang_version = %s",
ppd->lang_version);
- _cupsLangPrintf(stdout, " modelname = %s\n", ppd->modelname);
- _cupsLangPrintf(stdout, " ttrasterizer = %s\n",
+ _cupsLangPrintf(stdout, " modelname = %s", ppd->modelname);
+ _cupsLangPrintf(stdout, " ttrasterizer = %s",
ppd->ttrasterizer == NULL ? "None" : ppd->ttrasterizer);
- _cupsLangPrintf(stdout, " manufacturer = %s\n",
+ _cupsLangPrintf(stdout, " manufacturer = %s",
ppd->manufacturer);
- _cupsLangPrintf(stdout, " product = %s\n", ppd->product);
- _cupsLangPrintf(stdout, " nickname = %s\n", ppd->nickname);
- _cupsLangPrintf(stdout, " shortnickname = %s\n",
+ _cupsLangPrintf(stdout, " product = %s", ppd->product);
+ _cupsLangPrintf(stdout, " nickname = %s", ppd->nickname);
+ _cupsLangPrintf(stdout, " shortnickname = %s",
ppd->shortnickname);
- _cupsLangPrintf(stdout, " patches = %d bytes\n",
+ _cupsLangPrintf(stdout, " patches = %d bytes",
ppd->patches == NULL ? 0 : (int)strlen(ppd->patches));
- _cupsLangPrintf(stdout, " num_groups = %d\n", ppd->num_groups);
+ _cupsLangPrintf(stdout, " num_groups = %d", ppd->num_groups);
for (j = 0, group = ppd->groups; j < ppd->num_groups; j ++, group ++)
{
- _cupsLangPrintf(stdout, " group[%d] = %s\n",
+ _cupsLangPrintf(stdout, " group[%d] = %s",
j, group->text);
for (k = 0, option = group->options; k < group->num_options; k ++, option ++)
{
_cupsLangPrintf(stdout,
" options[%d] = %s (%s) %s %s %.0f "
- "(%d choices)\n",
+ "(%d choices)",
k, option->keyword, option->text, uis[option->ui],
sections[option->section], option->order,
option->num_choices);
if (size == NULL)
_cupsLangPrintf(stdout,
- " %s (%s) = ERROR",
- choice->choice, choice->text);
+ " %s (%s) = ERROR%s",
+ choice->choice, choice->text,
+ !strcmp(option->defchoice, choice->choice)
+ ? " *" : "");
else
_cupsLangPrintf(stdout,
" %s (%s) = %.2fx%.2fin "
- "(%.1f,%.1f,%.1f,%.1f)",
+ "(%.1f,%.1f,%.1f,%.1f)%s",
choice->choice, choice->text,
size->width / 72.0, size->length / 72.0,
size->left / 72.0, size->bottom / 72.0,
- size->right / 72.0, size->top / 72.0);
-
- if (!strcmp(option->defchoice, choice->choice))
- _cupsLangPuts(stdout, " *\n");
- else
- _cupsLangPuts(stdout, "\n");
+ size->right / 72.0, size->top / 72.0,
+ !strcmp(option->defchoice, choice->choice)
+ ? " *" : "");
}
}
else
m > 0;
m --, choice ++)
{
- _cupsLangPrintf(stdout, " %s (%s)",
- choice->choice, choice->text);
-
- if (!strcmp(option->defchoice, choice->choice))
- _cupsLangPuts(stdout, " *\n");
- else
- _cupsLangPuts(stdout, "\n");
+ _cupsLangPrintf(stdout, " %s (%s)%s",
+ choice->choice, choice->text,
+ !strcmp(option->defchoice, choice->choice)
+ ? " *" : "");
}
}
}
}
- _cupsLangPrintf(stdout, " num_consts = %d\n",
+ _cupsLangPrintf(stdout, " num_consts = %d",
ppd->num_consts);
for (j = 0; j < ppd->num_consts; j ++)
_cupsLangPrintf(stdout,
- " consts[%d] = *%s %s *%s %s\n",
+ " consts[%d] = *%s %s *%s %s",
j, ppd->consts[j].option1, ppd->consts[j].choice1,
ppd->consts[j].option2, ppd->consts[j].choice2);
- _cupsLangPrintf(stdout, " num_profiles = %d\n",
+ _cupsLangPrintf(stdout, " num_profiles = %d",
ppd->num_profiles);
for (j = 0; j < ppd->num_profiles; j ++)
_cupsLangPrintf(stdout,
" profiles[%d] = %s/%s %.3f %.3f "
- "[ %.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f ]\n",
+ "[ %.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f ]",
j, ppd->profiles[j].resolution,
ppd->profiles[j].media_type,
ppd->profiles[j].gamma, ppd->profiles[j].density,
ppd->profiles[j].matrix[2][1],
ppd->profiles[j].matrix[2][2]);
- _cupsLangPrintf(stdout, " num_fonts = %d\n", ppd->num_fonts);
+ _cupsLangPrintf(stdout, " num_fonts = %d", ppd->num_fonts);
for (j = 0; j < ppd->num_fonts; j ++)
- _cupsLangPrintf(stdout, " fonts[%d] = %s\n",
+ _cupsLangPrintf(stdout, " fonts[%d] = %s",
j, ppd->fonts[j]);
- _cupsLangPrintf(stdout, " num_attrs = %d\n", ppd->num_attrs);
+ _cupsLangPrintf(stdout, " num_attrs = %d", ppd->num_attrs);
for (j = 0; j < ppd->num_attrs; j ++)
_cupsLangPrintf(stdout,
- " attrs[%d] = %s %s%s%s: \"%s\"\n", j,
+ " attrs[%d] = %s %s%s%s: \"%s\"", j,
ppd->attrs[j]->name, ppd->attrs[j]->spec,
ppd->attrs[j]->text[0] ? "/" : "",
ppd->attrs[j]->text,
if (col > 0 && whitespace)
_cupsLangPrintf(stdout,
- _(" WARN Line %d only contains whitespace!\n"),
+ _(" WARN Line %d only contains whitespace."),
linenum);
linenum ++;
if (mixed)
_cupsLangPuts(stdout,
_(" WARN File contains a mix of CR, LF, and "
- "CR LF line endings!\n"));
+ "CR LF line endings."));
if (eol == EOL_CRLF)
_cupsLangPuts(stdout,
_(" WARN Non-Windows PPD files should use lines "
- "ending with only LF, not CR LF!\n"));
+ "ending with only LF, not CR LF."));
cupsFileClose(fp);
}
if (!constattr->value)
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPrintf(stdout,
- _(" %s Empty cupsUIConstraints %s!\n"),
+ _(" %s Empty cupsUIConstraints %s"),
prefix, constattr->spec);
if (!warn)
if (i == 0)
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPrintf(stdout,
- _(" %s Bad cupsUIConstraints %s: \"%s\"!\n"),
+ _(" %s Bad cupsUIConstraints %s: \"%s\""),
prefix, constattr->spec, constattr->value);
if (!warn)
!ppdFindAttr(ppd, "cupsUIResolver", constattr->spec))
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPrintf(stdout,
- _(" %s Missing cupsUIResolver %s!\n"),
+ _(" %s Missing cupsUIResolver %s"),
prefix, constattr->spec);
if (!warn)
if ((o = ppdFindOption(ppd, option)) == NULL)
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPrintf(stdout,
_(" %s Missing option %s in "
- "cupsUIConstraints %s: \"%s\"!\n"),
+ "cupsUIConstraints %s: \"%s\""),
prefix, option, constattr->spec, constattr->value);
if (!warn)
if (choice[0] && !ppdFindChoice(o, choice))
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPrintf(stdout,
_(" %s Missing choice *%s %s in "
- "cupsUIConstraints %s: \"%s\"!\n"),
+ "cupsUIConstraints %s: \"%s\""),
prefix, option, choice, constattr->spec,
constattr->value);
if (num_options < 2)
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPrintf(stdout,
_(" %s cupsUIResolver %s does not list at least "
- "two different options!\n"),
+ "two different options."),
prefix, constattr->spec);
if (!warn)
if (!cupsResolveConflicts(ppd, NULL, NULL, &num_options, &options))
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPrintf(stdout,
- _(" %s cupsUIResolver %s causes a loop!\n"),
+ _(" %s cupsUIResolver %s causes a loop."),
prefix, constattr->spec);
if (!warn)
if ((o = ppdFindOption(ppd, option)) == NULL)
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPrintf(stdout,
_(" %s Missing option %s in "
- "UIConstraints \"*%s %s *%s %s\"!\n"),
+ "UIConstraints \"*%s %s *%s %s\"."),
prefix, c->option1,
c->option1, c->choice1, c->option2, c->choice2);
else if (choice[0] && !ppdFindChoice(o, choice))
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPrintf(stdout,
_(" %s Missing choice *%s %s in "
- "UIConstraints \"*%s %s *%s %s\"!\n"),
+ "UIConstraints \"*%s %s *%s %s\"."),
prefix, c->option1, c->choice1,
c->option1, c->choice1, c->option2, c->choice2);
if ((o = ppdFindOption(ppd, option)) == NULL)
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPrintf(stdout,
_(" %s Missing option %s in "
- "UIConstraints \"*%s %s *%s %s\"!\n"),
+ "UIConstraints \"*%s %s *%s %s\"."),
prefix, c->option2,
c->option1, c->choice1, c->option2, c->choice2);
else if (choice[0] && !ppdFindChoice(o, choice))
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPrintf(stdout,
_(" %s Missing choice *%s %s in "
- "UIConstraints \"*%s %s *%s %s\"!\n"),
+ "UIConstraints \"*%s %s *%s %s\"."),
prefix, c->option2, c->choice2,
c->option1, c->choice1, c->option2, c->choice2);
if (!strcasecmp(groupa->name, groupb->name))
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
_(" **FAIL** Group names %s and %s differ only "
- "by case!\n"),
+ "by case."),
groupa->name, groupb->name);
errors ++;
if (!strcasecmp(optiona->keyword, optionb->keyword))
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
_(" **FAIL** Option names %s and %s differ only "
- "by case!\n"),
+ "by case."),
optiona->keyword, optionb->keyword);
errors ++;
if (!strcmp(choicea->choice, choiceb->choice))
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
_(" **FAIL** Multiple occurrences of %s "
- "choice name %s!\n"),
+ "choice name %s."),
optiona->keyword, choicea->choice);
errors ++;
else if (!strcasecmp(choicea->choice, choiceb->choice))
{
if (!errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
_(" **FAIL** %s choice names %s and %s "
- "differ only by case!\n"),
+ "differ only by case."),
optiona->keyword, choicea->choice, choiceb->choice);
errors ++;
if (k >= option->num_choices)
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
- _(" %s %s %s does not exist!\n"),
+ _(" %s %s %s does not exist."),
prefix, attr->name, attr->value);
if (!warn)
if (verbose >= 0)
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPrintf(stdout,
_(" %s REQUIRED %s does not define "
- "choice None!\n"
- " REF: Page 122, section 5.17\n"),
+ "choice None.\n"
+ " REF: Page 122, section 5.17"),
prefix, option->keyword);
}
if (verbose >= 0)
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
_cupsLangPrintf(stdout,
- _(" %s Bad %s choice %s!\n"
- " REF: Page 122, section 5.17\n"),
+ _(" %s Bad %s choice %s.\n"
+ " REF: Page 122, section 5.17"),
prefix, option->keyword, choice->choice);
}
pathprog[1024]; /* Complete path to program/filter */
int cost; /* Cost of filter */
const char *prefix; /* WARN/FAIL prefix */
+ struct stat fileinfo; /* File information */
prefix = warn ? " WARN " : "**FAIL**";
&cost, program) != 4)
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
- _(" %s Bad cupsFilter value \"%s\"!\n"),
+ _(" %s Bad cupsFilter value \"%s\"."),
prefix, ppd->filters[i]);
if (!warn)
program);
}
- if (access(pathprog, X_OK))
+ if (stat(pathprog, &fileinfo))
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
- _cupsLangPrintf(stdout, _(" %s Missing cupsFilter "
- "file \"%s\"\n"), prefix, program);
+ _cupsLangPrintf(stdout, _(" %s Missing %s file \"%s\"."),
+ prefix, "cupsFilter", pathprog);
+
+ if (!warn)
+ errors ++;
+ }
+ else if (fileinfo.st_uid != 0 ||
+ (fileinfo.st_mode & MODE_WRITE) ||
+ (fileinfo.st_mode & MODE_MASK) != MODE_PROGRAM)
+ {
+ if (!warn && !errors && !verbose)
+ _cupsLangPuts(stdout, _(" FAIL"));
+
+ if (verbose >= 0)
+ _cupsLangPrintf(stdout,
+ _(" %s Bad permissions on %s file \"%s\"."),
+ prefix, "cupsFilter", pathprog);
if (!warn)
errors ++;
if (strcmp(attr->name, "cupsPreFilter"))
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
- _(" %s Bad spelling of %s - should be %s!\n"),
+ _(" %s Bad spelling of %s - should be %s."),
prefix, attr->name, "cupsPreFilter");
if (!warn)
&cost, program) != 4)
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
- _(" %s Bad cupsPreFilter value \"%s\"!\n"),
+ _(" %s Bad cupsPreFilter value \"%s\"."),
prefix, attr->value ? attr->value : "");
if (!warn)
program);
}
- if (access(pathprog, X_OK))
+ if (stat(pathprog, &fileinfo))
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
- _cupsLangPrintf(stdout, _(" %s Missing cupsPreFilter "
- "file \"%s\"\n"), prefix, program);
+ _cupsLangPrintf(stdout, _(" %s Missing %s file \"%s\"."),
+ prefix, "cupsPreFilter", pathprog);
if (!warn)
errors ++;
}
+ else if (fileinfo.st_uid != 0 ||
+ (fileinfo.st_mode & MODE_WRITE) ||
+ (fileinfo.st_mode & MODE_MASK) != MODE_PROGRAM)
+ {
+ if (!warn && !errors && !verbose)
+ _cupsLangPuts(stdout, _(" FAIL"));
+
+ if (verbose >= 0)
+ _cupsLangPrintf(stdout,
+ _(" %s Bad permissions on %s file \"%s\"."),
+ prefix, "cupsPreFilter", pathprog);
+
+ if (!warn)
+ errors ++;
+ }
else
errors = valid_path("cupsPreFilter", pathprog, errors, verbose, warn);
}
if (strcmp(attr->name, "APDialogExtension"))
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
- _(" %s Bad spelling of %s - should be %s!\n"),
+ _(" %s Bad spelling of %s - should be %s."),
prefix, attr->name, "APDialogExtension");
if (!warn)
errors ++;
}
+
+ snprintf(pathprog, sizeof(pathprog), "%s%s", root,
+ attr->value ? attr->value : "(null)");
- if (!attr->value || access(attr->value, 0))
+ if (!attr->value || stat(pathprog, &fileinfo))
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
- _cupsLangPrintf(stdout, _(" %s Missing "
- "APDialogExtension file \"%s\"\n"),
- prefix, attr->value ? attr->value : "<NULL>");
+ _cupsLangPrintf(stdout, _(" %s Missing %s file \"%s\"."),
+ prefix, "APDialogExtension", pathprog);
+
+ if (!warn)
+ errors ++;
+ }
+ else if (fileinfo.st_uid != 0 ||
+ (fileinfo.st_mode & MODE_WRITE) ||
+ (fileinfo.st_mode & MODE_MASK) != MODE_DIRECTORY)
+ {
+ if (!warn && !errors && !verbose)
+ _cupsLangPuts(stdout, _(" FAIL"));
+
+ if (verbose >= 0)
+ _cupsLangPrintf(stdout,
+ _(" %s Bad permissions on %s file \"%s\"."),
+ prefix, "APDialogExtension", pathprog);
if (!warn)
errors ++;
}
else
- errors = valid_path("APDialogExtension", attr->value, errors, verbose,
+ errors = valid_path("APDialogExtension", pathprog, errors, verbose,
warn);
}
if (strcmp(attr->name, "APPrinterIconPath"))
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
- _(" %s Bad spelling of %s - should be %s!\n"),
+ _(" %s Bad spelling of %s - should be %s."),
prefix, attr->name, "APPrinterIconPath");
if (!warn)
errors ++;
}
- if (!attr->value || access(attr->value, 0))
+ snprintf(pathprog, sizeof(pathprog), "%s%s", root,
+ attr->value ? attr->value : "(null)");
+
+ if (!attr->value || stat(pathprog, &fileinfo))
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
- _cupsLangPrintf(stdout, _(" %s Missing "
- "APPrinterIconPath file \"%s\"\n"),
- prefix, attr->value ? attr->value : "<NULL>");
+ _cupsLangPrintf(stdout, _(" %s Missing %s file \"%s\"."),
+ prefix, "APPrinterIconPath", pathprog);
+
+ if (!warn)
+ errors ++;
+ }
+ else if (fileinfo.st_uid != 0 ||
+ (fileinfo.st_mode & MODE_WRITE) ||
+ (fileinfo.st_mode & MODE_MASK) != MODE_DATAFILE)
+ {
+ if (!warn && !errors && !verbose)
+ _cupsLangPuts(stdout, _(" FAIL"));
+
+ if (verbose >= 0)
+ _cupsLangPrintf(stdout,
+ _(" %s Bad permissions on %s file \"%s\"."),
+ prefix, "APPrinterIconPath", pathprog);
if (!warn)
errors ++;
}
else
- errors = valid_path("APPrinterIconPath", attr->value, errors, verbose,
+ errors = valid_path("APPrinterIconPath", pathprog, errors, verbose,
warn);
}
if (strcmp(attr->name, "APPrinterLowInkTool"))
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
- _(" %s Bad spelling of %s - should be %s!\n"),
+ _(" %s Bad spelling of %s - should be %s."),
prefix, attr->name, "APPrinterLowInkTool");
if (!warn)
errors ++;
}
- if (!attr->value || access(attr->value, 0))
+ snprintf(pathprog, sizeof(pathprog), "%s%s", root,
+ attr->value ? attr->value : "(null)");
+
+ if (!attr->value || stat(pathprog, &fileinfo))
+ {
+ if (!warn && !errors && !verbose)
+ _cupsLangPuts(stdout, _(" FAIL"));
+
+ if (verbose >= 0)
+ _cupsLangPrintf(stdout, _(" %s Missing %s file \"%s\"."),
+ prefix, "APPrinterLowInkTool", pathprog);
+
+ if (!warn)
+ errors ++;
+ }
+ else if (fileinfo.st_uid != 0 ||
+ (fileinfo.st_mode & MODE_WRITE) ||
+ (fileinfo.st_mode & MODE_MASK) != MODE_DIRECTORY)
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
- _cupsLangPrintf(stdout, _(" %s Missing "
- "APPrinterLowInkTool file \"%s\"\n"),
- prefix, attr->value ? attr->value : "<NULL>");
+ _cupsLangPrintf(stdout,
+ _(" %s Bad permissions on %s file \"%s\"."),
+ prefix, "APPrinterLowInkTool", pathprog);
if (!warn)
errors ++;
}
else
- errors = valid_path("APPrinterLowInkTool", attr->value, errors, verbose,
+ errors = valid_path("APPrinterLowInkTool", pathprog, errors, verbose,
warn);
}
if (strcmp(attr->name, "APPrinterUtilityPath"))
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
- _(" %s Bad spelling of %s - should be %s!\n"),
+ _(" %s Bad spelling of %s - should be %s."),
prefix, attr->name, "APPrinterUtilityPath");
if (!warn)
errors ++;
}
- if (!attr->value || access(attr->value, 0))
+ snprintf(pathprog, sizeof(pathprog), "%s%s", root,
+ attr->value ? attr->value : "(null)");
+
+ if (!attr->value || stat(pathprog, &fileinfo))
+ {
+ if (!warn && !errors && !verbose)
+ _cupsLangPuts(stdout, _(" FAIL"));
+
+ if (verbose >= 0)
+ _cupsLangPrintf(stdout, _(" %s Missing %s file \"%s\"."),
+ prefix, "APPrinterUtilityPath", pathprog);
+
+ if (!warn)
+ errors ++;
+ }
+ else if (fileinfo.st_uid != 0 ||
+ (fileinfo.st_mode & MODE_WRITE) ||
+ (fileinfo.st_mode & MODE_MASK) != MODE_DIRECTORY)
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
- _cupsLangPrintf(stdout, _(" %s Missing "
- "APPrinterUtilityPath file \"%s\"\n"),
- prefix, attr->value ? attr->value : "<NULL>");
+ _cupsLangPrintf(stdout,
+ _(" %s Bad permissions on %s file \"%s\"."),
+ prefix, "APPrinterUtilityPath", pathprog);
if (!warn)
errors ++;
}
else
- errors = valid_path("APPrinterUtilityPath", attr->value, errors, verbose,
+ errors = valid_path("APPrinterUtilityPath", pathprog, errors, verbose,
warn);
}
if (strcmp(attr->name, "APScanAppPath"))
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
- _(" %s Bad spelling of %s - should be %s!\n"),
+ _(" %s Bad spelling of %s - should be %s."),
prefix, attr->name, "APScanAppPath");
if (!warn)
errors ++;
}
- if (!attr->value || access(attr->value, 0))
+ if (!attr->value || stat(attr->value, &fileinfo))
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
- _cupsLangPrintf(stdout, _(" %s Missing "
- "APScanAppPath file \"%s\"\n"),
- prefix, attr->value ? attr->value : "<NULL>");
+ _cupsLangPrintf(stdout, _(" %s Missing %s file \"%s\"."),
+ prefix, "APScanAppPath",
+ attr->value ? attr->value : "<NULL>");
+
+ if (!warn)
+ errors ++;
+ }
+ else if (fileinfo.st_uid != 0 ||
+ (fileinfo.st_mode & MODE_WRITE) ||
+ (fileinfo.st_mode & MODE_MASK) != MODE_DIRECTORY)
+ {
+ if (!warn && !errors && !verbose)
+ _cupsLangPuts(stdout, _(" FAIL"));
+
+ if (verbose >= 0)
+ _cupsLangPrintf(stdout,
+ _(" %s Bad permissions on %s file \"%s\"."),
+ prefix, "APScanAppPath", attr->value);
if (!warn)
errors ++;
if (ppdFindAttr(ppd, "APScanAppBundleID", NULL))
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout, _(" %s Cannot provide both "
- "APScanAppPath and APScanAppBundleID!\n"),
+ "APScanAppPath and APScanAppBundleID."),
prefix);
if (!warn)
const char *ptr; /* Pointer into string */
const char *prefix; /* WARN/FAIL prefix */
char filename[1024]; /* Profile filename */
+ struct stat fileinfo; /* File information */
int num_profiles = 0; /* Number of profiles */
unsigned hash, /* Current hash value */
hashes[1000]; /* Hash values of profile names */
if (!attr->value || i < 2)
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
- _(" %s Bad cupsICCProfile %s!\n"),
+ _(" %s Bad cupsICCProfile %s."),
prefix, attr->spec);
if (!warn)
attr->value);
}
- if (access(filename, 0))
+ if (stat(filename, &fileinfo))
+ {
+ if (!warn && !errors && !verbose)
+ _cupsLangPuts(stdout, _(" FAIL"));
+
+ if (verbose >= 0)
+ _cupsLangPrintf(stdout, _(" %s Missing %s file \"%s\"."),
+ prefix, "cupsICCProfile", filename);
+
+ if (!warn)
+ errors ++;
+ }
+ else if (fileinfo.st_uid != 0 ||
+ (fileinfo.st_mode & MODE_WRITE) ||
+ (fileinfo.st_mode & MODE_MASK) != MODE_DATAFILE)
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
- _cupsLangPrintf(stdout, _(" %s Missing cupsICCProfile "
- "file \"%s\"!\n"), prefix, attr->value);
+ _cupsLangPrintf(stdout,
+ _(" %s Bad permissions on %s file \"%s\"."),
+ prefix, "cupsICCProfile", filename);
if (!warn)
errors ++;
if (i < num_profiles)
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
_(" %s cupsICCProfile %s hash value "
- "collides with %s!\n"), prefix, attr->spec,
+ "collides with %s."), prefix, attr->spec,
specs[i]);
if (!warn)
ppd_size_t *size; /* Current size */
int width, /* Custom width */
length; /* Custom length */
- char name[PPD_MAX_NAME], /* Size name without dot suffix */
- *nameptr; /* Pointer into name */
const char *prefix; /* WARN/FAIL prefix */
ppd_option_t *page_size, /* PageSize option */
*page_region; /* PageRegion option */
if ((page_size = ppdFindOption(ppd, "PageSize")) == NULL && warn != 2)
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
- _(" %s Missing REQUIRED PageSize option!\n"
- " REF: Page 99, section 5.14.\n"),
+ _(" %s Missing REQUIRED PageSize option.\n"
+ " REF: Page 99, section 5.14."),
prefix);
if (!warn)
if ((page_region = ppdFindOption(ppd, "PageRegion")) == NULL && warn != 2)
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
- _(" %s Missing REQUIRED PageRegion option!\n"
- " REF: Page 100, section 5.14.\n"),
+ _(" %s Missing REQUIRED PageRegion option.\n"
+ " REF: Page 100, section 5.14."),
prefix);
if (!warn)
fabs(length - size->length) >= 1.0)
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
_(" %s Size \"%s\" has unexpected dimensions "
- "(%gx%g)!\n"),
+ "(%gx%g)."),
prefix, size->name, size->width, size->length);
if (!warn)
errors ++;
}
}
- else if (warn && verbose >= 0)
- {
- /*
- * Lookup the size name in the standard size table...
- */
-
- strlcpy(name, size->name, sizeof(name));
- if ((nameptr = strchr(name, '.')) != NULL)
- *nameptr = '\0';
-
- if (!bsearch(name, adobe_size_names,
- sizeof(adobe_size_names) /
- sizeof(adobe_size_names[0]),
- sizeof(adobe_size_names[0]),
- (int (*)(const void *, const void *))strcmp))
- {
- _cupsLangPrintf(stdout,
- _(" %s Non-standard size name \"%s\"!\n"
- " REF: Page 187, section B.2.\n"),
- prefix, size->name);
- }
- }
/*
* Verify that the size is defined for both PageSize and PageRegion...
if (warn != 2 && !ppdFindChoice(page_size, size->name))
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
_(" %s Size \"%s\" defined for %s but not for "
- "%s!\n"),
+ "%s."),
prefix, size->name, "PageRegion", "PageSize");
if (!warn)
else if (warn != 2 && !ppdFindChoice(page_region, size->name))
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
_(" %s Size \"%s\" defined for %s but not for "
- "%s!\n"),
+ "%s."),
prefix, size->name, "PageSize", "PageRegion");
if (!warn)
language;
language = (char *)cupsArrayNext(languages))
{
- langlen = strlen(language);
+ langlen = (int)strlen(language);
if (langlen != 2 && langlen != 5)
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
- _(" %s Bad language \"%s\"!\n"),
+ _(" %s Bad language \"%s\"."),
prefix, language);
if (!warn)
(attr = ppdFindAttr(ppd, llkeyword, option->keyword)) == NULL)
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
_(" %s Missing \"%s\" translation "
- "string for option %s!\n"),
+ "string for option %s."),
prefix, language, option->keyword);
if (!warn)
else if (!valid_utf8(attr->text))
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
_(" %s Bad UTF-8 \"%s\" translation "
- "string for option %s!\n"),
+ "string for option %s."),
prefix, language, option->keyword);
if (!warn)
!valid_utf8(attr->text))
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
_(" %s Bad UTF-8 \"%s\" "
"translation string for option %s, "
- "choice %s!\n"),
+ "choice %s."),
prefix, language,
ckeyword + 1 + strlen(language),
"True");
cparam->name)) == NULL)
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
_(" %s Missing \"%s\" "
"translation string for option %s, "
- "choice %s!\n"),
+ "choice %s."),
prefix, language,
ckeyword + 1 + strlen(language),
cparam->name);
else if (!valid_utf8(attr->text))
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
_(" %s Bad UTF-8 \"%s\" "
"translation string for option %s, "
- "choice %s!\n"),
+ "choice %s."),
prefix, language,
ckeyword + 1 + strlen(language),
cparam->name);
option->choices[j].choice)) == NULL)
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
_(" %s Missing \"%s\" "
"translation string for option %s, "
- "choice %s!\n"),
+ "choice %s."),
prefix, language, option->keyword,
option->choices[j].choice);
else if (!valid_utf8(attr->text))
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
_(" %s Bad UTF-8 \"%s\" "
"translation string for option %s, "
- "choice %s!\n"),
+ "choice %s."),
prefix, language, option->keyword,
option->choices[j].choice);
strcmp(ll, "zh") && strcmp(ll, "en"))
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
_(" %s No base translation \"%s\" "
- "is included in file!\n"), prefix, ll);
+ "is included in file."), prefix, ll);
if (!warn)
errors ++;
if (c1 != NULL && c1->marked && c2 != NULL && c2->marked)
_cupsLangPrintf(stdout,
_(" WARN \"%s %s\" conflicts with \"%s %s\"\n"
- " (constraint=\"%s %s %s %s\")\n"),
+ " (constraint=\"%s %s %s %s\")."),
o1->keyword, c1->choice, o2->keyword, c2->choice,
c->option1, c->choice1, c->option2, c->choice2);
}
if (cupsRasterInterpretPPD(&header, ppd, 0, NULL, 0))
{
if (!verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
_(" **FAIL** Default option code cannot be "
- "interpreted: %s\n"), cupsRasterErrorString());
+ "interpreted: %s"), cupsRasterErrorString());
return (0);
}
if (cupsRasterInterpretPPD(&header, ppd, 0, NULL, 0))
{
if (!verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
_(" **FAIL** Default option code cannot be "
- "interpreted: %s\n"), cupsRasterErrorString());
+ "interpreted: %s"), cupsRasterErrorString());
return (0);
}
static void
usage(void)
{
- _cupsLangPuts(stdout,
- _("Usage: cupstestppd [options] filename1.ppd[.gz] "
- "[... filenameN.ppd[.gz]]\n"
- " program | cupstestppd [options] -\n"
- "\n"
- "Options:\n"
- "\n"
- " -R root-directory Set alternate root\n"
- " -W {all,none,constraints,defaults,duplex,filters,"
- "profiles,sizes,translations}\n"
- " Issue warnings instead of errors\n"
- " -q Run silently\n"
- " -r Use 'relaxed' open mode\n"
- " -v Be slightly verbose\n"
- " -vv Be very verbose\n"));
+ _cupsLangPuts(stdout, _("Usage: cupstestppd [options] filename1.ppd[.gz] "
+ "[... filenameN.ppd[.gz]]"));
+ _cupsLangPuts(stdout, _(" program | cupstestppd [options] -"));
+ _cupsLangPuts(stdout, "");
+ _cupsLangPuts(stdout, _("Options:"));
+ _cupsLangPuts(stdout, "");
+ _cupsLangPuts(stdout, _(" -I {filename,filters,none,profiles}"));
+ _cupsLangPuts(stdout, _(" Ignore specific warnings."));
+ _cupsLangPuts(stdout, _(" -R root-directory Set alternate root."));
+ _cupsLangPuts(stdout, _(" -W {all,none,constraints,defaults,duplex,"
+ "filters,profiles,sizes,translations}"));
+ _cupsLangPuts(stdout, _(" Issue warnings instead of "
+ "errors."));
+ _cupsLangPuts(stdout, _(" -q Run silently."));
+ _cupsLangPuts(stdout, _(" -r Use 'relaxed' open mode."));
+ _cupsLangPuts(stdout, _(" -v Be slightly verbose."));
+ _cupsLangPuts(stdout, _(" -vv Be very verbose."));
exit(ERROR_USAGE);
}
if (!dentry)
{
if (!warn && !errors && !verbose)
- _cupsLangPuts(stdout, _(" FAIL\n"));
+ _cupsLangPuts(stdout, _(" FAIL"));
if (verbose >= 0)
_cupsLangPrintf(stdout,
_(" %s %s file \"%s\" has the wrong "
- "capitalization!\n"), prefix, keyword, path);
+ "capitalization."), prefix, keyword, path);
if (!warn)
errors ++;