home *** CD-ROM | disk | FTP | other *** search
open in:
MacOS 8.1
|
Win98
|
DOS
view JSON data
|
view as text
This file was processed as: DOS BACKUP file
(archive/dosBackupFile).
You can browse this item here: BTCINIT.C
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| ff 01 00 00 00 5c 43 42 | 54 52 45 45 5c 4c 49 42 |.....\CB|TREE\LIB|
|00000010| 52 41 52 59 5c 42 54 43 | 49 4e 49 54 2e 43 00 00 |RARY\BTC|INIT.C..|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000050| 00 00 00 1a 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000060| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000080| 2f 2a 20 43 6f 70 79 72 | 69 67 68 74 20 28 43 29 |/* Copyr|ight (C)|
|00000090| 20 20 57 61 6c 74 65 72 | 20 4c 2e 20 50 65 61 63 | Walter| L. Peac|
|000000a0| 6f 63 6b 20 31 39 38 34 | 2d 31 39 38 38 2e 20 20 |ock 1984|-1988. |
|000000b0| 41 6c 6c 20 72 69 67 68 | 74 73 20 72 65 73 65 72 |All righ|ts reser|
|000000c0| 76 65 64 20 2a 2f 0d 0a | 0d 0a 2f 2a 20 54 48 49 |ved */..|../* THI|
|000000d0| 53 20 50 52 4f 47 52 41 | 4d 20 42 45 4c 4f 4e 47 |S PROGRA|M BELONG|
|000000e0| 53 20 54 4f 20 57 41 4c | 54 45 52 20 4c 2e 20 50 |S TO WAL|TER L. P|
|000000f0| 45 41 43 4f 43 4b 2e 20 | 20 49 54 20 49 53 20 43 |EACOCK. | IT IS C|
|00000100| 4f 4e 53 49 44 45 52 45 | 44 20 41 20 54 52 41 44 |ONSIDERE|D A TRAD|
|00000110| 45 20 2a 2f 0d 0a 2f 2a | 20 53 45 43 52 45 54 20 |E */../*| SECRET |
|00000120| 41 4e 44 20 49 53 20 4e | 4f 54 20 54 4f 20 42 45 |AND IS N|OT TO BE|
|00000130| 20 44 49 56 55 4c 47 45 | 44 20 4f 52 20 55 53 45 | DIVULGE|D OR USE|
|00000140| 44 20 42 59 20 50 41 52 | 54 49 45 53 20 57 48 4f |D BY PAR|TIES WHO|
|00000150| 20 48 41 56 45 20 4e 4f | 54 20 20 20 20 2a 2f 0d | HAVE NO|T */.|
|00000160| 0a 2f 2a 20 52 45 43 45 | 49 56 45 44 20 57 52 49 |./* RECE|IVED WRI|
|00000170| 54 54 45 4e 20 41 55 54 | 48 4f 52 49 5a 41 54 49 |TTEN AUT|HORIZATI|
|00000180| 4f 4e 20 46 52 4f 4d 20 | 54 48 45 20 4f 57 4e 45 |ON FROM |THE OWNE|
|00000190| 52 2e 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |R. | |
|000001a0| 20 20 2a 2f 0d 0a 0d 0a | 2f 2a 2d 2d 2d 2d 2d 2d | */....|/*------|
|000001b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000001c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000001d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000001e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000001f0| 2d 2d 2d 2d 2d 2d 20 0d | 0a 20 2a 20 54 68 65 20 |------ .|. * The |
|00000200| 62 74 63 69 6e 69 74 20 | 66 75 6e 63 74 69 6f 6e |btcinit |function|
|00000210| 20 69 73 20 69 6e 76 6f | 6b 65 64 20 74 6f 20 69 | is invo|ked to i|
|00000220| 6e 69 74 69 61 6c 69 7a | 65 20 74 68 65 20 62 74 |nitializ|e the bt|
|00000230| 63 6f 6d 6d 6f 20 73 74 | 72 75 63 74 75 72 65 20 |commo st|ructure |
|00000240| 66 6f 72 20 61 20 0d 0a | 20 2a 20 62 74 72 65 65 |for a ..| * btree|
|00000250| 2e 20 20 42 74 72 65 65 | 20 70 61 72 61 6d 65 74 |. Btree| paramet|
|00000260| 65 72 73 20 61 72 65 20 | 70 61 73 73 65 64 20 74 |ers are |passed t|
|00000270| 6f 20 74 68 69 73 20 66 | 75 6e 63 74 69 6f 6e 20 |o this f|unction |
|00000280| 61 73 20 61 72 67 75 6d | 65 6e 74 73 20 69 6e 73 |as argum|ents ins|
|00000290| 74 65 61 64 20 6f 66 0d | 0a 20 2a 20 62 65 69 6e |tead of.|. * bein|
|000002a0| 67 20 72 65 61 64 20 66 | 72 6f 6d 20 62 74 70 61 |g read f|rom btpa|
|000002b0| 72 6d 73 2e 62 74 72 2e | 20 20 0d 0a 20 2a 20 54 |rms.btr.| .. * T|
|000002c0| 68 69 73 20 66 75 6e 63 | 74 69 6f 6e 20 63 61 6e |his func|tion can|
|000002d0| 20 62 65 20 63 61 6c 6c | 65 64 20 62 79 20 79 6f | be call|ed by yo|
|000002e0| 75 72 20 61 70 70 6c 69 | 63 61 74 69 6f 6e 73 20 |ur appli|cations |
|000002f0| 74 6f 20 63 72 65 61 74 | 65 20 62 74 72 65 65 73 |to creat|e btrees|
|00000300| 20 6f 6e 20 74 68 65 20 | 66 6c 79 0d 0a 20 2a 20 | on the |fly.. * |
|00000310| 77 69 74 68 6f 75 74 20 | 74 68 65 20 6e 65 65 64 |without |the need|
|00000320| 20 74 6f 20 72 65 61 64 | 20 74 68 65 20 70 61 72 | to read| the par|
|00000330| 61 6d 65 74 65 72 20 69 | 6e 66 6f 20 69 6e 20 62 |ameter i|nfo in b|
|00000340| 74 70 61 72 6d 73 2e 62 | 74 72 2c 20 68 6f 77 65 |tparms.b|tr, howe|
|00000350| 76 65 72 2c 20 79 6f 75 | 72 0d 0a 20 2a 20 70 72 |ver, you|r.. * pr|
|00000360| 6f 67 72 61 6d 73 20 77 | 69 6c 6c 20 6e 65 65 64 |ograms w|ill need|
|00000370| 20 74 6f 20 72 65 6d 65 | 6d 62 65 72 20 74 68 65 | to reme|mber the|
|00000380| 20 70 61 72 61 6d 65 74 | 65 72 73 20 70 61 73 73 | paramet|ers pass|
|00000390| 65 64 20 74 68 65 20 6e | 65 78 74 20 74 69 6d 65 |ed the n|ext time|
|000003a0| 20 74 68 61 74 20 74 68 | 65 0d 0a 20 2a 20 62 74 | that th|e.. * bt|
|000003b0| 72 65 65 20 69 73 20 74 | 6f 20 62 65 20 61 63 63 |ree is t|o be acc|
|000003c0| 65 73 73 65 64 2e 0d 0a | 20 2a 20 0d 0a 20 2a 20 |essed...| * .. * |
|000003d0| 54 68 69 73 20 72 6f 75 | 74 69 6e 65 20 69 73 20 |This rou|tine is |
|000003e0| 61 6c 73 6f 20 69 6e 76 | 6f 6b 65 64 20 62 79 20 |also inv|oked by |
|000003f0| 62 74 72 69 6e 69 74 28 | 29 20 77 68 69 63 68 20 |btrinit(|) which |
|00000400| 73 75 70 70 6c 69 65 73 | 20 69 74 73 20 70 61 72 |supplies| its par|
|00000410| 61 6d 65 74 65 72 73 20 | 20 0d 0a 20 2a 20 66 72 |ameters | .. * fr|
|00000420| 6f 6d 20 62 74 70 61 72 | 6d 73 2e 62 74 72 2e 20 |om btpar|ms.btr. |
|00000430| 20 54 68 65 20 62 74 63 | 6f 6d 6d 6f 20 6d 65 6d | The btc|ommo mem|
|00000440| 62 65 72 73 20 61 72 65 | 20 69 6e 69 74 69 61 6c |bers are| initial|
|00000450| 69 7a 65 64 20 61 73 20 | 66 6f 6c 6c 6f 77 73 3a |ized as |follows:|
|00000460| 0d 0a 20 2a 0d 0a 20 2a | 20 20 20 62 74 6f 70 74 |.. *.. *| btopt|
|00000470| 79 70 65 20 20 69 73 20 | 73 65 74 20 74 6f 20 47 |ype is |set to G|
|00000480| 45 54 52 45 43 20 61 73 | 20 61 20 64 65 66 61 75 |ETREC as| a defau|
|00000490| 6c 74 2c 0d 0a 20 2a 20 | 20 20 62 74 72 6f 6f 74 |lt,.. * | btroot|
|000004a0| 20 20 20 20 69 73 20 73 | 65 74 20 74 6f 20 30 4c | is s|et to 0L|
|000004b0| 2c 0d 0a 20 2a 20 20 20 | 62 74 69 64 78 6c 65 6e |,.. * |btidxlen|
|000004c0| 20 20 69 73 20 73 65 74 | 20 74 6f 20 74 68 65 20 | is set| to the |
|000004d0| 76 61 6c 75 65 20 70 61 | 73 73 65 64 2e 0d 0a 20 |value pa|ssed... |
|000004e0| 2a 20 20 20 62 74 69 64 | 78 6e 6d 65 20 20 69 73 |* btid|xnme is|
|000004f0| 20 73 65 74 20 74 6f 20 | 74 68 65 20 76 61 6c 75 | set to |the valu|
|00000500| 65 20 70 61 73 73 65 64 | 2e 0d 0a 20 2a 20 20 20 |e passed|... * |
|00000510| 62 74 63 65 6c 6c 73 20 | 20 20 69 73 20 73 65 74 |btcells | is set|
|00000520| 20 74 6f 20 74 68 65 20 | 76 61 6c 75 65 20 63 61 | to the |value ca|
|00000530| 6c 63 75 6c 61 74 65 64 | 20 62 79 20 43 42 54 52 |lculated| by CBTR|
|00000540| 45 45 20 66 6f 72 6d 75 | 6c 61 2e 0d 0a 20 2a 20 |EE formu|la... * |
|00000550| 20 20 62 74 64 74 61 6c | 65 6e 20 20 69 73 20 73 | btdtal|en is s|
|00000560| 65 74 20 74 6f 20 74 68 | 65 20 76 61 6c 75 65 20 |et to th|e value |
|00000570| 70 61 73 73 65 64 2e 0d | 0a 20 2a 20 20 20 62 74 |passed..|. * bt|
|00000580| 6b 65 79 6c 65 6e 20 20 | 69 73 20 73 65 74 20 74 |keylen |is set t|
|00000590| 6f 20 74 68 65 20 76 61 | 6c 75 65 20 70 61 73 73 |o the va|lue pass|
|000005a0| 65 64 2e 0d 0a 20 2a 20 | 20 20 62 74 6b 65 79 20 |ed... * | btkey |
|000005b0| 20 20 20 20 69 73 20 73 | 65 74 20 74 6f 20 61 6e | is s|et to an|
|000005c0| 20 61 6c 6c 6f 63 61 74 | 65 64 20 6d 65 6d 6f 72 | allocat|ed memor|
|000005d0| 79 20 62 6c 6f 63 6b 20 | 6f 66 20 62 74 6b 65 79 |y block |of btkey|
|000005e0| 6c 65 6e 20 2b 20 31 20 | 62 79 74 65 73 2c 0d 0a |len + 1 |bytes,..|
|000005f0| 20 2a 20 20 20 62 74 6d | 61 78 20 20 20 20 20 69 | * btm|ax i|
|00000600| 73 20 73 65 74 20 74 6f | 20 74 68 65 20 76 61 6c |s set to| the val|
|00000610| 75 65 20 70 61 73 73 65 | 64 20 28 6d 75 73 74 20 |ue passe|d (must |
|00000620| 62 65 20 3e 20 30 29 2e | 0d 0a 20 2a 20 20 20 62 |be > 0).|.. * b|
|00000630| 74 72 65 63 6e 75 6d 20 | 20 69 73 20 73 65 74 20 |trecnum | is set |
|00000640| 74 6f 20 61 6e 20 61 6c | 6c 6f 63 61 74 65 64 20 |to an al|located |
|00000650| 6d 65 6d 6f 72 79 20 62 | 6c 6f 63 6b 20 6f 66 20 |memory b|lock of |
|00000660| 62 74 6d 61 78 20 2b 20 | 31 20 6c 6f 6e 67 73 2c |btmax + |1 longs,|
|00000670| 0d 0a 20 2a 20 20 20 20 | 20 20 0d 0a 20 2a 20 54 |.. * | .. * T|
|00000680| 68 65 20 63 68 61 72 61 | 63 74 65 72 20 73 74 72 |he chara|cter str|
|00000690| 69 6e 67 20 69 64 78 6e | 61 6d 65 20 70 61 73 73 |ing idxn|ame pass|
|000006a0| 65 64 20 74 6f 20 62 74 | 63 69 6e 69 74 28 29 20 |ed to bt|cinit() |
|000006b0| 69 64 65 6e 74 69 66 69 | 65 73 20 74 68 65 20 62 |identifi|es the b|
|000006c0| 74 72 65 65 20 6e 61 6d | 65 2e 0d 0a 20 2a 20 69 |tree nam|e... * i|
|000006d0| 64 78 66 6e 61 6d 65 20 | 69 64 65 6e 74 69 66 69 |dxfname |identifi|
|000006e0| 65 73 20 74 68 65 20 69 | 6e 64 65 78 20 66 69 6c |es the i|ndex fil|
|000006f0| 65 20 6e 61 6d 65 20 74 | 68 61 74 20 63 6f 6e 74 |e name t|hat cont|
|00000700| 61 69 6e 73 20 74 68 65 | 20 62 74 72 65 65 2e 0d |ains the| btree..|
|00000710| 0a 20 2a 20 41 20 76 61 | 6c 69 64 20 6e 61 6d 65 |. * A va|lid name|
|00000720| 20 63 6f 6e 74 61 69 6e | 73 20 31 20 74 6f 20 38 | contain|s 1 to 8|
|00000730| 20 61 6c 70 68 61 6e 75 | 6d 65 72 69 63 20 63 68 | alphanu|meric ch|
|00000740| 61 72 61 63 74 65 72 73 | 2e 0d 0a 20 2a 0d 0a 20 |aracters|... *.. |
|00000750| 2a 20 69 66 28 20 28 62 | 74 63 69 6e 69 74 28 26 |* if( (b|tcinit(&|
|00000760| 62 74 6e 6d 65 2c 20 22 | 70 61 74 69 65 6e 74 2e |btnme, "|patient.|
|00000770| 69 64 78 22 2c 6e 61 6d | 5f 62 74 6e 6d 65 2c 35 |idx",nam|_btnme,5|
|00000780| 31 32 2c 32 32 2c 31 32 | 38 2c 31 32 38 29 20 29 |12,22,12|8,128) )|
|00000790| 20 3d 3d 20 45 52 52 29 | 0d 0a 20 2a 20 7b 0d 0a | == ERR)|.. * {..|
|000007a0| 20 2a 20 20 20 20 63 6b | 65 72 72 6f 72 28 20 43 | * ck|error( C|
|000007b0| 4b 5f 42 54 52 49 4e 2c | 20 22 62 6c 64 32 76 61 |K_BTRIN,| "bld2va|
|000007c0| 72 3a 20 62 74 6e 6d 65 | 22 29 3b 0d 0a 20 2a 20 |r: btnme|");.. * |
|000007d0| 20 20 20 67 6f 74 6f 20 | 62 32 76 5f 30 65 78 69 | goto |b2v_0exi|
|000007e0| 74 3b 0d 0a 20 2a 20 7d | 0d 0a 20 2a 0d 0a 20 2a |t;.. * }|.. *.. *|
|000007f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000800| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000810| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000820| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000830| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2a 2f 0d 0a 0d |--------|---*/...|
|00000840| 0a 23 69 6e 63 6c 75 64 | 65 20 3c 73 74 64 69 6f |.#includ|e <stdio|
|00000850| 2e 68 3e 0d 0a 23 69 6e | 63 6c 75 64 65 20 22 63 |.h>..#in|clude "c|
|00000860| 62 74 72 65 65 2e 68 22 | 0d 0a 23 69 6e 63 6c 75 |btree.h"|..#inclu|
|00000870| 64 65 20 22 62 74 66 69 | 6f 2e 68 22 0d 0a 0d 0a |de "btfi|o.h"....|
|00000880| 23 69 66 20 43 49 20 7c | 20 44 43 0d 0a 23 65 6c |#if CI || DC..#el|
|00000890| 73 65 0d 0a 23 69 6e 63 | 6c 75 64 65 20 3c 63 74 |se..#inc|lude <ct|
|000008a0| 79 70 65 2e 68 3e 0d 0a | 23 65 6e 64 69 66 0d 0a |ype.h>..|#endif..|
|000008b0| 0d 0a 2f 2a 20 30 33 2f | 31 32 2f 38 38 20 62 74 |../* 03/|12/88 bt|
|000008c0| 63 69 6e 69 74 2e 63 20 | 20 20 2a 2f 0d 0a 0d 0a |cinit.c | */....|
|000008d0| 69 6e 74 20 62 74 63 69 | 6e 69 74 28 62 74 63 70 |int btci|nit(btcp|
|000008e0| 2c 20 69 64 78 66 6e 61 | 6d 65 2c 20 69 64 78 6e |, idxfna|me, idxn|
|000008f0| 61 6d 65 2c 20 69 64 78 | 73 69 7a 65 2c 20 6b 65 |ame, idx|size, ke|
|00000900| 79 73 69 7a 65 2c 20 64 | 61 74 61 73 69 7a 65 2c |ysize, d|atasize,|
|00000910| 20 62 74 6d 61 78 73 7a | 29 0d 0a 42 54 43 20 2a | btmaxsz|)..BTC *|
|00000920| 62 74 63 70 3b 09 09 09 | 2f 2a 20 62 74 63 6f 6d |btcp;...|/* btcom|
|00000930| 6d 6f 20 73 74 72 75 63 | 74 75 72 65 20 74 61 67 |mo struc|ture tag|
|00000940| 2e 20 2a 2f 0d 0a 63 68 | 61 72 20 2a 69 64 78 66 |. */..ch|ar *idxf|
|00000950| 6e 61 6d 65 3b 09 09 2f | 2a 20 69 6e 64 65 78 20 |name;../|* index |
|00000960| 66 69 6c 65 20 6e 61 6d | 65 2e 20 2a 2f 0d 0a 63 |file nam|e. */..c|
|00000970| 68 61 72 20 2a 69 64 78 | 6e 61 6d 65 3b 09 09 2f |har *idx|name;../|
|00000980| 2a 20 69 6e 64 65 78 20 | 62 74 72 65 65 20 6e 61 |* index |btree na|
|00000990| 6d 65 2e 20 2a 2f 0d 0a | 75 6e 73 69 67 6e 65 64 |me. */..|unsigned|
|000009a0| 20 69 64 78 73 69 7a 65 | 3b 09 2f 2a 20 69 6e 64 | idxsize|;./* ind|
|000009b0| 65 78 20 62 6c 6f 63 6b | 20 73 69 7a 65 2e 20 2a |ex block| size. *|
|000009c0| 2f 0d 0a 75 6e 73 69 67 | 6e 65 64 20 6b 65 79 73 |/..unsig|ned keys|
|000009d0| 69 7a 65 3b 09 2f 2a 20 | 69 6e 64 65 78 20 6d 61 |ize;./* |index ma|
|000009e0| 78 69 6d 75 6d 20 6b 65 | 79 20 73 69 7a 65 2e 20 |ximum ke|y size. |
|000009f0| 2a 2f 0d 0a 75 6e 73 69 | 67 6e 65 64 20 64 61 74 |*/..unsi|gned dat|
|00000a00| 61 73 69 7a 65 3b 09 2f | 2a 20 64 61 74 61 20 66 |asize;./|* data f|
|00000a10| 69 6c 65 20 66 69 78 65 | 64 20 6c 65 6e 67 74 68 |ile fixe|d length|
|00000a20| 20 72 65 63 6f 72 64 20 | 73 69 7a 65 2c 20 30 20 | record |size, 0 |
|00000a30| 66 6f 72 20 76 61 72 69 | 62 6c 65 2e 20 2a 2f 0d |for vari|ble. */.|
|00000a40| 0a 75 6e 73 69 67 6e 65 | 64 20 62 74 6d 61 78 73 |.unsigne|d btmaxs|
|00000a50| 7a 3b 09 2f 2a 20 23 20 | 6f 66 20 63 65 6c 6c 73 |z;./* # |of cells|
|00000a60| 20 74 6f 20 63 61 6c 6c | 6f 63 20 66 6f 72 20 62 | to call|oc for b|
|00000a70| 6c 6f 63 6b 20 63 61 6c | 6c 73 3a 20 47 45 54 41 |lock cal|ls: GETA|
|00000a80| 4c 4c 2c 20 47 45 54 4b | 45 59 53 2e 20 2a 2f 0d |LL, GETK|EYS. */.|
|00000a90| 0a 7b 0d 0a 20 20 20 65 | 78 74 65 72 6e 20 6c 6f |.{.. e|xtern lo|
|00000aa0| 6e 67 20 66 69 6e 64 72 | 6f 6f 74 28 29 3b 0d 0a |ng findr|oot();..|
|00000ab0| 20 20 20 65 78 74 65 72 | 6e 20 69 6e 74 20 20 63 | exter|n int c|
|00000ac0| 6c 6f 73 65 28 29 3b 0d | 0a 20 20 20 65 78 74 65 |lose();.|. exte|
|00000ad0| 72 6e 20 76 6f 69 64 20 | 66 72 65 65 28 29 3b 0d |rn void |free();.|
|00000ae0| 0a 20 20 20 65 78 74 65 | 72 6e 20 63 68 61 72 20 |. exte|rn char |
|00000af0| 2a 63 61 6c 6c 6f 63 28 | 29 3b 0d 0a 20 20 20 42 |*calloc(|);.. B|
|00000b00| 54 5f 42 41 53 45 20 62 | 74 62 61 73 65 3b 0d 0a |T_BASE b|tbase;..|
|00000b10| 20 20 20 42 54 5f 49 4e | 46 4f 20 62 74 69 6e 66 | BT_IN|FO btinf|
|00000b20| 6f 3b 0d 0a 20 20 20 69 | 6e 74 20 66 64 3b 0d 0a |o;.. i|nt fd;..|
|00000b30| 20 20 20 72 65 67 69 73 | 74 65 72 20 69 6e 74 20 | regis|ter int |
|00000b40| 69 3b 0d 0a 0d 0a 20 20 | 20 69 66 20 28 28 62 74 |i;.... | if ((bt|
|00000b50| 63 70 2d 3e 64 74 61 6e | 61 6d 65 20 3d 20 63 61 |cp->dtan|ame = ca|
|00000b60| 6c 6c 6f 63 28 33 30 2c | 20 53 5a 43 48 41 52 29 |lloc(30,| SZCHAR)|
|00000b70| 29 20 3d 3d 20 4e 55 4c | 4c 29 0d 0a 20 20 20 20 |) == NUL|L).. |
|00000b80| 20 20 63 6b 65 72 72 6f | 72 28 20 2d 20 43 4b 5f | ckerro|r( - CK_|
|00000b90| 4e 4f 4d 45 4d 2c 20 22 | 37 39 22 29 3b 0d 0a 0d |NOMEM, "|79");...|
|00000ba0| 0a 20 20 20 62 74 63 70 | 2d 3e 62 74 64 74 61 6c |. btcp|->btdtal|
|00000bb0| 65 6e 20 3d 20 64 61 74 | 61 73 69 7a 65 3b 0d 0a |en = dat|asize;..|
|00000bc0| 20 20 20 62 74 63 70 2d | 3e 62 74 76 61 72 6c 65 | btcp-|>btvarle|
|00000bd0| 6e 20 3d 20 28 62 74 63 | 70 2d 3e 62 74 64 74 61 |n = (btc|p->btdta|
|00000be0| 6c 65 6e 20 3d 3d 20 30 | 29 3b 0d 0a 20 20 20 62 |len == 0|);.. b|
|00000bf0| 74 63 70 2d 3e 62 74 6d | 75 6c 74 69 20 3d 20 30 |tcp->btm|ulti = 0|
|00000c00| 3b 20 0d 0a 20 20 20 62 | 74 63 70 2d 3e 62 74 63 |; .. b|tcp->btc|
|00000c10| 72 61 73 68 20 3d 20 30 | 3b 20 0d 0a 0d 0a 20 20 |rash = 0|; .... |
|00000c20| 20 69 66 20 28 28 66 64 | 20 3d 20 62 74 5f 6f 70 | if ((fd| = bt_op|
|00000c30| 65 6e 28 69 64 78 66 6e | 61 6d 65 2c 20 4f 5f 52 |en(idxfn|ame, O_R|
|00000c40| 44 4f 4e 4c 59 29 29 20 | 3d 3d 20 45 52 52 29 0d |DONLY)) |== ERR).|
|00000c50| 0a 20 20 20 20 20 20 62 | 74 63 70 2d 3e 66 69 6e |. b|tcp->fin|
|00000c60| 64 72 6f 6f 74 20 3d 20 | 2d 31 4c 3b 0d 0a 20 20 |droot = |-1L;.. |
|00000c70| 20 65 6c 73 65 0d 0a 20 | 20 20 7b 0d 0a 20 20 20 | else.. | {.. |
|00000c80| 20 20 20 69 66 20 28 28 | 62 74 63 70 2d 3e 66 69 | if ((|btcp->fi|
|00000c90| 6e 64 72 6f 6f 74 20 3d | 20 66 69 6e 64 72 6f 6f |ndroot =| findroo|
|00000ca0| 74 28 66 64 2c 20 69 64 | 78 6e 61 6d 65 29 29 20 |t(fd, id|xname)) |
|00000cb0| 3e 20 30 4c 29 0d 0a 20 | 20 20 20 20 20 20 20 20 |> 0L).. | |
|00000cc0| 67 65 74 69 6e 66 6f 28 | 26 62 74 69 6e 66 6f 2c |getinfo(|&btinfo,|
|00000cd0| 20 66 64 2c 20 62 74 63 | 70 2d 3e 66 69 6e 64 72 | fd, btc|p->findr|
|00000ce0| 6f 6f 74 29 3b 20 20 2f | 2a 20 67 65 74 20 65 6d |oot); /|* get em|
|00000cf0| 62 65 64 64 65 64 20 70 | 61 72 61 6d 65 74 65 72 |bedded p|arameter|
|00000d00| 73 20 2a 2f 0d 0a 20 20 | 20 20 20 20 65 6c 73 65 |s */.. | else|
|00000d10| 20 69 66 20 28 62 74 63 | 70 2d 3e 66 69 6e 64 72 | if (btc|p->findr|
|00000d20| 6f 6f 74 20 3d 3d 20 30 | 4c 29 0d 0a 20 20 20 20 |oot == 0|L).. |
|00000d30| 20 20 20 20 20 67 65 74 | 62 61 73 65 28 26 62 74 | get|base(&bt|
|00000d40| 62 61 73 65 2c 20 66 64 | 29 3b 0d 0a 20 20 20 20 |base, fd|);.. |
|00000d50| 20 20 63 6c 6f 73 65 20 | 28 66 64 29 3b 0d 0a 20 | close |(fd);.. |
|00000d60| 20 20 7d 0d 0a 0d 0a 20 | 20 20 62 74 63 70 2d 3e | }.... | btcp->|
|00000d70| 62 74 72 6f 6f 74 20 3d | 20 30 4c 3b 0d 0a 20 20 |btroot =| 0L;.. |
|00000d80| 20 62 74 63 70 2d 3e 69 | 64 78 6e 61 6d 65 20 3d | btcp->i|dxname =|
|00000d90| 20 63 61 6c 6c 6f 63 28 | 4d 41 58 46 4e 41 4d 45 | calloc(|MAXFNAME|
|00000da0| 20 2b 20 31 2c 20 53 5a | 43 48 41 52 29 3b 20 20 | + 1, SZ|CHAR); |
|00000db0| 20 2f 2a 20 63 63 32 32 | 30 20 2a 2f 0d 0a 20 20 | /* cc22|0 */.. |
|00000dc0| 20 69 66 20 28 62 74 63 | 70 2d 3e 69 64 78 6e 61 | if (btc|p->idxna|
|00000dd0| 6d 65 20 3d 3d 20 4e 55 | 4c 4c 29 0d 0a 20 20 20 |me == NU|LL).. |
|00000de0| 20 20 20 63 6b 65 72 72 | 6f 72 28 20 2d 20 43 4b | ckerr|or( - CK|
|00000df0| 5f 4e 4f 4d 45 4d 2c 20 | 22 38 35 22 29 3b 0d 0a |_NOMEM, |"85");..|
|00000e00| 20 20 20 73 74 72 63 70 | 79 28 62 74 63 70 2d 3e | strcp|y(btcp->|
|00000e10| 69 64 78 6e 61 6d 65 2c | 20 69 64 78 66 6e 61 6d |idxname,| idxfnam|
|00000e20| 65 29 3b 20 20 20 20 2f | 2a 20 69 6e 64 65 78 20 |e); /|* index |
|00000e30| 66 69 6c 65 20 6e 61 6d | 65 20 2a 2f 0d 0a 20 20 |file nam|e */.. |
|00000e40| 20 62 74 63 70 2d 3e 62 | 74 69 64 78 6c 65 6e 20 | btcp->b|tidxlen |
|00000e50| 3d 20 69 64 78 73 69 7a | 65 3b 0d 0a 20 20 20 62 |= idxsiz|e;.. b|
|00000e60| 74 63 70 2d 3e 62 74 6b | 65 79 6c 65 6e 20 3d 20 |tcp->btk|eylen = |
|00000e70| 6b 65 79 73 69 7a 65 3b | 0d 0a 0d 0a 20 20 20 2f |keysize;|.... /|
|00000e80| 2a 20 62 74 63 65 6c 6c | 73 20 63 61 6c 63 75 6c |* btcell|s calcul|
|00000e90| 61 74 69 6f 6e 20 69 73 | 20 66 72 6f 6d 20 62 74 |ation is| from bt|
|00000ea0| 73 65 74 75 70 2e 63 2e | 20 20 2a 2f 0d 0a 20 20 |setup.c.| */.. |
|00000eb0| 20 62 74 63 70 2d 3e 62 | 74 63 65 6c 6c 73 20 3d | btcp->b|tcells =|
|00000ec0| 20 28 69 64 78 73 69 7a | 65 20 2d 20 32 20 2a 20 | (idxsiz|e - 2 * |
|00000ed0| 73 69 7a 65 6f 66 28 6c | 6f 6e 67 29 20 2d 20 32 |sizeof(l|ong) - 2|
|00000ee0| 20 2a 20 73 69 7a 65 6f | 66 28 75 77 6f 72 64 29 | * sizeo|f(uword)|
|00000ef0| 20 2d 20 32 29 20 2f 0d | 0a 20 20 20 20 20 20 20 | - 2) /.|. |
|00000f00| 20 20 28 73 69 7a 65 6f | 66 28 6c 6f 6e 67 29 20 | (sizeo|f(long) |
|00000f10| 2b 20 6b 65 79 73 69 7a | 65 20 2b 20 53 5a 43 48 |+ keysiz|e + SZCH|
|00000f20| 41 52 29 3b 0d 0a 0d 0a | 20 20 20 69 66 20 28 28 |AR);....| if ((|
|00000f30| 62 74 63 70 2d 3e 66 69 | 6e 64 72 6f 6f 74 20 3e |btcp->fi|ndroot >|
|00000f40| 20 30 4c 20 20 26 26 20 | 20 20 20 20 2f 2a 20 69 | 0L && | /* i|
|00000f50| 66 20 77 65 20 68 61 76 | 65 20 67 6f 6f 64 20 49 |f we hav|e good I|
|00000f60| 4e 46 4f 20 2a 2f 0d 0a | 20 20 20 20 20 20 20 28 |NFO */..| (|
|00000f70| 62 74 63 70 2d 3e 62 74 | 69 64 78 6c 65 6e 20 21 |btcp->bt|idxlen !|
|00000f80| 3d 20 62 74 69 6e 66 6f | 2e 62 69 5f 62 6c 6b 73 |= btinfo|.bi_blks|
|00000f90| 7a 20 7c 7c 0d 0a 20 20 | 20 20 20 20 20 20 20 62 |z ||.. | b|
|00000fa0| 74 63 70 2d 3e 62 74 6b | 65 79 6c 65 6e 20 3e 20 |tcp->btk|eylen > |
|00000fb0| 62 74 69 6e 66 6f 2e 62 | 69 5f 6b 79 6c 65 6e 20 |btinfo.b|i_kylen |
|00000fc0| 7c 7c 0d 0a 20 20 20 20 | 20 20 20 20 20 62 74 63 |||.. | btc|
|00000fd0| 70 2d 3e 62 74 63 65 6c | 6c 73 20 21 3d 20 62 74 |p->btcel|ls != bt|
|00000fe0| 69 6e 66 6f 2e 62 69 5f | 63 65 6c 6c 73 20 7c 7c |info.bi_|cells |||
|00000ff0| 0d 0a 20 20 20 20 20 20 | 20 20 20 62 74 63 70 2d |.. | btcp-|
|00001000| 3e 62 74 76 61 72 6c 65 | 6e 20 21 3d 20 62 74 69 |>btvarle|n != bti|
|00001010| 6e 66 6f 2e 62 69 5f 76 | 61 72 6c 65 6e 20 29 29 |nfo.bi_v|arlen ))|
|00001020| 20 7c 7c 0d 0a 20 20 20 | 20 20 20 20 28 62 74 63 | ||.. | (btc|
|00001030| 70 2d 3e 66 69 6e 64 72 | 6f 6f 74 20 3d 3d 20 30 |p->findr|oot == 0|
|00001040| 4c 20 26 26 0d 0a 20 20 | 20 20 20 20 20 20 28 62 |L &&.. | (b|
|00001050| 74 63 70 2d 3e 62 74 69 | 64 78 6c 65 6e 20 21 3d |tcp->bti|dxlen !=|
|00001060| 20 62 74 62 61 73 65 2e | 62 62 5f 62 6c 6b 73 7a | btbase.|bb_blksz|
|00001070| 20 7c 7c 0d 0a 20 20 20 | 20 20 20 20 20 20 62 74 | ||.. | bt|
|00001080| 63 70 2d 3e 62 74 76 61 | 72 6c 65 6e 20 21 3d 20 |cp->btva|rlen != |
|00001090| 62 74 62 61 73 65 2e 62 | 62 5f 76 61 72 6c 65 6e |btbase.b|b_varlen|
|000010a0| 29 29 29 0d 0a 20 20 20 | 20 20 20 63 6b 65 72 72 |))).. | ckerr|
|000010b0| 6f 72 28 2d 20 43 4b 5f | 49 4e 44 58 2c 20 22 31 |or(- CK_|INDX, "1|
|000010c0| 33 31 22 29 3b 0d 0a 0d | 0a 20 20 20 62 74 63 70 |31");...|. btcp|
|000010d0| 2d 3e 62 74 6e 61 6d 65 | 20 3d 20 63 61 6c 6c 6f |->btname| = callo|
|000010e0| 63 28 38 20 2b 20 31 2c | 20 53 5a 43 48 41 52 29 |c(8 + 1,| SZCHAR)|
|000010f0| 3b 20 20 20 20 2f 2a 20 | 63 63 32 32 30 20 2a 2f |; /* |cc220 */|
|00001100| 0d 0a 20 20 20 69 66 20 | 28 62 74 63 70 2d 3e 62 |.. if |(btcp->b|
|00001110| 74 6e 61 6d 65 20 3d 3d | 20 4e 55 4c 4c 29 0d 0a |tname ==| NULL)..|
|00001120| 20 20 20 20 20 20 63 6b | 65 72 72 6f 72 28 20 2d | ck|error( -|
|00001130| 20 43 4b 5f 4e 4f 4d 45 | 4d 2c 20 22 38 34 22 29 | CK_NOME|M, "84")|
|00001140| 3b 0d 0a 20 20 20 73 74 | 72 63 70 79 28 62 74 63 |;.. st|rcpy(btc|
|00001150| 70 2d 3e 62 74 6e 61 6d | 65 2c 20 69 64 78 6e 61 |p->btnam|e, idxna|
|00001160| 6d 65 29 3b 20 20 20 20 | 2f 2a 20 62 74 72 65 65 |me); |/* btree|
|00001170| 20 6e 61 6d 65 20 2a 2f | 0d 0a 0d 0a 20 20 20 62 | name */|.... b|
|00001180| 74 63 70 2d 3e 62 74 6f | 70 74 79 70 65 20 3d 20 |tcp->bto|ptype = |
|00001190| 47 45 54 52 45 43 3b 20 | 09 20 20 2f 2a 20 44 65 |GETREC; |. /* De|
|000011a0| 66 61 75 6c 74 20 2a 2f | 0d 0a 20 20 20 69 66 20 |fault */|.. if |
|000011b0| 28 28 62 74 63 70 2d 3e | 62 74 6b 65 79 20 3d 20 |((btcp->|btkey = |
|000011c0| 63 61 6c 6c 6f 63 28 62 | 74 63 70 2d 3e 62 74 6b |calloc(b|tcp->btk|
|000011d0| 65 79 6c 65 6e 20 2b 20 | 31 2c 20 53 5a 43 48 41 |eylen + |1, SZCHA|
|000011e0| 52 29 29 20 3d 3d 20 4e | 55 4c 4c 29 0d 0a 20 20 |R)) == N|ULL).. |
|000011f0| 20 20 20 20 63 6b 65 72 | 72 6f 72 28 20 2d 20 43 | cker|ror( - C|
|00001200| 4b 5f 4e 4f 4d 45 4d 2c | 20 22 32 37 22 29 3b 0d |K_NOMEM,| "27");.|
|00001210| 0a 20 20 20 62 74 63 70 | 2d 3e 62 74 6c 6f 63 20 |. btcp|->btloc |
|00001220| 20 3d 20 30 4c 3b 0d 0a | 0d 0a 20 20 20 62 74 63 | = 0L;..|.. btc|
|00001230| 70 2d 3e 62 74 6f 70 74 | 79 70 32 20 3d 20 47 45 |p->btopt|yp2 = GE|
|00001240| 54 52 45 43 3b 20 20 20 | 2f 2a 20 44 65 66 61 75 |TREC; |/* Defau|
|00001250| 6c 74 20 2a 2f 0d 0a 20 | 20 20 69 66 20 28 28 62 |lt */.. | if ((b|
|00001260| 74 63 70 2d 3e 62 74 6b | 65 79 32 20 3d 20 63 61 |tcp->btk|ey2 = ca|
|00001270| 6c 6c 6f 63 28 62 74 63 | 70 2d 3e 62 74 6b 65 79 |lloc(btc|p->btkey|
|00001280| 6c 65 6e 20 2b 20 31 2c | 20 53 5a 43 48 41 52 29 |len + 1,| SZCHAR)|
|00001290| 29 20 3d 3d 20 4e 55 4c | 4c 29 0d 0a 20 20 20 20 |) == NUL|L).. |
|000012a0| 20 20 63 6b 65 72 72 6f | 72 28 20 2d 20 43 4b 5f | ckerro|r( - CK_|
|000012b0| 4e 4f 4d 45 4d 2c 20 22 | 32 38 22 29 3b 0d 0a 20 |NOMEM, "|28");.. |
|000012c0| 20 20 62 74 63 70 2d 3e | 62 74 6c 6f 63 32 20 20 | btcp->|btloc2 |
|000012d0| 3d 20 30 4c 3b 0d 0a 0d | 0a 20 20 20 69 66 28 62 |= 0L;...|. if(b|
|000012e0| 74 6d 61 78 73 7a 20 3c | 20 31 29 0d 0a 09 62 74 |tmaxsz <| 1)...bt|
|000012f0| 6d 61 78 73 7a 20 3d 20 | 31 3b 0d 0a 20 20 20 69 |maxsz = |1;.. i|
|00001300| 20 3d 20 62 74 63 70 2d | 3e 62 74 6d 61 78 20 3d | = btcp-|>btmax =|
|00001310| 20 62 74 6d 61 78 73 7a | 3b 0d 0a 20 20 20 62 74 | btmaxsz|;.. bt|
|00001320| 63 70 2d 3e 62 74 72 65 | 63 6e 75 6d 20 3d 20 28 |cp->btre|cnum = (|
|00001330| 6c 6f 6e 67 20 2a 29 63 | 61 6c 6c 6f 63 28 69 20 |long *)c|alloc(i |
|00001340| 2b 20 31 2c 20 73 69 7a | 65 6f 66 28 6c 6f 6e 67 |+ 1, siz|eof(long|
|00001350| 29 29 3b 0d 0a 20 20 20 | 69 66 20 28 62 74 63 70 |));.. |if (btcp|
|00001360| 2d 3e 62 74 72 65 63 6e | 75 6d 20 3d 3d 20 4e 55 |->btrecn|um == NU|
|00001370| 4c 4c 29 0d 0a 20 20 20 | 20 20 20 63 6b 65 72 72 |LL).. | ckerr|
|00001380| 6f 72 28 20 2d 20 43 4b | 5f 4e 4f 4d 45 4d 2c 20 |or( - CK|_NOMEM, |
|00001390| 22 38 30 22 29 3b 0d 0a | 20 20 20 62 74 63 70 2d |"80");..| btcp-|
|000013a0| 3e 62 74 72 65 63 6e 6d | 32 20 3d 20 28 6c 6f 6e |>btrecnm|2 = (lon|
|000013b0| 67 20 2a 29 63 61 6c 6c | 6f 63 28 69 20 2b 20 31 |g *)call|oc(i + 1|
|000013c0| 2c 20 73 69 7a 65 6f 66 | 28 6c 6f 6e 67 29 29 3b |, sizeof|(long));|
|000013d0| 0d 0a 20 20 20 69 66 20 | 28 62 74 63 70 2d 3e 62 |.. if |(btcp->b|
|000013e0| 74 72 65 63 6e 6d 32 20 | 3d 3d 20 4e 55 4c 4c 29 |trecnm2 |== NULL)|
|000013f0| 0d 0a 20 20 20 20 20 20 | 63 6b 65 72 72 6f 72 28 |.. |ckerror(|
|00001400| 20 2d 20 43 4b 5f 4e 4f | 4d 45 4d 2c 20 22 32 39 | - CK_NO|MEM, "29|
|00001410| 22 29 3b 0d 0a 0d 0a 20 | 20 20 62 74 63 70 2d 3e |");.... | btcp->|
|00001420| 62 74 73 76 6b 65 79 20 | 3d 20 4e 55 4c 4c 3b 0d |btsvkey |= NULL;.|
|00001430| 0a 20 20 20 62 74 63 70 | 2d 3e 62 74 73 61 76 65 |. btcp|->btsave|
|00001440| 20 3d 20 30 3b 0d 0a 0d | 0a 20 20 20 72 65 74 75 | = 0;...|. retu|
|00001450| 72 6e 28 31 29 3b 0d 0a | 7d 0d 0a 0d 0a 76 6f 69 |rn(1);..|}....voi|
|00001460| 64 20 62 74 72 74 65 72 | 6d 28 62 74 63 70 29 20 |d btrter|m(btcp) |
|00001470| 20 20 2f 2a 20 74 65 72 | 6d 69 6e 61 74 65 20 75 | /* ter|minate u|
|00001480| 73 65 20 6f 66 20 67 69 | 76 65 6e 20 62 2b 74 72 |se of gi|ven b+tr|
|00001490| 65 65 20 2a 2f 0d 0a 42 | 54 43 20 2a 62 74 63 70 |ee */..B|TC *btcp|
|000014a0| 3b 0d 0a 7b 0d 0a 20 20 | 20 65 78 74 65 72 6e 20 |;..{.. | extern |
|000014b0| 76 6f 69 64 20 66 72 65 | 65 28 29 3b 0d 0a 0d 0a |void fre|e();....|
|000014c0| 20 20 20 46 52 45 45 28 | 62 74 63 70 2d 3e 64 74 | FREE(|btcp->dt|
|000014d0| 61 6e 61 6d 65 29 3b 0d | 0a 20 20 20 46 52 45 45 |aname);.|. FREE|
|000014e0| 28 62 74 63 70 2d 3e 69 | 64 78 6e 61 6d 65 29 3b |(btcp->i|dxname);|
|000014f0| 0d 0a 20 20 20 46 52 45 | 45 28 62 74 63 70 2d 3e |.. FRE|E(btcp->|
|00001500| 62 74 6e 61 6d 65 29 3b | 0d 0a 20 20 20 46 52 45 |btname);|.. FRE|
|00001510| 45 28 62 74 63 70 2d 3e | 62 74 6b 65 79 29 3b 0d |E(btcp->|btkey);.|
|00001520| 0a 20 20 20 46 52 45 45 | 28 62 74 63 70 2d 3e 62 |. FREE|(btcp->b|
|00001530| 74 6b 65 79 32 29 3b 0d | 0a 20 20 20 46 52 45 45 |tkey2);.|. FREE|
|00001540| 28 62 74 63 70 2d 3e 62 | 74 72 65 63 6e 75 6d 29 |(btcp->b|trecnum)|
|00001550| 3b 0d 0a 20 20 20 46 52 | 45 45 28 62 74 63 70 2d |;.. FR|EE(btcp-|
|00001560| 3e 62 74 72 65 63 6e 6d | 32 29 3b 0d 0a 7d 0d 0a |>btrecnm|2);..}..|
|00001570| 0d 0a | |.. | |
+--------+-------------------------+-------------------------+--------+--------+