diff options
| author | Kirill Volinsky <mataes2007@gmail.com> | 2013-08-05 06:10:16 +0000 | 
|---|---|---|
| committer | Kirill Volinsky <mataes2007@gmail.com> | 2013-08-05 06:10:16 +0000 | 
| commit | 771947f7607661e13357caebb7c2b27dc474be88 (patch) | |
| tree | 5f6fa6ac96082df8d29f43504965c405cf7afaa2 /plugins/Zlib | |
| parent | cfe8ca0a75ce9dcb2044e6e17f40b294f35d6366 (diff) | |
zlib update to 1.2.8
git-svn-id: http://svn.miranda-ng.org/main/trunk@5582 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/Zlib')
| -rw-r--r-- | plugins/Zlib/res/zlib.rc | 2 | ||||
| -rw-r--r-- | plugins/Zlib/src/compress.c | 2 | ||||
| -rw-r--r-- | plugins/Zlib/src/deflate.c | 12 | ||||
| -rw-r--r-- | plugins/Zlib/src/deflate.h | 2 | ||||
| -rw-r--r-- | plugins/Zlib/src/gzguts.h | 22 | ||||
| -rw-r--r-- | plugins/Zlib/src/gzlib.c | 40 | ||||
| -rw-r--r-- | plugins/Zlib/src/gzread.c | 25 | ||||
| -rw-r--r-- | plugins/Zlib/src/gzwrite.c | 70 | ||||
| -rw-r--r-- | plugins/Zlib/src/infback.c | 2 | ||||
| -rw-r--r-- | plugins/Zlib/src/inffast.c | 6 | ||||
| -rw-r--r-- | plugins/Zlib/src/inflate.c | 64 | ||||
| -rw-r--r-- | plugins/Zlib/src/inftrees.c | 14 | ||||
| -rw-r--r-- | plugins/Zlib/src/trees.c | 14 | ||||
| -rw-r--r-- | plugins/Zlib/src/uncompr.c | 2 | ||||
| -rw-r--r-- | plugins/Zlib/src/zconf.h | 33 | ||||
| -rw-r--r-- | plugins/Zlib/src/zlib.def | 2 | ||||
| -rw-r--r-- | plugins/Zlib/src/zlib.h | 48 | ||||
| -rw-r--r-- | plugins/Zlib/src/zutil.c | 2 | ||||
| -rw-r--r-- | plugins/Zlib/src/zutil.h | 11 | 
19 files changed, 236 insertions, 137 deletions
| diff --git a/plugins/Zlib/res/zlib.rc b/plugins/Zlib/res/zlib.rc index 78853d3024..fe7ee18283 100644 --- a/plugins/Zlib/res/zlib.rc +++ b/plugins/Zlib/res/zlib.rc @@ -26,7 +26,7 @@ BEGIN        VALUE "FileDescription",	"zlib data compression library\0"        VALUE "FileVersion",	ZLIB_VERSION "\0"        VALUE "InternalName",	"zlib1.dll\0" -      VALUE "LegalCopyright",	"(C) 1995-2012 Jean-loup Gailly & Mark Adler\0" +      VALUE "LegalCopyright",	"(C) 1995-2013 Jean-loup Gailly & Mark Adler\0"        VALUE "OriginalFilename",	"zlib1.dll\0"        VALUE "ProductName",	"zlib\0"        VALUE "ProductVersion",	ZLIB_VERSION "\0" diff --git a/plugins/Zlib/src/compress.c b/plugins/Zlib/src/compress.c index ea4dfbe9d7..6e9762676a 100644 --- a/plugins/Zlib/src/compress.c +++ b/plugins/Zlib/src/compress.c @@ -29,7 +29,7 @@ int ZEXPORT compress2 (dest, destLen, source, sourceLen, level)      z_stream stream;      int err; -    stream.next_in = (Bytef*)source; +    stream.next_in = (z_const Bytef *)source;      stream.avail_in = (uInt)sourceLen;  #ifdef MAXSEG_64K      /* Check for source > 64K on 16-bit machine: */ diff --git a/plugins/Zlib/src/deflate.c b/plugins/Zlib/src/deflate.c index 9e4c2cbc8a..696957705b 100644 --- a/plugins/Zlib/src/deflate.c +++ b/plugins/Zlib/src/deflate.c @@ -1,5 +1,5 @@  /* deflate.c -- compress data using the deflation algorithm - * Copyright (C) 1995-2012 Jean-loup Gailly and Mark Adler + * Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler   * For conditions of distribution and use, see copyright notice in zlib.h   */ @@ -52,7 +52,7 @@  #include "deflate.h"  const char deflate_copyright[] = -   " deflate 1.2.7 Copyright 1995-2012 Jean-loup Gailly and Mark Adler "; +   " deflate 1.2.8 Copyright 1995-2013 Jean-loup Gailly and Mark Adler ";  /*    If you use the zlib library in a product, an acknowledgment is welcome    in the documentation of your product. If for some reason you cannot @@ -305,7 +305,7 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,      if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL ||          s->pending_buf == Z_NULL) {          s->status = FINISH_STATE; -        strm->msg = (char*)ERR_MSG(Z_MEM_ERROR); +        strm->msg = ERR_MSG(Z_MEM_ERROR);          deflateEnd (strm);          return Z_MEM_ERROR;      } @@ -329,7 +329,7 @@ int ZEXPORT deflateSetDictionary (strm, dictionary, dictLength)      uInt str, n;      int wrap;      unsigned avail; -    unsigned char *next; +    z_const unsigned char *next;      if (strm == Z_NULL || strm->state == Z_NULL || dictionary == Z_NULL)          return Z_STREAM_ERROR; @@ -359,7 +359,7 @@ int ZEXPORT deflateSetDictionary (strm, dictionary, dictLength)      avail = strm->avail_in;      next = strm->next_in;      strm->avail_in = dictLength; -    strm->next_in = (Bytef *)dictionary; +    strm->next_in = (z_const Bytef *)dictionary;      fill_window(s);      while (s->lookahead >= MIN_MATCH) {          str = s->strstart; @@ -513,6 +513,8 @@ int ZEXPORT deflateParams(strm, level, strategy)          strm->total_in != 0) {          /* Flush the last buffer: */          err = deflate(strm, Z_BLOCK); +        if (err == Z_BUF_ERROR && s->pending == 0) +            err = Z_OK;      }      if (s->level != level) {          s->level = level; diff --git a/plugins/Zlib/src/deflate.h b/plugins/Zlib/src/deflate.h index fbac44d908..ce0299edd1 100644 --- a/plugins/Zlib/src/deflate.h +++ b/plugins/Zlib/src/deflate.h @@ -104,7 +104,7 @@ typedef struct internal_state {      int   wrap;          /* bit 0 true for zlib, bit 1 true for gzip */      gz_headerp  gzhead;  /* gzip header information to write */      uInt   gzindex;      /* where in extra, name, or comment */ -    Byte  method;        /* STORED (for zip only) or DEFLATED */ +    Byte  method;        /* can only be DEFLATED */      int   last_flush;    /* value of flush param for previous deflate call */                  /* used by deflate.c: */ diff --git a/plugins/Zlib/src/gzguts.h b/plugins/Zlib/src/gzguts.h index ee3f281aa5..d87659d031 100644 --- a/plugins/Zlib/src/gzguts.h +++ b/plugins/Zlib/src/gzguts.h @@ -1,5 +1,5 @@  /* gzguts.h -- zlib internal header definitions for gz* operations - * Copyright (C) 2004, 2005, 2010, 2011, 2012 Mark Adler + * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013 Mark Adler   * For conditions of distribution and use, see copyright notice in zlib.h   */ @@ -35,6 +35,13 @@  #  include <io.h>  #endif +#ifdef WINAPI_FAMILY +#  define open _open +#  define read _read +#  define write _write +#  define close _close +#endif +  #ifdef NO_DEFLATE       /* for compatibility with old definition */  #  define NO_GZCOMPRESS  #endif @@ -60,7 +67,7 @@  #ifndef HAVE_VSNPRINTF  #  ifdef MSDOS  /* vsnprintf may exist on some MS-DOS compilers (DJGPP?), - but for now we just assume it doesn't. */ +   but for now we just assume it doesn't. */  #    define NO_vsnprintf  #  endif  #  ifdef __TURBOC__ @@ -88,6 +95,14 @@  #  endif  #endif +/* unlike snprintf (which is required in C99, yet still not supported by +   Microsoft more than a decade later!), _snprintf does not guarantee null +   termination of the result -- however this is only used in gzlib.c where +   the result is assured to fit in the space provided */ +#ifdef _MSC_VER +#  define snprintf _snprintf +#endif +  #ifndef local  #  define local static  #endif @@ -127,7 +142,8 @@  #  define DEF_MEM_LEVEL  MAX_MEM_LEVEL  #endif -/* default i/o buffer size -- double this for output when reading */ +/* default i/o buffer size -- double this for output when reading (this and +   twice this must be able to fit in an unsigned type) */  #define GZBUFSIZE 8192  /* gzip modes, also provide a little integrity check on the passed structure */ diff --git a/plugins/Zlib/src/gzlib.c b/plugins/Zlib/src/gzlib.c index fbd5faea85..fae202ef89 100644 --- a/plugins/Zlib/src/gzlib.c +++ b/plugins/Zlib/src/gzlib.c @@ -1,5 +1,5 @@  /* gzlib.c -- zlib functions common to reading and writing gzip files - * Copyright (C) 2004, 2010, 2011, 2012 Mark Adler + * Copyright (C) 2004, 2010, 2011, 2012, 2013 Mark Adler   * For conditions of distribution and use, see copyright notice in zlib.h   */ @@ -108,7 +108,7 @@ local gzFile gz_open(path, fd, mode)          return NULL;      /* allocate gzFile structure to return */ -    state = malloc(sizeof(gz_state)); +    state = (gz_statep)malloc(sizeof(gz_state));      if (state == NULL)          return NULL;      state->size = 0;            /* no buffers allocated yet */ @@ -162,8 +162,10 @@ local gzFile gz_open(path, fd, mode)                  break;              case 'F':                  state->strategy = Z_FIXED; +                break;              case 'T':                  state->direct = 1; +                break;              default:        /* could consider as an error, but just ignore */                  ;              } @@ -194,8 +196,8 @@ local gzFile gz_open(path, fd, mode)      }      else  #endif -        len = strlen(path); -    state->path = malloc(len + 1); +        len = strlen((const char *)path); +    state->path = (char *)malloc(len + 1);      if (state->path == NULL) {          free(state);          return NULL; @@ -208,7 +210,11 @@ local gzFile gz_open(path, fd, mode)              *(state->path) = 0;      else  #endif +#if !defined(NO_snprintf) && !defined(NO_vsnprintf) +        snprintf(state->path, len + 1, "%s", (const char *)path); +#else          strcpy(state->path, path); +#endif      /* compute the flags for open() */      oflag = @@ -236,7 +242,7 @@ local gzFile gz_open(path, fd, mode)  #ifdef _WIN32          fd == -2 ? _wopen(path, oflag, 0666) :  #endif -        _open(path, oflag, 0666)); +        open((const char *)path, oflag, 0666));      if (state->fd == -1) {          free(state->path);          free(state); @@ -282,9 +288,13 @@ gzFile ZEXPORT gzdopen(fd, mode)      char *path;         /* identifier for error messages */      gzFile gz; -    if (fd == -1 || (path = malloc(7 + 3 * sizeof(int))) == NULL) +    if (fd == -1 || (path = (char *)malloc(7 + 3 * sizeof(int))) == NULL)          return NULL; +#if !defined(NO_snprintf) && !defined(NO_vsnprintf) +    snprintf(path, 7 + 3 * sizeof(int), "<fd:%d>", fd); /* for debugging */ +#else      sprintf(path, "<fd:%d>", fd);   /* for debugging */ +#endif      gz = gz_open(path, fd, mode);      free(path);      return gz; @@ -531,7 +541,8 @@ const char * ZEXPORT gzerror(file, errnum)      /* return error information */      if (errnum != NULL)          *errnum = state->err; -    return state->msg == NULL ? "" : state->msg; +    return state->err == Z_MEM_ERROR ? "out of memory" : +                                       (state->msg == NULL ? "" : state->msg);  }  /* -- see zlib.h -- */ @@ -582,21 +593,24 @@ void ZLIB_INTERNAL gz_error(state, err, msg)      if (msg == NULL)          return; -    /* for an out of memory error, save as static string */ -    if (err == Z_MEM_ERROR) { -        state->msg = (char *)msg; +    /* for an out of memory error, return literal string when requested */ +    if (err == Z_MEM_ERROR)          return; -    }      /* construct error message with path */ -    if ((state->msg = malloc(strlen(state->path) + strlen(msg) + 3)) == NULL) { +    if ((state->msg = (char *)malloc(strlen(state->path) + strlen(msg) + 3)) == +            NULL) {          state->err = Z_MEM_ERROR; -        state->msg = (char *)"out of memory";          return;      } +#if !defined(NO_snprintf) && !defined(NO_vsnprintf) +    snprintf(state->msg, strlen(state->path) + strlen(msg) + 3, +             "%s%s%s", state->path, ": ", msg); +#else      strcpy(state->msg, state->path);      strcat(state->msg, ": ");      strcat(state->msg, msg); +#endif      return;  } diff --git a/plugins/Zlib/src/gzread.c b/plugins/Zlib/src/gzread.c index c0a179437b..bf4538eb27 100644 --- a/plugins/Zlib/src/gzread.c +++ b/plugins/Zlib/src/gzread.c @@ -1,5 +1,5 @@  /* gzread.c -- zlib functions for reading gzip files - * Copyright (C) 2004, 2005, 2010, 2011, 2012 Mark Adler + * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013 Mark Adler   * For conditions of distribution and use, see copyright notice in zlib.h   */ @@ -27,7 +27,7 @@ local int gz_load(state, buf, len, have)      *have = 0;      do { -        ret = _read(state->fd, buf + *have, len - *have); +        ret = read(state->fd, buf + *have, len - *have);          if (ret <= 0)              break;          *have += ret; @@ -58,7 +58,8 @@ local int gz_avail(state)          return -1;      if (state->eof == 0) {          if (strm->avail_in) {       /* copy what's there to the start */ -            unsigned char *p = state->in, *q = strm->next_in; +            unsigned char *p = state->in; +            unsigned const char *q = strm->next_in;              unsigned n = strm->avail_in;              do {                  *p++ = *q++; @@ -90,8 +91,8 @@ local int gz_look(state)      /* allocate read buffers and inflate memory */      if (state->size == 0) {          /* allocate buffers */ -        state->in = malloc(state->want); -        state->out = malloc(state->want << 1); +        state->in = (unsigned char *)malloc(state->want); +        state->out = (unsigned char *)malloc(state->want << 1);          if (state->in == NULL || state->out == NULL) {              if (state->out != NULL)                  free(state->out); @@ -352,14 +353,14 @@ int ZEXPORT gzread(file, buf, len)          /* large len -- read directly into user buffer */          else if (state->how == COPY) {      /* read directly */ -            if (gz_load(state, buf, len, &n) == -1) +            if (gz_load(state, (unsigned char *)buf, len, &n) == -1)                  return -1;          }          /* large len -- decompress directly into user buffer */          else {  /* state->how == GZIP */              strm->avail_out = len; -            strm->next_out = buf; +            strm->next_out = (unsigned char *)buf;              if (gz_decomp(state) == -1)                  return -1;              n = state->x.have; @@ -378,7 +379,11 @@ int ZEXPORT gzread(file, buf, len)  }  /* -- see zlib.h -- */ -#undef gzgetc +#ifdef Z_PREFIX_SET +#  undef z_gzgetc +#else +#  undef gzgetc +#endif  int ZEXPORT gzgetc(file)      gzFile file;  { @@ -518,7 +523,7 @@ char * ZEXPORT gzgets(file, buf, len)          /* look for end-of-line in current output buffer */          n = state->x.have > left ? left : state->x.have; -        eol = memchr(state->x.next, '\n', n); +        eol = (unsigned char *)memchr(state->x.next, '\n', n);          if (eol != NULL)              n = (unsigned)(eol - state->x.next) + 1; @@ -583,7 +588,7 @@ int ZEXPORT gzclose_r(file)      err = state->err == Z_BUF_ERROR ? Z_BUF_ERROR : Z_OK;      gz_error(state, Z_OK, NULL);      free(state->path); -    ret = _close(state->fd); +    ret = close(state->fd);      free(state);      return ret ? Z_ERRNO : err;  } diff --git a/plugins/Zlib/src/gzwrite.c b/plugins/Zlib/src/gzwrite.c index 50c9311c4e..aa767fbf63 100644 --- a/plugins/Zlib/src/gzwrite.c +++ b/plugins/Zlib/src/gzwrite.c @@ -1,5 +1,5 @@  /* gzwrite.c -- zlib functions for writing gzip files - * Copyright (C) 2004, 2005, 2010, 2011, 2012 Mark Adler + * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013 Mark Adler   * For conditions of distribution and use, see copyright notice in zlib.h   */ @@ -19,7 +19,7 @@ local int gz_init(state)      z_streamp strm = &(state->strm);      /* allocate input buffer */ -    state->in = malloc(state->want); +    state->in = (unsigned char *)malloc(state->want);      if (state->in == NULL) {          gz_error(state, Z_MEM_ERROR, "out of memory");          return -1; @@ -28,7 +28,7 @@ local int gz_init(state)      /* only need output buffer and deflate state if compressing */      if (!state->direct) {          /* allocate output buffer */ -        state->out = malloc(state->want); +        state->out = (unsigned char *)malloc(state->want);          if (state->out == NULL) {              free(state->in);              gz_error(state, Z_MEM_ERROR, "out of memory"); @@ -81,7 +81,7 @@ local int gz_comp(state, flush)      /* write directly if requested */      if (state->direct) { -        got = _write(state->fd, strm->next_in, strm->avail_in); +        got = write(state->fd, strm->next_in, strm->avail_in);          if (got < 0 || (unsigned)got != strm->avail_in) {              gz_error(state, Z_ERRNO, zstrerror());              return -1; @@ -98,7 +98,7 @@ local int gz_comp(state, flush)          if (strm->avail_out == 0 || (flush != Z_NO_FLUSH &&              (flush != Z_FINISH || ret == Z_STREAM_END))) {              have = (unsigned)(strm->next_out - state->x.next); -            if (have && ((got = _write(state->fd, state->x.next, have)) < 0 || +            if (have && ((got = write(state->fd, state->x.next, have)) < 0 ||                           (unsigned)got != have)) {                  gz_error(state, Z_ERRNO, zstrerror());                  return -1; @@ -168,7 +168,6 @@ int ZEXPORT gzwrite(file, buf, len)      unsigned len;  {      unsigned put = len; -    unsigned n;      gz_statep state;      z_streamp strm; @@ -208,16 +207,19 @@ int ZEXPORT gzwrite(file, buf, len)      if (len < state->size) {          /* copy to input buffer, compress when full */          do { +            unsigned have, copy; +              if (strm->avail_in == 0)                  strm->next_in = state->in; -            n = state->size - strm->avail_in; -            if (n > len) -                n = len; -            memcpy(strm->next_in + strm->avail_in, buf, n); -            strm->avail_in += n; -            state->x.pos += n; -            buf = (char *)buf + n; -            len -= n; +            have = (unsigned)((strm->next_in + strm->avail_in) - state->in); +            copy = state->size - have; +            if (copy > len) +                copy = len; +            memcpy(state->in + have, buf, copy); +            strm->avail_in += copy; +            state->x.pos += copy; +            buf = (const char *)buf + copy; +            len -= copy;              if (len && gz_comp(state, Z_NO_FLUSH) == -1)                  return 0;          } while (len); @@ -229,7 +231,7 @@ int ZEXPORT gzwrite(file, buf, len)          /* directly compress user buffer to file */          strm->avail_in = len; -        strm->next_in = (voidp)buf; +        strm->next_in = (z_const Bytef *)buf;          state->x.pos += len;          if (gz_comp(state, Z_NO_FLUSH) == -1)              return 0; @@ -244,6 +246,7 @@ int ZEXPORT gzputc(file, c)      gzFile file;      int c;  { +    unsigned have;      unsigned char buf[1];      gz_statep state;      z_streamp strm; @@ -267,12 +270,16 @@ int ZEXPORT gzputc(file, c)      /* try writing to input buffer for speed (state->size == 0 if buffer not         initialized) */ -    if (strm->avail_in < state->size) { +    if (state->size) {          if (strm->avail_in == 0)              strm->next_in = state->in; -        strm->next_in[strm->avail_in++] = c; -        state->x.pos++; -        return c & 0xff; +        have = (unsigned)((strm->next_in + strm->avail_in) - state->in); +        if (have < state->size) { +            state->in[have] = c; +            strm->avail_in++; +            state->x.pos++; +            return c & 0xff; +        }      }      /* no room in buffer or not initialized, use gz_write() */ @@ -300,12 +307,11 @@ int ZEXPORT gzputs(file, str)  #include <stdarg.h>  /* -- see zlib.h -- */ -int ZEXPORTVA gzprintf (gzFile file, const char *format, ...) +int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va)  {      int size, len;      gz_statep state;      z_streamp strm; -    va_list va;      /* get internal structure */      if (file == NULL) @@ -335,25 +341,20 @@ int ZEXPORTVA gzprintf (gzFile file, const char *format, ...)      /* do the printf() into the input buffer, put length in len */      size = (int)(state->size);      state->in[size - 1] = 0; -    va_start(va, format);  #ifdef NO_vsnprintf  #  ifdef HAS_vsprintf_void      (void)vsprintf((char *)(state->in), format, va); -    va_end(va);      for (len = 0; len < size; len++)          if (state->in[len] == 0) break;  #  else      len = vsprintf((char *)(state->in), format, va); -    va_end(va);  #  endif  #else  #  ifdef HAS_vsnprintf_void      (void)vsnprintf((char *)(state->in), size, format, va); -    va_end(va);      len = strlen((char *)(state->in));  #  else      len = vsnprintf((char *)(state->in), size, format, va); -    va_end(va);  #  endif  #endif @@ -368,6 +369,17 @@ int ZEXPORTVA gzprintf (gzFile file, const char *format, ...)      return len;  } +int ZEXPORTVA gzprintf(gzFile file, const char *format, ...) +{ +    va_list va; +    int ret; + +    va_start(va, format); +    ret = gzvprintf(file, format, va); +    va_end(va); +    return ret; +} +  #else /* !STDC && !Z_HAVE_STDARG_H */  /* -- see zlib.h -- */ @@ -547,9 +559,9 @@ int ZEXPORT gzclose_w(file)      }      /* flush, free memory, and close file */ +    if (gz_comp(state, Z_FINISH) == -1) +        ret = state->err;      if (state->size) { -        if (gz_comp(state, Z_FINISH) == -1) -            ret = state->err;          if (!state->direct) {              (void)deflateEnd(&(state->strm));              free(state->out); @@ -558,7 +570,7 @@ int ZEXPORT gzclose_w(file)      }      gz_error(state, Z_OK, NULL);      free(state->path); -    if (_close(state->fd) == -1) +    if (close(state->fd) == -1)          ret = Z_ERRNO;      free(state);      return ret; diff --git a/plugins/Zlib/src/infback.c b/plugins/Zlib/src/infback.c index 981aff17c2..f3833c2e43 100644 --- a/plugins/Zlib/src/infback.c +++ b/plugins/Zlib/src/infback.c @@ -255,7 +255,7 @@ out_func out;  void FAR *out_desc;  {      struct inflate_state FAR *state; -    unsigned char FAR *next;    /* next input */ +    z_const unsigned char FAR *next;    /* next input */      unsigned char FAR *put;     /* next output */      unsigned have, left;        /* available input and output */      unsigned long hold;         /* bit buffer */ diff --git a/plugins/Zlib/src/inffast.c b/plugins/Zlib/src/inffast.c index 2f1d60b43b..bda59ceb6a 100644 --- a/plugins/Zlib/src/inffast.c +++ b/plugins/Zlib/src/inffast.c @@ -1,5 +1,5 @@  /* inffast.c -- fast decoding - * Copyright (C) 1995-2008, 2010 Mark Adler + * Copyright (C) 1995-2008, 2010, 2013 Mark Adler   * For conditions of distribution and use, see copyright notice in zlib.h   */ @@ -69,8 +69,8 @@ z_streamp strm;  unsigned start;         /* inflate()'s starting value for strm->avail_out */  {      struct inflate_state FAR *state; -    unsigned char FAR *in;      /* local strm->next_in */ -    unsigned char FAR *last;    /* while in < last, enough input available */ +    z_const unsigned char FAR *in;      /* local strm->next_in */ +    z_const unsigned char FAR *last;    /* have enough input while in < last */      unsigned char FAR *out;     /* local strm->next_out */      unsigned char FAR *beg;     /* inflate()'s initial strm->next_out */      unsigned char FAR *end;     /* while out < end, enough space available */ diff --git a/plugins/Zlib/src/inflate.c b/plugins/Zlib/src/inflate.c index 47418a1e1e..870f89bb4d 100644 --- a/plugins/Zlib/src/inflate.c +++ b/plugins/Zlib/src/inflate.c @@ -93,11 +93,12 @@  /* function prototypes */  local void fixedtables OF((struct inflate_state FAR *state)); -local int updatewindow OF((z_streamp strm, unsigned out)); +local int updatewindow OF((z_streamp strm, const unsigned char FAR *end, +                           unsigned copy));  #ifdef BUILDFIXED     void makefixed OF((void));  #endif -local unsigned syncsearch OF((unsigned FAR *have, unsigned char FAR *buf, +local unsigned syncsearch OF((unsigned FAR *have, const unsigned char FAR *buf,                                unsigned len));  int ZEXPORT inflateResetKeep(strm) @@ -375,12 +376,13 @@ void makefixed()     output will fall in the output data, making match copies simpler and faster.     The advantage may be dependent on the size of the processor's data caches.   */ -local int updatewindow(strm, out) +local int updatewindow(strm, end, copy)  z_streamp strm; -unsigned out; +const Bytef *end; +unsigned copy;  {      struct inflate_state FAR *state; -    unsigned copy, dist; +    unsigned dist;      state = (struct inflate_state FAR *)strm->state; @@ -400,19 +402,18 @@ unsigned out;      }      /* copy state->wsize or less output bytes into the circular window */ -    copy = out - strm->avail_out;      if (copy >= state->wsize) { -        zmemcpy(state->window, strm->next_out - state->wsize, state->wsize); +        zmemcpy(state->window, end - state->wsize, state->wsize);          state->wnext = 0;          state->whave = state->wsize;      }      else {          dist = state->wsize - state->wnext;          if (dist > copy) dist = copy; -        zmemcpy(state->window + state->wnext, strm->next_out - copy, dist); +        zmemcpy(state->window + state->wnext, end - copy, dist);          copy -= dist;          if (copy) { -            zmemcpy(state->window, strm->next_out - copy, copy); +            zmemcpy(state->window, end - copy, copy);              state->wnext = copy;              state->whave = state->wsize;          } @@ -606,7 +607,7 @@ z_streamp strm;  int flush;  {      struct inflate_state FAR *state; -    unsigned char FAR *next;    /* next input */ +    z_const unsigned char FAR *next;    /* next input */      unsigned char FAR *put;     /* next output */      unsigned have, left;        /* available input and output */      unsigned long hold;         /* bit buffer */ @@ -920,7 +921,7 @@ int flush;              while (state->have < 19)                  state->lens[order[state->have++]] = 0;              state->next = state->codes; -            state->lencode = (code const FAR *)(state->next); +            state->lencode = (const code FAR *)(state->next);              state->lenbits = 7;              ret = inflate_table(CODES, state->lens, 19, &(state->next),                                  &(state->lenbits), state->work); @@ -994,7 +995,7 @@ int flush;                 values here (9 and 6) without reading the comments in inftrees.h                 concerning the ENOUGH constants, which depend on those values */              state->next = state->codes; -            state->lencode = (code const FAR *)(state->next); +            state->lencode = (const code FAR *)(state->next);              state->lenbits = 9;              ret = inflate_table(LENS, state->lens, state->nlen, &(state->next),                                  &(state->lenbits), state->work); @@ -1003,7 +1004,7 @@ int flush;                  state->mode = BAD;                  break;              } -            state->distcode = (code const FAR *)(state->next); +            state->distcode = (const code FAR *)(state->next);              state->distbits = 6;              ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist,                              &(state->next), &(state->distbits), state->work); @@ -1230,7 +1231,7 @@ int flush;      RESTORE();      if (state->wsize || (out != strm->avail_out && state->mode < BAD &&              (state->mode < CHECK || flush != Z_FINISH))) -        if (updatewindow(strm, out)) { +        if (updatewindow(strm, strm->next_out, out - strm->avail_out)) {              state->mode = MEM;              return Z_MEM_ERROR;          } @@ -1264,6 +1265,29 @@ z_streamp strm;      return Z_OK;  } +int ZEXPORT inflateGetDictionary(strm, dictionary, dictLength) +z_streamp strm; +Bytef *dictionary; +uInt *dictLength; +{ +    struct inflate_state FAR *state; + +    /* check state */ +    if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; +    state = (struct inflate_state FAR *)strm->state; + +    /* copy dictionary */ +    if (state->whave && dictionary != Z_NULL) { +        zmemcpy(dictionary, state->window + state->wnext, +                state->whave - state->wnext); +        zmemcpy(dictionary + state->whave - state->wnext, +                state->window, state->wnext); +    } +    if (dictLength != Z_NULL) +        *dictLength = state->whave; +    return Z_OK; +} +  int ZEXPORT inflateSetDictionary(strm, dictionary, dictLength)  z_streamp strm;  const Bytef *dictionary; @@ -1271,8 +1295,6 @@ uInt dictLength;  {      struct inflate_state FAR *state;      unsigned long dictid; -    unsigned char *next; -    unsigned avail;      int ret;      /* check state */ @@ -1291,13 +1313,7 @@ uInt dictLength;      /* copy dictionary to window using updatewindow(), which will amend the         existing dictionary if appropriate */ -    next = strm->next_out; -    avail = strm->avail_out; -    strm->next_out = (Bytef *)dictionary + dictLength; -    strm->avail_out = 0; -    ret = updatewindow(strm, dictLength); -    strm->avail_out = avail; -    strm->next_out = next; +    ret = updatewindow(strm, dictionary + dictLength, dictLength);      if (ret) {          state->mode = MEM;          return Z_MEM_ERROR; @@ -1337,7 +1353,7 @@ gz_headerp head;   */  local unsigned syncsearch(have, buf, len)  unsigned FAR *have; -unsigned char FAR *buf; +const unsigned char FAR *buf;  unsigned len;  {      unsigned got; diff --git a/plugins/Zlib/src/inftrees.c b/plugins/Zlib/src/inftrees.c index abcd7c45ed..44d89cf24e 100644 --- a/plugins/Zlib/src/inftrees.c +++ b/plugins/Zlib/src/inftrees.c @@ -1,5 +1,5 @@  /* inftrees.c -- generate Huffman trees for efficient decoding - * Copyright (C) 1995-2012 Mark Adler + * Copyright (C) 1995-2013 Mark Adler   * For conditions of distribution and use, see copyright notice in zlib.h   */ @@ -9,7 +9,7 @@  #define MAXBITS 15  const char inflate_copyright[] = -   " inflate 1.2.7 Copyright 1995-2012 Mark Adler "; +   " inflate 1.2.8 Copyright 1995-2013 Mark Adler ";  /*    If you use the zlib library in a product, an acknowledgment is welcome    in the documentation of your product. If for some reason you cannot @@ -62,7 +62,7 @@ unsigned short FAR *work;          35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};      static const unsigned short lext[31] = { /* Length codes 257..285 extra */          16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, -        19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 78, 68}; +        19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78};      static const unsigned short dbase[32] = { /* Distance codes 0..29 base */          1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,          257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, @@ -208,8 +208,8 @@ unsigned short FAR *work;      mask = used - 1;            /* mask for comparing low */      /* check available table space */ -    if ((type == LENS && used >= ENOUGH_LENS) || -        (type == DISTS && used >= ENOUGH_DISTS)) +    if ((type == LENS && used > ENOUGH_LENS) || +        (type == DISTS && used > ENOUGH_DISTS))          return 1;      /* process all codes and make table entries */ @@ -277,8 +277,8 @@ unsigned short FAR *work;              /* check for enough space */              used += 1U << curr; -            if ((type == LENS && used >= ENOUGH_LENS) || -                (type == DISTS && used >= ENOUGH_DISTS)) +            if ((type == LENS && used > ENOUGH_LENS) || +                (type == DISTS && used > ENOUGH_DISTS))                  return 1;              /* point entry in root table to sub-table */ diff --git a/plugins/Zlib/src/trees.c b/plugins/Zlib/src/trees.c index 8c32b214b1..1fd7759ef0 100644 --- a/plugins/Zlib/src/trees.c +++ b/plugins/Zlib/src/trees.c @@ -146,8 +146,8 @@ local void send_tree      OF((deflate_state *s, ct_data *tree, int max_code));  local int  build_bl_tree  OF((deflate_state *s));  local void send_all_trees OF((deflate_state *s, int lcodes, int dcodes,                                int blcodes)); -local void compress_block OF((deflate_state *s, ct_data *ltree, -                              ct_data *dtree)); +local void compress_block OF((deflate_state *s, const ct_data *ltree, +                              const ct_data *dtree));  local int  detect_data_type OF((deflate_state *s));  local unsigned bi_reverse OF((unsigned value, int length));  local void bi_windup      OF((deflate_state *s)); @@ -972,7 +972,8 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)      } else if (s->strategy == Z_FIXED || static_lenb == opt_lenb) {  #endif          send_bits(s, (STATIC_TREES<<1)+last, 3); -        compress_block(s, (ct_data *)static_ltree, (ct_data *)static_dtree); +        compress_block(s, (const ct_data *)static_ltree, +                       (const ct_data *)static_dtree);  #ifdef DEBUG          s->compressed_len += 3 + s->static_len;  #endif @@ -980,7 +981,8 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)          send_bits(s, (DYN_TREES<<1)+last, 3);          send_all_trees(s, s->l_desc.max_code+1, s->d_desc.max_code+1,                         max_blindex+1); -        compress_block(s, (ct_data *)s->dyn_ltree, (ct_data *)s->dyn_dtree); +        compress_block(s, (const ct_data *)s->dyn_ltree, +                       (const ct_data *)s->dyn_dtree);  #ifdef DEBUG          s->compressed_len += 3 + s->opt_len;  #endif @@ -1057,8 +1059,8 @@ int ZLIB_INTERNAL _tr_tally (s, dist, lc)   */  local void compress_block(s, ltree, dtree)      deflate_state *s; -    ct_data *ltree; /* literal tree */ -    ct_data *dtree; /* distance tree */ +    const ct_data *ltree; /* literal tree */ +    const ct_data *dtree; /* distance tree */  {      unsigned dist;      /* distance of matched string */      int lc;             /* match length or unmatched char (if dist == 0) */ diff --git a/plugins/Zlib/src/uncompr.c b/plugins/Zlib/src/uncompr.c index ad98be3a5d..242e9493df 100644 --- a/plugins/Zlib/src/uncompr.c +++ b/plugins/Zlib/src/uncompr.c @@ -30,7 +30,7 @@ int ZEXPORT uncompress (dest, destLen, source, sourceLen)      z_stream stream;      int err; -    stream.next_in = (Bytef*)source; +    stream.next_in = (z_const Bytef *)source;      stream.avail_in = (uInt)sourceLen;      /* Check for source > 64K on 16-bit machine: */      if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR; diff --git a/plugins/Zlib/src/zconf.h b/plugins/Zlib/src/zconf.h index 8a46a58b30..9987a77553 100644 --- a/plugins/Zlib/src/zconf.h +++ b/plugins/Zlib/src/zconf.h @@ -1,5 +1,5 @@  /* zconf.h -- configuration of the zlib compression library - * Copyright (C) 1995-2012 Jean-loup Gailly. + * Copyright (C) 1995-2013 Jean-loup Gailly.   * For conditions of distribution and use, see copyright notice in zlib.h   */ @@ -21,6 +21,7 @@  #  define _dist_code            z__dist_code  #  define _length_code          z__length_code  #  define _tr_align             z__tr_align +#  define _tr_flush_bits        z__tr_flush_bits  #  define _tr_flush_block       z__tr_flush_block  #  define _tr_init              z__tr_init  #  define _tr_stored_block      z__tr_stored_block @@ -77,6 +78,7 @@  #      define gzopen_w              z_gzopen_w  #    endif  #    define gzprintf              z_gzprintf +#    define gzvprintf             z_gzvprintf  #    define gzputc                z_gzputc  #    define gzputs                z_gzputs  #    define gzread                z_gzread @@ -103,6 +105,7 @@  #  define inflateReset          z_inflateReset  #  define inflateReset2         z_inflateReset2  #  define inflateSetDictionary  z_inflateSetDictionary +#  define inflateGetDictionary  z_inflateGetDictionary  #  define inflateSync           z_inflateSync  #  define inflateSyncPoint      z_inflateSyncPoint  #  define inflateUndermine      z_inflateUndermine @@ -388,20 +391,14 @@ typedef uLong FAR uLongf;     typedef Byte       *voidp;  #endif -/* ./configure may #define Z_U4 here */ -  #if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC)  #  include <limits.h>  #  if (UINT_MAX == 0xffffffffUL)  #    define Z_U4 unsigned -#  else -#    if (ULONG_MAX == 0xffffffffUL) -#      define Z_U4 unsigned long -#    else -#      if (USHRT_MAX == 0xffffffffUL) -#        define Z_U4 unsigned short -#      endif -#    endif +#  elif (ULONG_MAX == 0xffffffffUL) +#    define Z_U4 unsigned long +#  elif (USHRT_MAX == 0xffffffffUL) +#    define Z_U4 unsigned short  #  endif  #endif @@ -425,8 +422,16 @@ typedef uLong FAR uLongf;  #  endif  #endif +#if defined(STDC) || defined(Z_HAVE_STDARG_H) +#  ifndef Z_SOLO +#    include <stdarg.h>         /* for va_list */ +#  endif +#endif +  #ifdef _WIN32 -#  include <stddef.h>           /* for wchar_t */ +#  ifndef Z_SOLO +#    include <stddef.h>         /* for wchar_t */ +#  endif  #endif  /* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and @@ -435,7 +440,7 @@ typedef uLong FAR uLongf;   * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as   * equivalently requesting no 64-bit operations   */ -#if defined(LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1 +#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1  #  undef _LARGEFILE64_SOURCE  #endif @@ -443,7 +448,7 @@ typedef uLong FAR uLongf;  #  define Z_HAVE_UNISTD_H  #endif  #ifndef Z_SOLO -#  if defined(Z_HAVE_UNISTD_H) || defined(LARGEFILE64_SOURCE) +#  if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE)  #    include <unistd.h>         /* for SEEK_*, off_t, and _LFS64_LARGEFILE */  #    ifdef VMS  #      include <unixio.h>       /* for off_t */ diff --git a/plugins/Zlib/src/zlib.def b/plugins/Zlib/src/zlib.def index 04896150e4..face655183 100644 --- a/plugins/Zlib/src/zlib.def +++ b/plugins/Zlib/src/zlib.def @@ -17,6 +17,7 @@ EXPORTS      deflatePrime      deflateSetHeader      inflateSetDictionary +    inflateGetDictionary      inflateSync      inflateCopy      inflateReset @@ -39,6 +40,7 @@ EXPORTS      gzread      gzwrite      gzprintf +    gzvprintf      gzputs      gzgets      gzputc diff --git a/plugins/Zlib/src/zlib.h b/plugins/Zlib/src/zlib.h index 3edf3acdb5..3e0c7672ac 100644 --- a/plugins/Zlib/src/zlib.h +++ b/plugins/Zlib/src/zlib.h @@ -1,7 +1,7 @@  /* zlib.h -- interface of the 'zlib' general purpose compression library -  version 1.2.7, May 2nd, 2012 +  version 1.2.8, April 28th, 2013 -  Copyright (C) 1995-2012 Jean-loup Gailly and Mark Adler +  Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler    This software is provided 'as-is', without any express or implied    warranty.  In no event will the authors be held liable for any damages @@ -37,11 +37,11 @@  extern "C" {  #endif -#define ZLIB_VERSION "1.2.7" -#define ZLIB_VERNUM 0x1270 +#define ZLIB_VERSION "1.2.8" +#define ZLIB_VERNUM 0x1280  #define ZLIB_VER_MAJOR 1  #define ZLIB_VER_MINOR 2 -#define ZLIB_VER_REVISION 7 +#define ZLIB_VER_REVISION 8  #define ZLIB_VER_SUBREVISION 0  /* @@ -839,6 +839,21 @@ ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,     inflate().  */ +ZEXTERN int ZEXPORT inflateGetDictionary OF((z_streamp strm, +                                             Bytef *dictionary, +                                             uInt  *dictLength)); +/* +     Returns the sliding dictionary being maintained by inflate.  dictLength is +   set to the number of bytes in the dictionary, and that many bytes are copied +   to dictionary.  dictionary must have enough space, where 32768 bytes is +   always enough.  If inflateGetDictionary() is called with dictionary equal to +   Z_NULL, then only the dictionary length is returned, and nothing is copied. +   Similary, if dictLength is Z_NULL, then it is not set. + +     inflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the +   stream state is inconsistent. +*/ +  ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));  /*       Skips invalid compressed data until a possible full flush point (see above @@ -846,7 +861,7 @@ ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));     available input is skipped.  No output is provided.       inflateSync searches for a 00 00 FF FF pattern in the compressed data. -   All full flush points have this pattern, but not all occurences of this +   All full flush points have this pattern, but not all occurrences of this     pattern are full flush points.       inflateSync returns Z_OK if a possible full flush point has been found, @@ -1007,7 +1022,8 @@ ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits,     the version of the header file.  */ -typedef unsigned (*in_func) OF((void FAR *, unsigned char FAR * FAR *)); +typedef unsigned (*in_func) OF((void FAR *, +                                z_const unsigned char FAR * FAR *));  typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned));  ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, @@ -1015,11 +1031,12 @@ ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm,                                      out_func out, void FAR *out_desc));  /*       inflateBack() does a raw inflate with a single call using a call-back -   interface for input and output.  This is more efficient than inflate() for -   file i/o applications in that it avoids copying between the output and the -   sliding window by simply making the window itself the output buffer.  This -   function trusts the application to not change the output buffer passed by -   the output function, at least until inflateBack() returns. +   interface for input and output.  This is potentially more efficient than +   inflate() for file i/o applications, in that it avoids copying between the +   output and the sliding window by simply making the window itself the output +   buffer.  inflate() can be faster on modern CPUs when used with large +   buffers.  inflateBack() trusts the application to not change the output +   buffer passed by the output function, at least until inflateBack() returns.       inflateBackInit() must be called first to allocate the internal state     and to initialize the state with the user-provided window buffer. @@ -1736,6 +1753,13 @@ ZEXTERN int            ZEXPORT deflateResetKeep OF((z_streamp));  ZEXTERN gzFile         ZEXPORT gzopen_w OF((const wchar_t *path,                                              const char *mode));  #endif +#if defined(STDC) || defined(Z_HAVE_STDARG_H) +#  ifndef Z_SOLO +ZEXTERN int            ZEXPORTVA gzvprintf Z_ARG((gzFile file, +                                                  const char *format, +                                                  va_list va)); +#  endif +#endif  #ifdef __cplusplus  } diff --git a/plugins/Zlib/src/zutil.c b/plugins/Zlib/src/zutil.c index 65e0d3b72b..23d2ebef00 100644 --- a/plugins/Zlib/src/zutil.c +++ b/plugins/Zlib/src/zutil.c @@ -14,7 +14,7 @@  struct internal_state      {int dummy;}; /* for buggy compilers */  #endif -const char * const z_errmsg[10] = { +z_const char * const z_errmsg[10] = {  "need dictionary",     /* Z_NEED_DICT       2  */  "stream end",          /* Z_STREAM_END      1  */  "",                    /* Z_OK              0  */ diff --git a/plugins/Zlib/src/zutil.h b/plugins/Zlib/src/zutil.h index 67771583ac..24ab06b1cf 100644 --- a/plugins/Zlib/src/zutil.h +++ b/plugins/Zlib/src/zutil.h @@ -1,5 +1,5 @@  /* zutil.h -- internal interface and configuration of the compression library - * Copyright (C) 1995-2012 Jean-loup Gailly. + * Copyright (C) 1995-2013 Jean-loup Gailly.   * For conditions of distribution and use, see copyright notice in zlib.h   */ @@ -44,13 +44,13 @@ typedef unsigned short ush;  typedef ush FAR ushf;  typedef unsigned long  ulg; -extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ +extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */  /* (size given to avoid silly warnings with Visual C++) */  #define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)]  #define ERR_RETURN(strm,err) \ -  return (strm->msg = (char*)ERR_MSG(err), (err)) +  return (strm->msg = ERR_MSG(err), (err))  /* To be used only when the state is known to be valid */          /* common constants */ @@ -168,7 +168,8 @@ extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */  #endif  /* provide prototypes for these when building zlib without LFS */ -#if !defined(_WIN32) && (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0) +#if !defined(_WIN32) && \ +    (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0)      ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t));      ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t));  #endif @@ -219,7 +220,7 @@ extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */  #  include <stdio.h>     extern int ZLIB_INTERNAL z_verbose;     extern void ZLIB_INTERNAL z_error OF((char *m)); -#  define Assert(cond,msg) {if (!(cond)) z_error(msg);} +#  define Assert(cond,msg) {if(!(cond)) z_error(msg);}  #  define Trace(x) {if (z_verbose>=0) fprintf x ;}  #  define Tracev(x) {if (z_verbose>0) fprintf x ;}  #  define Tracevv(x) {if (z_verbose>1) fprintf x ;} | 
