home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c006 / 1.ddi / GETBTREE.C < prev    next >
DOS BACKUP file  |  1987-12-02  |  4.3 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: GETBTREE.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\GETBTREE.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 47 45 54 | 42 54 52 45 45 2e 43 00 |RARY\GET|BTREE.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 20 47 20 45 20 54 20 | 42 20 54 20 52 20 45 20 | G E T |B T R E |
|000000e0| 45 20 2e 20 43 20 20 20 | 52 6f 75 74 69 6e 65 73 |E . C |Routines|
|000000f0| 20 74 6f 20 72 65 61 64 | 20 74 68 65 20 69 6e 64 | to read| the ind|
|00000100| 65 78 20 6e 6f 64 65 20 | 72 65 63 6f 72 64 73 2e |ex node |records.|
|00000110| 20 2a 2f 0d 0a 0d 0a 2f | 2a 2d 2d 2d 2d 2d 2d 2d | */..../|*-------|
|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 0d 0a 20 | 2a 20 67 65 74 72 6f 6f |-----.. |* getroo|
|00000170| 74 28 29 20 72 65 74 75 | 72 6e 73 20 74 68 65 20 |t() retu|rns the |
|00000180| 70 6f 69 6e 74 65 72 20 | 76 61 6c 75 65 20 74 6f |pointer |value to|
|00000190| 20 74 68 65 20 42 2b 74 | 72 65 65 20 6e 6f 64 65 | the B+t|ree node|
|000001a0| 2e 20 20 20 54 68 65 0d | 0a 20 2a 20 72 6f 6f 74 |. The.|. * root|
|000001b0| 20 6e 6f 64 65 20 69 73 | 20 74 68 65 20 65 6e 74 | node is| the ent|
|000001c0| 72 79 20 70 6f 69 6e 74 | 20 69 6e 74 6f 20 74 68 |ry point| into th|
|000001d0| 65 20 42 2b 74 72 65 65 | 2e 20 20 54 68 65 20 6c |e B+tree|. The l|
|000001e0| 6f 63 61 74 69 6f 6e 20 | 6f 66 20 74 68 65 20 72 |ocation |of the r|
|000001f0| 6f 6f 74 20 6e 6f 64 65 | 0d 0a 20 2a 20 77 69 6c |oot node|.. * wil|
|00000200| 6c 20 63 68 61 6e 67 65 | 20 61 73 20 74 68 65 20 |l change| as the |
|00000210| 69 6e 64 65 78 20 67 72 | 6f 77 73 20 61 6e 64 20 |index gr|ows and |
|00000220| 63 6f 6e 74 72 61 63 74 | 73 2e 20 20 54 68 65 20 |contract|s. The |
|00000230| 70 6f 69 6e 74 65 72 20 | 74 6f 20 74 68 65 20 72 |pointer |to the r|
|00000240| 6f 6f 74 20 6e 6f 64 65 | 0d 0a 20 2a 20 69 73 20 |oot node|.. * is |
|00000250| 73 74 6f 72 65 64 20 69 | 6e 20 74 68 65 20 69 6e |stored i|n the in|
|00000260| 64 65 78 20 66 69 6c 65 | 20 61 74 20 61 6e 20 6f |dex file| at an o|
|00000270| 66 66 73 65 74 20 65 71 | 75 61 6c 20 74 6f 20 74 |ffset eq|ual to t|
|00000280| 68 65 20 69 6e 64 65 78 | 20 6c 65 6e 67 74 68 0d |he index| length.|
|00000290| 0a 20 2a 20 28 69 2e 65 | 2e 20 61 74 20 74 68 65 |. * (i.e|. at the|
|000002a0| 20 62 65 67 69 6e 6e 69 | 6e 67 20 6f 66 20 74 68 | beginni|ng of th|
|000002b0| 65 20 73 65 63 6f 6e 64 | 20 69 6e 64 65 78 20 62 |e second| index b|
|000002c0| 6c 6f 63 6b 29 2e 0d 0a | 20 2a 2d 2d 2d 2d 2d 2d |lock)...| *------|
|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 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000300| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000310| 2d 2d 2d 2d 2d 2a 2f 0d | 0a 0d 0a 23 69 6e 63 6c |-----*/.|...#incl|
|00000320| 75 64 65 20 22 63 62 74 | 72 65 65 2e 68 22 0d 0a |ude "cbt|ree.h"..|
|00000330| 0d 0a 6c 6f 6e 67 20 67 | 65 74 72 6f 6f 74 28 66 |..long g|etroot(f|
|00000340| 64 2c 20 70 74 72 6c 6f | 63 29 20 20 20 20 20 20 |d, ptrlo|c) |
|00000350| 20 20 20 2f 2a 20 67 65 | 74 20 62 74 72 65 65 20 | /* ge|t btree |
|00000360| 72 6f 6f 74 20 72 65 63 | 6f 72 64 20 70 6f 69 6e |root rec|ord poin|
|00000370| 74 65 72 20 2a 2f 0d 0a | 69 6e 74 20 20 66 64 3b |ter */..|int fd;|
|00000380| 0d 0a 6c 6f 6e 67 20 70 | 74 72 6c 6f 63 3b 20 2f |..long p|trloc; /|
|00000390| 2a 20 70 74 72 6c 6f 63 | 20 69 73 20 62 79 74 65 |* ptrloc| is byte|
|000003a0| 20 61 64 64 72 65 73 73 | 20 77 68 65 72 65 20 72 | address| where r|
|000003b0| 6f 6f 74 20 70 74 72 20 | 69 73 20 73 74 6f 72 65 |oot ptr |is store|
|000003c0| 64 20 2a 2f 0d 0a 7b 0d | 0a 20 20 20 65 78 74 65 |d */..{.|. exte|
|000003d0| 72 6e 20 6c 6f 6e 67 20 | 6c 73 65 65 6b 28 29 3b |rn long |lseek();|
|000003e0| 0d 0a 20 20 20 6c 6f 6e | 67 20 6c 62 75 66 66 20 |.. lon|g lbuff |
|000003f0| 3d 20 30 4c 3b 20 20 20 | 20 2f 2a 20 74 6f 20 61 |= 0L; | /* to a|
|00000400| 76 6f 69 64 20 4c 43 20 | 63 6f 6d 70 69 6c 65 72 |void LC |compiler|
|00000410| 20 77 61 72 6e 69 6e 67 | 20 2a 2f 0d 0a 0d 0a 20 | warning| */.... |
|00000420| 20 20 69 66 20 28 70 74 | 72 6c 6f 63 20 3c 20 31 | if (pt|rloc < 1|
|00000430| 4c 29 20 20 20 2f 2a 20 | 72 6f 6f 74 20 70 6f 69 |L) /* |root poi|
|00000440| 6e 74 65 72 20 69 73 20 | 4e 45 56 45 52 20 61 74 |nter is |NEVER at|
|00000450| 20 62 61 73 65 20 6f 66 | 20 66 69 6c 65 20 21 20 | base of| file ! |
|00000460| 2a 2f 0d 0a 20 20 20 20 | 20 20 63 6b 65 72 72 6f |*/.. | ckerro|
|00000470| 72 28 2d 20 43 4b 5f 49 | 4e 44 58 2c 20 22 31 32 |r(- CK_I|NDX, "12|
|00000480| 38 22 29 3b 0d 0a 20 20 | 20 69 66 20 28 28 6c 62 |8");.. | if ((lb|
|00000490| 75 66 66 20 3d 20 6c 73 | 65 65 6b 28 66 64 2c 20 |uff = ls|eek(fd, |
|000004a0| 28 6c 6f 6e 67 29 20 70 | 74 72 6c 6f 63 2c 20 30 |(long) p|trloc, 0|
|000004b0| 29 29 20 3d 3d 20 2d 31 | 4c 29 0d 0a 20 20 20 20 |)) == -1|L).. |
|000004c0| 20 20 63 6b 65 72 72 6f | 72 28 2d 20 43 4b 5f 53 | ckerro|r(- CK_S|
|000004d0| 45 45 4b 2c 20 22 34 37 | 22 29 3b 0d 0a 20 20 20 |EEK, "47|");.. |
|000004e0| 69 66 20 28 72 65 61 64 | 28 66 64 2c 20 28 63 68 |if (read|(fd, (ch|
|000004f0| 61 72 2a 29 26 6c 62 75 | 66 66 2c 20 73 69 7a 65 |ar*)&lbu|ff, size|
|00000500| 6f 66 28 6c 62 75 66 66 | 29 20 29 20 3d 3d 20 45 |of(lbuff|) ) == E|
|00000510| 52 52 29 0d 0a 20 20 20 | 20 20 20 63 6b 65 72 72 |RR).. | ckerr|
|00000520| 6f 72 28 2d 20 43 4b 5f | 52 45 41 44 2c 20 22 34 |or(- CK_|READ, "4|
|00000530| 38 22 29 3b 0d 0a 20 20 | 20 72 65 74 75 72 6e 28 |8");.. | return(|
|00000540| 6c 62 75 66 66 29 3b 0d | 0a 7d 0d 0a 0d 0a 0d 0a |lbuff);.|.}......|
|00000550| 76 6f 69 64 20 67 65 74 | 69 64 78 72 28 66 64 2c |void get|idxr(fd,|
|00000560| 20 72 65 63 6e 75 6d 2c | 20 69 64 78 62 6c 6b 2c | recnum,| idxblk,|
|00000570| 20 72 65 63 6c 65 6e 2c | 20 6b 65 79 6c 65 6e 29 | reclen,| keylen)|
|00000580| 20 20 20 2f 2a 20 67 65 | 74 20 62 74 72 65 65 20 | /* ge|t btree |
|00000590| 69 6e 64 65 78 20 72 65 | 63 6f 72 64 20 20 20 2a |index re|cord *|
|000005a0| 2f 0d 0a 69 6e 74 20 66 | 64 3b 0d 0a 6c 6f 6e 67 |/..int f|d;..long|
|000005b0| 20 72 65 63 6e 75 6d 3b | 0d 0a 42 54 49 44 58 42 | recnum;|..BTIDXB|
|000005c0| 4c 4b 20 2a 69 64 78 62 | 6c 6b 3b 0d 0a 75 6e 73 |LK *idxb|lk;..uns|
|000005d0| 69 67 6e 65 64 20 72 65 | 63 6c 65 6e 3b 0d 0a 75 |igned re|clen;..u|
|000005e0| 6e 73 69 67 6e 65 64 20 | 6b 65 79 6c 65 6e 3b 0d |nsigned |keylen;.|
|000005f0| 0a 7b 0d 0a 20 20 20 65 | 78 74 65 72 6e 20 20 20 |.{.. e|xtern |
|00000600| 6c 6f 6e 67 20 20 20 20 | 6c 73 65 65 6b 28 29 3b |long |lseek();|
|00000610| 0d 0a 20 20 20 65 78 74 | 65 72 6e 20 20 20 69 6e |.. ext|ern in|
|00000620| 74 20 20 20 73 74 72 6c | 65 6e 28 29 3b 0d 0a 20 |t strl|en();.. |
|00000630| 20 20 65 78 74 65 72 6e | 20 20 20 76 6f 69 64 20 | extern| void |
|00000640| 20 20 20 66 72 65 65 28 | 29 3b 0d 0a 20 20 20 65 | free(|);.. e|
|00000650| 78 74 65 72 6e 20 20 20 | 63 68 61 72 20 2a 73 74 |xtern |char *st|
|00000660| 72 63 70 79 28 29 2c 20 | 2a 73 74 72 6e 6e 63 70 |rcpy(), |*strnncp|
|00000670| 79 28 29 2c 20 2a 63 61 | 6c 6c 6f 63 28 29 2c 20 |y(), *ca|lloc(), |
|00000680| 2a 73 74 72 73 61 76 65 | 28 29 3b 0d 0a 20 20 20 |*strsave|();.. |
|00000690| 63 68 61 72 20 20 20 2a | 62 75 66 66 3b 0d 0a 20 |char *|buff;.. |
|000006a0| 20 20 75 77 6f 72 64 20 | 20 2a 75 70 74 72 3b 0d | uword | *uptr;.|
|000006b0| 0a 20 20 20 6c 6f 6e 67 | 20 20 20 2a 6c 70 74 72 |. long| *lptr|
|000006c0| 3b 0d 0a 20 20 20 63 68 | 61 72 20 20 20 2a 63 70 |;.. ch|ar *cp|
|000006d0| 74 72 3b 0d 0a 20 20 20 | 72 65 67 69 73 74 65 72 |tr;.. |register|
|000006e0| 20 75 77 6f 72 64 20 75 | 3b 0d 0a 23 69 66 20 4e | uword u|;..#if N|
|000006f0| 4f 41 4c 49 47 4e 0d 0a | 20 20 20 75 77 6f 72 64 |OALIGN..| uword|
|00000700| 20 6c 65 6e 3b 0d 0a 23 | 65 6e 64 69 66 0d 0a 0d | len;..#|endif...|
|00000710| 0a 20 20 20 69 66 20 28 | 28 62 75 66 66 20 3d 20 |. if (|(buff = |
|00000720| 63 61 6c 6c 6f 63 28 72 | 65 63 6c 65 6e 20 2b 20 |calloc(r|eclen + |
|00000730| 31 2c 20 53 5a 43 48 41 | 52 29 29 20 3d 3d 20 4e |1, SZCHA|R)) == N|
|00000740| 55 4c 4c 29 20 20 20 2f | 2a 20 6d 61 69 6e 20 62 |ULL) /|* main b|
|00000750| 75 66 66 65 72 20 2a 2f | 0d 0a 20 20 20 7b 0d 0a |uffer */|.. {..|
|00000760| 23 69 66 20 30 31 0d 0a | 70 72 69 6e 74 66 28 22 |#if 01..|printf("|
|00000770| 5c 6e 67 65 74 62 74 72 | 65 65 2e 63 3a 67 69 76 |\ngetbtr|ee.c:giv|
|00000780| 65 69 64 78 72 3a 20 63 | 61 6e 27 74 20 67 65 74 |eidxr: c|an't get|
|00000790| 20 25 75 20 62 79 74 65 | 73 20 6f 66 20 6d 65 6d | %u byte|s of mem|
|000007a0| 6f 72 79 22 2c 20 72 65 | 63 6c 65 6e 20 2b 20 31 |ory", re|clen + 1|
|000007b0| 29 3b 0d 0a 23 65 6e 64 | 69 66 0d 0a 20 20 20 20 |);..#end|if.. |
|000007c0| 20 20 63 6b 65 72 72 6f | 72 28 2d 20 43 4b 5f 4e | ckerro|r(- CK_N|
|000007d0| 4f 4d 45 4d 2c 20 22 34 | 39 22 29 3b 0d 0a 20 20 |OMEM, "4|9");.. |
|000007e0| 20 7d 0d 0a 23 69 66 20 | 30 0d 0a 70 72 69 6e 74 | }..#if |0..print|
|000007f0| 66 28 22 5c 6e 67 65 74 | 62 74 72 65 65 3a 20 72 |f("\nget|btree: r|
|00000800| 65 61 64 69 6e 67 20 72 | 65 63 6f 72 64 20 23 20 |eading r|ecord # |
|00000810| 25 6c 75 22 2c 20 72 65 | 63 6e 75 6d 29 3b 0d 0a |%lu", re|cnum);..|
|00000820| 23 65 6e 64 69 66 0d 0a | 0d 0a 20 20 20 2f 2a 20 |#endif..|.. /* |
|00000830| 6c 6f 63 61 74 65 20 6d | 61 69 6e 74 2e 20 69 6e |locate m|aint. in|
|00000840| 66 6f 2e 20 20 20 20 2a | 2f 0d 0a 20 20 20 69 66 |fo. *|/.. if|
|00000850| 20 28 62 74 73 65 65 6b | 28 66 64 2c 20 72 65 63 | (btseek|(fd, rec|
|00000860| 6e 75 6d 2c 20 72 65 63 | 6c 65 6e 29 20 3d 3d 20 |num, rec|len) == |
|00000870| 2d 31 4c 29 0d 0a 20 20 | 20 20 20 20 63 6b 65 72 |-1L).. | cker|
|00000880| 72 6f 72 28 2d 20 43 4b | 5f 53 45 45 4b 2c 20 22 |ror(- CK|_SEEK, "|
|00000890| 35 30 22 29 3b 0d 0a 20 | 20 20 69 66 20 28 72 65 |50");.. | if (re|
|000008a0| 61 64 28 66 64 2c 20 62 | 75 66 66 2c 20 28 69 6e |ad(fd, b|uff, (in|
|000008b0| 74 29 72 65 63 6c 65 6e | 29 20 3d 3d 20 45 52 52 |t)reclen|) == ERR|
|000008c0| 29 0d 0a 20 20 20 20 20 | 20 63 6b 65 72 72 6f 72 |).. | ckerror|
|000008d0| 28 2d 20 43 4b 5f 52 45 | 41 44 2c 20 22 35 31 22 |(- CK_RE|AD, "51"|
|000008e0| 29 3b 0d 0a 0d 0a 20 20 | 20 2f 2a 20 75 73 65 20 |);.... | /* use |
|000008f0| 70 6f 69 6e 74 65 72 73 | 20 74 6f 20 63 61 73 74 |pointers| to cast|
|00000900| 20 64 61 74 61 20 74 79 | 70 65 73 20 66 72 6f 6d | data ty|pes from|
|00000910| 20 62 75 66 66 20 69 6e | 74 6f 20 73 74 72 75 63 | buff in|to struc|
|00000920| 74 2e 20 2a 2f 0d 0a 20 | 20 20 75 70 74 72 20 3d |t. */.. | uptr =|
|00000930| 20 28 75 77 6f 72 64 20 | 2a 29 62 75 66 66 3b 20 | (uword |*)buff; |
|00000940| 20 20 20 20 20 20 20 20 | 20 20 20 2f 2a 20 73 74 | | /* st|
|00000950| 61 72 74 20 77 69 74 68 | 20 74 68 65 20 75 6e 73 |art with| the uns|
|00000960| 69 67 6e 65 64 20 77 6f | 72 64 73 20 2a 2f 0d 0a |igned wo|rds */..|
|00000970| 20 20 20 69 64 78 62 6c | 6b 2d 3e 62 6c 6b 74 79 | idxbl|k->blkty|
|00000980| 70 65 20 3d 20 2a 75 70 | 74 72 2b 2b 3b 0d 0a 20 |pe = *up|tr++;.. |
|00000990| 20 20 69 64 78 62 6c 6b | 2d 3e 63 65 6c 6c 69 63 | idxblk|->cellic|
|000009a0| 6e 74 20 3d 20 2a 75 70 | 74 72 2b 2b 3b 0d 0a 23 |nt = *up|tr++;..#|
|000009b0| 69 66 20 30 0d 0a 70 72 | 69 6e 74 66 28 22 5c 6e |if 0..pr|intf("\n|
|000009c0| 67 65 74 62 74 72 65 65 | 30 3a 20 69 64 78 62 6c |getbtree|0: idxbl|
|000009d0| 6b 2d 3e 63 65 6c 6c 69 | 63 6e 74 20 3d 20 25 78 |k->celli|cnt = %x|
|000009e0| 22 2c 20 69 64 78 62 6c | 6b 2d 3e 63 65 6c 6c 69 |", idxbl|k->celli|
|000009f0| 63 6e 74 29 3b 0d 0a 23 | 65 6e 64 69 66 0d 0a 0d |cnt);..#|endif...|
|00000a00| 0a 20 20 20 6c 70 74 72 | 20 3d 20 28 6c 6f 6e 67 |. lptr| = (long|
|00000a10| 20 2a 29 75 70 74 72 3b | 20 20 20 20 20 20 20 20 | *)uptr;| |
|00000a20| 20 20 20 2f 2a 20 6e 6f | 77 20 64 6f 20 74 68 65 | /* no|w do the|
|00000a30| 20 6c 6f 6e 67 73 20 2a | 2f 0d 0a 20 20 20 69 64 | longs *|/.. id|
|00000a40| 78 62 6c 6b 2d 3e 66 77 | 64 70 61 67 65 20 3d 20 |xblk->fw|dpage = |
|00000a50| 2a 6c 70 74 72 2b 2b 3b | 0d 0a 20 20 20 69 64 78 |*lptr++;|.. idx|
|00000a60| 62 6c 6b 2d 3e 62 77 64 | 70 61 67 65 20 3d 20 2a |blk->bwd|page = *|
|00000a70| 6c 70 74 72 2b 2b 3b 0d | 0a 23 69 66 20 4e 4f 41 |lptr++;.|.#if NOA|
|00000a80| 4c 49 47 4e 0d 0a 20 20 | 20 63 70 74 72 20 3d 20 |LIGN.. | cptr = |
|00000a90| 28 63 68 61 72 20 2a 29 | 28 6c 70 74 72 20 2b 20 |(char *)|(lptr + |
|00000aa0| 31 29 3b 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |1); | |
|00000ab0| 20 2f 2a 20 6b 65 79 20 | 69 73 20 6e 65 78 74 20 | /* key |is next |
|00000ac0| 74 6f 20 70 6f 69 6e 74 | 65 72 20 2a 2f 0d 0a 23 |to point|er */..#|
|00000ad0| 65 6c 73 65 0d 0a 20 20 | 20 63 70 74 72 20 3d 20 |else.. | cptr = |
|00000ae0| 28 63 68 61 72 20 2a 29 | 28 6c 70 74 72 20 2b 20 |(char *)|(lptr + |
|00000af0| 69 64 78 62 6c 6b 2d 3e | 63 65 6c 6c 69 63 6e 74 |idxblk->|cellicnt|
|00000b00| 29 3b 20 20 2f 2a 20 70 | 74 72 27 73 20 74 6f 67 |); /* p|tr's tog|
|00000b10| 65 74 68 65 72 2c 20 74 | 68 65 6e 20 6b 65 79 73 |ether, t|hen keys|
|00000b20| 20 2a 2f 0d 0a 23 65 6e | 64 69 66 0d 0a 20 20 20 | */..#en|dif.. |
|00000b30| 66 6f 72 20 28 75 20 3d | 20 30 3b 20 75 20 3c 20 |for (u =| 0; u < |
|00000b40| 69 64 78 62 6c 6b 2d 3e | 63 65 6c 6c 69 63 6e 74 |idxblk->|cellicnt|
|00000b50| 3b 20 2b 2b 75 29 0d 0a | 20 20 20 7b 0d 0a 23 69 |; ++u)..| {..#i|
|00000b60| 66 20 30 0d 0a 70 72 69 | 6e 74 66 28 22 5c 6e 67 |f 0..pri|ntf("\ng|
|00000b70| 65 74 62 74 72 65 65 31 | 3a 20 63 70 74 72 20 3d |etbtree1|: cptr =|
|00000b80| 20 25 6c 78 2c 20 62 75 | 66 66 20 3d 20 25 6c 78 | %lx, bu|ff = %lx|
|00000b90| 2c 20 63 70 74 72 20 2d | 20 62 75 66 66 20 3d 20 |, cptr -| buff = |
|00000ba0| 25 78 2c 20 72 65 63 6c | 65 6e 20 3d 20 25 78 22 |%x, recl|en = %x"|
|00000bb0| 2c 0d 0a 20 20 20 20 20 | 20 63 70 74 72 2c 20 62 |,.. | cptr, b|
|00000bc0| 75 66 66 2c 20 63 70 74 | 72 20 2d 20 62 75 66 66 |uff, cpt|r - buff|
|00000bd0| 2c 20 72 65 63 6c 65 6e | 29 3b 0d 0a 23 65 6e 64 |, reclen|);..#end|
|00000be0| 69 66 0d 0a 20 20 20 20 | 20 20 69 64 78 62 6c 6b |if.. | idxblk|
|00000bf0| 2d 3e 62 74 70 61 67 65 | 5b 75 5d 2e 62 74 70 74 |->btpage|[u].btpt|
|00000c00| 72 20 3d 20 2a 6c 70 74 | 72 2b 2b 3b 0d 0a 20 20 |r = *lpt|r++;.. |
|00000c10| 20 20 20 20 69 66 20 28 | 69 64 78 62 6c 6b 2d 3e | if (|idxblk->|
|00000c20| 62 6c 6b 61 6c 6c 6f 63 | 20 3e 20 75 29 20 20 20 |blkalloc| > u) |
|00000c30| 20 20 20 20 20 20 20 2f | 2a 20 6d 65 6d 6f 72 79 | /|* memory|
|00000c40| 20 61 6c 72 65 61 64 79 | 20 61 6c 6c 6f 63 61 74 | already| allocat|
|00000c50| 65 64 20 20 20 20 2a 2f | 0d 0a 20 20 20 20 20 20 |ed */|.. |
|00000c60| 20 20 20 73 74 72 6e 6e | 63 70 79 28 69 64 78 62 | strnn|cpy(idxb|
|00000c70| 6c 6b 2d 3e 62 74 70 61 | 67 65 5b 75 5d 2e 73 6b |lk->btpa|ge[u].sk|
|00000c80| 65 79 6e 6d 65 2c 20 63 | 70 74 72 2c 20 6b 65 79 |eynme, c|ptr, key|
|00000c90| 6c 65 6e 29 3b 0d 0a 20 | 20 20 20 20 20 65 6c 73 |len);.. | els|
|00000ca0| 65 0d 0a 20 20 20 20 20 | 20 7b 0d 0a 20 20 20 20 |e.. | {.. |
|00000cb0| 20 20 20 20 20 69 64 78 | 62 6c 6b 2d 3e 62 74 70 | idx|blk->btp|
|00000cc0| 61 67 65 5b 75 5d 2e 73 | 6b 65 79 6e 6d 65 20 3d |age[u].s|keynme =|
|00000cd0| 20 73 74 72 73 61 76 65 | 28 63 70 74 72 2c 20 6b | strsave|(cptr, k|
|00000ce0| 65 79 6c 65 6e 29 3b 20 | 2f 2a 20 61 6c 6c 6f 63 |eylen); |/* alloc|
|00000cf0| 20 6d 65 6d 20 2a 2f 0d | 0a 20 20 20 20 20 20 20 | mem */.|. |
|00000d00| 20 20 69 64 78 62 6c 6b | 2d 3e 62 6c 6b 61 6c 6c | idxblk|->blkall|
|00000d10| 6f 63 2b 2b 3b 0d 0a 20 | 20 20 20 20 20 7d 0d 0a |oc++;.. | }..|
|00000d20| 2f 2a 20 4c 6f 77 2d 62 | 79 74 65 20 48 69 67 68 |/* Low-b|yte High|
|00000d30| 2d 62 79 74 65 20 6f 72 | 64 65 72 20 2a 2f 0d 0a |-byte or|der */..|
|00000d40| 23 69 66 20 4e 4f 41 4c | 49 47 4e 0d 0a 20 20 20 |#if NOAL|IGN.. |
|00000d50| 20 20 20 63 70 74 72 20 | 2b 3d 20 28 6c 65 6e 20 | cptr |+= (len |
|00000d60| 3d 20 73 74 72 6c 65 6e | 28 63 70 74 72 29 20 2b |= strlen|(cptr) +|
|00000d70| 20 31 29 20 2b 20 73 69 | 7a 65 6f 66 28 6c 6f 6e | 1) + si|zeof(lon|
|00000d80| 67 29 3b 20 20 20 2f 2a | 20 73 6b 69 70 20 6f 76 |g); /*| skip ov|
|00000d90| 65 72 20 6c 6f 6e 67 20 | 2a 2f 0d 0a 20 20 20 20 |er long |*/.. |
|00000da0| 20 20 6c 70 74 72 20 3d | 20 28 6c 6f 6e 67 20 2a | lptr =| (long *|
|00000db0| 29 28 28 63 68 61 72 20 | 2a 29 6c 70 74 72 20 2b |)((char |*)lptr +|
|00000dc0| 20 6c 65 6e 29 3b 20 20 | 20 20 20 20 20 20 20 20 | len); | |
|00000dd0| 20 20 20 20 20 2f 2a 20 | 73 6b 69 70 20 6f 76 65 | /* |skip ove|
|00000de0| 72 20 73 74 72 20 20 20 | 20 2a 2f 0d 0a 23 65 6c |r str | */..#el|
|00000df0| 73 65 20 20 20 2f 2a 20 | 4c 6f 77 2d 62 79 74 65 |se /* |Low-byte|
|00000e00| 20 48 69 67 68 2d 62 79 | 74 65 20 6f 72 64 65 72 | High-by|te order|
|00000e10| 20 2a 2f 0d 0a 20 20 20 | 20 20 20 63 70 74 72 20 | */.. | cptr |
|00000e20| 2b 3d 20 73 74 72 6c 65 | 6e 28 63 70 74 72 29 20 |+= strle|n(cptr) |
|00000e30| 2b 20 31 3b 20 20 20 20 | 2f 2a 20 70 6f 69 6e 74 |+ 1; |/* point|
|00000e40| 20 74 6f 20 6e 65 78 74 | 20 73 74 72 69 6e 67 20 | to next| string |
|00000e50| 6c 6f 63 61 74 69 6f 6e | 20 2a 2f 0d 0a 23 65 6e |location| */..#en|
|00000e60| 64 69 66 0d 0a 0d 0a 23 | 69 66 20 30 0d 0a 70 72 |dif....#|if 0..pr|
|00000e70| 69 6e 74 66 28 22 5c 6e | 67 65 74 62 74 72 65 65 |intf("\n|getbtree|
|00000e80| 32 3a 20 63 70 74 72 20 | 3d 20 25 6c 78 2c 20 62 |2: cptr |= %lx, b|
|00000e90| 75 66 66 20 3d 20 25 6c | 78 2c 20 63 70 74 72 20 |uff = %l|x, cptr |
|00000ea0| 2d 20 62 75 66 66 20 3d | 20 25 78 2c 20 72 65 63 |- buff =| %x, rec|
|00000eb0| 6c 65 6e 20 3d 20 25 78 | 22 2c 0d 0a 20 20 20 20 |len = %x|",.. |
|00000ec0| 20 20 63 70 74 72 2c 20 | 62 75 66 66 2c 20 63 70 | cptr, |buff, cp|
|00000ed0| 74 72 20 2d 20 62 75 66 | 66 2c 20 72 65 63 6c 65 |tr - buf|f, recle|
|00000ee0| 6e 29 3b 0d 0a 70 72 69 | 6e 74 66 28 22 5c 6e 67 |n);..pri|ntf("\ng|
|00000ef0| 65 74 62 74 72 65 65 3a | 20 62 74 70 61 67 65 5b |etbtree:| btpage[|
|00000f00| 25 75 5d 2e 73 6b 65 79 | 6e 6d 65 20 3d 20 27 25 |%u].skey|nme = '%|
|00000f10| 73 27 2c 20 2e 62 74 70 | 74 72 20 3d 20 25 6c 75 |s', .btp|tr = %lu|
|00000f20| 22 2c 0d 0a 20 20 20 20 | 20 20 75 2c 20 69 64 78 |",.. | u, idx|
|00000f30| 62 6c 6b 2d 3e 62 74 70 | 61 67 65 5b 75 5d 2e 73 |blk->btp|age[u].s|
|00000f40| 6b 65 79 6e 6d 65 2c 20 | 69 64 78 62 6c 6b 2d 3e |keynme, |idxblk->|
|00000f50| 62 74 70 61 67 65 5b 75 | 5d 2e 62 74 70 74 72 29 |btpage[u|].btptr)|
|00000f60| 3b 0d 0a 23 65 6e 64 69 | 66 0d 0a 20 20 20 20 20 |;..#endi|f.. |
|00000f70| 20 69 66 20 28 28 63 70 | 74 72 20 2d 20 62 75 66 | if ((cp|tr - buf|
|00000f80| 66 29 20 2d 20 73 69 7a | 65 6f 66 28 6c 6f 6e 67 |f) - siz|eof(long|
|00000f90| 29 20 3e 20 72 65 63 6c | 65 6e 29 0d 0a 20 20 20 |) > recl|en).. |
|00000fa0| 20 20 20 20 20 20 63 6b | 65 72 72 6f 72 28 2d 20 | ck|error(- |
|00000fb0| 43 4b 5f 49 4e 44 58 2c | 20 22 38 31 22 29 3b 0d |CK_INDX,| "81");.|
|00000fc0| 0a 20 20 20 7d 0d 0a 20 | 20 20 46 52 45 45 28 62 |. }.. | FREE(b|
|00000fd0| 75 66 66 29 3b 0d 0a 7d | 0d 0a 0d 0a 2f 2a 20 73 |uff);..}|..../* s|
|00000fe0| 74 72 73 61 76 65 28 29 | 3a 20 61 6c 6c 6f 63 20 |trsave()|: alloc |
|00000ff0| 6e 20 62 79 74 65 73 20 | 66 6f 72 20 73 61 76 69 |n bytes |for savi|
|00001000| 6e 67 20 73 74 72 69 6e | 67 20 73 20 61 6e 64 20 |ng strin|g s and |
|00001010| 72 65 74 75 72 6e 20 70 | 6f 69 6e 74 65 72 20 74 |return p|ointer t|
|00001020| 6f 20 73 20 2a 2f 0d 0a | 0d 0a 63 68 61 72 20 2a |o s */..|..char *|
|00001030| 73 74 72 73 61 76 65 28 | 73 2c 20 6e 29 0d 0a 63 |strsave(|s, n)..c|
|00001040| 68 61 72 20 2a 73 3b 0d | 0a 75 69 6e 74 20 20 20 |har *s;.|.uint |
|00001050| 20 6e 3b 0d 0a 7b 0d 0a | 20 20 20 65 78 74 65 72 | n;..{..| exter|
|00001060| 6e 20 63 68 61 72 20 2a | 73 74 72 6e 6e 63 70 79 |n char *|strnncpy|
|00001070| 28 29 2c 20 2a 63 61 6c | 6c 6f 63 28 29 3b 0d 0a |(), *cal|loc();..|
|00001080| 20 20 20 63 68 61 72 20 | 2a 70 3b 0d 0a 0d 0a 20 | char |*p;.... |
|00001090| 20 20 69 66 20 28 28 70 | 20 3d 20 63 61 6c 6c 6f | if ((p| = callo|
|000010a0| 63 28 6e 20 2b 20 31 2c | 20 53 5a 43 48 41 52 29 |c(n + 1,| SZCHAR)|
|000010b0| 29 20 3d 3d 20 4e 55 4c | 4c 29 0d 0a 20 20 20 20 |) == NUL|L).. |
|000010c0| 20 20 63 6b 65 72 72 6f | 72 28 2d 20 43 4b 5f 4e | ckerro|r(- CK_N|
|000010d0| 4f 4d 45 4d 2c 20 22 35 | 36 22 29 3b 0d 0a 0d 0a |OMEM, "5|6");....|
|000010e0| 20 20 20 73 74 72 6e 6e | 63 70 79 28 70 2c 20 73 | strnn|cpy(p, s|
|000010f0| 2c 20 6e 29 3b 0d 0a 20 | 20 20 72 65 74 75 72 6e |, n);.. | return|
|00001100| 20 28 70 29 3b 0d 0a 7d | 0d 0a 0d 0a | (p);..}|.... |
+--------+-------------------------+-------------------------+--------+--------+