blob: 66ed29f134fb2cb4793a2956c95ccee446ea0511 [file] [log] [blame]
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