From 7655ed59c757ff69535f2489c8dc842ea65f2f6e Mon Sep 17 00:00:00 2001 From: Furniel Date: Tue, 17 Oct 2017 20:15:54 +0300 Subject: [PATCH] gdbm: update to 1.13 --- patches/gdbm/gdbm_1.13-win32-support.patch | 1316 ++++++++++++++++++++ scripts/gdbm.sh | 5 +- 2 files changed, 1318 insertions(+), 3 deletions(-) create mode 100644 patches/gdbm/gdbm_1.13-win32-support.patch diff --git a/patches/gdbm/gdbm_1.13-win32-support.patch b/patches/gdbm/gdbm_1.13-win32-support.patch new file mode 100644 index 000000000..8bed411c6 --- /dev/null +++ b/patches/gdbm/gdbm_1.13-win32-support.patch @@ -0,0 +1,1316 @@ +diff -urN gdbm-1.13_orig/compat/dbmopen.c gdbm-1.13/compat/dbmopen.c +--- gdbm-1.13_orig/compat/dbmopen.c 2017-01-02 13:51:49.000000000 +0200 ++++ gdbm-1.13/compat/dbmopen.c 2017-10-16 01:20:11.520289800 +0300 +@@ -58,13 +58,17 @@ + + /* FIXME: revise return codes */ + static int +-ndbm_open_dir_file0 (const char *file_name, int pagfd, int mode) ++ndbm_open_dir_file0 (const char *file_name, struct gdbm_file_info *pag, int mode) + { + int fd = -1; + struct stat st, pagst; + unsigned char dirbuf[DEF_DIR_SIZE]; + int flags = (mode & GDBM_OPENMASK) == GDBM_READER ? + O_RDONLY : O_RDWR; ++ int pagfd = pag->desc; ++#ifdef _WIN32 ++ HANDLE hFile; ++#endif + + if (mode & GDBM_CLOEXEC) + flags |= O_CLOEXEC; +@@ -76,22 +80,49 @@ + } + + /* Previous versions of GDBM linked pag to dir. Try to detect this: */ ++#ifdef _WIN32 ++ hFile = CreateFile(file_name, 0, FILE_SHARE_READ | FILE_SHARE_WRITE, ++ NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, ++ NULL); ++ ++ if (hFile != INVALID_HANDLE_VALUE) ++ { ++ BY_HANDLE_FILE_INFORMATION fileInfo; ++ GetFileInformationByHandle (hFile, &fileInfo); ++ CloseHandle (hFile); ++ st.st_size = (fileInfo.nFileSizeHigh * MAXDWORD) + fileInfo.nFileSizeLow; ++ ++ if (fileInfo.nNumberOfLinks >= 2) ++ { ++ BY_HANDLE_FILE_INFORMATION pagInfo; ++ GetFileInformationByHandle ((HANDLE)_get_osfhandle (pagfd), &pagInfo); ++ if ((fileInfo.nFileIndexLow == pagInfo.nFileIndexLow) && ++ (fileInfo.nFileIndexHigh == pagInfo.nFileIndexHigh)) ++ { ++ /* Close pag because unlink dir file fails on Windows */ ++ close (pagfd); ++#else + if (stat (file_name, &st) == 0) + { + if (st.st_nlink >= 2) + { + if (st.st_dev == pagst.st_dev && st.st_ino == pagst.st_ino) + { +- if (unlink (file_name)) ++#endif ++ int ret = unlink (file_name); ++#ifdef _WIN32 ++ pagfd = pag->desc = open(pag->name, flags | O_BINARY); ++#endif ++ if (ret) + { + if ((mode & GDBM_OPENMASK) == GDBM_READER) + /* Ok, try to cope with it. */ + return pagfd; + else + { +- gdbm_set_errno (NULL, GDBM_FILE_OPEN_ERROR, TRUE); ++ gdbm_set_errno (NULL, GDBM_FILE_OPEN_ERROR, TRUE); + return -1; +- } ++ } + } + } + else +@@ -109,7 +140,7 @@ + } + else + { +- fd = open (file_name, flags); ++ fd = open (file_name, flags | O_BINARY); + if (fd == -1) + { + gdbm_set_errno (NULL, GDBM_FILE_OPEN_ERROR, FALSE); +@@ -141,7 +172,7 @@ + } + + /* File does not exist. Create it. */ +- fd = open (file_name, flags | O_CREAT, pagst.st_mode & 0777); ++ fd = open (file_name, flags | O_CREAT | O_BINARY, pagst.st_mode & 0777); + if (fd >= 0) + { + putint (dirbuf, GDBM_DIR_MAGIC); +@@ -161,10 +192,11 @@ + } + + static int +-ndbm_open_dir_file (const char *base, int pagfd, int mode) ++ndbm_open_dir_file (const char *base, struct gdbm_file_info *pag, int mode) + { + char *file_name = malloc (strlen (base) + sizeof (DIRSUF)); + int fd; ++ int pagfd = pag->desc; + + if (!file_name) + { +@@ -172,7 +204,7 @@ + return -1; + } + fd = ndbm_open_dir_file0 (strcat (strcpy (file_name, base), DIRSUF), +- pagfd, mode); ++ pag, mode); + free (file_name); + return fd; + } +@@ -265,7 +297,7 @@ + } + else + { +- dbm->dirfd = ndbm_open_dir_file (file, dbm->file->desc, open_flags); ++ dbm->dirfd = ndbm_open_dir_file (file, dbm->file, open_flags); + if (dbm->dirfd == -1) + { + gdbm_close (dbm->file); +diff -urN gdbm-1.13_orig/compat/Makefile.am gdbm-1.13/compat/Makefile.am +--- gdbm-1.13_orig/compat/Makefile.am 2017-01-02 13:51:49.000000000 +0200 ++++ gdbm-1.13/compat/Makefile.am 2017-10-15 14:49:15.825114300 +0300 +@@ -51,5 +51,5 @@ + + libgdbm_compat_la_SOURCES = $(DBM_CF) $(NDBM_CF) + +-libgdbm_compat_la_LDFLAGS = -version-info $(VI_CURRENT):$(VI_REVISION):$(VI_AGE) ++libgdbm_compat_la_LDFLAGS = -no-undefined -version-info $(VI_CURRENT):$(VI_REVISION):$(VI_AGE) + +diff -urN gdbm-1.13_orig/compat/Makefile.in gdbm-1.13/compat/Makefile.in +--- gdbm-1.13_orig/compat/Makefile.in 2017-03-11 18:13:28.000000000 +0200 ++++ gdbm-1.13/compat/Makefile.in 2017-10-17 17:55:18.892068300 +0300 +@@ -404,7 +404,7 @@ + dbmrdonly.c + + libgdbm_compat_la_SOURCES = $(DBM_CF) $(NDBM_CF) +-libgdbm_compat_la_LDFLAGS = -version-info $(VI_CURRENT):$(VI_REVISION):$(VI_AGE) ++libgdbm_compat_la_LDFLAGS = -no-undefined -version-info $(VI_CURRENT):$(VI_REVISION):$(VI_AGE) + all: all-am + + .SUFFIXES: +diff -urN gdbm-1.13_orig/configure gdbm-1.13/configure +--- gdbm-1.13_orig/configure 2017-03-11 18:13:28.000000000 +0200 ++++ gdbm-1.13/configure 2017-10-17 07:50:00.462475000 +0300 +@@ -639,6 +639,8 @@ + LTLIBOBJS + LIBOBJS + AUTOM4TE ++WIN32_FALSE ++WIN32_TRUE + GDBM_COND_DEBUG_ENABLE_FALSE + GDBM_COND_DEBUG_ENABLE_TRUE + GDBM_DEBUG_ENABLE +@@ -15081,6 +15083,27 @@ + fi + + ++if test x$host_os = xmingw32 ++then ++ if true; then ++ WIN32_TRUE= ++ WIN32_FALSE='#' ++else ++ WIN32_TRUE='#' ++ WIN32_FALSE= ++fi ++ ++else ++ if false; then ++ WIN32_TRUE= ++ WIN32_FALSE='#' ++else ++ WIN32_TRUE='#' ++ WIN32_FALSE= ++fi ++ ++fi ++ + # Initialize the test suite. + ac_config_commands="$ac_config_commands tests/atconfig" + +@@ -15245,6 +15268,14 @@ + as_fn_error $? "conditional \"GDBM_COND_DEBUG_ENABLE\" was never defined. + Usually this means the macro was only invoked conditionally." "$LINENO" 5 + fi ++if test -z "${WIN32_TRUE}" && test -z "${WIN32_FALSE}"; then ++ as_fn_error $? "conditional \"WIN32\" was never defined. ++Usually this means the macro was only invoked conditionally." "$LINENO" 5 ++fi ++if test -z "${WIN32_TRUE}" && test -z "${WIN32_FALSE}"; then ++ as_fn_error $? "conditional \"WIN32\" was never defined. ++Usually this means the macro was only invoked conditionally." "$LINENO" 5 ++fi + + : "${CONFIG_STATUS=./config.status}" + ac_write_fail=0 +diff -urN gdbm-1.13_orig/configure.ac gdbm-1.13/configure.ac +--- gdbm-1.13_orig/configure.ac 2017-03-11 18:12:35.000000000 +0200 ++++ gdbm-1.13/configure.ac 2017-10-15 14:58:08.480809600 +0300 +@@ -188,6 +188,13 @@ + fi + AM_CONDITIONAL([GDBM_COND_DEBUG_ENABLE], [test "$status_debug" = "yes"]) + ++if test x$host_os = xmingw32 ++then ++ AM_CONDITIONAL(WIN32, true) ++else ++ AM_CONDITIONAL(WIN32, false) ++fi ++ + # Initialize the test suite. + AC_CONFIG_TESTDIR(tests) + AC_CONFIG_FILES([tests/Makefile tests/atlocal po/Makefile.in]) +diff -urN gdbm-1.13_orig/src/falloc.c gdbm-1.13/src/falloc.c +--- gdbm-1.13_orig/src/falloc.c 2017-01-02 13:51:49.000000000 +0200 ++++ gdbm-1.13/src/falloc.c 2017-10-16 01:16:21.304431600 +0300 +@@ -278,7 +278,7 @@ + + /* Split the header block. */ + temp = GDBM_DEBUG_ALLOC ("push_avail_block:malloc-failure", +- malloc (av_size)); ++ calloc (1, av_size)); + if (temp == NULL) + { + GDBM_SET_ERRNO (dbf, GDBM_MALLOC_ERROR, TRUE); +diff -urN gdbm-1.13_orig/src/gdbm_load.c gdbm-1.13/src/gdbm_load.c +--- gdbm-1.13_orig/src/gdbm_load.c 2017-01-02 13:51:49.000000000 +0200 ++++ gdbm-1.13/src/gdbm_load.c 2017-10-16 11:13:42.263226900 +0300 +@@ -18,16 +18,12 @@ + # include "gdbm.h" + # include "gdbmapp.h" + # include "gdbmdefs.h" +-# include +-# include + + int replace = 0; + int meta_mask = 0; + int no_meta_option; + + int mode; +-uid_t owner_uid; +-gid_t owner_gid; + + char *parseopt_program_doc = "load a GDBM database from a file"; + char *parseopt_program_args = "FILE [DB_FILE]"; +@@ -45,6 +41,7 @@ + static int + set_meta_info (GDBM_FILE dbf) + { ++#if 0 + if (meta_mask) + { + int fd = gdbm_fdesc (dbf); +@@ -63,6 +60,7 @@ + return 1; + } + } ++#endif + return 0; + } + +@@ -139,6 +137,7 @@ + } + break; + ++#if 0 + case 'u': + { + size_t len; +@@ -198,6 +197,7 @@ + meta_mask |= GDBM_META_MASK_OWNER; + } + break; ++#endif + + case 'r': + replace = 1; +diff -urN gdbm-1.13_orig/src/gdbmclose.c gdbm-1.13/src/gdbmclose.c +--- gdbm-1.13_orig/src/gdbmclose.c 2017-01-02 13:51:49.000000000 +0200 ++++ gdbm-1.13/src/gdbmclose.c 2017-10-16 01:16:21.335682500 +0300 +@@ -33,9 +33,11 @@ + + if (dbf->desc != -1) + { ++#ifdef HAVE_FSYNC + /* Make sure the database is all on disk. */ + if (dbf->read_write != GDBM_READER) + __fsync (dbf); ++#endif + + /* Close the file and free all malloced memory. */ + #if HAVE_MMAP +diff -urN gdbm-1.13_orig/src/gdbmdump.c gdbm-1.13/src/gdbmdump.c +--- gdbm-1.13_orig/src/gdbmdump.c 2017-01-02 13:51:49.000000000 +0200 ++++ gdbm-1.13/src/gdbmdump.c 2017-10-16 11:37:28.391289300 +0300 +@@ -17,8 +17,6 @@ + # include "autoconf.h" + # include "gdbmdefs.h" + # include "gdbm.h" +-# include +-# include + # include + + static int +@@ -56,8 +54,6 @@ + time_t t; + int fd; + struct stat st; +- struct passwd *pw; +- struct group *gr; + datum key; + size_t count = 0; + unsigned char *buffer = NULL; +@@ -76,13 +72,7 @@ + + fprintf (fp, "#:file=%s\n", dbf->name); + fprintf (fp, "#:uid=%lu,", (unsigned long) st.st_uid); +- pw = getpwuid (st.st_uid); +- if (pw) +- fprintf (fp, "user=%s,", pw->pw_name); + fprintf (fp, "gid=%lu,", (unsigned long) st.st_gid); +- gr = getgrgid (st.st_gid); +- if (gr) +- fprintf (fp, "group=%s,", gr->gr_name); + fprintf (fp, "mode=%03o\n", st.st_mode & 0777); + fprintf (fp, "# End of header\n"); + +@@ -169,7 +159,7 @@ + switch (open_flags) + { + case GDBM_WRCREAT: +- nfd = open (filename, O_WRONLY | O_CREAT | O_EXCL, mode); ++ nfd = open (filename, O_WRONLY | O_BINARY | O_CREAT | O_EXCL, mode); + if (nfd == -1) + { + GDBM_SET_ERRNO (NULL, GDBM_FILE_OPEN_ERROR, FALSE); +@@ -177,7 +167,7 @@ + } + break; + case GDBM_NEWDB: +- nfd = open (filename, O_WRONLY | O_CREAT | O_TRUNC, mode); ++ nfd = open (filename, O_WRONLY | O_BINARY | O_CREAT | O_TRUNC, mode); + if (nfd == -1) + { + GDBM_SET_ERRNO (NULL, GDBM_FILE_OPEN_ERROR, FALSE); +diff -urN gdbm-1.13_orig/src/gdbmexp.c gdbm-1.13/src/gdbmexp.c +--- gdbm-1.13_orig/src/gdbmexp.c 2017-01-02 13:51:49.000000000 +0200 ++++ gdbm-1.13/src/gdbmexp.c 2017-10-16 11:37:49.905254400 +0300 +@@ -19,7 +19,11 @@ + + /* Include system configuration before all else. */ + # include "autoconf.h" ++#ifdef _WIN32 ++# include ++#else + # include ++#endif + + # include "gdbmdefs.h" + # include "gdbm.h" +@@ -99,7 +103,7 @@ + switch (flags) + { + case GDBM_WRCREAT: +- nfd = open (exportfile, O_WRONLY | O_CREAT | O_EXCL, mode); ++ nfd = open (exportfile, O_WRONLY | O_BINARY | O_CREAT | O_EXCL, mode); + if (nfd == -1) + { + GDBM_SET_ERRNO (NULL, GDBM_FILE_OPEN_ERROR, FALSE); +@@ -107,7 +111,7 @@ + } + break; + case GDBM_NEWDB: +- nfd = open (exportfile, O_WRONLY | O_CREAT | O_TRUNC, mode); ++ nfd = open (exportfile, O_WRONLY | O_BINARY | O_CREAT | O_TRUNC, mode); + if (nfd == -1) + { + GDBM_SET_ERRNO (NULL, GDBM_FILE_OPEN_ERROR, FALSE); +@@ -123,7 +127,7 @@ + return -1; + } + +- fp = fdopen (nfd, "w"); ++ fp = fdopen (nfd, "wb"); + if (!fp) + { + close (nfd); +diff -urN gdbm-1.13_orig/src/gdbmimp.c gdbm-1.13/src/gdbmimp.c +--- gdbm-1.13_orig/src/gdbmimp.c 2017-01-02 13:51:49.000000000 +0200 ++++ gdbm-1.13/src/gdbmimp.c 2017-10-16 11:14:21.697484700 +0300 +@@ -18,7 +18,11 @@ + along with GDBM. If not, see . */ + + # include "autoconf.h" ++#ifdef _WIN32 ++# include ++#else + # include ++#endif + # include + + # include "gdbmdefs.h" +diff -urN gdbm-1.13_orig/src/gdbmload.c gdbm-1.13/src/gdbmload.c +--- gdbm-1.13_orig/src/gdbmload.c 2017-01-02 13:51:49.000000000 +0200 ++++ gdbm-1.13/src/gdbmload.c 2017-10-16 11:14:35.419613700 +0300 +@@ -18,8 +18,6 @@ + # include "gdbmdefs.h" + # include "gdbm.h" + # include +-# include +-# include + + struct datbuf + { +@@ -289,14 +287,13 @@ + _set_gdbm_meta_info (GDBM_FILE dbf, char *param, int meta_mask) + { + unsigned long n; +- uid_t owner_uid; +- uid_t owner_gid; + mode_t mode; + int meta_flags = 0; + const char *p; + char *end; + int rc = 0; + ++#if 0 + if (!(meta_mask & GDBM_META_MASK_OWNER)) + { + p = getparm (param, "user"); +@@ -342,6 +339,7 @@ + } + } + } ++#endif + + if (!(meta_mask & GDBM_META_MASK_MODE)) + { +@@ -358,6 +356,7 @@ + } + } + ++#if 0 + if (meta_flags) + { + int fd = gdbm_fdesc (dbf); +@@ -384,6 +383,7 @@ + rc = 1; + } + } ++#endif + return rc; + } + +diff -urN gdbm-1.13_orig/src/gdbmopen.c gdbm-1.13/src/gdbmopen.c +--- gdbm-1.13_orig/src/gdbmopen.c 2017-01-02 13:51:49.000000000 +0200 ++++ gdbm-1.13/src/gdbmopen.c 2017-10-16 16:20:56.453038100 +0300 +@@ -32,7 +32,7 @@ + #endif + + static void +-compute_directory_size (GDBM_FILE dbf, blksize_t block_size, ++compute_directory_size (GDBM_FILE dbf, ssize_t block_size, + int *ret_dir_size, int *ret_dir_bits) + { + /* Create the initial hash table directory. */ +@@ -197,8 +197,7 @@ + if (!(flags & GDBM_CLOERROR)) + dbf->desc = -1; + gdbm_close (dbf); +- GDBM_SET_ERRNO2 (NULL, GDBM_BLOCK_SIZE_ERROR, FALSE, +- GDBM_DEBUG_OPEN); ++ GDBM_SET_ERRNO2 (NULL, GDBM_BLOCK_SIZE_ERROR, FALSE,GDBM_DEBUG_OPEN); + return NULL; + } + else +@@ -241,7 +240,7 @@ + (dbf->header->block_size - sizeof (hash_bucket)) + / sizeof (bucket_element) + 1; + dbf->header->bucket_size = dbf->header->block_size; +- dbf->bucket = (hash_bucket *) malloc (dbf->header->bucket_size); ++ dbf->bucket = (hash_bucket *) calloc (1, dbf->header->bucket_size); + if (dbf->bucket == NULL) + { + if (!(flags & GDBM_CLOERROR)) +@@ -304,8 +303,10 @@ + return NULL; + } + ++#ifdef HAVE_FSYNC + /* Wait for initial configuration to be written to disk. */ + __fsync (dbf); ++#endif + + free (dbf->bucket); + } +@@ -497,6 +498,8 @@ + } + if (flags & GDBM_CLOEXEC) + fbits |= O_CLOEXEC; ++ ++ fbits |= O_BINARY; + + fd = open (file, fbits, mode); + if (fd < 0) +@@ -529,7 +532,7 @@ + { + (dbf->bucket_cache[index]).ca_bucket = + GDBM_DEBUG_ALLOC ("_gdbm_init_cache:bucket-malloc-failure", +- malloc (dbf->header->bucket_size)); ++ calloc (1, dbf->header->bucket_size)); + if ((dbf->bucket_cache[index]).ca_bucket == NULL) + { + GDBM_SET_ERRNO (dbf, GDBM_MALLOC_ERROR, TRUE); +diff -urN gdbm-1.13_orig/src/gdbmsetopt.c gdbm-1.13/src/gdbmsetopt.c +--- gdbm-1.13_orig/src/gdbmsetopt.c 2017-01-02 13:51:49.000000000 +0200 ++++ gdbm-1.13/src/gdbmsetopt.c 2017-10-17 17:44:45.333660700 +0300 +@@ -248,6 +248,7 @@ + *(size_t*) optval = dbf->mapped_size_max; + return 0; + } ++#endif + + static int + setopt_gdbm_getflags (GDBM_FILE dbf, void *optval, int optlen) +@@ -270,7 +271,6 @@ + } + return 0; + } +-#endif + + static int + setopt_gdbm_getdbname (GDBM_FILE dbf, void *optval, int optlen) +@@ -323,8 +323,8 @@ + [GDBM_GETMMAP] = setopt_gdbm_getmmap, + [GDBM_SETMAXMAPSIZE] = setopt_gdbm_setmaxmapsize, + [GDBM_GETMAXMAPSIZE] = setopt_gdbm_getmaxmapsize, +- [GDBM_GETFLAGS] = setopt_gdbm_getflags, + #endif ++ [GDBM_GETFLAGS] = setopt_gdbm_getflags, + [GDBM_GETDBNAME] = setopt_gdbm_getdbname, + [GDBM_GETBLOCKSIZE] = setopt_gdbm_getblocksize, + }; +diff -urN gdbm-1.13_orig/src/gdbmsync.c gdbm-1.13/src/gdbmsync.c +--- gdbm-1.13_orig/src/gdbmsync.c 2017-01-02 13:51:49.000000000 +0200 ++++ gdbm-1.13/src/gdbmsync.c 2017-10-16 01:16:21.389066700 +0300 +@@ -33,7 +33,8 @@ + /* Initialize the gdbm_errno variable. */ + gdbm_set_errno (dbf, GDBM_NO_ERROR, FALSE); + ++#ifdef HAVE_FSYNC + /* Do the sync on the file. */ + __fsync (dbf); +- ++#endif + } +diff -urN gdbm-1.13_orig/src/gdbmtool.c gdbm-1.13/src/gdbmtool.c +--- gdbm-1.13_orig/src/gdbmtool.c 2017-01-02 13:51:49.000000000 +0200 ++++ gdbm-1.13/src/gdbmtool.c 2017-10-15 14:58:08.565135600 +0300 +@@ -22,8 +22,6 @@ + #include + #include + #include +-#include +-#include + #ifdef HAVE_SYS_TERMIOS_H + # include + #endif +@@ -1945,6 +1943,7 @@ + if (setsource (GDBMTOOLRC, 0) == 0) + yyparse (); + } ++#if 0 + else + { + char *fname; +@@ -1967,6 +1966,7 @@ + } + free (fname); + } ++#endif + } + + #if GDBM_DEBUG_ENABLE +@@ -2087,8 +2087,6 @@ + if (argc == 1) + file_name = estrdup (argv[0]); + +- signal (SIGPIPE, SIG_IGN); +- + memset (¶m, 0, sizeof (param)); + argmax = 0; + +diff -urN gdbm-1.13_orig/src/lock.c gdbm-1.13/src/lock.c +--- gdbm-1.13_orig/src/lock.c 2017-01-02 13:51:50.000000000 +0200 ++++ gdbm-1.13/src/lock.c 2017-10-16 01:16:21.435949700 +0300 +@@ -23,7 +23,7 @@ + + #include + +-#if HAVE_FLOCK ++#if HAVE_FLOCK || defined(_WIN32) + # ifndef LOCK_SH + # define LOCK_SH 1 + # endif +@@ -41,6 +41,83 @@ + # endif + #endif + ++#ifdef _WIN32 ++#include ++#include ++ ++/* ++ * flock support code for windows ++ * ++ * This code is derived from ruby (http://www.ruby-lang.org/). ++ * Original copyright notice is below. ++ */ ++/* ++ * Copyright (c) 1993, Intergraph Corporation ++ * ++ * You may distribute under the terms of either the GNU General Public ++ * License or the Artistic License, as specified in the perl README file. ++ * ++ * Various Unix compatibility functions and NT specific functions. ++ * ++ * Some of this code was derived from the MSDOS port(s) and the OS/2 port. ++ * ++ */ ++ ++#ifndef EWOULDBLOCK ++#define EWOULDBLOCK 10035 /* EBASEERR + 35 (winsock.h) */ ++#endif ++ ++#define LK_ERR(f,i) ((f) ? (i = 0) : (errno = GetLastError() == ERROR_LOCK_VIOLATION ? EWOULDBLOCK : EACCES)) ++#define LK_LEN ULONG_MAX ++ ++static int ++flock_winnt(HANDLE fh, int oper) ++{ ++ OVERLAPPED o; ++ int i = -1; ++ ++ memset(&o, 0, sizeof(o)); ++ ++ switch(oper) { ++ case LOCK_SH: /* shared lock */ ++ LK_ERR(LockFileEx(fh, 0, 0, LK_LEN, LK_LEN, &o), i); ++ break; ++ case LOCK_EX: /* exclusive lock */ ++ LK_ERR(LockFileEx(fh, LOCKFILE_EXCLUSIVE_LOCK, 0, LK_LEN, LK_LEN, &o), i); ++ break; ++ case LOCK_SH|LOCK_NB: /* non-blocking shared lock */ ++ LK_ERR(LockFileEx(fh, LOCKFILE_FAIL_IMMEDIATELY, 0, LK_LEN, LK_LEN, &o), i); ++ break; ++ case LOCK_EX|LOCK_NB: /* non-blocking exclusive lock */ ++ LK_ERR(LockFileEx(fh, ++ LOCKFILE_EXCLUSIVE_LOCK|LOCKFILE_FAIL_IMMEDIATELY, ++ 0, LK_LEN, LK_LEN, &o), i); ++ break; ++ case LOCK_UN: /* unlock lock */ ++ LK_ERR(UnlockFileEx(fh, 0, LK_LEN, LK_LEN, &o), i); ++ break; ++ default: /* unknown */ ++ errno = EINVAL; ++ break; ++ } ++ return i; ++} ++ ++#undef LK_ERR ++ ++int ++flock(int fd, int oper) ++{ ++ static int (*locker)(HANDLE, int) = NULL; ++ ++ if (!locker) { ++ locker = flock_winnt; ++ } ++ ++ return locker((HANDLE)_get_osfhandle(fd), oper); ++} ++#endif /* _WIN32 */ ++ + #if defined(F_SETLK) && defined(F_RDLCK) && defined(F_WRLCK) + # define HAVE_FCNTL_LOCK 1 + #else +@@ -65,7 +142,7 @@ + switch (dbf->lock_type) + { + case LOCKING_FLOCK: +-#if HAVE_FLOCK ++#if HAVE_FLOCK || defined(_WIN32) + flock (dbf->desc, LOCK_UN); + #endif + break; +@@ -101,7 +178,7 @@ + #endif + int lock_val = -1; + +-#if HAVE_FLOCK ++#if HAVE_FLOCK || defined(_WIN32) + if (dbf->read_write == GDBM_READER) + lock_val = flock (dbf->desc, LOCK_SH + LOCK_NB); + else +diff -urN gdbm-1.13_orig/src/Makefile.am gdbm-1.13/src/Makefile.am +--- gdbm-1.13_orig/src/Makefile.am 2017-03-07 08:36:59.000000000 +0200 ++++ gdbm-1.13/src/Makefile.am 2017-10-17 18:12:16.467558700 +0300 +@@ -74,7 +74,7 @@ + libgdbm_la_SOURCES += debug.c + endif + +-libgdbm_la_LDFLAGS = -version-info $(VI_CURRENT):$(VI_REVISION):$(VI_AGE) ++libgdbm_la_LDFLAGS = -no-undefined -lws2_32 -version-info $(VI_CURRENT):$(VI_REVISION):$(VI_AGE) + + noinst_LIBRARIES = libgdbmapp.a + +diff -urN gdbm-1.13_orig/src/Makefile.in gdbm-1.13/src/Makefile.in +--- gdbm-1.13_orig/src/Makefile.in 2017-03-11 18:13:28.000000000 +0200 ++++ gdbm-1.13/src/Makefile.in 2017-10-17 18:12:11.409649700 +0300 +@@ -459,7 +459,7 @@ + gdbmsetopt.c gdbmstore.c gdbmsync.c base64.c bucket.c falloc.c \ + findkey.c fullio.c hash.c lock.c mmap.c recover.c update.c \ + version.c $(am__append_1) +-libgdbm_la_LDFLAGS = -version-info $(VI_CURRENT):$(VI_REVISION):$(VI_AGE) ++libgdbm_la_LDFLAGS = -no-undefined -lws2_32 -version-info $(VI_CURRENT):$(VI_REVISION):$(VI_AGE) + noinst_LIBRARIES = libgdbmapp.a + libgdbmapp_a_SOURCES = \ + err.c\ +diff -urN gdbm-1.13_orig/src/mem.c gdbm-1.13/src/mem.c +--- gdbm-1.13_orig/src/mem.c 2017-01-02 13:51:50.000000000 +0200 ++++ gdbm-1.13/src/mem.c 2017-10-16 00:59:26.091489400 +0300 +@@ -14,7 +14,7 @@ + You should have received a copy of the GNU General Public License + along with GDBM. If not, see . */ + +-# include "autoconf.h" ++# include "../autoconf.h" + # include "gdbm.h" + # include "gdbmapp.h" + # include "gdbmdefs.h" +diff -urN gdbm-1.13_orig/src/parseopt.c gdbm-1.13/src/parseopt.c +--- gdbm-1.13_orig/src/parseopt.c 2017-01-02 13:53:22.000000000 +0200 ++++ gdbm-1.13/src/parseopt.c 2017-10-16 01:16:21.451572800 +0300 +@@ -14,10 +14,11 @@ + You should have received a copy of the GNU General Public License + along with GDBM. If not, see . */ + +-# include "autoconf.h" ++# include "../autoconf.h" + # include "gdbm.h" + # include "gdbmapp.h" + # include "gdbmdefs.h" ++#include "autoconf.h" + # include + # include + # include +diff -urN gdbm-1.13_orig/src/progname.c gdbm-1.13/src/progname.c +--- gdbm-1.13_orig/src/progname.c 2017-01-02 13:51:50.000000000 +0200 ++++ gdbm-1.13/src/progname.c 2017-10-16 00:59:25.953463100 +0300 +@@ -14,7 +14,7 @@ + You should have received a copy of the GNU General Public License + along with GDBM. If not, see . */ + +-# include "autoconf.h" ++# include "../autoconf.h" + # include "gdbm.h" + # include "gdbmapp.h" + # include +diff -urN gdbm-1.13_orig/src/recover.c gdbm-1.13/src/recover.c +--- gdbm-1.13_orig/src/recover.c 2017-01-02 13:51:50.000000000 +0200 ++++ gdbm-1.13/src/recover.c 2017-10-16 10:40:55.115902500 +0300 +@@ -29,16 +29,20 @@ + GDBM_SET_ERRNO (src, GDBM_FILE_STAT_ERROR, src->need_recovery); + return -1; + } ++#if HAVE_FCHOWN + if (fchown (dst->desc, st.st_uid, st.st_gid)) + { + GDBM_SET_ERRNO (dst, GDBM_ERR_FILE_OWNER, dst->need_recovery); + return -1; + } ++#endif ++#if HAVE_FCHMOD + if (fchmod (dst->desc, st.st_mode & 0777)) + { + GDBM_SET_ERRNO (dst, GDBM_ERR_FILE_MODE, dst->need_recovery); + return -1; + } ++#endif + return 0; + } + +@@ -130,18 +134,34 @@ + } + + /* Move the new file to old name. */ ++#ifdef _WIN32 ++ close (new_dbf->desc); + ++ if (dbf->file_locking) ++ { ++ _gdbm_unlock_file (dbf); ++ } ++ close (dbf->desc); ++#endif + if (rename (new_dbf->name, dbf->name) != 0) + { + GDBM_SET_ERRNO (NULL, GDBM_REORGANIZE_FAILED, FALSE); ++#ifdef _WIN32 ++ dbf->desc = open (dbf->name, O_RDWR|O_BINARY, 0); ++ new_dbf->desc = open (new_dbf->name, O_RDWR|O_BINARY, 0); ++#endif + gdbm_close (new_dbf); + return -1; + } + + /* Fix up DBF to have the correct information for the new file. */ ++#ifdef _WIN32 ++ new_dbf->desc = open (dbf->name, O_RDWR|O_BINARY, 0); ++#else + if (dbf->file_locking) + _gdbm_unlock_file (dbf); + close (dbf->desc); ++#endif + free (dbf->header); + free (dbf->dir); + +diff -urN gdbm-1.13_orig/src/systems.h gdbm-1.13/src/systems.h +--- gdbm-1.13_orig/src/systems.h 2017-01-02 13:51:50.000000000 +0200 ++++ gdbm-1.13/src/systems.h 2017-10-15 14:52:33.264735300 +0300 +@@ -18,6 +18,11 @@ + along with GDBM. If not, see . */ + + /* Include all system headers first. */ ++#ifdef _WIN32 ++# undef _WIN32_WINNT ++# define _WIN32_WINNT 0x0501 ++# include ++#endif + #include + #include + #if HAVE_SYS_FILE_H +@@ -42,6 +47,10 @@ + # define O_CLOEXEC 0 + #endif + ++#ifndef O_BINARY ++# define O_BINARY 0 ++#endif ++ + /* Default block size. Some systems do not have blocksize in their + stat record. This code uses the BSD blocksize from stat. */ + +@@ -55,7 +64,7 @@ + #if HAVE_FTRUNCATE + # define TRUNCATE(dbf) ftruncate (dbf->desc, 0) + #else +-# define TRUNCATE(dbf) close( open (dbf->name, O_RDWR|O_TRUNC, mode)); ++# define TRUNCATE(dbf) close( open (dbf->name, O_RDWR|O_TRUNC|O_BINARY, mode)); + #endif + + #ifndef STDERR_FILENO +@@ -74,8 +83,14 @@ + # define __lseek(_dbf, _off, _whn) lseek(_dbf->desc, _off, _whn) + # if HAVE_FSYNC + # define __fsync(_dbf) fsync(_dbf->desc) ++# elif defined(_WIN32) ++# define __fsync(_dbf) _commit(_dbf->desc) + # else + # define __fsync(_dbf) { sync(); sync(); } + # endif + #endif + ++/* Windows port of flock */ ++#ifdef _WIN32 ++extern int flock(int fd, int oper); ++#endif +diff -urN gdbm-1.13_orig/src/update.c gdbm-1.13/src/update.c +--- gdbm-1.13_orig/src/update.c 2017-01-02 13:51:50.000000000 +0200 ++++ gdbm-1.13/src/update.c 2017-10-16 01:16:21.467198500 +0300 +@@ -51,8 +51,10 @@ + } + + /* Sync the file if fast_write is FALSE. */ +- if (dbf->fast_write == FALSE) +- __fsync (dbf); ++#ifdef HAVE_FSYNC ++ if (dbf->fast_write == FALSE) ++ __fsync (dbf); ++#endif + + return 0; + } +@@ -117,8 +119,10 @@ + } + + dbf->directory_changed = FALSE; ++#ifdef HAVE_FSYNC + if (!dbf->header_changed && dbf->fast_write == FALSE) + __fsync (dbf); ++#endif + } + + /* Final write of the header. */ +diff -urN gdbm-1.13_orig/src/util.c gdbm-1.13/src/util.c +--- gdbm-1.13_orig/src/util.c 2017-01-02 13:51:50.000000000 +0200 ++++ gdbm-1.13/src/util.c 2017-10-15 14:58:08.581265000 +0300 +@@ -16,7 +16,6 @@ + along with GDBM. If not, see . */ + + #include "gdbmtool.h" +-#include + + char * + mkfilename (const char *dir, const char *file, const char *suf) +@@ -45,6 +44,7 @@ + char * + tildexpand (char *s) + { ++#if 0 + if (s[0] == '~') + { + char *p = s + 1; +@@ -65,6 +65,7 @@ + if (pw) + return mkfilename (pw->pw_dir, p + len + 1, NULL); + } ++#endif + return estrdup (s); + } + +diff -urN gdbm-1.13_orig/tests/blocksize02.at gdbm-1.13/tests/blocksize02.at +--- gdbm-1.13_orig/tests/blocksize02.at 2017-01-02 13:51:50.000000000 +0200 ++++ gdbm-1.13/tests/blocksize02.at 2017-10-16 21:14:26.960850500 +0300 +@@ -22,7 +22,6 @@ + ], + [1], + [], +-[gdbm_open failed: Block size error +-]) ++[gdbm_open failed: Block size error]) + + AT_CLEANUP +diff -urN gdbm-1.13_orig/tests/dbmdel01.at gdbm-1.13/tests/dbmdel01.at +--- gdbm-1.13_orig/tests/dbmdel01.at 2017-01-02 13:51:50.000000000 +0200 ++++ gdbm-1.13/tests/dbmdel01.at 2017-10-17 18:17:59.290641400 +0300 +@@ -25,7 +25,7 @@ + ], + [2], + [], +-[dtdel: cannot delete 11: Item not found ++[dtdel.exe: cannot delete 11: Item not found + ]) + + AT_CLEANUP +diff -urN gdbm-1.13_orig/tests/dbmfetch01.at gdbm-1.13/tests/dbmfetch01.at +--- gdbm-1.13_orig/tests/dbmfetch01.at 2017-01-02 13:51:50.000000000 +0200 ++++ gdbm-1.13/tests/dbmfetch01.at 2017-10-17 18:17:39.572328700 +0300 +@@ -24,7 +24,7 @@ + ], + [2], + [], +-[dtfetch: 0: not found ++[dtfetch.exe: 0: not found + ]) + + AT_CLEANUP +diff -urN gdbm-1.13_orig/tests/delete01.at gdbm-1.13/tests/delete01.at +--- gdbm-1.13_orig/tests/delete01.at 2017-01-02 13:51:50.000000000 +0200 ++++ gdbm-1.13/tests/delete01.at 2017-10-16 15:55:24.861788500 +0300 +@@ -24,7 +24,7 @@ + ], + [2], + [], +-[gtdel: cannot delete 11: Item not found ++[gtdel.exe: cannot delete 11: Item not found + ]) + + AT_CLEANUP +diff -urN gdbm-1.13_orig/tests/dtdel.c gdbm-1.13/tests/dtdel.c +--- gdbm-1.13_orig/tests/dtdel.c 2017-01-02 13:51:50.000000000 +0200 ++++ gdbm-1.13/tests/dtdel.c 2017-10-16 01:16:21.567462300 +0300 +@@ -16,6 +16,7 @@ + */ + #include "autoconf.h" + #include ++#include + #include + #include + #include "dbm.h" +@@ -30,7 +31,12 @@ + int flags = 0; + int data_z = 0; + int rc = 0; +- ++ ++#ifdef _WIN32 ++ _setmode(_fileno(stdout), O_BINARY); ++ _setmode(_fileno(stderr), O_BINARY); ++#endif ++ + while (--argc) + { + char *arg = *++argv; +diff -urN gdbm-1.13_orig/tests/dtdump.c gdbm-1.13/tests/dtdump.c +--- gdbm-1.13_orig/tests/dtdump.c 2017-01-02 13:51:50.000000000 +0200 ++++ gdbm-1.13/tests/dtdump.c 2017-10-16 01:16:21.567462300 +0300 +@@ -16,10 +16,13 @@ + */ + #include "autoconf.h" + #include ++#include + #include + #include + #include "dbm.h" + #include "progname.h" ++#include "../src/gdbm.h" ++#include "../compat/dbm.h" + + int + main (int argc, char **argv) +@@ -29,7 +32,12 @@ + datum key; + datum data; + int delim = '\t'; +- ++ ++#ifdef _WIN32 ++ _setmode(_fileno(stdout), O_BINARY); ++ _setmode(_fileno(stderr), O_BINARY); ++#endif ++ + while (--argc) + { + char *arg = *++argv; +diff -urN gdbm-1.13_orig/tests/dtfetch.c gdbm-1.13/tests/dtfetch.c +--- gdbm-1.13_orig/tests/dtfetch.c 2017-01-02 13:51:50.000000000 +0200 ++++ gdbm-1.13/tests/dtfetch.c 2017-10-16 01:16:21.567462300 +0300 +@@ -16,6 +16,7 @@ + */ + #include "autoconf.h" + #include ++#include + #include + #include + #include "dbm.h" +@@ -44,7 +45,12 @@ + int data_z = 0; + int delim = 0; + int rc = 0; +- ++ ++#ifdef _WIN32 ++ _setmode(_fileno(stdout), O_BINARY); ++ _setmode(_fileno(stderr), O_BINARY); ++#endif ++ + while (--argc) + { + char *arg = *++argv; +diff -urN gdbm-1.13_orig/tests/dtload.c gdbm-1.13/tests/dtload.c +--- gdbm-1.13_orig/tests/dtload.c 2017-01-02 13:51:50.000000000 +0200 ++++ gdbm-1.13/tests/dtload.c 2017-10-16 01:16:21.567462300 +0300 +@@ -16,6 +16,7 @@ + */ + #include "autoconf.h" + #include ++#include + #include + #include + #include +@@ -39,7 +40,13 @@ + datum data; + int delim = '\t'; + int data_z = 0; +- ++ ++#ifdef _WIN32 ++ _setmode(_fileno(stdin), O_BINARY); ++ _setmode(_fileno(stdout), O_BINARY); ++ _setmode(_fileno(stderr), O_BINARY); ++#endif ++ + while (--argc) + { + char *arg = *++argv; +diff -urN gdbm-1.13_orig/tests/fetch01.at gdbm-1.13/tests/fetch01.at +--- gdbm-1.13_orig/tests/fetch01.at 2017-01-02 13:51:50.000000000 +0200 ++++ gdbm-1.13/tests/fetch01.at 2017-10-16 15:55:01.789644100 +0300 +@@ -23,7 +23,7 @@ + ], + [2], + [], +-[gtfetch: 0: not found ++[gtfetch.exe: 0: not found + ]) + + AT_CLEANUP +diff -urN gdbm-1.13_orig/tests/gtdel.c gdbm-1.13/tests/gtdel.c +--- gdbm-1.13_orig/tests/gtdel.c 2017-01-02 13:51:50.000000000 +0200 ++++ gdbm-1.13/tests/gtdel.c 2017-10-16 01:16:21.589095300 +0300 +@@ -16,6 +16,7 @@ + */ + #include "autoconf.h" + #include ++#include + #include + #include + #include "gdbm.h" +@@ -31,7 +32,12 @@ + GDBM_FILE dbf; + int data_z = 0; + int rc = 0; +- ++ ++#ifdef _WIN32 ++ _setmode(_fileno(stdout), O_BINARY); ++ _setmode(_fileno(stderr), O_BINARY); ++#endif ++ + while (--argc) + { + char *arg = *++argv; +diff -urN gdbm-1.13_orig/tests/gtdump.c gdbm-1.13/tests/gtdump.c +--- gdbm-1.13_orig/tests/gtdump.c 2017-01-02 13:51:50.000000000 +0200 ++++ gdbm-1.13/tests/gtdump.c 2017-10-16 01:40:12.870931100 +0300 +@@ -17,6 +17,7 @@ + #include "autoconf.h" + #include + #include ++#include + #include + #include "gdbm.h" + #include "progname.h" +@@ -31,7 +32,12 @@ + int flags = 0; + GDBM_FILE dbf; + int delim = '\t'; +- ++ ++#ifdef _WIN32 ++ _setmode(_fileno(stdin), O_BINARY); ++ _setmode(_fileno(stdout), O_BINARY); ++#endif ++ + while (--argc) + { + char *arg = *++argv; +diff -urN gdbm-1.13_orig/tests/gtfetch.c gdbm-1.13/tests/gtfetch.c +--- gdbm-1.13_orig/tests/gtfetch.c 2017-01-02 13:51:50.000000000 +0200 ++++ gdbm-1.13/tests/gtfetch.c 2017-10-16 01:16:21.589095300 +0300 +@@ -16,6 +16,7 @@ + */ + #include "autoconf.h" + #include ++#include + #include + #include + #include "gdbm.h" +@@ -46,7 +47,12 @@ + int data_z = 0; + int delim = 0; + int rc = 0; +- ++ ++#ifdef _WIN32 ++ _setmode(_fileno(stdout), O_BINARY); ++ _setmode(_fileno(stderr), O_BINARY); ++#endif ++ + while (--argc) + { + char *arg = *++argv; +diff -urN gdbm-1.13_orig/tests/gtload.c gdbm-1.13/tests/gtload.c +--- gdbm-1.13_orig/tests/gtload.c 2017-01-02 13:51:50.000000000 +0200 ++++ gdbm-1.13/tests/gtload.c 2017-10-16 21:13:53.623781000 +0300 +@@ -16,6 +16,7 @@ + */ + #include "autoconf.h" + #include ++#include + #include + #include + #include +@@ -163,6 +164,11 @@ + #ifdef GDBM_DEBUG_ENABLE + gdbm_debug_printer = debug_printer; + #endif ++ ++#ifdef _WIN32 ++ _setmode(_fileno(stdin), O_BINARY); ++ _setmode(_fileno(stdout), O_BINARY); ++#endif + + while (--argc) + { +@@ -267,7 +273,7 @@ + dbf = gdbm_open (dbname, block_size, mode|flags, 00664, NULL); + if (!dbf) + { +- fprintf (stderr, "gdbm_open failed: %s\n", gdbm_strerror (gdbm_errno)); ++ fprintf (stderr, "gdbm_open failed: %s", gdbm_strerror (gdbm_errno)); + exit (1); + } + +diff -urN gdbm-1.13_orig/tests/gtopt.c gdbm-1.13/tests/gtopt.c +--- gdbm-1.13_orig/tests/gtopt.c 2017-01-02 13:51:50.000000000 +0200 ++++ gdbm-1.13/tests/gtopt.c 2017-10-17 17:41:49.230922400 +0300 +@@ -178,7 +178,11 @@ + int + test_maxmapsize (void *valptr) + { ++#ifdef _SC_PAGESIZE + size_t page_size = sysconf (_SC_PAGESIZE); ++#else ++ size_t page_size = 4096; ++#endif + size_t expected_size = ((mapped_size_max + page_size - 1) / page_size) * + page_size; + return (*(size_t*) valptr == expected_size) ? RES_PASS : RES_FAIL; +@@ -308,7 +312,11 @@ + { + GDBM_FILE dbf; + struct optest *op; +- ++ ++#ifdef _WIN32 ++ _setmode(_fileno(stdout), O_BINARY); ++#endif ++ + progname = canonical_progname (argv[0]); + while (--argc) + { +diff -urN gdbm-1.13_orig/tests/gtver.c gdbm-1.13/tests/gtver.c +--- gdbm-1.13_orig/tests/gtver.c 2017-01-02 13:51:50.000000000 +0200 ++++ gdbm-1.13/tests/gtver.c 2017-10-16 01:16:21.620463400 +0300 +@@ -17,6 +17,7 @@ + #include "autoconf.h" + #include + #include ++#include + #include + #include "gdbm.h" + #include "progname.h" +@@ -31,6 +32,10 @@ + const char *progname = canonical_progname (argv[0]); + int library = 0; + ++#ifdef _WIN32 ++ _setmode(_fileno(stdout), O_BINARY); ++#endif ++ + if (argc == 1) + { + printf ("%s\n", gdbm_version); +diff -urN gdbm-1.13_orig/tests/num2word.c gdbm-1.13/tests/num2word.c +--- gdbm-1.13_orig/tests/num2word.c 2017-01-02 13:51:50.000000000 +0200 ++++ gdbm-1.13/tests/num2word.c 2017-10-16 01:16:21.636089000 +0300 +@@ -17,6 +17,7 @@ + #include "autoconf.h" + #include + #include ++#include + #include + #include + #include +@@ -203,6 +204,10 @@ + int + main (int argc, char **argv) + { ++#ifdef _WIN32 ++ _setmode(_fileno(stdout), O_BINARY); ++#endif ++ + progname = argv[0]; + + if (argc == 1 || strcmp (argv[1], "-h") == 0) +diff -urN gdbm-1.13_orig/tests/testsuite gdbm-1.13/tests/testsuite +--- gdbm-1.13_orig/tests/testsuite 2017-03-11 18:13:49.000000000 +0200 ++++ gdbm-1.13/tests/testsuite 2017-10-16 21:14:34.117146600 +0300 +@@ -2159,7 +2159,7 @@ + ) >>"$at_stdout" 2>>"$at_stderr" 5>&- + at_status=$? at_failed=false + $at_check_filter +-echo >>"$at_stderr"; $as_echo "gtfetch: 0: not found ++echo >>"$at_stderr"; $as_echo "gtfetch.exe: 0: not found + " | \ + $at_diff - "$at_stderr" || at_failed=: + at_fn_diff_devnull "$at_stdout" || at_failed=: +@@ -2255,7 +2255,7 @@ + ) >>"$at_stdout" 2>>"$at_stderr" 5>&- + at_status=$? at_failed=false + $at_check_filter +-echo >>"$at_stderr"; $as_echo "gtdel: cannot delete 11: Item not found ++echo >>"$at_stderr"; $as_echo "gtdel.exe: cannot delete 11: Item not found + " | \ + $at_diff - "$at_stderr" || at_failed=: + at_fn_diff_devnull "$at_stdout" || at_failed=: +@@ -2430,8 +2430,7 @@ + ) >>"$at_stdout" 2>>"$at_stderr" 5>&- + at_status=$? at_failed=false + $at_check_filter +-echo >>"$at_stderr"; $as_echo "gdbm_open failed: Block size error +-" | \ ++echo >>"$at_stderr"; $as_echo "gdbm_open failed: Block size error" | \ + $at_diff - "$at_stderr" || at_failed=: + at_fn_diff_devnull "$at_stdout" || at_failed=: + at_fn_check_status 1 $at_status "$at_srcdir/blocksize02.at:20" diff --git a/scripts/gdbm.sh b/scripts/gdbm.sh index c65661d00..27b3435f2 100644 --- a/scripts/gdbm.sh +++ b/scripts/gdbm.sh @@ -35,7 +35,7 @@ # ************************************************************************** -PKG_VERSION=1.10 +PKG_VERSION=1.13 PKG_NAME=gdbm-${PKG_VERSION} PKG_DIR_NAME=gdbm-${PKG_VERSION} PKG_TYPE=.tar.gz @@ -47,8 +47,7 @@ PKG_PRIORITY=extra # PKG_PATCHES=( - gdbm/gdbm-1.10-zeroheaders.patch - gdbm/gdbm-win32-support.patch + gdbm/gdbm_1.13-win32-support.patch ) #