home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c006 / 1.ddi / BTBINARY.C < prev    next >
DOS BACKUP file  |  1987-11-08  |  4.4 KB

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: BTBINARY.C

ConfidenceProgramDetectionMatch TypeSupport
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\BTBINARY.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 42 54 42 | 49 4e 41 52 59 2e 43 00 |RARY\BTB|INARY.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 62 20 74 20 62 20 69 | 20 6e 20 61 20 72 20 79 | b t b i| n a r y|
|000000e0| 20 2e 20 63 3a 20 20 20 | 62 74 72 65 65 20 6e 6f | . c: |btree no|
|000000f0| 64 65 73 20 62 69 6e 61 | 72 79 20 73 65 61 72 63 |des bina|ry searc|
|00000100| 68 20 72 6f 75 74 69 6e | 65 73 2e 20 20 20 20 20 |h routin|es. |
|00000110| 38 2f 30 32 2f 38 34 20 | 2a 2f 0d 0a 0d 0a 2f 2a |8/02/84 |*/..../*|
|00000120| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000130| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000140| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000150| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000160| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 0d 0a 20 2a |--------|----.. *|
|00000170| 20 62 69 6e 61 72 79 73 | 72 28 29 20 70 65 72 66 | binarys|r() perf|
|00000180| 6f 72 6d 73 20 61 20 62 | 69 6e 61 72 79 20 73 65 |orms a b|inary se|
|00000190| 61 72 63 68 20 6f 66 20 | 74 68 65 20 69 6e 64 65 |arch of |the inde|
|000001a0| 78 20 6e 6f 64 65 20 74 | 79 70 65 20 4f 20 28 69 |x node t|ype O (i|
|000001b0| 2e 65 2e 0d 0a 20 2a 20 | 69 6e 64 65 78 20 6e 6f |.e... * |index no|
|000001c0| 64 65 73 20 77 69 74 68 | 20 70 6f 69 6e 74 65 72 |des with| pointer|
|000001d0| 73 20 74 6f 20 6f 74 68 | 65 72 20 69 6e 64 65 78 |s to oth|er index|
|000001e0| 20 6e 6f 64 65 73 20 61 | 74 20 74 68 65 20 6c 6f | nodes a|t the lo|
|000001f0| 77 65 72 20 6c 65 76 65 | 6c 73 29 2e 0d 0a 20 2a |wer leve|ls)... *|
|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 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000240| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2a 2f 0d 0a 2f |--------|---*/../|
|00000250| 2a 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |*-------|--------|
|00000260| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000270| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000280| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000290| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 0d 0a 20 |--------|-----.. |
|000002a0| 2a 20 62 69 6e 61 72 79 | 64 74 28 29 20 70 65 72 |* binary|dt() per|
|000002b0| 66 6f 72 6d 73 20 61 20 | 62 69 6e 61 72 79 20 73 |forms a |binary s|
|000002c0| 65 61 72 63 68 20 6f 66 | 20 74 68 65 20 69 6e 64 |earch of| the ind|
|000002d0| 65 78 20 6e 6f 64 65 20 | 74 79 70 65 20 31 20 28 |ex node |type 1 (|
|000002e0| 69 2e 65 2e 0d 0a 20 2a | 20 74 65 72 6d 69 6e 61 |i.e... *| termina|
|000002f0| 74 69 6e 67 20 69 6e 64 | 65 78 20 6e 6f 64 65 73 |ting ind|ex nodes|
|00000300| 20 77 69 74 68 20 70 6f | 69 6e 74 65 72 73 20 74 | with po|inters t|
|00000310| 6f 20 74 68 65 20 64 61 | 74 61 20 72 65 63 6f 72 |o the da|ta recor|
|00000320| 64 73 29 2e 0d 0a 20 2a | 2d 2d 2d 2d 2d 2d 2d 2d |ds)... *|--------|
|00000330| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000340| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000350| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000360| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000370| 2d 2d 2d 2a 2f 0d 0a 0d | 0a 23 69 6e 63 6c 75 64 |---*/...|.#includ|
|00000380| 65 20 22 63 62 74 72 65 | 65 2e 68 22 0d 0a 0d 0a |e "cbtre|e.h"....|
|00000390| 62 69 6e 61 72 79 73 72 | 28 70 62 6c 6b 2c 20 73 |binarysr|(pblk, s|
|000003a0| 72 63 68 6b 65 79 2c 20 | 73 6c 29 0d 0a 73 74 72 |rchkey, |sl)..str|
|000003b0| 75 63 74 20 62 74 69 64 | 78 62 6c 6b 20 2a 70 62 |uct btid|xblk *pb|
|000003c0| 6c 6b 3b 0d 0a 63 68 61 | 72 20 2a 73 72 63 68 6b |lk;..cha|r *srchk|
|000003d0| 65 79 3b 0d 0a 75 6e 73 | 69 67 6e 65 64 20 73 6c |ey;..uns|igned sl|
|000003e0| 3b 0d 0a 7b 0d 0a 20 20 | 20 65 78 74 65 72 6e 20 |;..{.. | extern |
|000003f0| 6c 6f 6e 67 20 6c 73 65 | 65 6b 28 29 3b 0d 0a 20 |long lse|ek();.. |
|00000400| 20 20 65 78 74 65 72 6e | 20 69 6e 74 20 20 20 20 | extern| int |
|00000410| 73 74 72 6e 63 6d 70 28 | 29 3b 0d 0a 20 20 20 69 |strncmp(|);.. i|
|00000420| 6e 74 20 6c 6f 77 20 3d | 20 30 3b 0d 0a 20 20 20 |nt low =| 0;.. |
|00000430| 69 6e 74 20 68 69 67 68 | 20 3d 20 70 62 6c 6b 2d |int high| = pblk-|
|00000440| 3e 63 65 6c 6c 69 63 6e | 74 20 2d 20 31 3b 0d 0a |>cellicn|t - 1;..|
|00000450| 20 20 20 69 6e 74 20 6d | 69 64 3b 0d 0a 20 20 20 | int m|id;.. |
|00000460| 69 6e 74 20 63 6f 6e 64 | 3b 0d 0a 0d 0a 20 20 20 |int cond|;.... |
|00000470| 77 68 69 6c 65 20 28 6c | 6f 77 20 3c 3d 20 68 69 |while (l|ow <= hi|
|00000480| 67 68 29 20 7b 0d 0a 20 | 20 20 20 20 20 6d 69 64 |gh) {.. | mid|
|00000490| 20 3d 20 28 6c 6f 77 20 | 2b 20 68 69 67 68 29 20 | = (low |+ high) |
|000004a0| 2f 20 32 3b 0d 0a 20 20 | 20 20 20 20 69 66 20 28 |/ 2;.. | if (|
|000004b0| 20 28 63 6f 6e 64 20 3d | 20 73 74 72 6e 63 6d 70 | (cond =| strncmp|
|000004c0| 28 73 72 63 68 6b 65 79 | 2c 20 70 62 6c 6b 2d 3e |(srchkey|, pblk->|
|000004d0| 62 74 70 61 67 65 5b 6d | 69 64 5d 2e 73 6b 65 79 |btpage[m|id].skey|
|000004e0| 6e 6d 65 2c 20 73 6c 29 | 20 29 20 3c 20 30 29 0d |nme, sl)| ) < 0).|
|000004f0| 0a 20 20 20 20 20 20 20 | 20 20 68 69 67 68 20 3d |. | high =|
|00000500| 20 6d 69 64 20 2d 20 31 | 3b 0d 0a 0d 0a 20 20 20 | mid - 1|;.... |
|00000510| 20 20 20 65 6c 73 65 20 | 69 66 20 28 63 6f 6e 64 | else |if (cond|
|00000520| 20 3e 20 30 29 0d 0a 20 | 20 20 20 20 20 20 20 20 | > 0).. | |
|00000530| 6c 6f 77 20 3d 20 6d 69 | 64 20 2b 20 31 3b 0d 0a |low = mi|d + 1;..|
|00000540| 0d 0a 20 20 20 20 20 20 | 65 6c 73 65 0d 0a 20 20 |.. |else.. |
|00000550| 20 20 20 20 7b 20 20 20 | 20 20 20 20 20 20 20 20 | { | |
|00000560| 2f 2a 20 66 6f 75 6e 64 | 20 28 70 61 72 74 69 61 |/* found| (partia|
|00000570| 6c 29 20 6d 61 74 63 68 | 2c 20 72 65 74 75 72 6e |l) match|, return|
|00000580| 20 46 49 52 53 54 20 64 | 75 70 20 20 20 20 2a 2f | FIRST d|up */|
|00000590| 0d 0a 20 20 20 20 20 20 | 20 20 20 77 68 69 6c 65 |.. | while|
|000005a0| 20 28 6d 69 64 2d 2d 20 | 3e 20 30 20 26 26 0d 0a | (mid-- |> 0 &&..|
|000005b0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 73 | | s|
|000005c0| 74 72 6e 63 6d 70 28 73 | 72 63 68 6b 65 79 2c 20 |trncmp(s|rchkey, |
|000005d0| 70 62 6c 6b 2d 3e 62 74 | 70 61 67 65 5b 6d 69 64 |pblk->bt|page[mid|
|000005e0| 5d 2e 73 6b 65 79 6e 6d | 65 2c 20 73 6c 29 20 3d |].skeynm|e, sl) =|
|000005f0| 3d 20 30 29 0d 0a 20 20 | 20 20 20 20 20 20 20 20 |= 0).. | |
|00000600| 20 20 3b 0d 0a 0d 0a 20 | 20 20 20 20 20 20 20 20 | ;.... | |
|00000610| 69 66 20 28 2b 2b 6d 69 | 64 20 3e 3d 20 70 62 6c |if (++mi|d >= pbl|
|00000620| 6b 2d 3e 63 65 6c 6c 69 | 63 6e 74 29 0d 0a 20 20 |k->celli|cnt).. |
|00000630| 20 20 20 20 20 20 20 20 | 20 20 72 65 74 75 72 6e | | return|
|00000640| 20 28 28 69 6e 74 29 28 | 70 62 6c 6b 2d 3e 63 65 | ((int)(|pblk->ce|
|00000650| 6c 6c 69 63 6e 74 20 2d | 20 31 29 29 3b 0d 0a 20 |llicnt -| 1));.. |
|00000660| 20 20 20 20 20 20 20 20 | 72 65 74 75 72 6e 28 6d | |return(m|
|00000670| 69 64 29 3b 0d 0a 20 20 | 20 20 20 20 7d 0d 0a 20 |id);.. | }.. |
|00000680| 20 20 7d 0d 0a 0d 0a 20 | 20 20 2f 2a 20 6d 61 74 | }.... | /* mat|
|00000690| 63 68 20 6e 6f 74 20 66 | 6f 75 6e 64 20 2a 2f 0d |ch not f|ound */.|
|000006a0| 0a 20 20 20 77 68 69 6c | 65 20 28 73 74 72 6e 63 |. whil|e (strnc|
|000006b0| 6d 70 28 73 72 63 68 6b | 65 79 2c 20 70 62 6c 6b |mp(srchk|ey, pblk|
|000006c0| 2d 3e 62 74 70 61 67 65 | 5b 6d 69 64 2b 2b 5d 2e |->btpage|[mid++].|
|000006d0| 73 6b 65 79 6e 6d 65 2c | 20 73 6c 29 20 3e 20 30 |skeynme,| sl) > 0|
|000006e0| 29 0d 0a 20 20 20 20 20 | 20 69 66 20 28 6d 69 64 |).. | if (mid|
|000006f0| 20 3e 3d 20 70 62 6c 6b | 2d 3e 63 65 6c 6c 69 63 | >= pblk|->cellic|
|00000700| 6e 74 29 20 20 20 20 20 | 20 20 2f 2a 20 63 68 65 |nt) | /* che|
|00000710| 63 6b 20 66 6f 72 20 61 | 72 72 61 79 20 75 70 70 |ck for a|rray upp|
|00000720| 65 72 20 62 6f 75 6e 64 | 73 20 20 20 2a 2f 0d 0a |er bound|s */..|
|00000730| 20 20 20 20 20 20 20 20 | 20 62 72 65 61 6b 3b 0d | | break;.|
|00000740| 0a 0d 0a 20 20 20 72 65 | 74 75 72 6e 20 28 2d 2d |... re|turn (--|
|00000750| 6d 69 64 29 3b 20 2f 2a | 20 72 65 74 75 72 6e 20 |mid); /*| return |
|00000760| 6c 6f 63 61 74 69 6f 6e | 20 6f 66 20 6e 65 78 74 |location| of next|
|00000770| 20 69 6e 64 65 78 20 6e | 6f 64 65 20 74 6f 20 66 | index n|ode to f|
|00000780| 6f 6c 6c 6f 77 20 2a 2f | 0d 0a 7d 0d 0a 0d 0a 2f |ollow */|..}..../|
|00000790| 2a 20 62 69 6e 61 72 79 | 20 73 65 61 72 63 68 20 |* binary| search |
|000007a0| 66 75 6e 63 74 69 6f 6e | 20 6f 66 20 74 79 70 65 |function| of type|
|000007b0| 20 31 20 28 64 61 74 61 | 20 70 61 67 65 20 70 6f | 1 (data| page po|
|000007c0| 69 6e 74 65 72 29 20 70 | 61 67 65 20 20 20 2a 2f |inter) p|age */|
|000007d0| 0d 0a 2f 2a 20 30 31 2f | 32 36 2f 38 35 20 2a 2f |../* 01/|26/85 */|
|000007e0| 0d 0a 0d 0a 62 69 6e 61 | 72 79 64 74 28 66 64 69 |....bina|rydt(fdi|
|000007f0| 64 78 2c 20 70 62 6c 6b | 2c 20 62 74 63 70 2c 20 |dx, pblk|, btcp, |
|00000800| 73 6c 2c 20 6d 61 74 63 | 68 2c 20 64 75 70 66 6c |sl, matc|h, dupfl|
|00000810| 67 29 0d 0a 69 6e 74 20 | 66 64 69 64 78 3b 0d 0a |g)..int |fdidx;..|
|00000820| 42 54 49 44 58 42 4c 4b | 20 2a 70 62 6c 6b 3b 0d |BTIDXBLK| *pblk;.|
|00000830| 0a 42 54 43 20 20 20 20 | 20 20 2a 62 74 63 70 3b |.BTC | *btcp;|
|00000840| 0d 0a 75 6e 73 69 67 6e | 65 64 20 73 6c 2c 20 2a |..unsign|ed sl, *|
|00000850| 6d 61 74 63 68 2c 20 2a | 64 75 70 66 6c 67 3b 0d |match, *|dupflg;.|
|00000860| 0a 7b 0d 0a 20 20 20 65 | 78 74 65 72 6e 20 6c 6f |.{.. e|xtern lo|
|00000870| 6e 67 20 6c 73 65 65 6b | 28 29 3b 0d 0a 20 20 20 |ng lseek|();.. |
|00000880| 65 78 74 65 72 6e 20 69 | 6e 74 20 20 73 74 72 6e |extern i|nt strn|
|00000890| 63 6d 70 28 29 2c 20 73 | 74 72 6c 65 6e 28 29 3b |cmp(), s|trlen();|
|000008a0| 0d 0a 20 20 20 65 78 74 | 65 72 6e 20 76 6f 69 64 |.. ext|ern void|
|000008b0| 20 66 72 65 65 28 29 3b | 0d 0a 20 20 20 65 78 74 | free();|.. ext|
|000008c0| 65 72 6e 20 63 68 61 72 | 20 2a 63 61 6c 6c 6f 63 |ern char| *calloc|
|000008d0| 28 29 3b 0d 0a 20 20 20 | 69 6e 74 20 20 20 6c 6f |();.. |int lo|
|000008e0| 77 20 3d 20 30 3b 0d 0a | 20 20 20 69 6e 74 20 20 |w = 0;..| int |
|000008f0| 20 68 69 67 68 20 3d 20 | 70 62 6c 6b 2d 3e 63 65 | high = |pblk->ce|
|00000900| 6c 6c 69 63 6e 74 20 2d | 20 31 3b 0d 0a 20 20 20 |llicnt -| 1;.. |
|00000910| 69 6e 74 20 20 20 6d 69 | 64 3b 0d 0a 20 20 20 69 |int mi|d;.. i|
|00000920| 6e 74 20 20 20 63 6f 6e | 64 3b 0d 0a 20 20 20 63 |nt con|d;.. c|
|00000930| 68 61 72 20 2a 6b 65 79 | 70 3b 0d 0a 20 20 20 69 |har *key|p;.. i|
|00000940| 6e 74 20 20 20 6b 65 79 | 70 6c 65 6e 3b 0d 0a 0d |nt key|plen;...|
|00000950| 0a 20 20 20 69 66 20 28 | 62 74 63 70 2d 3e 62 74 |. if (|btcp->bt|
|00000960| 73 76 6b 65 79 20 21 3d | 20 4e 55 4c 4c 29 0d 0a |svkey !=| NULL)..|
|00000970| 20 20 20 20 20 20 6b 65 | 79 70 20 3d 20 62 74 63 | ke|yp = btc|
|00000980| 70 2d 3e 62 74 73 76 6b | 65 79 3b 0d 0a 20 20 20 |p->btsvk|ey;.. |
|00000990| 65 6c 73 65 0d 0a 20 20 | 20 20 20 20 6b 65 79 70 |else.. | keyp|
|000009a0| 20 3d 20 62 74 63 70 2d | 3e 62 74 6b 65 79 3b 0d | = btcp-|>btkey;.|
|000009b0| 0a 20 20 20 6b 65 79 70 | 6c 65 6e 20 3d 20 73 74 |. keyp|len = st|
|000009c0| 72 6c 65 6e 28 6b 65 79 | 70 29 3b 0d 0a 0d 0a 20 |rlen(key|p);.... |
|000009d0| 20 20 77 68 69 6c 65 20 | 28 6c 6f 77 20 3c 3d 20 | while |(low <= |
|000009e0| 68 69 67 68 29 0d 0a 20 | 20 20 7b 0d 0a 20 20 20 |high).. | {.. |
|000009f0| 20 20 20 6d 69 64 20 3d | 20 28 6c 6f 77 20 2b 20 | mid =| (low + |
|00000a00| 68 69 67 68 29 20 2f 20 | 32 3b 20 20 20 20 20 20 |high) / |2; |
|00000a10| 20 20 20 20 20 2f 2a 20 | 73 65 74 20 73 65 61 72 | /* |set sear|
|00000a20| 63 68 20 73 74 61 72 74 | 69 6e 67 20 70 6f 69 6e |ch start|ing poin|
|00000a30| 74 20 2a 2f 0d 0a 0d 0a | 20 20 20 20 20 20 69 66 |t */....| if|
|00000a40| 20 28 28 63 6f 6e 64 20 | 3d 20 73 74 72 6e 63 6d | ((cond |= strncm|
|00000a50| 70 28 6b 65 79 70 2c 20 | 70 62 6c 6b 2d 3e 62 74 |p(keyp, |pblk->bt|
|00000a60| 70 61 67 65 5b 6d 69 64 | 5d 2e 73 6b 65 79 6e 6d |page[mid|].skeynm|
|00000a70| 65 2c 20 6b 65 79 70 6c | 65 6e 29 29 20 3c 20 30 |e, keypl|en)) < 0|
|00000a80| 29 0d 0a 20 20 20 20 20 | 20 20 20 20 68 69 67 68 |).. | high|
|00000a90| 20 3d 20 6d 69 64 20 2d | 20 31 3b 20 20 20 20 20 | = mid -| 1; |
|00000aa0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000ab0| 2f 2a 20 73 65 61 72 63 | 68 20 6c 6f 77 65 72 20 |/* searc|h lower |
|00000ac0| 68 61 6c 66 20 2a 2f 0d | 0a 0d 0a 20 20 20 20 20 |half */.|... |
|00000ad0| 20 65 6c 73 65 20 69 66 | 28 63 6f 6e 64 20 3e 20 | else if|(cond > |
|00000ae0| 30 29 0d 0a 20 20 20 20 | 20 20 20 20 20 6c 6f 77 |0).. | low|
|00000af0| 20 3d 20 6d 69 64 20 2b | 20 31 3b 20 20 20 20 20 | = mid +| 1; |
|00000b00| 20 20 20 20 20 20 20 20 | 20 2f 2a 20 73 65 61 72 | | /* sear|
|00000b10| 63 68 20 75 70 70 65 72 | 20 68 61 6c 66 20 2a 2f |ch upper| half */|
|00000b20| 0d 0a 0d 0a 20 20 20 20 | 20 20 65 6c 73 65 0d 0a |.... | else..|
|00000b30| 20 20 20 20 20 20 7b 20 | 20 20 20 20 20 20 20 20 | { | |
|00000b40| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000b50| 20 20 20 20 20 20 2f 2a | 20 46 4f 55 4e 44 20 4d | /*| FOUND M|
|00000b60| 41 54 43 48 3a 20 63 68 | 65 63 6b 20 66 6f 72 20 |ATCH: ch|eck for |
|00000b70| 64 75 70 73 20 2a 2f 0d | 0a 20 20 20 20 20 20 20 |dups */.|. |
|00000b80| 20 20 2a 64 75 70 66 6c | 67 20 3d 20 30 3b 0d 0a | *dupfl|g = 0;..|
|00000b90| 0d 0a 20 20 20 20 20 20 | 20 20 20 69 66 20 28 6d |.. | if (m|
|00000ba0| 69 64 20 3c 20 70 62 6c | 6b 2d 3e 63 65 6c 6c 69 |id < pbl|k->celli|
|00000bb0| 63 6e 74 20 2d 20 31 29 | 20 20 20 2f 2a 20 63 68 |cnt - 1)| /* ch|
|00000bc0| 65 63 6b 20 75 70 70 65 | 72 20 62 6f 75 6e 64 73 |eck uppe|r bounds|
|00000bd0| 20 2a 2f 0d 0a 20 20 20 | 20 20 20 20 20 20 7b 0d | */.. | {.|
|00000be0| 0a 20 20 20 20 20 20 20 | 20 20 20 20 20 69 66 20 |. | if |
|00000bf0| 28 73 74 72 6e 63 6d 70 | 28 62 74 63 70 2d 3e 62 |(strncmp|(btcp->b|
|00000c00| 74 6b 65 79 2c 20 70 62 | 6c 6b 2d 3e 62 74 70 61 |tkey, pb|lk->btpa|
|00000c10| 67 65 5b 6d 69 64 20 2b | 20 31 5d 2e 73 6b 65 79 |ge[mid +| 1].skey|
|00000c20| 6e 6d 65 2c 20 73 6c 29 | 20 3d 3d 20 30 29 0d 0a |nme, sl)| == 0)..|
|00000c30| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 2a | | *|
|00000c40| 64 75 70 66 6c 67 20 3d | 20 31 3b 20 20 20 20 20 |dupflg =| 1; |
|00000c50| 20 20 20 20 20 20 20 20 | 20 20 2f 2a 20 6c 6f 6f | | /* loo|
|00000c60| 6b 20 72 69 67 68 74 20 | 66 6f 72 20 64 75 70 73 |k right |for dups|
|00000c70| 20 20 20 20 2a 2f 0d 0a | 20 20 20 20 20 20 20 20 | */..| |
|00000c80| 20 7d 0d 0a 20 20 20 20 | 20 20 20 20 20 65 6c 73 | }.. | els|
|00000c90| 65 20 69 66 20 28 70 62 | 6c 6b 2d 3e 66 77 64 70 |e if (pb|lk->fwdp|
|00000ca0| 61 67 65 20 3e 20 30 4c | 29 20 2f 2a 20 68 61 76 |age > 0L|) /* hav|
|00000cb0| 65 20 74 6f 20 63 68 65 | 63 6b 20 72 69 67 68 74 |e to che|ck right|
|00000cc0| 20 6e 65 69 67 68 62 6f | 72 20 2a 2f 0d 0a 20 20 | neighbo|r */.. |
|00000cd0| 20 20 20 20 20 20 20 7b | 0d 0a 20 20 20 20 20 20 | {|.. |
|00000ce0| 20 20 20 20 20 20 42 54 | 49 44 58 42 4c 4b 20 2a | BT|IDXBLK *|
|00000cf0| 6e 65 69 67 68 62 6f 72 | 3b 20 20 20 20 20 20 20 |neighbor|; |
|00000d00| 2f 2a 20 66 6f 72 20 72 | 69 67 68 74 20 69 6e 64 |/* for r|ight ind|
|00000d10| 65 78 20 62 6c 6b 20 2a | 2f 0d 0a 20 20 20 20 20 |ex blk *|/.. |
|00000d20| 20 20 20 20 20 20 20 69 | 6e 74 20 20 20 20 20 20 | i|nt |
|00000d30| 20 69 3b 0d 0a 0d 0a 20 | 20 20 20 20 20 20 20 20 | i;.... | |
|00000d40| 20 20 20 69 20 3d 20 73 | 69 7a 65 6f 66 28 42 54 | i = s|izeof(BT|
|00000d50| 49 44 58 42 4c 4b 29 20 | 2b 20 62 74 63 70 2d 3e |IDXBLK) |+ btcp->|
|00000d60| 62 74 63 65 6c 6c 73 20 | 2a 20 73 69 7a 65 6f 66 |btcells |* sizeof|
|00000d70| 28 42 54 49 44 58 29 3b | 0d 0a 20 20 20 20 20 20 |(BTIDX);|.. |
|00000d80| 20 20 20 20 20 20 69 66 | 20 28 28 63 68 61 72 20 | if| ((char |
|00000d90| 2a 29 28 6e 65 69 67 68 | 62 6f 72 20 3d 20 28 42 |*)(neigh|bor = (B|
|00000da0| 54 49 44 58 42 4c 4b 20 | 2a 29 63 61 6c 6c 6f 63 |TIDXBLK |*)calloc|
|00000db0| 28 69 2c 20 53 5a 43 48 | 41 52 29 29 20 3d 3d 20 |(i, SZCH|AR)) == |
|00000dc0| 4e 55 4c 4c 29 0d 0a 20 | 20 20 20 20 20 20 20 20 |NULL).. | |
|00000dd0| 20 20 20 20 20 20 63 6b | 65 72 72 6f 72 28 2d 20 | ck|error(- |
|00000de0| 43 4b 5f 4e 4f 4d 45 4d | 2c 20 22 31 30 38 22 29 |CK_NOMEM|, "108")|
|00000df0| 3b 0d 0a 20 20 20 20 20 | 20 20 20 20 20 20 20 6e |;.. | n|
|00000e00| 65 69 67 68 62 6f 72 2d | 3e 62 6c 6b 61 6c 6c 6f |eighbor-|>blkallo|
|00000e10| 63 20 3d 20 30 3b 0d 0a | 20 20 20 20 20 20 20 20 |c = 0;..| |
|00000e20| 20 20 20 20 67 65 74 69 | 64 78 72 28 66 64 69 64 | geti|dxr(fdid|
|00000e30| 78 2c 20 70 62 6c 6b 2d | 3e 66 77 64 70 61 67 65 |x, pblk-|>fwdpage|
|00000e40| 2c 20 6e 65 69 67 68 62 | 6f 72 2c 20 62 74 63 70 |, neighb|or, btcp|
|00000e50| 2d 3e 62 74 69 64 78 6c | 65 6e 2c 20 73 6c 29 3b |->btidxl|en, sl);|
|00000e60| 0d 0a 20 20 20 20 20 20 | 20 20 20 20 20 20 69 66 |.. | if|
|00000e70| 20 28 73 74 72 6e 63 6d | 70 28 62 74 63 70 2d 3e | (strncm|p(btcp->|
|00000e80| 62 74 6b 65 79 2c 20 6e | 65 69 67 68 62 6f 72 2d |btkey, n|eighbor-|
|00000e90| 3e 62 74 70 61 67 65 5b | 30 5d 2e 73 6b 65 79 6e |>btpage[|0].skeyn|
|00000ea0| 6d 65 2c 20 73 6c 29 20 | 3d 3d 20 30 29 0d 0a 20 |me, sl) |== 0).. |
|00000eb0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 2a 64 | | *d|
|00000ec0| 75 70 66 6c 67 20 3d 20 | 31 3b 20 20 20 20 20 20 |upflg = |1; |
|00000ed0| 20 20 20 20 20 20 2f 2a | 20 64 75 70 6c 69 63 61 | /*| duplica|
|00000ee0| 74 65 20 6b 65 79 20 66 | 6f 75 6e 64 20 69 6e 20 |te key f|ound in |
|00000ef0| 72 69 67 68 74 20 62 6c | 6b 20 2a 2f 0d 0a 20 20 |right bl|k */.. |
|00000f00| 20 20 20 20 20 20 20 20 | 20 20 66 72 65 65 6b 65 | | freeke|
|00000f10| 79 73 28 6e 65 69 67 68 | 62 6f 72 29 3b 0d 0a 20 |ys(neigh|bor);.. |
|00000f20| 20 20 20 20 20 20 20 20 | 20 20 20 46 52 45 45 28 | | FREE(|
|00000f30| 6e 65 69 67 68 62 6f 72 | 29 3b 0d 0a 20 20 20 20 |neighbor|);.. |
|00000f40| 20 20 20 20 20 7d 0d 0a | 0d 0a 20 20 20 20 20 20 | }..|.. |
|00000f50| 20 20 20 2f 2a 20 63 68 | 65 63 6b 20 61 72 72 61 | /* ch|eck arra|
|00000f60| 79 20 6c 6f 77 65 72 20 | 62 6f 75 6e 64 73 20 20 |y lower |bounds |
|00000f70| 20 2a 2f 0d 0a 20 20 20 | 20 20 20 20 20 20 77 68 | */.. | wh|
|00000f80| 69 6c 65 20 28 6d 69 64 | 2d 2d 20 3e 20 30 20 26 |ile (mid|-- > 0 &|
|00000f90| 26 20 73 74 72 6e 63 6d | 70 28 62 74 63 70 2d 3e |& strncm|p(btcp->|
|00000fa0| 62 74 6b 65 79 2c 20 70 | 62 6c 6b 2d 3e 62 74 70 |btkey, p|blk->btp|
|00000fb0| 61 67 65 5b 6d 69 64 5d | 2e 73 6b 65 79 6e 6d 65 |age[mid]|.skeynme|
|00000fc0| 2c 0d 0a 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |,.. | |
|00000fd0| 20 20 73 6c 29 20 3d 3d | 20 30 29 0d 0a 20 20 20 | sl) ==| 0).. |
|00000fe0| 20 20 20 20 20 20 20 20 | 20 2a 64 75 70 66 6c 67 | | *dupflg|
|00000ff0| 20 3d 20 31 3b 20 20 20 | 20 20 20 2f 2a 20 6c 6f | = 1; | /* lo|
|00001000| 6f 6b 20 41 4c 4c 20 54 | 48 45 20 57 41 59 20 4c |ok ALL T|HE WAY L|
|00001010| 45 46 54 20 66 6f 72 20 | 64 75 70 73 20 20 20 20 |EFT for |dups |
|00001020| 20 20 2a 2f 0d 0a 20 20 | 20 20 20 20 20 20 20 2a | */.. | *|
|00001030| 6d 61 74 63 68 20 3d 20 | 31 3b 0d 0a 20 20 20 20 |match = |1;.. |
|00001040| 20 20 20 20 20 72 65 74 | 75 72 6e 28 2b 2b 6d 69 | ret|urn(++mi|
|00001050| 64 29 3b 20 20 20 2f 2a | 20 72 65 74 75 72 6e 20 |d); /*| return |
|00001060| 4c 4f 57 45 53 54 20 6d | 61 74 63 68 20 6c 6f 63 |LOWEST m|atch loc|
|00001070| 61 74 69 6f 6e 20 2a 2f | 0d 0a 20 20 20 20 20 20 |ation */|.. |
|00001080| 7d 0d 0a 20 20 20 7d 0d | 0a 0d 0a 20 20 20 2f 2a |}.. }.|... /*|
|00001090| 20 4e 4f 20 4d 41 54 43 | 48 20 46 4f 55 4e 44 3a | NO MATC|H FOUND:|
|000010a0| 20 72 65 74 75 72 6e 20 | 49 4e 53 45 52 54 20 6c | return |INSERT l|
|000010b0| 6f 63 61 74 69 6f 6e 20 | 2a 2f 0d 0a 20 20 20 77 |ocation |*/.. w|
|000010c0| 68 69 6c 65 20 28 73 74 | 72 6e 63 6d 70 28 6b 65 |hile (st|rncmp(ke|
|000010d0| 79 70 2c 20 70 62 6c 6b | 2d 3e 62 74 70 61 67 65 |yp, pblk|->btpage|
|000010e0| 5b 6d 69 64 2b 2b 5d 2e | 73 6b 65 79 6e 6d 65 2c |[mid++].|skeynme,|
|000010f0| 20 6b 65 79 70 6c 65 6e | 29 20 3e 20 30 29 0d 0a | keyplen|) > 0)..|
|00001100| 20 20 20 20 20 20 69 66 | 20 28 6d 69 64 20 3e 20 | if| (mid > |
|00001110| 70 62 6c 6b 2d 3e 63 65 | 6c 6c 69 63 6e 74 29 20 |pblk->ce|llicnt) |
|00001120| 20 20 20 20 20 20 2f 2a | 20 63 68 65 63 6b 20 66 | /*| check f|
|00001130| 6f 72 20 61 72 72 61 79 | 20 75 70 70 65 72 20 62 |or array| upper b|
|00001140| 6f 75 6e 64 73 20 2a 2f | 0d 0a 20 20 20 20 20 20 |ounds */|.. |
|00001150| 20 20 20 62 72 65 61 6b | 3b 0d 0a 20 20 20 2a 6d | break|;.. *m|
|00001160| 61 74 63 68 20 3d 20 30 | 3b 0d 0a 20 20 20 72 65 |atch = 0|;.. re|
|00001170| 74 75 72 6e 28 2d 2d 6d | 69 64 29 3b 20 20 20 2f |turn(--m|id); /|
|00001180| 2a 20 72 65 74 75 72 6e | 20 6c 6f 63 61 74 69 6f |* return| locatio|
|00001190| 6e 20 74 6f 20 69 6e 73 | 65 72 74 20 6e 65 77 20 |n to ins|ert new |
|000011a0| 72 65 63 6f 72 64 20 20 | 20 20 20 2a 2f 0d 0a 7d |record | */..}|
|000011b0| 0d 0a | |.. | |
+--------+-------------------------+-------------------------+--------+--------+