libz: sync with upstream
authortb <tb@openbsd.org>
Sat, 10 Feb 2024 06:10:04 +0000 (06:10 +0000)
committertb <tb@openbsd.org>
Sat, 10 Feb 2024 06:10:04 +0000 (06:10 +0000)
- fix type of local variable in deflate_stored()
- more Windows compat shuffling
- wrap overlong line in gzread

lib/libz/deflate.c
lib/libz/gzguts.h
lib/libz/gzlib.c
lib/libz/gzread.c

index 1f0004a..623119b 100644 (file)
@@ -1631,7 +1631,8 @@ local block_state deflate_stored(deflate_state *s, int flush) {
      * possible. If flushing, copy the remaining available input to next_out as
      * stored blocks, if there is enough space.
      */
-    unsigned len, left, have, last = 0;
+    int last = 0;
+    unsigned len, left, have;
     unsigned used = s->strm->avail_in;
     do {
         /* Set len to the maximum size block that we can copy directly with the
index bd0a6fe..a6485ab 100644 (file)
@@ -20,6 +20,9 @@
 #if defined(_WIN32) && !defined(_CRT_SECURE_NO_WARNINGS)
 #  define _CRT_SECURE_NO_WARNINGS
 #endif
+#if defined(_WIN32) && !defined(_CRT_NONSTDC_NO_DEPRECATE)
+#  define _CRT_NONSTDC_NO_DEPRECATE
+#endif
 
 #include <stdio.h>
 #include "zlib.h"
@@ -40,7 +43,6 @@
 
 #if defined(__TURBOC__) || defined(_MSC_VER) || defined(_WIN32)
 #  include <io.h>
-#  include <share.h>
 #  include <sys/stat.h>
 #endif
 
 #  define WIDECHAR
 #endif
 
-#if defined(_WIN32) || defined(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
index 05a9ae5..e485a27 100644 (file)
@@ -5,15 +5,17 @@
 
 #include "gzguts.h"
 
-#if defined(_WIN32) && !defined(__BORLANDC__)
+#if defined(UNDER_CE)
+#  define LSEEK _wcelseek
+#elif defined(__DJGPP__)
+#  define LSEEK llseek
+#elif defined(_WIN32) && !defined(__BORLANDC__)
 #  define LSEEK _lseeki64
-#else
-#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0
+#elif defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0
 #  define LSEEK lseek64
 #else
 #  define LSEEK lseek
 #endif
-#endif
 
 #if defined UNDER_CE
 
@@ -52,8 +54,7 @@ char ZLIB_INTERNAL *gz_strwinerror(DWORD error) {
             msgbuf[chars] = 0;
         }
 
-        z_size_t len;
-        wcstombs_s(&len, buf, sizeof(buf), msgbuf, chars + 1);
+        wcstombs(buf, msgbuf, chars + 1);       // assumes buf is big enough
         LocalFree(msgbuf);
     }
     else {
@@ -180,10 +181,8 @@ local gzFile gz_open(const void *path, int fd, const char *mode) {
 
     /* save the path name for error messages */
 #ifdef WIDECHAR
-    if (fd == -2) {
-        if (wcstombs_s(&len, NULL, 0, path, 0) != 0)
-            len = 0;
-    }
+    if (fd == -2)
+        len = wcstombs(NULL, path, 0);
     else
 #endif
         len = strlen((const char *)path);
@@ -193,18 +192,21 @@ local gzFile gz_open(const void *path, int fd, const char *mode) {
         return NULL;
     }
 #ifdef WIDECHAR
-    if (fd == -2)
+    if (fd == -2) {
         if (len)
-            wcstombs_s(&len, state->path, len + 1, path, len + 1);
+            wcstombs(state->path, path, len + 1);
         else
             *(state->path) = 0;
+    }
     else
 #endif
+    {
 #if !defined(NO_snprintf) && !defined(NO_vsnprintf)
         (void)snprintf(state->path, len + 1, "%s", (const char *)path);
 #else
         strcpy(state->path, path);
 #endif
+    }
 
     /* compute the flags for open() */
     oflag =
@@ -232,7 +234,7 @@ local gzFile gz_open(const void *path, int fd, const char *mode) {
         state->fd = open((const char *)path, oflag, 0666);
 #ifdef WIDECHAR
     else if (fd == -2)
-        _wsopen_s(&state->fd, path, oflag, _SH_DENYNO, _S_IREAD | _S_IWRITE);
+        state->fd = _wopen(path, oflag, _S_IREAD | _S_IWRITE);
 #endif
     else
         state->fd = fd;
index 4168cbc..2d4ca42 100644 (file)
@@ -374,7 +374,8 @@ int ZEXPORT gzread(gzFile file, voidp buf, unsigned len) {
 }
 
 /* -- see zlib.h -- */
-z_size_t ZEXPORT gzfread(voidp buf, z_size_t size, z_size_t nitems, gzFile file) {
+z_size_t ZEXPORT gzfread(voidp buf, z_size_t size, z_size_t nitems,
+                         gzFile file) {
     z_size_t len;
     gz_statep state;