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: GIVEIDXR.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\GIVEIDXR.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 49 56 | 45 49 44 58 52 2e 43 00 |RARY\GIV|EIDXR.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 67 20 69 20 76 20 | 65 20 69 20 64 20 78 20 | g i v |e i d x |
|000000e0| 72 20 2e 20 63 20 20 38 | 2f 30 32 2f 38 34 20 20 |r . c 8|/02/84 |
|000000f0| 2a 2f 0d 0a 0d 0a 2f 2a | 2d 2d 2d 2d 2d 2d 2d 2d |*/..../*|--------|
|00000100| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000110| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 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 20 0d 0a 20 | 2a 20 67 69 76 65 69 64 |---- .. |* giveid|
|00000150| 78 72 28 29 20 69 73 20 | 75 73 65 64 20 74 6f 20 |xr() is |used to |
|00000160| 61 6c 6c 6f 63 61 74 65 | 20 69 6e 64 65 78 20 70 |allocate| index p|
|00000170| 61 67 65 73 20 61 6e 64 | 2f 6f 72 20 64 61 74 61 |ages and|/or data|
|00000180| 20 72 65 63 6f 72 64 73 | 2e 20 20 49 74 20 0d 0a | records|. It ..|
|00000190| 20 2a 20 75 73 65 73 20 | 74 68 65 20 70 72 65 76 | * uses |the prev|
|000001a0| 69 6f 75 73 6c 79 20 69 | 6e 69 74 69 61 6c 69 7a |iously i|nitializ|
|000001b0| 65 64 20 68 65 61 64 65 | 72 20 72 65 63 6f 72 64 |ed heade|r record|
|000001c0| 20 74 6f 20 61 6c 6c 6f | 63 61 74 65 20 6e 65 77 | to allo|cate new|
|000001d0| 20 72 65 63 6f 72 64 73 | 2e 20 20 20 49 74 20 0d | records|. It .|
|000001e0| 0a 20 2a 20 77 69 6c 6c | 20 61 6c 6c 6f 63 61 74 |. * will| allocat|
|000001f0| 65 20 66 72 6f 6d 20 74 | 68 65 20 64 65 6c 65 74 |e from t|he delet|
|00000200| 65 64 20 72 65 63 6f 72 | 64 20 63 68 61 69 6e 20 |ed recor|d chain |
|00000210| 66 69 72 73 74 20 69 66 | 20 74 68 65 72 65 20 61 |first if| there a|
|00000220| 72 65 20 64 65 6c 65 74 | 65 64 20 0d 0a 20 2a 20 |re delet|ed .. * |
|00000230| 72 65 63 6f 72 64 73 20 | 69 6e 20 74 68 65 20 66 |records |in the f|
|00000240| 69 6c 65 20 6f 74 68 65 | 72 77 69 73 65 20 72 65 |ile othe|rwise re|
|00000250| 63 6f 72 64 73 20 61 72 | 65 20 61 6c 6c 6f 63 61 |cords ar|e alloca|
|00000260| 74 65 64 20 66 72 6f 6d | 20 74 68 65 20 65 6e 64 |ted from| the end|
|00000270| 20 6f 66 20 74 68 65 20 | 0d 0a 20 2a 20 66 69 6c | of the |.. * fil|
|00000280| 65 2e 20 20 54 68 65 20 | 68 65 61 64 65 72 20 72 |e. The |header r|
|00000290| 65 63 6f 72 64 20 63 6f | 6e 73 69 73 74 73 20 6f |ecord co|nsists o|
|000002a0| 66 20 65 69 67 68 74 20 | 62 79 74 65 73 20 61 73 |f eight |bytes as|
|000002b0| 20 66 6f 6c 6c 6f 77 73 | 3a 20 20 62 79 74 65 73 | follows|: bytes|
|000002c0| 20 30 2d 33 20 69 73 20 | 0d 0a 20 2a 20 74 68 65 | 0-3 is |.. * the|
|000002d0| 20 64 65 6c 65 74 65 64 | 20 72 65 63 6f 72 64 20 | deleted| record |
|000002e0| 63 68 61 69 6e 3b 20 62 | 79 74 65 73 20 34 2d 37 |chain; b|ytes 4-7|
|000002f0| 20 69 73 20 74 68 65 20 | 65 6e 64 2d 6f 66 2d 66 | is the |end-of-f|
|00000300| 69 6c 65 20 70 6f 69 6e | 74 65 72 2e 0d 0a 20 2a |ile poin|ter... *|
|00000310| 20 0d 0a 20 2a 20 57 68 | 65 6e 20 74 68 65 20 66 | .. * Wh|en the f|
|00000320| 69 6c 65 6e 61 6d 65 20 | 69 73 20 70 72 65 73 65 |ilename |is prese|
|00000330| 6e 74 20 69 6e 20 74 68 | 65 20 62 74 63 6f 6d 6d |nt in th|e btcomm|
|00000340| 6f 20 6d 65 6d 62 65 72 | 20 64 74 61 6e 61 6d 65 |o member| dtaname|
|00000350| 2c 20 74 68 65 6e 20 74 | 68 69 73 20 0d 0a 20 2a |, then t|his .. *|
|00000360| 20 66 75 6e 63 74 69 6f | 6e 20 77 69 6c 6c 20 6f | functio|n will o|
|00000370| 70 65 6e 20 74 68 65 20 | 66 69 6c 65 2c 20 61 6c |pen the |file, al|
|00000380| 6c 6f 63 61 74 65 20 74 | 68 65 20 6e 65 77 20 72 |locate t|he new r|
|00000390| 65 63 6f 72 64 2c 20 74 | 68 65 6e 20 63 6c 6f 73 |ecord, t|hen clos|
|000003a0| 65 20 74 68 65 20 0d 0a | 20 2a 20 66 69 6c 65 2e |e the ..| * file.|
|000003b0| 20 20 54 68 69 73 20 74 | 65 63 68 6e 69 71 75 65 | This t|echnique|
|000003c0| 20 73 68 6f 75 6c 64 20 | 62 65 20 75 73 65 64 20 | should |be used |
|000003d0| 69 66 20 79 6f 75 20 73 | 65 65 6d 20 74 6f 20 62 |if you s|eem to b|
|000003e0| 65 20 65 78 70 65 72 69 | 65 6e 63 69 6e 67 20 0d |e experi|encing .|
|000003f0| 0a 20 2a 20 62 75 66 66 | 65 72 69 6e 67 20 70 72 |. * buff|ering pr|
|00000400| 6f 62 6c 65 6d 73 20 6f | 72 20 69 6e 20 6d 75 6c |oblems o|r in mul|
|00000410| 74 69 75 73 65 72 20 61 | 70 70 6c 69 63 61 74 69 |tiuser a|pplicati|
|00000420| 6f 6e 73 20 77 68 65 6e | 20 74 68 65 20 68 65 61 |ons when| the hea|
|00000430| 64 65 72 20 72 65 63 6f | 72 64 20 0d 0a 20 2a 20 |der reco|rd .. * |
|00000440| 75 70 64 61 74 65 20 6d | 75 73 74 20 62 65 20 66 |update m|ust be f|
|00000450| 6f 72 63 65 64 20 74 6f | 20 74 68 65 20 64 69 73 |orced to| the dis|
|00000460| 6b 2e 0d 0a 20 2a 20 0d | 0a 20 2a 20 49 66 20 79 |k... * .|. * If y|
|00000470| 6f 75 72 20 61 70 70 6c | 69 63 61 74 69 6f 6e 20 |our appl|ication |
|00000480| 77 69 6c 6c 20 69 73 73 | 75 65 20 49 4e 53 45 52 |will iss|ue INSER|
|00000490| 54 20 61 6e 64 2f 6f 72 | 20 44 45 4c 45 54 45 20 |T and/or| DELETE |
|000004a0| 63 61 6c 6c 73 2c 20 74 | 68 65 6e 0d 0a 20 2a 20 |calls, t|hen.. * |
|000004b0| 61 6c 6c 20 72 65 63 6f | 72 64 20 61 6c 6c 6f 63 |all reco|rd alloc|
|000004c0| 61 74 69 6f 6e 73 20 61 | 75 74 6f 6d 61 74 69 63 |ations a|utomatic|
|000004d0| 61 6c 6c 79 20 6f 63 63 | 75 72 20 74 68 72 6f 75 |ally occ|ur throu|
|000004e0| 67 68 20 63 61 6c 6c 73 | 20 74 6f 20 67 69 76 65 |gh calls| to give|
|000004f0| 69 64 78 72 28 29 20 74 | 6f 0d 0a 20 2a 20 65 6e |idxr() t|o.. * en|
|00000500| 73 75 72 65 20 70 72 6f | 70 65 72 20 6d 61 69 6e |sure pro|per main|
|00000510| 74 65 6e 61 6e 63 65 20 | 6f 66 20 74 68 65 20 66 |tenance |of the f|
|00000520| 69 6c 65 27 73 20 68 65 | 61 64 65 72 20 72 65 63 |ile's he|ader rec|
|00000530| 6f 72 64 2e 0d 0a 20 2a | 2d 2d 2d 2d 2d 2d 2d 2d |ord... *|--------|
|00000540| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000550| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000560| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000570| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000580| 2d 2d 2d 2a 2f 0d 0a 0d | 0a 23 69 6e 63 6c 75 64 |---*/...|.#includ|
|00000590| 65 20 22 63 62 74 72 65 | 65 2e 68 22 0d 0a 0d 0a |e "cbtre|e.h"....|
|000005a0| 6c 6f 6e 67 20 67 69 76 | 65 69 64 78 72 28 66 64 |long giv|eidxr(fd|
|000005b0| 2c 20 72 65 63 6c 65 6e | 2c 20 6c 6f 63 72 65 63 |, reclen|, locrec|
|000005c0| 2c 20 6c 6f 63 68 64 72 | 29 0d 0a 69 6e 74 20 6c |, lochdr|)..int l|
|000005d0| 6f 63 72 65 63 2c 20 6c | 6f 63 68 64 72 2c 20 66 |ocrec, l|ochdr, f|
|000005e0| 64 3b 0d 0a 75 6e 73 69 | 67 6e 65 64 20 72 65 63 |d;..unsi|gned rec|
|000005f0| 6c 65 6e 3b 0d 0a 7b 0d | 0a 20 20 20 65 78 74 65 |len;..{.|. exte|
|00000600| 72 6e 20 69 6e 74 20 6f | 70 65 6e 28 29 2c 20 63 |rn int o|pen(), c|
|00000610| 6c 6f 73 65 28 29 3b 0d | 0a 20 20 20 65 78 74 65 |lose();.|. exte|
|00000620| 72 6e 20 63 68 61 72 20 | 2a 63 61 6c 6c 6f 63 28 |rn char |*calloc(|
|00000630| 29 3b 0d 0a 20 20 20 65 | 78 74 65 72 6e 20 76 6f |);.. e|xtern vo|
|00000640| 69 64 20 66 72 65 65 28 | 29 3b 0d 0a 20 20 20 42 |id free(|);.. B|
|00000650| 54 42 4c 4b 48 44 52 20 | 66 72 65 65 73 70 63 62 |TBLKHDR |freespcb|
|00000660| 3b 0d 0a 20 20 20 6c 6f | 6e 67 20 6c 62 75 66 66 |;.. lo|ng lbuff|
|00000670| 20 3d 20 30 4c 3b 20 20 | 20 20 20 20 2f 2a 20 70 | = 0L; | /* p|
|00000680| 72 65 76 65 6e 74 20 4c | 61 74 74 69 63 65 20 77 |revent L|attice w|
|00000690| 61 72 6e 69 6e 67 20 2a | 2f 0d 0a 20 20 20 6c 6f |arning *|/.. lo|
|000006a0| 6e 67 20 69 6e 74 20 70 | 6f 73 2c 20 72 65 74 5f |ng int p|os, ret_|
|000006b0| 6c 6f 63 2c 20 6c 73 65 | 65 6b 28 29 3b 0d 0a 20 |loc, lse|ek();.. |
|000006c0| 20 20 63 68 61 72 20 63 | 68 72 62 75 66 5b 73 69 | char c|hrbuf[si|
|000006d0| 7a 65 6f 66 28 6c 6f 6e | 67 29 2b 32 5d 3b 0d 0a |zeof(lon|g)+2];..|
|000006e0| 20 20 20 69 6e 74 20 6c | 6b 3b 0d 0a 0d 0a 20 20 | int l|k;.... |
|000006f0| 20 72 65 74 5f 6c 6f 63 | 20 3d 20 30 4c 3b 0d 0a | ret_loc| = 0L;..|
|00000700| 0d 0a 20 20 20 69 66 20 | 28 6c 6f 63 68 64 72 20 |.. if |(lochdr |
|00000710| 3d 3d 20 31 29 7b 09 2f | 2a 20 68 65 61 64 65 72 |== 1){./|* header|
|00000720| 20 72 65 63 6f 72 64 20 | 77 61 73 20 6e 6f 74 20 | record |was not |
|00000730| 61 6c 72 65 61 64 79 20 | 6c 6f 63 6b 65 64 20 73 |already |locked s|
|00000740| 6f 20 6c 6f 63 6b 20 68 | 65 72 65 2e 20 2a 2f 0d |o lock h|ere. */.|
|00000750| 0a 20 20 20 20 20 20 6c | 6b 20 3d 20 30 3b 0d 0a |. l|k = 0;..|
|00000760| 20 20 20 20 20 20 77 68 | 69 6c 65 20 28 6c 6f 63 | wh|ile (loc|
|00000770| 6b 75 6e 6c 6b 28 66 64 | 2c 20 30 4c 2c 20 73 69 |kunlk(fd|, 0L, si|
|00000780| 7a 65 6f 66 28 42 54 42 | 4c 4b 48 44 52 29 2c 20 |zeof(BTB|LKHDR), |
|00000790| 4c 4f 43 4b 52 29 20 21 | 3d 20 31 29 0d 0a 20 20 |LOCKR) !|= 1).. |
|000007a0| 20 20 20 20 20 20 20 69 | 66 20 28 2b 2b 6c 6b 20 | i|f (++lk |
|000007b0| 3e 20 48 44 52 54 52 59 | 53 29 0d 0a 20 20 20 20 |> HDRTRY|S).. |
|000007c0| 20 20 20 20 20 20 20 20 | 67 6f 74 6f 20 67 69 76 | |goto giv|
|000007d0| 5f 30 65 78 69 74 3b 20 | 20 20 20 20 20 20 20 2f |_0exit; | /|
|000007e0| 2a 20 69 2e 65 2e 20 75 | 6e 61 62 6c 65 20 74 6f |* i.e. u|nable to|
|000007f0| 20 6c 6f 63 6b 20 68 65 | 61 64 65 72 20 72 65 63 | lock he|ader rec|
|00000800| 6f 72 64 20 2a 2f 0d 0a | 09 7d 0d 0a 0d 0a 20 20 |ord */..|.}.... |
|00000810| 20 67 65 74 66 68 64 72 | 28 26 66 72 65 65 73 70 | getfhdr|(&freesp|
|00000820| 63 62 2c 20 66 64 29 3b | 0d 0a 20 20 20 2f 2a 20 |cb, fd);|.. /* |
|00000830| 74 68 65 20 66 6f 6c 6c | 6f 77 69 6e 67 20 6d 61 |the foll|owing ma|
|00000840| 79 20 61 6c 73 6f 20 6e | 65 65 64 20 74 6f 20 63 |y also n|eed to c|
|00000850| 68 65 63 6b 20 66 6f 72 | 20 76 61 6c 69 64 20 65 |heck for| valid e|
|00000860| 6f 66 6c 73 74 20 2a 2f | 0d 0a 20 20 20 69 66 28 |oflst */|.. if(|
|00000870| 20 28 66 72 65 65 73 70 | 63 62 2e 66 72 65 65 6c | (freesp|cb.freel|
|00000880| 73 74 20 3c 20 32 29 20 | 7c 7c 20 28 66 72 65 65 |st < 2) ||| (free|
|00000890| 73 70 63 62 2e 66 72 65 | 65 6c 73 74 20 3e 3d 20 |spcb.fre|elst >= |
|000008a0| 66 72 65 65 73 70 63 62 | 2e 65 6f 66 6c 73 74 29 |freespcb|.eoflst)|
|000008b0| 20 29 20 7b 0d 0a 20 20 | 20 20 20 20 2f 2a 20 61 | ) {.. | /* a|
|000008c0| 6c 6c 6f 63 61 74 65 20 | 66 72 6f 6d 20 65 6f 66 |llocate |from eof|
|000008d0| 20 2a 2f 0d 0a 20 20 20 | 20 20 20 72 65 74 5f 6c | */.. | ret_l|
|000008e0| 6f 63 20 3d 20 66 72 65 | 65 73 70 63 62 2e 65 6f |oc = fre|espcb.eo|
|000008f0| 66 6c 73 74 2b 2b 3b 0d | 0a 20 20 20 20 20 20 66 |flst++;.|. f|
|00000900| 72 65 65 73 70 63 62 2e | 66 72 65 65 6c 73 74 20 |reespcb.|freelst |
|00000910| 3d 20 30 4c 3b 0d 0a 20 | 20 20 20 20 20 70 75 74 |= 0L;.. | put|
|00000920| 66 68 64 72 28 66 64 2c | 20 26 66 72 65 65 73 70 |fhdr(fd,| &freesp|
|00000930| 63 62 29 3b 0d 0a 0d 0a | 2f 2a 20 41 6d 69 67 61 |cb);....|/* Amiga|
|00000940| 44 4f 53 20 64 6f 65 73 | 20 6e 6f 74 20 61 6c 6c |DOS does| not all|
|00000950| 6f 77 20 79 6f 75 20 74 | 6f 20 73 65 65 6b 20 62 |ow you t|o seek b|
|00000960| 65 79 6f 6e 64 20 74 68 | 65 20 65 6e 64 20 6f 66 |eyond th|e end of|
|00000970| 20 61 20 66 69 6c 65 2e | 20 20 20 20 20 20 20 20 | a file.| |
|00000980| 20 2a 2f 0d 0a 2f 2a 20 | 54 68 69 73 20 69 73 20 | */../* |This is |
|00000990| 6e 6f 72 6d 61 6c 6c 79 | 20 4e 4f 54 20 61 20 70 |normally| NOT a p|
|000009a0| 72 6f 62 6c 65 6d 2e 20 | 20 20 48 6f 77 65 76 65 |roblem. | Howeve|
|000009b0| 72 2c 20 69 66 20 79 6f | 75 20 64 65 73 69 72 65 |r, if yo|u desire|
|000009c0| 20 74 6f 20 68 61 76 65 | 20 74 68 65 20 20 20 2a | to have| the *|
|000009d0| 2f 0d 0a 2f 2a 20 69 6e | 64 65 78 20 74 72 65 65 |/../* in|dex tree|
|000009e0| 20 61 6e 64 20 74 68 65 | 20 64 61 74 61 20 72 65 | and the| data re|
|000009f0| 63 6f 72 64 73 20 69 6e | 20 74 68 65 20 73 61 6d |cords in| the sam|
|00000a00| 65 20 66 69 6c 65 20 28 | 73 65 65 20 42 54 53 45 |e file (|see BTSE|
|00000a10| 54 55 50 20 20 20 20 20 | 20 20 20 20 2a 2f 0d 0a |TUP | */..|
|00000a20| 2f 2a 20 64 6f 63 75 6d | 65 6e 74 61 74 69 6f 6e |/* docum|entation|
|00000a30| 20 66 6f 72 20 66 75 72 | 74 68 65 72 20 72 65 73 | for fur|ther res|
|00000a40| 74 72 69 63 74 69 6f 6e | 73 20 6f 6e 20 74 68 69 |triction|s on thi|
|00000a50| 73 29 20 69 74 20 62 65 | 63 6f 6d 65 73 20 6e 65 |s) it be|comes ne|
|00000a60| 63 65 73 73 61 72 79 20 | 2a 2f 0d 0a 2f 2a 20 74 |cessary |*/../* t|
|00000a70| 6f 20 70 72 65 2d 65 78 | 74 65 6e 64 20 74 68 65 |o pre-ex|tend the|
|00000a80| 20 66 69 6c 65 2c 20 62 | 75 74 20 6f 6e 6c 79 20 | file, b|ut only |
|00000a90| 69 66 20 74 68 65 20 66 | 72 65 65 20 6c 69 73 74 |if the f|ree list|
|00000aa0| 20 69 73 20 65 6d 70 74 | 79 2e 20 20 20 20 20 20 | is empt|y. |
|00000ab0| 20 20 20 2a 2f 0d 0a 23 | 69 66 20 41 6d 69 67 61 | */..#|if Amiga|
|00000ac0| 44 4f 53 0d 0a 23 69 66 | 20 50 52 45 5f 45 58 54 |DOS..#if| PRE_EXT|
|00000ad0| 45 4e 44 0d 0a 20 20 20 | 20 20 20 69 66 20 28 28 |END.. | if ((|
|00000ae0| 63 70 20 3d 20 63 61 6c | 6c 6f 63 28 72 65 63 6c |cp = cal|loc(recl|
|00000af0| 65 6e 2c 20 53 5a 43 48 | 41 52 29 29 20 3d 3d 20 |en, SZCH|AR)) == |
|00000b00| 4e 55 4c 4c 29 0d 0a 20 | 20 20 20 20 20 20 20 20 |NULL).. | |
|00000b10| 63 6b 65 72 72 6f 72 28 | 2d 20 43 4b 5f 4e 4f 4d |ckerror(|- CK_NOM|
|00000b20| 45 4d 2c 20 22 31 30 35 | 22 29 3b 0d 0a 20 20 20 |EM, "105|");.. |
|00000b30| 20 20 20 69 66 20 28 62 | 74 73 65 65 6b 28 66 64 | if (b|tseek(fd|
|00000b40| 2c 20 72 65 74 5f 6c 6f | 63 2c 20 72 65 63 6c 65 |, ret_lo|c, recle|
|00000b50| 6e 29 20 3d 3d 20 2d 31 | 29 0d 0a 20 20 20 20 20 |n) == -1|).. |
|00000b60| 20 20 20 20 63 6b 65 72 | 72 6f 72 28 2d 20 43 4b | cker|ror(- CK|
|00000b70| 5f 53 45 45 4b 2c 20 22 | 31 30 36 22 29 3b 0d 0a |_SEEK, "|106");..|
|00000b80| 20 20 20 20 20 20 69 66 | 20 28 77 72 69 74 65 28 | if| (write(|
|00000b90| 66 64 2c 20 63 70 2c 20 | 72 65 63 6c 65 6e 29 20 |fd, cp, |reclen) |
|00000ba0| 3d 3d 20 45 52 52 29 0d | 0a 20 20 20 20 20 20 20 |== ERR).|. |
|00000bb0| 20 20 63 6b 65 72 72 6f | 72 28 2d 20 43 4b 5f 57 | ckerro|r(- CK_W|
|00000bc0| 52 49 54 2c 20 22 31 30 | 37 22 29 3b 0d 0a 20 20 |RIT, "10|7");.. |
|00000bd0| 20 20 20 20 46 52 45 45 | 28 63 70 29 3b 0d 0a 23 | FREE|(cp);..#|
|00000be0| 65 6e 64 69 66 0d 0a 23 | 65 6e 64 69 66 0d 0a 20 |endif..#|endif.. |
|00000bf0| 20 20 7d 0d 0a 20 20 20 | 65 6c 73 65 20 7b 20 20 | }.. |else { |
|00000c00| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000c10| 20 20 20 20 20 20 2f 2a | 20 61 6c 6c 6f 63 20 61 | /*| alloc a|
|00000c20| 6e 64 20 75 70 64 61 74 | 65 20 66 72 65 65 73 70 |nd updat|e freesp|
|00000c30| 63 62 20 20 20 20 2a 2f | 0d 0a 20 20 20 20 20 20 |cb */|.. |
|00000c40| 72 65 74 5f 6c 6f 63 20 | 3d 20 66 72 65 65 73 70 |ret_loc |= freesp|
|00000c50| 63 62 2e 66 72 65 65 6c | 73 74 3b 0d 0a 20 20 20 |cb.freel|st;.. |
|00000c60| 20 20 20 2f 2a 20 70 6f | 73 69 74 69 6f 6e 20 70 | /* po|sition p|
|00000c70| 6f 69 6e 74 65 72 20 66 | 6f 72 20 70 72 65 76 69 |ointer f|or previ|
|00000c80| 6f 75 73 6c 79 20 64 65 | 61 6c 6c 6f 63 61 74 65 |ously de|allocate|
|00000c90| 64 20 72 65 63 6f 72 64 | 73 20 20 20 2a 2f 0d 0a |d record|s */..|
|00000ca0| 20 20 20 20 20 20 70 6f | 73 20 3d 20 28 66 72 65 | po|s = (fre|
|00000cb0| 65 73 70 63 62 2e 66 72 | 65 65 6c 73 74 20 2d 20 |espcb.fr|eelst - |
|00000cc0| 31 4c 29 20 2a 20 72 65 | 63 6c 65 6e 3b 0d 0a 20 |1L) * re|clen;.. |
|00000cd0| 20 20 20 20 20 6c 6b 20 | 3d 20 30 3b 0d 0a 20 20 | lk |= 0;.. |
|00000ce0| 20 20 20 20 77 68 69 6c | 65 20 28 6c 6f 63 6b 75 | whil|e (locku|
|00000cf0| 6e 6c 6b 28 66 64 2c 20 | 70 6f 73 2c 20 72 65 63 |nlk(fd, |pos, rec|
|00000d00| 6c 65 6e 2c 20 4c 4f 43 | 4b 52 29 20 21 3d 20 31 |len, LOC|KR) != 1|
|00000d10| 29 0d 0a 20 20 20 20 20 | 20 20 20 20 69 66 20 28 |).. | if (|
|00000d20| 2b 2b 6c 6b 20 3e 20 48 | 44 52 54 52 59 53 29 7b |++lk > H|DRTRYS){|
|00000d30| 0d 0a 20 20 20 20 20 20 | 20 20 20 20 20 20 72 65 |.. | re|
|00000d40| 74 5f 6c 6f 63 20 3d 20 | 30 4c 3b 0d 0a 20 20 20 |t_loc = |0L;.. |
|00000d50| 20 20 20 20 20 20 20 20 | 20 67 6f 74 6f 20 67 69 | | goto gi|
|00000d60| 76 5f 31 65 78 69 74 3b | 20 20 2f 2a 20 69 2e 65 |v_1exit;| /* i.e|
|00000d70| 2e 20 75 6e 61 62 6c 65 | 20 74 6f 20 6c 6f 63 6b |. unable| to lock|
|00000d80| 20 66 72 65 65 20 6c 69 | 6e 6b 20 72 65 63 6f 72 | free li|nk recor|
|00000d90| 64 20 2a 2f 0d 0a 20 20 | 20 20 20 20 20 20 20 7d |d */.. | }|
|00000da0| 0d 0a 20 20 20 20 20 20 | 69 66 20 28 6c 73 65 65 |.. |if (lsee|
|00000db0| 6b 28 66 64 2c 20 70 6f | 73 2c 20 30 29 20 3d 3d |k(fd, po|s, 0) ==|
|00000dc0| 20 2d 31 4c 29 0d 0a 20 | 20 20 20 20 20 20 20 20 | -1L).. | |
|00000dd0| 63 6b 65 72 72 6f 72 28 | 2d 20 43 4b 5f 53 45 45 |ckerror(|- CK_SEE|
|00000de0| 4b 2c 20 22 33 32 22 29 | 3b 0d 0a 20 20 20 20 20 |K, "32")|;.. |
|00000df0| 20 69 66 20 28 72 65 61 | 64 28 66 64 2c 20 63 68 | if (rea|d(fd, ch|
|00000e00| 72 62 75 66 2c 20 73 69 | 7a 65 6f 66 28 6c 6f 6e |rbuf, si|zeof(lon|
|00000e10| 67 29 2b 32 29 20 3d 3d | 20 45 52 52 20 29 0d 0a |g)+2) ==| ERR )..|
|00000e20| 20 20 20 20 20 20 20 20 | 20 63 6b 65 72 72 6f 72 | | ckerror|
|00000e30| 28 2d 20 43 4b 5f 52 45 | 41 44 2c 20 22 33 31 22 |(- CK_RE|AD, "31"|
|00000e40| 29 3b 0d 0a 20 20 20 20 | 20 20 2f 2a 20 76 65 72 |);.. | /* ver|
|00000e50| 69 66 79 20 74 68 61 74 | 20 72 65 63 6f 72 64 20 |ify that| record |
|00000e60| 74 6f 20 61 6c 6c 6f 63 | 61 74 65 20 69 73 20 61 |to alloc|ate is a|
|00000e70| 20 64 65 6c 65 74 65 64 | 20 72 65 63 6f 72 64 20 | deleted| record |
|00000e80| 2a 2f 0d 0a 20 20 20 20 | 20 20 69 66 20 28 20 28 |*/.. | if ( (|
|00000e90| 63 68 72 62 75 66 5b 30 | 5d 20 3d 3d 20 27 7e 27 |chrbuf[0|] == '~'|
|00000ea0| 29 20 26 26 20 28 63 68 | 72 62 75 66 5b 35 5d 20 |) && (ch|rbuf[5] |
|00000eb0| 3d 3d 20 27 7e 27 29 20 | 29 7b 0d 0a 20 20 20 20 |== '~') |){.. |
|00000ec0| 20 20 20 20 20 6c 73 65 | 65 6b 28 66 64 2c 20 2d | lse|ek(fd, -|
|00000ed0| 35 4c 2c 20 31 29 3b 20 | 20 20 2f 2a 20 70 6f 73 |5L, 1); | /* pos|
|00000ee0| 20 62 61 63 6b 20 74 6f | 20 66 72 65 65 6c 73 74 | back to| freelst|
|00000ef0| 20 63 68 61 69 6e 20 6c | 69 6e 6b 20 2a 2f 0d 0a | chain l|ink */..|
|00000f00| 20 20 20 20 20 20 20 20 | 20 69 66 20 28 72 65 61 | | if (rea|
|00000f10| 64 28 66 64 2c 20 28 63 | 68 61 72 20 2a 29 26 6c |d(fd, (c|har *)&l|
|00000f20| 62 75 66 66 2c 20 73 69 | 7a 65 6f 66 28 6c 6f 6e |buff, si|zeof(lon|
|00000f30| 67 29 20 29 20 3d 3d 20 | 45 52 52 29 0d 0a 20 20 |g) ) == |ERR).. |
|00000f40| 20 20 20 20 20 20 20 20 | 20 20 63 6b 65 72 72 6f | | ckerro|
|00000f50| 72 28 2d 20 43 4b 5f 52 | 45 41 44 2c 20 22 33 33 |r(- CK_R|EAD, "33|
|00000f60| 22 29 3b 0d 0a 20 20 20 | 20 20 20 20 20 20 66 72 |");.. | fr|
|00000f70| 65 65 73 70 63 62 2e 66 | 72 65 65 6c 73 74 20 3d |eespcb.f|reelst =|
|00000f80| 20 6c 62 75 66 66 3b 20 | 2f 2a 20 6d 61 69 6e 74 | lbuff; |/* maint|
|00000f90| 61 69 6e 20 66 72 65 65 | 6c 73 74 20 63 68 61 69 |ain free|lst chai|
|00000fa0| 6e 20 2a 2f 0d 0a 20 20 | 20 20 20 20 20 20 20 69 |n */.. | i|
|00000fb0| 66 28 20 28 66 72 65 65 | 73 70 63 62 2e 66 72 65 |f( (free|spcb.fre|
|00000fc0| 65 6c 73 74 20 3c 20 32 | 29 20 7c 7c 0d 0a 20 20 |elst < 2|) ||.. |
|00000fd0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 28 66 72 | | (fr|
|00000fe0| 65 65 73 70 63 62 2e 66 | 72 65 65 6c 73 74 20 3e |eespcb.f|reelst >|
|00000ff0| 3d 20 66 72 65 65 73 70 | 63 62 2e 65 6f 66 6c 73 |= freesp|cb.eofls|
|00001000| 74 29 20 29 0d 0a 20 20 | 20 20 20 20 20 20 20 20 |t) ).. | |
|00001010| 20 20 66 72 65 65 73 70 | 63 62 2e 66 72 65 65 6c | freesp|cb.freel|
|00001020| 73 74 20 3d 20 30 4c 3b | 0d 0a 20 20 20 20 20 20 |st = 0L;|.. |
|00001030| 7d 0d 0a 20 20 20 20 20 | 20 65 6c 73 65 7b 20 2f |}.. | else{ /|
|00001040| 2a 20 72 65 63 6f 72 64 | 20 69 73 20 6e 6f 74 20 |* record| is not |
|00001050| 6d 61 72 6b 65 64 20 61 | 73 20 62 65 69 6e 67 20 |marked a|s being |
|00001060| 61 20 64 65 6c 65 74 65 | 64 20 72 65 63 6f 72 64 |a delete|d record|
|00001070| 20 2a 2f 0d 0a 20 20 20 | 20 20 20 20 20 20 20 20 | */.. | |
|00001080| 20 2f 2a 20 73 6f 20 64 | 6f 6e 27 74 20 63 68 61 | /* so d|on't cha|
|00001090| 6e 63 65 3b 20 61 6c 6c | 6f 63 61 74 65 20 66 72 |nce; all|ocate fr|
|000010a0| 6f 6d 20 65 6f 66 20 2a | 2f 0d 0a 20 20 20 20 20 |om eof *|/.. |
|000010b0| 20 20 20 20 72 65 74 5f | 6c 6f 63 20 3d 20 66 72 | ret_|loc = fr|
|000010c0| 65 65 73 70 63 62 2e 65 | 6f 66 6c 73 74 2b 2b 3b |eespcb.e|oflst++;|
|000010d0| 0d 0a 20 20 20 20 20 20 | 20 20 20 66 72 65 65 73 |.. | frees|
|000010e0| 70 63 62 2e 66 72 65 65 | 6c 73 74 20 3d 20 30 4c |pcb.free|lst = 0L|
|000010f0| 3b 0d 0a 20 20 20 20 20 | 20 7d 0d 0a 20 20 20 20 |;.. | }.. |
|00001100| 20 20 70 75 74 66 68 64 | 72 28 66 64 2c 20 26 66 | putfhd|r(fd, &f|
|00001110| 72 65 65 73 70 63 62 29 | 3b 0d 0a 20 20 20 20 20 |reespcb)|;.. |
|00001120| 20 6c 6f 63 6b 75 6e 6c | 6b 28 66 64 2c 20 28 6c | lockunl|k(fd, (l|
|00001130| 6f 6e 67 29 20 70 6f 73 | 2c 20 72 65 63 6c 65 6e |ong) pos|, reclen|
|00001140| 2c 20 55 4e 4c 4f 43 4b | 52 29 3b 0d 0a 20 20 20 |, UNLOCK|R);.. |
|00001150| 7d 0d 0a 20 20 20 69 66 | 28 6c 6f 63 72 65 63 20 |}.. if|(locrec |
|00001160| 3d 3d 20 31 29 7b 0d 0a | 20 20 20 20 20 20 6c 6b |== 1){..| lk|
|00001170| 20 3d 20 30 3b 0d 0a 20 | 20 20 20 20 20 77 68 69 | = 0;.. | whi|
|00001180| 6c 65 28 6c 6f 63 6b 75 | 6e 6c 6b 28 66 64 2c 20 |le(locku|nlk(fd, |
|00001190| 28 72 65 74 5f 6c 6f 63 | 20 2d 20 31 4c 29 20 2a |(ret_loc| - 1L) *|
|000011a0| 20 72 65 63 6c 65 6e 2c | 20 72 65 63 6c 65 6e 2c | reclen,| reclen,|
|000011b0| 20 4c 4f 43 4b 52 29 20 | 21 3d 20 31 29 0d 0a 20 | LOCKR) |!= 1).. |
|000011c0| 20 20 20 20 20 20 20 20 | 69 66 20 28 2b 2b 6c 6b | |if (++lk|
|000011d0| 20 3e 20 48 44 52 54 52 | 59 53 29 0d 0a 20 20 20 | > HDRTR|YS).. |
|000011e0| 20 20 20 20 20 20 20 20 | 20 72 65 74 5f 6c 6f 63 | | ret_loc|
|000011f0| 20 3d 20 30 3b 20 20 20 | 2f 2a 20 69 2e 65 2e 20 | = 0; |/* i.e. |
|00001200| 75 6e 61 62 6c 65 20 74 | 6f 20 6c 6f 63 6b 20 61 |unable t|o lock a|
|00001210| 6c 6c 6f 63 61 74 65 64 | 20 72 65 63 6f 72 64 20 |llocated| record |
|00001220| 2a 2f 0d 0a 20 20 20 7d | 0d 0a 67 69 76 5f 31 65 |*/.. }|..giv_1e|
|00001230| 78 69 74 3a 0d 0a 20 20 | 20 69 66 20 28 6c 6f 63 |xit:.. | if (loc|
|00001240| 68 64 72 20 3d 3d 20 31 | 29 09 20 20 2f 2a 20 68 |hdr == 1|). /* h|
|00001250| 65 61 64 65 72 20 72 65 | 63 6f 72 64 20 77 61 73 |eader re|cord was|
|00001260| 20 6c 6f 63 6b 65 64 20 | 69 6e 20 74 68 69 73 20 | locked |in this |
|00001270| 66 75 6e 63 74 69 6f 6e | 20 73 6f 20 75 6e 6c 6f |function| so unlo|
|00001280| 63 6b 2e 20 2a 2f 0d 0a | 20 20 20 20 20 20 6c 6f |ck. */..| lo|
|00001290| 63 6b 75 6e 6c 6b 28 66 | 64 2c 20 30 4c 2c 20 73 |ckunlk(f|d, 0L, s|
|000012a0| 69 7a 65 6f 66 28 42 54 | 42 4c 4b 48 44 52 29 2c |izeof(BT|BLKHDR),|
|000012b0| 20 55 4e 4c 4f 43 4b 52 | 29 3b 20 2f 2a 20 6e 6f | UNLOCKR|); /* no|
|000012c0| 77 20 75 6e 6c 6f 63 6b | 20 68 65 61 64 65 72 20 |w unlock| header |
|000012d0| 72 65 63 2e 20 2a 2f 0d | 0a 67 69 76 5f 30 65 78 |rec. */.|.giv_0ex|
|000012e0| 69 74 3a 0d 0a 20 20 20 | 72 65 74 75 72 6e 28 72 |it:.. |return(r|
|000012f0| 65 74 5f 6c 6f 63 29 3b | 0d 0a 7d 0d 0a |et_loc);|..}.. |
+--------+-------------------------+-------------------------+--------+--------+