home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c006 / 1.ddi / CBTREE.C < prev    next >
DOS BACKUP file  |  1988-03-19  |  7.8 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: CBTREE.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\CBTREE.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 42 54 | 52 45 45 2e 43 00 00 00 |RARY\CBT|REE.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 19 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 | 2f 2a 20 20 43 20 42 20 |ved */..|/* C B |
|000000d0| 54 20 52 20 45 20 45 20 | 2e 20 43 20 20 20 20 20 |T R E E |. C |
|000000e0| 38 2f 30 32 2f 38 34 20 | 20 20 20 20 20 20 20 20 |8/02/84 | |
|000000f0| 20 20 20 20 20 20 20 20 | 20 20 20 20 2a 2f 0d 0a | | */..|
|00000100| 0d 0a 2f 2a 20 54 48 49 | 53 20 50 52 4f 47 52 41 |../* THI|S PROGRA|
|00000110| 4d 20 42 45 4c 4f 4e 47 | 53 20 54 4f 20 57 41 4c |M BELONG|S TO WAL|
|00000120| 54 45 52 20 4c 2e 20 50 | 45 41 43 4f 43 4b 2e 20 |TER L. P|EACOCK. |
|00000130| 20 49 54 20 49 53 20 43 | 4f 4e 53 49 44 45 52 45 | IT IS C|ONSIDERE|
|00000140| 44 20 41 20 54 52 41 44 | 45 20 2a 2f 0d 0a 2f 2a |D A TRAD|E */../*|
|00000150| 20 53 45 43 52 45 54 20 | 41 4e 44 20 49 53 20 4e | SECRET |AND IS N|
|00000160| 4f 54 20 54 4f 20 42 45 | 20 44 49 56 55 4c 47 45 |OT TO BE| DIVULGE|
|00000170| 44 20 4f 52 20 55 53 45 | 44 20 42 59 20 50 41 52 |D OR USE|D BY PAR|
|00000180| 54 49 45 53 20 57 48 4f | 20 48 41 56 45 20 4e 4f |TIES WHO| HAVE NO|
|00000190| 54 20 20 20 20 2a 2f 0d | 0a 2f 2a 20 52 45 43 45 |T */.|./* RECE|
|000001a0| 49 56 45 44 20 57 52 49 | 54 54 45 4e 20 41 55 54 |IVED WRI|TTEN AUT|
|000001b0| 48 4f 52 49 5a 41 54 49 | 4f 4e 20 46 52 4f 4d 20 |HORIZATI|ON FROM |
|000001c0| 54 48 45 20 4f 57 4e 45 | 52 2e 20 20 20 20 20 20 |THE OWNE|R. |
|000001d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 2a 2f 0d | | */.|
|000001e0| 0a 2f 2a 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 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 20 |--------|------- |
|00000230| 0d 0a 20 2a 20 54 68 65 | 20 64 72 69 76 65 72 20 |.. * The| driver |
|00000240| 6d 6f 64 75 6c 65 2c 20 | 63 62 74 72 65 65 2e 28 |module, |cbtree.(|
|00000250| 29 2c 20 69 73 20 74 68 | 65 20 70 72 69 6d 61 72 |), is th|e primar|
|00000260| 79 20 6d 6f 64 75 6c 65 | 20 75 73 65 64 20 74 6f |y module| used to|
|00000270| 20 61 63 63 65 73 73 20 | 74 68 65 20 0d 0a 20 2a | access |the .. *|
|00000280| 20 42 2b 74 72 65 65 2e | 20 20 20 54 68 69 73 20 | B+tree.| This |
|00000290| 6d 6f 64 75 6c 65 20 70 | 72 6f 76 69 64 65 73 20 |module p|rovides |
|000002a0| 61 20 73 69 6e 67 6c 65 | 20 66 75 6e 63 74 69 6f |a single| functio|
|000002b0| 6e 20 63 61 6c 6c 20 69 | 6e 74 65 72 66 61 63 65 |n call i|nterface|
|000002c0| 20 0d 0a 20 2a 20 74 6f | 20 74 68 65 20 43 42 54 | .. * to| the CBT|
|000002d0| 52 45 45 20 66 75 6e 63 | 74 69 6f 6e 73 2e 20 20 |REE func|tions. |
|000002e0| 54 68 65 20 63 62 74 72 | 65 65 28 29 20 64 72 69 |The cbtr|ee() dri|
|000002f0| 76 65 72 20 6d 6f 64 75 | 6c 65 20 64 65 74 65 72 |ver modu|le deter|
|00000300| 6d 69 6e 65 73 20 77 68 | 69 63 68 20 0d 0a 20 2a |mines wh|ich .. *|
|00000310| 20 66 75 6e 63 74 69 6f | 6e 20 74 6f 20 69 6e 76 | functio|n to inv|
|00000320| 6f 6b 65 20 61 75 74 6f | 6d 61 74 69 63 61 6c 6c |oke auto|maticall|
|00000330| 79 2c 20 62 61 73 65 64 | 20 6f 6e 20 74 68 65 20 |y, based| on the |
|00000340| 6f 70 65 72 61 74 69 6f | 6e 20 74 68 61 74 20 69 |operatio|n that i|
|00000350| 73 20 70 61 73 73 65 64 | 20 69 6e 20 0d 0a 20 2a |s passed| in .. *|
|00000360| 20 62 74 63 6f 6d 6d 6f | 20 62 74 6f 70 74 79 70 | btcommo| btoptyp|
|00000370| 65 20 6d 65 6d 62 65 72 | 2e 20 0d 0a 20 2a 0d 0a |e member|. .. *..|
|00000380| 20 2a 20 54 68 65 20 66 | 75 6e 63 74 69 6f 6e 73 | * The f|unctions|
|00000390| 20 61 72 65 20 62 75 69 | 6c 74 20 6f 6e 20 74 68 | are bui|lt on th|
|000003a0| 65 20 6c 6f 77 65 72 2d | 6c 65 76 65 6c 20 42 2b |e lower-|level B+|
|000003b0| 74 72 65 65 20 6d 61 69 | 6e 74 65 6e 61 6e 63 65 |tree mai|ntenance|
|000003c0| 20 66 75 6e 63 74 69 6f | 6e 73 20 77 68 69 63 68 | functio|ns which|
|000003d0| 0d 0a 20 2a 20 61 72 65 | 20 63 6f 6d 70 6c 65 74 |.. * are| complet|
|000003e0| 65 6c 79 20 6d 61 6e 61 | 67 65 64 20 62 79 20 74 |ely mana|ged by t|
|000003f0| 68 65 20 63 62 74 72 65 | 65 28 29 20 64 72 69 76 |he cbtre|e() driv|
|00000400| 65 72 20 6d 6f 64 75 6c | 65 2e 20 20 63 62 74 72 |er modul|e. cbtr|
|00000410| 65 65 28 29 20 72 65 74 | 75 72 6e 73 20 61 20 0d |ee() ret|urns a .|
|00000420| 0a 20 2a 20 72 65 73 75 | 6c 74 20 63 6f 64 65 20 |. * resu|lt code |
|00000430| 74 6f 20 69 6e 64 69 63 | 61 74 65 20 74 68 65 20 |to indic|ate the |
|00000440| 73 74 61 74 75 73 20 6f | 66 20 74 68 65 20 6f 70 |status o|f the op|
|00000450| 65 72 61 74 69 6f 6e 2e | 20 20 20 54 68 65 20 72 |eration.| The r|
|00000460| 65 73 75 6c 74 20 63 6f | 64 65 73 20 61 72 65 20 |esult co|des are |
|00000470| 0d 0a 20 2a 20 64 65 66 | 69 6e 65 64 20 69 6e 20 |.. * def|ined in |
|00000480| 74 68 65 20 63 62 74 72 | 65 65 2e 68 20 66 69 6c |the cbtr|ee.h fil|
|00000490| 65 20 61 6e 64 20 77 65 | 72 65 20 64 65 73 63 72 |e and we|re descr|
|000004a0| 69 62 65 64 20 69 6e 20 | 50 41 52 54 20 49 49 49 |ibed in |PART III|
|000004b0| 20 6f 66 20 74 68 65 20 | 6d 61 6e 75 61 6c 2e 0d | of the |manual..|
|000004c0| 0a 20 2a 0d 0a 20 2a 20 | 41 66 74 65 72 20 74 68 |. *.. * |After th|
|000004d0| 65 20 63 61 6c 6c 20 74 | 6f 20 43 42 54 52 45 45 |e call t|o CBTREE|
|000004e0| 2c 20 74 68 65 20 72 65 | 63 6f 72 64 20 6c 6f 63 |, the re|cord loc|
|000004f0| 61 74 69 6f 6e 20 69 73 | 20 72 65 74 75 72 6e 65 |ation is| returne|
|00000500| 64 20 69 6e 20 62 74 63 | 6f 6d 6d 6f 20 62 74 6c |d in btc|ommo btl|
|00000510| 6f 63 2c 0d 0a 20 2a 20 | 75 6e 6c 65 73 73 20 61 |oc,.. * |unless a|
|00000520| 20 62 6c 6f 63 6b 20 72 | 65 74 72 69 65 76 61 6c | block r|etrieval|
|00000530| 20 63 61 6c 6c 20 28 47 | 45 54 41 4c 4c 20 6f 72 | call (G|ETALL or|
|00000540| 20 47 45 54 53 45 51 29 | 20 69 73 20 72 65 71 75 | GETSEQ)| is requ|
|00000550| 65 73 74 65 64 2c 20 69 | 6e 20 77 68 69 63 68 20 |ested, i|n which |
|00000560| 0d 0a 20 2a 20 63 61 73 | 65 20 74 68 65 20 72 65 |.. * cas|e the re|
|00000570| 63 6f 72 64 20 6c 6f 63 | 61 74 69 6f 6e 73 20 77 |cord loc|ations w|
|00000580| 69 6c 6c 20 62 65 20 72 | 65 74 75 72 6e 65 64 20 |ill be r|eturned |
|00000590| 69 6e 20 74 68 65 20 62 | 74 63 6f 6d 6d 6f 20 61 |in the b|tcommo a|
|000005a0| 72 72 61 79 20 62 74 72 | 65 63 6e 75 6d 2e 0d 0a |rray btr|ecnum...|
|000005b0| 20 2a 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d | *------|--------|
|000005c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000005d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000005e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000005f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2a 2f 0d |--------|-----*/.|
|00000600| 0a 0d 0a 23 69 6e 63 6c | 75 64 65 20 22 63 62 74 |...#incl|ude "cbt|
|00000610| 72 65 65 2e 68 22 0d 0a | 0d 0a 23 69 66 20 43 49 |ree.h"..|..#if CI|
|00000620| 20 7c 20 44 43 0d 0a 23 | 65 6c 73 65 0d 0a 23 69 | | DC..#|else..#i|
|00000630| 6e 63 6c 75 64 65 20 3c | 63 74 79 70 65 2e 68 3e |nclude <|ctype.h>|
|00000640| 0d 0a 23 65 6e 64 69 66 | 0d 0a 0d 0a 6c 6f 6e 67 |..#endif|....long|
|00000650| 20 69 6e 74 20 6c 6f 63 | 6b 6c 69 73 74 5b 32 30 | int loc|klist[20|
|00000660| 5d 3b 0d 0a 69 6e 74 20 | 6c 6f 63 6b 70 74 72 3b |];..int |lockptr;|
|00000670| 0d 0a 0d 0a 69 6e 74 20 | 63 62 74 72 65 65 28 66 |....int |cbtree(f|
|00000680| 64 64 74 61 2c 20 66 64 | 69 64 78 2c 20 62 74 63 |ddta, fd|idx, btc|
|00000690| 70 29 0d 0a 69 6e 74 20 | 66 64 64 74 61 2c 20 66 |p)..int |fddta, f|
|000006a0| 64 69 64 78 3b 0d 0a 42 | 54 43 20 2a 62 74 63 70 |didx;..B|TC *btcp|
|000006b0| 3b 0d 0a 7b 0d 0a 20 20 | 20 65 78 74 65 72 6e 20 |;..{.. | extern |
|000006c0| 6c 6f 6e 67 20 6c 73 65 | 65 6b 28 29 2c 20 67 65 |long lse|ek(), ge|
|000006d0| 74 72 6f 6f 74 28 29 2c | 20 70 6f 70 74 6f 70 28 |troot(),| poptop(|
|000006e0| 29 2c 20 70 75 73 68 64 | 6f 77 6e 28 29 3b 0d 0a |), pushd|own();..|
|000006f0| 20 20 20 65 78 74 65 72 | 6e 20 63 68 61 72 20 2a | exter|n char *|
|00000700| 73 74 72 73 61 76 65 28 | 29 2c 20 2a 63 61 6c 6c |strsave(|), *call|
|00000710| 6f 63 28 29 2c 20 2a 6d | 61 6c 6c 6f 63 28 29 2c |oc(), *m|alloc(),|
|00000720| 20 2a 73 74 72 63 70 79 | 28 29 2c 20 2a 73 74 72 | *strcpy|(), *str|
|00000730| 6e 6e 63 70 79 28 29 3b | 0d 0a 20 20 20 65 78 74 |nncpy();|.. ext|
|00000740| 65 72 6e 20 76 6f 69 64 | 20 66 72 65 65 28 29 3b |ern void| free();|
|00000750| 0d 0a 20 20 20 65 78 74 | 65 72 6e 20 69 6e 74 20 |.. ext|ern int |
|00000760| 73 74 72 6c 65 6e 28 29 | 2c 20 62 74 72 67 65 74 |strlen()|, btrget|
|00000770| 73 28 29 2c 20 77 72 61 | 70 5f 68 64 72 28 29 3b |s(), wra|p_hdr();|
|00000780| 0d 0a 20 20 20 42 54 49 | 44 58 42 4c 4b 20 2a 69 |.. BTI|DXBLK *i|
|00000790| 64 78 62 6c 6b 3b 0d 0a | 20 20 20 6c 6f 6e 67 20 |dxblk;..| long |
|000007a0| 70 6f 73 2c 20 6e 6f 64 | 65 2c 20 72 6f 6f 74 70 |pos, nod|e, rootp|
|000007b0| 74 72 3b 0d 0a 20 20 20 | 63 68 61 72 20 2a 6b 65 |tr;.. |char *ke|
|000007c0| 79 70 3b 20 20 20 2f 2a | 20 61 20 6b 65 79 20 70 |yp; /*| a key p|
|000007d0| 6f 69 6e 74 65 72 20 66 | 6f 72 20 67 65 6e 65 72 |ointer f|or gener|
|000007e0| 61 6c 20 75 73 65 20 2a | 2f 0d 0a 20 20 20 69 6e |al use *|/.. in|
|000007f0| 74 20 6c 6b 2c 20 6c 6f | 63 6b 63 68 6b 2c 20 68 |t lk, lo|ckchk, h|
|00000800| 64 72 6c 6f 63 2c 20 72 | 65 74 63 6f 64 65 3b 0d |drloc, r|etcode;.|
|00000810| 0a 20 20 20 75 6e 73 69 | 67 6e 65 64 20 73 6c 2c |. unsi|gned sl,|
|00000820| 20 64 75 70 66 6c 67 2c | 20 6d 61 74 63 68 3b 0d | dupflg,| match;.|
|00000830| 0a 20 20 20 72 65 67 69 | 73 74 65 72 20 69 6e 74 |. regi|ster int|
|00000840| 20 69 3b 0d 0a 0d 0a 20 | 20 20 6c 6f 63 6b 70 74 | i;.... | lockpt|
|00000850| 72 20 3d 20 30 3b 0d 0a | 20 20 20 69 20 3d 20 73 |r = 0;..| i = s|
|00000860| 69 7a 65 6f 66 28 42 54 | 49 44 58 42 4c 4b 29 20 |izeof(BT|IDXBLK) |
|00000870| 2b 20 62 74 63 70 2d 3e | 62 74 63 65 6c 6c 73 20 |+ btcp->|btcells |
|00000880| 2a 20 73 69 7a 65 6f 66 | 28 42 54 49 44 58 29 3b |* sizeof|(BTIDX);|
|00000890| 0d 0a 20 20 20 69 66 20 | 28 28 63 68 61 72 20 2a |.. if |((char *|
|000008a0| 29 28 69 64 78 62 6c 6b | 20 3d 20 28 42 54 49 44 |)(idxblk| = (BTID|
|000008b0| 58 42 4c 4b 20 2a 29 63 | 61 6c 6c 6f 63 28 69 2c |XBLK *)c|alloc(i,|
|000008c0| 20 53 5a 43 48 41 52 29 | 29 20 3d 3d 20 4e 55 4c | SZCHAR)|) == NUL|
|000008d0| 4c 29 0d 0a 20 20 20 20 | 20 20 63 6b 65 72 72 6f |L).. | ckerro|
|000008e0| 72 28 2d 20 43 4b 5f 4e | 4f 4d 45 4d 2c 20 22 34 |r(- CK_N|OMEM, "4|
|000008f0| 30 22 29 3b 0d 0a 20 20 | 20 62 74 63 70 2d 3e 62 |0");.. | btcp->b|
|00000900| 74 6b 65 79 5b 62 74 63 | 70 2d 3e 62 74 6b 65 79 |tkey[btc|p->btkey|
|00000910| 6c 65 6e 5d 20 3d 20 4e | 55 4c 3b 20 20 20 20 2f |len] = N|UL; /|
|00000920| 2a 20 6d 61 6b 65 20 73 | 75 72 65 20 77 65 20 68 |* make s|ure we h|
|00000930| 61 76 65 20 45 4f 53 20 | 2a 2f 0d 0a 0d 0a 20 20 |ave EOS |*/.... |
|00000940| 20 2f 2a 20 2a 20 2a 20 | 2a 20 2a 20 2a 20 2a 20 | /* * * |* * * * |
|00000950| 2a 20 2a 20 2a 20 2a 20 | 2a 20 2a 20 2a 20 2a 20 |* * * * |* * * * |
|00000960| 2a 20 2a 20 2a 20 2a 20 | 2a 20 2a 20 2a 20 2a 20 |* * * * |* * * * |
|00000970| 2a 20 2a 20 2a 20 2a 20 | 2a 20 2a 20 2a 20 2a 20 |* * * * |* * * * |
|00000980| 2a 20 2a 20 2a 20 2a 20 | 2a 2f 0d 0a 20 20 20 2f |* * * * |*/.. /|
|00000990| 2a 20 72 65 63 6f 72 64 | 20 6c 6f 63 6b 69 6e 67 |* record| locking|
|000009a0| 20 69 73 20 61 76 61 69 | 6c 61 62 6c 65 20 76 69 | is avai|lable vi|
|000009b0| 61 20 74 68 65 20 66 75 | 6e 63 74 69 6f 6e 20 6c |a the fu|nction l|
|000009c0| 6f 63 6b 75 6e 6c 6b 28 | 29 2e 20 20 20 20 20 20 |ockunlk(|). |
|000009d0| 20 20 2a 2f 0d 0a 20 20 | 20 2f 2a 20 6c 6f 63 6b | */.. | /* lock|
|000009e0| 75 6e 6c 6b 28 29 20 6d | 75 73 74 20 62 65 20 6d |unlk() m|ust be m|
|000009f0| 6f 64 69 66 69 65 64 20 | 74 6f 20 66 75 6e 63 74 |odified |to funct|
|00000a00| 69 6f 6e 20 6f 6e 20 79 | 6f 75 72 20 73 70 65 63 |ion on y|our spec|
|00000a10| 69 66 69 63 20 6f 70 65 | 72 61 74 69 6e 67 20 20 |ific ope|rating |
|00000a20| 2a 2f 0d 0a 20 20 20 2f | 2a 20 73 79 73 74 65 6d |*/.. /|* system|
|00000a30| 20 61 6e 64 20 61 70 70 | 6c 69 63 61 74 69 6f 6e | and app|lication|
|00000a40| 2e 20 20 49 74 20 73 68 | 6f 75 6c 64 20 72 65 74 |. It sh|ould ret|
|00000a50| 75 72 6e 20 31 20 69 66 | 20 61 20 73 75 63 63 65 |urn 1 if| a succe|
|00000a60| 73 73 66 75 6c 20 6c 6f | 63 6b 2f 20 20 20 2a 2f |ssful lo|ck/ */|
|00000a70| 0d 0a 20 20 20 2f 2a 20 | 75 6e 6c 6f 63 6b 20 6f |.. /* |unlock o|
|00000a80| 63 63 75 72 72 65 64 20 | 6f 72 20 30 20 69 66 20 |ccurred |or 0 if |
|00000a90| 74 68 65 20 63 61 6c 6c | 20 77 61 73 20 75 6e 73 |the call| was uns|
|00000aa0| 75 63 63 65 73 73 66 75 | 6c 2e 20 20 20 20 20 20 |uccessfu|l. |
|00000ab0| 20 20 20 20 20 20 20 20 | 2a 2f 0d 0a 20 20 20 2f | |*/.. /|
|00000ac0| 2a 20 2a 20 2a 20 2a 20 | 2a 20 2a 20 2a 20 2a 20 |* * * * |* * * * |
|00000ad0| 2a 20 2a 20 2a 20 2a 20 | 2a 20 2a 20 2a 20 2a 20 |* * * * |* * * * |
|00000ae0| 2a 20 2a 20 2a 20 2a 20 | 2a 20 2a 20 2a 20 2a 20 |* * * * |* * * * |
|00000af0| 2a 20 2a 20 2a 20 2a 20 | 2a 20 2a 20 2a 20 2a 20 |* * * * |* * * * |
|00000b00| 2a 20 2a 20 2a 20 2a 2f | 0d 0a 0d 0a 20 20 20 69 |* * * */|.... i|
|00000b10| 66 20 28 62 74 63 70 2d | 3e 62 74 6f 70 74 79 70 |f (btcp-|>btoptyp|
|00000b20| 65 20 3d 3d 20 49 4e 53 | 45 52 54 20 20 20 7c 7c |e == INS|ERT |||
|00000b30| 20 20 62 74 63 70 2d 3e | 62 74 6f 70 74 79 70 65 | btcp->|btoptype|
|00000b40| 20 3d 3d 20 49 53 52 54 | 4b 59 29 0d 0a 20 20 20 | == ISRT|KY).. |
|00000b50| 20 20 20 6c 6f 63 6b 63 | 68 6b 20 3d 20 31 3b 0d | lockc|hk = 1;.|
|00000b60| 0a 20 20 20 65 6c 73 65 | 20 69 66 20 28 62 74 63 |. else| if (btc|
|00000b70| 70 2d 3e 62 74 6f 70 74 | 79 70 65 20 3d 3d 20 44 |p->btopt|ype == D|
|00000b80| 45 4c 45 54 45 20 20 20 | 7c 7c 20 20 62 74 63 70 |ELETE ||| btcp|
|00000b90| 2d 3e 62 74 6f 70 74 79 | 70 65 20 3d 3d 20 44 45 |->btopty|pe == DE|
|00000ba0| 4c 54 4b 59 29 0d 0a 20 | 20 20 20 20 20 6c 6f 63 |LTKY).. | loc|
|00000bb0| 6b 63 68 6b 20 3d 20 32 | 3b 0d 0a 20 20 20 65 6c |kchk = 2|;.. el|
|00000bc0| 73 65 0d 0a 20 20 20 20 | 20 20 6c 6f 63 6b 63 68 |se.. | lockch|
|00000bd0| 6b 20 3d 20 30 3b 0d 0a | 20 20 20 69 66 28 6c 6f |k = 0;..| if(lo|
|00000be0| 63 6b 63 68 6b 29 20 7b | 0d 0a 20 20 20 20 20 20 |ckchk) {|.. |
|00000bf0| 6c 6b 20 3d 20 30 3b 0d | 0a 20 20 20 20 20 20 77 |lk = 0;.|. w|
|00000c00| 68 69 6c 65 20 28 6c 6f | 63 6b 75 6e 6c 6b 28 66 |hile (lo|ckunlk(f|
|00000c10| 64 69 64 78 2c 28 6c 6f | 6e 67 29 62 74 63 70 2d |didx,(lo|ng)btcp-|
|00000c20| 3e 66 69 6e 64 72 6f 6f | 74 2c 20 53 5a 5f 42 54 |>findroo|t, SZ_BT|
|00000c30| 5f 49 4e 46 4f 2c 20 4c | 4f 43 4b 52 29 20 21 3d |_INFO, L|OCKR) !=|
|00000c40| 20 31 29 0d 0a 20 20 20 | 20 20 20 20 20 20 69 66 | 1).. | if|
|00000c50| 20 28 2b 2b 6c 6b 20 3e | 20 48 44 52 54 52 59 53 | (++lk >| HDRTRYS|
|00000c60| 29 20 7b 0d 0a 20 20 20 | 20 20 20 20 20 20 20 20 |) {.. | |
|00000c70| 20 72 65 74 63 6f 64 65 | 20 3d 20 42 54 4c 4f 43 | retcode| = BTLOC|
|00000c80| 4b 3b 0d 0a 20 20 20 20 | 20 20 20 20 20 20 20 20 |K;.. | |
|00000c90| 67 6f 74 6f 20 63 62 5f | 65 78 69 74 3b 0d 0a 20 |goto cb_|exit;.. |
|00000ca0| 20 20 20 20 20 20 20 20 | 7d 0d 0a 20 20 20 20 20 | |}.. |
|00000cb0| 20 6c 6f 63 6b 6c 69 73 | 74 5b 6c 6f 63 6b 70 74 | locklis|t[lockpt|
|00000cc0| 72 2b 2b 5d 20 3d 20 28 | 6c 6f 6e 67 29 20 62 74 |r++] = (|long) bt|
|00000cd0| 63 70 2d 3e 66 69 6e 64 | 72 6f 6f 74 3b 20 20 2f |cp->find|root; /|
|00000ce0| 2a 20 73 61 76 65 20 72 | 6f 6f 74 20 6e 6f 64 65 |* save r|oot node|
|00000cf0| 20 2a 2f 0d 0a 20 20 20 | 20 20 20 6c 6b 20 3d 20 | */.. | lk = |
|00000d00| 30 3b 0d 0a 20 20 20 20 | 20 20 77 68 69 6c 65 20 |0;.. | while |
|00000d10| 28 6c 6f 63 6b 75 6e 6c | 6b 28 66 64 69 64 78 2c |(lockunl|k(fdidx,|
|00000d20| 20 30 4c 2c 20 53 5a 5f | 42 54 5f 49 4e 46 4f 2c | 0L, SZ_|BT_INFO,|
|00000d30| 20 4c 4f 43 4b 52 29 20 | 21 3d 20 31 29 0d 0a 20 | LOCKR) |!= 1).. |
|00000d40| 20 20 20 20 20 20 20 20 | 69 66 20 28 2b 2b 6c 6b | |if (++lk|
|00000d50| 20 3e 20 48 44 52 54 52 | 59 53 29 7b 0d 0a 20 20 | > HDRTR|YS){.. |
|00000d60| 20 20 20 20 20 20 20 20 | 20 20 69 20 3d 20 6c 6f | | i = lo|
|00000d70| 63 6b 75 6e 6c 6b 28 66 | 64 69 64 78 2c 20 28 6c |ckunlk(f|didx, (l|
|00000d80| 6f 6e 67 29 62 74 63 70 | 2d 3e 66 69 6e 64 72 6f |ong)btcp|->findro|
|00000d90| 6f 74 2c 20 53 5a 5f 42 | 54 5f 49 4e 46 4f 2c 20 |ot, SZ_B|T_INFO, |
|00000da0| 55 4e 4c 4f 43 4b 52 29 | 3b 0d 0a 20 20 20 20 20 |UNLOCKR)|;.. |
|00000db0| 20 20 20 20 20 20 20 72 | 65 74 63 6f 64 65 20 3d | r|etcode =|
|00000dc0| 20 42 54 4c 4f 43 4b 3b | 0d 0a 20 20 20 20 20 20 | BTLOCK;|.. |
|00000dd0| 20 20 20 20 20 20 67 6f | 74 6f 20 63 62 5f 65 78 | go|to cb_ex|
|00000de0| 69 74 3b 0d 0a 20 20 20 | 20 20 20 20 20 20 7d 0d |it;.. | }.|
|00000df0| 0a 20 20 20 20 20 20 6c | 6f 63 6b 6c 69 73 74 5b |. l|ocklist[|
|00000e00| 6c 6f 63 6b 70 74 72 2b | 2b 5d 20 3d 20 30 4c 3b |lockptr+|+] = 0L;|
|00000e10| 20 20 20 20 2f 2a 20 70 | 6f 69 6e 74 65 72 20 74 | /* p|ointer t|
|00000e20| 6f 20 68 65 61 64 65 72 | 20 72 65 63 6f 72 64 20 |o header| record |
|00000e30| 20 20 20 20 20 20 20 20 | 20 2a 2f 0d 0a 20 20 20 | | */.. |
|00000e40| 7d 0d 0a 0d 0a 20 20 20 | 2f 2a 20 67 65 74 20 70 |}.... |/* get p|
|00000e50| 74 72 20 74 6f 20 72 6f | 6f 74 20 6e 6f 64 65 20 |tr to ro|ot node |
|00000e60| 2a 2f 0d 0a 20 20 20 72 | 6f 6f 74 70 74 72 20 3d |*/.. r|ootptr =|
|00000e70| 20 62 74 63 70 2d 3e 62 | 74 72 6f 6f 74 20 3d 20 | btcp->b|troot = |
|00000e80| 67 65 74 72 6f 6f 74 28 | 66 64 69 64 78 2c 20 62 |getroot(|fdidx, b|
|00000e90| 74 63 70 2d 3e 66 69 6e | 64 72 6f 6f 74 29 3b 0d |tcp->fin|droot);.|
|00000ea0| 0a 0d 0a 20 20 20 69 66 | 20 28 70 75 73 68 64 6f |... if| (pushdo|
|00000eb0| 77 6e 28 72 6f 6f 74 70 | 74 72 29 20 3c 20 31 4c |wn(rootp|tr) < 1L|
|00000ec0| 29 20 2f 2a 20 73 61 76 | 65 20 72 6f 6f 74 20 6e |) /* sav|e root n|
|00000ed0| 6f 64 65 20 6f 6e 20 73 | 74 61 63 6b 20 6f 66 20 |ode on s|tack of |
|00000ee0| 6c 6f 6e 67 73 20 2a 2f | 0d 0a 20 20 20 20 20 20 |longs */|.. |
|00000ef0| 63 6b 65 72 72 6f 72 28 | 2d 20 43 4b 5f 50 55 53 |ckerror(|- CK_PUS|
|00000f00| 48 2c 20 22 34 31 22 29 | 3b 0d 0a 20 20 20 69 66 |H, "41")|;.. if|
|00000f10| 20 28 6c 6f 63 6b 63 68 | 6b 29 7b 0d 0a 20 20 20 | (lockch|k){.. |
|00000f20| 20 20 20 6c 6b 20 3d 20 | 30 3b 0d 0a 20 20 20 20 | lk = |0;.. |
|00000f30| 20 20 70 6f 73 20 3d 20 | 28 6c 6f 6e 67 29 20 28 | pos = |(long) (|
|00000f40| 20 28 28 6c 6f 6e 67 29 | 20 72 6f 6f 74 70 74 72 | ((long)| rootptr|
|00000f50| 20 2d 20 31 4c 29 20 2a | 20 28 6c 6f 6e 67 29 20 | - 1L) *| (long) |
|00000f60| 62 74 63 70 2d 3e 62 74 | 69 64 78 6c 65 6e 29 3b |btcp->bt|idxlen);|
|00000f70| 0d 0a 20 20 20 20 20 20 | 77 68 69 6c 65 20 28 6c |.. |while (l|
|00000f80| 6f 63 6b 75 6e 6c 6b 28 | 66 64 69 64 78 2c 20 70 |ockunlk(|fdidx, p|
|00000f90| 6f 73 2c 20 62 74 63 70 | 2d 3e 62 74 69 64 78 6c |os, btcp|->btidxl|
|00000fa0| 65 6e 2c 20 4c 4f 43 4b | 52 29 20 21 3d 20 31 29 |en, LOCK|R) != 1)|
|00000fb0| 0d 0a 20 20 20 20 20 20 | 20 20 20 69 66 20 28 2b |.. | if (+|
|00000fc0| 2b 6c 6b 20 3e 20 48 44 | 52 54 52 59 53 29 7b 0d |+lk > HD|RTRYS){.|
|00000fd0| 0a 20 20 20 20 20 20 20 | 20 20 20 20 20 72 65 74 |. | ret|
|00000fe0| 63 6f 64 65 20 3d 20 42 | 54 4c 4f 43 4b 3b 0d 0a |code = B|TLOCK;..|
|00000ff0| 20 20 20 20 20 20 20 20 | 20 20 20 20 67 6f 74 6f | | goto|
|00001000| 20 63 62 5f 65 78 69 74 | 3b 0d 0a 20 20 20 20 20 | cb_exit|;.. |
|00001010| 20 20 20 20 7d 0d 0a 20 | 20 20 20 20 20 6c 6f 63 | }.. | loc|
|00001020| 6b 6c 69 73 74 5b 6c 6f | 63 6b 70 74 72 2b 2b 5d |klist[lo|ckptr++]|
|00001030| 20 3d 20 70 6f 73 3b 0d | 0a 20 20 20 7d 0d 0a 0d | = pos;.|. }...|
|00001040| 0a 20 20 20 67 65 74 69 | 64 78 72 28 66 64 69 64 |. geti|dxr(fdid|
|00001050| 78 2c 20 72 6f 6f 74 70 | 74 72 2c 20 69 64 78 62 |x, rootp|tr, idxb|
|00001060| 6c 6b 2c 20 62 74 63 70 | 2d 3e 62 74 69 64 78 6c |lk, btcp|->btidxl|
|00001070| 65 6e 2c 20 62 74 63 70 | 2d 3e 62 74 6b 65 79 6c |en, btcp|->btkeyl|
|00001080| 65 6e 29 3b 0d 0a 0d 0a | 20 20 20 69 66 20 28 62 |en);....| if (b|
|00001090| 74 63 70 2d 3e 62 74 6f | 70 74 79 70 65 20 3d 3d |tcp->bto|ptype ==|
|000010a0| 20 47 45 54 4c 41 53 54 | 29 7b 20 20 20 2f 2a 20 | GETLAST|){ /* |
|000010b0| 62 75 69 6c 64 20 74 68 | 65 20 74 65 72 6d 69 6e |build th|e termin|
|000010c0| 61 74 69 6f 6e 20 6b 65 | 79 20 2a 2f 0d 0a 20 20 |ation ke|y */.. |
|000010d0| 20 20 20 20 73 74 72 63 | 70 79 28 62 74 63 70 2d | strc|py(btcp-|
|000010e0| 3e 62 74 6b 65 79 2c 20 | 22 5c 31 37 37 22 29 3b |>btkey, |"\177");|
|000010f0| 0d 0a 20 20 20 7d 0d 0a | 20 20 20 65 6c 73 65 0d |.. }..| else.|
|00001100| 0a 20 20 20 20 20 20 69 | 66 20 28 62 74 63 70 2d |. i|f (btcp-|
|00001110| 3e 62 74 6f 70 74 79 70 | 65 20 3d 3d 20 47 45 54 |>btoptyp|e == GET|
|00001120| 46 52 53 54 29 7b 0d 0a | 20 20 20 20 20 20 20 20 |FRST){..| |
|00001130| 20 62 74 63 70 2d 3e 62 | 74 6b 65 79 5b 30 5d 20 | btcp->b|tkey[0] |
|00001140| 3d 20 4e 55 4c 3b 0d 0a | 09 20 20 7d 0d 0a 0d 0a |= NUL;..|. }....|
|00001150| 20 20 20 2f 2a 20 69 66 | 20 74 68 69 73 20 69 73 | /* if| this is|
|00001160| 20 74 68 65 20 66 69 72 | 73 74 20 74 69 6d 65 20 | the fir|st time |
|00001170| 74 68 72 75 20 61 20 6d | 75 6c 74 69 2d 70 61 73 |thru a m|ulti-pas|
|00001180| 73 20 6f 70 65 72 61 74 | 69 6f 6e 2c 20 72 65 73 |s operat|ion, res|
|00001190| 65 74 20 62 74 6c 6f 63 | 20 2a 2f 0d 0a 20 20 20 |et btloc| */.. |
|000011a0| 69 66 20 28 62 74 63 70 | 2d 3e 62 74 73 76 6b 65 |if (btcp|->btsvke|
|000011b0| 79 20 3d 3d 20 4e 55 4c | 4c 20 26 26 0d 0a 20 20 |y == NUL|L &&.. |
|000011c0| 20 20 20 20 28 62 74 63 | 70 2d 3e 62 74 6f 70 74 | (btc|p->btopt|
|000011d0| 79 70 65 20 3d 3d 20 47 | 45 54 41 4c 4c 20 7c 7c |ype == G|ETALL |||
|000011e0| 20 62 74 63 70 2d 3e 62 | 74 6f 70 74 79 70 65 20 | btcp->b|toptype |
|000011f0| 3d 3d 20 47 45 54 4b 45 | 59 53 29 29 0d 0a 20 20 |== GETKE|YS)).. |
|00001200| 20 20 20 20 62 74 63 70 | 2d 3e 62 74 6c 6f 63 20 | btcp|->btloc |
|00001210| 3d 20 30 4c 3b 20 20 20 | 2f 2a 20 63 61 6c 6c 65 |= 0L; |/* calle|
|00001220| 72 20 73 68 6f 75 6c 64 | 20 4e 4f 54 20 6d 6f 64 |r should| NOT mod|
|00001230| 69 66 79 20 74 68 69 73 | 20 21 20 2a 2f 0d 0a 0d |ify this| ! */...|
|00001240| 0a 20 20 20 2f 2a 20 73 | 65 6c 65 63 74 20 74 68 |. /* s|elect th|
|00001250| 65 20 70 72 6f 70 65 72 | 20 6b 65 79 20 74 6f 20 |e proper| key to |
|00001260| 75 73 65 20 66 6f 72 20 | 61 20 6d 75 6c 74 69 2d |use for |a multi-|
|00001270| 70 61 73 73 20 6f 70 65 | 72 61 74 69 6f 6e 20 2a |pass ope|ration *|
|00001280| 2f 0d 0a 20 20 20 6b 65 | 79 70 20 3d 20 28 62 74 |/.. ke|yp = (bt|
|00001290| 63 70 2d 3e 62 74 73 76 | 6b 65 79 20 21 3d 20 4e |cp->btsv|key != N|
|000012a0| 55 4c 4c 29 20 3f 20 62 | 74 63 70 2d 3e 62 74 73 |ULL) ? b|tcp->bts|
|000012b0| 76 6b 65 79 20 3a 20 62 | 74 63 70 2d 3e 62 74 6b |vkey : b|tcp->btk|
|000012c0| 65 79 3b 0d 0a 20 20 20 | 73 6c 20 3d 20 73 74 72 |ey;.. |sl = str|
|000012d0| 6c 65 6e 28 62 74 63 70 | 2d 3e 62 74 6b 65 79 29 |len(btcp|->btkey)|
|000012e0| 3b 20 20 20 20 2f 2a 20 | 74 68 65 20 6c 65 6e 67 |; /* |the leng|
|000012f0| 74 68 20 6f 66 20 74 68 | 65 20 63 61 6c 6c 65 72 |th of th|e caller|
|00001300| 73 20 6b 65 79 20 2a 2f | 0d 0a 0d 0a 20 20 20 2f |s key */|.... /|
|00001310| 2a 20 74 72 61 76 65 72 | 73 65 20 74 68 65 20 69 |* traver|se the i|
|00001320| 6e 64 65 78 20 6e 6f 64 | 65 73 20 75 6e 74 69 6c |ndex nod|es until|
|00001330| 20 79 6f 75 20 66 69 6e | 64 20 74 68 65 20 64 65 | you fin|d the de|
|00001340| 73 69 72 65 64 20 64 61 | 74 61 20 6e 6f 64 65 20 |sired da|ta node |
|00001350| 2a 2f 0d 0a 20 20 20 77 | 68 69 6c 65 20 28 21 69 |*/.. w|hile (!i|
|00001360| 64 78 62 6c 6b 2d 3e 62 | 6c 6b 74 79 70 65 29 20 |dxblk->b|lktype) |
|00001370| 7b 20 20 20 2f 2a 20 75 | 6e 74 69 6c 20 64 61 74 |{ /* u|ntil dat|
|00001380| 61 20 62 6c 6f 63 6b 20 | 74 79 70 65 20 3d 20 31 |a block |type = 1|
|00001390| 20 6c 6f 63 61 74 65 64 | 20 2a 2f 0d 0a 20 20 20 | located| */.. |
|000013a0| 20 20 20 2f 2a 20 67 65 | 74 20 6f 66 66 73 65 74 | /* ge|t offset|
|000013b0| 20 69 6e 74 6f 20 62 74 | 70 61 67 65 20 66 6f 72 | into bt|page for|
|000013c0| 20 6b 65 79 20 2a 2f 0d | 0a 20 20 20 20 20 20 69 | key */.|. i|
|000013d0| 20 3d 20 62 69 6e 61 72 | 79 73 72 28 69 64 78 62 | = binar|ysr(idxb|
|000013e0| 6c 6b 2c 20 6b 65 79 70 | 2c 20 73 74 72 6c 65 6e |lk, keyp|, strlen|
|000013f0| 28 6b 65 79 70 29 29 3b | 0d 0a 0d 0a 20 20 20 20 |(keyp));|.... |
|00001400| 20 20 69 66 28 6c 6f 63 | 6b 63 68 6b 29 7b 0d 0a | if(loc|kchk){..|
|00001410| 20 20 20 20 20 20 20 20 | 20 6c 6b 20 3d 20 30 3b | | lk = 0;|
|00001420| 0d 0a 20 20 20 20 20 20 | 20 20 20 70 6f 73 20 3d |.. | pos =|
|00001430| 20 28 69 64 78 62 6c 6b | 2d 3e 62 74 70 61 67 65 | (idxblk|->btpage|
|00001440| 5b 69 5d 2e 62 74 70 74 | 72 20 2d 20 31 4c 29 20 |[i].btpt|r - 1L) |
|00001450| 2a 20 62 74 63 70 2d 3e | 62 74 69 64 78 6c 65 6e |* btcp->|btidxlen|
|00001460| 3b 0d 0a 20 20 20 20 20 | 20 20 20 20 77 68 69 6c |;.. | whil|
|00001470| 65 20 28 6c 6f 63 6b 75 | 6e 6c 6b 28 66 64 69 64 |e (locku|nlk(fdid|
|00001480| 78 2c 20 70 6f 73 2c 20 | 62 74 63 70 2d 3e 62 74 |x, pos, |btcp->bt|
|00001490| 69 64 78 6c 65 6e 2c 20 | 4c 4f 43 4b 52 29 20 21 |idxlen, |LOCKR) !|
|000014a0| 3d 20 31 29 0d 0a 20 20 | 20 20 20 20 20 20 20 20 |= 1).. | |
|000014b0| 20 20 69 66 20 28 2b 2b | 6c 6b 20 3e 20 48 44 52 | if (++|lk > HDR|
|000014c0| 54 52 59 53 29 7b 0d 0a | 20 20 20 20 20 20 20 20 |TRYS){..| |
|000014d0| 20 20 20 20 20 20 20 72 | 65 74 63 6f 64 65 20 3d | r|etcode =|
|000014e0| 20 42 54 4c 4f 43 4b 3b | 0d 0a 20 20 20 20 20 20 | BTLOCK;|.. |
|000014f0| 20 20 20 20 20 20 20 20 | 20 67 6f 74 6f 20 63 62 | | goto cb|
|00001500| 5f 65 78 69 74 3b 0d 0a | 20 20 20 20 20 20 20 20 |_exit;..| |
|00001510| 20 20 20 20 7d 0d 0a 20 | 20 20 20 20 20 20 20 20 | }.. | |
|00001520| 6c 6f 63 6b 6c 69 73 74 | 5b 6c 6f 63 6b 70 74 72 |locklist|[lockptr|
|00001530| 2b 2b 5d 20 3d 20 70 6f | 73 3b 0d 0a 20 20 20 20 |++] = po|s;.. |
|00001540| 20 20 7d 0d 0a 0d 0a 20 | 20 20 20 20 20 69 66 20 | }.... | if |
|00001550| 28 70 75 73 68 64 6f 77 | 6e 28 69 64 78 62 6c 6b |(pushdow|n(idxblk|
|00001560| 2d 3e 62 74 70 61 67 65 | 5b 69 5d 2e 62 74 70 74 |->btpage|[i].btpt|
|00001570| 72 29 20 3c 20 31 4c 29 | 20 20 20 20 2f 2a 20 73 |r) < 1L)| /* s|
|00001580| 61 76 65 20 63 75 72 72 | 65 6e 74 20 72 65 63 20 |ave curr|ent rec |
|00001590| 23 20 2a 2f 0d 0a 20 20 | 20 20 20 20 20 20 20 63 |# */.. | c|
|000015a0| 6b 65 72 72 6f 72 28 2d | 20 43 4b 5f 50 55 53 48 |kerror(-| CK_PUSH|
|000015b0| 2c 20 22 34 32 22 29 3b | 0d 0a 0d 0a 20 20 20 20 |, "42");|.... |
|000015c0| 20 20 67 65 74 69 64 78 | 72 28 66 64 69 64 78 2c | getidx|r(fdidx,|
|000015d0| 20 69 64 78 62 6c 6b 2d | 3e 62 74 70 61 67 65 5b | idxblk-|>btpage[|
|000015e0| 69 5d 2e 62 74 70 74 72 | 2c 0d 0a 20 20 20 20 20 |i].btptr|,.. |
|000015f0| 20 20 20 20 20 20 20 20 | 20 69 64 78 62 6c 6b 2c | | idxblk,|
|00001600| 20 62 74 63 70 2d 3e 62 | 74 69 64 78 6c 65 6e 2c | btcp->b|tidxlen,|
|00001610| 20 62 74 63 70 2d 3e 62 | 74 6b 65 79 6c 65 6e 29 | btcp->b|tkeylen)|
|00001620| 3b 0d 0a 20 20 20 7d 0d | 0a 0d 0a 20 20 20 6e 6f |;.. }.|... no|
|00001630| 64 65 20 3d 20 70 6f 70 | 74 6f 70 28 29 3b 20 20 |de = pop|top(); |
|00001640| 20 20 20 20 20 2f 2a 20 | 67 65 74 20 74 68 65 20 | /* |get the |
|00001650| 72 65 63 20 23 3a 20 69 | 66 20 6c 6f 63 6b 63 68 |rec #: i|f lockch|
|00001660| 6b 20 74 68 65 6e 20 6e | 6f 64 65 20 69 73 20 6c |k then n|ode is l|
|00001670| 6f 63 6b 65 64 20 2a 2f | 0d 0a 20 20 20 2f 2a 20 |ocked */|.. /* |
|00001680| 67 65 74 20 6d 61 74 63 | 68 2f 69 6e 73 65 72 74 |get matc|h/insert|
|00001690| 20 70 6f 73 69 74 69 6f | 6e 20 77 69 74 68 69 6e | positio|n within|
|000016a0| 20 68 64 72 20 72 65 63 | 20 66 6f 72 20 67 69 76 | hdr rec| for giv|
|000016b0| 65 6e 20 6b 65 79 20 20 | 20 2a 2f 0d 0a 20 20 20 |en key | */.. |
|000016c0| 68 64 72 6c 6f 63 20 3d | 20 62 69 6e 61 72 79 64 |hdrloc =| binaryd|
|000016d0| 74 28 66 64 69 64 78 2c | 20 69 64 78 62 6c 6b 2c |t(fdidx,| idxblk,|
|000016e0| 20 62 74 63 70 2c 20 73 | 6c 2c 20 26 6d 61 74 63 | btcp, s|l, &matc|
|000016f0| 68 2c 20 26 64 75 70 66 | 6c 67 29 3b 0d 0a 0d 0a |h, &dupf|lg);....|
|00001700| 20 20 20 73 77 69 74 63 | 68 20 28 62 74 63 70 2d | switc|h (btcp-|
|00001710| 3e 62 74 6f 70 74 79 70 | 65 29 20 7b 0d 0a 20 20 |>btoptyp|e) {.. |
|00001720| 20 20 20 20 63 61 73 65 | 20 47 45 54 52 45 43 3a | case| GETREC:|
|00001730| 0d 0a 20 20 20 20 20 20 | 63 61 73 65 20 47 45 54 |.. |case GET|
|00001740| 4e 58 54 3a 0d 0a 20 20 | 20 20 20 20 63 61 73 65 |NXT:.. | case|
|00001750| 20 47 45 54 50 52 56 3a | 0d 0a 20 20 20 20 20 20 | GETPRV:|.. |
|00001760| 63 61 73 65 20 47 45 54 | 50 41 52 3a 0d 0a 20 20 |case GET|PAR:.. |
|00001770| 20 20 20 20 63 61 73 65 | 20 47 45 54 41 4c 4c 3a | case| GETALL:|
|00001780| 0d 0a 20 20 20 20 20 20 | 63 61 73 65 20 47 45 54 |.. |case GET|
|00001790| 53 45 51 3a 0d 0a 20 20 | 20 20 20 20 63 61 73 65 |SEQ:.. | case|
|000017a0| 20 47 45 54 4b 45 59 53 | 3a 0d 0a 20 20 20 20 20 | GETKEYS|:.. |
|000017b0| 20 20 20 20 72 65 74 63 | 6f 64 65 20 3d 20 28 6d | retc|ode = (m|
|000017c0| 61 74 63 68 29 20 3f 0d | 0a 20 20 20 20 20 20 20 |atch) ?.|. |
|000017d0| 20 20 20 20 62 74 72 67 | 65 74 73 28 66 64 69 64 | btrg|ets(fdid|
|000017e0| 78 2c 20 69 64 78 62 6c | 6b 2c 20 68 64 72 6c 6f |x, idxbl|k, hdrlo|
|000017f0| 63 2c 20 73 6c 2c 20 26 | 64 75 70 66 6c 67 2c 20 |c, sl, &|dupflg, |
|00001800| 62 74 63 70 29 20 3a 20 | 42 54 4e 4f 54 46 4e 44 |btcp) : |BTNOTFND|
|00001810| 3b 0d 0a 20 20 20 20 20 | 20 20 20 20 62 72 65 61 |;.. | brea|
|00001820| 6b 3b 0d 0a 20 20 20 20 | 20 20 63 61 73 65 20 47 |k;.. | case G|
|00001830| 45 54 47 54 3a 0d 0a 20 | 20 20 20 20 20 63 61 73 |ETGT:.. | cas|
|00001840| 65 20 47 45 54 47 45 3a | 0d 0a 20 20 20 20 20 20 |e GETGE:|.. |
|00001850| 63 61 73 65 20 47 45 54 | 4c 54 3a 0d 0a 20 20 20 |case GET|LT:.. |
|00001860| 20 20 20 63 61 73 65 20 | 47 45 54 4c 45 3a 0d 0a | case |GETLE:..|
|00001870| 20 20 20 20 20 20 20 20 | 20 72 65 74 63 6f 64 65 | | retcode|
|00001880| 20 3d 20 62 74 72 67 65 | 74 73 28 66 64 69 64 78 | = btrge|ts(fdidx|
|00001890| 2c 20 69 64 78 62 6c 6b | 2c 20 68 64 72 6c 6f 63 |, idxblk|, hdrloc|
|000018a0| 2c 20 73 6c 2c 20 26 64 | 75 70 66 6c 67 2c 20 62 |, sl, &d|upflg, b|
|000018b0| 74 63 70 29 3b 0d 0a 20 | 20 20 20 20 20 20 20 20 |tcp);.. | |
|000018c0| 62 72 65 61 6b 3b 0d 0a | 20 20 20 20 20 20 63 61 |break;..| ca|
|000018d0| 73 65 20 47 45 54 4c 41 | 53 54 3a 0d 0a 20 20 20 |se GETLA|ST:.. |
|000018e0| 20 20 20 20 20 20 69 66 | 20 28 28 72 65 74 63 6f | if| ((retco|
|000018f0| 64 65 20 3d 20 68 64 72 | 6c 6f 63 20 3d 0d 0a 20 |de = hdr|loc =.. |
|00001900| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001910| 77 72 61 70 5f 68 64 72 | 28 68 64 72 6c 6f 63 2d |wrap_hdr|(hdrloc-|
|00001920| 31 2c 20 69 64 78 62 6c | 6b 2c 20 66 64 69 64 78 |1, idxbl|k, fdidx|
|00001930| 2c 20 62 74 63 70 29 29 | 20 3d 3d 20 42 54 4e 4f |, btcp))| == BTNO|
|00001940| 54 46 4e 44 29 20 7b 0d | 0a 20 20 20 20 20 20 20 |TFND) {.|. |
|00001950| 20 20 20 20 20 2a 62 74 | 63 70 2d 3e 62 74 6b 65 | *bt|cp->btke|
|00001960| 79 20 3d 20 4e 55 4c 3b | 0d 0a 20 20 20 20 20 20 |y = NUL;|.. |
|00001970| 20 20 20 20 20 20 67 6f | 74 6f 20 63 62 5f 65 78 | go|to cb_ex|
|00001980| 69 74 3b 0d 0a 20 20 20 | 20 20 20 20 20 20 7d 0d |it;.. | }.|
|00001990| 0a 20 20 20 20 20 20 20 | 20 20 2f 2a 20 66 61 6c |. | /* fal|
|000019a0| 6c 20 74 68 72 75 20 74 | 6f 20 47 45 54 46 52 53 |l thru t|o GETFRS|
|000019b0| 54 20 2a 2f 0d 0a 20 20 | 20 20 20 20 63 61 73 65 |T */.. | case|
|000019c0| 20 47 45 54 46 52 53 54 | 3a 0d 0a 20 20 20 20 20 | GETFRST|:.. |
|000019d0| 20 20 20 20 69 66 20 28 | 28 62 74 63 70 2d 3e 62 | if (|(btcp->b|
|000019e0| 74 6c 6f 63 20 3d 20 69 | 64 78 62 6c 6b 2d 3e 62 |tloc = i|dxblk->b|
|000019f0| 74 70 61 67 65 5b 68 64 | 72 6c 6f 63 5d 2e 62 74 |tpage[hd|rloc].bt|
|00001a00| 70 74 72 29 20 3d 3d 20 | 30 4c 29 0d 0a 20 20 20 |ptr) == |0L).. |
|00001a10| 20 20 20 20 20 20 20 20 | 20 72 65 74 63 6f 64 65 | | retcode|
|00001a20| 20 3d 20 42 54 4e 4f 54 | 46 4e 44 3b 0d 0a 20 20 | = BTNOT|FND;.. |
|00001a30| 20 20 20 20 20 20 20 65 | 6c 73 65 20 7b 0d 0a 20 | e|lse {.. |
|00001a40| 20 20 20 20 20 20 20 20 | 20 20 20 73 74 72 63 70 | | strcp|
|00001a50| 79 28 62 74 63 70 2d 3e | 62 74 6b 65 79 2c 20 69 |y(btcp->|btkey, i|
|00001a60| 64 78 62 6c 6b 2d 3e 62 | 74 70 61 67 65 5b 68 64 |dxblk->b|tpage[hd|
|00001a70| 72 6c 6f 63 5d 2e 73 6b | 65 79 6e 6d 65 29 3b 0d |rloc].sk|eynme);.|
|00001a80| 0a 20 20 20 20 20 20 20 | 20 20 20 20 20 6d 61 74 |. | mat|
|00001a90| 63 68 20 3d 20 31 3b 0d | 0a 20 20 20 20 20 20 20 |ch = 1;.|. |
|00001aa0| 20 20 20 20 20 72 65 74 | 63 6f 64 65 20 3d 20 42 | ret|code = B|
|00001ab0| 54 43 41 4c 4c 4f 4b 3b | 0d 0a 20 20 20 20 20 20 |TCALLOK;|.. |
|00001ac0| 20 20 20 7d 0d 0a 20 20 | 20 20 20 20 20 20 20 62 | }.. | b|
|00001ad0| 72 65 61 6b 3b 0d 0a 20 | 20 20 20 20 20 63 61 73 |reak;.. | cas|
|00001ae0| 65 20 4e 45 57 4c 4f 43 | 3a 0d 0a 20 20 20 20 20 |e NEWLOC|:.. |
|00001af0| 20 20 20 20 72 65 74 63 | 6f 64 65 20 3d 20 28 6d | retc|ode = (m|
|00001b00| 61 74 63 68 29 20 3f 0d | 0a 20 20 20 20 20 20 20 |atch) ?.|. |
|00001b10| 20 20 20 20 20 62 74 72 | 69 73 72 74 28 66 64 64 | btr|isrt(fdd|
|00001b20| 74 61 2c 20 66 64 69 64 | 78 2c 20 69 64 78 62 6c |ta, fdid|x, idxbl|
|00001b30| 6b 2c 20 68 64 72 6c 6f | 63 2c 20 6e 6f 64 65 2c |k, hdrlo|c, node,|
|00001b40| 20 72 6f 6f 74 70 74 72 | 2c 20 62 74 63 70 29 20 | rootptr|, btcp) |
|00001b50| 3a 0d 0a 20 20 20 20 20 | 20 20 20 20 20 20 20 42 |:.. | B|
|00001b60| 54 4e 4f 54 46 4e 44 3b | 0d 0a 20 20 20 20 20 20 |TNOTFND;|.. |
|00001b70| 20 20 20 62 72 65 61 6b | 3b 0d 0a 20 20 20 20 20 | break|;.. |
|00001b80| 20 63 61 73 65 20 49 4e | 53 45 52 54 3a 0d 0a 20 | case IN|SERT:.. |
|00001b90| 20 20 20 20 20 63 61 73 | 65 20 49 53 52 54 4b 59 | cas|e ISRTKY|
|00001ba0| 3a 0d 0a 20 20 20 20 20 | 20 20 20 20 72 65 74 63 |:.. | retc|
|00001bb0| 6f 64 65 20 3d 0d 0a 20 | 20 20 20 20 20 20 20 20 |ode =.. | |
|00001bc0| 20 20 20 20 62 74 72 69 | 73 72 74 28 66 64 64 74 | btri|srt(fddt|
|00001bd0| 61 2c 20 66 64 69 64 78 | 2c 20 69 64 78 62 6c 6b |a, fdidx|, idxblk|
|00001be0| 2c 20 68 64 72 6c 6f 63 | 2c 20 6e 6f 64 65 2c 20 |, hdrloc|, node, |
|00001bf0| 72 6f 6f 74 70 74 72 2c | 20 62 74 63 70 29 3b 0d |rootptr,| btcp);.|
|00001c00| 0a 20 20 20 20 20 20 20 | 20 20 62 72 65 61 6b 3b |. | break;|
|00001c10| 0d 0a 20 20 20 20 20 20 | 63 61 73 65 20 44 45 4c |.. |case DEL|
|00001c20| 45 54 45 3a 0d 0a 20 20 | 20 20 20 20 63 61 73 65 |ETE:.. | case|
|00001c30| 20 44 45 4c 54 4b 59 3a | 0d 0a 20 20 20 20 20 20 | DELTKY:|.. |
|00001c40| 20 20 20 72 65 74 63 6f | 64 65 20 3d 20 28 6d 61 | retco|de = (ma|
|00001c50| 74 63 68 29 20 3f 0d 0a | 20 20 20 20 20 20 20 20 |tch) ?..| |
|00001c60| 20 20 20 62 74 72 64 65 | 6c 65 74 28 66 64 64 74 | btrde|let(fddt|
|00001c70| 61 2c 20 66 64 69 64 78 | 2c 20 69 64 78 62 6c 6b |a, fdidx|, idxblk|
|00001c80| 2c 20 68 64 72 6c 6f 63 | 2c 20 6e 6f 64 65 2c 62 |, hdrloc|, node,b|
|00001c90| 74 63 70 29 20 3a 20 42 | 54 4e 4f 54 46 4e 44 3b |tcp) : B|TNOTFND;|
|00001ca0| 0d 0a 20 20 20 20 20 20 | 20 20 20 62 72 65 61 6b |.. | break|
|00001cb0| 3b 0d 0a 20 20 20 20 20 | 20 64 65 66 61 75 6c 74 |;.. | default|
|00001cc0| 3a 0d 0a 20 20 20 20 20 | 20 20 20 20 70 75 74 73 |:.. | puts|
|00001cd0| 28 22 5c 6e 49 6e 76 61 | 6c 69 64 20 6f 70 63 6f |("\nInva|lid opco|
|00001ce0| 64 65 20 75 73 65 64 2e | 20 43 68 65 63 6b 20 62 |de used.| Check b|
|00001cf0| 74 6f 70 74 79 70 65 2e | 20 50 72 65 73 73 20 3c |toptype.| Press <|
|00001d00| 45 4e 54 45 52 3e 22 29 | 3b 0d 0a 20 20 20 20 20 |ENTER>")|;.. |
|00001d10| 20 20 20 20 72 65 74 63 | 6f 64 65 20 3d 20 42 54 | retc|ode = BT|
|00001d20| 43 4f 4d 4d 4f 3b 0d 0a | 20 20 20 20 20 20 20 20 |COMMO;..| |
|00001d30| 20 62 72 65 61 6b 3b 0d | 0a 20 20 20 7d 0d 0a 0d | break;.|. }...|
|00001d40| 0a 63 62 5f 65 78 69 74 | 3a 20 20 20 2f 2a 20 64 |.cb_exit|: /* d|
|00001d50| 65 2d 61 6c 6c 6f 63 61 | 74 65 20 65 76 65 72 79 |e-alloca|te every|
|00001d60| 74 68 69 6e 67 20 61 6e | 64 20 67 6f 20 68 6f 6d |thing an|d go hom|
|00001d70| 65 20 2a 2f 0d 0a 20 20 | 20 66 72 65 65 6b 65 79 |e */.. | freekey|
|00001d80| 73 28 69 64 78 62 6c 6b | 29 3b 0d 0a 20 20 20 46 |s(idxblk|);.. F|
|00001d90| 52 45 45 28 69 64 78 62 | 6c 6b 29 3b 0d 0a 20 20 |REE(idxb|lk);.. |
|00001da0| 20 72 65 6c 73 74 61 63 | 6b 28 29 3b 0d 0a 0d 0a | relstac|k();....|
|00001db0| 20 20 20 69 66 28 6c 6f | 63 6b 63 68 6b 29 7b 0d | if(lo|ckchk){.|
|00001dc0| 0a 20 20 20 20 20 20 77 | 68 69 6c 65 28 2d 2d 6c |. w|hile(--l|
|00001dd0| 6f 63 6b 70 74 72 20 3e | 3d 20 30 29 0d 0a 20 20 |ockptr >|= 0).. |
|00001de0| 20 20 20 20 20 20 20 6c | 6f 63 6b 75 6e 6c 6b 28 | l|ockunlk(|
|00001df0| 66 64 69 64 78 2c 20 6c | 6f 63 6b 6c 69 73 74 5b |fdidx, l|ocklist[|
|00001e00| 6c 6f 63 6b 70 74 72 5d | 2c 20 6c 6f 63 6b 70 74 |lockptr]|, lockpt|
|00001e10| 72 20 3c 20 32 20 3f 20 | 53 5a 5f 42 54 5f 49 4e |r < 2 ? |SZ_BT_IN|
|00001e20| 46 4f 20 3a 20 62 74 63 | 70 2d 3e 62 74 69 64 78 |FO : btc|p->btidx|
|00001e30| 6c 65 6e 2c 20 55 4e 4c | 4f 43 4b 52 29 3b 0d 0a |len, UNL|OCKR);..|
|00001e40| 20 20 20 7d 0d 0a 0d 0a | 20 20 20 72 65 74 75 72 | }....| retur|
|00001e50| 6e 28 72 65 74 63 6f 64 | 65 29 3b 0d 0a 7d 0d 0a |n(retcod|e);..}..|
|00001e60| 0d 0a 2f 2a 20 54 48 49 | 53 20 50 52 4f 47 52 41 |../* THI|S PROGRA|
|00001e70| 4d 20 42 45 4c 4f 4e 47 | 53 20 54 4f 20 57 41 4c |M BELONG|S TO WAL|
|00001e80| 54 45 52 20 4c 2e 20 50 | 45 41 43 4f 43 4b 2e 20 |TER L. P|EACOCK. |
|00001e90| 20 49 54 20 49 53 20 43 | 4f 4e 53 49 44 45 52 45 | IT IS C|ONSIDERE|
|00001ea0| 44 20 41 20 54 52 41 44 | 45 20 2a 2f 0d 0a 2f 2a |D A TRAD|E */../*|
|00001eb0| 20 53 45 43 52 45 54 20 | 41 4e 44 20 49 53 20 4e | SECRET |AND IS N|
|00001ec0| 4f 54 20 54 4f 20 42 45 | 20 44 49 56 55 4c 47 45 |OT TO BE| DIVULGE|
|00001ed0| 44 20 4f 52 20 55 53 45 | 44 20 42 59 20 50 41 52 |D OR USE|D BY PAR|
|00001ee0| 54 49 45 53 20 57 48 4f | 20 48 41 56 45 20 4e 4f |TIES WHO| HAVE NO|
|00001ef0| 54 20 20 20 20 2a 2f 0d | 0a 2f 2a 20 52 45 43 45 |T */.|./* RECE|
|00001f00| 49 56 45 44 20 57 52 49 | 54 54 45 4e 20 41 55 54 |IVED WRI|TTEN AUT|
|00001f10| 48 4f 52 49 5a 41 54 49 | 4f 4e 20 46 52 4f 4d 20 |HORIZATI|ON FROM |
|00001f20| 54 48 45 20 4f 57 4e 45 | 52 2e 20 20 20 20 20 20 |THE OWNE|R. |
|00001f30| 20 20 20 20 2a 2f 0d 0a | | */..| |
+--------+-------------------------+-------------------------+--------+--------+