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: qt/src/3rdparty/libpng/projects/wince/zlib.diff   2.3.7   edited 2001-02-07 $ */
  
! #include <stdio.h>
  
  #include "zutil.h"
  
--- 8,14 ----
  
  /* @(#) $Id: qt/src/3rdparty/libpng/projects/wince/zlib.diff   2.3.7   edited 2001-02-07 $ */
  
! #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: qt/src/3rdparty/libpng/projects/wince/zlib.diff   2.3.7   edited 2001-02-07 $ */
  
+ #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: qt/src/3rdparty/libpng/projects/wince/zlib.diff   2.3.7   edited 2001-02-07 $ */
  
+ #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
