summaryrefslogtreecommitdiff
path: root/filter/gziptoany.c
diff options
context:
space:
mode:
authorjlovell <jlovell@a1ca3aef-8c08-0410-bb20-df032aa958be>2006-01-13 01:51:53 +0000
committerjlovell <jlovell@a1ca3aef-8c08-0410-bb20-df032aa958be>2006-01-13 01:51:53 +0000
commitef416fc25c4af449e930416117bedb12fc9924ba (patch)
tree11f8aa8c5d3565a17d4a6d5121d3edba22e2a21e /filter/gziptoany.c
parent9ec11526e139aeacf6a052799a6aa22cbbe6ebb2 (diff)
downloadcups-ef416fc25c4af449e930416117bedb12fc9924ba.tar.gz
Load cups into easysw/current.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@2 a1ca3aef-8c08-0410-bb20-df032aa958be
Diffstat (limited to 'filter/gziptoany.c')
-rw-r--r--filter/gziptoany.c131
1 files changed, 131 insertions, 0 deletions
diff --git a/filter/gziptoany.c b/filter/gziptoany.c
new file mode 100644
index 000000000..b83082fb4
--- /dev/null
+++ b/filter/gziptoany.c
@@ -0,0 +1,131 @@
+/*
+ * "$Id: gziptoany.c 4494 2005-02-18 02:18:11Z mike $"
+ *
+ * GZIP pre-filter for the Common UNIX Printing System (CUPS).
+ *
+ * Copyright 1993-2005 by Easy Software Products.
+ *
+ * These coded instructions, statements, and computer programs are the
+ * property of Easy Software Products and are protected by Federal
+ * copyright law. Distribution and use rights are outlined in the file
+ * "LICENSE.txt" which should have been included with this file. If this
+ * file is missing or damaged please contact Easy Software Products
+ * at:
+ *
+ * Attn: CUPS Licensing Information
+ * Easy Software Products
+ * 44141 Airport View Drive, Suite 204
+ * Hollywood, Maryland 20636 USA
+ *
+ * Voice: (301) 373-9600
+ * EMail: cups-info@cups.org
+ * WWW: http://www.cups.org
+ *
+ * This file is subject to the Apple OS-Developed Software exception.
+ *
+ * Contents:
+ *
+ * main() - Uncompress gzip'd files and send them to stdout...
+ */
+
+/*
+ * Include necessary headers...
+ */
+
+#include <cups/string.h>
+#include <stdlib.h>
+#include <errno.h>
+
+#ifdef HAVE_LIBZ
+# include <zlib.h>
+#endif /* HAVE_LIBZ */
+
+
+/*
+ * 'main()' - Uncompress gzip'd files and send them to stdout...
+ */
+
+int /* O - Exit status */
+main(int argc, /* I - Number of command-line arguments */
+ char *argv[]) /* I - Command-line arguments */
+{
+#ifdef HAVE_LIBZ
+ gzFile fp; /* GZIP'd file */
+ char buffer[8192]; /* Data buffer */
+ int bytes; /* Number of bytes read/written */
+ int copies; /* Number of copies */
+ const char *content_type; /* Content type for file... */
+
+
+ /*
+ * Check command-line...
+ */
+
+ if (argc != 7)
+ {
+ fputs("ERROR: gziptoany job-id user title copies options file\n", stderr);
+ return (1);
+ }
+
+ /*
+ * Get the copy count; if the MIME type is "application/vnd.cups-raw" then
+ * make copies since the file is going straight to a backend...
+ */
+
+ if ((content_type = getenv("CONTENT_TYPE")) != NULL &&
+ !strcasecmp(content_type, "application/vnd.cups-raw"))
+ copies = atoi(argv[4]);
+ else
+ copies = 1;
+
+ /*
+ * Open the gzip file...
+ */
+
+ if ((fp = gzopen(argv[6], "rb")) == NULL)
+ {
+ fprintf(stderr, "ERROR: Unable to open GZIP file: %s\n", strerror(errno));
+ return (1);
+ }
+
+ /*
+ * Copy the gzip file to stdout...
+ */
+
+ setbuf(stdout, NULL);
+
+ while (copies > 0)
+ {
+ gzrewind(fp);
+
+ while ((bytes = gzread(fp, buffer, sizeof(buffer))) > 0)
+ if (fwrite(buffer, 1, bytes, stdout) < bytes)
+ {
+ fprintf(stderr, "ERROR: Unable to write uncompressed document data: %s\n",
+ strerror(ferror(stdout)));
+ gzclose(fp);
+
+ return (1);
+ }
+
+ copies --;
+ }
+
+ /*
+ * Close the file and return...
+ */
+
+ gzclose(fp);
+
+ return (0);
+#else
+ fputs("INFO: Hint: recompile CUPS with ZLIB.\n", stderr);
+ fputs("ERROR: GZIP compression support not compiled in!\n", stderr);
+ return (1);
+#endif /* HAVE_LIBZ */
+}
+
+
+/*
+ * End of "$Id: gziptoany.c 4494 2005-02-18 02:18:11Z mike $".
+ */