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: CMPTNODE.C
Confidence | Program | Detection | Match Type | Support
|
---|
100%
| dexvert
| DOS BACKUP file (archive/dosBackupFile)
| magic
| Supported |
66%
| dexvert
| Compact Compressed (Unix) (archive/compact)
| ext
| Supported |
100%
| file
| DOS 2.0-3.2 backed up file \CBTREE\LIBRARY\CMPTNODE.C
| default
| |
99%
| file
| data
| default
| |
51%
| TrID
| DOS 2.0-3.2 backup
| default
| |
48%
| TrID
| MP3 audio
| default (weak)
|
|
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 43 4d 50 | 54 4e 4f 44 45 2e 43 00 |RARY\CMP|TNODE.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 1b 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 28 43 29 20 43 | 6f 70 79 72 69 67 68 74 |/* (C) C|opyright|
|00000090| 20 31 39 38 34 2c 38 35 | 2c 38 36 2c 38 37 20 57 | 1984,85|,86,87 W|
|000000a0| 61 6c 74 65 72 20 4c 2e | 20 50 65 61 63 6f 63 6b |alter L.| Peacock|
|000000b0| 20 20 20 41 6c 6c 20 52 | 69 67 68 74 73 20 52 65 | All R|ights Re|
|000000c0| 73 65 72 76 65 64 20 20 | 20 20 2a 2f 0d 0a 2f 2a |served | */../*|
|000000d0| 20 43 20 4d 20 50 20 54 | 20 4e 20 4f 20 44 20 45 | C M P T| N O D E|
|000000e0| 20 2e 20 43 20 20 20 20 | 20 20 20 20 20 20 20 20 | . C | |
|000000f0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000100| 20 20 20 20 20 20 2a 2f | 0d 0a 0d 0a 2f 2a 20 54 | */|..../* T|
|00000110| 48 49 53 20 50 52 4f 47 | 52 41 4d 20 42 45 4c 4f |HIS PROG|RAM BELO|
|00000120| 4e 47 53 20 54 4f 20 57 | 41 4c 54 45 52 20 4c 2e |NGS TO W|ALTER L.|
|00000130| 20 50 45 41 43 4f 43 4b | 2e 20 20 49 54 20 49 53 | PEACOCK|. IT IS|
|00000140| 20 43 4f 4e 53 49 44 45 | 52 45 44 20 41 20 54 52 | CONSIDE|RED A TR|
|00000150| 41 44 45 20 2a 2f 0d 0a | 2f 2a 20 53 45 43 52 45 |ADE */..|/* SECRE|
|00000160| 54 20 41 4e 44 20 49 53 | 20 4e 4f 54 20 54 4f 20 |T AND IS| NOT TO |
|00000170| 42 45 20 44 49 56 55 4c | 47 45 44 20 4f 52 20 55 |BE DIVUL|GED OR U|
|00000180| 53 45 44 20 42 59 20 50 | 41 52 54 49 45 53 20 57 |SED BY P|ARTIES W|
|00000190| 48 4f 20 48 41 56 45 20 | 4e 4f 54 20 20 20 20 2a |HO HAVE |NOT *|
|000001a0| 2f 0d 0a 2f 2a 20 52 45 | 43 45 49 56 45 44 20 57 |/../* RE|CEIVED W|
|000001b0| 52 49 54 54 45 4e 20 41 | 55 54 48 4f 52 49 5a 41 |RITTEN A|UTHORIZA|
|000001c0| 54 49 4f 4e 20 46 52 4f | 4d 20 54 48 45 20 4f 57 |TION FRO|M THE OW|
|000001d0| 4e 45 52 2e 20 20 20 20 | 20 20 20 20 20 20 20 20 |NER. | |
|000001e0| 20 20 20 20 20 20 20 2a | 2f 0d 0a 2f 2a 2d 2d 2d | *|/../*---|
|000001f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000200| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000210| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000220| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000230| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 0d 0a 20 2a 20 63 6d |--------|-.. * cm|
|00000240| 70 74 6e 6f 64 65 28 29 | 20 69 73 20 63 61 6c 6c |ptnode()| is call|
|00000250| 65 64 20 62 79 20 62 74 | 72 64 65 6c 65 74 28 29 |ed by bt|rdelet()|
|00000260| 20 77 68 65 6e 20 69 74 | 20 62 65 63 6f 6d 65 73 | when it| becomes|
|00000270| 20 6e 65 63 65 73 73 61 | 72 79 20 74 6f 20 63 6f | necessa|ry to co|
|00000280| 6d 70 61 63 74 0d 0a 20 | 2a 20 74 77 6f 20 69 6e |mpact.. |* two in|
|00000290| 64 65 78 20 6e 6f 64 65 | 73 20 69 6e 74 6f 20 6f |dex node|s into o|
|000002a0| 6e 65 20 6e 6f 64 65 2e | 0d 0a 20 2a 2d 2d 2d 2d |ne node.|.. *----|
|000002b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000002c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000002d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000002e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000002f0| 2d 2d 2d 2d 2d 2d 2d 2a | 2f 0d 0a 0d 0a 23 69 6e |-------*|/....#in|
|00000300| 63 6c 75 64 65 20 22 63 | 62 74 72 65 65 2e 68 22 |clude "c|btree.h"|
|00000310| 0d 0a 0d 0a 63 6d 70 74 | 6e 6f 64 65 28 66 64 64 |....cmpt|node(fdd|
|00000320| 74 61 2c 20 66 64 69 64 | 78 2c 20 70 62 6c 6b 2c |ta, fdid|x, pblk,|
|00000330| 20 62 74 70 61 72 6d 73 | 74 29 0d 0a 69 6e 74 20 | btparms|t)..int |
|00000340| 66 64 69 64 78 2c 20 66 | 64 64 74 61 3b 0d 0a 73 |fdidx, f|ddta;..s|
|00000350| 74 72 75 63 74 20 62 74 | 69 64 78 62 6c 6b 20 2a |truct bt|idxblk *|
|00000360| 70 62 6c 6b 3b 0d 0a 73 | 74 72 75 63 74 20 62 74 |pblk;..s|truct bt|
|00000370| 63 6f 6d 6d 6f 20 2a 62 | 74 70 61 72 6d 73 74 3b |commo *b|tparmst;|
|00000380| 0d 0a 7b 0d 0a 20 20 20 | 65 78 74 65 72 6e 20 6c |..{.. |extern l|
|00000390| 6f 6e 67 20 6c 73 65 65 | 6b 28 29 2c 20 70 6f 70 |ong lsee|k(), pop|
|000003a0| 74 6f 70 28 29 3b 0d 0a | 20 20 20 65 78 74 65 72 |top();..| exter|
|000003b0| 6e 20 69 6e 74 20 20 73 | 74 72 63 6d 70 28 29 3b |n int s|trcmp();|
|000003c0| 0d 0a 20 20 20 65 78 74 | 65 72 6e 20 63 68 61 72 |.. ext|ern char|
|000003d0| 20 2a 63 61 6c 6c 6f 63 | 28 29 2c 20 2a 73 74 72 | *calloc|(), *str|
|000003e0| 73 61 76 65 28 29 3b 0d | 0a 20 20 20 65 78 74 65 |save();.|. exte|
|000003f0| 72 6e 20 76 6f 69 64 20 | 66 72 65 65 28 29 3b 0d |rn void |free();.|
|00000400| 0a 20 20 20 65 78 74 65 | 72 6e 20 69 6e 74 20 73 |. exte|rn int s|
|00000410| 70 3b 0d 0a 20 20 20 6c | 6f 6e 67 20 20 20 20 70 |p;.. l|ong p|
|00000420| 62 6c 6b 6e 6f 64 65 2c | 20 6c 76 6c 6e 6f 64 65 |blknode,| lvlnode|
|00000430| 2c 20 70 6f 70 6e 6f 64 | 65 2c 20 64 65 6c 6c 6f |, popnod|e, dello|
|00000440| 63 2c 20 6c 6e 75 6d 2c | 20 73 61 76 65 6c 6f 63 |c, lnum,| saveloc|
|00000450| 3b 0d 0a 20 20 20 42 54 | 49 44 58 42 4c 4b 20 2a |;.. BT|IDXBLK *|
|00000460| 62 72 6f 62 6c 6b 3b 0d | 0a 20 20 20 72 65 67 69 |broblk;.|. regi|
|00000470| 73 74 65 72 20 69 6e 74 | 20 69 2c 20 6a 3b 0d 0a |ster int| i, j;..|
|00000480| 20 20 20 69 6e 74 20 69 | 64 78 63 6b 62 72 6f 2c | int i|dxckbro,|
|00000490| 20 63 6d 70 74 66 6c 61 | 67 2c 20 6c 6b 3b 0d 0a | cmptfla|g, lk;..|
|000004a0| 20 20 20 75 6e 73 69 67 | 6e 65 64 20 73 61 76 65 | unsig|ned save|
|000004b0| 6f 70 3b 0d 0a 20 20 20 | 6c 6f 6e 67 20 70 6f 73 |op;.. |long pos|
|000004c0| 2c 20 62 77 64 70 74 72 | 73 76 2c 20 73 61 76 6c |, bwdptr|sv, savl|
|000004d0| 76 6c 3b 0d 0a 20 20 20 | 63 68 61 72 20 2a 65 6e |vl;.. |char *en|
|000004e0| 64 62 72 6f 6b 79 2c 20 | 2a 65 6e 64 69 64 78 6b |dbroky, |*endidxk|
|000004f0| 79 3b 0d 0a 20 20 20 69 | 6e 74 20 73 61 76 73 70 |y;.. i|nt savsp|
|00000500| 3b 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |; | |
|00000510| 20 20 20 20 2f 2a 20 73 | 74 61 63 6b 20 70 6f 69 | /* s|tack poi|
|00000520| 6e 74 65 72 20 20 20 20 | 20 20 20 20 2a 2f 0d 0a |nter | */..|
|00000530| 0d 0a 20 20 20 69 20 3d | 20 6a 20 3d 20 30 3b 0d |.. i =| j = 0;.|
|00000540| 0a 0d 0a 20 20 20 2f 2a | 20 6d 61 6b 65 20 62 75 |... /*| make bu|
|00000550| 66 66 65 72 20 74 6f 20 | 68 6f 6c 64 20 69 6e 64 |ffer to |hold ind|
|00000560| 65 78 20 62 6c 6f 63 6b | 20 2a 2f 0d 0a 20 20 20 |ex block| */.. |
|00000570| 69 66 28 20 21 28 62 72 | 6f 62 6c 6b 20 3d 20 28 |if( !(br|oblk = (|
|00000580| 42 54 49 44 58 42 4c 4b | 20 2a 29 63 61 6c 6c 6f |BTIDXBLK| *)callo|
|00000590| 63 28 0d 0a 20 20 20 20 | 20 20 20 20 20 73 69 7a |c(.. | siz|
|000005a0| 65 6f 66 28 42 54 49 44 | 58 42 4c 4b 29 20 2b 20 |eof(BTID|XBLK) + |
|000005b0| 62 74 70 61 72 6d 73 74 | 2d 3e 62 74 63 65 6c 6c |btparmst|->btcell|
|000005c0| 73 20 2a 20 73 69 7a 65 | 6f 66 28 42 54 49 44 58 |s * size|of(BTIDX|
|000005d0| 29 2c 20 53 5a 43 48 41 | 52 29 20 29 29 0d 0a 20 |), SZCHA|R) )).. |
|000005e0| 20 20 20 20 20 63 6b 65 | 72 72 6f 72 28 2d 20 43 | cke|rror(- C|
|000005f0| 4b 5f 4e 4f 4d 45 4d 2c | 20 22 33 22 29 3b 0d 0a |K_NOMEM,| "3");..|
|00000600| 20 20 20 62 72 6f 62 6c | 6b 2d 3e 62 6c 6b 61 6c | brobl|k->blkal|
|00000610| 6c 6f 63 20 3d 20 30 3b | 0d 0a 0d 0a 20 20 20 69 |loc = 0;|.... i|
|00000620| 66 28 20 28 64 65 6c 6c | 6f 63 20 3d 20 70 62 6c |f( (dell|oc = pbl|
|00000630| 6b 2d 3e 66 77 64 70 61 | 67 65 29 20 3c 20 32 29 |k->fwdpa|ge) < 2)|
|00000640| 20 20 20 2f 2a 20 63 68 | 65 63 6b 20 66 6f 72 20 | /* ch|eck for |
|00000650| 72 69 67 68 74 20 62 72 | 6f 74 68 65 72 20 2a 2f |right br|other */|
|00000660| 0d 0a 20 20 20 20 20 20 | 67 6f 74 6f 20 6c 65 66 |.. |goto lef|
|00000670| 74 62 72 6f 3b 0d 0a 0d | 0a 20 20 20 67 65 74 69 |tbro;...|. geti|
|00000680| 64 78 72 28 66 64 69 64 | 78 2c 20 70 62 6c 6b 2d |dxr(fdid|x, pblk-|
|00000690| 3e 66 77 64 70 61 67 65 | 2c 20 62 72 6f 62 6c 6b |>fwdpage|, broblk|
|000006a0| 2c 20 62 74 70 61 72 6d | 73 74 2d 3e 62 74 69 64 |, btparm|st->btid|
|000006b0| 78 6c 65 6e 2c 0d 0a 20 | 20 20 20 20 20 20 20 20 |xlen,.. | |
|000006c0| 62 74 70 61 72 6d 73 74 | 2d 3e 62 74 6b 65 79 6c |btparmst|->btkeyl|
|000006d0| 65 6e 29 3b 0d 0a 0d 0a | 20 20 20 69 66 20 28 62 |en);....| if (b|
|000006e0| 72 6f 62 6c 6b 2d 3e 63 | 65 6c 6c 69 63 6e 74 20 |roblk->c|ellicnt |
|000006f0| 3e 20 28 62 74 70 61 72 | 6d 73 74 2d 3e 62 74 63 |> (btpar|mst->btc|
|00000700| 65 6c 6c 73 20 3e 3e 20 | 31 20 29 29 20 20 20 20 |ells >> |1 )) |
|00000710| 20 2f 2a 20 4c 43 20 62 | 75 67 20 2a 2f 0d 0a 20 | /* LC b|ug */.. |
|00000720| 20 20 20 20 20 2f 2a 20 | 74 68 65 6e 20 74 6f 6f | /* |then too|
|00000730| 20 6d 61 6e 79 20 63 65 | 6c 6c 73 20 74 6f 20 63 | many ce|lls to c|
|00000740| 6f 6d 70 61 63 74 20 70 | 72 6f 70 65 72 6c 79 2e |ompact p|roperly.|
|00000750| 20 20 20 20 2a 2f 0d 0a | 20 20 20 20 20 20 67 6f | */..| go|
|00000760| 74 6f 20 6c 65 66 74 62 | 72 6f 3b 0d 0a 0d 0a 20 |to leftb|ro;.... |
|00000770| 20 20 63 6d 70 74 66 6c | 61 67 20 3d 20 31 3b 20 | cmptfl|ag = 1; |
|00000780| 20 20 20 2f 2a 20 72 69 | 67 68 74 20 63 6f 6d 70 | /* ri|ght comp|
|00000790| 61 63 74 20 20 20 2a 2f | 0d 0a 0d 0a 20 20 20 2f |act */|.... /|
|000007a0| 2a 2a 2a 2a 20 63 6f 6d | 62 69 6e 65 20 6e 6f 64 |**** com|bine nod|
|000007b0| 65 73 3a 20 61 70 70 65 | 6e 64 20 63 65 6c 6c 73 |es: appe|nd cells|
|000007c0| 20 66 72 6f 6d 20 62 72 | 6f 62 6c 6b 20 74 6f 20 | from br|oblk to |
|000007d0| 62 6c 6b 70 20 2a 2a 2a | 2a 2f 0d 0a 0d 0a 20 20 |blkp ***|*/.... |
|000007e0| 20 2f 2a 20 23 20 74 6f | 20 66 72 65 65 20 74 6f | /* # to| free to|
|000007f0| 20 6f 70 65 6e 20 73 70 | 61 63 65 20 66 6f 72 20 | open sp|ace for |
|00000800| 63 6f 70 79 20 2a 2f 0d | 0a 20 20 20 6a 20 3d 20 |copy */.|. j = |
|00000810| 4d 49 4e 28 62 72 6f 62 | 6c 6b 2d 3e 63 65 6c 6c |MIN(brob|lk->cell|
|00000820| 69 63 6e 74 2c 20 70 62 | 6c 6b 2d 3e 62 6c 6b 61 |icnt, pb|lk->blka|
|00000830| 6c 6c 6f 63 20 2d 20 70 | 62 6c 6b 2d 3e 63 65 6c |lloc - p|blk->cel|
|00000840| 6c 69 63 6e 74 29 3b 0d | 0a 20 20 20 66 6f 72 20 |licnt);.|. for |
|00000850| 28 69 20 3d 20 30 3b 20 | 69 20 3c 20 6a 3b 20 2b |(i = 0; |i < j; +|
|00000860| 2b 69 29 20 20 20 20 2f | 2a 20 6d 61 6b 65 20 72 |+i) /|* make r|
|00000870| 6f 6f 6d 20 2a 2f 0d 0a | 20 20 20 7b 0d 0a 20 20 |oom */..| {.. |
|00000880| 20 20 20 20 63 68 61 72 | 20 2a 2a 63 70 70 3b 20 | char| **cpp; |
|00000890| 20 20 2f 2a 20 65 78 70 | 72 65 73 73 69 6f 6e 20 | /* exp|ression |
|000008a0| 74 6f 6f 20 63 6f 6d 70 | 6c 65 78 20 66 6f 72 20 |too comp|lex for |
|000008b0| 73 6f 6d 65 20 63 6f 6d | 70 69 6c 65 72 73 20 2a |some com|pilers *|
|000008c0| 2f 0d 0a 0d 0a 20 20 20 | 20 20 20 63 70 70 20 3d |/.... | cpp =|
|000008d0| 20 26 70 62 6c 6b 2d 3e | 62 74 70 61 67 65 5b 70 | &pblk->|btpage[p|
|000008e0| 62 6c 6b 2d 3e 63 65 6c | 6c 69 63 6e 74 20 2b 20 |blk->cel|licnt + |
|000008f0| 69 5d 2e 73 6b 65 79 6e | 6d 65 3b 0d 0a 20 20 20 |i].skeyn|me;.. |
|00000900| 20 20 20 46 52 45 45 28 | 2a 63 70 70 29 3b 0d 0a | FREE(|*cpp);..|
|00000910| 20 20 20 7d 0d 0a 20 20 | 20 70 62 6c 6b 2d 3e 62 | }.. | pblk->b|
|00000920| 6c 6b 61 6c 6c 6f 63 20 | 2d 3d 20 6a 3b 0d 0a 0d |lkalloc |-= j;...|
|00000930| 0a 20 20 20 2f 2a 20 61 | 70 70 65 6e 64 20 70 61 |. /* a|ppend pa|
|00000940| 67 65 20 63 65 6c 6c 73 | 20 66 72 6f 6d 20 62 72 |ge cells| from br|
|00000950| 6f 62 6c 6b 20 74 6f 20 | 70 62 6c 6b 20 2a 2f 0d |oblk to |pblk */.|
|00000960| 0a 20 20 20 62 6c 6b 73 | 68 66 74 28 70 62 6c 6b |. blks|hft(pblk|
|00000970| 2d 3e 62 74 70 61 67 65 | 20 2b 20 70 62 6c 6b 2d |->btpage| + pblk-|
|00000980| 3e 63 65 6c 6c 69 63 6e | 74 2c 20 62 72 6f 62 6c |>cellicn|t, brobl|
|00000990| 6b 2d 3e 62 74 70 61 67 | 65 2c 20 62 72 6f 62 6c |k->btpag|e, brobl|
|000009a0| 6b 2d 3e 63 65 6c 6c 69 | 63 6e 74 2c 0d 0a 20 20 |k->celli|cnt,.. |
|000009b0| 20 20 20 20 20 20 20 53 | 5a 42 54 49 44 58 29 3b | S|ZBTIDX);|
|000009c0| 0d 0a 20 20 20 70 62 6c | 6b 2d 3e 62 6c 6b 61 6c |.. pbl|k->blkal|
|000009d0| 6c 6f 63 20 2b 3d 20 62 | 72 6f 62 6c 6b 2d 3e 63 |loc += b|roblk->c|
|000009e0| 65 6c 6c 69 63 6e 74 3b | 0d 0a 20 20 20 70 62 6c |ellicnt;|.. pbl|
|000009f0| 6b 2d 3e 63 65 6c 6c 69 | 63 6e 74 20 2b 3d 20 62 |k->celli|cnt += b|
|00000a00| 72 6f 62 6c 6b 2d 3e 63 | 65 6c 6c 69 63 6e 74 3b |roblk->c|ellicnt;|
|00000a10| 0d 0a 0d 0a 20 20 20 2f | 2a 20 63 6f 6c 6c 61 70 |.... /|* collap|
|00000a20| 73 65 20 6d 6f 76 65 64 | 20 63 65 6c 6c 73 20 69 |se moved| cells i|
|00000a30| 6e 20 62 72 6f 62 6c 6b | 20 2a 2f 0d 0a 20 20 20 |n broblk| */.. |
|00000a40| 69 66 20 28 28 6a 20 3d | 20 62 72 6f 62 6c 6b 2d |if ((j =| broblk-|
|00000a50| 3e 62 6c 6b 61 6c 6c 6f | 63 20 2d 20 62 72 6f 62 |>blkallo|c - brob|
|00000a60| 6c 6b 2d 3e 63 65 6c 6c | 69 63 6e 74 29 20 21 3d |lk->cell|icnt) !=|
|00000a70| 20 30 29 20 20 2f 2a 20 | 23 20 74 6f 20 6d 6f 76 | 0) /* |# to mov|
|00000a80| 65 20 2a 2f 0d 0a 20 20 | 20 20 20 20 62 6c 6b 73 |e */.. | blks|
|00000a90| 68 66 74 28 62 72 6f 62 | 6c 6b 2d 3e 62 74 70 61 |hft(brob|lk->btpa|
|00000aa0| 67 65 2c 20 62 72 6f 62 | 6c 6b 2d 3e 62 74 70 61 |ge, brob|lk->btpa|
|00000ab0| 67 65 20 2b 20 62 72 6f | 62 6c 6b 2d 3e 63 65 6c |ge + bro|blk->cel|
|00000ac0| 6c 69 63 6e 74 2c 20 6a | 2c 0d 0a 20 20 20 20 20 |licnt, j|,.. |
|00000ad0| 20 20 20 20 20 20 20 53 | 5a 42 54 49 44 58 29 3b | S|ZBTIDX);|
|00000ae0| 0d 0a 20 20 20 62 72 6f | 62 6c 6b 2d 3e 62 6c 6b |.. bro|blk->blk|
|00000af0| 61 6c 6c 6f 63 20 3d 20 | 6a 3b 0d 0a 20 20 20 62 |alloc = |j;.. b|
|00000b00| 72 6f 62 6c 6b 2d 3e 63 | 65 6c 6c 69 63 6e 74 20 |roblk->c|ellicnt |
|00000b10| 3d 20 30 3b 0d 0a 0d 0a | 20 20 20 70 62 6c 6b 2d |= 0;....| pblk-|
|00000b20| 3e 66 77 64 70 61 67 65 | 20 3d 20 62 72 6f 62 6c |>fwdpage| = brobl|
|00000b30| 6b 2d 3e 66 77 64 70 61 | 67 65 3b 0d 0a 20 20 20 |k->fwdpa|ge;.. |
|00000b40| 70 62 6c 6b 6e 6f 64 65 | 20 3d 20 62 72 6f 62 6c |pblknode| = brobl|
|00000b50| 6b 2d 3e 62 77 64 70 61 | 67 65 3b 0d 0a 0d 0a 20 |k->bwdpa|ge;.... |
|00000b60| 20 20 2f 2a 20 75 70 64 | 61 74 65 20 62 77 64 70 | /* upd|ate bwdp|
|00000b70| 61 67 65 20 6f 66 20 66 | 77 64 6e 6f 64 65 20 74 |age of f|wdnode t|
|00000b80| 6f 20 70 6f 69 6e 74 20 | 74 6f 20 6e 65 77 6e 6f |o point |to newno|
|00000b90| 64 65 20 20 20 2a 2f 0d | 0a 0d 0a 20 20 20 69 66 |de */.|... if|
|00000ba0| 28 70 62 6c 6b 2d 3e 66 | 77 64 70 61 67 65 20 3e |(pblk->f|wdpage >|
|00000bb0| 20 31 29 7b 0d 0a 20 20 | 20 20 20 20 2f 2a 20 6c | 1){.. | /* l|
|00000bc0| 6f 63 61 74 65 20 6d 61 | 69 6e 74 2e 20 69 6e 66 |ocate ma|int. inf|
|00000bd0| 6f 2e 20 20 20 20 2a 2f | 0d 0a 20 20 20 20 20 20 |o. */|.. |
|00000be0| 70 6f 73 20 3d 20 28 70 | 62 6c 6b 2d 3e 66 77 64 |pos = (p|blk->fwd|
|00000bf0| 70 61 67 65 20 2d 20 31 | 4c 29 20 2a 20 62 74 70 |page - 1|L) * btp|
|00000c00| 61 72 6d 73 74 2d 3e 62 | 74 69 64 78 6c 65 6e 3b |armst->b|tidxlen;|
|00000c10| 0d 0a 0d 0a 20 20 20 20 | 20 20 6c 6b 20 3d 20 30 |.... | lk = 0|
|00000c20| 3b 20 20 20 20 20 2f 2a | 20 6c 6f 63 6b 20 74 68 |; /*| lock th|
|00000c30| 65 20 72 65 63 6f 72 64 | 20 77 65 20 61 72 65 20 |e record| we are |
|00000c40| 61 62 6f 75 74 20 74 6f | 20 6d 6f 64 69 66 79 20 |about to| modify |
|00000c50| 2a 2f 0d 0a 20 20 20 20 | 20 20 77 68 69 6c 65 20 |*/.. | while |
|00000c60| 28 6c 6f 63 6b 75 6e 6c | 6b 28 66 64 69 64 78 2c |(lockunl|k(fdidx,|
|00000c70| 20 70 6f 73 2c 20 62 74 | 70 61 72 6d 73 74 2d 3e | pos, bt|parmst->|
|00000c80| 62 74 69 64 78 6c 65 6e | 2c 20 4c 4f 43 4b 52 29 |btidxlen|, LOCKR)|
|00000c90| 20 21 3d 20 31 29 0d 0a | 20 20 20 20 20 20 20 20 | != 1)..| |
|00000ca0| 20 69 66 20 28 2b 2b 6c | 6b 20 3e 20 48 44 52 54 | if (++l|k > HDRT|
|00000cb0| 52 59 53 29 7b 0d 0a 20 | 20 20 20 20 20 20 20 20 |RYS){.. | |
|00000cc0| 20 20 20 66 72 65 65 6b | 65 79 73 28 62 72 6f 62 | freek|eys(brob|
|00000cd0| 6c 6b 29 3b 0d 0a 20 20 | 20 20 20 20 20 20 20 20 |lk);.. | |
|00000ce0| 20 20 46 52 45 45 28 62 | 72 6f 62 6c 6b 29 3b 0d | FREE(b|roblk);.|
|00000cf0| 0a 20 20 20 20 20 20 20 | 20 20 20 20 20 72 65 74 |. | ret|
|00000d00| 75 72 6e 28 42 54 4c 4f | 43 4b 29 3b 20 2f 2a 20 |urn(BTLO|CK); /* |
|00000d10| 69 2e 65 2e 20 75 6e 61 | 62 6c 65 20 74 6f 20 6c |i.e. una|ble to l|
|00000d20| 6f 63 6b 20 6c 69 6e 6b | 65 64 20 6c 69 73 74 20 |ock link|ed list |
|00000d30| 72 65 63 6f 72 64 20 2a | 2f 0d 0a 20 20 20 20 20 |record *|/.. |
|00000d40| 20 20 20 20 7d 0d 0a 0d | 0a 20 20 20 20 20 20 2f | }...|. /|
|00000d50| 2a 20 6e 6f 77 20 70 6f | 73 69 74 69 6f 6e 20 74 |* now po|sition t|
|00000d60| 6f 20 74 68 65 20 62 61 | 63 6b 77 61 72 64 20 70 |o the ba|ckward p|
|00000d70| 6f 69 6e 74 65 72 20 66 | 69 65 6c 64 20 6f 66 20 |ointer f|ield of |
|00000d80| 74 68 65 20 6e 6f 64 65 | 2e 20 20 2a 2f 0d 0a 20 |the node|. */.. |
|00000d90| 20 20 20 20 20 69 66 20 | 28 6c 73 65 65 6b 28 66 | if |(lseek(f|
|00000da0| 64 69 64 78 2c 20 28 6c | 6f 6e 67 29 20 28 70 6f |didx, (l|ong) (po|
|00000db0| 73 20 2b 20 28 32 20 2a | 20 73 69 7a 65 6f 66 28 |s + (2 *| sizeof(|
|00000dc0| 75 77 6f 72 64 29 20 2b | 20 73 69 7a 65 6f 66 28 |uword) +| sizeof(|
|00000dd0| 6c 6f 6e 67 29 29 20 29 | 2c 30 29 20 3d 3d 20 2d |long)) )|,0) == -|
|00000de0| 31 4c 29 0d 0a 20 20 20 | 20 20 20 20 20 20 63 6b |1L).. | ck|
|00000df0| 65 72 72 6f 72 28 2d 20 | 43 4b 5f 53 45 45 4b 2c |error(- |CK_SEEK,|
|00000e00| 20 22 35 22 29 3b 0d 0a | 0d 0a 20 20 20 20 20 20 | "5");..|.. |
|00000e10| 2f 2a 20 75 70 64 61 74 | 65 20 62 77 64 70 61 67 |/* updat|e bwdpag|
|00000e20| 65 20 2a 2f 0d 0a 20 20 | 20 20 20 20 69 66 20 28 |e */.. | if (|
|00000e30| 77 72 69 74 65 28 66 64 | 69 64 78 2c 20 28 63 68 |write(fd|idx, (ch|
|00000e40| 61 72 20 2a 29 26 70 62 | 6c 6b 6e 6f 64 65 2c 20 |ar *)&pb|lknode, |
|00000e50| 73 69 7a 65 6f 66 28 6c | 6f 6e 67 29 20 29 20 3d |sizeof(l|ong) ) =|
|00000e60| 3d 20 45 52 52 29 0d 0a | 20 20 20 20 20 20 20 20 |= ERR)..| |
|00000e70| 20 63 6b 65 72 72 6f 72 | 28 2d 20 43 4b 5f 57 52 | ckerror|(- CK_WR|
|00000e80| 49 54 2c 20 22 36 22 29 | 3b 0d 0a 0d 0a 20 20 20 |IT, "6")|;.... |
|00000e90| 20 20 20 6c 6f 63 6b 75 | 6e 6c 6b 28 66 64 69 64 | locku|nlk(fdid|
|00000ea0| 78 2c 20 70 6f 73 2c 20 | 62 74 70 61 72 6d 73 74 |x, pos, |btparmst|
|00000eb0| 2d 3e 62 74 69 64 78 6c | 65 6e 2c 20 55 4e 4c 4f |->btidxl|en, UNLO|
|00000ec0| 43 4b 52 29 3b 0d 0a 20 | 20 20 7d 0d 0a 20 20 20 |CKR);.. | }.. |
|00000ed0| 67 6f 74 6f 20 75 70 64 | 74 72 65 65 3b 0d 0a 0d |goto upd|tree;...|
|00000ee0| 0a 6c 65 66 74 62 72 6f | 3a 0d 0a 20 20 20 69 66 |.leftbro|:.. if|
|00000ef0| 28 20 28 64 65 6c 6c 6f | 63 20 3d 20 70 62 6c 6b |( (dello|c = pblk|
|00000f00| 2d 3e 62 77 64 70 61 67 | 65 29 20 3c 20 32 29 7b |->bwdpag|e) < 2){|
|00000f10| 20 20 20 20 20 20 20 2f | 2a 20 63 68 65 63 6b 20 | /|* check |
|00000f20| 66 6f 72 20 6c 65 66 74 | 20 62 72 6f 74 68 65 72 |for left| brother|
|00000f30| 20 2a 2f 0d 0a 20 20 20 | 20 20 20 6a 20 3d 20 42 | */.. | j = B|
|00000f40| 54 43 41 4c 4c 4f 4b 3b | 0d 0a 20 20 20 20 20 20 |TCALLOK;|.. |
|00000f50| 67 6f 74 6f 20 66 72 65 | 65 70 74 72 73 3b 20 20 |goto fre|eptrs; |
|00000f60| 20 2f 2a 20 6d 75 73 74 | 20 62 65 20 72 6f 6f 74 | /* must| be root|
|00000f70| 20 6e 6f 64 65 2e 20 63 | 68 65 63 6b 20 6f 6e 20 | node. c|heck on |
|00000f80| 6d 61 6b 69 6e 67 20 6e | 65 77 20 6e 6f 64 65 2e |making n|ew node.|
|00000f90| 20 2a 2f 0d 0a 20 20 20 | 7d 0d 0a 0d 0a 20 20 20 | */.. |}.... |
|00000fa0| 67 65 74 69 64 78 72 28 | 66 64 69 64 78 2c 20 70 |getidxr(|fdidx, p|
|00000fb0| 62 6c 6b 2d 3e 62 77 64 | 70 61 67 65 2c 20 62 72 |blk->bwd|page, br|
|00000fc0| 6f 62 6c 6b 2c 20 62 74 | 70 61 72 6d 73 74 2d 3e |oblk, bt|parmst->|
|00000fd0| 62 74 69 64 78 6c 65 6e | 2c 20 62 74 70 61 72 6d |btidxlen|, btparm|
|00000fe0| 73 74 2d 3e 62 74 6b 65 | 79 6c 65 6e 29 3b 0d 0a |st->btke|ylen);..|
|00000ff0| 0d 0a 20 20 20 69 66 20 | 28 62 72 6f 62 6c 6b 2d |.. if |(broblk-|
|00001000| 3e 63 65 6c 6c 69 63 6e | 74 20 3e 20 28 62 74 70 |>cellicn|t > (btp|
|00001010| 61 72 6d 73 74 2d 3e 62 | 74 63 65 6c 6c 73 20 3e |armst->b|tcells >|
|00001020| 3e 20 31 29 20 29 7b 0d | 0a 20 20 20 20 20 20 2f |> 1) ){.|. /|
|00001030| 2a 20 74 68 65 6e 20 74 | 6f 6f 20 6d 61 6e 79 20 |* then t|oo many |
|00001040| 63 65 6c 6c 73 20 74 6f | 20 63 6f 6d 70 61 63 74 |cells to| compact|
|00001050| 20 70 72 6f 70 65 72 6c | 79 2e 20 20 20 20 2a 2f | properl|y. */|
|00001060| 0d 0a 20 20 20 20 20 20 | 66 72 65 65 6b 65 79 73 |.. |freekeys|
|00001070| 28 62 72 6f 62 6c 6b 29 | 3b 0d 0a 20 20 20 20 20 |(broblk)|;.. |
|00001080| 20 46 52 45 45 28 62 72 | 6f 62 6c 6b 29 3b 0d 0a | FREE(br|oblk);..|
|00001090| 20 20 20 20 20 20 72 65 | 74 75 72 6e 28 2d 31 29 | re|turn(-1)|
|000010a0| 3b 0d 0a 20 20 20 7d 0d | 0a 0d 0a 20 20 20 63 6d |;.. }.|... cm|
|000010b0| 70 74 66 6c 61 67 20 3d | 20 30 3b 20 20 20 20 2f |ptflag =| 0; /|
|000010c0| 2a 20 6c 65 66 74 20 63 | 6f 6d 70 61 63 74 20 20 |* left c|ompact |
|000010d0| 20 20 2a 2f 0d 0a 0d 0a | 20 20 20 2f 2a 2a 2a 2a | */....| /****|
|000010e0| 20 6d 65 72 67 65 20 6e | 6f 64 65 73 3a 20 69 6e | merge n|odes: in|
|000010f0| 73 65 72 74 20 63 65 6c | 6c 73 20 66 72 6f 6d 20 |sert cel|ls from |
|00001100| 62 72 6f 74 68 65 72 20 | 6e 6f 64 65 20 69 6e 74 |brother |node int|
|00001110| 6f 20 70 62 6c 6b 20 2a | 2a 2a 2a 2f 0d 0a 0d 0a |o pblk *|***/....|
|00001120| 20 20 20 2f 2a 20 23 20 | 74 6f 20 66 72 65 65 20 | /* # |to free |
|00001130| 74 6f 20 6f 70 65 6e 20 | 73 70 61 63 65 20 66 6f |to open |space fo|
|00001140| 72 20 73 68 69 66 74 20 | 2a 2f 0d 0a 20 20 20 6a |r shift |*/.. j|
|00001150| 20 3d 20 4d 49 4e 28 62 | 72 6f 62 6c 6b 2d 3e 63 | = MIN(b|roblk->c|
|00001160| 65 6c 6c 69 63 6e 74 2c | 20 70 62 6c 6b 2d 3e 62 |ellicnt,| pblk->b|
|00001170| 6c 6b 61 6c 6c 6f 63 20 | 2d 20 70 62 6c 6b 2d 3e |lkalloc |- pblk->|
|00001180| 63 65 6c 6c 69 63 6e 74 | 29 3b 0d 0a 20 20 20 66 |cellicnt|);.. f|
|00001190| 6f 72 20 28 69 20 3d 20 | 30 3b 20 69 20 3c 20 6a |or (i = |0; i < j|
|000011a0| 3b 20 2b 2b 69 29 20 20 | 20 20 2f 2a 20 6d 61 6b |; ++i) | /* mak|
|000011b0| 65 20 72 6f 6f 6d 20 2a | 2f 0d 0a 20 20 20 7b 0d |e room *|/.. {.|
|000011c0| 0a 20 20 20 20 20 20 63 | 68 61 72 20 2a 2a 63 70 |. c|har **cp|
|000011d0| 70 3b 0d 0a 0d 0a 20 20 | 20 20 20 20 63 70 70 20 |p;.... | cpp |
|000011e0| 3d 20 26 70 62 6c 6b 2d | 3e 62 74 70 61 67 65 5b |= &pblk-|>btpage[|
|000011f0| 70 62 6c 6b 2d 3e 63 65 | 6c 6c 69 63 6e 74 20 2b |pblk->ce|llicnt +|
|00001200| 20 69 5d 2e 73 6b 65 79 | 6e 6d 65 3b 0d 0a 20 20 | i].skey|nme;.. |
|00001210| 20 20 20 20 46 52 45 45 | 28 2a 63 70 70 29 3b 0d | FREE|(*cpp);.|
|00001220| 0a 20 20 20 7d 0d 0a 20 | 20 20 70 62 6c 6b 2d 3e |. }.. | pblk->|
|00001230| 62 6c 6b 61 6c 6c 6f 63 | 20 2d 3d 20 6a 3b 0d 0a |blkalloc| -= j;..|
|00001240| 0d 0a 20 20 20 2f 2a 20 | 73 68 69 66 74 20 63 65 |.. /* |shift ce|
|00001250| 6c 6c 73 20 75 70 20 74 | 6f 20 6d 61 6b 65 20 72 |lls up t|o make r|
|00001260| 6f 6f 6d 20 66 6f 72 20 | 63 6f 70 79 20 2a 2f 0d |oom for |copy */.|
|00001270| 0a 20 20 20 62 6c 6b 73 | 68 66 74 28 70 62 6c 6b |. blks|hft(pblk|
|00001280| 2d 3e 62 74 70 61 67 65 | 20 2b 20 62 72 6f 62 6c |->btpage| + brobl|
|00001290| 6b 2d 3e 63 65 6c 6c 69 | 63 6e 74 2c 20 70 62 6c |k->celli|cnt, pbl|
|000012a0| 6b 2d 3e 62 74 70 61 67 | 65 2c 20 70 62 6c 6b 2d |k->btpag|e, pblk-|
|000012b0| 3e 63 65 6c 6c 69 63 6e | 74 2c 0d 0a 20 20 20 20 |>cellicn|t,.. |
|000012c0| 20 20 20 20 20 53 5a 42 | 54 49 44 58 29 3b 0d 0a | SZB|TIDX);..|
|000012d0| 0d 0a 20 20 20 2f 2a 20 | 69 6e 73 65 72 74 20 63 |.. /* |insert c|
|000012e0| 65 6c 6c 73 20 66 72 6f | 6d 20 62 72 6f 62 6c 6b |ells fro|m broblk|
|000012f0| 20 74 6f 20 70 62 6c 6b | 20 2a 2f 0d 0a 20 20 20 | to pblk| */.. |
|00001300| 62 6c 6b 73 68 66 74 28 | 70 62 6c 6b 2d 3e 62 74 |blkshft(|pblk->bt|
|00001310| 70 61 67 65 2c 20 62 72 | 6f 62 6c 6b 2d 3e 62 74 |page, br|oblk->bt|
|00001320| 70 61 67 65 2c 20 62 72 | 6f 62 6c 6b 2d 3e 63 65 |page, br|oblk->ce|
|00001330| 6c 6c 69 63 6e 74 2c 20 | 53 5a 42 54 49 44 58 29 |llicnt, |SZBTIDX)|
|00001340| 3b 0d 0a 20 20 20 70 62 | 6c 6b 2d 3e 62 6c 6b 61 |;.. pb|lk->blka|
|00001350| 6c 6c 6f 63 20 2b 3d 20 | 62 72 6f 62 6c 6b 2d 3e |lloc += |broblk->|
|00001360| 63 65 6c 6c 69 63 6e 74 | 3b 0d 0a 20 20 20 70 62 |cellicnt|;.. pb|
|00001370| 6c 6b 2d 3e 63 65 6c 6c | 69 63 6e 74 20 2b 3d 20 |lk->cell|icnt += |
|00001380| 62 72 6f 62 6c 6b 2d 3e | 63 65 6c 6c 69 63 6e 74 |broblk->|cellicnt|
|00001390| 3b 0d 0a 0d 0a 20 20 20 | 2f 2a 20 63 6f 6c 6c 61 |;.... |/* colla|
|000013a0| 70 73 65 20 6d 6f 76 65 | 64 20 63 65 6c 6c 73 20 |pse move|d cells |
|000013b0| 69 6e 20 62 72 6f 62 6c | 6b 20 2a 2f 0d 0a 20 20 |in brobl|k */.. |
|000013c0| 20 69 66 20 28 28 6a 20 | 3d 20 62 72 6f 62 6c 6b | if ((j |= broblk|
|000013d0| 2d 3e 62 6c 6b 61 6c 6c | 6f 63 20 2d 20 62 72 6f |->blkall|oc - bro|
|000013e0| 62 6c 6b 2d 3e 63 65 6c | 6c 69 63 6e 74 29 20 21 |blk->cel|licnt) !|
|000013f0| 3d 20 30 29 20 20 2f 2a | 20 23 20 74 6f 20 6d 6f |= 0) /*| # to mo|
|00001400| 76 65 20 2a 2f 0d 0a 20 | 20 20 20 20 20 62 6c 6b |ve */.. | blk|
|00001410| 73 68 66 74 28 62 72 6f | 62 6c 6b 2d 3e 62 74 70 |shft(bro|blk->btp|
|00001420| 61 67 65 2c 20 62 72 6f | 62 6c 6b 2d 3e 62 74 70 |age, bro|blk->btp|
|00001430| 61 67 65 20 2b 20 6a 2c | 20 6a 2c 20 53 5a 42 54 |age + j,| j, SZBT|
|00001440| 49 44 58 29 3b 0d 0a 20 | 20 20 62 72 6f 62 6c 6b |IDX);.. | broblk|
|00001450| 2d 3e 62 6c 6b 61 6c 6c | 6f 63 20 3d 20 6a 3b 0d |->blkall|oc = j;.|
|00001460| 0a 20 20 20 62 72 6f 62 | 6c 6b 2d 3e 63 65 6c 6c |. brob|lk->cell|
|00001470| 69 63 6e 74 20 3d 20 30 | 3b 0d 0a 0d 0a 20 20 20 |icnt = 0|;.... |
|00001480| 70 62 6c 6b 2d 3e 62 77 | 64 70 61 67 65 20 3d 20 |pblk->bw|dpage = |
|00001490| 62 72 6f 62 6c 6b 2d 3e | 62 77 64 70 61 67 65 3b |broblk->|bwdpage;|
|000014a0| 0d 0a 20 20 20 70 62 6c | 6b 6e 6f 64 65 20 3d 20 |.. pbl|knode = |
|000014b0| 62 72 6f 62 6c 6b 2d 3e | 66 77 64 70 61 67 65 3b |broblk->|fwdpage;|
|000014c0| 0d 0a 0d 0a 20 20 20 2f | 2a 20 75 70 64 61 74 65 |.... /|* update|
|000014d0| 20 66 77 64 70 61 67 65 | 20 6f 66 20 62 77 64 6e | fwdpage| of bwdn|
|000014e0| 6f 64 65 20 74 6f 20 70 | 6f 69 6e 74 20 74 6f 20 |ode to p|oint to |
|000014f0| 63 6d 70 74 6e 6f 64 65 | 20 20 20 20 2a 2f 0d 0a |cmptnode| */..|
|00001500| 0d 0a 20 20 20 69 66 28 | 70 62 6c 6b 2d 3e 62 77 |.. if(|pblk->bw|
|00001510| 64 70 61 67 65 20 3e 20 | 31 29 7b 0d 0a 20 20 20 |dpage > |1){.. |
|00001520| 20 20 20 6c 6e 75 6d 20 | 3d 20 28 6c 6f 6e 67 29 | lnum |= (long)|
|00001530| 20 28 28 70 62 6c 6b 2d | 3e 62 77 64 70 61 67 65 | ((pblk-|>bwdpage|
|00001540| 20 2d 20 31 4c 29 20 2a | 20 62 74 70 61 72 6d 73 | - 1L) *| btparms|
|00001550| 74 2d 3e 62 74 69 64 78 | 6c 65 6e 29 3b 0d 0a 0d |t->btidx|len);...|
|00001560| 0a 20 20 20 20 20 20 6c | 6b 20 3d 20 30 3b 20 20 |. l|k = 0; |
|00001570| 20 20 20 2f 2a 20 6c 6f | 63 6b 20 74 68 65 20 72 | /* lo|ck the r|
|00001580| 65 63 6f 72 64 20 77 65 | 20 61 72 65 20 61 62 6f |ecord we| are abo|
|00001590| 75 74 20 74 6f 20 6d 6f | 64 69 66 79 20 2a 2f 0d |ut to mo|dify */.|
|000015a0| 0a 20 20 20 20 20 20 77 | 68 69 6c 65 20 28 6c 6f |. w|hile (lo|
|000015b0| 63 6b 75 6e 6c 6b 28 66 | 64 69 64 78 2c 20 6c 6e |ckunlk(f|didx, ln|
|000015c0| 75 6d 2c 20 62 74 70 61 | 72 6d 73 74 2d 3e 62 74 |um, btpa|rmst->bt|
|000015d0| 69 64 78 6c 65 6e 2c 20 | 4c 4f 43 4b 52 29 20 21 |idxlen, |LOCKR) !|
|000015e0| 3d 20 31 29 0d 0a 20 20 | 20 20 20 20 20 20 20 69 |= 1).. | i|
|000015f0| 66 20 28 2b 2b 6c 6b 20 | 3e 20 48 44 52 54 52 59 |f (++lk |> HDRTRY|
|00001600| 53 29 7b 0d 0a 20 20 20 | 20 20 20 20 20 20 20 20 |S){.. | |
|00001610| 20 66 72 65 65 6b 65 79 | 73 28 62 72 6f 62 6c 6b | freekey|s(broblk|
|00001620| 29 3b 0d 0a 20 20 20 20 | 20 20 20 20 20 20 20 20 |);.. | |
|00001630| 46 52 45 45 28 62 72 6f | 62 6c 6b 29 3b 0d 0a 20 |FREE(bro|blk);.. |
|00001640| 20 20 20 20 20 20 20 20 | 20 20 20 72 65 74 75 72 | | retur|
|00001650| 6e 28 42 54 4c 4f 43 4b | 29 3b 20 2f 2a 20 69 2e |n(BTLOCK|); /* i.|
|00001660| 65 2e 20 75 6e 61 62 6c | 65 20 74 6f 20 6c 6f 63 |e. unabl|e to loc|
|00001670| 6b 20 6c 69 6e 6b 65 64 | 20 6c 69 73 74 20 72 65 |k linked| list re|
|00001680| 63 6f 72 64 20 2a 2f 0d | 0a 20 20 20 20 20 20 20 |cord */.|. |
|00001690| 20 20 7d 0d 0a 0d 0a 20 | 20 20 20 20 20 2f 2a 20 | }.... | /* |
|000016a0| 6c 6f 63 61 74 65 20 6d | 61 69 6e 74 2e 20 69 6e |locate m|aint. in|
|000016b0| 66 6f 2e 20 20 20 2a 2f | 0d 0a 20 20 20 20 20 20 |fo. */|.. |
|000016c0| 2f 2a 20 70 6f 73 69 74 | 69 6f 6e 20 74 6f 20 74 |/* posit|ion to t|
|000016d0| 68 65 20 66 6f 72 77 61 | 72 64 20 70 6f 69 6e 74 |he forwa|rd point|
|000016e0| 65 72 20 66 69 65 6c 64 | 20 6f 66 20 74 68 65 20 |er field| of the |
|000016f0| 6e 6f 64 65 2e 20 20 2a | 2f 0d 0a 20 20 20 20 20 |node. *|/.. |
|00001700| 20 69 66 20 28 6c 73 65 | 65 6b 28 66 64 69 64 78 | if (lse|ek(fdidx|
|00001710| 2c 20 28 6c 6f 6e 67 29 | 20 28 6c 6e 75 6d 20 2b |, (long)| (lnum +|
|00001720| 20 28 32 4c 20 2a 20 73 | 69 7a 65 6f 66 28 75 77 | (2L * s|izeof(uw|
|00001730| 6f 72 64 29 29 20 29 2c | 30 29 20 3d 3d 20 2d 31 |ord)) ),|0) == -1|
|00001740| 4c 29 0d 0a 20 20 20 20 | 20 20 20 20 20 63 6b 65 |L).. | cke|
|00001750| 72 72 6f 72 28 2d 20 43 | 4b 5f 53 45 45 4b 2c 20 |rror(- C|K_SEEK, |
|00001760| 22 38 22 29 3b 0d 0a 0d | 0a 20 20 20 20 20 20 2f |"8");...|. /|
|00001770| 2a 20 75 70 64 61 74 65 | 20 62 77 64 70 61 67 65 |* update| bwdpage|
|00001780| 20 20 20 2a 2f 0d 0a 20 | 20 20 20 20 20 69 66 20 | */.. | if |
|00001790| 28 77 72 69 74 65 28 66 | 64 69 64 78 2c 20 28 63 |(write(f|didx, (c|
|000017a0| 68 61 72 20 2a 29 26 70 | 62 6c 6b 6e 6f 64 65 2c |har *)&p|blknode,|
|000017b0| 20 73 69 7a 65 6f 66 28 | 6c 6f 6e 67 29 20 29 20 | sizeof(|long) ) |
|000017c0| 3d 3d 20 45 52 52 29 20 | 0d 0a 20 20 20 20 20 20 |== ERR) |.. |
|000017d0| 20 20 20 63 6b 65 72 72 | 6f 72 28 2d 20 43 4b 5f | ckerr|or(- CK_|
|000017e0| 57 52 49 54 2c 20 22 39 | 22 29 3b 0d 0a 0d 0a 20 |WRIT, "9|");.... |
|000017f0| 20 20 20 20 20 6c 6f 63 | 6b 75 6e 6c 6b 28 66 64 | loc|kunlk(fd|
|00001800| 69 64 78 2c 20 6c 6e 75 | 6d 2c 20 62 74 70 61 72 |idx, lnu|m, btpar|
|00001810| 6d 73 74 2d 3e 62 74 69 | 64 78 6c 65 6e 2c 20 55 |mst->bti|dxlen, U|
|00001820| 4e 4c 4f 43 4b 52 29 3b | 0d 0a 20 20 20 7d 0d 0a |NLOCKR);|.. }..|
|00001830| 0d 0a 75 70 64 74 72 65 | 65 3a 0d 0a 20 20 20 70 |..updtre|e:.. p|
|00001840| 75 74 69 64 78 72 28 66 | 64 69 64 78 2c 20 70 62 |utidxr(f|didx, pb|
|00001850| 6c 6b 6e 6f 64 65 2c 20 | 70 62 6c 6b 2c 20 62 74 |lknode, |pblk, bt|
|00001860| 70 61 72 6d 73 74 29 3b | 0d 0a 0d 0a 20 20 20 2f |parmst);|.... /|
|00001870| 2a 20 67 65 74 20 6c 61 | 73 74 20 6b 65 79 73 20 |* get la|st keys |
|00001880| 66 6f 72 20 62 6f 74 68 | 20 6e 6f 64 65 73 20 2a |for both| nodes *|
|00001890| 2f 0d 0a 20 20 20 69 66 | 28 20 21 28 65 6e 64 62 |/.. if|( !(endb|
|000018a0| 72 6f 6b 79 20 3d 20 63 | 61 6c 6c 6f 63 28 62 74 |roky = c|alloc(bt|
|000018b0| 70 61 72 6d 73 74 2d 3e | 62 74 6b 65 79 6c 65 6e |parmst->|btkeylen|
|000018c0| 20 2b 20 31 2c 20 53 5a | 43 48 41 52 29 20 29 29 | + 1, SZ|CHAR) ))|
|000018d0| 0d 0a 20 20 20 20 20 20 | 63 6b 65 72 72 6f 72 28 |.. |ckerror(|
|000018e0| 2d 20 43 4b 5f 4e 4f 4d | 45 4d 2c 20 22 31 30 22 |- CK_NOM|EM, "10"|
|000018f0| 29 3b 0d 0a 20 20 20 69 | 66 28 20 21 28 65 6e 64 |);.. i|f( !(end|
|00001900| 69 64 78 6b 79 20 3d 20 | 63 61 6c 6c 6f 63 28 62 |idxky = |calloc(b|
|00001910| 74 70 61 72 6d 73 74 2d | 3e 62 74 6b 65 79 6c 65 |tparmst-|>btkeyle|
|00001920| 6e 20 2b 20 31 2c 20 53 | 5a 43 48 41 52 29 20 29 |n + 1, S|ZCHAR) )|
|00001930| 29 0d 0a 20 20 20 20 20 | 20 63 6b 65 72 72 6f 72 |).. | ckerror|
|00001940| 28 2d 20 43 4b 5f 4e 4f | 4d 45 4d 2c 20 22 31 31 |(- CK_NO|MEM, "11|
|00001950| 22 29 3b 0d 0a 20 20 20 | 73 74 72 63 70 79 28 65 |");.. |strcpy(e|
|00001960| 6e 64 62 72 6f 6b 79 2c | 20 70 62 6c 6b 2d 3e 62 |ndbroky,| pblk->b|
|00001970| 74 70 61 67 65 5b 70 62 | 6c 6b 2d 3e 63 65 6c 6c |tpage[pb|lk->cell|
|00001980| 69 63 6e 74 20 2d 20 31 | 5d 2e 73 6b 65 79 6e 6d |icnt - 1|].skeynm|
|00001990| 65 29 3b 0d 0a 20 20 20 | 73 74 72 63 70 79 28 65 |e);.. |strcpy(e|
|000019a0| 6e 64 69 64 78 6b 79 2c | 20 65 6e 64 62 72 6f 6b |ndidxky,| endbrok|
|000019b0| 79 29 3b 0d 0a 0d 0a 20 | 20 20 2f 2a 20 64 65 6c |y);.... | /* del|
|000019c0| 65 74 65 20 62 72 6f 74 | 68 65 72 20 6e 6f 64 65 |ete brot|her node|
|000019d0| 20 2a 2f 0d 0a 20 20 20 | 64 65 6c 65 74 72 65 63 | */.. |deletrec|
|000019e0| 28 66 64 69 64 78 2c 20 | 64 65 6c 6c 6f 63 2c 20 |(fdidx, |delloc, |
|000019f0| 62 74 70 61 72 6d 73 74 | 2d 3e 62 74 69 64 78 6c |btparmst|->btidxl|
|00001a00| 65 6e 29 3b 0d 0a 20 20 | 20 73 61 76 6c 76 6c 20 |en);.. | savlvl |
|00001a10| 3d 20 70 62 6c 6b 6e 6f | 64 65 3b 0d 0a 0d 0a 20 |= pblkno|de;.... |
|00001a20| 20 20 2f 2a 20 75 70 64 | 61 74 65 20 6e 6f 64 65 | /* upd|ate node|
|00001a30| 73 20 69 6e 20 75 70 70 | 65 72 20 6c 65 76 65 6c |s in upp|er level|
|00001a40| 73 20 6f 66 20 42 2b 74 | 72 65 65 20 2a 2f 0d 0a |s of B+t|ree */..|
|00001a50| 20 20 20 69 66 28 20 28 | 6c 76 6c 6e 6f 64 65 20 | if( (|lvlnode |
|00001a60| 3d 20 70 6f 70 6e 6f 64 | 65 20 3d 20 70 6f 70 74 |= popnod|e = popt|
|00001a70| 6f 70 28 29 20 29 20 3d | 3d 20 30 4c 29 7b 0d 0a |op() ) =|= 0L){..|
|00001a80| 20 20 20 20 20 20 6a 20 | 3d 20 42 54 43 41 4c 4c | j |= BTCALL|
|00001a90| 4f 4b 3b 0d 0a 20 20 20 | 20 20 20 67 6f 74 6f 20 |OK;.. | goto |
|00001aa0| 66 72 65 65 70 74 72 73 | 3b 0d 0a 20 20 20 7d 0d |freeptrs|;.. }.|
|00001ab0| 0a 0d 0a 20 20 20 73 61 | 76 73 70 20 3d 20 73 70 |... sa|vsp = sp|
|00001ac0| 3b 20 20 20 20 20 2f 2a | 20 73 61 76 65 20 73 74 |; /*| save st|
|00001ad0| 61 63 6b 20 70 6f 73 74 | 69 6f 6e 20 20 20 2a 2f |ack post|ion */|
|00001ae0| 0d 0a 20 20 20 73 61 76 | 6c 76 6c 20 3d 20 70 6f |.. sav|lvl = po|
|00001af0| 70 6e 6f 64 65 3b 0d 0a | 0d 0a 20 20 20 2f 2a 20 |pnode;..|.. /* |
|00001b00| 69 66 20 72 69 67 68 74 | 20 63 6f 6d 70 61 63 74 |if right| compact|
|00001b10| 2c 20 61 64 6a 75 73 74 | 20 69 6e 64 65 78 20 6e |, adjust| index n|
|00001b20| 6f 64 65 20 65 6e 64 20 | 6b 65 79 20 69 6e 20 75 |ode end |key in u|
|00001b30| 70 70 65 72 20 6c 65 76 | 65 6c 20 2a 2f 0d 0a 20 |pper lev|el */.. |
|00001b40| 20 20 69 66 20 28 63 6d | 70 74 66 6c 61 67 20 3d | if (cm|ptflag =|
|00001b50| 3d 20 31 29 7b 0d 0a 20 | 20 20 20 20 20 77 68 69 |= 1){.. | whi|
|00001b60| 6c 65 20 28 70 6f 70 6e | 6f 64 65 20 21 3d 20 30 |le (popn|ode != 0|
|00001b70| 4c 29 7b 0d 0a 0d 0a 20 | 20 20 20 20 20 20 20 20 |L){.... | |
|00001b80| 73 61 76 6c 76 6c 20 3d | 20 70 6f 70 6e 6f 64 65 |savlvl =| popnode|
|00001b90| 3b 0d 0a 0d 0a 20 20 20 | 20 20 20 20 20 20 67 65 |;.... | ge|
|00001ba0| 74 69 64 78 72 28 66 64 | 69 64 78 2c 20 70 6f 70 |tidxr(fd|idx, pop|
|00001bb0| 6e 6f 64 65 2c 20 62 72 | 6f 62 6c 6b 2c 20 62 74 |node, br|oblk, bt|
|00001bc0| 70 61 72 6d 73 74 2d 3e | 62 74 69 64 78 6c 65 6e |parmst->|btidxlen|
|00001bd0| 2c 0d 0a 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |,.. | |
|00001be0| 20 20 62 74 70 61 72 6d | 73 74 2d 3e 62 74 6b 65 | btparm|st->btke|
|00001bf0| 79 6c 65 6e 29 3b 0d 0a | 0d 0a 20 20 20 20 20 20 |ylen);..|.. |
|00001c00| 20 20 20 69 20 3d 20 30 | 3b 0d 0a 20 20 20 20 20 | i = 0|;.. |
|00001c10| 20 20 20 20 77 68 69 6c | 65 20 28 62 72 6f 62 6c | whil|e (brobl|
|00001c20| 6b 2d 3e 62 74 70 61 67 | 65 5b 69 2b 2b 5d 2e 62 |k->btpag|e[i++].b|
|00001c30| 74 70 74 72 20 21 3d 20 | 70 62 6c 6b 6e 6f 64 65 |tptr != |pblknode|
|00001c40| 29 7b 0d 0a 20 20 20 20 | 20 20 20 20 20 20 20 20 |){.. | |
|00001c50| 69 66 28 69 20 3e 3d 20 | 62 72 6f 62 6c 6b 2d 3e |if(i >= |broblk->|
|00001c60| 63 65 6c 6c 69 63 6e 74 | 29 7b 0d 0a 20 20 20 20 |cellicnt|){.. |
|00001c70| 20 20 20 20 20 20 20 20 | 20 20 20 69 66 20 28 20 | | if ( |
|00001c80| 28 70 6f 70 6e 6f 64 65 | 20 3d 20 62 72 6f 62 6c |(popnode| = brobl|
|00001c90| 6b 2d 3e 66 77 64 70 61 | 67 65 29 20 3c 20 32 29 |k->fwdpa|ge) < 2)|
|00001ca0| 0d 0a 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |.. | |
|00001cb0| 20 20 20 20 63 6b 65 72 | 72 6f 72 28 2d 20 43 4b | cker|ror(- CK|
|00001cc0| 5f 49 4e 44 58 2c 20 22 | 31 32 22 29 3b 0d 0a 20 |_INDX, "|12");.. |
|00001cd0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 65 6c | | el|
|00001ce0| 73 65 7b 0d 0a 20 20 20 | 20 20 20 20 20 20 20 20 |se{.. | |
|00001cf0| 20 20 20 20 20 20 20 61 | 64 6a 73 74 61 63 6b 28 | a|djstack(|
|00001d00| 66 64 69 64 78 2c 20 62 | 72 6f 62 6c 6b 2c 20 70 |fdidx, b|roblk, p|
|00001d10| 6f 70 6e 6f 64 65 2c 20 | 62 74 70 61 72 6d 73 74 |opnode, |btparmst|
|00001d20| 29 3b 0d 0a 20 20 20 20 | 20 20 20 20 20 20 20 20 |);.. | |
|00001d30| 20 20 20 20 20 20 67 65 | 74 69 64 78 72 28 66 64 | ge|tidxr(fd|
|00001d40| 69 64 78 2c 20 70 6f 70 | 6e 6f 64 65 2c 20 62 72 |idx, pop|node, br|
|00001d50| 6f 62 6c 6b 2c 20 62 74 | 70 61 72 6d 73 74 2d 3e |oblk, bt|parmst->|
|00001d60| 62 74 69 64 78 6c 65 6e | 2c 20 62 74 70 61 72 6d |btidxlen|, btparm|
|00001d70| 73 74 2d 3e 62 74 6b 65 | 79 6c 65 6e 29 3b 0d 0a |st->btke|ylen);..|
|00001d80| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001d90| 20 20 69 20 3d 20 30 3b | 0d 0a 20 20 20 20 20 20 | i = 0;|.. |
|00001da0| 20 20 20 20 20 20 20 20 | 20 7d 0d 0a 20 20 20 20 | | }.. |
|00001db0| 20 20 20 20 20 20 20 20 | 7d 0d 0a 20 20 20 20 20 | |}.. |
|00001dc0| 20 20 20 20 7d 0d 0a 0d | 0a 20 20 20 20 20 20 20 | }...|. |
|00001dd0| 20 20 73 74 72 63 70 79 | 28 62 72 6f 62 6c 6b 2d | strcpy|(broblk-|
|00001de0| 3e 62 74 70 61 67 65 5b | 2d 2d 69 5d 2e 73 6b 65 |>btpage[|--i].ske|
|00001df0| 79 6e 6d 65 2c 20 65 6e | 64 69 64 78 6b 79 29 3b |ynme, en|didxky);|
|00001e00| 0d 0a 0d 0a 20 20 20 20 | 20 20 20 20 20 70 75 74 |.... | put|
|00001e10| 69 64 78 72 28 66 64 69 | 64 78 2c 20 70 6f 70 6e |idxr(fdi|dx, popn|
|00001e20| 6f 64 65 2c 20 62 72 6f | 62 6c 6b 2c 20 62 74 70 |ode, bro|blk, btp|
|00001e30| 61 72 6d 73 74 29 3b 0d | 0a 0d 0a 20 20 20 20 20 |armst);.|... |
|00001e40| 20 20 20 20 73 74 72 63 | 70 79 28 65 6e 64 69 64 | strc|py(endid|
|00001e50| 78 6b 79 2c 20 62 72 6f | 62 6c 6b 2d 3e 62 74 70 |xky, bro|blk->btp|
|00001e60| 61 67 65 5b 62 72 6f 62 | 6c 6b 2d 3e 63 65 6c 6c |age[brob|lk->cell|
|00001e70| 69 63 6e 74 20 2d 20 31 | 5d 2e 73 6b 65 79 6e 6d |icnt - 1|].skeynm|
|00001e80| 65 29 3b 0d 0a 20 20 20 | 20 20 20 20 20 20 70 62 |e);.. | pb|
|00001e90| 6c 6b 6e 6f 64 65 20 3d | 20 70 6f 70 6e 6f 64 65 |lknode =| popnode|
|00001ea0| 3b 0d 0a 20 20 20 20 20 | 20 20 20 20 70 6f 70 6e |;.. | popn|
|00001eb0| 6f 64 65 20 3d 20 70 6f | 70 74 6f 70 28 29 3b 0d |ode = po|ptop();.|
|00001ec0| 0a 20 20 20 20 20 20 7d | 0d 0a 20 20 20 7d 0d 0a |. }|.. }..|
|00001ed0| 0d 0a 20 20 20 2f 2a 20 | 62 61 63 6b 20 74 6f 20 |.. /* |back to |
|00001ee0| 74 68 65 20 70 61 72 65 | 6e 74 20 6e 6f 64 65 20 |the pare|nt node |
|00001ef0| 2a 2f 0d 0a 20 20 20 67 | 65 74 69 64 78 72 28 66 |*/.. g|etidxr(f|
|00001f00| 64 69 64 78 2c 20 6c 76 | 6c 6e 6f 64 65 2c 20 62 |didx, lv|lnode, b|
|00001f10| 72 6f 62 6c 6b 2c 20 62 | 74 70 61 72 6d 73 74 2d |roblk, b|tparmst-|
|00001f20| 3e 62 74 69 64 78 6c 65 | 6e 2c 20 62 74 70 61 72 |>btidxle|n, btpar|
|00001f30| 6d 73 74 2d 3e 62 74 6b | 65 79 6c 65 6e 29 3b 0d |mst->btk|eylen);.|
|00001f40| 0a 0d 0a 20 20 20 69 64 | 78 63 6b 62 72 6f 20 3d |... id|xckbro =|
|00001f50| 20 30 3b 20 20 20 20 2f | 2a 20 66 6c 61 67 20 74 | 0; /|* flag t|
|00001f60| 6f 20 74 65 6c 6c 20 77 | 68 65 6e 20 62 6f 74 68 |o tell w|hen both|
|00001f70| 20 62 72 6f 74 68 65 72 | 73 20 68 61 76 65 20 62 | brother|s have b|
|00001f80| 65 65 6e 20 63 68 65 63 | 6b 65 64 20 2a 2f 0d 0a |een chec|ked */..|
|00001f90| 20 20 20 62 77 64 70 74 | 72 73 76 20 3d 20 62 72 | bwdpt|rsv = br|
|00001fa0| 6f 62 6c 6b 2d 3e 62 77 | 64 70 61 67 65 3b 20 20 |oblk->bw|dpage; |
|00001fb0| 20 20 20 20 2f 2a 20 73 | 61 76 65 20 69 6e 20 63 | /* s|ave in c|
|00001fc0| 61 73 65 20 6e 65 65 64 | 20 74 6f 20 67 65 74 20 |ase need| to get |
|00001fd0| 62 61 63 6b 20 74 6f 20 | 62 77 64 2a 2f 0d 0a 20 |back to |bwd*/.. |
|00001fe0| 20 20 69 20 3d 20 30 3b | 0d 0a 0d 0a 20 20 20 2f | i = 0;|.... /|
|00001ff0| 2a 20 66 69 6e 64 20 63 | 65 6c 6c 20 77 68 69 63 |* find c|ell whic|
|00002000| 68 20 68 61 73 20 62 65 | 65 6e 20 64 65 6c 65 74 |h has be|en delet|
|00002010| 65 64 20 2a 2f 0d 0a 20 | 20 20 77 68 69 6c 65 20 |ed */.. | while |
|00002020| 28 62 72 6f 62 6c 6b 2d | 3e 62 74 70 61 67 65 5b |(broblk-|>btpage[|
|00002030| 69 5d 2e 62 74 70 74 72 | 20 21 3d 20 64 65 6c 6c |i].btptr| != dell|
|00002040| 6f 63 29 7b 0d 0a 20 20 | 20 20 20 20 69 2b 2b 3b |oc){.. | i++;|
|00002050| 0d 0a 20 20 20 20 20 20 | 69 66 28 69 20 3e 3d 20 |.. |if(i >= |
|00002060| 62 72 6f 62 6c 6b 2d 3e | 63 65 6c 6c 69 63 6e 74 |broblk->|cellicnt|
|00002070| 29 7b 0d 0a 20 20 20 20 | 20 20 20 20 20 69 66 20 |){.. | if |
|00002080| 28 69 64 78 63 6b 62 72 | 6f 20 3c 20 32 29 7b 0d |(idxckbr|o < 2){.|
|00002090| 0a 20 20 20 20 20 20 20 | 20 20 20 20 20 69 66 20 |. | if |
|000020a0| 28 69 64 78 63 6b 62 72 | 6f 20 3d 3d 20 30 29 7b |(idxckbr|o == 0){|
|000020b0| 0d 0a 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |.. | |
|000020c0| 20 69 66 20 28 20 28 73 | 61 76 6c 76 6c 20 3d 20 | if ( (s|avlvl = |
|000020d0| 6c 76 6c 6e 6f 64 65 20 | 3d 20 62 72 6f 62 6c 6b |lvlnode |= broblk|
|000020e0| 2d 3e 66 77 64 70 61 67 | 65 29 20 3e 20 30 29 7b |->fwdpag|e) > 0){|
|000020f0| 0d 0a 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |.. | |
|00002100| 20 20 20 20 61 64 6a 73 | 74 61 63 6b 28 66 64 69 | adjs|tack(fdi|
|00002110| 64 78 2c 20 62 72 6f 62 | 6c 6b 2c 20 6c 76 6c 6e |dx, brob|lk, lvln|
|00002120| 6f 64 65 2c 20 62 74 70 | 61 72 6d 73 74 29 3b 0d |ode, btp|armst);.|
|00002130| 0a 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |. | |
|00002140| 20 20 20 67 65 74 69 64 | 78 72 28 66 64 69 64 78 | getid|xr(fdidx|
|00002150| 2c 20 6c 76 6c 6e 6f 64 | 65 2c 20 62 72 6f 62 6c |, lvlnod|e, brobl|
|00002160| 6b 2c 20 62 74 70 61 72 | 6d 73 74 2d 3e 62 74 69 |k, btpar|mst->bti|
|00002170| 64 78 6c 65 6e 2c 0d 0a | 20 20 20 20 20 20 20 20 |dxlen,..| |
|00002180| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002190| 62 74 70 61 72 6d 73 74 | 2d 3e 62 74 6b 65 79 6c |btparmst|->btkeyl|
|000021a0| 65 6e 29 3b 0d 0a 20 20 | 20 20 20 20 20 20 20 20 |en);.. | |
|000021b0| 20 20 20 20 20 20 20 20 | 69 20 3d 20 30 3b 0d 0a | |i = 0;..|
|000021c0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 7d | | }|
|000021d0| 0d 0a 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |.. | |
|000021e0| 20 65 6c 73 65 0d 0a 20 | 20 20 20 20 20 20 20 20 | else.. | |
|000021f0| 20 20 20 20 20 20 20 20 | 20 69 64 78 63 6b 62 72 | | idxckbr|
|00002200| 6f 20 3d 20 31 3b 0d 0a | 20 20 20 20 20 20 20 20 |o = 1;..| |
|00002210| 20 20 20 20 7d 0d 0a 0d | 0a 20 20 20 20 20 20 20 | }...|. |
|00002220| 20 20 20 20 20 69 66 20 | 28 69 64 78 63 6b 62 72 | if |(idxckbr|
|00002230| 6f 20 3d 3d 20 31 29 7b | 0d 0a 20 20 20 20 20 20 |o == 1){|.. |
|00002240| 20 20 20 20 20 20 20 20 | 20 69 66 20 28 20 28 73 | | if ( (s|
|00002250| 61 76 6c 76 6c 20 3d 20 | 6c 76 6c 6e 6f 64 65 20 |avlvl = |lvlnode |
|00002260| 3d 20 62 77 64 70 74 72 | 73 76 29 20 3e 20 30 29 |= bwdptr|sv) > 0)|
|00002270| 7b 0d 0a 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |{.. | |
|00002280| 20 20 20 20 20 61 64 6a | 73 74 61 63 6b 28 66 64 | adj|stack(fd|
|00002290| 69 64 78 2c 20 62 72 6f | 62 6c 6b 2c 20 6c 76 6c |idx, bro|blk, lvl|
|000022a0| 6e 6f 64 65 2c 20 62 74 | 70 61 72 6d 73 74 29 3b |node, bt|parmst);|
|000022b0| 0d 0a 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |.. | |
|000022c0| 20 20 20 20 67 65 74 69 | 64 78 72 28 66 64 69 64 | geti|dxr(fdid|
|000022d0| 78 2c 20 6c 76 6c 6e 6f | 64 65 2c 20 62 72 6f 62 |x, lvlno|de, brob|
|000022e0| 6c 6b 2c 20 62 74 70 61 | 72 6d 73 74 2d 3e 62 74 |lk, btpa|rmst->bt|
|000022f0| 69 64 78 6c 65 6e 2c 0d | 0a 20 20 20 20 20 20 20 |idxlen,.|. |
|00002300| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002310| 20 62 74 70 61 72 6d 73 | 74 2d 3e 62 74 6b 65 79 | btparms|t->btkey|
|00002320| 6c 65 6e 29 3b 0d 0a 20 | 20 20 20 20 20 20 20 20 |len);.. | |
|00002330| 20 20 20 20 20 20 20 20 | 20 69 20 3d 20 30 3b 0d | | i = 0;.|
|00002340| 0a 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |. | |
|00002350| 7d 0d 0a 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |}.. | |
|00002360| 20 20 65 6c 73 65 7b 0d | 0a 20 20 20 20 20 20 20 | else{.|. |
|00002370| 20 20 20 20 20 20 20 20 | 20 20 20 6a 20 3d 20 42 | | j = B|
|00002380| 54 43 41 4c 4c 4f 4b 3b | 0d 0a 20 20 20 20 20 20 |TCALLOK;|.. |
|00002390| 20 20 20 20 20 20 20 20 | 20 20 20 20 67 6f 74 6f | | goto|
|000023a0| 20 66 72 65 65 70 74 72 | 73 3b 0d 0a 20 20 20 20 | freeptr|s;.. |
|000023b0| 20 20 20 20 20 20 20 20 | 20 20 20 7d 0d 0a 20 20 | | }.. |
|000023c0| 20 20 20 20 20 20 20 20 | 20 20 7d 0d 0a 20 20 20 | | }.. |
|000023d0| 20 20 20 20 20 20 20 20 | 20 2b 2b 69 64 78 63 6b | | ++idxck|
|000023e0| 62 72 6f 3b 0d 0a 20 20 | 20 20 20 20 20 20 20 7d |bro;.. | }|
|000023f0| 0d 0a 20 20 20 20 20 20 | 20 20 20 65 6c 73 65 7b |.. | else{|
|00002400| 0d 0a 20 20 20 20 20 20 | 20 20 20 20 20 20 6a 20 |.. | j |
|00002410| 3d 20 42 54 43 41 4c 4c | 4f 4b 3b 0d 0a 20 20 20 |= BTCALL|OK;.. |
|00002420| 20 20 20 20 20 20 20 20 | 20 67 6f 74 6f 20 66 72 | | goto fr|
|00002430| 65 65 70 74 72 73 3b 0d | 0a 20 20 20 20 20 20 20 |eeptrs;.|. |
|00002440| 20 20 7d 0d 0a 20 20 20 | 20 20 20 7d 0d 0a 20 20 | }.. | }.. |
|00002450| 20 7d 0d 0a 0d 0a 20 20 | 20 73 61 76 65 6c 6f 63 | }.... | saveloc|
|00002460| 20 3d 20 62 74 70 61 72 | 6d 73 74 2d 3e 62 74 6c | = btpar|mst->btl|
|00002470| 6f 63 3b 0d 0a 20 20 20 | 73 61 76 65 6f 70 20 3d |oc;.. |saveop =|
|00002480| 20 62 74 70 61 72 6d 73 | 74 2d 3e 62 74 6f 70 74 | btparms|t->btopt|
|00002490| 79 70 65 3b 0d 0a 20 20 | 20 62 74 70 61 72 6d 73 |ype;.. | btparms|
|000024a0| 74 2d 3e 62 74 6c 6f 63 | 20 3d 20 30 3b 0d 0a 20 |t->btloc| = 0;.. |
|000024b0| 20 20 62 74 70 61 72 6d | 73 74 2d 3e 62 74 6f 70 | btparm|st->btop|
|000024c0| 74 79 70 65 20 3d 20 44 | 45 4c 54 4b 59 3b 0d 0a |type = D|ELTKY;..|
|000024d0| 0d 0a 20 20 20 73 70 20 | 3d 20 73 61 76 73 70 3b |.. sp |= savsp;|
|000024e0| 20 20 20 20 20 2f 2a 20 | 72 65 73 74 6f 72 65 20 | /* |restore |
|000024f0| 73 74 61 63 6b 20 70 6f | 73 74 69 6f 6e 20 20 20 |stack po|stion |
|00002500| 2a 2f 0d 0a 0d 0a 20 20 | 20 69 66 20 28 20 28 6a |*/.... | if ( (j|
|00002510| 20 3d 20 62 74 72 64 65 | 6c 65 74 28 66 64 64 74 | = btrde|let(fddt|
|00002520| 61 2c 20 66 64 69 64 78 | 2c 20 62 72 6f 62 6c 6b |a, fdidx|, broblk|
|00002530| 2c 20 69 2c 20 6c 76 6c | 6e 6f 64 65 2c 20 62 74 |, i, lvl|node, bt|
|00002540| 70 61 72 6d 73 74 29 20 | 29 20 3c 20 30 29 7b 0d |parmst) |) < 0){.|
|00002550| 0a 20 20 20 20 20 20 72 | 65 74 75 72 6e 28 6a 29 |. r|eturn(j)|
|00002560| 3b 0d 0a 20 20 20 7d 0d | 0a 0d 0a 20 20 20 62 74 |;.. }.|... bt|
|00002570| 70 61 72 6d 73 74 2d 3e | 62 74 6c 6f 63 20 3d 20 |parmst->|btloc = |
|00002580| 73 61 76 65 6c 6f 63 3b | 0d 0a 20 20 20 62 74 70 |saveloc;|.. btp|
|00002590| 61 72 6d 73 74 2d 3e 62 | 74 6f 70 74 79 70 65 20 |armst->b|toptype |
|000025a0| 3d 20 73 61 76 65 6f 70 | 3b 0d 0a 0d 0a 66 72 65 |= saveop|;....fre|
|000025b0| 65 70 74 72 73 3a 0d 0a | 20 20 20 46 52 45 45 28 |eptrs:..| FREE(|
|000025c0| 65 6e 64 62 72 6f 6b 79 | 29 3b 0d 0a 20 20 20 46 |endbroky|);.. F|
|000025d0| 52 45 45 28 65 6e 64 69 | 64 78 6b 79 29 3b 0d 0a |REE(endi|dxky);..|
|000025e0| 0d 0a 20 20 20 69 66 28 | 20 28 70 62 6c 6b 2d 3e |.. if(| (pblk->|
|000025f0| 66 77 64 70 61 67 65 20 | 3c 20 32 29 20 26 26 20 |fwdpage |< 2) && |
|00002600| 28 70 62 6c 6b 2d 3e 62 | 77 64 70 61 67 65 20 3c |(pblk->b|wdpage <|
|00002610| 20 32 29 20 29 7b 0d 0a | 0d 0a 20 20 20 20 20 20 | 2) ){..|.. |
|00002620| 6c 76 6c 6e 6f 64 65 20 | 3d 20 73 61 76 6c 76 6c |lvlnode |= savlvl|
|00002630| 3b 0d 0a 20 20 20 20 20 | 20 61 64 6a 73 74 61 63 |;.. | adjstac|
|00002640| 6b 28 66 64 69 64 78 2c | 20 62 72 6f 62 6c 6b 2c |k(fdidx,| broblk,|
|00002650| 20 6c 76 6c 6e 6f 64 65 | 2c 20 62 74 70 61 72 6d | lvlnode|, btparm|
|00002660| 73 74 29 3b 0d 0a 20 20 | 20 20 20 20 67 65 74 69 |st);.. | geti|
|00002670| 64 78 72 28 66 64 69 64 | 78 2c 20 6c 76 6c 6e 6f |dxr(fdid|x, lvlno|
|00002680| 64 65 2c 20 62 72 6f 62 | 6c 6b 2c 20 62 74 70 61 |de, brob|lk, btpa|
|00002690| 72 6d 73 74 2d 3e 62 74 | 69 64 78 6c 65 6e 2c 20 |rmst->bt|idxlen, |
|000026a0| 62 74 70 61 72 6d 73 74 | 2d 3e 62 74 6b 65 79 6c |btparmst|->btkeyl|
|000026b0| 65 6e 29 3b 0d 0a 0d 0a | 20 20 20 20 20 20 64 65 |en);....| de|
|000026c0| 6c 65 74 72 65 63 28 66 | 64 69 64 78 2c 20 62 74 |letrec(f|didx, bt|
|000026d0| 70 61 72 6d 73 74 2d 3e | 62 74 72 6f 6f 74 2c 20 |parmst->|btroot, |
|000026e0| 62 74 70 61 72 6d 73 74 | 2d 3e 62 74 69 64 78 6c |btparmst|->btidxl|
|000026f0| 65 6e 29 3b 0d 0a 0d 0a | 20 20 20 20 20 20 2f 2a |en);....| /*|
|00002700| 20 6d 61 6b 65 20 74 68 | 69 73 20 74 68 65 20 6e | make th|is the n|
|00002710| 65 77 20 72 6f 6f 74 20 | 6e 6f 64 65 2e 20 20 20 |ew root |node. |
|00002720| 20 2a 2f 0d 0a 0d 0a 20 | 20 20 20 20 20 69 66 20 | */.... | if |
|00002730| 28 63 6d 70 74 66 6c 61 | 67 20 3d 3d 20 31 29 20 |(cmptfla|g == 1) |
|00002740| 20 20 20 20 20 2f 2a 20 | 72 69 67 68 74 20 63 6f | /* |right co|
|00002750| 6d 70 61 63 74 20 20 20 | 20 2a 2f 0d 0a 20 20 20 |mpact | */.. |
|00002760| 20 20 20 20 20 20 62 74 | 70 61 72 6d 73 74 2d 3e | bt|parmst->|
|00002770| 62 74 72 6f 6f 74 20 3d | 20 62 72 6f 62 6c 6b 2d |btroot =| broblk-|
|00002780| 3e 62 74 70 61 67 65 5b | 30 5d 2e 62 74 70 74 72 |>btpage[|0].btptr|
|00002790| 3b 0d 0a 20 20 20 20 20 | 20 65 6c 73 65 20 20 20 |;.. | else |
|000027a0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 2f 2a 20 | | /* |
|000027b0| 6c 65 66 74 20 63 6f 6d | 70 61 63 74 20 20 20 20 |left com|pact |
|000027c0| 2a 2f 0d 0a 20 20 20 20 | 20 20 20 20 20 62 74 70 |*/.. | btp|
|000027d0| 61 72 6d 73 74 2d 3e 62 | 74 72 6f 6f 74 20 3d 20 |armst->b|troot = |
|000027e0| 70 62 6c 6b 6e 6f 64 65 | 3b 0d 0a 0d 0a 20 20 20 |pblknode|;.... |
|000027f0| 20 20 20 70 75 74 72 6f | 6f 74 28 66 64 69 64 78 | putro|ot(fdidx|
|00002800| 2c 20 62 74 70 61 72 6d | 73 74 2d 3e 62 74 72 6f |, btparm|st->btro|
|00002810| 6f 74 2c 20 62 74 70 61 | 72 6d 73 74 2d 3e 66 69 |ot, btpa|rmst->fi|
|00002820| 6e 64 72 6f 6f 74 29 3b | 0d 0a 20 20 20 7d 0d 0a |ndroot);|.. }..|
|00002830| 0d 0a 20 20 20 66 72 65 | 65 6b 65 79 73 28 62 72 |.. fre|ekeys(br|
|00002840| 6f 62 6c 6b 29 3b 0d 0a | 20 20 20 46 52 45 45 28 |oblk);..| FREE(|
|00002850| 62 72 6f 62 6c 6b 29 3b | 0d 0a 20 20 20 72 65 74 |broblk);|.. ret|
|00002860| 75 72 6e 28 20 28 6a 20 | 3d 3d 20 42 54 43 41 4c |urn( (j |== BTCAL|
|00002870| 4c 4f 4b 29 20 3f 20 31 | 20 3a 20 2d 31 29 3b 0d |LOK) ? 1| : -1);.|
|00002880| 0a 7d 0d 0a | |.}.. | |
+--------+-------------------------+-------------------------+--------+--------+