]>
Commit | Line | Data |
---|---|---|
5cfb7d04 AM |
1 | diff --git a/ext/dba/config.m4 b/ext/dba/config.m4 |
2 | index 8dc8f1d..4269b1c 100644 | |
3 | --- a/ext/dba/config.m4 | |
4 | +++ b/ext/dba/config.m4 | |
5 | @@ -83,16 +83,16 @@ PHP_ARG_WITH(ndbm,, | |
6 | [ --with-ndbm[=DIR] DBA: NDBM support], no, no) | |
7 | ||
8 | PHP_ARG_WITH(db4,, | |
9 | -[ --with-db4[=DIR] DBA: Berkeley DB4 support], no, no) | |
10 | +[ --with-db4[=DIR] DBA: Oracle Berkeley DB 4.x or 5.x support], no, no) | |
11 | ||
12 | PHP_ARG_WITH(db3,, | |
13 | -[ --with-db3[=DIR] DBA: Berkeley DB3 support], no, no) | |
14 | +[ --with-db3[=DIR] DBA: Oracle Berkeley DB 3.x support], no, no) | |
15 | ||
16 | PHP_ARG_WITH(db2,, | |
17 | -[ --with-db2[=DIR] DBA: Berkeley DB2 support], no, no) | |
18 | +[ --with-db2[=DIR] DBA: Oracle Berkeley DB 2.x support], no, no) | |
19 | ||
20 | PHP_ARG_WITH(db1,, | |
21 | -[ --with-db1[=DIR] DBA: Berkeley DB1 support/emulation], no, no) | |
22 | +[ --with-db1[=DIR] DBA: Oracle Berkeley DB 1.x support/emulation], no, no) | |
23 | ||
24 | PHP_ARG_WITH(dbm,, | |
25 | [ --with-dbm[=DIR] DBA: DBM support], no, no) | |
26 | @@ -210,7 +210,7 @@ AC_DEFUN([PHP_DBA_DB_CHECK],[ | |
27 | ],[ | |
28 | AC_EGREP_CPP(yes,[ | |
29 | #include "$THIS_INCLUDE" | |
30 | -#if DB_VERSION_MAJOR == $1 | |
31 | +#if DB_VERSION_MAJOR == $1 || ($1 == 4 && DB_VERSION_MAJOR == 5) | |
32 | yes | |
33 | #endif | |
34 | ],[ | |
35 | @@ -233,7 +233,7 @@ AC_DEFUN([PHP_DBA_DB_CHECK],[ | |
36 | AC_MSG_CHECKING([for DB4 minor version and patch level]) | |
37 | AC_EGREP_CPP(yes,[ | |
38 | #include "$THIS_INCLUDE" | |
39 | -#if DB_VERSION_MINOR != 1 || DB_VERSION_PATCH >= 25 | |
40 | +#if DB_VERSION_MAJOR > 4 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR != 1) || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1 && DB_VERSION_PATCH >= 25) | |
41 | yes | |
42 | #endif | |
43 | ],[ | |
44 | @@ -274,12 +274,25 @@ AC_DEFUN([PHP_DBA_DB_CHECK],[ | |
45 | # DB4 | |
46 | if test "$PHP_DB4" != "no"; then | |
47 | PHP_DBA_STD_BEGIN | |
48 | - dbdp="/usr/local/BerkeleyDB.4." | |
49 | - for i in $PHP_DB4 ${dbdp}8 ${dbdp}7 ${dbdp}6 ${dbdp}5 ${dbdp}4 ${dbdp}3 ${dbdp}2 ${dbdp}1 ${dbdp}0 /usr/local /usr; do | |
50 | - if test -f "$i/db4/db.h"; then | |
51 | + dbdp4="/usr/local/BerkeleyDB.4." | |
52 | + dbdp5="/usr/local/BerkeleyDB.5." | |
53 | + for i in $PHP_DB4 ${dbdp5}1 ${dbdp5}0 ${dbdp4}8 ${dbdp4}7 ${dbdp4}6 ${dbdp4}5 ${dbdp4}4 ${dbdp4}3 ${dbdp4}2 ${dbdp4}1 ${dbdp}0 /usr/local /usr; do | |
54 | + if test -f "$i/db5/db.h"; then | |
55 | + THIS_PREFIX=$i | |
56 | + THIS_INCLUDE=$i/db5/db.h | |
57 | + break | |
58 | + elif test -f "$i/db4/db.h"; then | |
59 | THIS_PREFIX=$i | |
60 | THIS_INCLUDE=$i/db4/db.h | |
61 | break | |
62 | + elif test -f "$i/include/db5.1/db.h"; then | |
63 | + THIS_PREFIX=$i | |
64 | + THIS_INCLUDE=$i/include/db5.1/db.h | |
65 | + break | |
66 | + elif test -f "$i/include/db5.0/db.h"; then | |
67 | + THIS_PREFIX=$i | |
68 | + THIS_INCLUDE=$i/include/db5.0/db.h | |
69 | + break | |
70 | elif test -f "$i/include/db4.8/db.h"; then | |
71 | THIS_PREFIX=$i | |
72 | THIS_INCLUDE=$i/include/db4.8/db.h | |
73 | @@ -314,7 +327,7 @@ if test "$PHP_DB4" != "no"; then | |
74 | break | |
75 | fi | |
76 | done | |
77 | - PHP_DBA_DB_CHECK(4, db-4.8 db-4.7 db-4.6 db-4.5 db-4.4 db-4.3 db-4.2 db-4.1 db-4.0 db-4 db4 db, [(void)db_create((DB**)0, (DB_ENV*)0, 0)]) | |
78 | + PHP_DBA_DB_CHECK(4, db-5.1 db-5.0 db-4.8 db-4.7 db-4.6 db-4.5 db-4.4 db-4.3 db-4.2 db-4.1 db-4.0 db-4 db4 db, [(void)db_create((DB**)0, (DB_ENV*)0, 0)]) | |
79 | fi | |
80 | PHP_DBA_STD_RESULT(db4,Berkeley DB4) | |
81 | ||
82 | diff --git a/ext/dba/dba_db4.c b/ext/dba/dba_db4.c | |
83 | index 6bf0095..a75d438 100644 | |
84 | --- a/ext/dba/dba_db4.c | |
85 | +++ b/ext/dba/dba_db4.c | |
86 | @@ -37,25 +37,26 @@ | |
87 | #endif | |
88 | ||
89 | static void php_dba_db4_errcall_fcn( | |
90 | -#if (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 3) | |
91 | +#if (DB_VERSION_MAJOR > 4 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 3)) | |
92 | const DB_ENV *dbenv, | |
93 | #endif | |
94 | const char *errpfx, const char *msg) | |
95 | { | |
96 | TSRMLS_FETCH(); | |
97 | ||
98 | -#if (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 8 && DB_VERSION_PATCH <= 26) | |
99 | +#if (DB_VERSION_MAJOR == 5 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 8)) | |
100 | /* Bug 51086, Berkeley DB 4.8.26 */ | |
101 | -/* This code suppresses a BDB 4.8 error message that BDB incorrectly emits */ | |
102 | +/* This code suppresses a BDB 4.8+ error message, thus keeping PHP test compatibility */ | |
103 | { | |
104 | char *function = get_active_function_name(TSRMLS_C); | |
105 | if (function && (!strcmp(function,"dba_popen") || !strcmp(function,"dba_open")) | |
106 | - && !strncmp(msg, "fop_read_meta", sizeof("fop_read_meta")-1)) { | |
107 | + && (!strncmp(msg, "fop_read_meta", sizeof("fop_read_meta")-1) | |
108 | + || !strncmp(msg, "BDB0004 fop_read_meta", sizeof("BDB0004 fop_read_meta")-1))) { | |
109 | return; | |
110 | } | |
111 | } | |
112 | #endif | |
113 | - | |
114 | + | |
115 | php_error_docref(NULL TSRMLS_CC, E_NOTICE, "%s%s", errpfx?errpfx:"", msg); | |
116 | } | |
117 | ||
118 | @@ -124,7 +125,7 @@ DBA_OPEN_FUNC(db4) | |
119 | if ((err=db_create(&dbp, NULL, 0)) == 0) { | |
120 | dbp->set_errcall(dbp, php_dba_db4_errcall_fcn); | |
121 | if ( | |
122 | -#if (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1) | |
123 | +#if (DB_VERSION_MAJOR > 4 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1)) | |
124 | (err=dbp->open(dbp, 0, info->path, NULL, type, gmode, filemode)) == 0) { | |
125 | #else | |
126 | (err=dbp->open(dbp, info->path, NULL, type, gmode, filemode)) == 0) { | |
127 |