1#!/usr/bin/perl
2
3use ExtUtils::Constant qw(WriteConstants); 
4
5use constant DEFINE => 'define' ;
6use constant STRING => 'string' ;
7use constant IGNORE => 'ignore' ;
8
9%constants = (
10
11
12	#########
13	# 2.0.3
14	#########
15
16	DBM_INSERT                 => IGNORE,
17	DBM_REPLACE                => IGNORE,
18	DBM_SUFFIX                 => IGNORE,
19	DB_AFTER                   => DEFINE,
20	DB_AM_DUP                  => IGNORE,
21	DB_AM_INMEM                => IGNORE,
22	DB_AM_LOCKING              => IGNORE,
23	DB_AM_LOGGING              => IGNORE,
24	DB_AM_MLOCAL               => IGNORE,
25	DB_AM_PGDEF                => IGNORE,
26	DB_AM_RDONLY               => IGNORE,
27	DB_AM_RECOVER              => IGNORE,
28	DB_AM_SWAP                 => IGNORE,
29	DB_AM_TXN                  => IGNORE,
30	DB_APP_INIT                => DEFINE,
31	DB_BEFORE                  => DEFINE,
32	DB_BTREEMAGIC              => DEFINE,
33	DB_BTREEVERSION            => DEFINE,
34	DB_BT_DELIMITER            => IGNORE,
35	DB_BT_EOF                  => IGNORE,
36	DB_BT_FIXEDLEN             => IGNORE,
37	DB_BT_PAD                  => IGNORE,
38	DB_BT_SNAPSHOT             => IGNORE,
39	DB_CHECKPOINT              => DEFINE,
40	DB_CREATE                  => DEFINE,
41	DB_CURRENT                 => DEFINE,
42	DB_DBT_INTERNAL            => IGNORE,
43	DB_DBT_MALLOC              => IGNORE,
44	DB_DBT_PARTIAL             => IGNORE,
45	DB_DBT_USERMEM             => IGNORE,
46	DB_DELETED                 => DEFINE,
47	DB_DELIMITER               => DEFINE,
48	DB_DUP                     => DEFINE,
49	DB_EXCL                    => DEFINE,
50	DB_FIRST                   => DEFINE,
51	DB_FIXEDLEN                => DEFINE,
52	DB_FLUSH                   => DEFINE,
53	DB_HASHMAGIC               => DEFINE,
54	DB_HASHVERSION             => DEFINE,
55	DB_HS_DIRTYMETA            => IGNORE,
56	DB_INCOMPLETE              => DEFINE,
57	DB_INIT_LOCK               => DEFINE,
58	DB_INIT_LOG                => DEFINE,
59	DB_INIT_MPOOL              => DEFINE,
60	DB_INIT_TXN                => DEFINE,
61	DB_KEYEXIST                => DEFINE,
62	DB_KEYFIRST                => DEFINE,
63	DB_KEYLAST                 => DEFINE,
64	DB_LAST                    => DEFINE,
65	DB_LOCKMAGIC               => DEFINE,
66	DB_LOCKVERSION             => DEFINE,
67	DB_LOCK_DEADLOCK           => DEFINE,
68	DB_LOCK_NOTGRANTED         => DEFINE,
69	DB_LOCK_NOTHELD            => DEFINE,
70	DB_LOCK_NOWAIT             => DEFINE,
71	DB_LOCK_RIW_N              => DEFINE,
72	DB_LOCK_RW_N               => DEFINE,
73	DB_LOGMAGIC                => DEFINE,
74	DB_LOGVERSION              => DEFINE,
75	DB_MAX_PAGES               => DEFINE,
76	DB_MAX_RECORDS             => DEFINE,
77	DB_MPOOL_CLEAN             => DEFINE,
78	DB_MPOOL_CREATE            => DEFINE,
79	DB_MPOOL_DIRTY             => DEFINE,
80	DB_MPOOL_DISCARD           => DEFINE,
81	DB_MPOOL_LAST              => DEFINE,
82	DB_MPOOL_NEW               => DEFINE,
83	DB_MPOOL_PRIVATE           => DEFINE,
84	DB_MUTEXDEBUG              => DEFINE,
85	DB_NEEDSPLIT               => DEFINE,
86	DB_NEXT                    => DEFINE,
87	DB_NOOVERWRITE             => DEFINE,
88	DB_NORECURSE               => DEFINE,
89	DB_NOSYNC                  => DEFINE,
90	DB_NOTFOUND                => DEFINE,
91	DB_PAD                     => DEFINE,
92	DB_PREV                    => DEFINE,
93	DB_RDONLY                  => DEFINE,
94	DB_REGISTERED              => DEFINE,
95	DB_RE_MODIFIED             => IGNORE,
96	DB_SEQUENTIAL              => DEFINE,
97	DB_SET                     => DEFINE,
98	DB_SET_RANGE               => DEFINE,
99	DB_SNAPSHOT                => DEFINE,
100	DB_SWAPBYTES               => DEFINE,
101	DB_TEMPORARY               => DEFINE,
102	DB_TRUNCATE                => DEFINE,
103	DB_TXNMAGIC                => DEFINE,
104	DB_TXNVERSION              => DEFINE,
105	DB_TXN_BACKWARD_ROLL       => DEFINE,
106	DB_TXN_FORWARD_ROLL        => DEFINE,
107	DB_TXN_LOCK_2PL            => DEFINE,
108	DB_TXN_LOCK_MASK           => DEFINE,
109	DB_TXN_LOCK_OPTIMISTIC     => DEFINE,
110	DB_TXN_LOG_MASK            => DEFINE,
111	DB_TXN_LOG_REDO            => DEFINE,
112	DB_TXN_LOG_UNDO            => DEFINE,
113	DB_TXN_LOG_UNDOREDO        => DEFINE,
114	DB_TXN_OPENFILES           => DEFINE,
115	DB_TXN_REDO                => DEFINE,
116	DB_TXN_UNDO                => DEFINE,
117	DB_USE_ENVIRON             => DEFINE,
118	DB_USE_ENVIRON_ROOT        => DEFINE,
119	DB_VERSION_MAJOR           => DEFINE,
120	DB_VERSION_MINOR           => DEFINE,
121	DB_VERSION_PATCH           => DEFINE,
122	DB_VERSION_STRING          => STRING,
123	_DB_H_                     => IGNORE,
124	__BIT_TYPES_DEFINED__      => IGNORE,
125	const                      => IGNORE,
126
127	# enum DBTYPE
128	DB_BTREE                   => '2.0.3',
129	DB_HASH                    => '2.0.3',
130	DB_RECNO                   => '2.0.3',
131	DB_UNKNOWN                 => '2.0.3',
132
133	# enum db_lockop_t
134	DB_LOCK_DUMP               => '2.0.3',
135	DB_LOCK_GET                => '2.0.3',
136	DB_LOCK_PUT                => '2.0.3',
137	DB_LOCK_PUT_ALL            => '2.0.3',
138	DB_LOCK_PUT_OBJ            => '2.0.3',
139
140	# enum db_lockmode_t
141	DB_LOCK_NG                 => IGNORE, # 2.0.3
142	DB_LOCK_READ               => IGNORE, # 2.0.3
143	DB_LOCK_WRITE              => IGNORE, # 2.0.3
144	DB_LOCK_IREAD              => IGNORE, # 2.0.3
145	DB_LOCK_IWRITE             => IGNORE, # 2.0.3
146	DB_LOCK_IWR                => IGNORE, # 2.0.3
147
148	# enum ACTION
149	FIND                       => IGNORE, # 2.0.3
150	ENTER                      => IGNORE, # 2.0.3
151
152	#########
153	# 2.1.0
154	#########
155
156	DB_NOMMAP                  => DEFINE,
157
158	#########
159	# 2.2.6
160	#########
161
162	DB_AM_THREAD               => IGNORE,
163	DB_ARCH_ABS                => DEFINE,
164	DB_ARCH_DATA               => DEFINE,
165	DB_ARCH_LOG                => DEFINE,
166	DB_LOCK_CONFLICT           => DEFINE,
167	DB_LOCK_DEFAULT            => DEFINE,
168	DB_LOCK_NORUN              => DEFINE,
169	DB_LOCK_OLDEST             => DEFINE,
170	DB_LOCK_RANDOM             => DEFINE,
171	DB_LOCK_YOUNGEST           => DEFINE,
172	DB_RECOVER                 => DEFINE,
173	DB_RECOVER_FATAL           => DEFINE,
174	DB_THREAD                  => DEFINE,
175	DB_TXN_NOSYNC              => DEFINE,
176
177	#########
178	# 2.3.0
179	#########
180
181	DB_BTREEOLDVER             => DEFINE,
182	DB_BT_RECNUM               => IGNORE,
183	DB_FILE_ID_LEN             => DEFINE,
184	DB_GETREC                  => DEFINE,
185	DB_HASHOLDVER              => DEFINE,
186	DB_KEYEMPTY                => DEFINE,
187	DB_LOGOLDVER               => DEFINE,
188	DB_RECNUM                  => DEFINE,
189	DB_RECORDCOUNT             => DEFINE,
190	DB_RENUMBER                => DEFINE,
191	DB_RE_DELIMITER            => IGNORE,
192	DB_RE_FIXEDLEN             => IGNORE,
193	DB_RE_PAD                  => IGNORE,
194	DB_RE_RENUMBER             => IGNORE,
195	DB_RE_SNAPSHOT             => IGNORE,
196
197	#########
198	# 2.3.10
199	#########
200
201	DB_APPEND                  => DEFINE,
202	DB_GET_RECNO               => DEFINE,
203	DB_SET_RECNO               => DEFINE,
204	DB_TXN_CKP                 => DEFINE,
205
206	#########
207	# 2.3.11
208	#########
209
210	DB_ENV_APPINIT             => DEFINE,
211	DB_ENV_STANDALONE          => DEFINE,
212	DB_ENV_THREAD              => DEFINE,
213
214	#########
215	# 2.3.12
216	#########
217
218	DB_FUNC_CALLOC             => IGNORE,
219	DB_FUNC_CLOSE              => IGNORE,
220	DB_FUNC_DIRFREE            => IGNORE,
221	DB_FUNC_DIRLIST            => IGNORE,
222	DB_FUNC_EXISTS             => IGNORE,
223	DB_FUNC_FREE               => IGNORE,
224	DB_FUNC_FSYNC              => IGNORE,
225	DB_FUNC_IOINFO             => IGNORE,
226	DB_FUNC_MALLOC             => IGNORE,
227	DB_FUNC_MAP                => IGNORE,
228	DB_FUNC_OPEN               => IGNORE,
229	DB_FUNC_READ               => IGNORE,
230	DB_FUNC_REALLOC            => IGNORE,
231	DB_FUNC_SEEK               => IGNORE,
232	DB_FUNC_SLEEP              => IGNORE,
233	DB_FUNC_STRDUP             => IGNORE,
234	DB_FUNC_UNLINK             => IGNORE,
235	DB_FUNC_UNMAP              => IGNORE,
236	DB_FUNC_WRITE              => IGNORE,
237	DB_FUNC_YIELD              => IGNORE,
238
239	#########
240	# 2.3.14
241	#########
242
243	DB_TSL_SPINS               => IGNORE,
244
245	#########
246	# 2.3.16
247	#########
248
249	DB_DBM_HSEARCH             => IGNORE,
250	firstkey                   => IGNORE,
251	hdestroy                   => IGNORE,
252
253	#########
254	# 2.4.10
255	#########
256
257	DB_CURLSN                  => DEFINE,
258	DB_FUNC_RUNLINK            => IGNORE,
259	DB_REGION_ANON             => DEFINE,
260	DB_REGION_INIT             => DEFINE,
261	DB_REGION_NAME             => DEFINE,
262	DB_TXN_LOCK_OPTIMIST       => DEFINE,
263	__CURRENTLY_UNUSED         => IGNORE,
264
265	# enum db_status_t
266	DB_LSTAT_ABORTED           => IGNORE, # 2.4.10
267	DB_LSTAT_ERR               => IGNORE, # 2.4.10
268	DB_LSTAT_FREE              => IGNORE, # 2.4.10
269	DB_LSTAT_HELD              => IGNORE, # 2.4.10
270	DB_LSTAT_NOGRANT           => IGNORE, # 2.4.10
271	DB_LSTAT_PENDING           => IGNORE, # 2.4.10
272	DB_LSTAT_WAITING           => IGNORE, # 2.4.10
273
274	#########
275	# 2.4.14
276	#########
277
278	DB_MUTEXLOCKS              => DEFINE,
279	DB_PAGEYIELD               => DEFINE,
280	__UNUSED_100               => IGNORE,
281	__UNUSED_4000              => IGNORE,
282
283	#########
284	# 2.5.9
285	#########
286
287	DBC_CONTINUE               => IGNORE,
288	DBC_KEYSET                 => IGNORE,
289	DBC_RECOVER                => IGNORE,
290	DBC_RMW                    => IGNORE,
291	DB_DBM_ERROR               => IGNORE,
292	DB_DUPSORT                 => DEFINE,
293	DB_GET_BOTH                => DEFINE,
294	DB_JOIN_ITEM               => DEFINE,
295	DB_NEXT_DUP                => DEFINE,
296	DB_OPFLAGS_MASK            => DEFINE,
297	DB_RMW                     => DEFINE,
298	DB_RUNRECOVERY             => DEFINE,
299	dbmclose                   => IGNORE,
300
301	#########
302	# 2.6.4
303	#########
304
305	DBC_WRITER                 => IGNORE,
306	DB_AM_CDB                  => IGNORE,
307	DB_ENV_CDB                 => DEFINE,
308	DB_INIT_CDB                => DEFINE,
309	DB_LOCK_UPGRADE            => DEFINE,
310	DB_WRITELOCK               => DEFINE,
311
312	#########
313	# 2.7.1
314	#########
315
316
317	# enum db_lockop_t
318	DB_LOCK_INHERIT            => '2.7.1',
319
320	#########
321	# 2.7.7
322	#########
323
324	DB_FCNTL_LOCKING           => DEFINE,
325
326	#########
327	# 3.0.55
328	#########
329
330	DBC_WRITECURSOR            => IGNORE,
331	DB_AM_DISCARD              => IGNORE,
332	DB_AM_SUBDB                => IGNORE,
333	DB_BT_REVSPLIT             => IGNORE,
334	DB_CONSUME                 => DEFINE,
335	DB_CXX_NO_EXCEPTIONS       => DEFINE,
336	DB_DBT_REALLOC             => IGNORE,
337	DB_DUPCURSOR               => DEFINE,
338	DB_ENV_CREATE              => DEFINE,
339	DB_ENV_DBLOCAL             => DEFINE,
340	DB_ENV_LOCKDOWN            => DEFINE,
341	DB_ENV_LOCKING             => DEFINE,
342	DB_ENV_LOGGING             => DEFINE,
343	DB_ENV_NOMMAP              => DEFINE,
344	DB_ENV_OPEN_CALLED         => DEFINE,
345	DB_ENV_PRIVATE             => DEFINE,
346	DB_ENV_SYSTEM_MEM          => DEFINE,
347	DB_ENV_TXN                 => DEFINE,
348	DB_ENV_TXN_NOSYNC          => DEFINE,
349	DB_ENV_USER_ALLOC          => DEFINE,
350	DB_FORCE                   => DEFINE,
351	DB_LOCKDOWN                => DEFINE,
352	DB_LOCK_RECORD             => DEFINE,
353	DB_LOGFILEID_INVALID       => DEFINE,
354	DB_MPOOL_NEW_GROUP         => DEFINE,
355	DB_NEXT_NODUP              => DEFINE,
356	DB_OK_BTREE                => DEFINE,
357	DB_OK_HASH                 => DEFINE,
358	DB_OK_QUEUE                => DEFINE,
359	DB_OK_RECNO                => DEFINE,
360	DB_OLD_VERSION             => DEFINE,
361	DB_OPEN_CALLED             => DEFINE,
362	DB_PAGE_LOCK               => DEFINE,
363	DB_POSITION                => DEFINE,
364	DB_POSITIONI               => DEFINE,
365	DB_PRIVATE                 => DEFINE,
366	DB_QAMMAGIC                => DEFINE,
367	DB_QAMOLDVER               => DEFINE,
368	DB_QAMVERSION              => DEFINE,
369	DB_RECORD_LOCK             => DEFINE,
370	DB_REVSPLITOFF             => DEFINE,
371	DB_SYSTEM_MEM              => DEFINE,
372	DB_TEST_POSTLOG            => DEFINE,
373	DB_TEST_POSTLOGMETA        => DEFINE,
374	DB_TEST_POSTOPEN           => DEFINE,
375	DB_TEST_POSTRENAME         => DEFINE,
376	DB_TEST_POSTSYNC           => DEFINE,
377	DB_TEST_PREOPEN            => DEFINE,
378	DB_TEST_PRERENAME          => DEFINE,
379	DB_TXN_NOWAIT              => DEFINE,
380	DB_TXN_SYNC                => DEFINE,
381	DB_UPGRADE                 => DEFINE,
382	DB_VERB_CHKPOINT           => DEFINE,
383	DB_VERB_DEADLOCK           => DEFINE,
384	DB_VERB_RECOVERY           => DEFINE,
385	DB_VERB_WAITSFOR           => DEFINE,
386	DB_WRITECURSOR             => DEFINE,
387	DB_XA_CREATE               => DEFINE,
388
389	# enum DBTYPE
390	DB_QUEUE                   => '3.0.55',
391
392	#########
393	# 3.1.14
394	#########
395
396	DBC_ACTIVE                 => IGNORE,
397	DBC_OPD                    => IGNORE,
398	DBC_TRANSIENT              => IGNORE,
399	DBC_WRITEDUP               => IGNORE,
400	DB_AGGRESSIVE              => DEFINE,
401	DB_AM_DUPSORT              => IGNORE,
402	DB_CACHED_COUNTS           => DEFINE,
403	DB_CLIENT                  => DEFINE,
404	DB_DBT_DUPOK               => IGNORE,
405	DB_DBT_ISSET               => IGNORE,
406	DB_ENV_RPCCLIENT           => DEFINE,
407	DB_GET_BOTHC               => DEFINE,
408	DB_JOIN_NOSORT             => DEFINE,
409	DB_NODUPDATA               => DEFINE,
410	DB_NOORDERCHK              => DEFINE,
411	DB_NOSERVER                => DEFINE,
412	DB_NOSERVER_HOME           => DEFINE,
413	DB_NOSERVER_ID             => DEFINE,
414	DB_ODDFILESIZE             => DEFINE,
415	DB_ORDERCHKONLY            => DEFINE,
416	DB_PREV_NODUP              => DEFINE,
417	DB_PR_HEADERS              => DEFINE,
418	DB_PR_PAGE                 => DEFINE,
419	DB_PR_RECOVERYTEST         => DEFINE,
420	DB_RDWRMASTER              => DEFINE,
421	DB_SALVAGE                 => DEFINE,
422	DB_VERIFY_BAD              => DEFINE,
423	DB_VERIFY_FATAL            => DEFINE,
424	DB_VRFY_FLAGMASK           => DEFINE,
425
426	# enum db_recops
427	DB_TXN_ABORT               => '3.1.14',
428	DB_TXN_BACKWARD_ROLL       => '3.1.14',
429	DB_TXN_FORWARD_ROLL        => '3.1.14',
430	DB_TXN_OPENFILES           => '3.1.14',
431
432	#########
433	# 3.2.9
434	#########
435
436	DBC_COMPENSATE             => IGNORE,
437	DB_ALREADY_ABORTED         => DEFINE,
438	DB_AM_VERIFYING            => IGNORE,
439	DB_CDB_ALLDB               => DEFINE,
440	DB_CONSUME_WAIT            => DEFINE,
441	DB_ENV_CDB_ALLDB           => DEFINE,
442	DB_EXTENT                  => DEFINE,
443	DB_JAVA_CALLBACK           => DEFINE,
444	DB_JOINENV                 => DEFINE,
445	DB_LOCK_SWITCH             => DEFINE,
446	DB_MPOOL_EXTENT            => DEFINE,
447	DB_REGION_MAGIC            => DEFINE,
448	DB_VERIFY                  => DEFINE,
449
450	# enum db_lockmode_t
451	DB_LOCK_WAIT               => IGNORE, # 3.2.9
452
453	#########
454	# 3.3.11
455	#########
456
457	DBC_DIRTY_READ             => IGNORE,
458	DBC_MULTIPLE               => IGNORE,
459	DBC_MULTIPLE_KEY           => IGNORE,
460	DB_AM_DIRTY                => IGNORE,
461	DB_AM_SECONDARY            => IGNORE,
462	DB_COMMIT                  => DEFINE,
463	DB_DBT_APPMALLOC           => IGNORE,
464	DB_DIRTY_READ              => DEFINE,
465	DB_DONOTINDEX              => DEFINE,
466	DB_ENV_PANIC_OK            => DEFINE,
467	DB_ENV_RPCCLIENT_GIVEN     => DEFINE,
468	DB_FAST_STAT               => DEFINE,
469	DB_LOCK_MAXLOCKS           => DEFINE,
470	DB_LOCK_MINLOCKS           => DEFINE,
471	DB_LOCK_MINWRITE           => DEFINE,
472	DB_MULTIPLE                => DEFINE,
473	DB_MULTIPLE_KEY            => DEFINE,
474	DB_PAGE_NOTFOUND           => DEFINE,
475	DB_RPC_SERVERPROG          => DEFINE,
476	DB_RPC_SERVERVERS          => DEFINE,
477	DB_SECONDARY_BAD           => DEFINE,
478	DB_SURPRISE_KID            => DEFINE,
479	DB_TEST_POSTDESTROY        => DEFINE,
480	DB_TEST_PREDESTROY         => DEFINE,
481	DB_UPDATE_SECONDARY        => DEFINE,
482	DB_XIDDATASIZE             => DEFINE,
483
484	# enum db_recops
485	DB_TXN_POPENFILES          => '3.3.11',
486
487	# enum db_lockop_t
488	DB_LOCK_UPGRADE_WRITE      => '3.3.11',
489
490	# enum db_lockmode_t
491	DB_LOCK_DIRTY              => IGNORE, # 3.3.11
492	DB_LOCK_WWRITE             => IGNORE, # 3.3.11
493
494	#########
495	# 4.0.14
496	#########
497
498	DB_APPLY_LOGREG            => DEFINE,
499	DB_CL_WRITER               => DEFINE,
500	DB_EID_BROADCAST           => DEFINE,
501	DB_EID_INVALID             => DEFINE,
502	DB_ENV_NOLOCKING           => DEFINE,
503	DB_ENV_NOPANIC             => DEFINE,
504	DB_ENV_REGION_INIT         => DEFINE,
505	DB_ENV_REP_CLIENT          => DEFINE,
506	DB_ENV_REP_LOGSONLY        => DEFINE,
507	DB_ENV_REP_MASTER          => DEFINE,
508	DB_ENV_YIELDCPU            => DEFINE,
509	DB_GET_BOTH_RANGE          => DEFINE,
510	DB_LOCK_EXPIRE             => DEFINE,
511	DB_LOCK_FREE_LOCKER        => DEFINE,
512	DB_LOCK_SET_TIMEOUT        => DEFINE,
513	DB_LOGC_BUF_SIZE           => DEFINE,
514	DB_LOG_DISK                => DEFINE,
515	DB_LOG_LOCKED              => DEFINE,
516	DB_LOG_SILENT_ERR          => DEFINE,
517	DB_NOLOCKING               => DEFINE,
518	DB_NOPANIC                 => DEFINE,
519	DB_PANIC_ENVIRONMENT       => DEFINE,
520	DB_REP_CLIENT              => DEFINE,
521	DB_REP_DUPMASTER           => DEFINE,
522	DB_REP_HOLDELECTION        => DEFINE,
523	DB_REP_LOGSONLY            => DEFINE,
524	DB_REP_MASTER              => DEFINE,
525	DB_REP_NEWMASTER           => DEFINE,
526	DB_REP_NEWSITE             => DEFINE,
527	DB_REP_OUTDATED            => DEFINE,
528	DB_REP_PERMANENT           => DEFINE,
529	DB_REP_UNAVAIL             => DEFINE,
530	DB_SET_LOCK_TIMEOUT        => DEFINE,
531	DB_SET_TXN_NOW             => DEFINE,
532	DB_SET_TXN_TIMEOUT         => DEFINE,
533	DB_STAT_CLEAR              => DEFINE,
534	DB_TIMEOUT                 => DEFINE,
535	DB_VERB_REPLICATION        => DEFINE,
536	DB_YIELDCPU                => DEFINE,
537	MP_FLUSH                   => IGNORE,
538	MP_OPEN_CALLED             => IGNORE,
539	MP_READONLY                => IGNORE,
540	MP_UPGRADE                 => IGNORE,
541	MP_UPGRADE_FAIL            => IGNORE,
542	TXN_CHILDCOMMIT            => IGNORE,
543	TXN_COMPENSATE             => IGNORE,
544	TXN_DIRTY_READ             => IGNORE,
545	TXN_LOCKTIMEOUT            => IGNORE,
546	TXN_MALLOC                 => IGNORE,
547	TXN_NOSYNC                 => IGNORE,
548	TXN_NOWAIT                 => IGNORE,
549	TXN_SYNC                   => IGNORE,
550
551	# enum db_recops
552	DB_TXN_APPLY               => '4.0.14',
553
554	# enum db_lockop_t
555	DB_LOCK_GET_TIMEOUT        => '4.0.14',
556	DB_LOCK_PUT_READ           => '4.0.14',
557	DB_LOCK_TIMEOUT            => '4.0.14',
558
559	# enum db_status_t
560	DB_LSTAT_EXPIRED           => IGNORE, # 4.0.14
561
562	#########
563	# 4.1.24
564	#########
565
566	DBC_OWN_LID                => IGNORE,
567	DB_AM_CHKSUM               => IGNORE,
568	DB_AM_CL_WRITER            => IGNORE,
569	DB_AM_COMPENSATE           => IGNORE,
570	DB_AM_CREATED              => IGNORE,
571	DB_AM_CREATED_MSTR         => IGNORE,
572	DB_AM_DBM_ERROR            => IGNORE,
573	DB_AM_DELIMITER            => IGNORE,
574	DB_AM_ENCRYPT              => IGNORE,
575	DB_AM_FIXEDLEN             => IGNORE,
576	DB_AM_IN_RENAME            => IGNORE,
577	DB_AM_OPEN_CALLED          => IGNORE,
578	DB_AM_PAD                  => IGNORE,
579	DB_AM_RECNUM               => IGNORE,
580	DB_AM_RENUMBER             => IGNORE,
581	DB_AM_REVSPLITOFF          => IGNORE,
582	DB_AM_SNAPSHOT             => IGNORE,
583	DB_AUTO_COMMIT             => DEFINE,
584	DB_CHKSUM_SHA1             => DEFINE,
585	DB_DIRECT                  => DEFINE,
586	DB_DIRECT_DB               => DEFINE,
587	DB_DIRECT_LOG              => DEFINE,
588	DB_ENCRYPT                 => DEFINE,
589	DB_ENCRYPT_AES             => DEFINE,
590	DB_ENV_AUTO_COMMIT         => DEFINE,
591	DB_ENV_DIRECT_DB           => DEFINE,
592	DB_ENV_DIRECT_LOG          => DEFINE,
593	DB_ENV_FATAL               => DEFINE,
594	DB_ENV_OVERWRITE           => DEFINE,
595	DB_ENV_TXN_WRITE_NOSYNC    => DEFINE,
596	DB_HANDLE_LOCK             => DEFINE,
597	DB_LOCK_NOTEXIST           => DEFINE,
598	DB_LOCK_REMOVE             => DEFINE,
599	DB_NOCOPY                  => DEFINE,
600	DB_OVERWRITE               => DEFINE,
601	DB_PERMANENT               => DEFINE,
602	DB_PRINTABLE               => DEFINE,
603	DB_RENAMEMAGIC             => DEFINE,
604	DB_TEST_ELECTINIT          => DEFINE,
605	DB_TEST_ELECTSEND          => DEFINE,
606	DB_TEST_ELECTVOTE1         => DEFINE,
607	DB_TEST_ELECTVOTE2         => DEFINE,
608	DB_TEST_ELECTWAIT1         => DEFINE,
609	DB_TEST_ELECTWAIT2         => DEFINE,
610	DB_TEST_SUBDB_LOCKS        => DEFINE,
611	DB_TXN_LOCK                => DEFINE,
612	DB_TXN_WRITE_NOSYNC        => DEFINE,
613	DB_WRITEOPEN               => DEFINE,
614	DB_WRNOSYNC                => DEFINE,
615	_DB_EXT_PROT_IN_           => IGNORE,
616
617	# enum db_lockop_t
618	DB_LOCK_TRADE              => '4.1.24',
619
620	# enum db_status_t
621	DB_LSTAT_NOTEXIST          => IGNORE, # 4.1.24
622
623	# enum DB_CACHE_PRIORITY
624	DB_PRIORITY_VERY_LOW       => '4.1.24',
625	DB_PRIORITY_LOW            => '4.1.24',
626	DB_PRIORITY_DEFAULT        => '4.1.24',
627	DB_PRIORITY_HIGH           => '4.1.24',
628	DB_PRIORITY_VERY_HIGH      => '4.1.24',
629
630	# enum db_recops
631    #DB_TXN_BACKWARD_ALLOC      => '4.1.24',
632	DB_TXN_PRINT               => '4.1.24',
633
634	#########
635	# 4.2.50
636	#########
637
638	DB_AM_NOT_DURABLE          => IGNORE,
639	DB_AM_REPLICATION          => IGNORE,
640	DB_ARCH_REMOVE             => DEFINE,
641	DB_CHKSUM                  => DEFINE,
642	DB_ENV_LOG_AUTOREMOVE      => DEFINE,
643	DB_ENV_TIME_NOTGRANTED     => DEFINE,
644	DB_ENV_TXN_NOT_DURABLE     => DEFINE,
645	DB_FILEOPEN                => DEFINE,
646	DB_INIT_REP                => DEFINE,
647	DB_LOG_AUTOREMOVE          => DEFINE,
648	DB_LOG_CHKPNT              => DEFINE,
649	DB_LOG_COMMIT              => DEFINE,
650	DB_LOG_NOCOPY              => DEFINE,
651	DB_LOG_NOT_DURABLE         => DEFINE,
652	DB_LOG_PERM                => DEFINE,
653	DB_LOG_WRNOSYNC            => DEFINE,
654	DB_MPOOL_NOFILE            => DEFINE,
655	DB_MPOOL_UNLINK            => DEFINE,
656	DB_NO_AUTO_COMMIT          => DEFINE,
657	DB_REP_CREATE              => DEFINE,
658	DB_REP_HANDLE_DEAD         => DEFINE,
659	DB_REP_ISPERM              => DEFINE,
660	DB_REP_NOBUFFER            => DEFINE,
661	DB_REP_NOTPERM             => DEFINE,
662	DB_RPCCLIENT               => DEFINE,
663	DB_TIME_NOTGRANTED         => DEFINE,
664	DB_TXN_NOT_DURABLE         => DEFINE,
665	DB_debug_FLAG              => DEFINE,
666	DB_user_BEGIN              => DEFINE,
667	MP_FILEID_SET              => IGNORE,
668	TXN_RESTORED               => IGNORE,
669
670	#########
671	# 4.3.21
672	#########
673
674	DBC_DEGREE_2               => IGNORE,
675	DB_AM_INORDER              => IGNORE,
676	DB_BUFFER_SMALL            => DEFINE,
677	DB_DEGREE_2                => DEFINE,
678	DB_DSYNC_LOG               => DEFINE,
679	DB_DURABLE_UNKNOWN         => DEFINE,
680	DB_ENV_DSYNC_LOG           => DEFINE,
681	DB_ENV_LOG_INMEMORY        => DEFINE,
682	DB_INORDER                 => DEFINE,
683	DB_LOCK_ABORT              => DEFINE,
684	DB_LOCK_MAXWRITE           => DEFINE,
685	DB_LOG_BUFFER_FULL         => DEFINE,
686	DB_LOG_INMEMORY            => DEFINE,
687	DB_LOG_RESEND              => DEFINE,
688	DB_MPOOL_FREE              => DEFINE,
689	DB_REP_EGENCHG             => DEFINE,
690	DB_REP_LOGREADY            => DEFINE,
691	DB_REP_PAGEDONE            => DEFINE,
692	DB_REP_STARTUPDONE         => DEFINE,
693	DB_SEQUENCE_VERSION        => DEFINE,
694	DB_SEQ_DEC                 => DEFINE,
695	DB_SEQ_INC                 => DEFINE,
696	DB_SEQ_RANGE_SET           => DEFINE,
697	DB_SEQ_WRAP                => DEFINE,
698	DB_STAT_ALL                => DEFINE,
699	DB_STAT_LOCK_CONF          => DEFINE,
700	DB_STAT_LOCK_LOCKERS       => DEFINE,
701	DB_STAT_LOCK_OBJECTS       => DEFINE,
702	DB_STAT_LOCK_PARAMS        => DEFINE,
703	DB_STAT_MEMP_HASH          => DEFINE,
704	DB_STAT_SUBSYSTEM          => DEFINE,
705	DB_UNREF                   => DEFINE,
706	DB_VERSION_MISMATCH        => DEFINE,
707	TXN_DEADLOCK               => IGNORE,
708	TXN_DEGREE_2               => IGNORE,
709
710	#########
711	# 4.3.28
712	#########
713
714	DB_SEQUENCE_OLDVER         => DEFINE,
715
716	#########
717	# 4.4.16
718	#########
719
720	DBC_READ_COMMITTED         => IGNORE,
721	DBC_READ_UNCOMMITTED       => IGNORE,
722	DB_AM_READ_UNCOMMITTED     => IGNORE,
723	DB_ASSOC_IMMUTABLE_KEY     => DEFINE,
724	DB_COMPACT_FLAGS           => DEFINE,
725	DB_DSYNC_DB                => DEFINE,
726	DB_ENV_DSYNC_DB            => DEFINE,
727	DB_FREELIST_ONLY           => DEFINE,
728	DB_FREE_SPACE              => DEFINE,
729	DB_IMMUTABLE_KEY           => DEFINE,
730	DB_MUTEX_ALLOCATED         => DEFINE,
731	DB_MUTEX_LOCKED            => DEFINE,
732	DB_MUTEX_LOGICAL_LOCK      => DEFINE,
733	DB_MUTEX_SELF_BLOCK        => DEFINE,
734	DB_MUTEX_THREAD            => DEFINE,
735	DB_READ_COMMITTED          => DEFINE,
736	DB_READ_UNCOMMITTED        => DEFINE,
737	DB_REGISTER                => DEFINE,
738	DB_REP_ANYWHERE            => DEFINE,
739	DB_REP_BULKOVF             => DEFINE,
740	DB_REP_CONF_BULK           => DEFINE,
741	DB_REP_CONF_DELAYCLIENT    => DEFINE,
742	DB_REP_CONF_NOAUTOINIT     => DEFINE,
743	DB_REP_CONF_NOWAIT         => DEFINE,
744	DB_REP_IGNORE              => DEFINE,
745	DB_REP_JOIN_FAILURE        => DEFINE,
746	DB_REP_LOCKOUT             => DEFINE,
747	DB_REP_REREQUEST           => DEFINE,
748	DB_SEQ_WRAPPED             => DEFINE,
749	DB_THREADID_STRLEN         => DEFINE,
750	DB_VERB_REGISTER           => DEFINE,
751	TXN_READ_COMMITTED         => IGNORE,
752	TXN_READ_UNCOMMITTED       => IGNORE,
753	TXN_SYNC_FLAGS             => IGNORE,
754	TXN_WRITE_NOSYNC           => IGNORE,
755
756	# enum db_lockmode_t
757	DB_LOCK_READ_UNCOMMITTED   => IGNORE, # 4.4.16
758
759	#########
760	# 4.5.20
761	#########
762
763	DBC_DONTLOCK               => IGNORE,
764	DB_DBT_USERCOPY            => IGNORE,
765	DB_ENV_MULTIVERSION        => DEFINE,
766	DB_ENV_TXN_SNAPSHOT        => DEFINE,
767	DB_EVENT_NO_SUCH_EVENT     => DEFINE,
768	DB_EVENT_PANIC             => DEFINE,
769	DB_EVENT_REP_CLIENT        => DEFINE,
770	DB_EVENT_REP_MASTER        => DEFINE,
771	DB_EVENT_REP_NEWMASTER     => DEFINE,
772	DB_EVENT_REP_STARTUPDONE   => DEFINE,
773	DB_EVENT_WRITE_FAILED      => DEFINE,
774	DB_MPOOL_EDIT              => DEFINE,
775	DB_MULTIVERSION            => DEFINE,
776	DB_MUTEX_PROCESS_ONLY      => DEFINE,
777	DB_REPMGR_ACKS_ALL         => DEFINE,
778	DB_REPMGR_ACKS_ALL_PEERS   => DEFINE,
779	DB_REPMGR_ACKS_NONE        => DEFINE,
780	DB_REPMGR_ACKS_ONE         => DEFINE,
781	DB_REPMGR_ACKS_ONE_PEER    => DEFINE,
782	DB_REPMGR_ACKS_QUORUM      => DEFINE,
783	DB_REPMGR_CONNECTED        => DEFINE,
784	DB_REPMGR_DISCONNECTED     => DEFINE,
785	DB_REPMGR_PEER             => DEFINE,
786	DB_REP_ACK_TIMEOUT         => DEFINE,
787	DB_REP_CONNECTION_RETRY    => DEFINE,
788	DB_REP_ELECTION            => DEFINE,
789	DB_REP_ELECTION_RETRY      => DEFINE,
790	DB_REP_ELECTION_TIMEOUT    => DEFINE,
791	DB_REP_FULL_ELECTION       => DEFINE,
792	DB_STAT_NOERROR            => DEFINE,
793	DB_TEST_RECYCLE            => DEFINE,
794	DB_TXN_SNAPSHOT            => DEFINE,
795	DB_USERCOPY_GETDATA        => DEFINE,
796	DB_USERCOPY_SETDATA        => DEFINE,
797	MP_MULTIVERSION            => IGNORE,
798	TXN_ABORTED                => IGNORE,
799	TXN_CDSGROUP               => IGNORE,
800	TXN_COMMITTED              => IGNORE,
801	TXN_PREPARED               => IGNORE,
802	TXN_PRIVATE                => IGNORE,
803	TXN_RUNNING                => IGNORE,
804	TXN_SNAPSHOT               => IGNORE,
805	TXN_XA_ABORTED             => IGNORE,
806	TXN_XA_DEADLOCKED          => IGNORE,
807	TXN_XA_ENDED               => IGNORE,
808	TXN_XA_PREPARED            => IGNORE,
809	TXN_XA_STARTED             => IGNORE,
810	TXN_XA_SUSPENDED           => IGNORE,
811
812	#########
813	# 4.6.11
814	#########
815
816	DB_CKP_INTERNAL            => DEFINE,
817	DB_DBT_MULTIPLE            => IGNORE,
818	DB_ENV_NO_OUTPUT_SET       => DEFINE,
819	DB_ENV_RECOVER_FATAL       => DEFINE,
820	DB_ENV_REF_COUNTED         => DEFINE,
821	DB_ENV_TXN_NOWAIT          => DEFINE,
822	DB_EVENT_NOT_HANDLED       => DEFINE,
823	DB_EVENT_REP_ELECTED       => DEFINE,
824	DB_EVENT_REP_PERM_FAILED   => DEFINE,
825	DB_IGNORE_LEASE            => DEFINE,
826	DB_PREV_DUP                => DEFINE,
827	DB_REPFLAGS_MASK           => DEFINE,
828	DB_REP_CHECKPOINT_DELAY    => DEFINE,
829	DB_REP_DEFAULT_PRIORITY    => DEFINE,
830	DB_REP_FULL_ELECTION_TIMEOUT => DEFINE,
831	DB_REP_LEASE_EXPIRED       => DEFINE,
832	DB_REP_LEASE_TIMEOUT       => DEFINE,
833	DB_SPARE_FLAG              => DEFINE,
834	DB_TXN_WAIT                => DEFINE,
835	DB_VERB_FILEOPS            => DEFINE,
836	DB_VERB_FILEOPS_ALL        => DEFINE,
837
838	# enum DB_CACHE_PRIORITY
839	DB_PRIORITY_UNCHANGED      => '4.6.11',
840
841	#########
842	# 4.7.16
843	#########
844
845	DBC_DUPLICATE              => IGNORE,
846	DB_FOREIGN_ABORT           => DEFINE,
847	DB_FOREIGN_CASCADE         => DEFINE,
848	DB_FOREIGN_CONFLICT        => DEFINE,
849	DB_FOREIGN_NULLIFY         => DEFINE,
850	DB_LOG_AUTO_REMOVE         => DEFINE,
851	DB_LOG_DIRECT              => DEFINE,
852	DB_LOG_DSYNC               => DEFINE,
853	DB_LOG_IN_MEMORY           => DEFINE,
854	DB_LOG_ZERO                => DEFINE,
855	DB_MPOOL_NOLOCK            => DEFINE,
856	DB_REPMGR_CONF_2SITE_STRICT => DEFINE,
857	DB_REP_CONF_LEASE          => DEFINE,
858	DB_REP_HEARTBEAT_MONITOR   => DEFINE,
859	DB_REP_HEARTBEAT_SEND      => DEFINE,
860	DB_SA_SKIPFIRSTKEY         => DEFINE,
861	DB_STAT_MEMP_NOERROR       => DEFINE,
862	DB_ST_DUPOK                => DEFINE,
863	DB_ST_DUPSET               => DEFINE,
864	DB_ST_DUPSORT              => DEFINE,
865	DB_ST_IS_RECNO             => DEFINE,
866	DB_ST_OVFL_LEAF            => DEFINE,
867	DB_ST_RECNUM               => DEFINE,
868	DB_ST_RELEN                => DEFINE,
869	DB_ST_TOPLEVEL             => DEFINE,
870	DB_VERB_REPMGR_CONNFAIL    => DEFINE,
871	DB_VERB_REPMGR_MISC        => DEFINE,
872	DB_VERB_REP_ELECT          => DEFINE,
873	DB_VERB_REP_LEASE          => DEFINE,
874	DB_VERB_REP_MISC           => DEFINE,
875	DB_VERB_REP_MSGS           => DEFINE,
876	DB_VERB_REP_SYNC           => DEFINE,
877	MP_DUMMY                   => IGNORE,
878
879
880	) ;
881
882sub enum_Macro
883{
884    my $str = shift ;
885    my ($major, $minor, $patch) = split /\./, $str ;
886
887    my $macro = 
888    "#if (DB_VERSION_MAJOR > $major) || \\\n" .
889    "    (DB_VERSION_MAJOR == $major && DB_VERSION_MINOR > $minor) || \\\n" .
890    "    (DB_VERSION_MAJOR == $major && DB_VERSION_MINOR == $minor && \\\n" .
891    "     DB_VERSION_PATCH >= $patch)\n" ;
892
893    return $macro;
894
895}
896
897sub OutputXS
898{
899
900    my @names = () ;
901
902    foreach my $key (sort keys %constants)
903    {
904        my $val = $constants{$key} ;
905        next if $val eq IGNORE;
906
907        if ($val eq STRING)
908          { push @names, { name => $key, type => "PV" } }
909        elsif ($val eq DEFINE)
910          { push @names, $key }
911        else
912          { push @names, { name => $key, macro => [enum_Macro($val), "#endif\n"] } }
913    }
914
915    warn "Updating constants.xs & constants.h...\n";
916    WriteConstants(
917              NAME    => BerkeleyDB,
918              NAMES   => \@names,
919              C_FILE  => 'constants.h',
920              XS_FILE => 'constants.xs',
921          ) ;
922}
923
924sub OutputPM
925{
926    my $filename = 'BerkeleyDB.pm';
927    warn "Updating $filename...\n";
928    open IN, "<$filename" || die "Cannot open $filename: $!\n";
929    open OUT, ">$filename.tmp" || die "Cannot open $filename.tmp: $!\n";
930
931    my $START = '@EXPORT = qw(' ;
932    my $START_re = quotemeta $START ;
933    my $END = ');';
934    my $END_re = quotemeta $END ;
935
936    # skip to the @EXPORT declaration
937    OUTER: while (<IN>)
938    {
939        if ( /^\s*$START_re/ )
940        {
941            # skip to the end marker.
942            while (<IN>) 
943                { last OUTER if /^\s*$END_re/ }
944        }
945        print OUT ;
946    }
947    
948    print OUT "$START\n";
949    foreach my $key (sort keys %constants)
950    {
951        next if $constants{$key} eq IGNORE;
952	print OUT "\t$key\n";
953    }
954    print OUT "\t$END\n";
955    
956    while (<IN>)
957    {
958        print OUT ;
959    }
960
961    close IN;
962    close OUT;
963
964    rename $filename, "$filename.bak" || die "Cannot rename $filename: $!\n" ;
965    rename "$filename.tmp", $filename || die "Cannot rename $filename.tmp: $!\n" ;
966}
967
968OutputXS() ;
969OutputPM() ;
970