]> git.sur5r.net Git - openldap/blobdiff - libraries/libldbm/ldbm.c
Provide a little information about SDF, how to use it, and where to get it.h
[openldap] / libraries / libldbm / ldbm.c
index 4a9fbc59f7d65d61f4125342ab42e1259ff10ea8..0ce41481c8213a876c0c8826c69fa0edce2b1e47 100644 (file)
@@ -26,6 +26,7 @@ ldbm_datum_free( LDBM ldbm, Datum data )
        if ( data.dptr ) {
                free( data.dptr );
                memset( &data, 0, sizeof( Datum ));
+               data.dptr = NULL;
        }
 }
 
@@ -411,7 +412,9 @@ ldbm_errno( LDBM ldbm )
 
 #elif defined( HAVE_GDBM )
 
+#ifdef HAVE_ST_BLKSIZE
 #include <sys/stat.h>
+#endif
 
 /*****************************************************************
  *                                                               *
@@ -423,7 +426,9 @@ LDBM
 ldbm_open( char *name, int rw, int mode, int dbcachesize )
 {
        LDBM            db;
-       struct stat     st;
+#ifdef HAVE_ST_BLKSIZE
+               struct stat     st;
+#endif
 
        LDBM_LOCK;
 
@@ -431,10 +436,16 @@ ldbm_open( char *name, int rw, int mode, int dbcachesize )
                LDBM_UNLOCK;
                return( NULL );
        }
+
+#ifdef HAVE_ST_BLKSIZE
        if ( dbcachesize > 0 && stat( name, &st ) == 0 ) {
                dbcachesize = (dbcachesize / st.st_blksize);
                gdbm_setopt( db, GDBM_CACHESIZE, &dbcachesize, sizeof(int) );
        }
+#else
+       dbcachesize = (dbcachesize / 4096);
+       gdbm_setopt( db, GDBM_CACHESIZE, &dbcachesize, sizeof(int) );
+#endif
 
        LDBM_UNLOCK;