Commit | Line | Data |
---|---|---|
42793c05 | 1 | use ExtUtils::MakeMaker; |
1cb0fb50 | 2 | use ExtUtils::Constant 0.11 'WriteConstants'; |
4ad3186e | 3 | WriteMakefile( |
1adb159c | 4 | NAME => 'GDBM_File', |
30afd0dc | 5 | LIBS => ["-lgdbm", "-ldbm"], |
4ad3186e | 6 | XSPROTOARG => '-noprototypes', # XXX remove later? |
c07a80fd | 7 | VERSION_FROM => 'GDBM_File.pm', |
ece2ffd9 | 8 | realclean => {FILES=> 'const-c.inc const-xs.inc'}, |
a5d81eb5 | 9 | XS_VERSION => eval MM->parse_version('GDBM_File.pm'), #silence warnings if we are a dev release |
0552bf3a | 10 | ); |
1d7b7043 SP |
11 | |
12 | my @names = qw(GDBM_CACHESIZE GDBM_CENTFREE GDBM_COALESCEBLKS | |
13 | GDBM_FAST GDBM_FASTMODE GDBM_INSERT GDBM_NEWDB GDBM_NOLOCK | |
14 | GDBM_OPENMASK GDBM_READER GDBM_REPLACE GDBM_SYNC GDBM_SYNCMODE | |
15 | GDBM_WRCREAT GDBM_WRITER GDBM_NOMMAP GDBM_CLOEXEC GDBM_BSEXACT | |
16 | GDBM_XVERIFY GDBM_PREREAD GDBM_NUMSYNC); | |
17 | ||
18 | push @names, { | |
19 | name => $_, | |
20 | type => "IV", | |
8b8b1222 | 21 | macro => [ "#if GDBM_VERSION_MAJOR > 1 || GDBM_VERSION_MINOR >= 21\n", |
1d7b7043 SP |
22 | "#endif\n" ], |
23 | value => "$_", | |
24 | } foreach qw(GDBM_SNAPSHOT_OK GDBM_SNAPSHOT_BAD GDBM_SNAPSHOT_ERR | |
25 | GDBM_SNAPSHOT_SAME GDBM_SNAPSHOT_SUSPICIOUS); | |
26 | ||
8b8b1222 | 27 | # Basic error codes - these are supported by all versions of gdbm |
0f875b7c SP |
28 | push @names, { |
29 | name => $_, | |
30 | value => "$_", | |
31 | type => "IV", | |
32 | macro => 1 | |
33 | } foreach qw( | |
8b8b1222 SP |
34 | GDBM_NO_ERROR |
35 | GDBM_MALLOC_ERROR | |
36 | GDBM_BLOCK_SIZE_ERROR | |
37 | GDBM_FILE_OPEN_ERROR | |
38 | GDBM_FILE_WRITE_ERROR | |
39 | GDBM_FILE_SEEK_ERROR | |
40 | GDBM_FILE_READ_ERROR | |
41 | GDBM_BAD_MAGIC_NUMBER | |
42 | GDBM_EMPTY_DATABASE | |
43 | GDBM_CANT_BE_READER | |
44 | GDBM_CANT_BE_WRITER | |
45 | GDBM_READER_CANT_DELETE | |
46 | GDBM_READER_CANT_STORE | |
47 | GDBM_READER_CANT_REORGANIZE | |
48 | GDBM_UNKNOWN_UPDATE | |
49 | GDBM_ITEM_NOT_FOUND | |
50 | GDBM_REORGANIZE_FAILED | |
51 | GDBM_CANNOT_REPLACE | |
52 | GDBM_ILLEGAL_DATA | |
53 | GDBM_OPT_ALREADY_SET | |
54 | GDBM_OPT_ILLEGAL); | |
55 | ||
56 | # Error codes added in various versions of gdbm | |
57 | push @names, { | |
58 | name => $_->[0], | |
59 | value => "$_->[0]", | |
60 | type => "IV", | |
61 | macro => [ "#if GDBM_VERSION_MAJOR > 1 || $_->[1]\n", | |
62 | "#endif\n" ], | |
63 | } foreach map { | |
64 | my @vref = @{$_}[1..$#{$_}]; | |
65 | my $cond; | |
66 | if ($_->[2]) { | |
67 | $cond = "GDBM_VERSION_MINOR > $_->[1] || ( GDBM_VERSION_MINOR == $_->[1] && GDBM_VERSION_PATCH >= $_->[2] )"; | |
68 | } else { | |
69 | $cond = "GDBM_VERSION_MINOR >= $_->[1]"; | |
70 | } | |
71 | map { [$_, $cond ] } @{$_->[0]} | |
72 | } ( # [ [ ERROR_CODE_NAMES ], MAJ [, MIN [, PAT]] ] | |
73 | # where MAJ,MIN,PAT are major, minor and patchlevel numbers of the gdbm | |
74 | # version which introduced ERROR_CODE_NAMES. | |
75 | [[qw(GDBM_BYTE_SWAPPED GDBM_BAD_FILE_OFFSET GDBM_BAD_OPEN_FLAGS)], 9], | |
76 | [[qw(GDBM_FILE_STAT_ERROR GDBM_FILE_EOF)], 10], | |
77 | [[qw(GDBM_NO_DBNAME GDBM_ERR_FILE_OWNER GDBM_ERR_FILE_MODE)], 11], | |
78 | [[qw(GDBM_UNKNOWN_ERROR GDBM_NEED_RECOVERY GDBM_BACKUP_FAILED | |
79 | GDBM_DIR_OVERFLOW)], 13], | |
80 | [[qw(GDBM_BAD_BUCKET GDBM_BAD_HEADER GDBM_BAD_AVAIL GDBM_BAD_HASH_TABLE | |
81 | GDBM_BAD_DIR_ENTRY)], 15], | |
82 | [[qw(GDBM_FILE_CLOSE_ERROR GDBM_FILE_SYNC_ERROR)], 17], | |
83 | [[qw(GDBM_FILE_TRUNCATE_ERROR)], 18, 1], | |
84 | [[qw(GDBM_BUCKET_CACHE_CORRUPTED GDBM_BAD_HASH_ENTRY)], 20], | |
85 | [[qw(GDBM_MALFORMED_DATA GDBM_OPT_BADVAL GDBM_ERR_SNAPSHOT_CLONE | |
86 | GDBM_ERR_REALPATH GDBM_ERR_USAGE)], 21] | |
87 | ); | |
88 | ||
89 | ||
0552bf3a NC |
90 | WriteConstants( |
91 | NAME => 'GDBM_File', | |
92 | DEFAULT_TYPE => 'IV', | |
93 | BREAKOUT_AT => 8, | |
6642cd87 | 94 | PROXYSUBS => {autoload => 1}, |
1d7b7043 | 95 | NAMES => \@names |
4ad3186e | 96 | ); |