1/*
2 * "$Id: testppdx.c 3835 2012-05-23 22:57:19Z msweet $"
3 *
4 *   Test program for PPD data encoding example code.
5 *
6 *   Compile with:
7 *
8 *       gcc -o testppdx -D_PPD_DEPRECATED="" -g testppdx.c ppdx.c -lcups -lz
9 *
10 *   Copyright 2012 by Apple Inc.
11 *
12 *   These coded instructions, statements, and computer programs are the
13 *   property of Apple Inc. and are protected by Federal copyright
14 *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
15 *   which should have been included with this file.  If this file is
16 *   file is missing or damaged, see the license at "http://www.cups.org/".
17 *
18 *   This file is subject to the Apple OS-Developed Software exception.
19 *
20 * Contents:
21 *
22 *   main() - Read data from a test PPD file and write out new chunks.
23 */
24
25/*
26 * Include necessary headers...
27 */
28
29#include <stdio.h>
30#include <string.h>
31#include "ppdx.h"
32
33
34/*
35 * 'main()' - Read data from a test PPD file and write out new chunks.
36 */
37
38int					/* O - Exit status */
39main(void)
40{
41  int		status = 0;		/* Exit status */
42  FILE		*fp;			/* File to read */
43  char		contents[8193],		/* Contents of file */
44		*data;			/* Data from PPD */
45  size_t	contsize,		/* File size */
46		datasize;		/* Data size */
47  ppd_file_t	*ppd;			/* Test PPD */
48
49
50 /*
51  * Open the PPD and get the data from it...
52  */
53
54  ppd  = ppdOpenFile("testppdx.ppd");
55  data = ppdxReadData(ppd, "EXData", &datasize);
56
57 /*
58  * Open this source file and read it...
59  */
60
61  fp = fopen("testppdx.c", "r");
62  if (fp)
63  {
64    contsize = fread(contents, 1, sizeof(contents) - 1, fp);
65    fclose(fp);
66    contents[contsize] = '\0';
67  }
68  else
69  {
70    contents[0] = '\0';
71    contsize    = 0;
72  }
73
74 /*
75  * Compare data...
76  */
77
78  if (data)
79  {
80    if (contsize != datasize)
81    {
82      fprintf(stderr, "ERROR: PPD has %ld bytes, test file is %ld bytes.\n",
83              (long)datasize, (long)contsize);
84      status = 1;
85    }
86    else if (strcmp(contents, data))
87    {
88      fputs("ERROR: PPD and test file are not the same.\n", stderr);
89      status = 1;
90    }
91
92    if (status)
93    {
94      if ((fp = fopen("testppdx.dat", "wb")) != NULL)
95      {
96        fwrite(data, 1, datasize, fp);
97        fclose(fp);
98        fputs("ERROR: See testppdx.dat for data from PPD.\n", stderr);
99      }
100      else
101        perror("Unable to open 'testppdx.dat'");
102    }
103
104    free(data);
105  }
106
107  printf("Encoding %ld bytes for PPD...\n", (long)contsize);
108
109  ppdxWriteData("EXData", contents, contsize);
110
111  return (1);
112}
113
114
115/*
116 * End of "$Id: testppdx.c 3835 2012-05-23 22:57:19Z msweet $".
117 */
118