version.c
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:2k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* 
  2.  version.c -- Perl 5 interface to Berkeley DB 
  3.  written by Paul Marquess <Paul.Marquess@btinternet.com>
  4.  last modified 2nd Jan 2002
  5.  version 1.802
  6.  All comments/suggestions/problems are welcome
  7.      Copyright (c) 1995-2002 Paul Marquess. All rights reserved.
  8.      This program is free software; you can redistribute it and/or
  9.      modify it under the same terms as Perl itself.
  10.  Changes:
  11.         1.71 -  Support for Berkeley DB version 3.
  12. Support for Berkeley DB 2/3's backward compatability mode.
  13.         1.72 -  No change.
  14.         1.73 -  Added support for threading
  15.         1.74 -  Added Perl core patch 7801.
  16. */
  17. #define PERL_NO_GET_CONTEXT
  18. #include "EXTERN.h"  
  19. #include "perl.h"
  20. #include "XSUB.h"
  21. #include <db.h>
  22. void
  23. #ifdef CAN_PROTOTYPE
  24. __getBerkeleyDBInfo(void)
  25. #else
  26. __getBerkeleyDBInfo()
  27. #endif
  28. {
  29. #ifdef dTHX
  30.     dTHX;
  31. #endif    
  32.     SV * version_sv = perl_get_sv("DB_File::db_version", GV_ADD|GV_ADDMULTI) ;
  33.     SV * ver_sv = perl_get_sv("DB_File::db_ver", GV_ADD|GV_ADDMULTI) ;
  34.     SV * compat_sv = perl_get_sv("DB_File::db_185_compat", GV_ADD|GV_ADDMULTI) ;
  35. #ifdef DB_VERSION_MAJOR
  36.     int Major, Minor, Patch ;
  37.     (void)db_version(&Major, &Minor, &Patch) ;
  38.     /* Check that the versions of db.h and libdb.a are the same */
  39.     if (Major != DB_VERSION_MAJOR || Minor != DB_VERSION_MINOR 
  40. || Patch != DB_VERSION_PATCH)
  41. croak("nDB_File needs compatible versions of libdb & db.hntyou have db.h version %d.%d.%d and libdb version %d.%d.%dn",  
  42. DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH, 
  43. Major, Minor, Patch) ;
  44.     
  45.     /* check that libdb is recent enough  -- we need 2.3.4 or greater */
  46.     if (Major == 2 && (Minor < 3 || (Minor ==  3 && Patch < 4)))
  47. croak("DB_File needs Berkeley DB 2.3.4 or greater, you have %d.%d.%dn",
  48.  Major, Minor, Patch) ;
  49.  
  50.     {
  51.         char buffer[40] ;
  52.         sprintf(buffer, "%d.%d", Major, Minor) ;
  53.         sv_setpv(version_sv, buffer) ; 
  54.         sprintf(buffer, "%d.%03d%03d", Major, Minor, Patch) ;
  55.         sv_setpv(ver_sv, buffer) ; 
  56.     }
  57.  
  58. #else /* ! DB_VERSION_MAJOR */
  59.     sv_setiv(version_sv, 1) ;
  60.     sv_setiv(ver_sv, 1) ;
  61. #endif /* ! DB_VERSION_MAJOR */
  62. #ifdef COMPAT185
  63.     sv_setiv(compat_sv, 1) ;
  64. #else /* ! COMPAT185 */
  65.     sv_setiv(compat_sv, 0) ;
  66. #endif /* ! COMPAT185 */
  67. }