1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
/*
* Test program for PPD data encoding example code.
*
* Compile with:
*
* gcc -o testppdx -D_PPD_DEPRECATED="" -g testppdx.c ppdx.c -lcups -lz
*
* Copyright 2012 by Apple Inc.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
*/
/*
* Include necessary headers...
*/
#include <stdio.h>
#include <string.h>
#include "ppdx.h"
/*
* 'main()' - Read data from a test PPD file and write out new chunks.
*/
int /* O - Exit status */
main(void)
{
int status = 0; /* Exit status */
FILE *fp; /* File to read */
char contents[8193], /* Contents of file */
*data; /* Data from PPD */
size_t contsize, /* File size */
datasize; /* Data size */
ppd_file_t *ppd; /* Test PPD */
/*
* Open the PPD and get the data from it...
*/
ppd = ppdOpenFile("testppdx.ppd");
data = ppdxReadData(ppd, "EXData", &datasize);
/*
* Open this source file and read it...
*/
fp = fopen("testppdx.c", "r");
if (fp)
{
contsize = fread(contents, 1, sizeof(contents) - 1, fp);
fclose(fp);
contents[contsize] = '\0';
}
else
{
contents[0] = '\0';
contsize = 0;
}
/*
* Compare data...
*/
if (data)
{
if (contsize != datasize)
{
fprintf(stderr, "ERROR: PPD has %ld bytes, test file is %ld bytes.\n",
(long)datasize, (long)contsize);
status = 1;
}
else if (strcmp(contents, data))
{
fputs("ERROR: PPD and test file are not the same.\n", stderr);
status = 1;
}
if (status)
{
if ((fp = fopen("testppdx.dat", "wb")) != NULL)
{
fwrite(data, 1, datasize, fp);
fclose(fp);
fputs("ERROR: See testppdx.dat for data from PPD.\n", stderr);
}
else
perror("Unable to open 'testppdx.dat'");
}
free(data);
}
printf("Encoding %ld bytes for PPD...\n", (long)contsize);
ppdxWriteData("EXData", contents, contsize);
return (1);
}
|