]> granicus.if.org Git - php/commitdiff
- unify configure mechanisms (include file handling)
authorMarcus Boerger <helly@php.net>
Sat, 1 Feb 2003 18:59:59 +0000 (18:59 +0000)
committerMarcus Boerger <helly@php.net>
Sat, 1 Feb 2003 18:59:59 +0000 (18:59 +0000)
- fix dbm
- allow dbm to be based on gdbm

ext/dba/config.m4
ext/dba/dba_cdb.c
ext/dba/dba_dbm.c
ext/dba/dba_gdbm.c

index bbbc34952a6c0ba971621dccc39f4201efa67a23..30d75a08b45ff2a38b30c3b631f5936947da532b 100644 (file)
@@ -5,7 +5,7 @@ dnl
 dnl Suppose we need FlatFile if no support or only CDB is used.
 
 AC_DEFUN(PHP_DBA_STD_BEGIN,[
-  unset THIS_INCLUDE THIS_INC_DIR THIS_LIBS THIS_LFLAGS THIS_PREFIX THIS_RESULT
+  unset THIS_INCLUDE THIS_LIBS THIS_LFLAGS THIS_PREFIX THIS_RESULT
 ])
 
 AC_DEFUN(PHP_TEMP_LDFLAGS,[
@@ -35,11 +35,8 @@ AC_DEFUN(PHP_DBA_STD_CHECK,[
 
 dnl Attach THIS_x to DBA_x
 AC_DEFUN(PHP_DBA_STD_ATTACH,[
-  if test -n "$THIS_INC_DIR" -a "$THIS_PREFIX" != "/usr"; then
-    PHP_ADD_INCLUDE($THIS_INC_DIR)
-  fi
   PHP_ADD_LIBRARY_WITH_PATH($THIS_LIBS, $THIS_LFLAGS, DBA_SHARED_LIBADD)
-  unset THIS_INCLUDE THIS_INC_DIR THIS_LIBS THIS_LFLAGS THIS_PREFIX
+  unset THIS_INCLUDE THIS_LIBS THIS_LFLAGS THIS_PREFIX
 ])
 
 dnl Print the result message
@@ -76,7 +73,6 @@ AC_ARG_WITH(gdbm,
       if test -f "$i/include/gdbm.h"; then
         THIS_PREFIX=$i
         THIS_INCLUDE=$i/include/gdbm.h
-        THIS_INC_DIR=$i/include
         break
       fi
     done
@@ -85,6 +81,7 @@ AC_ARG_WITH(gdbm,
       unset ac_cv_lib_gdbm_gdbm_open
       PHP_TEMP_LDFLAGS(-L$THIS_PREFIX/lib,[
         AC_CHECK_LIB(gdbm, gdbm_open, [
+          AC_DEFINE_UNQUOTED(GDBM_INCLUDE_FILE, "$THIS_INCLUDE", [ ])
           AC_DEFINE(DBA_GDBM, 1, [ ]) 
           THIS_LIBS=gdbm
           break
@@ -116,10 +113,10 @@ AC_ARG_WITH(ndbm,
     done
     
     if test -n "$THIS_INCLUDE"; then
-      AC_DEFINE_UNQUOTED(NDBM_INCLUDE_FILE, "$THIS_INCLUDE", [ ])
       for LIB in ndbm db1 c; do
         PHP_TEMP_LDFLAGS(-L$THIS_PREFIX/lib,[
           AC_CHECK_LIB($LIB, dbm_open, [
+            AC_DEFINE_UNQUOTED(NDBM_INCLUDE_FILE, "$THIS_INCLUDE", [ ])
             AC_DEFINE(DBA_NDBM,1, [ ]) 
             THIS_LIBS=$LIB
             break
@@ -301,15 +298,26 @@ AC_ARG_WITH(dbm,
       if test -f "$i/include/dbm.h"; then
         THIS_PREFIX=$i
         THIS_INCLUDE=$i/include/dbm.h
-        THIS_INC_DIR=$i/include
         break
+      elif test -f "$i/include/gdbm/dbm.h"; then
+        THIS_PREFIX=$i
+        THIS_INCLUDE=$i/include/gdbm/dbm.h
       fi
     done
 
     if test -n "$THIS_INCLUDE"; then
-      for LIB in db1 dbm c; do
+      for LIB in gdbm dbm c; do
         PHP_TEMP_LDFLAGS(-L$THIS_PREFIX/lib,[
           AC_CHECK_LIB($LIB, dbminit, [
+            AC_MSG_CHECKING(for DBM using GDBM)
+            AC_DEFINE_UNQUOTED(DBM_INCLUDE_FILE, "$THIS_INCLUDE", [ ])
+            if test "$LIB" = "gdbm"; then
+              AC_DEFINE_UNQUOTED(DBM_VERSION, "GDBM", [ ])
+              AC_MSG_RESULT(yes)
+            else
+              AC_DEFINE_UNQUOTED(DBM_VERSION, "DBM", [ ])
+              AC_MSG_RESULT(no)
+            fi
             AC_DEFINE(DBA_DBM,1,[ ]) 
             THIS_LIBS=$LIB
             break
@@ -344,7 +352,6 @@ AC_ARG_WITH(cdb,
       if test -f "$i/include/cdb.h"; then
         THIS_PREFIX=$i
         THIS_INCLUDE=$i/include/cdb.h
-        THIS_INC_DIR=$i/include
         break
       fi
     done
@@ -353,6 +360,7 @@ AC_ARG_WITH(cdb,
       for LIB in cdb c; do
         PHP_TEMP_LDFLAGS(-L$THIS_PREFIX/lib,[
           AC_CHECK_LIB($LIB, cdb_read, [
+            AC_DEFINE_UNQUOTED(CDB_INCLUDE_FILE, "$THIS_INCLUDE", [ ])
             AC_DEFINE(DBA_CDB,1,[ ]) 
             THIS_LIBS=$LIB
             break
index fb1a3f3ba20a58e23d062d5ec10bc96d6ae219e9..ee9d53a74d6849a1d44cf8bf940754f983b2708f 100644 (file)
 #include <fcntl.h>
 
 #if DBA_CDB_BUILTIN
-#include "libcdb/cdb.h"
-#include "libcdb/cdb_make.h"
-#include "libcdb/uint32.h"
+# include "libcdb/cdb.h"
+# include "libcdb/cdb_make.h"
+# include "libcdb/uint32.h"
 #else
-#include <cdb.h>
-#include <uint32.h>
+# ifdef CDB_INCLUDE_FILE
+#  include CDB_INCLUDE_FILE
+# endif
 #endif
 
 #define CDB_INFO \
index f50d58a03fc06496000d16cc4e5e77e28a8aeeb7..06010af58939f670e7016bb42c0cab848998a126 100644 (file)
 #if DBA_DBM
 #include "php_dbm.h"
 
-#include <dbm.h>
+#ifdef DBM_INCLUDE_FILE
+#include DBM_INCLUDE_FILE
+#endif
+#if DBA_GDBM
+#include "php_gdbm.h"
+#endif
 
 #include <unistd.h>
 #include <sys/types.h>
@@ -108,6 +113,14 @@ DBA_UPDATE_FUNC(dbm)
        datum gval;
 
        DBM_GKEY;
+
+       if (mode == 1) { /* insert */
+               gval = fetch(gkey);
+               if(gval.dptr) {
+                       return FAILURE;
+               }
+       }
+
        gval.dptr = (char *) val;
        gval.dsize = vallen;
        
@@ -179,7 +192,13 @@ DBA_SYNC_FUNC(dbm)
 
 DBA_INFO_FUNC(dbm)
 {
-       return estrdup("DBM");
+#if DBA_GDBM
+       if (!strcmp(DBM_VERSION, "GDBM"))
+       {
+               return dba_info_gdbm(hnd, info TSRMLS_CC);
+       }
+#endif
+       return estrdup(DBM_VERSION);
 }
 
 #endif
index 40332ad44ebf75201e25ac2769024f9964c0ef2c..b3b8abdc735a65f4827d53d4a833252e778bc021 100644 (file)
@@ -27,7 +27,9 @@
 #if DBA_GDBM
 #include "php_gdbm.h"
 
-#include <gdbm.h>
+#ifdef GDBM_INCLUDE_FILE
+#include GDBM_INCLUDE_FILE
+#endif
 
 #define GDBM_DATA dba_gdbm_data *dba = info->dbf
 #define GDBM_GKEY datum gkey; gkey.dptr = (char *) key; gkey.dsize = keylen