diff options
Diffstat (limited to 'projects/wince/zlib.diff')
-rw-r--r-- | projects/wince/zlib.diff | 2168 |
1 files changed, 2168 insertions, 0 deletions
diff --git a/projects/wince/zlib.diff b/projects/wince/zlib.diff new file mode 100644 index 000000000..66ed29f13 --- /dev/null +++ b/projects/wince/zlib.diff @@ -0,0 +1,2168 @@ +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 |