summaryrefslogtreecommitdiff
path: root/ext/DB_File/DB_File.xs
diff options
context:
space:
mode:
authorSteve Peters <steve@fisharerojo.org>2005-10-31 23:46:01 +0000
committerSteve Peters <steve@fisharerojo.org>2005-10-31 23:46:01 +0000
commitd6067fe31ede7f6e23962055018443b632541189 (patch)
tree7bee46f36d69aa5d5cfd86a7b20e0ed54cd4ecef /ext/DB_File/DB_File.xs
parente96b369dc61077fe31b75895167f55dbce4d7519 (diff)
downloadperl-d6067fe31ede7f6e23962055018443b632541189.tar.gz
Upgrade to DB_File 1.813.
p4raw-id: //depot/perl@25942
Diffstat (limited to 'ext/DB_File/DB_File.xs')
-rw-r--r--ext/DB_File/DB_File.xs42
1 files changed, 32 insertions, 10 deletions
diff --git a/ext/DB_File/DB_File.xs b/ext/DB_File/DB_File.xs
index 0e6fe2abba..5b36ae61ea 100644
--- a/ext/DB_File/DB_File.xs
+++ b/ext/DB_File/DB_File.xs
@@ -3,8 +3,8 @@
DB_File.xs -- Perl 5 interface to Berkeley DB
written by Paul Marquess <pmqs@cpan.org>
- last modified 12th March 2005
- version 1.812
+ last modified 31st October 2005
+ version 1.813
All comments/suggestions/problems are welcome
@@ -112,6 +112,7 @@
1.810 - no change
1.811 - no change
1.812 - no change
+ 1.813 - no change
*/
@@ -193,10 +194,22 @@
# define AT_LEAST_DB_3_2
#endif
+#if DB_VERSION_MAJOR > 3 || (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR >= 3)
+# define AT_LEAST_DB_3_3
+#endif
+
#if DB_VERSION_MAJOR > 4 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1)
# define AT_LEAST_DB_4_1
#endif
+#if DB_VERSION_MAJOR > 4 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 3)
+# define AT_LEAST_DB_4_3
+#endif
+
+#ifdef AT_LEAST_DB_3_3
+# define WANT_ERROR
+#endif
+
/* map version 2 features & constants onto their version 1 equivalent */
#ifdef DB_Prefix_t
@@ -770,14 +783,13 @@ HASH_CB_SIZE_TYPE size ;
return (retval) ;
}
-#if 0
+#ifdef WANT_ERROR
+
static void
-#ifdef CAN_PROTOTYPE
-db_errcall_cb(const char * db_errpfx, char * buffer)
+#ifdef AT_LEAST_DB_4_3
+db_errcall_cb(const DB_ENV* dbenv, const char * db_errpfx, const char * buffer)
#else
-db_errcall_cb(db_errpfx, buffer)
-const char * db_errpfx;
-char * buffer;
+db_errcall_cb(const char * db_errpfx, char * buffer)
#endif
{
#ifdef dTHX
@@ -1237,6 +1249,9 @@ SV * sv ;
}
dbp = RETVAL->dbp ;
+#ifdef WANT_ERROR
+ RETVAL->dbp->set_errcall(RETVAL->dbp, db_errcall_cb) ;
+#endif
if (sv)
{
if (! SvROK(sv) )
@@ -1431,6 +1446,12 @@ SV * sv ;
Flags |= DB_TRUNCATE ;
#endif
+#ifdef AT_LEAST_DB_4_4
+ /* need this for recno */
+ if ((flags & O_TRUNC) == O_TRUNC)
+ Flags |= DB_CREATE ;
+#endif
+
#ifdef AT_LEAST_DB_4_1
status = (RETVAL->dbp->open)(RETVAL->dbp, NULL, name, NULL, RETVAL->type,
Flags, mode) ;
@@ -1441,7 +1462,6 @@ SV * sv ;
/* printf("open returned %d %s\n", status, db_strerror(status)) ; */
if (status == 0) {
- /* RETVAL->dbp->set_errcall(RETVAL->dbp, db_errcall_cb) ;*/
status = (RETVAL->dbp->cursor)(RETVAL->dbp, NULL, &RETVAL->cursor,
0) ;
@@ -1471,7 +1491,9 @@ BOOT:
#ifdef dTHX
dTHX;
#endif
- /* SV * sv_err = perl_get_sv(ERR_BUFF, GV_ADD|GV_ADDMULTI) ; */
+#ifdef WANT_ERROR
+ SV * sv_err = perl_get_sv(ERR_BUFF, GV_ADD|GV_ADDMULTI) ;
+#endif
MY_CXT_INIT;
__getBerkeleyDBInfo() ;