Blame examples/testppdx.c

Packit 2fc92b
/*
Packit 2fc92b
 * Test program for PPD data encoding example code.
Packit 2fc92b
 *
Packit 2fc92b
 * Compile with:
Packit 2fc92b
 *
Packit 2fc92b
 *     gcc -o testppdx -D_PPD_DEPRECATED="" -g testppdx.c ppdx.c -lcups -lz
Packit 2fc92b
 *
Packit 2fc92b
 * Copyright 2012 by Apple Inc.
Packit 2fc92b
 *
Packit 2fc92b
 * These coded instructions, statements, and computer programs are the
Packit 2fc92b
 * property of Apple Inc. and are protected by Federal copyright
Packit 2fc92b
 * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
Packit 2fc92b
 * which should have been included with this file.  If this file is
Packit 2fc92b
 * missing or damaged, see the license at "http://www.cups.org/".
Packit 2fc92b
 *
Packit 2fc92b
 * This file is subject to the Apple OS-Developed Software exception.
Packit 2fc92b
 */
Packit 2fc92b
Packit 2fc92b
/*
Packit 2fc92b
 * Include necessary headers...
Packit 2fc92b
 */
Packit 2fc92b
Packit 2fc92b
#include <stdio.h>
Packit 2fc92b
#include <string.h>
Packit 2fc92b
#include "ppdx.h"
Packit 2fc92b
Packit 2fc92b
Packit 2fc92b
/*
Packit 2fc92b
 * 'main()' - Read data from a test PPD file and write out new chunks.
Packit 2fc92b
 */
Packit 2fc92b
Packit 2fc92b
int					/* O - Exit status */
Packit 2fc92b
main(void)
Packit 2fc92b
{
Packit 2fc92b
  int		status = 0;		/* Exit status */
Packit 2fc92b
  FILE		*fp;			/* File to read */
Packit 2fc92b
  char		contents[8193],		/* Contents of file */
Packit 2fc92b
		*data;			/* Data from PPD */
Packit 2fc92b
  size_t	contsize,		/* File size */
Packit 2fc92b
		datasize;		/* Data size */
Packit 2fc92b
  ppd_file_t	*ppd;			/* Test PPD */
Packit 2fc92b
Packit 2fc92b
Packit 2fc92b
 /*
Packit 2fc92b
  * Open the PPD and get the data from it...
Packit 2fc92b
  */
Packit 2fc92b
Packit 2fc92b
  ppd  = ppdOpenFile("testppdx.ppd");
Packit 2fc92b
  data = ppdxReadData(ppd, "EXData", &datasize);
Packit 2fc92b
Packit 2fc92b
 /*
Packit 2fc92b
  * Open this source file and read it...
Packit 2fc92b
  */
Packit 2fc92b
Packit 2fc92b
  fp = fopen("testppdx.c", "r");
Packit 2fc92b
  if (fp)
Packit 2fc92b
  {
Packit 2fc92b
    contsize = fread(contents, 1, sizeof(contents) - 1, fp);
Packit 2fc92b
    fclose(fp);
Packit 2fc92b
    contents[contsize] = '\0';
Packit 2fc92b
  }
Packit 2fc92b
  else
Packit 2fc92b
  {
Packit 2fc92b
    contents[0] = '\0';
Packit 2fc92b
    contsize    = 0;
Packit 2fc92b
  }
Packit 2fc92b
Packit 2fc92b
 /*
Packit 2fc92b
  * Compare data...
Packit 2fc92b
  */
Packit 2fc92b
Packit 2fc92b
  if (data)
Packit 2fc92b
  {
Packit 2fc92b
    if (contsize != datasize)
Packit 2fc92b
    {
Packit 2fc92b
      fprintf(stderr, "ERROR: PPD has %ld bytes, test file is %ld bytes.\n",
Packit 2fc92b
              (long)datasize, (long)contsize);
Packit 2fc92b
      status = 1;
Packit 2fc92b
    }
Packit 2fc92b
    else if (strcmp(contents, data))
Packit 2fc92b
    {
Packit 2fc92b
      fputs("ERROR: PPD and test file are not the same.\n", stderr);
Packit 2fc92b
      status = 1;
Packit 2fc92b
    }
Packit 2fc92b
Packit 2fc92b
    if (status)
Packit 2fc92b
    {
Packit 2fc92b
      if ((fp = fopen("testppdx.dat", "wb")) != NULL)
Packit 2fc92b
      {
Packit 2fc92b
        fwrite(data, 1, datasize, fp);
Packit 2fc92b
        fclose(fp);
Packit 2fc92b
        fputs("ERROR: See testppdx.dat for data from PPD.\n", stderr);
Packit 2fc92b
      }
Packit 2fc92b
      else
Packit 2fc92b
        perror("Unable to open 'testppdx.dat'");
Packit 2fc92b
    }
Packit 2fc92b
Packit 2fc92b
    free(data);
Packit 2fc92b
  }
Packit 2fc92b
Packit 2fc92b
  printf("Encoding %ld bytes for PPD...\n", (long)contsize);
Packit 2fc92b
Packit 2fc92b
  ppdxWriteData("EXData", contents, contsize);
Packit 2fc92b
Packit 2fc92b
  return (1);
Packit 2fc92b
}