home *** CD-ROM | disk | FTP | other *** search
- diff -u -b -B -r -N -w xpdf-0.80-decrypt/build020/xpdf/Makefile xpdf-0.80-decrypt-gzip/build020/xpdf/Makefile
- --- xpdf-0.80-decrypt/build020/xpdf/Makefile Fri Jun 25 19:49:24 1999
- +++ xpdf-0.80-decrypt-gzip/build020/xpdf/Makefile Fri Jun 25 19:25:56 1999
- @@ -52,6 +52,7 @@
- $(srcdir)/PDFDoc.cc \
- $(srcdir)/PSOutputDev.cc \
- $(srcdir)/Stream.cc \
- + $(srcdir)/unlzw.cc \
- $(srcdir)/TextOutputDev.cc \
- $(srcdir)/XRef.cc \
- $(srcdir)/Apdf.c \
- @@ -72,7 +73,7 @@
- #------------------------------------------------------------------------
-
- APDF_OBJS = Array.o Catalog.o Dict.o Error.o Gfx.o GfxFont.o \
- - TextOutputDev.o AOutputDev.o XRef.o AGfx.o \
- + TextOutputDev.o AOutputDev.o XRef.o AGfx.o unlzw.o \
- GfxState.o Lexer.o Link.o Object.o OutputDev.o mystdio.o \
- Page.o Parser.o PDFDoc.o PSOutputDev.o Stream.o \
- Apdfcommon.o Apdf.o ImageOutputDev.o poly.o FontOutputDev.o \
- @@ -199,6 +200,11 @@
- ../../xpdf/mystdio.h ../../xpdf/../goo/gtypes.h \
- ../../xpdf/../goo/GString.h ../../xpdf/Array.h ../../xpdf/Dict.h \
- ../../xpdf/Stream.h ../../xpdf/rc4.h ../../xpdf/Stream-CCITT.h
- +unlzw.o: ../../xpdf/unlzw.cc ../../xpdf/Object.h ../../xpdf/mystdio.h \
- + ../../xpdf/../goo/gtypes.h ../../xpdf/../goo/gmem.h \
- + ../../xpdf/../goo/GString.h ../../xpdf/Array.h ../../xpdf/Dict.h \
- + ../../xpdf/Stream.h ../../xpdf/Error.h ../../xpdf/config.h \
- + ../../xpdf/rc4.h
- TextOutputDev.o: ../../xpdf/TextOutputDev.cc \
- ../../xpdf/../goo/GString.h ../../xpdf/../goo/gmem.h \
- ../../xpdf/config.h ../../xpdf/Error.h ../../xpdf/GfxState.h \
- diff -u -b -B -r -N -w xpdf-0.80-decrypt/build040/goo/Makefile xpdf-0.80-decrypt-gzip/build040/goo/Makefile
- --- xpdf-0.80-decrypt/build040/goo/Makefile Fri Jun 25 19:41:17 1999
- +++ xpdf-0.80-decrypt-gzip/build040/goo/Makefile Fri Jun 25 19:22:32 1999
- @@ -64,10 +64,3 @@
- $(CC) $(CFLAGS) -MM $(C_SRC) >>Makefile
-
- #----- dependences -----
- -gmem.o: ../../goo/gmem.cc ../../goo/gmem.h
- -GString.o: ../../goo/GString.cc ../../goo/GString.h
- -gmempp.o: ../../goo/gmempp.cc ../../goo/gmem.h
- -gfile.o: ../../goo/gfile.cc ../../goo/GString.h ../../goo/gfile.h \
- - ../../goo/gtypes.h
- -parseargs.o: ../../goo/parseargs.c ../../goo/parseargs.h \
- - ../../goo/gtypes.h
- diff -u -b -B -r -N -w xpdf-0.80-decrypt/build040/xpdf/Makefile xpdf-0.80-decrypt-gzip/build040/xpdf/Makefile
- --- xpdf-0.80-decrypt/build040/xpdf/Makefile Fri Jun 25 19:47:55 1999
- +++ xpdf-0.80-decrypt-gzip/build040/xpdf/Makefile Fri Jun 25 19:25:29 1999
- @@ -52,6 +52,7 @@
- $(srcdir)/PDFDoc.cc \
- $(srcdir)/PSOutputDev.cc \
- $(srcdir)/Stream.cc \
- + $(srcdir)/unlzw.cc \
- $(srcdir)/TextOutputDev.cc \
- $(srcdir)/XRef.cc \
- $(srcdir)/Apdf.c \
- @@ -72,7 +73,7 @@
- #------------------------------------------------------------------------
-
- APDF_OBJS = Array.o Catalog.o Dict.o Error.o Gfx.o GfxFont.o \
- - TextOutputDev.o AOutputDev.o XRef.o AGfx.o \
- + TextOutputDev.o AOutputDev.o XRef.o AGfx.o unlzw.o \
- GfxState.o Lexer.o Link.o Object.o OutputDev.o mystdio.o \
- Page.o Parser.o PDFDoc.o PSOutputDev.o Stream.o \
- Apdfcommon.o Apdf.o ImageOutputDev.o poly.o FontOutputDev.o \
- @@ -199,6 +200,11 @@
- ../../xpdf/mystdio.h ../../xpdf/../goo/gtypes.h \
- ../../xpdf/../goo/GString.h ../../xpdf/Array.h ../../xpdf/Dict.h \
- ../../xpdf/Stream.h ../../xpdf/rc4.h ../../xpdf/Stream-CCITT.h
- +unlzw.o: ../../xpdf/unlzw.cc ../../xpdf/Object.h ../../xpdf/mystdio.h \
- + ../../xpdf/../goo/gtypes.h ../../xpdf/../goo/gmem.h \
- + ../../xpdf/../goo/GString.h ../../xpdf/Array.h ../../xpdf/Dict.h \
- + ../../xpdf/Stream.h ../../xpdf/Error.h ../../xpdf/config.h \
- + ../../xpdf/rc4.h
- TextOutputDev.o: ../../xpdf/TextOutputDev.cc \
- ../../xpdf/../goo/GString.h ../../xpdf/../goo/gmem.h \
- ../../xpdf/config.h ../../xpdf/Error.h ../../xpdf/GfxState.h \
- diff -u -b -B -r -N -w xpdf-0.80-decrypt/build060/xpdf/Makefile xpdf-0.80-decrypt-gzip/build060/xpdf/Makefile
- --- xpdf-0.80-decrypt/build060/xpdf/Makefile Fri Jun 25 19:49:06 1999
- +++ xpdf-0.80-decrypt-gzip/build060/xpdf/Makefile Fri Jun 25 19:22:27 1999
- @@ -52,6 +52,7 @@
- $(srcdir)/PDFDoc.cc \
- $(srcdir)/PSOutputDev.cc \
- $(srcdir)/Stream.cc \
- + $(srcdir)/unlzw.cc \
- $(srcdir)/TextOutputDev.cc \
- $(srcdir)/XRef.cc \
- $(srcdir)/Apdf.c \
- @@ -73,7 +74,7 @@
- #------------------------------------------------------------------------
-
- APDF_OBJS = Array.o Catalog.o Dict.o Error.o Gfx.o GfxFont.o \
- - TextOutputDev.o AOutputDev.o XRef.o AGfx.o \
- + TextOutputDev.o AOutputDev.o XRef.o AGfx.o unlzw.o \
- GfxState.o Lexer.o Link.o Object.o OutputDev.o mystdio.o \
- Page.o Parser.o PDFDoc.o PSOutputDev.o Stream.o \
- Apdfcommon.o Apdf.o ImageOutputDev.o poly.o FontOutputDev.o \
- @@ -200,6 +201,11 @@
- ../../xpdf/mystdio.h ../../xpdf/../goo/gtypes.h \
- ../../xpdf/../goo/GString.h ../../xpdf/Array.h ../../xpdf/Dict.h \
- ../../xpdf/Stream.h ../../xpdf/rc4.h ../../xpdf/Stream-CCITT.h
- +unlzw.o: ../../xpdf/unlzw.cc ../../xpdf/Object.h ../../xpdf/mystdio.h \
- + ../../xpdf/../goo/gtypes.h ../../xpdf/../goo/gmem.h \
- + ../../xpdf/../goo/GString.h ../../xpdf/Array.h ../../xpdf/Dict.h \
- + ../../xpdf/Stream.h ../../xpdf/Error.h ../../xpdf/config.h \
- + ../../xpdf/rc4.h
- TextOutputDev.o: ../../xpdf/TextOutputDev.cc \
- ../../xpdf/../goo/GString.h ../../xpdf/../goo/gmem.h \
- ../../xpdf/config.h ../../xpdf/Error.h ../../xpdf/GfxState.h \
- diff -u -b -B -r -N -w xpdf-0.80-decrypt/buildnofpu/xpdf/Makefile xpdf-0.80-decrypt-gzip/buildnofpu/xpdf/Makefile
- --- xpdf-0.80-decrypt/buildnofpu/xpdf/Makefile Fri Jun 25 19:49:41 1999
- +++ xpdf-0.80-decrypt-gzip/buildnofpu/xpdf/Makefile Fri Jun 25 19:26:20 1999
- @@ -52,6 +52,7 @@
- $(srcdir)/PDFDoc.cc \
- $(srcdir)/PSOutputDev.cc \
- $(srcdir)/Stream.cc \
- + $(srcdir)/unlzw.cc \
- $(srcdir)/TextOutputDev.cc \
- $(srcdir)/XRef.cc \
- $(srcdir)/Apdf.c \
- @@ -73,7 +74,7 @@
- #------------------------------------------------------------------------
-
- APDF_OBJS = Array.o Catalog.o Dict.o Error.o Gfx.o GfxFont.o \
- - TextOutputDev.o AOutputDev.o XRef.o AGfx.o \
- + TextOutputDev.o AOutputDev.o XRef.o AGfx.o unlzw.o \
- GfxState.o Lexer.o Link.o Object.o OutputDev.o mystdio.o \
- Page.o Parser.o PDFDoc.o PSOutputDev.o Stream.o \
- Apdfcommon.o Apdf.o ImageOutputDev.o poly.o FontOutputDev.o \
- @@ -200,6 +201,11 @@
- ../../xpdf/mystdio.h ../../xpdf/../goo/gtypes.h \
- ../../xpdf/../goo/GString.h ../../xpdf/Array.h ../../xpdf/Dict.h \
- ../../xpdf/Stream.h ../../xpdf/rc4.h ../../xpdf/Stream-CCITT.h
- +unlzw.o: ../../xpdf/unlzw.cc ../../xpdf/Object.h ../../xpdf/mystdio.h \
- + ../../xpdf/../goo/gtypes.h ../../xpdf/../goo/gmem.h \
- + ../../xpdf/../goo/GString.h ../../xpdf/Array.h ../../xpdf/Dict.h \
- + ../../xpdf/Stream.h ../../xpdf/Error.h ../../xpdf/config.h \
- + ../../xpdf/rc4.h
- TextOutputDev.o: ../../xpdf/TextOutputDev.cc \
- ../../xpdf/../goo/GString.h ../../xpdf/../goo/gmem.h \
- ../../xpdf/config.h ../../xpdf/Error.h ../../xpdf/GfxState.h \
- diff -u -b -B -r -N -w xpdf-0.80-decrypt/buildppc/xpdf/Makefile xpdf-0.80-decrypt-gzip/buildppc/xpdf/Makefile
- --- xpdf-0.80-decrypt/buildppc/xpdf/Makefile Fri Jun 25 19:39:49 1999
- +++ xpdf-0.80-decrypt-gzip/buildppc/xpdf/Makefile Fri Jun 25 19:15:26 1999
- @@ -59,6 +59,7 @@
- $(srcdir)/PDFDoc.cc \
- $(srcdir)/PSOutputDev.cc \
- $(srcdir)/Stream.cc \
- + $(srcdir)/unlzw.cc \
- $(srcdir)/TextOutputDev.cc \
- $(srcdir)/XRef.cc \
- $(srcdir)/Apdf.c \
- @@ -87,7 +88,7 @@
- # /sc/c/sc link define POWERUP define USE_GFX_PIPE addsym debug=full to apdf //xpdf/Apdf.c
-
- APDF_OBJS = stub.o Array.o Catalog.o Dict.o Error.o Gfx.o GfxFont.o \
- - TextOutputDev.o AOutputDev.o XRef.o apdfppcserv.o AGfx.o \
- + TextOutputDev.o AOutputDev.o XRef.o apdfppcserv.o AGfx.o unlzw.o \
- GfxState.o Lexer.o Link.o Object.o OutputDev.o mystdio.o \
- Page.o Parser.o PDFDoc.o PSOutputDev.o Stream.o \
- apdfcommon.o ImageOutputDev.o poly.o FontOutputDev.o \
- @@ -218,6 +219,11 @@
- ../../xpdf/mystdio.h ../../xpdf/../goo/gtypes.h \
- ../../xpdf/../goo/GString.h ../../xpdf/Array.h ../../xpdf/Dict.h \
- ../../xpdf/Stream.h ../../xpdf/rc4.h ../../xpdf/Stream-CCITT.h
- +unlzw.o: ../../xpdf/unlzw.cc ../../xpdf/Object.h ../../xpdf/mystdio.h \
- + ../../xpdf/../goo/gtypes.h ../../xpdf/../goo/gmem.h \
- + ../../xpdf/../goo/GString.h ../../xpdf/Array.h ../../xpdf/Dict.h \
- + ../../xpdf/Stream.h ../../xpdf/Error.h ../../xpdf/config.h \
- + ../../xpdf/rc4.h
- TextOutputDev.o: ../../xpdf/TextOutputDev.cc \
- ../../xpdf/../goo/GString.h ../../xpdf/../goo/gmem.h \
- ../../xpdf/config.h ../../xpdf/Error.h ../../xpdf/GfxState.h \
- diff -u -b -B -r -N -w xpdf-0.80-decrypt/buildsas/xpdf/SMakefile xpdf-0.80-decrypt-gzip/buildsas/xpdf/SMakefile
- --- xpdf-0.80-decrypt/buildsas/xpdf/SMakefile Fri Jun 25 19:50:21 1999
- +++ xpdf-0.80-decrypt-gzip/buildsas/xpdf/SMakefile Fri Jun 25 19:33:02 1999
- @@ -59,6 +59,7 @@
- $(srcdir)/PDFDoc.cc \
- $(srcdir)/PSOutputDev.cc \
- $(srcdir)/Stream.cc \
- + $(srcdir)/unlzw.cc \
- $(srcdir)/TextOutputDev.cc \
- $(srcdir)/XRef.cc \
- $(srcdir)/Apdf.c \
- @@ -81,7 +82,7 @@
- #------------------------------------------------------------------------
-
- APDF_OBJS = Array.o Catalog.o Dict.o Error.o Gfx.o GfxFont.o \
- - TextOutputDev.o AOutputDev.o XRef.o AGfx.o \
- + TextOutputDev.o AOutputDev.o XRef.o AGfx.o unlzw.o \
- GfxState.o Lexer.o Link.o Object.o OutputDev.o mystdio.o \
- Page.o Parser.o PDFDoc.o PSOutputDev.o Stream.o \
- Apdfcommon.o Apdf.o ImageOutputDev.o poly.o stub.o \
- @@ -215,6 +216,11 @@
- //xpdf/mystdio.h //goo/gtypes.h \
- //goo/GString.h //xpdf/Array.h //xpdf/Dict.h \
- //xpdf/Stream.h //xpdf/rc4.h //xpdf/Stream-CCITT.h
- +unlzw.o: //xpdf/unlzw.cc //xpdf/Object.h //xpdf/mystdio.h \
- + //goo/gtypes.h //goo/gmem.h \
- + //goo/GString.h //xpdf/Array.h //xpdf/Dict.h \
- + //xpdf/Stream.h //xpdf/Error.h //xpdf/config.h \
- + //xpdf/rc4.h
- TextOutputDev.o: //xpdf/TextOutputDev.cc \
- //goo/GString.h //goo/gmem.h \
- //xpdf/config.h //xpdf/Error.h //xpdf/GfxState.h \
- diff -u -b -B -r -N -w xpdf-0.80-decrypt/xpdf/Stream.cc xpdf-0.80-decrypt-gzip/xpdf/Stream.cc
- --- xpdf-0.80-decrypt/xpdf/Stream.cc Fri Jun 25 18:43:44 1999
- +++ xpdf-0.80-decrypt-gzip/xpdf/Stream.cc Fri Jun 25 19:07:41 1999
- @@ -682,6 +682,113 @@
- // LZWStream
- //------------------------------------------------------------------------
-
- +static const int pipebufsize=100000;
- +
- +LZWStream::Pipe::Pipe() : wsize(pipebufsize),rsize(0) {
- + unsigned char* p=new unsigned char [sizeof(chunk)+pipebufsize];
- + chunks=wchunk=(chunk*)p;
- + wp=rp=p+sizeof(chunk);
- + chunks->next=NULL;
- +}
- +
- +LZWStream::Pipe::~Pipe() {
- + chunk* p=chunks;
- + while(p) {
- + chunk* q=p->next;
- + delete [] (unsigned char*)p;
- + p=q;
- + }
- +}
- +
- +void LZWStream::Pipe::enlarge() {
- + if(chunks==wchunk)
- + rsize=wp-rp;
- + unsigned char* q=new unsigned char [sizeof(chunk)+pipebufsize];
- + wchunk->next=(chunk*)q;
- + wchunk=wchunk->next;
- + wp=q+sizeof(chunk);
- + wchunk->next=NULL;
- + wsize=pipebufsize;
- +}
- +
- +void LZWStream::Pipe::write(const void* p,size_t sz) {
- + while(sz>=wsize) {
- + if(wsize) memcpy(wp,p,wsize);
- + sz-=wsize;
- + wp+=wsize;
- + p=(const void*)((const char*)p+wsize);
- + enlarge();
- + }
- + if(sz) {
- + memcpy(wp,p,sz);
- + wsize-=sz;
- + wp+=sz;
- + }
- +}
- +
- +bool LZWStream::Pipe::next_chunk() {
- + if(chunks==wchunk) {
- + if(rp<wp) {
- + rsize=wp-rp;
- + return true;
- + } else
- + return false;
- + }
- + if(chunks) {
- + chunk* q=chunks->next;
- + delete [] (unsigned char*)chunks;
- + chunks=q;
- + if(q) {
- + rp=(unsigned char*)(q+1);
- + rsize=pipebufsize;
- + if(q==wchunk)
- + rsize-=wsize;
- + return rsize>0;
- + } else {
- + rsize=0;
- + rp=NULL;
- + return false;
- + }
- + } else
- + return false;
- +}
- +
- +int LZWStream::Pipe::read(void* p,size_t sz) {
- + int sz2=0;
- + while(sz>rsize) {
- + if(rsize==0 && !next_chunk()) return sz2;
- + if(sz<=rsize) break;
- + if(rsize) memcpy(p,rp,rsize);
- + sz-=rsize;
- + sz2+=rsize;
- + rp+=rsize;
- + rsize=0;
- + p=(void*)((char*)p+rsize);
- + }
- + if(sz) {
- + memcpy(p,rp,sz);
- + rsize-=sz;
- + sz2+=sz;
- + rp+=sz;
- + }
- + return sz2;
- +}
- +
- +void LZWStream::Pipe::reset() {
- + chunk* p=chunks->next;
- + while(p) {
- + chunk* q=p->next;
- + delete [] (unsigned char*)p;
- + p=q;
- + }
- + chunks->next=NULL;
- + wchunk=chunks;
- + rp=wp=(unsigned char*)(chunks+1);
- + rsize=0;
- + wsize=pipebufsize;
- +}
- +
- +
- LZWStream::LZWStream(Stream *str1, int predictor1, int columns1, int colors1,
- int bits1, int early1) {
- str = str1;
- @@ -692,82 +799,46 @@
- nBits = bits1;
- }
- early = early1;
- - zPipe = NULL;
- bufPtr = bufEnd = buf;
- }
-
- LZWStream::~LZWStream() {
- - if (zPipe) {
- -#ifdef HAVE_POPEN
- - pclose(zPipe);
- -#else
- - myfclose(zPipe);
- -#endif
- - zPipe = NULL;
- - unlink(zName);
- - }
- delete str;
- }
-
- int LZWStream::getChar() {
- - return (bufPtr >= bufEnd && !fillBuf()) ? EOF : (*bufPtr++ & 0xff);
- + return pipe.get();
- }
-
- int LZWStream::lookChar() {
- - return (bufPtr >= bufEnd && !fillBuf()) ? EOF : (*bufPtr & 0xff);
- + return pipe.lookc();
- }
-
- -void LZWStream::reset() {
- - FILE *f;
- +inline int LZWStream::getCode() {
- + int c;
- + int code;
-
- - str->reset();
- - bufPtr = bufEnd = buf;
- - if (zPipe) {
- -#ifdef HAVE_POPEN
- - pclose(zPipe);
- -#else
- - myfclose(zPipe);
- -#endif
- - zPipe = NULL;
- - unlink(zName);
- - }
- - strcpy(zCmd, uncompressCmd);
- - strcat(zCmd, " ");
- - zName = zCmd + strlen(zCmd);
- - tmpnam(zName);
- - strcat(zName, ".Z");
- - if (!(f = fopen(zName, "wb"))) {
- - error(getPos(), "Couldn't open temporary file '%s'", zName);
- - return;
- - }
- - dumpFile(f);
- - fclose(f);
- -#ifdef HAVE_POPEN
- - if (!(zPipe = popen(zCmd, "r"))) {
- - error(getPos(), "Couldn't popen '%s'", zCmd);
- - unlink(zName);
- - return;
- - }
- -#else
- -#ifdef VMS
- - if (!system(zCmd)) {
- -#else
- - if (system(zCmd)) {
- -#endif
- - error(getPos(), "Couldn't execute '%s'", zCmd);
- - unlink(zName);
- - return;
- - }
- - zName[strlen(zName) - 2] = '\0';
- - if (!(zPipe = myfopen(zName, "rb"))) {
- - error(getPos(), "Couldn't open uncompress file '%s'", zName);
- - unlink(zName);
- - return;
- + while (inputBits < inCodeBits) {
- + if ((c = str->getChar()) == EOF)
- + return EOF;
- + inputBuf = (inputBuf << 8) | (c & 0xff);
- + inputBits += 8;
- }
- -#endif
- + code = (inputBuf >> (inputBits - inCodeBits)) & ((1 << inCodeBits) - 1);
- + inputBits -= inCodeBits;
- + return code;
- }
-
- -void LZWStream::dumpFile(FILE *f) {
- +void LZWStream::reset() {
- +
- + str->reset();
- + pipe.reset();
- +
- + Pipe tmppipe;
- +
- + // fill tmppipe with the contents of the stream converted to
- + // 'compress' format (without header).
- +
- int outCodeBits; // size of output code
- int outBits; // max output code
- int outBuf[8]; // output buffer
- @@ -779,13 +850,6 @@
- GBool first; // indicates first code word after clear
- int i, j;
-
- - // magic number
- - fputc(0x1f, f);
- - fputc(0x9d, f);
- -
- - // max code length, block mode flag
- - fputc(0x8c, f);
- -
- // init input side
- inCodeBits = 9;
- inputBuf = 0;
- @@ -864,7 +928,7 @@
- outData = outData | (outBuf[j++] << outBits);
- outBits += outCodeBits;
- }
- - fputc(outData & 0xff, f);
- + tmppipe.put(char(outData));
- outData >>= 8;
- outBits -= 8;
- }
- @@ -886,40 +950,10 @@
- clear = gFalse;
- }
- } while (!eof);
- -}
- -
- -int LZWStream::getCode() {
- - int c;
- - int code;
- -
- - while (inputBits < inCodeBits) {
- - if ((c = str->getChar()) == EOF)
- - return EOF;
- - inputBuf = (inputBuf << 8) | (c & 0xff);
- - inputBits += 8;
- - }
- - code = (inputBuf >> (inputBits - inCodeBits)) & ((1 << inCodeBits) - 1);
- - inputBits -= inCodeBits;
- - return code;
- -}
-
- -GBool LZWStream::fillBuf() {
- - int n;
- + // uncompress tmppipe to pipe
-
- - if (!zPipe)
- - return gFalse;
- - if ((n = myfread(buf, 1, 256, zPipe)) < 256) {
- -#ifdef HAVE_POPEN
- - pclose(zPipe);
- -#else
- - myfclose(zPipe);
- -#endif
- - zPipe = NULL;
- - unlink(zName);
- - }
- - bufPtr = buf;
- - bufEnd = buf + n;
- - return n > 0;
- + unlzw(tmppipe, pipe);
- }
-
- GString *LZWStream::getPSFilter(char *indent) {
- diff -u -b -B -r -N -w xpdf-0.80-decrypt/xpdf/Stream.h xpdf-0.80-decrypt-gzip/xpdf/Stream.h
- --- xpdf-0.80-decrypt/xpdf/Stream.h Fri Jun 25 18:46:28 1999
- +++ xpdf-0.80-decrypt-gzip/xpdf/Stream.h Fri Jun 25 19:08:58 1999
- @@ -266,6 +266,32 @@
- //------------------------------------------------------------------------
-
- class LZWStream: public Stream {
- + class Pipe {
- + struct chunk {
- + chunk* next;
- + };
- + public:
- + Pipe();
- + ~Pipe();
- + void write(const void*,size_t);
- + void put(char c) { if(wsize==0) enlarge(); *wp++=c; --wsize; }
- + int read(void*,size_t);
- + int get() { return rsize==0 && !next_chunk()?EOF:(--rsize,*rp++); }
- + int lookc() { return rsize==0 && !next_chunk()?EOF:*rp; }
- + void reset();
- + private:
- + Pipe(const Pipe&);
- + Pipe& operator = (const Pipe&);
- + void enlarge();
- + bool next_chunk();
- + chunk* chunks;
- + chunk* wchunk;
- + unsigned char* wp;
- + int wsize;
- + unsigned char* rp;
- + int rsize;
- + };
- +
- public:
-
- LZWStream(Stream *str1, int predictor1, int columns1, int colors1,
- @@ -286,9 +312,7 @@
-
- Stream *str; // stream
- int early; // early parameter
- - char zCmd[256]; // uncompress command
- - myFILE *zPipe; // uncompress pipe
- - char *zName; // .Z file name (in zCmd)
- + Pipe pipe;
- int inputBuf; // input buffer
- int inputBits; // number of bits in input buffer
- int inCodeBits; // size of input code
- @@ -296,9 +320,8 @@
- char *bufPtr; // next char to read
- char *bufEnd; // end of buffer
-
- - void dumpFile(FILE *f);
- int getCode();
- - GBool fillBuf();
- + void unlzw(Pipe&,Pipe&);
- };
-
- //------------------------------------------------------------------------
- diff -u -b -B -r -N -w xpdf-0.80-decrypt/xpdf/unlzw.cc xpdf-0.80-decrypt-gzip/xpdf/unlzw.cc
- --- xpdf-0.80-decrypt/xpdf/unlzw.cc Thu May 20 20:56:27 1999
- +++ xpdf-0.80-decrypt-gzip/xpdf/unlzw.cc Fri Jun 25 18:58:10 1999
- @@ -7,23 +7,18 @@
- * to accommodate in-memory decompression.
- */
-
- -#ifdef RCSID
- -static char rcsid[] = "$Id: unlzw.c,v 0.15 1993/06/10 13:28:35 jloup Exp $";
- -#endif
- -
- -#include <sys/types.h>
- +/*
- + * Modified for integration into Xpdf by E. Lesueur.
- + */
-
- -#include "tailor.h"
- +#include <stdio.h>
- +#include <stdlib.h>
- +#include "Object.h"
- +#include "Stream.h"
- +#include "Error.h"
-
- -#ifdef HAVE_UNISTD_H
- -# include <unistd.h>
- -#endif
- -#ifndef NO_FCNTL_H
- -# include <fcntl.h>
- -#endif
- -
- -#include "gzip.h"
- -#include "lzw.h"
- +#define memzero(s, n) memset((s), 0, (n))
- +#define Tracev(x)
-
- typedef unsigned char char_type;
- typedef long code_int;
- @@ -31,6 +26,48 @@
- typedef unsigned short count_short;
- typedef unsigned long cmp_code_int;
-
- +static const int INIT_BITS = 9;
- +static const code_int CLEAR = 256;
- +static const code_int FIRST = 257;
- +static const int INBUFSIZ = 0x8000;
- +static const int INBUF_EXTRA = 64;
- +static const int OUTBUFSIZ = 16384;
- +static const int OUTBUF_EXTRA = 2048;
- +static const int DIST_BUFSIZE = 0x8000;
- +static const int test = 0;
- +static const int maxbits = 0x0c;
- +static const int block_mode = 1;
- +
- +static unsigned short* tab_prefix;
- +static unsigned char* tab_suffix;
- +static unsigned char* inbuf;
- +static unsigned char* outbuf;
- +static unsigned short* d_buf;
- +
- +class Init {
- + public:
- + Init() {
- + tab_prefix = new unsigned short [1<<16];
- + tab_suffix = new unsigned char [1<<16];
- + inbuf = new unsigned char [INBUFSIZ+INBUF_EXTRA];
- + outbuf = new unsigned char [OUTBUFSIZ+OUTBUF_EXTRA];
- + d_buf = new unsigned short [DIST_BUFSIZE];
- + }
- +
- + ~Init() {
- + delete [] tab_suffix;
- + delete [] tab_prefix;
- + delete [] inbuf;
- + delete [] outbuf;
- + delete [] d_buf;
- + }
- +
- + static Init init;
- +};
- +
- +Init Init::init;
- +
- +
- #define MAXCODE(n) (1L << (n))
-
- #ifndef REGISTERS
- @@ -178,7 +215,6 @@
- #define de_stack ((char_type *)(&d_buf[DIST_BUFSIZE-1]))
- #define tab_suffixof(i) tab_suffix[i]
-
- -int block_mode = BLOCK_MODE; /* block compress mode -C compatible with 2.0 */
-
- /* ============================================================================
- * Decompress in to out. This routine adapts to the codes in the
- @@ -189,8 +225,7 @@
- * The magic header has already been checked and skipped.
- * bytes_in and bytes_out have been initialized.
- */
- -int unlzw(in, out)
- - int in, out; /* input and output file descriptors */
- +void LZWStream::unlzw(Pipe& in,Pipe& out)
- {
- REG2 char_type *stackp;
- REG3 code_int code;
- @@ -200,7 +235,7 @@
- REG7 long inbits;
- REG8 long posbits;
- REG9 int outpos;
- -/* REG10 int insize; (global) */
- + REG10 int insize;
- REG11 unsigned bitmask;
- REG12 code_int free_ent;
- REG13 code_int maxcode;
- @@ -212,29 +247,19 @@
- tab_prefix[0] = tab_prefix0;
- tab_prefix[1] = tab_prefix1;
- #endif
- - maxbits = get_byte();
- - block_mode = maxbits & BLOCK_MODE;
- - if ((maxbits & LZW_RESERVED) != 0) {
- - WARN((stderr, "\n%s: %s: warning, unknown flags 0x%x\n",
- - progname, ifname, maxbits & LZW_RESERVED));
- - }
- - maxbits &= BIT_MASK;
- maxmaxcode = MAXCODE(maxbits);
-
- - if (maxbits > BITS) {
- - fprintf(stderr,
- - "\n%s: %s: compressed with %d bits, can only handle %d bits\n",
- - progname, ifname, maxbits, BITS);
- - exit_code = ERROR;
- - return ERROR;
- + if ((rsize = insize = in.read(inbuf, INBUFSIZ)) == EOF) {
- + error(getPos(), "unexpected end od file.");
- + return;
- }
- - rsize = insize;
- +
- maxcode = MAXCODE(n_bits = INIT_BITS)-1;
- bitmask = (1<<n_bits)-1;
- oldcode = -1;
- finchar = 0;
- outpos = 0;
- - posbits = inptr<<3;
- + posbits = 0;
-
- free_ent = ((block_mode) ? FIRST : 256);
-
- @@ -258,11 +283,11 @@
- posbits = 0;
-
- if (insize < INBUF_EXTRA) {
- - if ((rsize = read(in, (char*)inbuf+insize, INBUFSIZ)) == EOF) {
- - read_error();
- + if ((rsize = in.read((char*)inbuf+insize, INBUFSIZ)) == EOF) {
- + error(getPos(), "unexpected end of file.");
- + return;
- }
- insize += rsize;
- - bytes_in += (ulg)rsize;
- }
- inbits = ((rsize != 0) ? ((long)insize - insize%n_bits)<<3 :
- ((long)insize<<3)-(n_bits-1));
- @@ -284,7 +309,10 @@
- Tracev((stderr, "%d ", code));
-
- if (oldcode == -1) {
- - if (code >= 256) error("corrupt input.");
- + if (code >= 256) {
- + error(getPos(),"corrupt input.");
- + return;
- + }
- outbuf[outpos++] = (char_type)(finchar = (int)(oldcode=code));
- continue;
- }
- @@ -315,11 +343,9 @@
- posbits, p[-1],p[0],p[1],p[2],p[3]);
- #endif
- if (!test && outpos > 0) {
- - write_buf(out, (char*)outbuf, outpos);
- - bytes_out += (ulg)outpos;
- + out.write(outbuf, outpos);
- }
- - error(to_stdout ? "corrupt input." :
- - "corrupt input. Use zcat to recover some data.");
- + error(getPos(),"corrupt input." );
- }
- *--stackp = (char_type)finchar;
- code = oldcode;
- @@ -346,8 +372,7 @@
- }
- if (outpos >= OUTBUFSIZ) {
- if (!test) {
- - write_buf(out, (char*)outbuf, outpos);
- - bytes_out += (ulg)outpos;
- + out.write(outbuf, outpos);
- }
- outpos = 0;
- }
- @@ -370,8 +395,7 @@
- } while (rsize != 0);
-
- if (!test && outpos > 0) {
- - write_buf(out, (char*)outbuf, outpos);
- - bytes_out += (ulg)outpos;
- + out.write(outbuf, outpos);
- }
- - return OK;
- }
- +
-