DB_File

 view release on metacpan or  search on metacpan

DB_File.xs  view on Meta::CPAN

/*

 DB_File.xs -- Perl 5 interface to Berkeley DB

 Written by Paul Marquess <pmqs@cpan.org>

 All comments/suggestions/problems are welcome

     Copyright (c) 1995-2026 Paul Marquess. All rights reserved.
     This program is free software; you can redistribute it and/or
     modify it under the same terms as Perl itself.

 Changes:
    0.1 -   Initial Release
    0.2 -   No longer bombs out if dbopen returns an error.
    0.3 -   Added some support for multiple btree compares
    1.0 -   Complete support for multiple callbacks added.
            Fixed a problem with pushing a value onto an empty list.
    1.01 -  Fixed a SunOS core dump problem.
            The return value from TIEHASH wasn't set to NULL when
            dbopen returned an error.
    1.02 -  Use ALIAS to define TIEARRAY.
            Removed some redundant commented code.
            Merged OS2 code into the main distribution.
            Allow negative subscripts with RECNO interface.
            Changed the default flags to O_CREAT|O_RDWR
    1.03 -  Added EXISTS
    1.04 -  fixed a couple of bugs in hash_cb. Patches supplied by
            Dave Hammen, hammen@gothamcity.jsc.nasa.gov
    1.05 -  Added logic to allow prefix & hash types to be specified via
            Makefile.PL
    1.06 -  Minor namespace cleanup: Localized PrintBtree.
    1.07 -  Fixed bug with RECNO, where bval wasn't defaulting to "\n".
    1.08 -  No change to DB_File.xs
    1.09 -  Default mode for dbopen changed to 0666
    1.10 -  Fixed fd method so that it still returns -1 for
            in-memory files when db 1.86 is used.
    1.11 -  No change to DB_File.xs
    1.12 -  No change to DB_File.xs
    1.13 -  Tidied up a few casts.
    1.14 -  Made it illegal to tie an associative array to a RECNO
            database and an ordinary array to a HASH or BTREE database.
    1.50 -  Make work with both DB 1.x or DB 2.x
    1.51 -  Fixed a bug in mapping 1.x O_RDONLY flag to 2.x DB_RDONLY equivalent
    1.52 -  Patch from Gisle Aas <gisle@aas.no> to suppress "use of
            undefined value" warning with db_get and db_seq.
    1.53 -  Added DB_RENUMBER to flags for recno.
    1.54 -  Fixed bug in the fd method
    1.55 -  Fix for AIX from Jarkko Hietaniemi
    1.56 -  No change to DB_File.xs
    1.57 -  added the #undef op to allow building with Threads support.
    1.58 -  Fixed a problem with the use of sv_setpvn. When the
            size is specified as 0, it does a strlen on the data.
            This was ok for DB 1.x, but isn't for DB 2.x.
    1.59 -  No change to DB_File.xs
    1.60 -  Some code tidy up
    1.61 -  added flagSet macro for DB 2.5.x
            fixed typo in O_RDONLY test.
    1.62 -  No change to DB_File.xs
    1.63 -  Fix to alllow DB 2.6.x to build.
    1.64 -  Tidied up the 1.x to 2.x flags mapping code.
            Added a patch from Mark Kettenis <kettenis@wins.uva.nl>
            to fix a flag mapping problem with O_RDONLY on the Hurd
    1.65 -  Fixed a bug in the PUSH logic.
            Added BOOT check that using 2.3.4 or greater
    1.66 -  Added DBM filter code
    1.67 -  Backed off the use of newSVpvn.
            Fixed DBM Filter code for Perl 5.004.
            Fixed a small memory leak in the filter code.
    1.68 -  fixed backward compatibility bug with R_IAFTER & R_IBEFORE
            merged in the 5.005_58 changes
    1.69 -  fixed a bug in push -- DB_APPEND wasn't working properly.
            Fixed the R_SETCURSOR bug introduced in 1.68
            Added a new Perl variable $DB_File::db_ver
    1.70 -  Initialise $DB_File::db_ver and $DB_File::db_version with
            GV_ADD|GV_ADDMULT -- bug spotted by Nick Ing-Simmons.
            Added a BOOT check to test for equivalent versions of db.h &
            libdb.a/so.
    1.71 -  Support for Berkeley DB version 3.
            Support for Berkeley DB 2/3's backward compatibility mode.
            Rewrote push
    1.72 -  No change to DB_File.xs
    1.73 -  No change to DB_File.xs
    1.74 -  A call to open needed parenthesised to stop it clashing
            with a win32 macro.
            Added Perl core patches 7703 & 7801.
    1.75 -  Fixed Perl core patch 7703.
            Added support to allow DB_File to be built with
            Berkeley DB 3.2 -- btree_compare, btree_prefix and hash_cb
            needed to be changed.
    1.76 -  No change to DB_File.xs
    1.77 -  Tidied up a few types used in calling newSVpvn.
    1.78 -  Core patch 10335, 10372, 10534, 10549, 11051 included.
    1.79 -  NEXTKEY ignores the input key.
            Added lots of casts
    1.800 - Moved backward compatibility code into ppport.h.
            Use the new constants code.
    1.801 - No change to DB_File.xs
    1.802 - No change to DB_File.xs
    1.803 - FETCH, STORE & DELETE don't map the flags parameter
            into the equivalent Berkeley DB function anymore.
    1.804 - no change.
    1.805 - recursion detection added to the callbacks
            Support for 4.1.X added.
            Filter code can now cope with read-only $_
    1.806 - recursion detection beefed up.
    1.807 - no change
    1.808 - leak fixed in ParseOpenInfo
    1.809 - no change
    1.810 - no change
    1.811 - no change
    1.812 - no change
    1.813 - no change
    1.814 - no change
    1.814 - C++ casting fixes

*/

#define PERL_NO_GET_CONTEXT
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"

#ifdef _NOT_CORE
#  include "ppport.h"
#endif

int DB_File___unused() { return 0; }

/* Mention DB_VERSION_MAJOR_CFG, DB_VERSION_MINOR_CFG, and
   DB_VERSION_PATCH_CFG here so that Configure pulls them all in. */

/* Being the Berkeley DB we prefer the <sys/cdefs.h> (which will be
 * shortly #included by the <db.h>) __attribute__ to the possibly
 * already defined __attribute__, for example by GNUC or by Perl. */

/* #if DB_VERSION_MAJOR_CFG < 2  */
#ifndef DB_VERSION_MAJOR
#    undef __attribute__
#endif

#ifdef COMPAT185
#    include <db_185.h>
#else

/* Uncomment one of the lines below */
/* See the section "At least one secondary cursor must be specified to DB->join"
   in the README file for the circumstances where you need to uncomment one
   of the two lines below.
*/

/* #define time_t __time64_t */
/* #define time_t __time32_t */

#    include <db.h>
#endif

#ifndef PERL_UNUSED_ARG
#  define PERL_UNUSED_ARG(x) ((void)x)
#endif

/* Wall starts with 5.7.x */



( run in 0.880 second using v1.01-cache-2.11-cpan-39bf76dae61 )