| diff -ac zlib113/deflate.c zlibwce/deflate.c |
| *** zlib113/deflate.c Fri Jul 10 01:06:12 1998 |
| --- zlibwce/deflate.c Thu May 25 16:42:18 2000 |
| *************** |
| *** 921,926 **** |
| --- 921,930 ---- |
| #endif /* ASMV */ |
| |
| #ifdef DEBUG |
| + #ifdef _WIN32_WCE |
| + /* Windows CE is not support DEBUG version's zlib */ |
| + # define check_match(s, start, match, length) |
| + #else |
| /* =========================================================================== |
| * Check that the match at match_start is indeed a match. |
| */ |
| *************** |
| *** 944,949 **** |
| --- 948,954 ---- |
| do { putc(s->window[start++], stderr); } while (--length != 0); |
| } |
| } |
| + #endif |
| #else |
| # define check_match(s, start, match, length) |
| #endif |
| diff -ac zlib113/trees.c zlibwce/trees.c |
| *** zlib113/trees.c Thu Jul 09 01:32:58 1998 |
| --- zlibwce/trees.c Thu May 25 16:42:50 2000 |
| *************** |
| *** 168,176 **** |
| --- 168,182 ---- |
| /* Send a code of the given tree. c and tree must not have side effects */ |
| |
| #else /* DEBUG */ |
| + #ifdef _WIN32_WCE |
| + /* Windows CE is not support DEBUG version's zlib */ |
| + # define send_code(s, c, tree) send_bits(s, tree[c].Code, tree[c].Len) |
| + |
| + #else |
| # define send_code(s, c, tree) \ |
| { if (z_verbose>2) fprintf(stderr,"\ncd %3d ",(c)); \ |
| send_bits(s, tree[c].Code, tree[c].Len); } |
| + #endif |
| #endif |
| |
| /* =========================================================================== |
| diff -ac zlib113/zconf.h zlibwce/zconf.h |
| *** zlib113/zconf.h Thu Jul 09 02:55:28 1998 |
| --- zlibwce/zconf.h Thu May 25 16:36:16 2000 |
| *************** |
| *** 96,101 **** |
| --- 96,106 ---- |
| # define NEED_DUMMY_RETURN |
| #endif |
| |
| + /* Windows CE is not have errno.h file: */ |
| + #if defined(_WIN32_WCE) |
| + # define NO_ERRNO_H |
| + #endif |
| + |
| |
| /* Maximum value for memLevel in deflateInit2 */ |
| #ifndef MAX_MEM_LEVEL |
| *************** |
| *** 162,168 **** |
| |
| /* Compile with -DZLIB_DLL for Windows DLL support */ |
| #if defined(ZLIB_DLL) |
| ! # if defined(_WINDOWS) || defined(WINDOWS) |
| # ifdef FAR |
| # undef FAR |
| # endif |
| --- 167,173 ---- |
| |
| /* Compile with -DZLIB_DLL for Windows DLL support */ |
| #if defined(ZLIB_DLL) |
| ! # if defined(_WINDOWS) || defined(WINDOWS) || defined(_WIN32_WCE) |
| # ifdef FAR |
| # undef FAR |
| # endif |
| diff -ac zlib113/zutil.c zlibwce/zutil.c |
| *** zlib113/zutil.c Thu Jul 09 02:01:48 1998 |
| --- zlibwce/zutil.c Thu May 25 16:43:34 2000 |
| *************** |
| *** 32,37 **** |
| --- 32,40 ---- |
| } |
| |
| #ifdef DEBUG |
| + #ifdef _WIN32_WCE |
| + /* Windows CE is not support DEBUG version's zlib */ |
| + #else |
| |
| # ifndef verbose |
| # define verbose 0 |
| *************** |
| *** 45,50 **** |
| --- 48,54 ---- |
| exit(1); |
| } |
| #endif |
| + #endif |
| |
| /* exported to allow conversion of error code to string for compress() and |
| * uncompress() |
| *************** |
| *** 211,217 **** |
| --- 215,225 ---- |
| unsigned size; |
| { |
| if (opaque) items += size - size; /* make compiler happy */ |
| + #ifdef _WIN32_WCE |
| + return (voidpf)malloc(items * size); |
| + #else |
| return (voidpf)calloc(items, size); |
| + #endif |
| } |
| |
| void zcfree (opaque, ptr) |
| diff -ac zlib113/zutil.h zlibwce/zutil.h |
| *** zlib113/zutil.h Thu Jul 09 02:01:48 1998 |
| --- zlibwce/zutil.h Thu May 25 16:41:44 2000 |
| *************** |
| *** 16,22 **** |
| --- 16,26 ---- |
| #include "zlib.h" |
| |
| #ifdef STDC |
| + #ifdef _WIN32_WCE |
| + # include <malloc.h> |
| + #else |
| # include <stddef.h> |
| + #endif |
| # include <string.h> |
| # include <stdlib.h> |
| #endif |
| *************** |
| *** 188,193 **** |
| --- 192,206 ---- |
| |
| /* Diagnostic functions */ |
| #ifdef DEBUG |
| + #ifdef _WIN32_WCE |
| + /* Windows CE is not support DEBUG version's zlib */ |
| + # define Assert(cond,msg) |
| + # define Trace(x) |
| + # define Tracev(x) |
| + # define Tracevv(x) |
| + # define Tracec(c,x) |
| + # define Tracecv(c,x) |
| + #else |
| # include <stdio.h> |
| extern int z_verbose; |
| extern void z_error OF((char *m)); |
| *************** |
| *** 197,202 **** |
| --- 210,216 ---- |
| # define Tracevv(x) {if (z_verbose>1) fprintf x ;} |
| # define Tracec(c,x) {if (z_verbose>0 && (c)) fprintf x ;} |
| # define Tracecv(c,x) {if (z_verbose>1 && (c)) fprintf x ;} |
| + #endif |
| #else |
| # define Assert(cond,msg) |
| # define Trace(x) |
| *** zlib113/gzio.c Sat Jul 8 13:59:49 2000 |
| --- zlibwce/gzio.c Sat Jul 8 13:58:29 2000 |
| *************** |
| *** 1,5 **** |
| ! /* gzio.c -- IO on .gz files |
| * Copyright (C) 1995-1998 Jean-loup Gailly. |
| * For conditions of distribution and use, see copyright notice in zlib.h |
| * |
| * Compile this file with -DNO_DEFLATE to avoid the compression code. |
| --- 1,6 ---- |
| ! /* gzio.c -- IO on .gz files for WindowsCE |
| * Copyright (C) 1995-1998 Jean-loup Gailly. |
| + * Copyright (C) 2000 Tenik Co.,Ltd. |
| * For conditions of distribution and use, see copyright notice in zlib.h |
| * |
| * Compile this file with -DNO_DEFLATE to avoid the compression code. |
| *************** |
| *** 7,13 **** |
| |
| /* @(#) $Id$ */ |
| |
| ! #include <stdio.h> |
| |
| #include "zutil.h" |
| |
| --- 8,14 ---- |
| |
| /* @(#) $Id$ */ |
| |
| ! #include <windows.h> |
| |
| #include "zutil.h" |
| |
| *************** |
| *** 41,47 **** |
| z_stream stream; |
| int z_err; /* error code for last stream operation */ |
| int z_eof; /* set if end of input file */ |
| ! FILE *file; /* .gz file */ |
| Byte *inbuf; /* input buffer */ |
| Byte *outbuf; /* output buffer */ |
| uLong crc; /* crc32 of uncompressed data */ |
| --- 42,48 ---- |
| z_stream stream; |
| int z_err; /* error code for last stream operation */ |
| int z_eof; /* set if end of input file */ |
| ! HANDLE file; /* .gz file */ |
| Byte *inbuf; /* input buffer */ |
| Byte *outbuf; /* output buffer */ |
| uLong crc; /* crc32 of uncompressed data */ |
| *************** |
| *** 58,64 **** |
| local int get_byte OF((gz_stream *s)); |
| local void check_header OF((gz_stream *s)); |
| local int destroy OF((gz_stream *s)); |
| ! local void putLong OF((FILE *file, uLong x)); |
| local uLong getLong OF((gz_stream *s)); |
| |
| /* =========================================================================== |
| --- 59,65 ---- |
| local int get_byte OF((gz_stream *s)); |
| local void check_header OF((gz_stream *s)); |
| local int destroy OF((gz_stream *s)); |
| ! local void putLong OF((HANDLE file, uLong x)); |
| local uLong getLong OF((gz_stream *s)); |
| |
| /* =========================================================================== |
| *************** |
| *** 82,87 **** |
| --- 83,91 ---- |
| gz_stream *s; |
| char fmode[80]; /* copy of mode, without the compression level */ |
| char *m = fmode; |
| + char cbuff[10]; |
| + DWORD size; |
| + TCHAR file[MAX_PATH]; |
| |
| if (!path || !mode) return Z_NULL; |
| |
| *************** |
| *** 94,100 **** |
| s->stream.next_in = s->inbuf = Z_NULL; |
| s->stream.next_out = s->outbuf = Z_NULL; |
| s->stream.avail_in = s->stream.avail_out = 0; |
| ! s->file = NULL; |
| s->z_err = Z_OK; |
| s->z_eof = 0; |
| s->crc = crc32(0L, Z_NULL, 0); |
| --- 98,104 ---- |
| s->stream.next_in = s->inbuf = Z_NULL; |
| s->stream.next_out = s->outbuf = Z_NULL; |
| s->stream.avail_in = s->stream.avail_out = 0; |
| ! s->file = INVALID_HANDLE_VALUE; |
| s->z_err = Z_OK; |
| s->z_eof = 0; |
| s->crc = crc32(0L, Z_NULL, 0); |
| *************** |
| *** 112,125 **** |
| if (*p == 'r') s->mode = 'r'; |
| if (*p == 'w' || *p == 'a') s->mode = 'w'; |
| if (*p >= '0' && *p <= '9') { |
| ! level = *p - '0'; |
| ! } else if (*p == 'f') { |
| ! strategy = Z_FILTERED; |
| ! } else if (*p == 'h') { |
| ! strategy = Z_HUFFMAN_ONLY; |
| ! } else { |
| ! *m++ = *p; /* copy the mode */ |
| ! } |
| } while (*p++ && m != fmode + sizeof(fmode)); |
| if (s->mode == '\0') return destroy(s), (gzFile)Z_NULL; |
| |
| --- 116,129 ---- |
| if (*p == 'r') s->mode = 'r'; |
| if (*p == 'w' || *p == 'a') s->mode = 'w'; |
| if (*p >= '0' && *p <= '9') { |
| ! level = *p - '0'; |
| ! } else if (*p == 'f') { |
| ! strategy = Z_FILTERED; |
| ! } else if (*p == 'h') { |
| ! strategy = Z_HUFFMAN_ONLY; |
| ! } else { |
| ! *m++ = *p; /* copy the mode */ |
| ! } |
| } while (*p++ && m != fmode + sizeof(fmode)); |
| if (s->mode == '\0') return destroy(s), (gzFile)Z_NULL; |
| |
| *************** |
| *** 152,177 **** |
| } |
| s->stream.avail_out = Z_BUFSIZE; |
| |
| ! errno = 0; |
| ! s->file = fd < 0 ? F_OPEN(path, fmode) : (FILE*)fdopen(fd, fmode); |
| |
| ! if (s->file == NULL) { |
| return destroy(s), (gzFile)Z_NULL; |
| } |
| if (s->mode == 'w') { |
| /* Write a very simple .gz header: |
| */ |
| ! fprintf(s->file, "%c%c%c%c%c%c%c%c%c%c", gz_magic[0], gz_magic[1], |
| ! Z_DEFLATED, 0 /*flags*/, 0,0,0,0 /*time*/, 0 /*xflags*/, OS_CODE); |
| ! s->startpos = 10L; |
| ! /* We use 10L instead of ftell(s->file) to because ftell causes an |
| * fflush on some systems. This version of the library doesn't use |
| * startpos anyway in write mode, so this initialization is not |
| * necessary. |
| */ |
| } else { |
| ! check_header(s); /* skip the .gz header */ |
| ! s->startpos = (ftell(s->file) - s->stream.avail_in); |
| } |
| |
| return (gzFile)s; |
| --- 156,195 ---- |
| } |
| s->stream.avail_out = Z_BUFSIZE; |
| |
| ! SetLastError(NO_ERROR); |
| ! if ((HANDLE)fd == INVALID_HANDLE_VALUE) { |
| ! MultiByteToWideChar(CP_ACP, 0, path, -1, file, MAX_PATH); |
| ! s->file = CreateFile(file, GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, 0, NULL); |
| ! } else { |
| ! s->file = (HANDLE)fd; |
| ! } |
| |
| ! if (s->file == INVALID_HANDLE_VALUE) { |
| return destroy(s), (gzFile)Z_NULL; |
| } |
| if (s->mode == 'w') { |
| /* Write a very simple .gz header: |
| */ |
| ! cbuff[0] = gz_magic[0]; |
| ! cbuff[1] = gz_magic[1]; |
| ! cbuff[2] = Z_DEFLATED; |
| ! cbuff[3] = 0; /*flags*/ |
| ! cbuff[4] = 0; |
| ! cbuff[5] = 0; |
| ! cbuff[6] = 0; |
| ! cbuff[7] = 0; /*time*/; |
| ! cbuff[8] = 0; /*xflags*/; |
| ! cbuff[9] = OS_CODE; |
| ! WriteFile(s->file, cbuff, 10, &size, NULL); |
| ! s->startpos = 10L; |
| ! /* We use 10L instead of ftell(s->file) to because ftell causes an |
| * fflush on some systems. This version of the library doesn't use |
| * startpos anyway in write mode, so this initialization is not |
| * necessary. |
| */ |
| } else { |
| ! check_header(s); /* skip the .gz header */ |
| ! s->startpos = (SetFilePointer(s->file, 0, NULL, FILE_CURRENT) - s->stream.avail_in); |
| } |
| |
| return (gzFile)s; |
| *************** |
| *** 197,205 **** |
| { |
| char name[20]; |
| |
| ! if (fd < 0) return (gzFile)Z_NULL; |
| ! sprintf(name, "<fd:%d>", fd); /* for debugging */ |
| |
| return gz_open (name, mode, fd); |
| } |
| |
| --- 215,225 ---- |
| { |
| char name[20]; |
| |
| ! if ((HANDLE)fd == INVALID_HANDLE_VALUE) |
| ! return (gzFile)Z_NULL; |
| |
| + strcpy(name, "<gzdopen>"); /* for debugging */ |
| + |
| return gz_open (name, mode, fd); |
| } |
| |
| *************** |
| *** 212,217 **** |
| --- 232,238 ---- |
| int strategy; |
| { |
| gz_stream *s = (gz_stream*)file; |
| + DWORD size; |
| |
| if (s == NULL || s->mode != 'w') return Z_STREAM_ERROR; |
| |
| *************** |
| *** 218,228 **** |
| /* Make room to allow flushing */ |
| if (s->stream.avail_out == 0) { |
| |
| ! s->stream.next_out = s->outbuf; |
| ! if (fwrite(s->outbuf, 1, Z_BUFSIZE, s->file) != Z_BUFSIZE) { |
| ! s->z_err = Z_ERRNO; |
| ! } |
| ! s->stream.avail_out = Z_BUFSIZE; |
| } |
| |
| return deflateParams (&(s->stream), level, strategy); |
| --- 239,249 ---- |
| /* Make room to allow flushing */ |
| if (s->stream.avail_out == 0) { |
| |
| ! s->stream.next_out = s->outbuf; |
| ! if (!WriteFile(s->file, s->outbuf, Z_BUFSIZE, &size, NULL) || size != Z_BUFSIZE) { |
| ! s->z_err = Z_ERRNO; |
| ! } |
| ! s->stream.avail_out = Z_BUFSIZE; |
| } |
| |
| return deflateParams (&(s->stream), level, strategy); |
| *************** |
| *** 236,251 **** |
| local int get_byte(s) |
| gz_stream *s; |
| { |
| ! if (s->z_eof) return EOF; |
| if (s->stream.avail_in == 0) { |
| ! errno = 0; |
| ! s->stream.avail_in = fread(s->inbuf, 1, Z_BUFSIZE, s->file); |
| ! if (s->stream.avail_in == 0) { |
| ! s->z_eof = 1; |
| ! if (ferror(s->file)) s->z_err = Z_ERRNO; |
| ! return EOF; |
| ! } |
| ! s->stream.next_in = s->inbuf; |
| } |
| s->stream.avail_in--; |
| return *(s->stream.next_in)++; |
| --- 257,273 ---- |
| local int get_byte(s) |
| gz_stream *s; |
| { |
| ! if (s->z_eof) return -1; |
| if (s->stream.avail_in == 0) { |
| ! SetLastError(NO_ERROR); |
| ! if (!ReadFile(s->file, s->inbuf, Z_BUFSIZE, &s->stream.avail_in, NULL)) { |
| ! s->z_err = Z_ERRNO; |
| ! } |
| ! if (s->stream.avail_in == 0) { |
| ! s->z_eof = 1; |
| ! return -1; |
| ! } |
| ! s->stream.next_in = s->inbuf; |
| } |
| s->stream.avail_in--; |
| return *(s->stream.next_in)++; |
| *************** |
| *** 270,291 **** |
| |
| /* Check the gzip magic header */ |
| for (len = 0; len < 2; len++) { |
| ! c = get_byte(s); |
| ! if (c != gz_magic[len]) { |
| ! if (len != 0) s->stream.avail_in++, s->stream.next_in--; |
| ! if (c != EOF) { |
| ! s->stream.avail_in++, s->stream.next_in--; |
| ! s->transparent = 1; |
| ! } |
| ! s->z_err = s->stream.avail_in != 0 ? Z_OK : Z_STREAM_END; |
| ! return; |
| ! } |
| } |
| method = get_byte(s); |
| flags = get_byte(s); |
| if (method != Z_DEFLATED || (flags & RESERVED) != 0) { |
| ! s->z_err = Z_DATA_ERROR; |
| ! return; |
| } |
| |
| /* Discard time, xflags and OS code: */ |
| --- 292,313 ---- |
| |
| /* Check the gzip magic header */ |
| for (len = 0; len < 2; len++) { |
| ! c = get_byte(s); |
| ! if (c != gz_magic[len]) { |
| ! if (len != 0) s->stream.avail_in++, s->stream.next_in--; |
| ! if (c != -1) { |
| ! s->stream.avail_in++, s->stream.next_in--; |
| ! s->transparent = 1; |
| ! } |
| ! s->z_err = s->stream.avail_in != 0 ? Z_OK : Z_STREAM_END; |
| ! return; |
| ! } |
| } |
| method = get_byte(s); |
| flags = get_byte(s); |
| if (method != Z_DEFLATED || (flags & RESERVED) != 0) { |
| ! s->z_err = Z_DATA_ERROR; |
| ! return; |
| } |
| |
| /* Discard time, xflags and OS code: */ |
| *************** |
| *** 292,310 **** |
| for (len = 0; len < 6; len++) (void)get_byte(s); |
| |
| if ((flags & EXTRA_FIELD) != 0) { /* skip the extra field */ |
| ! len = (uInt)get_byte(s); |
| ! len += ((uInt)get_byte(s))<<8; |
| ! /* len is garbage if EOF but the loop below will quit anyway */ |
| ! while (len-- != 0 && get_byte(s) != EOF) ; |
| } |
| if ((flags & ORIG_NAME) != 0) { /* skip the original file name */ |
| ! while ((c = get_byte(s)) != 0 && c != EOF) ; |
| } |
| if ((flags & COMMENT) != 0) { /* skip the .gz file comment */ |
| ! while ((c = get_byte(s)) != 0 && c != EOF) ; |
| } |
| if ((flags & HEAD_CRC) != 0) { /* skip the header crc */ |
| ! for (len = 0; len < 2; len++) (void)get_byte(s); |
| } |
| s->z_err = s->z_eof ? Z_DATA_ERROR : Z_OK; |
| } |
| --- 314,332 ---- |
| for (len = 0; len < 6; len++) (void)get_byte(s); |
| |
| if ((flags & EXTRA_FIELD) != 0) { /* skip the extra field */ |
| ! len = (uInt)get_byte(s); |
| ! len += ((uInt)get_byte(s))<<8; |
| ! /* len is garbage if EOF but the loop below will quit anyway */ |
| ! while (len-- != 0 && get_byte(s) != -1) ; |
| } |
| if ((flags & ORIG_NAME) != 0) { /* skip the original file name */ |
| ! while ((c = get_byte(s)) != 0 && c != -1) ; |
| } |
| if ((flags & COMMENT) != 0) { /* skip the .gz file comment */ |
| ! while ((c = get_byte(s)) != 0 && c != -1) ; |
| } |
| if ((flags & HEAD_CRC) != 0) { /* skip the header crc */ |
| ! for (len = 0; len < 2; len++) (void)get_byte(s); |
| } |
| s->z_err = s->z_eof ? Z_DATA_ERROR : Z_OK; |
| } |
| *************** |
| *** 323,343 **** |
| TRYFREE(s->msg); |
| |
| if (s->stream.state != NULL) { |
| ! if (s->mode == 'w') { |
| #ifdef NO_DEFLATE |
| ! err = Z_STREAM_ERROR; |
| #else |
| ! err = deflateEnd(&(s->stream)); |
| #endif |
| ! } else if (s->mode == 'r') { |
| ! err = inflateEnd(&(s->stream)); |
| ! } |
| ! } |
| ! if (s->file != NULL && fclose(s->file)) { |
| ! #ifdef ESPIPE |
| ! if (errno != ESPIPE) /* fclose is broken for pipes in HP/UX */ |
| ! #endif |
| ! err = Z_ERRNO; |
| } |
| if (s->z_err < 0) err = s->z_err; |
| |
| --- 345,362 ---- |
| TRYFREE(s->msg); |
| |
| if (s->stream.state != NULL) { |
| ! if (s->mode == 'w') { |
| #ifdef NO_DEFLATE |
| ! err = Z_STREAM_ERROR; |
| #else |
| ! err = deflateEnd(&(s->stream)); |
| #endif |
| ! } else if (s->mode == 'r') { |
| ! err = inflateEnd(&(s->stream)); |
| ! } |
| ! } |
| ! if (s->file != NULL && !CloseHandle(s->file)) { |
| ! err = Z_ERRNO; |
| } |
| if (s->z_err < 0) err = s->z_err; |
| |
| *************** |
| *** 360,365 **** |
| --- 379,385 ---- |
| gz_stream *s = (gz_stream*)file; |
| Bytef *start = (Bytef*)buf; /* starting point for crc computation */ |
| Byte *next_out; /* == stream.next_out but not forced far (for MSDOS) */ |
| + DWORD size; |
| |
| if (s == NULL || s->mode != 'r') return Z_STREAM_ERROR; |
| |
| *************** |
| *** 372,440 **** |
| |
| while (s->stream.avail_out != 0) { |
| |
| ! if (s->transparent) { |
| ! /* Copy first the lookahead bytes: */ |
| ! uInt n = s->stream.avail_in; |
| ! if (n > s->stream.avail_out) n = s->stream.avail_out; |
| ! if (n > 0) { |
| ! zmemcpy(s->stream.next_out, s->stream.next_in, n); |
| ! next_out += n; |
| ! s->stream.next_out = next_out; |
| ! s->stream.next_in += n; |
| ! s->stream.avail_out -= n; |
| ! s->stream.avail_in -= n; |
| ! } |
| ! if (s->stream.avail_out > 0) { |
| ! s->stream.avail_out -= fread(next_out, 1, s->stream.avail_out, |
| ! s->file); |
| ! } |
| ! len -= s->stream.avail_out; |
| ! s->stream.total_in += (uLong)len; |
| ! s->stream.total_out += (uLong)len; |
| if (len == 0) s->z_eof = 1; |
| ! return (int)len; |
| ! } |
| if (s->stream.avail_in == 0 && !s->z_eof) { |
| |
| ! errno = 0; |
| ! s->stream.avail_in = fread(s->inbuf, 1, Z_BUFSIZE, s->file); |
| if (s->stream.avail_in == 0) { |
| s->z_eof = 1; |
| - if (ferror(s->file)) { |
| - s->z_err = Z_ERRNO; |
| - break; |
| - } |
| } |
| s->stream.next_in = s->inbuf; |
| } |
| s->z_err = inflate(&(s->stream), Z_NO_FLUSH); |
| |
| ! if (s->z_err == Z_STREAM_END) { |
| ! /* Check CRC and original size */ |
| ! s->crc = crc32(s->crc, start, (uInt)(s->stream.next_out - start)); |
| ! start = s->stream.next_out; |
| ! |
| ! if (getLong(s) != s->crc) { |
| ! s->z_err = Z_DATA_ERROR; |
| ! } else { |
| ! (void)getLong(s); |
| /* The uncompressed length returned by above getlong() may |
| * be different from s->stream.total_out) in case of |
| ! * concatenated .gz files. Check for such files: |
| ! */ |
| ! check_header(s); |
| ! if (s->z_err == Z_OK) { |
| ! uLong total_in = s->stream.total_in; |
| ! uLong total_out = s->stream.total_out; |
| ! |
| ! inflateReset(&(s->stream)); |
| ! s->stream.total_in = total_in; |
| ! s->stream.total_out = total_out; |
| ! s->crc = crc32(0L, Z_NULL, 0); |
| ! } |
| ! } |
| ! } |
| ! if (s->z_err != Z_OK || s->z_eof) break; |
| } |
| s->crc = crc32(s->crc, start, (uInt)(s->stream.next_out - start)); |
| |
| --- 392,461 ---- |
| |
| while (s->stream.avail_out != 0) { |
| |
| ! if (s->transparent) { |
| ! /* Copy first the lookahead bytes: */ |
| ! uInt n = s->stream.avail_in; |
| ! if (n > s->stream.avail_out) n = s->stream.avail_out; |
| ! if (n > 0) { |
| ! zmemcpy(s->stream.next_out, s->stream.next_in, n); |
| ! next_out += n; |
| ! s->stream.next_out = next_out; |
| ! s->stream.next_in += n; |
| ! s->stream.avail_out -= n; |
| ! s->stream.avail_in -= n; |
| ! } |
| ! if (s->stream.avail_out > 0) { |
| ! if (ReadFile(s->file, next_out, s->stream.avail_out, &size, NULL)) { |
| ! s->stream.avail_out -= size; |
| ! } |
| ! } |
| ! len -= s->stream.avail_out; |
| ! s->stream.total_in += (uLong)len; |
| ! s->stream.total_out += (uLong)len; |
| if (len == 0) s->z_eof = 1; |
| ! return (int)len; |
| ! } |
| if (s->stream.avail_in == 0 && !s->z_eof) { |
| |
| ! SetLastError(NO_ERROR); |
| ! if (!ReadFile(s->file, s->inbuf, Z_BUFSIZE, &s->stream.avail_in, NULL)) { |
| ! s->z_eof = 1; |
| ! s->z_err = Z_ERRNO; |
| ! break; |
| ! } |
| if (s->stream.avail_in == 0) { |
| s->z_eof = 1; |
| } |
| s->stream.next_in = s->inbuf; |
| } |
| s->z_err = inflate(&(s->stream), Z_NO_FLUSH); |
| |
| ! if (s->z_err == Z_STREAM_END) { |
| ! /* Check CRC and original size */ |
| ! s->crc = crc32(s->crc, start, (uInt)(s->stream.next_out - start)); |
| ! start = s->stream.next_out; |
| ! |
| ! if (getLong(s) != s->crc) { |
| ! s->z_err = Z_DATA_ERROR; |
| ! } else { |
| ! (void)getLong(s); |
| /* The uncompressed length returned by above getlong() may |
| * be different from s->stream.total_out) in case of |
| ! * concatenated .gz files. Check for such files: |
| ! */ |
| ! check_header(s); |
| ! if (s->z_err == Z_OK) { |
| ! uLong total_in = s->stream.total_in; |
| ! uLong total_out = s->stream.total_out; |
| ! |
| ! inflateReset(&(s->stream)); |
| ! s->stream.total_in = total_in; |
| ! s->stream.total_out = total_out; |
| ! s->crc = crc32(0L, Z_NULL, 0); |
| ! } |
| ! } |
| ! } |
| ! if (s->z_err != Z_OK || s->z_eof) break; |
| } |
| s->crc = crc32(s->crc, start, (uInt)(s->stream.next_out - start)); |
| |
| *************** |
| *** 489,494 **** |
| --- 510,516 ---- |
| unsigned len; |
| { |
| gz_stream *s = (gz_stream*)file; |
| + DWORD size; |
| |
| if (s == NULL || s->mode != 'w') return Z_STREAM_ERROR; |
| |
| *************** |
| *** 500,506 **** |
| if (s->stream.avail_out == 0) { |
| |
| s->stream.next_out = s->outbuf; |
| ! if (fwrite(s->outbuf, 1, Z_BUFSIZE, s->file) != Z_BUFSIZE) { |
| s->z_err = Z_ERRNO; |
| break; |
| } |
| --- 522,528 ---- |
| if (s->stream.avail_out == 0) { |
| |
| s->stream.next_out = s->outbuf; |
| ! if (!WriteFile(s->file, s->outbuf, Z_BUFSIZE, &size, NULL) || size != Z_BUFSIZE) { |
| s->z_err = Z_ERRNO; |
| break; |
| } |
| *************** |
| *** 527,540 **** |
| char buf[Z_PRINTF_BUFSIZE]; |
| va_list va; |
| int len; |
| |
| va_start(va, format); |
| ! #ifdef HAS_vsnprintf |
| ! (void)vsnprintf(buf, sizeof(buf), format, va); |
| ! #else |
| ! (void)vsprintf(buf, format, va); |
| ! #endif |
| va_end(va); |
| len = strlen(buf); /* some *sprintf don't return the nb of bytes written */ |
| if (len <= 0) return 0; |
| |
| --- 549,574 ---- |
| char buf[Z_PRINTF_BUFSIZE]; |
| va_list va; |
| int len; |
| + TCHAR form[Z_PRINTF_BUFSIZE]; |
| + TCHAR tbuf[Z_PRINTF_BUFSIZE]; |
| + int n; |
| |
| va_start(va, format); |
| ! MultiByteToWideChar(CP_ACP, 0, format, -1, form, Z_PRINTF_BUFSIZE); |
| ! len = lstrlen(form); |
| ! for ( n = 0; n < len; n++ ) { |
| ! if ( TEXT('%') == form[n] ) { |
| ! n++; |
| ! if ( TEXT('c') == form[n] ) { |
| ! form[n] = TEXT('C'); |
| ! } else if ( TEXT('s') == form[n] ) { |
| ! form[n] = TEXT('S'); |
| ! } |
| ! } |
| ! } |
| ! (void)vswprintf(tbuf, form, va); |
| va_end(va); |
| + WideCharToMultiByte(CP_ACP, 0, tbuf, -1, buf, Z_PRINTF_BUFSIZE, NULL, NULL); |
| len = strlen(buf); /* some *sprintf don't return the nb of bytes written */ |
| if (len <= 0) return 0; |
| |
| *************** |
| *** 543,553 **** |
| #else /* not ANSI C */ |
| |
| int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, |
| ! a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) |
| gzFile file; |
| const char *format; |
| int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, |
| ! a11, a12, a13, a14, a15, a16, a17, a18, a19, a20; |
| { |
| char buf[Z_PRINTF_BUFSIZE]; |
| int len; |
| --- 577,587 ---- |
| #else /* not ANSI C */ |
| |
| int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, |
| ! a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) |
| gzFile file; |
| const char *format; |
| int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, |
| ! a11, a12, a13, a14, a15, a16, a17, a18, a19, a20; |
| { |
| char buf[Z_PRINTF_BUFSIZE]; |
| int len; |
| *************** |
| *** 554,563 **** |
| |
| #ifdef HAS_snprintf |
| snprintf(buf, sizeof(buf), format, a1, a2, a3, a4, a5, a6, a7, a8, |
| ! a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20); |
| #else |
| sprintf(buf, format, a1, a2, a3, a4, a5, a6, a7, a8, |
| ! a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20); |
| #endif |
| len = strlen(buf); /* old sprintf doesn't return the nb of bytes written */ |
| if (len <= 0) return 0; |
| --- 588,597 ---- |
| |
| #ifdef HAS_snprintf |
| snprintf(buf, sizeof(buf), format, a1, a2, a3, a4, a5, a6, a7, a8, |
| ! a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20); |
| #else |
| sprintf(buf, format, a1, a2, a3, a4, a5, a6, a7, a8, |
| ! a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20); |
| #endif |
| len = strlen(buf); /* old sprintf doesn't return the nb of bytes written */ |
| if (len <= 0) return 0; |
| *************** |
| *** 604,609 **** |
| --- 638,644 ---- |
| uInt len; |
| int done = 0; |
| gz_stream *s = (gz_stream*)file; |
| + DWORD size; |
| |
| if (s == NULL || s->mode != 'w') return Z_STREAM_ERROR; |
| |
| *************** |
| *** 613,619 **** |
| len = Z_BUFSIZE - s->stream.avail_out; |
| |
| if (len != 0) { |
| ! if ((uInt)fwrite(s->outbuf, 1, len, s->file) != len) { |
| s->z_err = Z_ERRNO; |
| return Z_ERRNO; |
| } |
| --- 648,654 ---- |
| len = Z_BUFSIZE - s->stream.avail_out; |
| |
| if (len != 0) { |
| ! if (!WriteFile(s->file, s->outbuf, len, &size, NULL) || (uInt)size != len) { |
| s->z_err = Z_ERRNO; |
| return Z_ERRNO; |
| } |
| *************** |
| *** 623,630 **** |
| if (done) break; |
| s->z_err = deflate(&(s->stream), flush); |
| |
| ! /* Ignore the second of two consecutive flushes: */ |
| ! if (len == 0 && s->z_err == Z_BUF_ERROR) s->z_err = Z_OK; |
| |
| /* deflate has finished flushing only when it hasn't used up |
| * all the available space in the output buffer: |
| --- 658,665 ---- |
| if (done) break; |
| s->z_err = deflate(&(s->stream), flush); |
| |
| ! /* Ignore the second of two consecutive flushes: */ |
| ! if (len == 0 && s->z_err == Z_BUF_ERROR) s->z_err = Z_OK; |
| |
| /* deflate has finished flushing only when it hasn't used up |
| * all the available space in the output buffer: |
| *************** |
| *** 644,650 **** |
| int err = do_flush (file, flush); |
| |
| if (err) return err; |
| ! fflush(s->file); |
| return s->z_err == Z_STREAM_END ? Z_OK : s->z_err; |
| } |
| #endif /* NO_DEFLATE */ |
| --- 679,685 ---- |
| int err = do_flush (file, flush); |
| |
| if (err) return err; |
| ! |
| return s->z_err == Z_STREAM_END ? Z_OK : s->z_err; |
| } |
| #endif /* NO_DEFLATE */ |
| *************** |
| *** 665,698 **** |
| gz_stream *s = (gz_stream*)file; |
| |
| if (s == NULL || whence == SEEK_END || |
| ! s->z_err == Z_ERRNO || s->z_err == Z_DATA_ERROR) { |
| ! return -1L; |
| } |
| |
| if (s->mode == 'w') { |
| #ifdef NO_DEFLATE |
| ! return -1L; |
| #else |
| ! if (whence == SEEK_SET) { |
| ! offset -= s->stream.total_in; |
| ! } |
| ! if (offset < 0) return -1L; |
| ! |
| ! /* At this point, offset is the number of zero bytes to write. */ |
| ! if (s->inbuf == Z_NULL) { |
| ! s->inbuf = (Byte*)ALLOC(Z_BUFSIZE); /* for seeking */ |
| ! zmemzero(s->inbuf, Z_BUFSIZE); |
| ! } |
| ! while (offset > 0) { |
| ! uInt size = Z_BUFSIZE; |
| ! if (offset < Z_BUFSIZE) size = (uInt)offset; |
| ! |
| ! size = gzwrite(file, s->inbuf, size); |
| ! if (size == 0) return -1L; |
| ! |
| ! offset -= size; |
| ! } |
| ! return (z_off_t)s->stream.total_in; |
| #endif |
| } |
| /* Rest of function is for reading only */ |
| --- 700,733 ---- |
| gz_stream *s = (gz_stream*)file; |
| |
| if (s == NULL || whence == SEEK_END || |
| ! s->z_err == Z_ERRNO || s->z_err == Z_DATA_ERROR) { |
| ! return -1L; |
| } |
| |
| if (s->mode == 'w') { |
| #ifdef NO_DEFLATE |
| ! return -1L; |
| #else |
| ! if (whence == SEEK_SET) { |
| ! offset -= s->stream.total_in; |
| ! } |
| ! if (offset < 0) return -1L; |
| ! |
| ! /* At this point, offset is the number of zero bytes to write. */ |
| ! if (s->inbuf == Z_NULL) { |
| ! s->inbuf = (Byte*)ALLOC(Z_BUFSIZE); /* for seeking */ |
| ! zmemzero(s->inbuf, Z_BUFSIZE); |
| ! } |
| ! while (offset > 0) { |
| ! uInt size = Z_BUFSIZE; |
| ! if (offset < Z_BUFSIZE) size = (uInt)offset; |
| ! |
| ! size = gzwrite(file, s->inbuf, size); |
| ! if (size == 0) return -1L; |
| ! |
| ! offset -= size; |
| ! } |
| ! return (z_off_t)s->stream.total_in; |
| #endif |
| } |
| /* Rest of function is for reading only */ |
| *************** |
| *** 699,736 **** |
| |
| /* compute absolute position */ |
| if (whence == SEEK_CUR) { |
| ! offset += s->stream.total_out; |
| } |
| if (offset < 0) return -1L; |
| |
| if (s->transparent) { |
| ! /* map to fseek */ |
| ! s->stream.avail_in = 0; |
| ! s->stream.next_in = s->inbuf; |
| ! if (fseek(s->file, offset, SEEK_SET) < 0) return -1L; |
| |
| ! s->stream.total_in = s->stream.total_out = (uLong)offset; |
| ! return offset; |
| } |
| |
| /* For a negative seek, rewind and use positive seek */ |
| if ((uLong)offset >= s->stream.total_out) { |
| ! offset -= s->stream.total_out; |
| } else if (gzrewind(file) < 0) { |
| ! return -1L; |
| } |
| /* offset is now the number of bytes to skip. */ |
| |
| if (offset != 0 && s->outbuf == Z_NULL) { |
| ! s->outbuf = (Byte*)ALLOC(Z_BUFSIZE); |
| } |
| while (offset > 0) { |
| ! int size = Z_BUFSIZE; |
| ! if (offset < Z_BUFSIZE) size = (int)offset; |
| |
| ! size = gzread(file, s->outbuf, (uInt)size); |
| ! if (size <= 0) return -1L; |
| ! offset -= size; |
| } |
| return (z_off_t)s->stream.total_out; |
| } |
| --- 734,771 ---- |
| |
| /* compute absolute position */ |
| if (whence == SEEK_CUR) { |
| ! offset += s->stream.total_out; |
| } |
| if (offset < 0) return -1L; |
| |
| if (s->transparent) { |
| ! /* map to fseek */ |
| ! s->stream.avail_in = 0; |
| ! s->stream.next_in = s->inbuf; |
| ! if (SetFilePointer(s->file, offset, NULL, FILE_BEGIN) == 0xFFFFFFFF) return -1L; |
| |
| ! s->stream.total_in = s->stream.total_out = (uLong)offset; |
| ! return offset; |
| } |
| |
| /* For a negative seek, rewind and use positive seek */ |
| if ((uLong)offset >= s->stream.total_out) { |
| ! offset -= s->stream.total_out; |
| } else if (gzrewind(file) < 0) { |
| ! return -1L; |
| } |
| /* offset is now the number of bytes to skip. */ |
| |
| if (offset != 0 && s->outbuf == Z_NULL) { |
| ! s->outbuf = (Byte*)ALLOC(Z_BUFSIZE); |
| } |
| while (offset > 0) { |
| ! int size = Z_BUFSIZE; |
| ! if (offset < Z_BUFSIZE) size = (int)offset; |
| |
| ! size = gzread(file, s->outbuf, (uInt)size); |
| ! if (size <= 0) return -1L; |
| ! offset -= size; |
| } |
| return (z_off_t)s->stream.total_out; |
| } |
| *************** |
| *** 742,748 **** |
| gzFile file; |
| { |
| gz_stream *s = (gz_stream*)file; |
| ! |
| if (s == NULL || s->mode != 'r') return -1; |
| |
| s->z_err = Z_OK; |
| --- 777,783 ---- |
| gzFile file; |
| { |
| gz_stream *s = (gz_stream*)file; |
| ! |
| if (s == NULL || s->mode != 'r') return -1; |
| |
| s->z_err = Z_OK; |
| *************** |
| *** 750,763 **** |
| s->stream.avail_in = 0; |
| s->stream.next_in = s->inbuf; |
| s->crc = crc32(0L, Z_NULL, 0); |
| ! |
| if (s->startpos == 0) { /* not a compressed file */ |
| ! rewind(s->file); |
| ! return 0; |
| } |
| |
| (void) inflateReset(&s->stream); |
| ! return fseek(s->file, s->startpos, SEEK_SET); |
| } |
| |
| /* =========================================================================== |
| --- 785,798 ---- |
| s->stream.avail_in = 0; |
| s->stream.next_in = s->inbuf; |
| s->crc = crc32(0L, Z_NULL, 0); |
| ! |
| if (s->startpos == 0) { /* not a compressed file */ |
| ! SetFilePointer(s->file, 0, NULL, FILE_BEGIN); |
| ! return 0; |
| } |
| |
| (void) inflateReset(&s->stream); |
| ! return SetFilePointer(s->file, s->startpos, NULL, FILE_BEGIN); |
| } |
| |
| /* =========================================================================== |
| *************** |
| *** 787,798 **** |
| Outputs a long in LSB order to the given file |
| */ |
| local void putLong (file, x) |
| ! FILE *file; |
| uLong x; |
| { |
| int n; |
| for (n = 0; n < 4; n++) { |
| ! fputc((int)(x & 0xff), file); |
| x >>= 8; |
| } |
| } |
| --- 822,836 ---- |
| Outputs a long in LSB order to the given file |
| */ |
| local void putLong (file, x) |
| ! HANDLE file; |
| uLong x; |
| { |
| int n; |
| + char ch[1]; |
| + DWORD size; |
| for (n = 0; n < 4; n++) { |
| ! ch[0] = (int)(x & 0xff); |
| ! WriteFile(file, ch, 1, &size, NULL); |
| x >>= 8; |
| } |
| } |
| *************** |
| *** 810,816 **** |
| x += ((uLong)get_byte(s))<<8; |
| x += ((uLong)get_byte(s))<<16; |
| c = get_byte(s); |
| ! if (c == EOF) s->z_err = Z_DATA_ERROR; |
| x += ((uLong)c)<<24; |
| return x; |
| } |
| --- 848,854 ---- |
| x += ((uLong)get_byte(s))<<8; |
| x += ((uLong)get_byte(s))<<16; |
| c = get_byte(s); |
| ! if (c == -1) s->z_err = Z_DATA_ERROR; |
| x += ((uLong)c)<<24; |
| return x; |
| } |
| *************** |
| *** 829,835 **** |
| |
| if (s->mode == 'w') { |
| #ifdef NO_DEFLATE |
| ! return Z_STREAM_ERROR; |
| #else |
| err = do_flush (file, Z_FINISH); |
| if (err != Z_OK) return destroy((gz_stream*)file); |
| --- 867,873 ---- |
| |
| if (s->mode == 'w') { |
| #ifdef NO_DEFLATE |
| ! return Z_STREAM_ERROR; |
| #else |
| err = do_flush (file, Z_FINISH); |
| if (err != Z_OK) return destroy((gz_stream*)file); |
| *************** |
| *** 862,868 **** |
| *errnum = s->z_err; |
| if (*errnum == Z_OK) return (const char*)""; |
| |
| ! m = (char*)(*errnum == Z_ERRNO ? zstrerror(errno) : s->stream.msg); |
| |
| if (m == NULL || *m == '\0') m = (char*)ERR_MSG(s->z_err); |
| |
| --- 900,906 ---- |
| *errnum = s->z_err; |
| if (*errnum == Z_OK) return (const char*)""; |
| |
| ! m = (char*)(*errnum == Z_ERRNO ? zstrerror(GetLastError()) : s->stream.msg); |
| |
| if (m == NULL || *m == '\0') m = (char*)ERR_MSG(s->z_err); |
| |
| *** zlib113/minigzip.c Sat Jul 8 13:59:49 2000 |
| --- zlibwce/minigzip.c Sat Jul 8 13:58:29 2000 |
| *************** |
| *** 1,5 **** |
| --- 1,6 ---- |
| /* minigzip.c -- simulate gzip using the zlib compression library |
| * Copyright (C) 1995-1998 Jean-loup Gailly. |
| + * Copyright (C) 2000 Tenik Co.,Ltd. |
| * For conditions of distribution and use, see copyright notice in zlib.h |
| */ |
| |
| *************** |
| *** 15,21 **** |
| --- 16,30 ---- |
| |
| /* @(#) $Id$ */ |
| |
| + #if defined(_WIN32_WCE) |
| + #if _WIN32_WCE < 211 |
| + #error (f|w)printf functions is not support old WindowsCE. |
| + #endif |
| + #undef USE_MMAP |
| + #include <windows.h> |
| + #else |
| #include <stdio.h> |
| + #endif |
| #include "zlib.h" |
| |
| #ifdef STDC |
| *************** |
| *** 31,37 **** |
| # include <sys/stat.h> |
| #endif |
| |
| ! #if defined(MSDOS) || defined(OS2) || defined(WIN32) |
| # include <fcntl.h> |
| # include <io.h> |
| # define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY) |
| --- 40,46 ---- |
| # include <sys/stat.h> |
| #endif |
| |
| ! #if (defined(MSDOS) || defined(OS2) || defined(WIN32)) && !defined(_WIN32_WCE) |
| # include <fcntl.h> |
| # include <io.h> |
| # define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY) |
| *************** |
| *** 71,84 **** |
| # define local |
| #endif |
| |
| char *prog; |
| |
| void error OF((const char *msg)); |
| ! void gz_compress OF((FILE *in, gzFile out)); |
| #ifdef USE_MMAP |
| ! int gz_compress_mmap OF((FILE *in, gzFile out)); |
| #endif |
| ! void gz_uncompress OF((gzFile in, FILE *out)); |
| void file_compress OF((char *file, char *mode)); |
| void file_uncompress OF((char *file)); |
| int main OF((int argc, char *argv[])); |
| --- 80,103 ---- |
| # define local |
| #endif |
| |
| + #if defined(_WIN32_WCE) |
| + #undef stderr |
| + #define stderr stdout |
| + #define F_FILE HANDLE |
| + #define F_NULL INVALID_HANDLE_VALUE |
| + #else |
| + #define F_FILE FILE* |
| + #define F_NULL NULL |
| + #endif |
| + |
| char *prog; |
| |
| void error OF((const char *msg)); |
| ! void gz_compress OF((F_FILE in, gzFile out)); |
| #ifdef USE_MMAP |
| ! int gz_compress_mmap OF((F_FILE in, gzFile out)); |
| #endif |
| ! void gz_uncompress OF((gzFile in, F_FILE out)); |
| void file_compress OF((char *file, char *mode)); |
| void file_uncompress OF((char *file)); |
| int main OF((int argc, char *argv[])); |
| *************** |
| *** 93,104 **** |
| exit(1); |
| } |
| |
| /* =========================================================================== |
| * Compress input to output then close both files. |
| */ |
| |
| void gz_compress(in, out) |
| ! FILE *in; |
| gzFile out; |
| { |
| local char buf[BUFLEN]; |
| --- 112,160 ---- |
| exit(1); |
| } |
| |
| + #if defined(_WIN32_WCE) |
| + void perror(msg) |
| + const char *msg; |
| + { |
| + DWORD dwError; |
| + LPVOID lpMsgBuf; |
| + |
| + dwError = GetLastError(); |
| + if ( FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | |
| + FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_FROM_HMODULE | |
| + FORMAT_MESSAGE_IGNORE_INSERTS, |
| + NULL, |
| + dwError, |
| + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language |
| + (LPTSTR) &lpMsgBuf, |
| + 0, |
| + NULL) ) |
| + { |
| + wprintf(TEXT("%S: %s\n"), msg, (LPTSTR)lpMsgBuf); |
| + LocalFree(lpMsgBuf); |
| + } |
| + else |
| + { |
| + wprintf(TEXT("%S: Error #%d\n"), msg, dwError); |
| + } |
| + } |
| + |
| + int unlink(filename) |
| + const char *filename; |
| + { |
| + TCHAR path[MAX_PATH]; |
| + |
| + MultiByteToWideChar(CP_ACP, 0, filename, -1, path, MAX_PATH); |
| + return DeleteFile(path); |
| + } |
| + #endif |
| + |
| /* =========================================================================== |
| * Compress input to output then close both files. |
| */ |
| |
| void gz_compress(in, out) |
| ! F_FILE in; |
| gzFile out; |
| { |
| local char buf[BUFLEN]; |
| *************** |
| *** 112,119 **** |
| --- 168,179 ---- |
| if (gz_compress_mmap(in, out) == Z_OK) return; |
| #endif |
| for (;;) { |
| + #if defined(_WIN32_WCE) |
| + if (!ReadFile(in, buf, sizeof(buf), &len, NULL)) { |
| + #else |
| len = fread(buf, 1, sizeof(buf), in); |
| if (ferror(in)) { |
| + #endif |
| perror("fread"); |
| exit(1); |
| } |
| *************** |
| *** 121,127 **** |
| --- 181,191 ---- |
| |
| if (gzwrite(out, buf, (unsigned)len) != len) error(gzerror(out, &err)); |
| } |
| + #if defined(_WIN32_WCE) |
| + CloseHandle(in); |
| + #else |
| fclose(in); |
| + #endif |
| if (gzclose(out) != Z_OK) error("failed gzclose"); |
| } |
| |
| *************** |
| *** 131,137 **** |
| * if success, Z_ERRNO otherwise. |
| */ |
| int gz_compress_mmap(in, out) |
| ! FILE *in; |
| gzFile out; |
| { |
| int len; |
| --- 195,201 ---- |
| * if success, Z_ERRNO otherwise. |
| */ |
| int gz_compress_mmap(in, out) |
| ! F_FILE in; |
| gzFile out; |
| { |
| int len; |
| *************** |
| *** 167,177 **** |
| */ |
| void gz_uncompress(in, out) |
| gzFile in; |
| ! FILE *out; |
| { |
| local char buf[BUFLEN]; |
| int len; |
| int err; |
| |
| for (;;) { |
| len = gzread(in, buf, sizeof(buf)); |
| --- 231,244 ---- |
| */ |
| void gz_uncompress(in, out) |
| gzFile in; |
| ! F_FILE out; |
| { |
| local char buf[BUFLEN]; |
| int len; |
| int err; |
| + #if defined(_WIN32_WCE) |
| + int size; |
| + #endif |
| |
| for (;;) { |
| len = gzread(in, buf, sizeof(buf)); |
| *************** |
| *** 178,188 **** |
| if (len < 0) error (gzerror(in, &err)); |
| if (len == 0) break; |
| |
| if ((int)fwrite(buf, 1, (unsigned)len, out) != len) { |
| ! error("failed fwrite"); |
| ! } |
| } |
| if (fclose(out)) error("failed fclose"); |
| |
| if (gzclose(in) != Z_OK) error("failed gzclose"); |
| } |
| --- 245,263 ---- |
| if (len < 0) error (gzerror(in, &err)); |
| if (len == 0) break; |
| |
| + #if defined(_WIN32_WCE) |
| + if (!WriteFile(out, buf, (unsigned)len, &size, NULL) || size != len) { |
| + #else |
| if ((int)fwrite(buf, 1, (unsigned)len, out) != len) { |
| ! #endif |
| ! error("failed fwrite"); |
| ! } |
| } |
| + #if defined(_WIN32_WCE) |
| + if (!CloseHandle(out)) error("failed fclose"); |
| + #else |
| if (fclose(out)) error("failed fclose"); |
| + #endif |
| |
| if (gzclose(in) != Z_OK) error("failed gzclose"); |
| } |
| *************** |
| *** 197,215 **** |
| char *mode; |
| { |
| local char outfile[MAX_NAME_LEN]; |
| ! FILE *in; |
| gzFile out; |
| |
| strcpy(outfile, file); |
| strcat(outfile, GZ_SUFFIX); |
| |
| in = fopen(file, "rb"); |
| ! if (in == NULL) { |
| perror(file); |
| exit(1); |
| } |
| out = gzopen(outfile, mode); |
| ! if (out == NULL) { |
| fprintf(stderr, "%s: can't gzopen %s\n", prog, outfile); |
| exit(1); |
| } |
| --- 272,298 ---- |
| char *mode; |
| { |
| local char outfile[MAX_NAME_LEN]; |
| ! F_FILE in; |
| gzFile out; |
| + #if defined(_WIN32_WCE) |
| + TCHAR path[MAX_PATH]; |
| + #endif |
| |
| strcpy(outfile, file); |
| strcat(outfile, GZ_SUFFIX); |
| |
| + #if defined(_WIN32_WCE) |
| + MultiByteToWideChar(CP_ACP, 0, file, -1, path, MAX_PATH); |
| + in = CreateFile(path, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); |
| + #else |
| in = fopen(file, "rb"); |
| ! #endif |
| ! if (in == F_NULL) { |
| perror(file); |
| exit(1); |
| } |
| out = gzopen(outfile, mode); |
| ! if (out == F_NULL) { |
| fprintf(stderr, "%s: can't gzopen %s\n", prog, outfile); |
| exit(1); |
| } |
| *************** |
| *** 227,235 **** |
| { |
| local char buf[MAX_NAME_LEN]; |
| char *infile, *outfile; |
| ! FILE *out; |
| gzFile in; |
| int len = strlen(file); |
| |
| strcpy(buf, file); |
| |
| --- 310,321 ---- |
| { |
| local char buf[MAX_NAME_LEN]; |
| char *infile, *outfile; |
| ! F_FILE out; |
| gzFile in; |
| int len = strlen(file); |
| + #if defined(_WIN32_WCE) |
| + TCHAR path[MAX_PATH]; |
| + #endif |
| |
| strcpy(buf, file); |
| |
| *************** |
| *** 243,254 **** |
| strcat(infile, GZ_SUFFIX); |
| } |
| in = gzopen(infile, "rb"); |
| ! if (in == NULL) { |
| fprintf(stderr, "%s: can't gzopen %s\n", prog, infile); |
| exit(1); |
| } |
| out = fopen(outfile, "wb"); |
| ! if (out == NULL) { |
| perror(file); |
| exit(1); |
| } |
| --- 329,345 ---- |
| strcat(infile, GZ_SUFFIX); |
| } |
| in = gzopen(infile, "rb"); |
| ! if (in == F_NULL) { |
| fprintf(stderr, "%s: can't gzopen %s\n", prog, infile); |
| exit(1); |
| } |
| + #if defined(_WIN32_WCE) |
| + MultiByteToWideChar(CP_ACP, 0, outfile, -1, path, MAX_PATH); |
| + out = CreateFile(path, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL); |
| + #else |
| out = fopen(outfile, "wb"); |
| ! #endif |
| ! if (out == F_NULL) { |
| perror(file); |
| exit(1); |
| } |
| *************** |
| *** 272,278 **** |
| --- 363,371 ---- |
| char *argv[]; |
| { |
| int uncompr = 0; |
| + #if !defined(_WIN32_WCE) |
| gzFile file; |
| + #endif |
| char outmode[20]; |
| |
| strcpy(outmode, "wb6 "); |
| *************** |
| *** 282,300 **** |
| |
| while (argc > 0) { |
| if (strcmp(*argv, "-d") == 0) |
| ! uncompr = 1; |
| else if (strcmp(*argv, "-f") == 0) |
| ! outmode[3] = 'f'; |
| else if (strcmp(*argv, "-h") == 0) |
| ! outmode[3] = 'h'; |
| else if ((*argv)[0] == '-' && (*argv)[1] >= '1' && (*argv)[1] <= '9' && |
| ! (*argv)[2] == 0) |
| ! outmode[2] = (*argv)[1]; |
| else |
| ! break; |
| argc--, argv++; |
| } |
| if (argc == 0) { |
| SET_BINARY_MODE(stdin); |
| SET_BINARY_MODE(stdout); |
| if (uncompr) { |
| --- 375,400 ---- |
| |
| while (argc > 0) { |
| if (strcmp(*argv, "-d") == 0) |
| ! uncompr = 1; |
| else if (strcmp(*argv, "-f") == 0) |
| ! outmode[3] = 'f'; |
| else if (strcmp(*argv, "-h") == 0) |
| ! outmode[3] = 'h'; |
| else if ((*argv)[0] == '-' && (*argv)[1] >= '1' && (*argv)[1] <= '9' && |
| ! (*argv)[2] == 0) |
| ! outmode[2] = (*argv)[1]; |
| else |
| ! break; |
| argc--, argv++; |
| } |
| if (argc == 0) { |
| + #if defined(_WIN32_WCE) |
| + wprintf(TEXT("Usage: minigzip [-d] [-f] [-h] [-1 to -9] [files...]\n")); |
| + wprintf(TEXT(" -d : decompress\n")); |
| + wprintf(TEXT(" -f : compress with Z_FILTERED\n")); |
| + wprintf(TEXT(" -h : compress with Z_HUFFMAN_ONLY\n")); |
| + wprintf(TEXT(" -1 to -9 : compression level\n")); |
| + #else |
| SET_BINARY_MODE(stdin); |
| SET_BINARY_MODE(stdout); |
| if (uncompr) { |
| *************** |
| *** 306,311 **** |
| --- 406,412 ---- |
| if (file == NULL) error("can't gzdopen stdout"); |
| gz_compress(stdin, file); |
| } |
| + #endif |
| } else { |
| do { |
| if (uncompr) { |
| *************** |
| *** 318,320 **** |
| --- 419,457 ---- |
| exit(0); |
| return 0; /* to avoid warning */ |
| } |
| + |
| + #if defined(_WIN32_WCE) |
| + int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPWSTR lpszCmdLine, int nCmdShow) |
| + { |
| + #define SIZE_ARGV (32) |
| + int argc; |
| + char *argv[SIZE_ARGV]; |
| + int size; |
| + char *buff; |
| + char *argp; |
| + |
| + size = WideCharToMultiByte(CP_ACP, 0, lpszCmdLine, -1, NULL, 0, NULL, NULL); |
| + buff = (char *)malloc(size); |
| + size = WideCharToMultiByte(CP_ACP, 0, lpszCmdLine, -1, buff, size, NULL, NULL); |
| + argp = buff; |
| + argc = 0; |
| + argv[argc++] = "minigzip.exe"; |
| + if (*argp) { |
| + argv[argc++] = argp; |
| + while (*argp) { |
| + if (*argp == ' ') { |
| + *argp++ = '\0'; |
| + while (*argp && *argp == ' ') { |
| + argp++; |
| + } |
| + if (*argp && argc < SIZE_ARGV) { |
| + argv[argc++] = argp; |
| + } |
| + } else { |
| + argp++; |
| + } |
| + } |
| + } |
| + return main(argc, argv); |
| + } |
| + #endif |
| *** zlib113/example.c Sat Jul 8 13:59:49 2000 |
| --- zlibwce/example.c Sat Jul 8 13:58:29 2000 |
| *************** |
| *** 1,11 **** |
| --- 1,19 ---- |
| /* example.c -- usage example of the zlib compression library |
| * Copyright (C) 1995-1998 Jean-loup Gailly. |
| + * Copyright (C) 2000 Tenik Co.,Ltd. |
| * For conditions of distribution and use, see copyright notice in zlib.h |
| */ |
| |
| /* @(#) $Id$ */ |
| |
| + #if defined(_WIN32_WCE) |
| + #if _WIN32_WCE < 211 |
| + #error (f|w)printf functions is not support old WindowsCE. |
| + #endif |
| + #include <windows.h> |
| + #else |
| #include <stdio.h> |
| + #endif |
| #include "zlib.h" |
| |
| #ifdef STDC |
| *************** |
| *** 21,26 **** |
| --- 29,43 ---- |
| # define TESTFILE "foo.gz" |
| #endif |
| |
| + #if defined(_WIN32_WCE) |
| + #define calloc(x,y) malloc((x)*(y)) |
| + #undef stderr |
| + #define stderr stdout |
| + #define F_NULL INVALID_HANDLE_VALUE |
| + #else |
| + #define F_NULL NULL |
| + #endif |
| + |
| #define CHECK_ERR(err, msg) { \ |
| if (err != Z_OK) { \ |
| fprintf(stderr, "%s error: %d\n", msg, err); \ |
| *************** |
| *** 37,58 **** |
| uLong dictId; /* Adler32 value of the dictionary */ |
| |
| void test_compress OF((Byte *compr, uLong comprLen, |
| ! Byte *uncompr, uLong uncomprLen)); |
| void test_gzio OF((const char *out, const char *in, |
| ! Byte *uncompr, int uncomprLen)); |
| void test_deflate OF((Byte *compr, uLong comprLen)); |
| void test_inflate OF((Byte *compr, uLong comprLen, |
| ! Byte *uncompr, uLong uncomprLen)); |
| void test_large_deflate OF((Byte *compr, uLong comprLen, |
| ! Byte *uncompr, uLong uncomprLen)); |
| void test_large_inflate OF((Byte *compr, uLong comprLen, |
| ! Byte *uncompr, uLong uncomprLen)); |
| void test_flush OF((Byte *compr, uLong *comprLen)); |
| void test_sync OF((Byte *compr, uLong comprLen, |
| ! Byte *uncompr, uLong uncomprLen)); |
| void test_dict_deflate OF((Byte *compr, uLong comprLen)); |
| void test_dict_inflate OF((Byte *compr, uLong comprLen, |
| ! Byte *uncompr, uLong uncomprLen)); |
| int main OF((int argc, char *argv[])); |
| |
| /* =========================================================================== |
| --- 54,75 ---- |
| uLong dictId; /* Adler32 value of the dictionary */ |
| |
| void test_compress OF((Byte *compr, uLong comprLen, |
| ! Byte *uncompr, uLong uncomprLen)); |
| void test_gzio OF((const char *out, const char *in, |
| ! Byte *uncompr, int uncomprLen)); |
| void test_deflate OF((Byte *compr, uLong comprLen)); |
| void test_inflate OF((Byte *compr, uLong comprLen, |
| ! Byte *uncompr, uLong uncomprLen)); |
| void test_large_deflate OF((Byte *compr, uLong comprLen, |
| ! Byte *uncompr, uLong uncomprLen)); |
| void test_large_inflate OF((Byte *compr, uLong comprLen, |
| ! Byte *uncompr, uLong uncomprLen)); |
| void test_flush OF((Byte *compr, uLong *comprLen)); |
| void test_sync OF((Byte *compr, uLong comprLen, |
| ! Byte *uncompr, uLong uncomprLen)); |
| void test_dict_deflate OF((Byte *compr, uLong comprLen)); |
| void test_dict_inflate OF((Byte *compr, uLong comprLen, |
| ! Byte *uncompr, uLong uncomprLen)); |
| int main OF((int argc, char *argv[])); |
| |
| /* =========================================================================== |
| *************** |
| *** 75,81 **** |
| |
| if (strcmp((char*)uncompr, hello)) { |
| fprintf(stderr, "bad uncompress\n"); |
| ! exit(1); |
| } else { |
| printf("uncompress(): %s\n", (char *)uncompr); |
| } |
| --- 92,98 ---- |
| |
| if (strcmp((char*)uncompr, hello)) { |
| fprintf(stderr, "bad uncompress\n"); |
| ! exit(1); |
| } else { |
| printf("uncompress(): %s\n", (char *)uncompr); |
| } |
| *************** |
| *** 96,102 **** |
| z_off_t pos; |
| |
| file = gzopen(out, "wb"); |
| ! if (file == NULL) { |
| fprintf(stderr, "gzopen error\n"); |
| exit(1); |
| } |
| --- 113,119 ---- |
| z_off_t pos; |
| |
| file = gzopen(out, "wb"); |
| ! if (file == F_NULL) { |
| fprintf(stderr, "gzopen error\n"); |
| exit(1); |
| } |
| *************** |
| *** 103,119 **** |
| gzputc(file, 'h'); |
| if (gzputs(file, "ello") != 4) { |
| fprintf(stderr, "gzputs err: %s\n", gzerror(file, &err)); |
| ! exit(1); |
| } |
| if (gzprintf(file, ", %s!", "hello") != 8) { |
| fprintf(stderr, "gzprintf err: %s\n", gzerror(file, &err)); |
| ! exit(1); |
| } |
| gzseek(file, 1L, SEEK_CUR); /* add one zero byte */ |
| gzclose(file); |
| |
| file = gzopen(in, "rb"); |
| ! if (file == NULL) { |
| fprintf(stderr, "gzopen error\n"); |
| } |
| strcpy((char*)uncompr, "garbage"); |
| --- 120,136 ---- |
| gzputc(file, 'h'); |
| if (gzputs(file, "ello") != 4) { |
| fprintf(stderr, "gzputs err: %s\n", gzerror(file, &err)); |
| ! exit(1); |
| } |
| if (gzprintf(file, ", %s!", "hello") != 8) { |
| fprintf(stderr, "gzprintf err: %s\n", gzerror(file, &err)); |
| ! exit(1); |
| } |
| gzseek(file, 1L, SEEK_CUR); /* add one zero byte */ |
| gzclose(file); |
| |
| file = gzopen(in, "rb"); |
| ! if (file == F_NULL) { |
| fprintf(stderr, "gzopen error\n"); |
| } |
| strcpy((char*)uncompr, "garbage"); |
| *************** |
| *** 121,131 **** |
| uncomprLen = gzread(file, uncompr, (unsigned)uncomprLen); |
| if (uncomprLen != len) { |
| fprintf(stderr, "gzread err: %s\n", gzerror(file, &err)); |
| ! exit(1); |
| } |
| if (strcmp((char*)uncompr, hello)) { |
| fprintf(stderr, "bad gzread: %s\n", (char*)uncompr); |
| ! exit(1); |
| } else { |
| printf("gzread(): %s\n", (char *)uncompr); |
| } |
| --- 138,148 ---- |
| uncomprLen = gzread(file, uncompr, (unsigned)uncomprLen); |
| if (uncomprLen != len) { |
| fprintf(stderr, "gzread err: %s\n", gzerror(file, &err)); |
| ! exit(1); |
| } |
| if (strcmp((char*)uncompr, hello)) { |
| fprintf(stderr, "bad gzread: %s\n", (char*)uncompr); |
| ! exit(1); |
| } else { |
| printf("gzread(): %s\n", (char *)uncompr); |
| } |
| *************** |
| *** 132,145 **** |
| |
| pos = gzseek(file, -8L, SEEK_CUR); |
| if (pos != 6 || gztell(file) != pos) { |
| ! fprintf(stderr, "gzseek error, pos=%ld, gztell=%ld\n", |
| ! (long)pos, (long)gztell(file)); |
| ! exit(1); |
| } |
| |
| if (gzgetc(file) != ' ') { |
| ! fprintf(stderr, "gzgetc error\n"); |
| ! exit(1); |
| } |
| |
| gzgets(file, (char*)uncompr, uncomprLen); |
| --- 149,162 ---- |
| |
| pos = gzseek(file, -8L, SEEK_CUR); |
| if (pos != 6 || gztell(file) != pos) { |
| ! fprintf(stderr, "gzseek error, pos=%ld, gztell=%ld\n", |
| ! (long)pos, (long)gztell(file)); |
| ! exit(1); |
| } |
| |
| if (gzgetc(file) != ' ') { |
| ! fprintf(stderr, "gzgetc error\n"); |
| ! exit(1); |
| } |
| |
| gzgets(file, (char*)uncompr, uncomprLen); |
| *************** |
| *** 146,156 **** |
| uncomprLen = strlen((char*)uncompr); |
| if (uncomprLen != 6) { /* "hello!" */ |
| fprintf(stderr, "gzgets err after gzseek: %s\n", gzerror(file, &err)); |
| ! exit(1); |
| } |
| if (strcmp((char*)uncompr, hello+7)) { |
| fprintf(stderr, "bad gzgets after gzseek\n"); |
| ! exit(1); |
| } else { |
| printf("gzgets() after gzseek: %s\n", (char *)uncompr); |
| } |
| --- 163,173 ---- |
| uncomprLen = strlen((char*)uncompr); |
| if (uncomprLen != 6) { /* "hello!" */ |
| fprintf(stderr, "gzgets err after gzseek: %s\n", gzerror(file, &err)); |
| ! exit(1); |
| } |
| if (strcmp((char*)uncompr, hello+7)) { |
| fprintf(stderr, "bad gzgets after gzseek\n"); |
| ! exit(1); |
| } else { |
| printf("gzgets() after gzseek: %s\n", (char *)uncompr); |
| } |
| *************** |
| *** 231,237 **** |
| |
| if (strcmp((char*)uncompr, hello)) { |
| fprintf(stderr, "bad inflate\n"); |
| ! exit(1); |
| } else { |
| printf("inflate(): %s\n", (char *)uncompr); |
| } |
| --- 248,254 ---- |
| |
| if (strcmp((char*)uncompr, hello)) { |
| fprintf(stderr, "bad inflate\n"); |
| ! exit(1); |
| } else { |
| printf("inflate(): %s\n", (char *)uncompr); |
| } |
| *************** |
| *** 266,272 **** |
| CHECK_ERR(err, "deflate"); |
| if (c_stream.avail_in != 0) { |
| fprintf(stderr, "deflate not greedy\n"); |
| ! exit(1); |
| } |
| |
| /* Feed in already compressed data and switch to no compression: */ |
| --- 283,289 ---- |
| CHECK_ERR(err, "deflate"); |
| if (c_stream.avail_in != 0) { |
| fprintf(stderr, "deflate not greedy\n"); |
| ! exit(1); |
| } |
| |
| /* Feed in already compressed data and switch to no compression: */ |
| *************** |
| *** 286,292 **** |
| err = deflate(&c_stream, Z_FINISH); |
| if (err != Z_STREAM_END) { |
| fprintf(stderr, "deflate should report Z_STREAM_END\n"); |
| ! exit(1); |
| } |
| err = deflateEnd(&c_stream); |
| CHECK_ERR(err, "deflateEnd"); |
| --- 303,309 ---- |
| err = deflate(&c_stream, Z_FINISH); |
| if (err != Z_STREAM_END) { |
| fprintf(stderr, "deflate should report Z_STREAM_END\n"); |
| ! exit(1); |
| } |
| err = deflateEnd(&c_stream); |
| CHECK_ERR(err, "deflateEnd"); |
| *************** |
| *** 316,322 **** |
| |
| for (;;) { |
| d_stream.next_out = uncompr; /* discard the output */ |
| ! d_stream.avail_out = (uInt)uncomprLen; |
| err = inflate(&d_stream, Z_NO_FLUSH); |
| if (err == Z_STREAM_END) break; |
| CHECK_ERR(err, "large inflate"); |
| --- 333,339 ---- |
| |
| for (;;) { |
| d_stream.next_out = uncompr; /* discard the output */ |
| ! d_stream.avail_out = (uInt)uncomprLen; |
| err = inflate(&d_stream, Z_NO_FLUSH); |
| if (err == Z_STREAM_END) break; |
| CHECK_ERR(err, "large inflate"); |
| *************** |
| *** 327,333 **** |
| |
| if (d_stream.total_out != 2*uncomprLen + comprLen/2) { |
| fprintf(stderr, "bad large inflate: %ld\n", d_stream.total_out); |
| ! exit(1); |
| } else { |
| printf("large_inflate(): OK\n"); |
| } |
| --- 344,350 ---- |
| |
| if (d_stream.total_out != 2*uncomprLen + comprLen/2) { |
| fprintf(stderr, "bad large inflate: %ld\n", d_stream.total_out); |
| ! exit(1); |
| } else { |
| printf("large_inflate(): OK\n"); |
| } |
| *************** |
| *** 407,413 **** |
| if (err != Z_DATA_ERROR) { |
| fprintf(stderr, "inflate should report DATA_ERROR\n"); |
| /* Because of incorrect adler32 */ |
| ! exit(1); |
| } |
| err = inflateEnd(&d_stream); |
| CHECK_ERR(err, "inflateEnd"); |
| --- 424,430 ---- |
| if (err != Z_DATA_ERROR) { |
| fprintf(stderr, "inflate should report DATA_ERROR\n"); |
| /* Because of incorrect adler32 */ |
| ! exit(1); |
| } |
| err = inflateEnd(&d_stream); |
| CHECK_ERR(err, "inflateEnd"); |
| *************** |
| *** 433,439 **** |
| CHECK_ERR(err, "deflateInit"); |
| |
| err = deflateSetDictionary(&c_stream, |
| ! (const Bytef*)dictionary, sizeof(dictionary)); |
| CHECK_ERR(err, "deflateSetDictionary"); |
| |
| dictId = c_stream.adler; |
| --- 450,456 ---- |
| CHECK_ERR(err, "deflateInit"); |
| |
| err = deflateSetDictionary(&c_stream, |
| ! (const Bytef*)dictionary, sizeof(dictionary)); |
| CHECK_ERR(err, "deflateSetDictionary"); |
| |
| dictId = c_stream.adler; |
| *************** |
| *** 446,452 **** |
| err = deflate(&c_stream, Z_FINISH); |
| if (err != Z_STREAM_END) { |
| fprintf(stderr, "deflate should report Z_STREAM_END\n"); |
| ! exit(1); |
| } |
| err = deflateEnd(&c_stream); |
| CHECK_ERR(err, "deflateEnd"); |
| --- 463,469 ---- |
| err = deflate(&c_stream, Z_FINISH); |
| if (err != Z_STREAM_END) { |
| fprintf(stderr, "deflate should report Z_STREAM_END\n"); |
| ! exit(1); |
| } |
| err = deflateEnd(&c_stream); |
| CHECK_ERR(err, "deflateEnd"); |
| *************** |
| *** 480,493 **** |
| for (;;) { |
| err = inflate(&d_stream, Z_NO_FLUSH); |
| if (err == Z_STREAM_END) break; |
| ! if (err == Z_NEED_DICT) { |
| ! if (d_stream.adler != dictId) { |
| ! fprintf(stderr, "unexpected dictionary"); |
| ! exit(1); |
| ! } |
| ! err = inflateSetDictionary(&d_stream, (const Bytef*)dictionary, |
| ! sizeof(dictionary)); |
| ! } |
| CHECK_ERR(err, "inflate with dict"); |
| } |
| |
| --- 497,510 ---- |
| for (;;) { |
| err = inflate(&d_stream, Z_NO_FLUSH); |
| if (err == Z_STREAM_END) break; |
| ! if (err == Z_NEED_DICT) { |
| ! if (d_stream.adler != dictId) { |
| ! fprintf(stderr, "unexpected dictionary"); |
| ! exit(1); |
| ! } |
| ! err = inflateSetDictionary(&d_stream, (const Bytef*)dictionary, |
| ! sizeof(dictionary)); |
| ! } |
| CHECK_ERR(err, "inflate with dict"); |
| } |
| |
| *************** |
| *** 496,502 **** |
| |
| if (strcmp((char*)uncompr, hello)) { |
| fprintf(stderr, "bad inflate with dict\n"); |
| ! exit(1); |
| } else { |
| printf("inflate with dictionary: %s\n", (char *)uncompr); |
| } |
| --- 513,519 ---- |
| |
| if (strcmp((char*)uncompr, hello)) { |
| fprintf(stderr, "bad inflate with dict\n"); |
| ! exit(1); |
| } else { |
| printf("inflate with dictionary: %s\n", (char *)uncompr); |
| } |
| *************** |
| *** 530,542 **** |
| */ |
| if (compr == Z_NULL || uncompr == Z_NULL) { |
| printf("out of memory\n"); |
| ! exit(1); |
| } |
| test_compress(compr, comprLen, uncompr, uncomprLen); |
| |
| test_gzio((argc > 1 ? argv[1] : TESTFILE), |
| (argc > 2 ? argv[2] : TESTFILE), |
| ! uncompr, (int)uncomprLen); |
| |
| test_deflate(compr, comprLen); |
| test_inflate(compr, comprLen, uncompr, uncomprLen); |
| --- 547,559 ---- |
| */ |
| if (compr == Z_NULL || uncompr == Z_NULL) { |
| printf("out of memory\n"); |
| ! exit(1); |
| } |
| test_compress(compr, comprLen, uncompr, uncomprLen); |
| |
| test_gzio((argc > 1 ? argv[1] : TESTFILE), |
| (argc > 2 ? argv[2] : TESTFILE), |
| ! uncompr, (int)uncomprLen); |
| |
| test_deflate(compr, comprLen); |
| test_inflate(compr, comprLen, uncompr, uncomprLen); |
| *************** |
| *** 554,556 **** |
| --- 571,609 ---- |
| exit(0); |
| return 0; /* to avoid warning */ |
| } |
| + |
| + #if defined(_WIN32_WCE) |
| + int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPWSTR lpszCmdLine, int nCmdShow) |
| + { |
| + #define SIZE_ARGV (32) |
| + int argc; |
| + char *argv[SIZE_ARGV]; |
| + int size; |
| + char *buff; |
| + char *argp; |
| + |
| + size = WideCharToMultiByte(CP_ACP, 0, lpszCmdLine, -1, NULL, 0, NULL, NULL); |
| + buff = (char *)malloc(size); |
| + size = WideCharToMultiByte(CP_ACP, 0, lpszCmdLine, -1, buff, size, NULL, NULL); |
| + argp = buff; |
| + argc = 0; |
| + argv[argc++] = "example.exe"; |
| + if (*argp) { |
| + argv[argc++] = argp; |
| + while (*argp) { |
| + if (*argp == ' ') { |
| + *argp++ = '\0'; |
| + while (*argp && *argp == ' ') { |
| + argp++; |
| + } |
| + if (*argp && argc < SIZE_ARGV) { |
| + argv[argc++] = argp; |
| + } |
| + } else { |
| + argp++; |
| + } |
| + } |
| + } |
| + return main(argc, argv); |
| + } |
| + #endif |