summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/luatexdir/utils/writezip.c
diff options
context:
space:
mode:
authorTaco Hoekwater <taco@elvenkind.com>2010-04-04 13:55:46 +0000
committerTaco Hoekwater <taco@elvenkind.com>2010-04-04 13:55:46 +0000
commitf372862c42d234710b6057449b46818e63181c90 (patch)
treea9ebec66dd31ac37aed442502ebd1b9fe76245ec /Build/source/texk/web2c/luatexdir/utils/writezip.c
parent2dad291ab056f30816e0aea61970f38033c2f6a5 (diff)
import luatex 0.60.0 (with small local changes, see luatexdir/ChangeLog)
and do an autoreconf git-svn-id: svn://tug.org/texlive/trunk@17680 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/luatexdir/utils/writezip.c')
-rw-r--r--Build/source/texk/web2c/luatexdir/utils/writezip.c99
1 files changed, 0 insertions, 99 deletions
diff --git a/Build/source/texk/web2c/luatexdir/utils/writezip.c b/Build/source/texk/web2c/luatexdir/utils/writezip.c
deleted file mode 100644
index 312623093ef..00000000000
--- a/Build/source/texk/web2c/luatexdir/utils/writezip.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/* writezip.c
-
- Copyright 1996-2006 Han The Thanh <thanh@pdftex.org>
- Copyright 2006-2008 Taco Hoekwater <taco@luatex.org>
-
- This file is part of LuaTeX.
-
- LuaTeX is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free
- Software Foundation; either version 2 of the License, or (at your
- option) any later version.
-
- LuaTeX is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
- License for more details.
-
- You should have received a copy of the GNU General Public License along
- with LuaTeX; if not, see <http://www.gnu.org/licenses/>. */
-
-#include "ptexlib.h"
-#include "zlib.h"
-#include <assert.h>
-
-static const char __svn_version[] =
- "$Id: writezip.c 2271 2009-04-12 23:42:21Z oneiros $ $URL: http://foundry.supelec.fr/svn/luatex/tags/beta-0.40.6/source/texk/web2c/luatexdir/utils/writezip.c $";
-
-#define ZIP_BUF_SIZE 32768
-
-#define check_err(f, fn) \
- if (f != Z_OK) \
- pdftex_fail("zlib: %s() failed (error code %d)", fn, f)
-
-static char *zipbuf = NULL;
-static z_stream c_stream; /* compression stream */
-
-void write_zip(boolean finish)
-{
- int err;
- static int level_old = 0;
- int level = get_pdf_compress_level();
- assert(level > 0);
- cur_file_name = NULL;
- if (pdf_stream_length == 0) {
- if (zipbuf == NULL) {
- zipbuf = xtalloc(ZIP_BUF_SIZE, char);
- c_stream.zalloc = (alloc_func) 0;
- c_stream.zfree = (free_func) 0;
- c_stream.opaque = (voidpf) 0;
- check_err(deflateInit(&c_stream, level), "deflateInit");
- } else {
- if (level != level_old) { /* \pdfcompresslevel change in mid document */
- check_err(deflateEnd(&c_stream), "deflateEnd");
- c_stream.zalloc = (alloc_func) 0; /* these 3 lines no need, just to be safe */
- c_stream.zfree = (free_func) 0;
- c_stream.opaque = (voidpf) 0;
- check_err(deflateInit(&c_stream, level), "deflateInit");
- } else
- check_err(deflateReset(&c_stream), "deflateReset");
- }
- level_old = level;
- c_stream.next_out = (Bytef *) zipbuf;
- c_stream.avail_out = ZIP_BUF_SIZE;
- }
- assert(zipbuf != NULL);
- c_stream.next_in = pdf_buf;
- c_stream.avail_in = pdf_ptr;
- for (;;) {
- if (c_stream.avail_out == 0) {
- pdf_gone += xfwrite(zipbuf, 1, ZIP_BUF_SIZE, pdf_file);
- pdf_last_byte = zipbuf[ZIP_BUF_SIZE - 1]; /* not needed */
- c_stream.next_out = (Bytef *) zipbuf;
- c_stream.avail_out = ZIP_BUF_SIZE;
- }
- err = deflate(&c_stream, finish ? Z_FINISH : Z_NO_FLUSH);
- if (finish && err == Z_STREAM_END)
- break;
- check_err(err, "deflate");
- if (!finish && c_stream.avail_in == 0)
- break;
- }
- if (finish) {
- if (c_stream.avail_out < ZIP_BUF_SIZE) { /* at least one byte has been output */
- pdf_gone +=
- xfwrite(zipbuf, 1, ZIP_BUF_SIZE - c_stream.avail_out, pdf_file);
- pdf_last_byte = zipbuf[ZIP_BUF_SIZE - c_stream.avail_out - 1];
- }
- xfflush(pdf_file);
- }
- pdf_stream_length = c_stream.total_out;
-}
-
-void zip_free(void)
-{
- if (zipbuf != NULL) {
- check_err(deflateEnd(&c_stream), "deflateEnd");
- free(zipbuf);
- }
-}