(Answer) (Category) OpenLDAP Faq-O-Matic : (Category) OpenLDAP Developer's FAQ : (Category) Porting OpenLDAP : (Category) Porting to MinGW : (Answer) patches-gdbm.txt
At the time of this writing, the latest version of GDBM is 1.8.0. This version needs some minor changes to support MinGW. The diffs for these files are provided here.
Index: ./Makefile.in
30c30
< CFLAGS = -O
---
> CFLAGS = @CFLAGS@
34c34
< prefix = /usr/local
---
> prefix = @prefix@
124c124
<       $(LIBTOOL) install -c libgdbm.la $(libdir)/libgdbm.la
---
>       $(LIBTOOL) $(INSTALL) -c libgdbm.la $(libdir)/libgdbm.la

Index: ./dbminit.c
53a54
> #ifndef _WIN32
54a56
> #endif
93a96,97
> #ifndef _WIN32
> 
118a123,124
> 
> #endif

Index: ./dbmopen.c
62a63
> #ifndef _WIN32
63a65
> #endif
107a110,111
> #ifndef _WIN32
> 
132a137,138
> 
> #endif

Index: ./gdbmopen.c
123a124,127
> #ifdef _WIN32
>   _fmode = _O_BINARY;
> #endif
> 

Index: ./systems.h
53a54,57
> #ifdef _WIN32
> #include <sys/locking.h>
> #endif
> 
85a90,105
> #elif defined(_WIN32)
> 
> #define UNLOCK_FILE(dbf)                              \
>       {                                               \
>           _lseek(dbf->desc, 0, SEEK_SET);             \
>           _locking(dbf->desc, _LK_UNLOCK, 1);         \
>       }
> 
> #define READLOCK_FILE(dbf)                                    \
>       {                                                       \
>           _lseek(dbf->desc, 0, SEEK_SET);                     \
>           lock_val = _locking(dbf->desc, _LK_NBLCK, 1);       \
>       }
> 
> #define WRITELOCK_FILE(dbf)   READLOCK_FILE(dbf)
> 
126a147,149
> #ifdef _WIN32
> #define fsync(f) { extern int _commit(int); _commit(f); _commit(f); }
> #else
127a151
> #endif
"_LK_UNLOCK" doesn't apear to exist but "_LK_UNLCK" works
Also appears to be needed:
 --- gdbmreorg.c.orig Mon Oct  7 14:38:26 2002
 +++ gdbmreorg.c Fri Nov 30 09:43:13 2007
 @@ -102,9 +102,13 @@
      }
    strcpy (&new_name[0], dbf->name);
    new_name[len+2] = 0;
    new_name[len+1] = '#';
 +#ifndef _WIN32
    while ( (len > 0) && new_name[len-1] != '/')
 +#else
 +  while ( (len > 0) && new_name[len-1] != '\\')
 +#endif
      {
        new_name[len] = new_name[len-1];
        len -= 1;
      }

[Append to This Answer]
Previous: (Answer) patches-gcc-specs.txt
Next: (Answer) patches-libtool.txt
This document is: http://www.openldap.org/faq/index.cgi?file=380
[Search] [Appearance]
This is a Faq-O-Matic 2.721.test.
© Copyright 1998-2013, OpenLDAP Foundation, info@OpenLDAP.org