home *** CD-ROM | disk | FTP | other *** search
open in:
MacOS 8.1
|
Win98
|
DOS
browse contents |
view JSON data
|
view as text
This file was processed as: SHell self-extracting ARchive
(archive/shar).
Confidence | Program | Detection | Match Type | Support
|
---|
100%
| dexvert
| Newsgroup Content (archive/news)
| magic
| Supported |
100%
| dexvert
| SHell self-extracting ARchive (archive/shar)
| magic
| Supported |
100%
| dexvert
| Internet Message Format (text/imf)
| magic
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| news or mail, ASCII text
| default
| |
100%
| checkBytes
| Printable ASCII
| default
| |
100%
| perlTextCheck
| Likely Text (Perl)
| default
| |
100%
| siegfried
| fmt/329 Shell Archive Format
| default
| |
100%
| detectItEasy
| Format: plain text[LF]
| default (weak)
| |
100%
| xdgMime
| message/rfc822
| default
|
|
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 53 75 62 6a 65 63 74 3a | 20 20 76 32 30 69 30 35 |Subject:| v20i05|
|00000010| 36 3a 20 20 4d 61 69 6e | 74 61 69 6e 20 6d 75 6c |6: Main|tain mul|
|00000020| 74 69 70 6c 65 20 64 61 | 74 61 62 61 73 65 73 20 |tiple da|tabases |
|00000030| 6f 66 20 74 65 78 74 75 | 61 6c 20 64 61 74 61 2c |of textu|al data,|
|00000040| 20 50 61 72 74 30 31 2f | 30 32 0a 4e 65 77 73 67 | Part01/|02.Newsg|
|00000050| 72 6f 75 70 73 3a 20 63 | 6f 6d 70 2e 73 6f 75 72 |roups: c|omp.sour|
|00000060| 63 65 73 2e 75 6e 69 78 | 0a 53 65 6e 64 65 72 3a |ces.unix|.Sender:|
|00000070| 20 73 6f 75 72 63 65 73 | 0a 41 70 70 72 6f 76 65 | sources|.Approve|
|00000080| 64 3a 20 72 73 61 6c 7a | 40 75 75 6e 65 74 2e 55 |d: rsalz|@uunet.U|
|00000090| 55 2e 4e 45 54 0a 0a 53 | 75 62 6d 69 74 74 65 64 |U.NET..S|ubmitted|
|000000a0| 2d 62 79 3a 20 44 61 76 | 65 20 43 75 72 72 79 20 |-by: Dav|e Curry |
|000000b0| 3c 64 61 76 79 40 72 69 | 61 63 73 2e 65 64 75 3e |<davy@ri|acs.edu>|
|000000c0| 0a 50 6f 73 74 69 6e 67 | 2d 6e 75 6d 62 65 72 3a |.Posting|-number:|
|000000d0| 20 56 6f 6c 75 6d 65 20 | 32 30 2c 20 49 73 73 75 | Volume |20, Issu|
|000000e0| 65 20 35 36 0a 41 72 63 | 68 69 76 65 2d 6e 61 6d |e 56.Arc|hive-nam|
|000000f0| 65 3a 20 69 6e 64 65 78 | 2d 64 62 2f 70 61 72 74 |e: index|-db/part|
|00000100| 30 31 0a 0a 54 68 69 73 | 20 69 73 20 69 6e 64 65 |01..This| is inde|
|00000110| 78 2c 20 56 65 72 73 69 | 6f 6e 20 31 2e 30 2e 0a |x, Versi|on 1.0..|
|00000120| 0a 49 6e 64 65 78 20 61 | 6c 6c 6f 77 73 20 79 6f |.Index a|llows yo|
|00000130| 75 20 74 6f 20 6d 61 69 | 6e 74 61 69 6e 20 6d 75 |u to mai|ntain mu|
|00000140| 6c 74 69 70 6c 65 20 64 | 61 74 61 62 61 73 65 73 |ltiple d|atabases|
|00000150| 20 6f 66 20 74 65 78 74 | 75 61 6c 20 69 6e 66 6f | of text|ual info|
|00000160| 72 6d 61 74 69 6f 6e 2c | 0a 65 61 63 68 20 77 69 |rmation,|.each wi|
|00000170| 74 68 20 61 20 64 69 66 | 66 65 72 65 6e 74 20 66 |th a dif|ferent f|
|00000180| 6f 72 6d 61 74 2e 20 20 | 57 69 74 68 20 65 61 63 |ormat. |With eac|
|00000190| 68 20 64 61 74 61 62 61 | 73 65 2c 20 69 6e 64 65 |h databa|se, inde|
|000001a0| 78 20 61 6c 6c 6f 77 73 | 20 79 6f 75 20 74 6f 3a |x allows| you to:|
|000001b0| 0a 09 2d 20 61 64 64 20 | 65 6e 74 72 69 65 73 0a |..- add |entries.|
|000001c0| 09 2d 20 64 65 6c 65 74 | 65 20 65 6e 74 72 69 65 |.- delet|e entrie|
|000001d0| 73 0a 09 2d 20 65 64 69 | 74 20 65 78 69 73 74 69 |s..- edi|t existi|
|000001e0| 6e 67 20 65 6e 74 72 69 | 65 73 0a 09 2d 20 73 65 |ng entri|es..- se|
|000001f0| 61 72 63 68 20 66 6f 72 | 20 65 6e 74 72 69 65 73 |arch for| entries|
|00000200| 20 75 73 69 6e 67 20 66 | 75 6c 6c 20 72 65 67 75 | using f|ull regu|
|00000210| 6c 61 72 20 65 78 70 72 | 65 73 73 69 6f 6e 73 0a |lar expr|essions.|
|00000220| 09 2d 20 63 6f 6e 74 72 | 6f 6c 20 77 68 61 74 20 |.- contr|ol what |
|00000230| 70 61 72 74 73 20 6f 66 | 20 61 6e 20 65 6e 74 72 |parts of| an entr|
|00000240| 79 20 61 72 65 20 73 65 | 61 72 63 68 65 64 0a 09 |y are se|arched..|
|00000250| 2d 20 70 72 69 6e 74 20 | 6f 75 74 20 65 6e 74 72 |- print |out entr|
|00000260| 69 65 73 20 6d 61 74 63 | 68 69 6e 67 20 61 20 70 |ies matc|hing a p|
|00000270| 61 74 74 65 72 6e 0a 09 | 2d 20 72 75 6e 20 61 6c |attern..|- run al|
|00000280| 6c 20 6f 72 20 70 61 72 | 74 20 6f 66 20 74 68 65 |l or par|t of the|
|00000290| 20 64 61 74 61 62 61 73 | 65 20 74 68 72 6f 75 67 | databas|e throug|
|000002a0| 68 20 61 6e 20 61 72 62 | 69 74 72 61 72 79 0a 09 |h an arb|itrary..|
|000002b0| 20 20 66 6f 72 6d 61 74 | 74 69 6e 67 20 70 72 6f | format|ting pro|
|000002c0| 67 72 61 6d 0a 0a 54 68 | 65 20 64 61 74 61 62 61 |gram..Th|e databa|
|000002d0| 73 65 73 20 69 6e 64 65 | 78 20 6d 61 69 6e 74 61 |ses inde|x mainta|
|000002e0| 69 6e 73 20 61 72 65 20 | 73 74 6f 72 65 64 20 61 |ins are |stored a|
|000002f0| 73 20 73 69 6d 70 6c 65 | 20 6c 69 6e 65 73 20 6f |s simple| lines o|
|00000300| 66 20 74 65 78 74 2e 20 | 20 45 61 63 68 0a 66 69 |f text. | Each.fi|
|00000310| 65 6c 64 20 6f 66 20 61 | 6e 20 65 6e 74 72 79 20 |eld of a|n entry |
|00000320| 69 73 20 61 20 6c 69 6e | 65 20 6f 66 20 74 65 78 |is a lin|e of tex|
|00000330| 74 2c 20 61 6e 64 20 65 | 61 63 68 20 65 6e 74 72 |t, and e|ach entr|
|00000340| 79 20 69 6e 20 74 68 65 | 20 64 61 74 61 62 61 73 |y in the| databas|
|00000350| 65 20 69 73 0a 6d 61 64 | 65 20 75 70 20 6f 66 20 |e is.mad|e up of |
|00000360| 61 20 66 69 78 65 64 20 | 6e 75 6d 62 65 72 20 6f |a fixed |number o|
|00000370| 66 20 6c 69 6e 65 73 2e | 20 20 46 6f 72 20 65 61 |f lines.| For ea|
|00000380| 63 68 20 64 61 74 61 62 | 61 73 65 2c 20 79 6f 75 |ch datab|ase, you|
|00000390| 20 74 65 6c 6c 20 69 6e | 64 65 78 0a 77 68 61 74 | tell in|dex.what|
|000003a0| 20 65 61 63 68 20 66 69 | 65 6c 64 27 73 20 28 6c | each fi|eld's (l|
|000003b0| 69 6e 65 27 73 29 20 6e | 61 6d 65 20 69 73 2e 20 |ine's) n|ame is. |
|000003c0| 20 59 6f 75 20 63 61 6e | 20 68 61 76 65 20 6d 75 | You can| have mu|
|000003d0| 6c 74 69 70 6c 65 2d 6c | 69 6e 65 20 66 69 65 6c |ltiple-l|ine fiel|
|000003e0| 64 73 20 62 79 0a 6c 65 | 61 76 69 6e 67 20 74 68 |ds by.le|aving th|
|000003f0| 61 74 20 66 69 65 6c 64 | 27 73 20 6e 61 6d 65 20 |at field|'s name |
|00000400| 62 6c 61 6e 6b 2e 20 20 | 54 68 65 72 65 27 73 20 |blank. |There's |
|00000410| 6e 6f 20 66 61 6e 63 79 | 20 73 74 6f 72 61 67 65 |no fancy| storage|
|00000420| 20 61 6c 67 6f 72 69 74 | 68 6d 2c 0a 74 68 69 6e | algorit|hm,.thin|
|00000430| 67 73 20 61 72 65 20 6a | 75 73 74 20 73 74 6f 72 |gs are j|ust stor|
|00000440| 65 64 20 73 65 71 75 65 | 6e 74 69 61 6c 6c 79 2e |ed seque|ntially.|
|00000450| 20 20 42 75 74 20 66 6f | 72 20 74 68 65 20 62 69 | But fo|r the bi|
|00000460| 67 67 65 73 74 20 64 61 | 74 61 62 61 73 65 20 49 |ggest da|tabase I|
|00000470| 27 76 65 0a 67 6f 74 2c | 20 61 62 6f 75 74 20 35 |'ve.got,| about 5|
|00000480| 30 30 20 35 2d 6c 69 6e | 65 20 65 6e 74 72 69 65 |00 5-lin|e entrie|
|00000490| 73 2c 20 70 65 72 66 6f | 72 6d 61 6e 63 65 20 69 |s, perfo|rmance i|
|000004a0| 73 20 6a 75 73 74 20 66 | 69 6e 65 2e 0a 0a 44 61 |s just f|ine...Da|
|000004b0| 76 69 64 20 41 2e 20 43 | 75 72 72 79 0a 52 65 73 |vid A. C|urry.Res|
|000004c0| 65 61 72 63 68 20 49 6e | 73 74 69 74 75 74 65 20 |earch In|stitute |
|000004d0| 66 6f 72 20 41 64 76 61 | 6e 63 65 64 20 43 6f 6d |for Adva|nced Com|
|000004e0| 70 75 74 65 72 20 53 63 | 69 65 6e 63 65 0a 4d 61 |puter Sc|ience.Ma|
|000004f0| 69 6c 20 53 74 6f 70 20 | 32 33 30 2d 35 0a 4e 41 |il Stop |230-5.NA|
|00000500| 53 41 20 41 6d 65 73 20 | 52 65 73 65 61 72 63 68 |SA Ames |Research|
|00000510| 20 43 65 6e 74 65 72 0a | 4d 6f 66 66 65 74 74 20 | Center.|Moffett |
|00000520| 46 69 65 6c 64 2c 20 43 | 41 20 39 34 30 33 35 0a |Field, C|A 94035.|
|00000530| 0a 23 21 20 2f 62 69 6e | 2f 73 68 0a 23 20 54 68 |.#! /bin|/sh.# Th|
|00000540| 69 73 20 69 73 20 61 20 | 73 68 65 6c 6c 20 61 72 |is is a |shell ar|
|00000550| 63 68 69 76 65 2e 20 20 | 52 65 6d 6f 76 65 20 61 |chive. |Remove a|
|00000560| 6e 79 74 68 69 6e 67 20 | 62 65 66 6f 72 65 20 74 |nything |before t|
|00000570| 68 69 73 20 6c 69 6e 65 | 2c 20 74 68 65 6e 20 75 |his line|, then u|
|00000580| 6e 70 61 63 6b 0a 23 20 | 69 74 20 62 79 20 73 61 |npack.# |it by sa|
|00000590| 76 69 6e 67 20 69 74 20 | 69 6e 74 6f 20 61 20 66 |ving it |into a f|
|000005a0| 69 6c 65 20 61 6e 64 20 | 74 79 70 69 6e 67 20 22 |ile and |typing "|
|000005b0| 73 68 20 66 69 6c 65 22 | 2e 20 20 54 6f 20 6f 76 |sh file"|. To ov|
|000005c0| 65 72 77 72 69 74 65 20 | 65 78 69 73 74 69 6e 67 |erwrite |existing|
|000005d0| 0a 23 20 66 69 6c 65 73 | 2c 20 74 79 70 65 20 22 |.# files|, type "|
|000005e0| 73 68 20 66 69 6c 65 20 | 2d 63 22 2e 20 20 59 6f |sh file |-c". Yo|
|000005f0| 75 20 63 61 6e 20 61 6c | 73 6f 20 66 65 65 64 20 |u can al|so feed |
|00000600| 74 68 69 73 20 61 73 20 | 73 74 61 6e 64 61 72 64 |this as |standard|
|00000610| 20 69 6e 70 75 74 20 76 | 69 61 0a 23 20 75 6e 73 | input v|ia.# uns|
|00000620| 68 61 72 2c 20 6f 72 20 | 62 79 20 74 79 70 69 6e |har, or |by typin|
|00000630| 67 20 22 73 68 20 3c 66 | 69 6c 65 22 2c 20 65 2e |g "sh <f|ile", e.|
|00000640| 67 2e 2e 20 20 49 66 20 | 74 68 69 73 20 61 72 63 |g.. If |this arc|
|00000650| 68 69 76 65 20 69 73 20 | 63 6f 6d 70 6c 65 74 65 |hive is |complete|
|00000660| 2c 20 79 6f 75 0a 23 20 | 77 69 6c 6c 20 73 65 65 |, you.# |will see|
|00000670| 20 74 68 65 20 66 6f 6c | 6c 6f 77 69 6e 67 20 6d | the fol|lowing m|
|00000680| 65 73 73 61 67 65 20 61 | 74 20 74 68 65 20 65 6e |essage a|t the en|
|00000690| 64 3a 0a 23 09 09 22 45 | 6e 64 20 6f 66 20 61 72 |d:.#.."E|nd of ar|
|000006a0| 63 68 69 76 65 20 31 20 | 28 6f 66 20 32 29 2e 22 |chive 1 |(of 2)."|
|000006b0| 0a 23 20 43 6f 6e 74 65 | 6e 74 73 3a 20 20 4d 41 |.# Conte|nts: MA|
|000006c0| 4e 49 46 45 53 54 20 4d | 61 6b 65 66 69 6c 65 20 |NIFEST M|akefile |
|000006d0| 52 45 41 44 4d 45 20 63 | 72 65 61 74 65 64 62 2e |README c|reatedb.|
|000006e0| 63 20 64 62 66 75 6e 63 | 2e 63 20 64 62 69 6f 2e |c dbfunc|.c dbio.|
|000006f0| 63 20 64 65 66 73 2e 68 | 0a 23 20 20 20 69 6e 64 |c defs.h|.# ind|
|00000700| 65 78 2e 31 20 6d 61 69 | 6e 2e 63 20 70 72 69 6e |ex.1 mai|n.c prin|
|00000710| 74 64 62 2e 63 20 73 61 | 6d 70 6c 65 73 20 73 61 |tdb.c sa|mples sa|
|00000720| 6d 70 6c 65 73 2f 62 6f | 6f 6b 73 2e 66 6d 74 0a |mples/bo|oks.fmt.|
|00000730| 23 20 20 20 73 61 6d 70 | 6c 65 73 2f 62 6f 6f 6b |# samp|les/book|
|00000740| 73 2e 69 64 78 20 73 61 | 6d 70 6c 65 73 2f 62 70 |s.idx sa|mples/bp|
|00000750| 68 6f 6e 65 2e 69 64 78 | 20 73 61 6d 70 6c 65 73 |hone.idx| samples|
|00000760| 2f 63 64 6c 69 73 74 2e | 66 6d 74 0a 23 20 20 20 |/cdlist.|fmt.# |
|00000770| 73 61 6d 70 6c 65 73 2f | 63 64 6c 69 73 74 2e 69 |samples/|cdlist.i|
|00000780| 64 78 20 73 61 6d 70 6c | 65 73 2f 63 64 77 61 6e |dx sampl|es/cdwan|
|00000790| 74 6c 69 73 74 2e 66 6d | 74 20 73 61 6d 70 6c 65 |tlist.fm|t sample|
|000007a0| 73 2f 63 64 77 61 6e 74 | 6c 69 73 74 2e 69 64 78 |s/cdwant|list.idx|
|000007b0| 0a 23 20 20 20 73 61 6d | 70 6c 65 73 2f 70 70 68 |.# sam|ples/pph|
|000007c0| 6f 6e 65 2e 66 6d 74 20 | 73 61 6d 70 6c 65 73 2f |one.fmt |samples/|
|000007d0| 70 70 68 6f 6e 65 2e 69 | 64 78 20 73 65 61 72 63 |pphone.i|dx searc|
|000007e0| 68 64 62 2e 63 20 73 65 | 6c 65 63 74 64 62 2e 63 |hdb.c se|lectdb.c|
|000007f0| 20 75 74 69 6c 2e 63 0a | 23 20 57 72 61 70 70 65 | util.c.|# Wrappe|
|00000800| 64 20 62 79 20 72 73 61 | 6c 7a 40 70 61 70 61 79 |d by rsa|lz@papay|
|00000810| 61 2e 62 62 6e 2e 63 6f | 6d 20 6f 6e 20 54 75 65 |a.bbn.co|m on Tue|
|00000820| 20 4f 63 74 20 32 34 20 | 31 32 3a 30 39 3a 30 31 | Oct 24 |12:09:01|
|00000830| 20 31 39 38 39 0a 50 41 | 54 48 3d 2f 62 69 6e 3a | 1989.PA|TH=/bin:|
|00000840| 2f 75 73 72 2f 62 69 6e | 3a 2f 75 73 72 2f 75 63 |/usr/bin|:/usr/uc|
|00000850| 62 20 3b 20 65 78 70 6f | 72 74 20 50 41 54 48 0a |b ; expo|rt PATH.|
|00000860| 69 66 20 74 65 73 74 20 | 2d 66 20 27 4d 41 4e 49 |if test |-f 'MANI|
|00000870| 46 45 53 54 27 20 2d 61 | 20 22 24 7b 31 7d 22 20 |FEST' -a| "${1}" |
|00000880| 21 3d 20 22 2d 63 22 20 | 3b 20 74 68 65 6e 20 0a |!= "-c" |; then .|
|00000890| 20 20 65 63 68 6f 20 73 | 68 61 72 3a 20 57 69 6c | echo s|har: Wil|
|000008a0| 6c 20 6e 6f 74 20 63 6c | 6f 62 62 65 72 20 65 78 |l not cl|obber ex|
|000008b0| 69 73 74 69 6e 67 20 66 | 69 6c 65 20 5c 22 27 4d |isting f|ile \"'M|
|000008c0| 41 4e 49 46 45 53 54 27 | 5c 22 0a 65 6c 73 65 0a |ANIFEST'|\".else.|
|000008d0| 65 63 68 6f 20 73 68 61 | 72 3a 20 45 78 74 72 61 |echo sha|r: Extra|
|000008e0| 63 74 69 6e 67 20 5c 22 | 27 4d 41 4e 49 46 45 53 |cting \"|'MANIFES|
|000008f0| 54 27 5c 22 20 5c 28 38 | 34 30 20 63 68 61 72 61 |T'\" \(8|40 chara|
|00000900| 63 74 65 72 73 5c 29 0a | 73 65 64 20 22 73 2f 5e |cters\).|sed "s/^|
|00000910| 58 2f 2f 22 20 3e 27 4d | 41 4e 49 46 45 53 54 27 |X//" >'M|ANIFEST'|
|00000920| 20 3c 3c 27 45 4e 44 5f | 4f 46 5f 46 49 4c 45 27 | <<'END_|OF_FILE'|
|00000930| 0a 58 20 20 20 46 69 6c | 65 20 4e 61 6d 65 09 09 |.X Fil|e Name..|
|00000940| 41 72 63 68 69 76 65 20 | 23 09 44 65 73 63 72 69 |Archive |#.Descri|
|00000950| 70 74 69 6f 6e 0a 58 2d | 2d 2d 2d 2d 2d 2d 2d 2d |ption.X-|--------|
|00000960| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000970| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000980| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000990| 2d 2d 0a 58 20 4d 41 4e | 49 46 45 53 54 20 20 20 |--.X MAN|IFEST |
|000009a0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000009b0| 31 09 0a 58 20 4d 61 6b | 65 66 69 6c 65 20 20 20 |1..X Mak|efile |
|000009c0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000009d0| 31 09 0a 58 20 52 45 41 | 44 4d 45 20 20 20 20 20 |1..X REA|DME |
|000009e0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000009f0| 31 09 0a 58 20 63 72 65 | 61 74 65 64 62 2e 63 20 |1..X cre|atedb.c |
|00000a00| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000a10| 31 09 0a 58 20 64 62 66 | 75 6e 63 2e 63 20 20 20 |1..X dbf|unc.c |
|00000a20| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000a30| 31 09 0a 58 20 64 62 69 | 6f 2e 63 20 20 20 20 20 |1..X dbi|o.c |
|00000a40| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000a50| 31 09 0a 58 20 64 65 66 | 73 2e 68 20 20 20 20 20 |1..X def|s.h |
|00000a60| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000a70| 31 09 0a 58 20 69 6e 64 | 65 78 2e 31 20 20 20 20 |1..X ind|ex.1 |
|00000a80| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000a90| 31 09 0a 58 20 6d 61 69 | 6e 2e 63 20 20 20 20 20 |1..X mai|n.c |
|00000aa0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000ab0| 31 09 0a 58 20 70 72 69 | 6e 74 64 62 2e 63 20 20 |1..X pri|ntdb.c |
|00000ac0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000ad0| 31 09 0a 58 20 73 61 6d | 70 6c 65 73 20 20 20 20 |1..X sam|ples |
|00000ae0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000af0| 31 09 0a 58 20 73 61 6d | 70 6c 65 73 2f 62 6f 6f |1..X sam|ples/boo|
|00000b00| 6b 73 2e 66 6d 74 20 20 | 20 20 20 20 20 20 20 20 |ks.fmt | |
|00000b10| 31 09 0a 58 20 73 61 6d | 70 6c 65 73 2f 62 6f 6f |1..X sam|ples/boo|
|00000b20| 6b 73 2e 69 64 78 20 20 | 20 20 20 20 20 20 20 20 |ks.idx | |
|00000b30| 31 09 0a 58 20 73 61 6d | 70 6c 65 73 2f 62 70 68 |1..X sam|ples/bph|
|00000b40| 6f 6e 65 2e 69 64 78 20 | 20 20 20 20 20 20 20 20 |one.idx | |
|00000b50| 31 09 0a 58 20 73 61 6d | 70 6c 65 73 2f 63 64 6c |1..X sam|ples/cdl|
|00000b60| 69 73 74 2e 66 6d 74 20 | 20 20 20 20 20 20 20 20 |ist.fmt | |
|00000b70| 31 09 0a 58 20 73 61 6d | 70 6c 65 73 2f 63 64 6c |1..X sam|ples/cdl|
|00000b80| 69 73 74 2e 69 64 78 20 | 20 20 20 20 20 20 20 20 |ist.idx | |
|00000b90| 31 09 0a 58 20 73 61 6d | 70 6c 65 73 2f 63 64 77 |1..X sam|ples/cdw|
|00000ba0| 61 6e 74 6c 69 73 74 2e | 66 6d 74 20 20 20 20 20 |antlist.|fmt |
|00000bb0| 31 09 0a 58 20 73 61 6d | 70 6c 65 73 2f 63 64 77 |1..X sam|ples/cdw|
|00000bc0| 61 6e 74 6c 69 73 74 2e | 69 64 78 20 20 20 20 20 |antlist.|idx |
|00000bd0| 31 09 0a 58 20 73 61 6d | 70 6c 65 73 2f 70 70 68 |1..X sam|ples/pph|
|00000be0| 6f 6e 65 2e 66 6d 74 20 | 20 20 20 20 20 20 20 20 |one.fmt | |
|00000bf0| 31 09 0a 58 20 73 61 6d | 70 6c 65 73 2f 70 70 68 |1..X sam|ples/pph|
|00000c00| 6f 6e 65 2e 69 64 78 20 | 20 20 20 20 20 20 20 20 |one.idx | |
|00000c10| 31 09 0a 58 20 73 63 72 | 65 65 6e 2e 63 20 20 20 |1..X scr|een.c |
|00000c20| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000c30| 32 09 0a 58 20 73 65 61 | 72 63 68 64 62 2e 63 20 |2..X sea|rchdb.c |
|00000c40| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000c50| 31 09 0a 58 20 73 65 6c | 65 63 74 64 62 2e 63 20 |1..X sel|ectdb.c |
|00000c60| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000c70| 31 09 0a 58 20 75 74 69 | 6c 2e 63 20 20 20 20 20 |1..X uti|l.c |
|00000c80| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000c90| 31 09 0a 45 4e 44 5f 4f | 46 5f 46 49 4c 45 0a 69 |1..END_O|F_FILE.i|
|00000ca0| 66 20 74 65 73 74 20 38 | 34 30 20 2d 6e 65 20 60 |f test 8|40 -ne `|
|00000cb0| 77 63 20 2d 63 20 3c 27 | 4d 41 4e 49 46 45 53 54 |wc -c <'|MANIFEST|
|00000cc0| 27 60 3b 20 74 68 65 6e | 0a 20 20 20 20 65 63 68 |'`; then|. ech|
|00000cd0| 6f 20 73 68 61 72 3a 20 | 5c 22 27 4d 41 4e 49 46 |o shar: |\"'MANIF|
|00000ce0| 45 53 54 27 5c 22 20 75 | 6e 70 61 63 6b 65 64 20 |EST'\" u|npacked |
|00000cf0| 77 69 74 68 20 77 72 6f | 6e 67 20 73 69 7a 65 21 |with wro|ng size!|
|00000d00| 0a 66 69 0a 23 20 65 6e | 64 20 6f 66 20 27 4d 41 |.fi.# en|d of 'MA|
|00000d10| 4e 49 46 45 53 54 27 0a | 66 69 0a 69 66 20 74 65 |NIFEST'.|fi.if te|
|00000d20| 73 74 20 2d 66 20 27 4d | 61 6b 65 66 69 6c 65 27 |st -f 'M|akefile'|
|00000d30| 20 2d 61 20 22 24 7b 31 | 7d 22 20 21 3d 20 22 2d | -a "${1|}" != "-|
|00000d40| 63 22 20 3b 20 74 68 65 | 6e 20 0a 20 20 65 63 68 |c" ; the|n . ech|
|00000d50| 6f 20 73 68 61 72 3a 20 | 57 69 6c 6c 20 6e 6f 74 |o shar: |Will not|
|00000d60| 20 63 6c 6f 62 62 65 72 | 20 65 78 69 73 74 69 6e | clobber| existin|
|00000d70| 67 20 66 69 6c 65 20 5c | 22 27 4d 61 6b 65 66 69 |g file \|"'Makefi|
|00000d80| 6c 65 27 5c 22 0a 65 6c | 73 65 0a 65 63 68 6f 20 |le'\".el|se.echo |
|00000d90| 73 68 61 72 3a 20 45 78 | 74 72 61 63 74 69 6e 67 |shar: Ex|tracting|
|00000da0| 20 5c 22 27 4d 61 6b 65 | 66 69 6c 65 27 5c 22 20 | \"'Make|file'\" |
|00000db0| 5c 28 39 32 38 20 63 68 | 61 72 61 63 74 65 72 73 |\(928 ch|aracters|
|00000dc0| 5c 29 0a 73 65 64 20 22 | 73 2f 5e 58 2f 2f 22 20 |\).sed "|s/^X//" |
|00000dd0| 3e 27 4d 61 6b 65 66 69 | 6c 65 27 20 3c 3c 27 45 |>'Makefi|le' <<'E|
|00000de0| 4e 44 5f 4f 46 5f 46 49 | 4c 45 27 0a 58 23 0a 58 |ND_OF_FI|LE'.X#.X|
|00000df0| 23 20 24 48 65 61 64 65 | 72 3a 20 2f 75 35 2f 64 |# $Heade|r: /u5/d|
|00000e00| 61 76 79 2f 70 72 6f 67 | 73 2f 69 6e 64 65 78 2f |avy/prog|s/index/|
|00000e10| 52 43 53 2f 4d 61 6b 65 | 66 69 6c 65 2c 76 20 31 |RCS/Make|file,v 1|
|00000e20| 2e 31 20 38 39 2f 30 38 | 2f 30 39 20 31 31 3a 30 |.1 89/08|/09 11:0|
|00000e30| 36 3a 30 30 20 64 61 76 | 79 20 45 78 70 20 24 0a |6:00 dav|y Exp $.|
|00000e40| 58 23 0a 58 23 20 4d 61 | 6b 65 66 69 6c 65 20 66 |X#.X# Ma|kefile f|
|00000e50| 6f 72 20 74 68 65 20 22 | 69 6e 64 65 78 22 20 70 |or the "|index" p|
|00000e60| 72 6f 67 72 61 6d 2e 0a | 58 23 0a 58 23 20 44 61 |rogram..|X#.X# Da|
|00000e70| 76 69 64 20 41 2e 20 43 | 75 72 72 79 0a 58 23 20 |vid A. C|urry.X# |
|00000e80| 52 65 73 65 61 72 63 68 | 20 49 6e 73 74 69 74 75 |Research| Institu|
|00000e90| 74 65 20 66 6f 72 20 41 | 64 76 61 6e 63 65 64 20 |te for A|dvanced |
|00000ea0| 43 6f 6d 70 75 74 65 72 | 20 53 63 69 65 6e 63 65 |Computer| Science|
|00000eb0| 0a 58 23 20 4d 61 69 6c | 20 53 74 6f 70 20 32 33 |.X# Mail| Stop 23|
|00000ec0| 30 2d 35 0a 58 23 20 4e | 41 53 41 20 41 6d 65 73 |0-5.X# N|ASA Ames|
|00000ed0| 20 52 65 73 65 61 72 63 | 68 20 43 65 6e 74 65 72 | Researc|h Center|
|00000ee0| 0a 58 23 20 4d 6f 66 66 | 65 74 74 20 46 69 65 6c |.X# Moff|ett Fiel|
|00000ef0| 64 2c 20 43 41 20 39 34 | 30 33 35 0a 58 23 20 64 |d, CA 94|035.X# d|
|00000f00| 61 76 79 40 72 69 61 63 | 73 2e 65 64 75 0a 58 23 |avy@riac|s.edu.X#|
|00000f10| 0a 58 23 20 24 4c 6f 67 | 3a 09 4d 61 6b 65 66 69 |.X# $Log|:.Makefi|
|00000f20| 6c 65 2c 76 20 24 0a 58 | 23 20 52 65 76 69 73 69 |le,v $.X|# Revisi|
|00000f30| 6f 6e 20 31 2e 31 20 20 | 38 39 2f 30 38 2f 30 39 |on 1.1 |89/08/09|
|00000f40| 20 20 31 31 3a 30 36 3a | 30 30 20 20 64 61 76 79 | 11:06:|00 davy|
|00000f50| 0a 58 23 20 49 6e 69 74 | 69 61 6c 20 72 65 76 69 |.X# Init|ial revi|
|00000f60| 73 69 6f 6e 0a 58 23 20 | 0a 58 23 0a 58 43 46 4c |sion.X# |.X#.XCFL|
|00000f70| 41 47 53 3d 09 2d 4f 0a | 58 4c 49 42 53 3d 09 2d |AGS=.-O.|XLIBS=.-|
|00000f80| 6c 63 75 72 73 65 73 20 | 2d 6c 74 65 72 6d 63 61 |lcurses |-ltermca|
|00000f90| 70 0a 58 0a 58 53 52 43 | 53 3d 09 63 72 65 61 74 |p.X.XSRC|S=.creat|
|00000fa0| 65 64 62 2e 63 20 64 62 | 66 75 6e 63 2e 63 20 64 |edb.c db|func.c d|
|00000fb0| 62 69 6f 2e 63 20 6d 61 | 69 6e 2e 63 20 70 72 69 |bio.c ma|in.c pri|
|00000fc0| 6e 74 64 62 2e 63 20 73 | 63 72 65 65 6e 2e 63 20 |ntdb.c s|creen.c |
|00000fd0| 5c 0a 58 09 73 65 61 72 | 63 68 64 62 2e 63 20 73 |\.X.sear|chdb.c s|
|00000fe0| 65 6c 65 63 74 64 62 2e | 63 20 75 74 69 6c 2e 63 |electdb.|c util.c|
|00000ff0| 0a 58 4f 42 4a 53 3d 09 | 63 72 65 61 74 65 64 62 |.XOBJS=.|createdb|
|00001000| 2e 6f 20 64 62 66 75 6e | 63 2e 6f 20 64 62 69 6f |.o dbfun|c.o dbio|
|00001010| 2e 6f 20 6d 61 69 6e 2e | 6f 20 70 72 69 6e 74 64 |.o main.|o printd|
|00001020| 62 2e 6f 20 73 63 72 65 | 65 6e 2e 6f 20 5c 0a 58 |b.o scre|en.o \.X|
|00001030| 09 73 65 61 72 63 68 64 | 62 2e 6f 20 73 65 6c 65 |.searchd|b.o sele|
|00001040| 63 74 64 62 2e 6f 20 75 | 74 69 6c 2e 6f 0a 58 0a |ctdb.o u|til.o.X.|
|00001050| 58 69 6e 64 65 78 3a 20 | 24 28 4f 42 4a 53 29 0a |Xindex: |$(OBJS).|
|00001060| 58 09 24 28 43 43 29 20 | 24 28 43 46 4c 41 47 53 |X.$(CC) |$(CFLAGS|
|00001070| 29 20 2d 6f 20 69 6e 64 | 65 78 20 24 28 4f 42 4a |) -o ind|ex $(OBJ|
|00001080| 53 29 20 24 28 4c 49 42 | 53 29 0a 58 0a 58 63 6c |S) $(LIB|S).X.Xcl|
|00001090| 65 61 6e 3a 0a 58 09 72 | 6d 20 2d 66 20 61 2e 6f |ean:.X.r|m -f a.o|
|000010a0| 75 74 20 63 6f 72 65 20 | 69 6e 64 65 78 20 24 28 |ut core |index $(|
|000010b0| 4f 42 4a 53 29 20 5c 23 | 2a 0a 58 0a 58 63 72 65 |OBJS) \#|*.X.Xcre|
|000010c0| 61 74 65 64 62 2e 6f 3a | 09 63 72 65 61 74 65 64 |atedb.o:|.created|
|000010d0| 62 2e 63 20 64 65 66 73 | 2e 68 0a 58 64 62 66 75 |b.c defs|.h.Xdbfu|
|000010e0| 6e 63 2e 6f 3a 09 64 62 | 66 75 6e 63 2e 63 20 64 |nc.o:.db|func.c d|
|000010f0| 65 66 73 2e 68 0a 58 64 | 62 69 6f 2e 6f 3a 09 09 |efs.h.Xd|bio.o:..|
|00001100| 64 62 69 6f 2e 63 20 64 | 65 66 73 2e 68 0a 58 6d |dbio.c d|efs.h.Xm|
|00001110| 61 69 6e 2e 6f 3a 09 09 | 6d 61 69 6e 2e 63 20 64 |ain.o:..|main.c d|
|00001120| 65 66 73 2e 68 0a 58 70 | 72 69 6e 74 64 62 2e 6f |efs.h.Xp|rintdb.o|
|00001130| 3a 09 70 72 69 6e 74 64 | 62 2e 63 20 64 65 66 73 |:.printd|b.c defs|
|00001140| 2e 68 0a 58 73 63 72 65 | 65 6e 2e 6f 3a 09 73 63 |.h.Xscre|en.o:.sc|
|00001150| 72 65 65 6e 2e 63 20 64 | 65 66 73 2e 68 0a 58 73 |reen.c d|efs.h.Xs|
|00001160| 65 61 72 63 68 64 62 2e | 6f 3a 09 73 65 61 72 63 |earchdb.|o:.searc|
|00001170| 68 64 62 2e 63 20 64 65 | 66 73 2e 68 0a 58 73 65 |hdb.c de|fs.h.Xse|
|00001180| 6c 65 63 74 64 62 2e 6f | 3a 09 73 65 6c 65 63 74 |lectdb.o|:.select|
|00001190| 64 62 2e 63 20 64 65 66 | 73 2e 68 0a 58 75 74 69 |db.c def|s.h.Xuti|
|000011a0| 6c 2e 6f 3a 09 09 75 74 | 69 6c 2e 63 20 64 65 66 |l.o:..ut|il.c def|
|000011b0| 73 2e 68 0a 45 4e 44 5f | 4f 46 5f 46 49 4c 45 0a |s.h.END_|OF_FILE.|
|000011c0| 69 66 20 74 65 73 74 20 | 39 32 38 20 2d 6e 65 20 |if test |928 -ne |
|000011d0| 60 77 63 20 2d 63 20 3c | 27 4d 61 6b 65 66 69 6c |`wc -c <|'Makefil|
|000011e0| 65 27 60 3b 20 74 68 65 | 6e 0a 20 20 20 20 65 63 |e'`; the|n. ec|
|000011f0| 68 6f 20 73 68 61 72 3a | 20 5c 22 27 4d 61 6b 65 |ho shar:| \"'Make|
|00001200| 66 69 6c 65 27 5c 22 20 | 75 6e 70 61 63 6b 65 64 |file'\" |unpacked|
|00001210| 20 77 69 74 68 20 77 72 | 6f 6e 67 20 73 69 7a 65 | with wr|ong size|
|00001220| 21 0a 66 69 0a 23 20 65 | 6e 64 20 6f 66 20 27 4d |!.fi.# e|nd of 'M|
|00001230| 61 6b 65 66 69 6c 65 27 | 0a 66 69 0a 69 66 20 74 |akefile'|.fi.if t|
|00001240| 65 73 74 20 2d 66 20 27 | 52 45 41 44 4d 45 27 20 |est -f '|README' |
|00001250| 2d 61 20 22 24 7b 31 7d | 22 20 21 3d 20 22 2d 63 |-a "${1}|" != "-c|
|00001260| 22 20 3b 20 74 68 65 6e | 20 0a 20 20 65 63 68 6f |" ; then| . echo|
|00001270| 20 73 68 61 72 3a 20 57 | 69 6c 6c 20 6e 6f 74 20 | shar: W|ill not |
|00001280| 63 6c 6f 62 62 65 72 20 | 65 78 69 73 74 69 6e 67 |clobber |existing|
|00001290| 20 66 69 6c 65 20 5c 22 | 27 52 45 41 44 4d 45 27 | file \"|'README'|
|000012a0| 5c 22 0a 65 6c 73 65 0a | 65 63 68 6f 20 73 68 61 |\".else.|echo sha|
|000012b0| 72 3a 20 45 78 74 72 61 | 63 74 69 6e 67 20 5c 22 |r: Extra|cting \"|
|000012c0| 27 52 45 41 44 4d 45 27 | 5c 22 20 5c 28 33 32 32 |'README'|\" \(322|
|000012d0| 30 20 63 68 61 72 61 63 | 74 65 72 73 5c 29 0a 73 |0 charac|ters\).s|
|000012e0| 65 64 20 22 73 2f 5e 58 | 2f 2f 22 20 3e 27 52 45 |ed "s/^X|//" >'RE|
|000012f0| 41 44 4d 45 27 20 3c 3c | 27 45 4e 44 5f 4f 46 5f |ADME' <<|'END_OF_|
|00001300| 46 49 4c 45 27 0a 58 09 | 09 09 09 09 09 09 41 75 |FILE'.X.|......Au|
|00001310| 67 75 73 74 20 39 2c 20 | 31 39 38 39 0a 58 0a 58 |gust 9, |1989.X.X|
|00001320| 54 68 69 73 20 69 73 20 | 22 69 6e 64 65 78 22 2c |This is |"index",|
|00001330| 20 56 65 72 73 69 6f 6e | 20 31 2e 30 2e 0a 58 0a | Version| 1.0..X.|
|00001340| 58 4f 76 65 72 20 74 68 | 65 20 79 65 61 72 73 2c |XOver th|e years,|
|00001350| 20 49 27 76 65 20 61 63 | 63 75 6d 75 6c 61 74 65 | I've ac|cumulate|
|00001360| 64 20 61 20 6e 75 6d 62 | 65 72 20 6f 66 20 66 69 |d a numb|er of fi|
|00001370| 6c 65 73 20 69 6e 20 6d | 79 20 64 69 72 65 63 74 |les in m|y direct|
|00001380| 6f 72 79 20 77 68 69 63 | 68 0a 58 68 6f 6c 64 20 |ory whic|h.Xhold |
|00001390| 6c 69 73 74 73 20 6f 66 | 20 76 61 72 69 6f 75 73 |lists of| various|
|000013a0| 20 74 68 69 6e 67 73 2e | 20 20 49 20 68 61 76 65 | things.| I have|
|000013b0| 20 61 20 6c 69 73 74 20 | 6f 66 20 62 75 73 69 6e | a list |of busin|
|000013c0| 65 73 73 20 61 64 64 72 | 65 73 73 65 73 2c 20 6e |ess addr|esses, n|
|000013d0| 6f 0a 58 6c 65 73 73 20 | 74 68 61 6e 20 74 68 72 |o.Xless |than thr|
|000013e0| 65 65 20 70 65 72 73 6f | 6e 61 6c 20 61 64 64 72 |ee perso|nal addr|
|000013f0| 65 73 73 20 61 6e 64 20 | 70 68 6f 6e 65 20 6c 69 |ess and |phone li|
|00001400| 73 74 73 2c 20 61 20 6c | 69 73 74 20 6f 66 20 61 |sts, a l|ist of a|
|00001410| 6c 6c 20 74 68 65 20 62 | 6f 6f 6b 73 0a 58 49 20 |ll the b|ooks.XI |
|00001420| 6f 77 6e 2c 20 61 20 6c | 69 73 74 20 6f 66 20 6d |own, a l|ist of m|
|00001430| 79 20 63 6f 6d 70 61 63 | 74 20 64 69 73 63 73 2c |y compac|t discs,|
|00001440| 20 61 6e 64 20 73 6f 20 | 6f 6e 2e 20 20 45 61 63 | and so |on. Eac|
|00001450| 68 20 6f 66 20 74 68 65 | 73 65 20 66 69 6c 65 73 |h of the|se files|
|00001460| 20 68 61 73 20 61 0a 58 | 64 69 66 66 65 72 65 6e | has a.X|differen|
|00001470| 74 20 66 6f 72 6d 61 74 | 2c 20 68 61 73 20 74 6f |t format|, has to|
|00001480| 20 62 65 20 6d 61 69 6e | 74 61 69 6e 65 64 20 6d | be main|tained m|
|00001490| 61 6e 75 61 6c 6c 79 20 | 77 69 74 68 20 61 20 74 |anually |with a t|
|000014a0| 65 78 74 20 65 64 69 74 | 6f 72 2c 20 63 61 6e 0a |ext edit|or, can.|
|000014b0| 58 6f 6e 6c 79 20 62 65 | 20 73 65 61 72 63 68 65 |Xonly be| searche|
|000014c0| 64 20 77 69 74 68 20 22 | 67 72 65 70 22 2c 20 61 |d with "|grep", a|
|000014d0| 6e 64 20 69 73 20 64 69 | 66 66 69 63 75 6c 74 20 |nd is di|fficult |
|000014e0| 74 6f 20 6b 65 65 70 20 | 6e 69 63 65 6c 79 20 73 |to keep |nicely s|
|000014f0| 6f 72 74 65 64 2e 0a 58 | 0a 58 57 65 6c 6c 2c 20 |orted..X|.XWell, |
|00001500| 49 20 67 6f 74 20 73 69 | 63 6b 20 61 6e 64 20 74 |I got si|ck and t|
|00001510| 69 72 65 64 20 6f 66 20 | 74 68 69 73 2e 20 20 53 |ired of |this. S|
|00001520| 6f 2c 20 49 20 73 61 74 | 20 64 6f 77 6e 20 61 6e |o, I sat| down an|
|00001530| 64 20 73 74 61 72 74 65 | 64 20 68 61 63 6b 69 6e |d starte|d hackin|
|00001540| 67 2c 0a 58 61 6e 64 20 | 63 61 6d 65 20 75 70 20 |g,.Xand |came up |
|00001550| 77 69 74 68 20 22 69 6e | 64 65 78 22 2e 20 20 49 |with "in|dex". I|
|00001560| 6e 64 65 78 20 61 6c 6c | 6f 77 73 20 79 6f 75 20 |ndex all|ows you |
|00001570| 74 6f 20 6d 61 69 6e 74 | 61 69 6e 20 6d 75 6c 74 |to maint|ain mult|
|00001580| 69 70 6c 65 0a 58 64 61 | 74 61 62 61 73 65 73 20 |iple.Xda|tabases |
|00001590| 6f 66 20 74 65 78 74 75 | 61 6c 20 69 6e 66 6f 72 |of textu|al infor|
|000015a0| 6d 61 74 69 6f 6e 2c 20 | 65 61 63 68 20 77 69 74 |mation, |each wit|
|000015b0| 68 20 61 20 64 69 66 66 | 65 72 65 6e 74 20 66 6f |h a diff|erent fo|
|000015c0| 72 6d 61 74 2e 20 20 57 | 69 74 68 0a 58 65 61 63 |rmat. W|ith.Xeac|
|000015d0| 68 20 64 61 74 61 62 61 | 73 65 2c 20 69 6e 64 65 |h databa|se, inde|
|000015e0| 78 20 61 6c 6c 6f 77 73 | 20 79 6f 75 20 74 6f 3a |x allows| you to:|
|000015f0| 0a 58 0a 58 09 2d 20 61 | 64 64 20 65 6e 74 72 69 |.X.X.- a|dd entri|
|00001600| 65 73 0a 58 09 2d 20 64 | 65 6c 65 74 65 20 65 6e |es.X.- d|elete en|
|00001610| 74 72 69 65 73 0a 58 09 | 2d 20 65 64 69 74 20 65 |tries.X.|- edit e|
|00001620| 78 69 73 74 69 6e 67 20 | 65 6e 74 72 69 65 73 0a |xisting |entries.|
|00001630| 58 09 2d 20 73 65 61 72 | 63 68 20 66 6f 72 20 65 |X.- sear|ch for e|
|00001640| 6e 74 72 69 65 73 20 75 | 73 69 6e 67 20 66 75 6c |ntries u|sing ful|
|00001650| 6c 20 72 65 67 75 6c 61 | 72 20 65 78 70 72 65 73 |l regula|r expres|
|00001660| 73 69 6f 6e 73 0a 58 09 | 2d 20 63 6f 6e 74 72 6f |sions.X.|- contro|
|00001670| 6c 20 77 68 61 74 20 70 | 61 72 74 73 20 6f 66 20 |l what p|arts of |
|00001680| 61 6e 20 65 6e 74 72 79 | 20 61 72 65 20 73 65 61 |an entry| are sea|
|00001690| 72 63 68 65 64 0a 58 09 | 2d 20 70 72 69 6e 74 20 |rched.X.|- print |
|000016a0| 6f 75 74 20 65 6e 74 72 | 69 65 73 20 6d 61 74 63 |out entr|ies matc|
|000016b0| 68 69 6e 67 20 61 20 70 | 61 74 74 65 72 6e 0a 58 |hing a p|attern.X|
|000016c0| 09 2d 20 72 75 6e 20 61 | 6c 6c 20 6f 72 20 70 61 |.- run a|ll or pa|
|000016d0| 72 74 20 6f 66 20 74 68 | 65 20 64 61 74 61 62 61 |rt of th|e databa|
|000016e0| 73 65 20 74 68 72 6f 75 | 67 68 20 61 6e 20 61 72 |se throu|gh an ar|
|000016f0| 62 69 74 72 61 72 79 0a | 58 09 20 20 66 6f 72 6d |bitrary.|X. form|
|00001700| 61 74 74 69 6e 67 20 70 | 72 6f 67 72 61 6d 0a 58 |atting p|rogram.X|
|00001710| 0a 58 54 68 65 20 64 61 | 74 61 62 61 73 65 73 20 |.XThe da|tabases |
|00001720| 69 6e 64 65 78 20 6d 61 | 69 6e 74 61 69 6e 73 20 |index ma|intains |
|00001730| 61 72 65 20 73 74 6f 72 | 65 64 20 61 73 20 73 69 |are stor|ed as si|
|00001740| 6d 70 6c 65 20 6c 69 6e | 65 73 20 6f 66 20 74 65 |mple lin|es of te|
|00001750| 78 74 2e 20 20 45 61 63 | 68 0a 58 66 69 65 6c 64 |xt. Eac|h.Xfield|
|00001760| 20 6f 66 20 61 6e 20 65 | 6e 74 72 79 20 69 73 20 | of an e|ntry is |
|00001770| 61 20 6c 69 6e 65 20 6f | 66 20 74 65 78 74 2c 20 |a line o|f text, |
|00001780| 61 6e 64 20 65 61 63 68 | 20 65 6e 74 72 79 20 69 |and each| entry i|
|00001790| 6e 20 74 68 65 20 64 61 | 74 61 62 61 73 65 20 69 |n the da|tabase i|
|000017a0| 73 0a 58 6d 61 64 65 20 | 75 70 20 6f 66 20 61 20 |s.Xmade |up of a |
|000017b0| 66 69 78 65 64 20 6e 75 | 6d 62 65 72 20 6f 66 20 |fixed nu|mber of |
|000017c0| 6c 69 6e 65 73 2e 20 20 | 46 6f 72 20 65 61 63 68 |lines. |For each|
|000017d0| 20 64 61 74 61 62 61 73 | 65 2c 20 79 6f 75 20 74 | databas|e, you t|
|000017e0| 65 6c 6c 20 69 6e 64 65 | 78 0a 58 77 68 61 74 20 |ell inde|x.Xwhat |
|000017f0| 65 61 63 68 20 66 69 65 | 6c 64 27 73 20 28 6c 69 |each fie|ld's (li|
|00001800| 6e 65 27 73 29 20 6e 61 | 6d 65 20 69 73 2e 20 20 |ne's) na|me is. |
|00001810| 59 6f 75 20 63 61 6e 20 | 68 61 76 65 20 6d 75 6c |You can |have mul|
|00001820| 74 69 70 6c 65 2d 6c 69 | 6e 65 20 66 69 65 6c 64 |tiple-li|ne field|
|00001830| 73 20 62 79 0a 58 6c 65 | 61 76 69 6e 67 20 74 68 |s by.Xle|aving th|
|00001840| 61 74 20 66 69 65 6c 64 | 27 73 20 6e 61 6d 65 20 |at field|'s name |
|00001850| 62 6c 61 6e 6b 2e 20 20 | 54 68 65 72 65 27 73 20 |blank. |There's |
|00001860| 6e 6f 20 66 61 6e 63 79 | 20 73 74 6f 72 61 67 65 |no fancy| storage|
|00001870| 20 61 6c 67 6f 72 69 74 | 68 6d 2c 0a 58 74 68 69 | algorit|hm,.Xthi|
|00001880| 6e 67 73 20 61 72 65 20 | 6a 75 73 74 20 73 74 6f |ngs are |just sto|
|00001890| 72 65 64 20 73 65 71 75 | 65 6e 74 69 61 6c 6c 79 |red sequ|entially|
|000018a0| 2e 20 20 42 75 74 20 66 | 6f 72 20 74 68 65 20 62 |. But f|or the b|
|000018b0| 69 67 67 65 73 74 20 64 | 61 74 61 62 61 73 65 20 |iggest d|atabase |
|000018c0| 49 27 76 65 0a 58 67 6f | 74 2c 20 61 62 6f 75 74 |I've.Xgo|t, about|
|000018d0| 20 35 30 30 20 35 2d 6c | 69 6e 65 20 65 6e 74 72 | 500 5-l|ine entr|
|000018e0| 69 65 73 2c 20 70 65 72 | 66 6f 72 6d 61 6e 63 65 |ies, per|formance|
|000018f0| 20 69 73 20 6a 75 73 74 | 20 66 69 6e 65 2e 0a 58 | is just| fine..X|
|00001900| 0a 58 49 6e 64 65 78 20 | 75 73 65 73 20 74 68 65 |.XIndex |uses the|
|00001910| 20 42 65 72 6b 65 6c 65 | 79 20 63 75 72 73 65 73 | Berkele|y curses|
|00001920| 20 6c 69 62 72 61 72 79 | 2e 20 20 49 74 20 68 61 | library|. It ha|
|00001930| 73 20 62 65 65 6e 20 74 | 65 73 74 65 64 20 6f 6e |s been t|ested on|
|00001940| 20 61 20 53 75 6e 2d 33 | 0a 58 75 6e 64 65 72 20 | a Sun-3|.Xunder |
|00001950| 53 75 6e 4f 53 20 34 2e | 30 2e 31 20 28 34 2e 33 |SunOS 4.|0.1 (4.3|
|00001960| 42 53 44 20 63 75 72 73 | 65 73 29 20 61 6e 64 20 |BSD curs|es) and |
|00001970| 6f 6e 20 61 20 53 65 71 | 75 65 6e 74 20 42 61 6c |on a Seq|uent Bal|
|00001980| 61 6e 63 65 20 75 6e 64 | 65 72 20 44 79 6e 69 78 |ance und|er Dynix|
|00001990| 0a 58 33 2e 30 2e 31 34 | 20 28 34 2e 32 42 53 44 |.X3.0.14| (4.2BSD|
|000019a0| 20 63 75 72 73 65 73 29 | 2e 20 20 49 74 20 73 68 | curses)|. It sh|
|000019b0| 6f 75 6c 64 20 62 65 20 | 66 61 69 72 6c 79 20 65 |ould be |fairly e|
|000019c0| 61 73 79 20 74 6f 20 70 | 6f 72 74 20 74 6f 20 53 |asy to p|ort to S|
|000019d0| 79 73 74 65 6d 20 56 20 | 2d 0a 58 79 6f 75 27 6c |ystem V |-.Xyou'l|
|000019e0| 6c 20 6e 65 65 64 20 74 | 6f 20 6d 6f 64 69 66 79 |l need t|o modify|
|000019f0| 20 73 63 72 65 65 6e 2e | 63 20 74 6f 20 72 65 73 | screen.|c to res|
|00001a00| 6f 6c 76 65 20 61 6e 79 | 20 63 75 72 73 65 73 20 |olve any| curses |
|00001a10| 69 6e 63 6f 6d 70 61 74 | 69 62 69 6c 69 74 69 65 |incompat|ibilitie|
|00001a20| 73 2c 0a 58 61 6e 64 20 | 79 6f 75 27 6c 6c 20 6e |s,.Xand |you'll n|
|00001a30| 65 65 64 20 74 6f 20 63 | 68 61 6e 67 65 20 74 68 |eed to c|hange th|
|00001a40| 65 20 63 61 6c 6c 73 20 | 74 6f 20 74 68 65 20 72 |e calls |to the r|
|00001a50| 65 67 75 6c 61 72 20 65 | 78 70 72 65 73 73 69 6f |egular e|xpressio|
|00001a60| 6e 20 6c 69 62 72 61 72 | 79 0a 58 72 6f 75 74 69 |n librar|y.Xrouti|
|00001a70| 6e 65 73 20 69 6e 20 73 | 65 61 72 63 68 64 62 2e |nes in s|earchdb.|
|00001a80| 63 20 74 6f 20 75 73 65 | 20 74 68 65 20 53 79 73 |c to use| the Sys|
|00001a90| 74 65 6d 20 56 20 73 74 | 79 6c 65 20 72 6f 75 74 |tem V st|yle rout|
|00001aa0| 69 6e 65 73 2e 0a 58 0a | 58 54 6f 20 63 6f 6d 70 |ines..X.|XTo comp|
|00001ab0| 69 6c 65 20 69 6e 64 65 | 78 2c 20 6a 75 73 74 20 |ile inde|x, just |
|00001ac0| 73 61 79 20 22 6d 61 6b | 65 22 2e 20 20 54 68 65 |say "mak|e". The|
|00001ad0| 6e 20 6d 61 6b 65 20 61 | 20 64 69 72 65 63 74 6f |n make a| directo|
|00001ae0| 72 79 20 69 6e 20 79 6f | 75 72 20 68 6f 6d 65 0a |ry in yo|ur home.|
|00001af0| 58 64 69 72 65 63 74 6f | 72 79 20 63 61 6c 6c 65 |Xdirecto|ry calle|
|00001b00| 64 20 22 2e 69 6e 64 65 | 78 22 20 28 6f 72 20 73 |d ".inde|x" (or s|
|00001b10| 65 74 20 74 68 65 20 65 | 6e 76 69 72 6f 6e 6d 65 |et the e|nvironme|
|00001b20| 6e 74 20 76 61 72 69 61 | 62 6c 65 20 49 4e 44 45 |nt varia|ble INDE|
|00001b30| 58 44 49 52 20 74 6f 0a | 58 70 6f 69 6e 74 20 73 |XDIR to.|Xpoint s|
|00001b40| 6f 6d 65 77 68 65 72 65 | 20 65 6c 73 65 29 2e 20 |omewhere| else). |
|00001b50| 20 4e 6f 77 2c 20 6a 75 | 73 74 20 73 61 79 20 22 | Now, ju|st say "|
|00001b60| 69 6e 64 65 78 22 2c 20 | 61 6e 64 20 79 6f 75 20 |index", |and you |
|00001b70| 63 61 6e 20 63 72 65 61 | 74 65 20 79 6f 75 72 0a |can crea|te your.|
|00001b80| 58 66 69 72 73 74 20 64 | 61 74 61 62 61 73 65 20 |Xfirst d|atabase |
|00001b90| 64 65 73 63 72 69 70 74 | 69 6f 6e 20 66 69 6c 65 |descript|ion file|
|00001ba0| 2e 20 20 54 68 65 20 64 | 69 72 65 63 74 6f 72 79 |. The d|irectory|
|00001bb0| 20 22 73 61 6d 70 6c 65 | 73 22 20 63 6f 6e 74 61 | "sample|s" conta|
|00001bc0| 69 6e 73 20 73 6f 6d 65 | 0a 58 73 61 6d 70 6c 65 |ins some|.Xsample|
|00001bd0| 20 64 61 74 61 62 61 73 | 65 20 64 65 73 63 72 69 | databas|e descri|
|00001be0| 70 74 69 6f 6e 20 66 69 | 6c 65 73 20 61 6e 64 20 |ption fi|les and |
|00001bf0| 66 6f 72 6d 61 74 74 69 | 6e 67 20 73 63 72 69 70 |formatti|ng scrip|
|00001c00| 74 73 3a 0a 58 0a 58 09 | 62 6f 6f 6b 73 2e 69 64 |ts:.X.X.|books.id|
|00001c10| 78 09 2d 20 66 6f 72 20 | 6b 65 65 70 69 6e 67 20 |x.- for |keeping |
|00001c20| 61 20 6c 69 73 74 20 6f | 66 20 62 6f 6f 6b 73 20 |a list o|f books |
|00001c30| 73 6f 72 74 65 64 20 62 | 79 20 61 75 74 68 6f 72 |sorted b|y author|
|00001c40| 2e 0a 58 09 62 6f 6f 6b | 73 2e 66 6d 74 09 2d 20 |..X.book|s.fmt.- |
|00001c50| 66 6f 72 6d 61 74 73 20 | 74 68 65 20 64 61 74 61 |formats |the data|
|00001c60| 62 61 73 65 20 69 6e 74 | 6f 20 61 20 74 62 6c 20 |base int|o a tbl |
|00001c70| 69 6e 70 75 74 20 66 69 | 6c 65 0a 58 09 09 09 20 |input fi|le.X... |
|00001c80| 20 77 68 69 63 68 20 70 | 72 69 6e 74 73 20 69 6e | which p|rints in|
|00001c90| 20 74 77 6f 20 63 6f 6c | 75 6d 6e 73 20 69 6e 20 | two col|umns in |
|00001ca0| 6c 61 6e 64 73 63 61 70 | 65 0a 58 09 09 09 20 20 |landscap|e.X... |
|00001cb0| 6d 6f 64 65 2e 0a 58 0a | 58 09 62 70 68 6f 6e 65 |mode..X.|X.bphone|
|00001cc0| 2e 69 64 78 09 2d 20 66 | 6f 72 20 61 20 62 75 73 |.idx.- f|or a bus|
|00001cd0| 69 6e 65 73 73 20 70 68 | 6f 6e 65 2f 61 64 64 72 |iness ph|one/addr|
|00001ce0| 65 73 73 20 64 61 74 61 | 62 61 73 65 2e 0a 58 0a |ess data|base..X.|
|00001cf0| 58 09 63 64 6c 69 73 74 | 2e 69 64 78 09 2d 20 66 |X.cdlist|.idx.- f|
|00001d00| 6f 72 20 6b 65 65 70 69 | 6e 67 20 61 20 6c 69 73 |or keepi|ng a lis|
|00001d10| 74 20 6f 66 20 63 6f 6d | 70 61 63 74 20 64 69 73 |t of com|pact dis|
|00001d20| 63 73 2e 0a 58 09 63 64 | 6c 69 73 74 2e 66 6d 74 |cs..X.cd|list.fmt|
|00001d30| 09 2d 20 66 6f 72 6d 61 | 74 73 20 74 68 65 20 64 |.- forma|ts the d|
|00001d40| 61 74 61 62 61 73 65 20 | 69 6e 74 6f 20 61 20 77 |atabase |into a w|
|00001d50| 69 64 65 20 6c 61 6e 64 | 73 63 61 70 65 2d 6d 6f |ide land|scape-mo|
|00001d60| 64 65 0a 58 09 09 09 20 | 20 74 62 6c 20 69 6e 70 |de.X... | tbl inp|
|00001d70| 75 74 20 66 69 6c 65 2e | 0a 58 0a 58 09 70 70 68 |ut file.|.X.X.pph|
|00001d80| 6f 6e 65 2e 69 64 78 09 | 2d 20 66 6f 72 20 6b 65 |one.idx.|- for ke|
|00001d90| 65 70 69 6e 67 20 61 20 | 70 65 72 73 6f 6e 61 6c |eping a |personal|
|00001da0| 20 70 68 6f 6e 65 2f 61 | 64 64 72 65 73 73 20 64 | phone/a|ddress d|
|00001db0| 61 74 61 62 61 73 65 0a | 58 09 09 09 20 20 77 69 |atabase.|X... wi|
|00001dc0| 74 68 20 68 6f 6d 65 20 | 61 6e 64 20 77 6f 72 6b |th home |and work|
|00001dd0| 20 61 64 64 72 65 73 73 | 65 73 20 61 6e 64 20 70 | address|es and p|
|00001de0| 68 6f 6e 65 20 6e 75 6d | 62 65 72 73 0a 58 09 09 |hone num|bers.X..|
|00001df0| 09 20 20 66 6f 72 20 79 | 6f 75 72 20 66 72 69 65 |. for y|our frie|
|00001e00| 6e 64 73 2e 0a 58 09 70 | 70 68 6f 6e 65 2e 66 6d |nds..X.p|phone.fm|
|00001e10| 74 09 2d 20 66 6f 72 6d | 61 74 73 20 74 68 65 20 |t.- form|ats the |
|00001e20| 64 61 74 61 62 61 73 65 | 20 69 6e 74 6f 20 61 20 |database| into a |
|00001e30| 74 72 6f 66 66 20 66 69 | 6c 65 20 77 68 69 63 68 |troff fi|le which|
|00001e40| 0a 58 09 09 09 20 20 6c | 69 73 74 73 20 65 61 63 |.X... l|ists eac|
|00001e50| 68 20 70 65 72 73 6f 6e | 20 61 6c 6f 6e 67 20 77 |h person| along w|
|00001e60| 69 74 68 20 74 68 65 69 | 72 20 68 6f 6d 65 20 61 |ith thei|r home a|
|00001e70| 6e 64 0a 58 09 09 09 20 | 20 77 6f 72 6b 20 61 64 |nd.X... | work ad|
|00001e80| 64 72 65 73 73 65 73 2e | 20 20 55 73 65 66 75 6c |dresses.| Useful|
|00001e90| 20 66 6f 72 20 6b 65 65 | 70 69 6e 67 20 62 79 20 | for kee|ping by |
|00001ea0| 74 68 65 0a 58 09 09 09 | 20 20 70 68 6f 6e 65 20 |the.X...| phone |
|00001eb0| 6f 72 20 73 65 6e 64 69 | 6e 67 20 58 6d 61 73 20 |or sendi|ng Xmas |
|00001ec0| 63 61 72 64 73 2e 2e 0a | 58 0a 58 53 69 6e 63 65 |cards...|X.XSince|
|00001ed0| 20 6d 6f 76 69 6e 67 20 | 61 6c 6c 20 6d 79 20 6c | moving |all my l|
|00001ee0| 69 73 74 73 20 69 6e 74 | 6f 20 74 68 65 20 69 6e |ists int|o the in|
|00001ef0| 64 65 78 20 70 72 6f 67 | 72 61 6d 2c 20 49 27 76 |dex prog|ram, I'v|
|00001f00| 65 20 66 6f 75 6e 64 20 | 74 68 69 6e 67 73 20 61 |e found |things a|
|00001f10| 20 6c 6f 74 0a 58 65 61 | 73 69 65 72 20 74 6f 20 | lot.Xea|sier to |
|00001f20| 6b 65 65 70 20 74 72 61 | 63 6b 20 6f 66 2e 20 20 |keep tra|ck of. |
|00001f30| 49 20 68 6f 70 65 20 79 | 6f 75 27 6c 6c 20 66 69 |I hope y|ou'll fi|
|00001f40| 6e 64 20 69 74 20 61 73 | 20 75 73 65 66 75 6c 20 |nd it as| useful |
|00001f50| 61 73 20 49 20 64 6f 2e | 0a 58 0a 58 44 61 76 69 |as I do.|.X.XDavi|
|00001f60| 64 20 41 2e 20 43 75 72 | 72 79 0a 58 52 65 73 65 |d A. Cur|ry.XRese|
|00001f70| 61 72 63 68 20 49 6e 73 | 74 69 74 75 74 65 20 66 |arch Ins|titute f|
|00001f80| 6f 72 20 41 64 76 61 6e | 63 65 64 20 43 6f 6d 70 |or Advan|ced Comp|
|00001f90| 75 74 65 72 20 53 63 69 | 65 6e 63 65 0a 58 4d 61 |uter Sci|ence.XMa|
|00001fa0| 69 6c 20 53 74 6f 70 20 | 32 33 30 2d 35 0a 58 4e |il Stop |230-5.XN|
|00001fb0| 41 53 41 20 41 6d 65 73 | 20 52 65 73 65 61 72 63 |ASA Ames| Researc|
|00001fc0| 68 20 43 65 6e 74 65 72 | 0a 58 4d 6f 66 66 65 74 |h Center|.XMoffet|
|00001fd0| 74 20 46 69 65 6c 64 2c | 20 43 41 20 39 34 30 33 |t Field,| CA 9403|
|00001fe0| 35 0a 58 0a 45 4e 44 5f | 4f 46 5f 46 49 4c 45 0a |5.X.END_|OF_FILE.|
|00001ff0| 69 66 20 74 65 73 74 20 | 33 32 32 30 20 2d 6e 65 |if test |3220 -ne|
|00002000| 20 60 77 63 20 2d 63 20 | 3c 27 52 45 41 44 4d 45 | `wc -c |<'README|
|00002010| 27 60 3b 20 74 68 65 6e | 0a 20 20 20 20 65 63 68 |'`; then|. ech|
|00002020| 6f 20 73 68 61 72 3a 20 | 5c 22 27 52 45 41 44 4d |o shar: |\"'READM|
|00002030| 45 27 5c 22 20 75 6e 70 | 61 63 6b 65 64 20 77 69 |E'\" unp|acked wi|
|00002040| 74 68 20 77 72 6f 6e 67 | 20 73 69 7a 65 21 0a 66 |th wrong| size!.f|
|00002050| 69 0a 23 20 65 6e 64 20 | 6f 66 20 27 52 45 41 44 |i.# end |of 'READ|
|00002060| 4d 45 27 0a 66 69 0a 69 | 66 20 74 65 73 74 20 2d |ME'.fi.i|f test -|
|00002070| 66 20 27 63 72 65 61 74 | 65 64 62 2e 63 27 20 2d |f 'creat|edb.c' -|
|00002080| 61 20 22 24 7b 31 7d 22 | 20 21 3d 20 22 2d 63 22 |a "${1}"| != "-c"|
|00002090| 20 3b 20 74 68 65 6e 20 | 0a 20 20 65 63 68 6f 20 | ; then |. echo |
|000020a0| 73 68 61 72 3a 20 57 69 | 6c 6c 20 6e 6f 74 20 63 |shar: Wi|ll not c|
|000020b0| 6c 6f 62 62 65 72 20 65 | 78 69 73 74 69 6e 67 20 |lobber e|xisting |
|000020c0| 66 69 6c 65 20 5c 22 27 | 63 72 65 61 74 65 64 62 |file \"'|createdb|
|000020d0| 2e 63 27 5c 22 0a 65 6c | 73 65 0a 65 63 68 6f 20 |.c'\".el|se.echo |
|000020e0| 73 68 61 72 3a 20 45 78 | 74 72 61 63 74 69 6e 67 |shar: Ex|tracting|
|000020f0| 20 5c 22 27 63 72 65 61 | 74 65 64 62 2e 63 27 5c | \"'crea|tedb.c'\|
|00002100| 22 20 5c 28 33 33 32 35 | 20 63 68 61 72 61 63 74 |" \(3325| charact|
|00002110| 65 72 73 5c 29 0a 73 65 | 64 20 22 73 2f 5e 58 2f |ers\).se|d "s/^X/|
|00002120| 2f 22 20 3e 27 63 72 65 | 61 74 65 64 62 2e 63 27 |/" >'cre|atedb.c'|
|00002130| 20 3c 3c 27 45 4e 44 5f | 4f 46 5f 46 49 4c 45 27 | <<'END_|OF_FILE'|
|00002140| 0a 58 23 69 66 6e 64 65 | 66 20 6c 69 6e 74 0a 58 |.X#ifnde|f lint.X|
|00002150| 73 74 61 74 69 63 20 63 | 68 61 72 20 2a 52 43 53 |static c|har *RCS|
|00002160| 69 64 20 3d 20 22 24 48 | 65 61 64 65 72 3a 20 2f |id = "$H|eader: /|
|00002170| 75 35 2f 64 61 76 79 2f | 70 72 6f 67 73 2f 69 6e |u5/davy/|progs/in|
|00002180| 64 65 78 2f 52 43 53 2f | 63 72 65 61 74 65 64 62 |dex/RCS/|createdb|
|00002190| 2e 63 2c 76 20 31 2e 31 | 20 38 39 2f 30 38 2f 30 |.c,v 1.1| 89/08/0|
|000021a0| 39 20 31 31 3a 30 36 3a | 32 31 20 64 61 76 79 20 |9 11:06:|21 davy |
|000021b0| 45 78 70 20 24 22 3b 0a | 58 23 65 6e 64 69 66 0a |Exp $";.|X#endif.|
|000021c0| 58 2f 2a 0a 58 20 2a 20 | 63 72 65 61 74 65 64 62 |X/*.X * |createdb|
|000021d0| 2e 63 20 2d 20 68 61 6e | 64 6c 65 20 63 72 65 61 |.c - han|dle crea|
|000021e0| 74 69 6e 67 20 61 20 6e | 65 77 20 64 61 74 61 62 |ting a n|ew datab|
|000021f0| 61 73 65 2e 0a 58 20 2a | 0a 58 20 2a 20 44 61 76 |ase..X *|.X * Dav|
|00002200| 69 64 20 41 2e 20 43 75 | 72 72 79 0a 58 20 2a 20 |id A. Cu|rry.X * |
|00002210| 52 65 73 65 61 72 63 68 | 20 49 6e 73 74 69 74 75 |Research| Institu|
|00002220| 74 65 20 66 6f 72 20 41 | 64 76 61 6e 63 65 64 20 |te for A|dvanced |
|00002230| 43 6f 6d 70 75 74 65 72 | 20 53 63 69 65 6e 63 65 |Computer| Science|
|00002240| 0a 58 20 2a 20 4d 61 69 | 6c 20 53 74 6f 70 20 32 |.X * Mai|l Stop 2|
|00002250| 33 30 2d 35 0a 58 20 2a | 20 4e 41 53 41 20 41 6d |30-5.X *| NASA Am|
|00002260| 65 73 20 52 65 73 65 61 | 72 63 68 20 43 65 6e 74 |es Resea|rch Cent|
|00002270| 65 72 0a 58 20 2a 20 4d | 6f 66 66 65 74 74 20 46 |er.X * M|offett F|
|00002280| 69 65 6c 64 2c 20 43 41 | 20 39 34 30 33 35 0a 58 |ield, CA| 94035.X|
|00002290| 20 2a 20 64 61 76 79 40 | 72 69 61 63 73 2e 65 64 | * davy@|riacs.ed|
|000022a0| 75 0a 58 20 2a 0a 58 20 | 2a 20 24 4c 6f 67 3a 09 |u.X *.X |* $Log:.|
|000022b0| 63 72 65 61 74 65 64 62 | 2e 63 2c 76 20 24 0a 58 |createdb|.c,v $.X|
|000022c0| 20 2a 20 52 65 76 69 73 | 69 6f 6e 20 31 2e 31 20 | * Revis|ion 1.1 |
|000022d0| 20 38 39 2f 30 38 2f 30 | 39 20 20 31 31 3a 30 36 | 89/08/0|9 11:06|
|000022e0| 3a 32 31 20 20 64 61 76 | 79 0a 58 20 2a 20 49 6e |:21 dav|y.X * In|
|000022f0| 69 74 69 61 6c 20 72 65 | 76 69 73 69 6f 6e 0a 58 |itial re|vision.X|
|00002300| 20 2a 20 0a 58 20 2a 2f | 0a 58 23 69 6e 63 6c 75 | * .X */|.X#inclu|
|00002310| 64 65 20 3c 73 79 73 2f | 70 61 72 61 6d 2e 68 3e |de <sys/|param.h>|
|00002320| 0a 58 23 69 6e 63 6c 75 | 64 65 20 3c 63 75 72 73 |.X#inclu|de <curs|
|00002330| 65 73 2e 68 3e 0a 58 23 | 69 6e 63 6c 75 64 65 20 |es.h>.X#|include |
|00002340| 3c 73 74 64 69 6f 2e 68 | 3e 0a 58 23 69 6e 63 6c |<stdio.h|>.X#incl|
|00002350| 75 64 65 20 22 64 65 66 | 73 2e 68 22 0a 58 0a 58 |ude "def|s.h".X.X|
|00002360| 2f 2a 0a 58 20 2a 20 54 | 68 65 20 6d 65 73 73 61 |/*.X * T|he messa|
|00002370| 67 65 20 77 65 27 6c 6c | 20 70 72 69 6e 74 20 74 |ge we'll| print t|
|00002380| 6f 20 65 78 70 6c 61 69 | 6e 20 77 68 61 74 27 73 |o explai|n what's|
|00002390| 20 68 61 70 70 65 6e 69 | 6e 67 2e 0a 58 20 2a 2f | happeni|ng..X */|
|000023a0| 0a 58 73 74 61 74 69 63 | 20 73 74 72 75 63 74 20 |.Xstatic| struct |
|000023b0| 6d 65 73 73 61 67 65 20 | 7b 0a 58 09 63 68 61 72 |message |{.X.char|
|000023c0| 09 2a 6d 5f 6c 69 6e 65 | 3b 0a 58 09 63 68 61 72 |.*m_line|;.X.char|
|000023d0| 09 2a 6d 5f 61 72 67 3b | 0a 58 7d 20 6d 65 73 73 |.*m_arg;|.X} mess|
|000023e0| 61 67 65 5b 5d 20 3d 20 | 7b 0a 58 20 20 7b 20 22 |age[] = |{.X { "|
|000023f0| 59 6f 75 20 77 69 6c 6c | 20 6e 6f 77 20 62 65 20 |You will| now be |
|00002400| 70 6c 61 63 65 64 20 69 | 6e 74 6f 20 61 6e 20 65 |placed i|nto an e|
|00002410| 64 69 74 6f 72 20 73 6f | 20 74 68 61 74 20 79 6f |ditor so| that yo|
|00002420| 75 20 63 61 6e 20 63 72 | 65 61 74 65 20 74 68 65 |u can cr|eate the|
|00002430| 5c 6e 22 2c 0a 58 09 30 | 20 7d 2c 0a 58 20 20 7b |\n",.X.0| },.X {|
|00002440| 20 22 64 61 74 61 62 61 | 73 65 20 64 65 73 63 72 | "databa|se descr|
|00002450| 69 70 74 69 6f 6e 20 66 | 69 6c 65 2e 20 20 54 68 |iption f|ile. Th|
|00002460| 69 73 20 66 69 6c 65 20 | 77 69 6c 6c 20 62 65 20 |is file |will be |
|00002470| 75 73 65 64 20 62 79 20 | 74 68 65 20 70 72 6f 67 |used by |the prog|
|00002480| 72 61 6d 5c 6e 22 2c 0a | 58 09 30 20 7d 2c 0a 58 |ram\n",.|X.0 },.X|
|00002490| 20 20 7b 20 22 74 6f 20 | 70 72 6f 6d 70 74 20 79 | { "to |prompt y|
|000024a0| 6f 75 20 66 6f 72 20 6e | 65 77 20 69 74 65 6d 73 |ou for n|ew items|
|000024b0| 20 74 6f 20 62 65 20 69 | 6e 73 65 72 74 65 64 20 | to be i|nserted |
|000024c0| 69 6e 74 6f 20 74 68 65 | 20 64 61 74 61 62 61 73 |into the| databas|
|000024d0| 65 2e 5c 6e 22 2c 0a 58 | 09 30 20 7d 2c 0a 58 20 |e.\n",.X|.0 },.X |
|000024e0| 20 7b 20 22 5c 6e 22 2c | 0a 58 09 30 20 7d 2c 0a | { "\n",|.X.0 },.|
|000024f0| 58 20 20 7b 20 22 45 61 | 63 68 20 6c 69 6e 65 20 |X { "Ea|ch line |
|00002500| 69 6e 20 74 68 69 73 20 | 66 69 6c 65 20 69 73 20 |in this |file is |
|00002510| 74 68 65 20 6e 61 6d 65 | 20 6f 66 20 61 20 66 69 |the name| of a fi|
|00002520| 65 6c 64 2e 20 20 49 74 | 20 6d 61 79 20 62 65 20 |eld. It| may be |
|00002530| 61 73 20 6c 6f 6e 67 20 | 61 73 5c 6e 22 2c 0a 58 |as long |as\n",.X|
|00002540| 09 30 20 7d 2c 0a 58 20 | 20 7b 20 22 79 6f 75 20 |.0 },.X | { "you |
|00002550| 77 61 6e 74 2c 20 61 6e | 64 20 6d 61 79 20 63 6f |want, an|d may co|
|00002560| 6e 74 61 69 6e 20 73 70 | 61 63 65 73 2e 20 20 54 |ntain sp|aces. T|
|00002570| 68 65 20 6f 72 64 65 72 | 20 6f 66 20 74 68 65 20 |he order| of the |
|00002580| 6c 69 6e 65 73 20 69 6e | 20 74 68 65 20 66 69 6c |lines in| the fil|
|00002590| 65 5c 6e 22 2c 0a 58 09 | 30 20 7d 2c 0a 58 20 20 |e\n",.X.|0 },.X |
|000025a0| 7b 20 22 69 73 20 74 68 | 65 20 6f 72 64 65 72 20 |{ "is th|e order |
|000025b0| 79 6f 75 20 77 69 6c 6c | 20 62 65 20 70 72 6f 6d |you will| be prom|
|000025c0| 70 74 65 64 20 66 6f 72 | 20 6e 65 77 20 69 6e 66 |pted for| new inf|
|000025d0| 6f 72 6d 61 74 69 6f 6e | 20 77 68 65 6e 20 69 6e |ormation| when in|
|000025e0| 73 65 72 74 69 6e 67 5c | 6e 22 2c 0a 58 09 30 20 |serting\|n",.X.0 |
|000025f0| 7d 2c 0a 58 20 20 7b 20 | 22 69 6e 74 6f 20 74 68 |},.X { |"into th|
|00002600| 65 20 64 61 74 61 62 61 | 73 65 2e 20 20 59 6f 75 |e databa|se. You|
|00002610| 20 6d 61 79 20 6c 65 61 | 76 65 20 62 6c 61 6e 6b | may lea|ve blank|
|00002620| 20 6c 69 6e 65 73 20 69 | 6e 20 74 68 65 20 66 69 | lines i|n the fi|
|00002630| 6c 65 3b 20 74 68 69 73 | 20 61 6c 6c 6f 77 73 5c |le; this| allows\|
|00002640| 6e 22 2c 0a 58 09 30 20 | 7d 2c 0a 58 20 20 7b 20 |n",.X.0 |},.X { |
|00002650| 22 6d 75 6c 74 69 70 6c | 65 2d 6c 69 6e 65 20 65 |"multipl|e-line e|
|00002660| 6e 74 72 69 65 73 20 66 | 6f 72 20 69 74 65 6d 73 |ntries f|or items|
|00002670| 20 73 75 63 68 20 61 73 | 20 61 64 64 65 73 73 65 | such as| addesse|
|00002680| 73 2e 20 20 59 6f 75 20 | 6d 61 79 20 68 61 76 65 |s. You |may have|
|00002690| 20 61 5c 6e 22 2c 0a 58 | 09 30 20 7d 2c 0a 58 20 | a\n",.X|.0 },.X |
|000026a0| 20 7b 20 22 74 6f 74 61 | 6c 20 6f 66 20 25 64 20 | { "tota|l of %d |
|000026b0| 6c 69 6e 65 73 20 69 6e | 20 74 68 65 20 66 69 6c |lines in| the fil|
|000026c0| 65 2e 5c 6e 22 2c 0a 58 | 09 28 63 68 61 72 20 2a |e.\n",.X|.(char *|
|000026d0| 29 20 4d 41 58 44 42 4c | 49 4e 45 53 20 7d 2c 0a |) MAXDBL|INES },.|
|000026e0| 58 20 20 7b 20 22 5c 6e | 22 2c 0a 58 09 30 20 7d |X { "\n|",.X.0 }|
|000026f0| 2c 0a 58 20 20 7b 20 22 | 42 79 20 64 65 66 61 75 |,.X { "|By defau|
|00002700| 6c 74 2c 20 61 6c 6c 20 | 6c 69 6e 65 73 20 69 6e |lt, all |lines in|
|00002710| 20 61 6e 20 65 6e 74 72 | 79 20 77 69 6c 6c 20 62 | an entr|y will b|
|00002720| 65 20 65 78 61 6d 69 6e | 65 64 20 77 68 65 6e 20 |e examin|ed when |
|00002730| 73 65 61 72 63 68 69 6e | 67 20 66 6f 72 5c 6e 22 |searchin|g for\n"|
|00002740| 2c 0a 58 09 30 20 7d 2c | 0a 58 20 20 7b 20 22 61 |,.X.0 },|.X { "a|
|00002750| 20 70 61 74 74 65 72 6e | 2e 20 20 54 6f 20 6d 61 | pattern|. To ma|
|00002760| 6b 65 20 74 68 65 20 70 | 72 6f 67 72 61 6d 20 69 |ke the p|rogram i|
|00002770| 67 6e 6f 72 65 20 61 20 | 6c 69 6e 65 2c 20 73 74 |gnore a |line, st|
|00002780| 61 72 74 20 74 68 61 74 | 20 6c 69 6e 65 20 77 69 |art that| line wi|
|00002790| 74 68 20 61 6e 5c 6e 22 | 2c 0a 58 09 30 20 7d 2c |th an\n"|,.X.0 },|
|000027a0| 0a 58 20 20 7b 20 22 65 | 78 63 6c 61 6d 61 74 69 |.X { "e|xclamati|
|000027b0| 6f 6e 20 70 6f 69 6e 74 | 20 28 21 29 2e 5c 6e 22 |on point| (!).\n"|
|000027c0| 2c 0a 58 09 30 20 7d 2c | 0a 58 20 20 7b 20 22 5c |,.X.0 },|.X { "\|
|000027d0| 6e 22 2c 0a 58 09 30 20 | 7d 2c 0a 58 20 20 7b 20 |n",.X.0 |},.X { |
|000027e0| 22 54 68 65 20 64 61 74 | 61 62 61 73 65 20 69 73 |"The dat|abase is|
|000027f0| 20 61 6c 77 61 79 73 20 | 73 6f 72 74 65 64 20 69 | always |sorted i|
|00002800| 6e 74 6f 20 41 53 43 49 | 49 20 63 6f 6c 6c 61 74 |nto ASCI|I collat|
|00002810| 69 6e 67 20 73 65 71 75 | 65 6e 63 65 20 62 61 73 |ing sequ|ence bas|
|00002820| 65 64 20 6f 6e 5c 6e 22 | 2c 0a 58 09 30 20 7d 2c |ed on\n"|,.X.0 },|
|00002830| 0a 58 20 20 7b 20 22 74 | 68 65 20 63 6f 6e 74 65 |.X { "t|he conte|
|00002840| 6e 74 73 20 6f 66 20 74 | 68 65 20 66 69 72 73 74 |nts of t|he first|
|00002850| 20 66 69 65 6c 64 2e 5c | 6e 22 2c 0a 58 09 30 20 | field.\|n",.X.0 |
|00002860| 7d 2c 0a 58 20 20 7b 20 | 22 5c 6e 22 2c 0a 58 09 |},.X { |"\n",.X.|
|00002870| 30 20 7d 2c 0a 58 20 20 | 7b 20 22 57 68 65 6e 20 |0 },.X |{ "When |
|00002880| 79 6f 75 20 61 72 65 20 | 66 69 6e 69 73 68 65 64 |you are |finished|
|00002890| 2c 20 73 61 76 65 20 74 | 68 65 20 66 69 6c 65 20 |, save t|he file |
|000028a0| 61 6e 64 20 65 78 69 74 | 20 74 68 65 20 65 64 69 |and exit| the edi|
|000028b0| 74 6f 72 2e 20 20 59 6f | 75 20 77 69 6c 6c 5c 6e |tor. Yo|u will\n|
|000028c0| 22 2c 0a 58 09 30 20 7d | 2c 0a 58 20 20 7b 20 22 |",.X.0 }|,.X { "|
|000028d0| 74 68 65 6e 20 62 65 20 | 70 6c 61 63 65 64 20 69 |then be |placed i|
|000028e0| 6e 20 74 68 65 20 6d 61 | 69 6e 20 6d 65 6e 75 2c |n the ma|in menu,|
|000028f0| 20 77 68 65 72 65 20 79 | 6f 75 20 63 61 6e 20 73 | where y|ou can s|
|00002900| 65 6c 65 63 74 20 6f 74 | 68 65 72 20 6f 70 65 72 |elect ot|her oper|
|00002910| 61 74 69 6f 6e 73 5c 6e | 22 2c 0a 58 09 30 20 7d |ations\n|",.X.0 }|
|00002920| 2c 0a 58 20 20 7b 20 22 | 6f 6e 20 74 68 65 20 64 |,.X { "|on the d|
|00002930| 61 74 61 62 61 73 65 2e | 5c 6e 22 2c 0a 58 09 30 |atabase.|\n",.X.0|
|00002940| 20 7d 2c 0a 58 20 20 7b | 20 4e 55 4c 4c 2c 20 30 | },.X {| NULL, 0|
|00002950| 20 7d 0a 58 7d 3b 0a 58 | 0a 58 2f 2a 0a 58 20 2a | }.X};.X|.X/*.X *|
|00002960| 20 63 72 65 61 74 65 5f | 64 62 20 2d 20 65 78 65 | create_|db - exe|
|00002970| 63 75 74 65 20 61 6e 20 | 65 64 69 74 6f 72 20 74 |cute an |editor t|
|00002980| 6f 20 61 6c 6c 6f 77 20 | 74 68 65 20 70 65 72 73 |o allow |the pers|
|00002990| 6f 6e 20 74 6f 20 63 72 | 65 61 74 65 20 74 68 65 |on to cr|eate the|
|000029a0| 0a 58 20 2a 09 20 20 20 | 20 20 20 20 69 6e 64 65 |.X *. | inde|
|000029b0| 78 20 64 65 66 69 6e 69 | 74 69 6f 6e 20 66 69 6c |x defini|tion fil|
|000029c0| 65 2e 0a 58 20 2a 2f 0a | 58 63 72 65 61 74 65 5f |e..X */.|Xcreate_|
|000029d0| 64 62 28 64 62 6e 61 6d | 65 29 0a 58 63 68 61 72 |db(dbnam|e).Xchar|
|000029e0| 20 2a 64 62 6e 61 6d 65 | 3b 0a 58 7b 0a 58 09 69 | *dbname|;.X{.X.i|
|000029f0| 6e 74 20 70 69 64 3b 0a | 58 09 63 68 61 72 20 2a |nt pid;.|X.char *|
|00002a00| 65 64 69 74 6f 72 3b 0a | 58 09 63 68 61 72 20 2a |editor;.|X.char *|
|00002a10| 67 65 74 65 6e 76 28 29 | 3b 0a 58 09 72 65 67 69 |getenv()|;.X.regi|
|00002a20| 73 74 65 72 20 69 6e 74 | 20 72 6f 77 3b 0a 58 09 |ster int| row;.X.|
|00002a30| 63 68 61 72 20 62 75 66 | 5b 42 55 46 53 49 5a 5d |char buf|[BUFSIZ]|
|00002a40| 2c 20 66 6e 61 6d 65 5b | 4d 41 58 50 41 54 48 4c |, fname[|MAXPATHL|
|00002a50| 45 4e 5d 3b 0a 58 0a 58 | 09 2f 2a 0a 58 09 20 2a |EN];.X.X|./*.X. *|
|00002a60| 20 43 6c 65 61 72 20 74 | 68 65 20 73 63 72 65 65 | Clear t|he scree|
|00002a70| 6e 20 61 6e 64 20 6d 6f | 76 65 20 74 6f 20 74 68 |n and mo|ve to th|
|00002a80| 65 20 74 6f 70 2e 0a 58 | 09 20 2a 2f 0a 58 09 63 |e top..X|. */.X.c|
|00002a90| 6c 65 61 72 28 29 3b 0a | 58 09 6d 6f 76 65 28 30 |lear();.|X.move(0|
|00002aa0| 2c 20 30 29 3b 0a 58 0a | 58 09 2f 2a 0a 58 09 20 |, 0);.X.|X./*.X. |
|00002ab0| 2a 20 50 72 69 6e 74 20 | 6f 75 74 20 74 68 65 20 |* Print |out the |
|00002ac0| 65 78 70 6c 61 6e 61 74 | 6f 72 79 20 6d 65 73 73 |explanat|ory mess|
|00002ad0| 61 67 65 2e 0a 58 09 20 | 2a 2f 0a 58 09 66 6f 72 |age..X. |*/.X.for|
|00002ae0| 20 28 72 6f 77 3d 30 3b | 20 6d 65 73 73 61 67 65 | (row=0;| message|
|00002af0| 5b 72 6f 77 5d 2e 6d 5f | 6c 69 6e 65 20 21 3d 20 |[row].m_|line != |
|00002b00| 4e 55 4c 4c 3b 20 72 6f | 77 2b 2b 29 0a 58 09 09 |NULL; ro|w++).X..|
|00002b10| 70 72 69 6e 74 77 28 6d | 65 73 73 61 67 65 5b 72 |printw(m|essage[r|
|00002b20| 6f 77 5d 2e 6d 5f 6c 69 | 6e 65 2c 20 6d 65 73 73 |ow].m_li|ne, mess|
|00002b30| 61 67 65 5b 72 6f 77 5d | 2e 6d 5f 61 72 67 29 3b |age[row]|.m_arg);|
|00002b40| 0a 58 0a 58 09 2f 2a 0a | 58 09 20 2a 20 47 69 76 |.X.X./*.|X. * Giv|
|00002b50| 65 20 74 68 65 20 75 73 | 65 72 20 61 20 63 68 61 |e the us|er a cha|
|00002b60| 6e 63 65 20 74 6f 20 72 | 65 61 64 20 69 74 2e 20 |nce to r|ead it. |
|00002b70| 20 57 61 69 74 20 74 69 | 6c 6c 20 74 68 65 79 0a | Wait ti|ll they.|
|00002b80| 58 09 20 2a 20 74 79 70 | 65 20 61 20 63 61 72 72 |X. * typ|e a carr|
|00002b90| 69 61 67 65 20 72 65 74 | 75 72 6e 20 62 65 66 6f |iage ret|urn befo|
|00002ba0| 72 65 20 70 72 6f 63 65 | 65 64 69 6e 67 2e 0a 58 |re proce|eding..X|
|00002bb0| 09 20 2a 2f 0a 58 09 70 | 72 6f 6d 70 74 5f 63 68 |. */.X.p|rompt_ch|
|00002bc0| 61 72 28 2b 2b 72 6f 77 | 2c 20 30 2c 20 22 54 79 |ar(++row|, 0, "Ty|
|00002bd0| 70 65 20 52 45 54 55 52 | 4e 20 74 6f 20 63 6f 6e |pe RETUR|N to con|
|00002be0| 74 69 6e 75 65 3a 20 22 | 2c 20 22 5c 6e 22 29 3b |tinue: "|, "\n");|
|00002bf0| 0a 58 0a 58 09 2f 2a 0a | 58 09 20 2a 20 55 73 65 |.X.X./*.|X. * Use|
|00002c00| 20 74 68 65 20 65 64 69 | 74 6f 72 20 74 68 65 20 | the edi|tor the |
|00002c10| 75 73 65 72 20 70 72 65 | 66 65 72 73 2c 20 6f 72 |user pre|fers, or|
|00002c20| 20 45 44 49 54 4f 52 20 | 69 66 0a 58 09 20 2a 20 | EDITOR |if.X. * |
|00002c30| 68 65 20 64 6f 65 73 6e | 27 74 20 68 61 76 65 20 |he doesn|'t have |
|00002c40| 61 6e 79 74 68 69 6e 67 | 20 73 65 74 2e 0a 58 09 |anything| set..X.|
|00002c50| 20 2a 2f 0a 58 09 69 66 | 20 28 28 65 64 69 74 6f | */.X.if| ((edito|
|00002c60| 72 20 3d 20 67 65 74 65 | 6e 76 28 22 45 44 49 54 |r = gete|nv("EDIT|
|00002c70| 4f 52 22 29 29 20 3d 3d | 20 4e 55 4c 4c 29 0a 58 |OR")) ==| NULL).X|
|00002c80| 09 09 65 64 69 74 6f 72 | 20 3d 20 45 44 49 54 4f |..editor| = EDITO|
|00002c90| 52 3b 0a 58 0a 58 09 2f | 2a 0a 58 09 20 2a 20 43 |R;.X.X./|*.X. * C|
|00002ca0| 6f 6e 73 74 72 75 63 74 | 20 74 68 65 20 66 69 6c |onstruct| the fil|
|00002cb0| 65 20 6e 61 6d 65 2e 0a | 58 09 20 2a 2f 0a 58 09 |e name..|X. */.X.|
|00002cc0| 73 70 72 69 6e 74 66 28 | 66 6e 61 6d 65 2c 20 22 |sprintf(|fname, "|
|00002cd0| 25 73 2f 25 73 25 73 22 | 2c 20 64 62 61 73 65 64 |%s/%s%s"|, dbased|
|00002ce0| 69 72 2c 20 64 62 6e 61 | 6d 65 2c 20 49 44 58 46 |ir, dbna|me, IDXF|
|00002cf0| 49 4c 45 5f 53 55 46 46 | 49 58 29 3b 0a 58 0a 58 |ILE_SUFF|IX);.X.X|
|00002d00| 09 2f 2a 0a 58 09 20 2a | 20 47 6f 20 62 61 63 6b |./*.X. *| Go back|
|00002d10| 20 74 6f 20 6e 6f 72 6d | 61 6c 20 74 74 79 20 6d | to norm|al tty m|
|00002d20| 6f 64 65 73 2e 0a 58 09 | 20 2a 2f 0a 58 09 72 65 |odes..X.| */.X.re|
|00002d30| 73 65 74 5f 6d 6f 64 65 | 73 28 29 3b 0a 58 0a 58 |set_mode|s();.X.X|
|00002d40| 09 2f 2a 0a 58 09 20 2a | 20 53 70 61 77 6e 20 61 |./*.X. *| Spawn a|
|00002d50| 20 63 68 69 6c 64 20 70 | 72 6f 63 65 73 73 2e 0a | child p|rocess..|
|00002d60| 58 09 20 2a 2f 0a 58 09 | 69 66 20 28 28 70 69 64 |X. */.X.|if ((pid|
|00002d70| 20 3d 20 66 6f 72 6b 28 | 29 29 20 3c 20 30 29 20 | = fork(|)) < 0) |
|00002d80| 7b 0a 58 09 09 65 72 72 | 6f 72 28 22 25 73 3a 20 |{.X..err|or("%s: |
|00002d90| 63 61 6e 6e 6f 74 20 66 | 6f 72 6b 2e 5c 6e 22 2c |cannot f|ork.\n",|
|00002da0| 20 70 6e 61 6d 65 2c 20 | 30 2c 20 30 29 3b 0a 58 | pname, |0, 0);.X|
|00002db0| 09 09 65 78 69 74 28 31 | 29 3b 0a 58 09 7d 0a 58 |..exit(1|);.X.}.X|
|00002dc0| 0a 58 09 2f 2a 0a 58 09 | 20 2a 20 45 78 65 63 75 |.X./*.X.| * Execu|
|00002dd0| 74 65 20 74 68 65 20 65 | 64 69 74 6f 72 2e 0a 58 |te the e|ditor..X|
|00002de0| 09 20 2a 2f 0a 58 09 69 | 66 20 28 70 69 64 20 3d |. */.X.i|f (pid =|
|00002df0| 3d 20 30 29 20 7b 0a 58 | 09 09 65 78 65 63 6c 28 |= 0) {.X|..execl(|
|00002e00| 65 64 69 74 6f 72 2c 20 | 65 64 69 74 6f 72 2c 20 |editor, |editor, |
|00002e10| 66 6e 61 6d 65 2c 20 30 | 29 3b 0a 58 09 09 70 65 |fname, 0|);.X..pe|
|00002e20| 72 72 6f 72 28 65 64 69 | 74 6f 72 29 3b 0a 58 09 |rror(edi|tor);.X.|
|00002e30| 09 65 78 69 74 28 31 29 | 3b 0a 58 09 7d 0a 58 0a |.exit(1)|;.X.}.X.|
|00002e40| 58 09 2f 2a 0a 58 09 20 | 2a 20 57 61 69 74 20 66 |X./*.X. |* Wait f|
|00002e50| 6f 72 20 74 68 65 20 65 | 64 69 74 6f 72 20 74 6f |or the e|ditor to|
|00002e60| 20 66 69 6e 69 73 68 2e | 0a 58 09 20 2a 2f 0a 58 | finish.|.X. */.X|
|00002e70| 09 77 68 69 6c 65 20 28 | 77 61 69 74 28 28 69 6e |.while (|wait((in|
|00002e80| 74 20 2a 29 20 30 29 20 | 21 3d 20 70 69 64 29 0a |t *) 0) |!= pid).|
|00002e90| 58 09 09 3b 0a 58 0a 58 | 09 2f 2a 0a 58 09 20 2a |X..;.X.X|./*.X. *|
|00002ea0| 20 53 65 74 20 74 68 65 | 20 74 74 79 20 6d 6f 64 | Set the| tty mod|
|00002eb0| 65 73 20 75 70 20 61 67 | 61 69 6e 2e 0a 58 09 20 |es up ag|ain..X. |
|00002ec0| 2a 2f 0a 58 09 73 65 74 | 5f 6d 6f 64 65 73 28 29 |*/.X.set|_modes()|
|00002ed0| 3b 0a 58 7d 0a 45 4e 44 | 5f 4f 46 5f 46 49 4c 45 |;.X}.END|_OF_FILE|
|00002ee0| 0a 69 66 20 74 65 73 74 | 20 33 33 32 35 20 2d 6e |.if test| 3325 -n|
|00002ef0| 65 20 60 77 63 20 2d 63 | 20 3c 27 63 72 65 61 74 |e `wc -c| <'creat|
|00002f00| 65 64 62 2e 63 27 60 3b | 20 74 68 65 6e 0a 20 20 |edb.c'`;| then. |
|00002f10| 20 20 65 63 68 6f 20 73 | 68 61 72 3a 20 5c 22 27 | echo s|har: \"'|
|00002f20| 63 72 65 61 74 65 64 62 | 2e 63 27 5c 22 20 75 6e |createdb|.c'\" un|
|00002f30| 70 61 63 6b 65 64 20 77 | 69 74 68 20 77 72 6f 6e |packed w|ith wron|
|00002f40| 67 20 73 69 7a 65 21 0a | 66 69 0a 23 20 65 6e 64 |g size!.|fi.# end|
|00002f50| 20 6f 66 20 27 63 72 65 | 61 74 65 64 62 2e 63 27 | of 'cre|atedb.c'|
|00002f60| 0a 66 69 0a 69 66 20 74 | 65 73 74 20 2d 66 20 27 |.fi.if t|est -f '|
|00002f70| 64 62 66 75 6e 63 2e 63 | 27 20 2d 61 20 22 24 7b |dbfunc.c|' -a "${|
|00002f80| 31 7d 22 20 21 3d 20 22 | 2d 63 22 20 3b 20 74 68 |1}" != "|-c" ; th|
|00002f90| 65 6e 20 0a 20 20 65 63 | 68 6f 20 73 68 61 72 3a |en . ec|ho shar:|
|00002fa0| 20 57 69 6c 6c 20 6e 6f | 74 20 63 6c 6f 62 62 65 | Will no|t clobbe|
|00002fb0| 72 20 65 78 69 73 74 69 | 6e 67 20 66 69 6c 65 20 |r existi|ng file |
|00002fc0| 5c 22 27 64 62 66 75 6e | 63 2e 63 27 5c 22 0a 65 |\"'dbfun|c.c'\".e|
|00002fd0| 6c 73 65 0a 65 63 68 6f | 20 73 68 61 72 3a 20 45 |lse.echo| shar: E|
|00002fe0| 78 74 72 61 63 74 69 6e | 67 20 5c 22 27 64 62 66 |xtractin|g \"'dbf|
|00002ff0| 75 6e 63 2e 63 27 5c 22 | 20 5c 28 33 37 32 36 20 |unc.c'\"| \(3726 |
|00003000| 63 68 61 72 61 63 74 65 | 72 73 5c 29 0a 73 65 64 |characte|rs\).sed|
|00003010| 20 22 73 2f 5e 58 2f 2f | 22 20 3e 27 64 62 66 75 | "s/^X//|" >'dbfu|
|00003020| 6e 63 2e 63 27 20 3c 3c | 27 45 4e 44 5f 4f 46 5f |nc.c' <<|'END_OF_|
|00003030| 46 49 4c 45 27 0a 58 23 | 69 66 6e 64 65 66 20 6c |FILE'.X#|ifndef l|
|00003040| 69 6e 74 0a 58 73 74 61 | 74 69 63 20 63 68 61 72 |int.Xsta|tic char|
|00003050| 20 2a 52 43 53 69 64 20 | 3d 20 22 24 48 65 61 64 | *RCSid |= "$Head|
|00003060| 65 72 3a 20 2f 75 35 2f | 64 61 76 79 2f 70 72 6f |er: /u5/|davy/pro|
|00003070| 67 73 2f 69 6e 64 65 78 | 2f 52 43 53 2f 64 62 66 |gs/index|/RCS/dbf|
|00003080| 75 6e 63 2e 63 2c 76 20 | 31 2e 31 20 38 39 2f 30 |unc.c,v |1.1 89/0|
|00003090| 38 2f 30 39 20 31 31 3a | 30 36 3a 33 31 20 64 61 |8/09 11:|06:31 da|
|000030a0| 76 79 20 45 78 70 20 24 | 22 3b 0a 58 23 65 6e 64 |vy Exp $|";.X#end|
|000030b0| 69 66 0a 58 2f 2a 0a 58 | 20 2a 20 64 62 66 75 6e |if.X/*.X| * dbfun|
|000030c0| 63 2e 63 20 2d 20 64 61 | 74 61 62 61 73 65 20 66 |c.c - da|tabase f|
|000030d0| 75 6e 63 74 69 6f 6e 73 | 20 73 65 6c 65 63 74 65 |unctions| selecte|
|000030e0| 64 20 66 72 6f 6d 20 74 | 68 65 20 6d 61 69 6e 20 |d from t|he main |
|000030f0| 6d 65 6e 75 2e 0a 58 20 | 2a 0a 58 20 2a 20 44 61 |menu..X |*.X * Da|
|00003100| 76 69 64 20 41 2e 20 43 | 75 72 72 79 0a 58 20 2a |vid A. C|urry.X *|
|00003110| 20 52 65 73 65 61 72 63 | 68 20 49 6e 73 74 69 74 | Researc|h Instit|
|00003120| 75 74 65 20 66 6f 72 20 | 41 64 76 61 6e 63 65 64 |ute for |Advanced|
|00003130| 20 43 6f 6d 70 75 74 65 | 72 20 53 63 69 65 6e 63 | Compute|r Scienc|
|00003140| 65 0a 58 20 2a 20 4d 61 | 69 6c 20 53 74 6f 70 20 |e.X * Ma|il Stop |
|00003150| 32 33 30 2d 35 0a 58 20 | 2a 20 4e 41 53 41 20 41 |230-5.X |* NASA A|
|00003160| 6d 65 73 20 52 65 73 65 | 61 72 63 68 20 43 65 6e |mes Rese|arch Cen|
|00003170| 74 65 72 0a 58 20 2a 20 | 4d 6f 66 66 65 74 74 20 |ter.X * |Moffett |
|00003180| 46 69 65 6c 64 2c 20 43 | 41 20 39 34 30 33 35 0a |Field, C|A 94035.|
|00003190| 58 20 2a 20 64 61 76 79 | 40 72 69 61 63 73 2e 65 |X * davy|@riacs.e|
|000031a0| 64 75 0a 58 20 2a 0a 58 | 20 2a 20 24 4c 6f 67 3a |du.X *.X| * $Log:|
|000031b0| 09 64 62 66 75 6e 63 2e | 63 2c 76 20 24 0a 58 20 |.dbfunc.|c,v $.X |
|000031c0| 2a 20 52 65 76 69 73 69 | 6f 6e 20 31 2e 31 20 20 |* Revisi|on 1.1 |
|000031d0| 38 39 2f 30 38 2f 30 39 | 20 20 31 31 3a 30 36 3a |89/08/09| 11:06:|
|000031e0| 33 31 20 20 64 61 76 79 | 0a 58 20 2a 20 49 6e 69 |31 davy|.X * Ini|
|000031f0| 74 69 61 6c 20 72 65 76 | 69 73 69 6f 6e 0a 58 20 |tial rev|ision.X |
|00003200| 2a 20 0a 58 20 2a 2f 0a | 58 23 69 6e 63 6c 75 64 |* .X */.|X#includ|
|00003210| 65 20 3c 63 75 72 73 65 | 73 2e 68 3e 0a 58 23 69 |e <curse|s.h>.X#i|
|00003220| 6e 63 6c 75 64 65 20 3c | 73 74 64 69 6f 2e 68 3e |nclude <|stdio.h>|
|00003230| 0a 58 23 69 6e 63 6c 75 | 64 65 20 22 64 65 66 73 |.X#inclu|de "defs|
|00003240| 2e 68 22 0a 58 0a 58 2f | 2a 0a 58 20 2a 20 61 64 |.h".X.X/|*.X * ad|
|00003250| 64 5f 65 6e 74 72 79 20 | 2d 20 61 64 64 20 61 6e |d_entry |- add an|
|00003260| 20 65 6e 74 72 79 20 74 | 6f 20 74 68 65 20 64 61 | entry t|o the da|
|00003270| 74 61 62 61 73 65 2e 0a | 58 20 2a 2f 0a 58 61 64 |tabase..|X */.Xad|
|00003280| 64 5f 65 6e 74 72 79 28 | 29 0a 58 7b 0a 58 09 72 |d_entry(|).X{.X.r|
|00003290| 65 67 69 73 74 65 72 20 | 69 6e 74 20 69 3b 0a 58 |egister |int i;.X|
|000032a0| 09 73 74 72 75 63 74 20 | 64 62 66 69 6c 65 20 2a |.struct |dbfile *|
|000032b0| 72 65 61 6c 6c 6f 63 28 | 29 3b 0a 58 0a 58 09 2f |realloc(|);.X.X./|
|000032c0| 2a 0a 58 09 20 2a 20 53 | 65 61 72 63 68 20 66 6f |*.X. * S|earch fo|
|000032d0| 72 20 61 6e 20 65 6d 70 | 74 79 20 65 6e 74 72 79 |r an emp|ty entry|
|000032e0| 20 69 6e 20 74 68 65 20 | 61 72 72 61 79 2e 0a 58 | in the |array..X|
|000032f0| 09 20 2a 2f 0a 58 09 66 | 6f 72 20 28 69 3d 30 3b |. */.X.f|or (i=0;|
|00003300| 20 69 20 3c 20 64 62 73 | 69 7a 65 3b 20 69 2b 2b | i < dbs|ize; i++|
|00003310| 29 20 7b 0a 58 09 09 2f | 2a 0a 58 09 09 20 2a 20 |) {.X../|*.X.. * |
|00003320| 46 6f 75 6e 64 20 6f 6e | 65 3b 20 75 73 65 20 69 |Found on|e; use i|
|00003330| 74 2e 0a 58 09 09 20 2a | 2f 0a 58 09 09 69 66 20 |t..X.. *|/.X..if |
|00003340| 28 28 64 62 5b 69 5d 2e | 64 62 5f 66 6c 61 67 20 |((db[i].|db_flag |
|00003350| 26 20 44 42 5f 56 41 4c | 49 44 29 20 3d 3d 20 30 |& DB_VAL|ID) == 0|
|00003360| 29 20 7b 0a 58 09 09 09 | 2f 2a 0a 58 09 09 09 20 |) {.X...|/*.X... |
|00003370| 2a 20 43 6c 65 61 72 20 | 6f 75 74 20 61 6e 79 20 |* Clear |out any |
|00003380| 6f 6c 64 20 6a 75 6e 6b | 2e 0a 58 09 09 09 20 2a |old junk|..X... *|
|00003390| 2f 0a 58 09 09 09 62 7a | 65 72 6f 28 26 64 62 5b |/.X...bz|ero(&db[|
|000033a0| 69 5d 2c 20 73 69 7a 65 | 6f 66 28 73 74 72 75 63 |i], size|of(struc|
|000033b0| 74 20 64 62 66 69 6c 65 | 29 29 3b 0a 58 0a 58 09 |t dbfile|));.X.X.|
|000033c0| 09 09 2f 2a 0a 58 09 09 | 09 20 2a 20 4c 65 74 20 |../*.X..|. * Let |
|000033d0| 74 68 65 20 75 73 65 72 | 20 65 64 69 74 20 74 68 |the user| edit th|
|000033e0| 65 20 65 6e 74 72 79 2e | 0a 58 09 09 09 20 2a 2f |e entry.|.X... */|
|000033f0| 0a 58 09 09 09 69 66 20 | 28 65 64 69 74 5f 65 6e |.X...if |(edit_en|
|00003400| 74 72 79 28 26 64 62 5b | 69 5d 2c 20 22 6e 65 77 |try(&db[|i], "new|
|00003410| 22 29 29 20 7b 0a 58 09 | 09 09 09 2f 2a 0a 58 09 |")) {.X.|.../*.X.|
|00003420| 09 09 09 20 2a 20 4d 61 | 72 6b 20 69 74 20 76 61 |... * Ma|rk it va|
|00003430| 6c 69 64 2c 20 6d 61 72 | 6b 20 74 68 65 20 64 61 |lid, mar|k the da|
|00003440| 74 61 62 61 73 65 0a 58 | 09 09 09 09 20 2a 20 61 |tabase.X|.... * a|
|00003450| 73 20 6d 6f 64 69 66 69 | 65 64 2c 20 61 6e 64 20 |s modifi|ed, and |
|00003460| 69 6e 63 72 65 61 73 65 | 20 74 68 65 0a 58 09 09 |increase| the.X..|
|00003470| 09 09 20 2a 20 6e 75 6d | 62 65 72 20 6f 66 20 65 |.. * num|ber of e|
|00003480| 6e 74 72 69 65 73 2e 0a | 58 09 09 09 09 20 2a 2f |ntries..|X.... */|
|00003490| 0a 58 09 09 09 09 64 62 | 5b 69 5d 2e 64 62 5f 66 |.X....db|[i].db_f|
|000034a0| 6c 61 67 20 7c 3d 20 44 | 42 5f 56 41 4c 49 44 3b |lag |= D|B_VALID;|
|000034b0| 0a 58 09 09 09 09 64 62 | 6d 6f 64 69 66 69 65 64 |.X....db|modified|
|000034c0| 20 3d 20 31 3b 0a 58 09 | 09 09 09 64 62 65 6e 74 | = 1;.X.|...dbent|
|000034d0| 72 69 65 73 2b 2b 3b 0a | 58 0a 58 09 09 09 09 2f |ries++;.|X.X..../|
|000034e0| 2a 0a 58 09 09 09 09 20 | 2a 20 53 6f 72 74 20 74 |*.X.... |* Sort t|
|000034f0| 68 65 20 61 72 72 61 79 | 2c 20 74 6f 20 67 65 74 |he array|, to get|
|00003500| 20 74 68 69 73 0a 58 09 | 09 09 09 20 2a 20 65 6e | this.X.|... * en|
|00003510| 74 72 79 20 69 6e 74 6f | 20 69 74 73 20 70 72 6f |try into| its pro|
|00003520| 70 65 72 20 70 6c 61 63 | 65 2e 0a 58 09 09 09 09 |per plac|e..X....|
|00003530| 20 2a 2f 0a 58 09 09 09 | 09 71 73 6f 72 74 28 64 | */.X...|.qsort(d|
|00003540| 62 2c 20 64 62 65 6e 74 | 72 69 65 73 2c 20 73 69 |b, dbent|ries, si|
|00003550| 7a 65 6f 66 28 73 74 72 | 75 63 74 20 64 62 66 69 |zeof(str|uct dbfi|
|00003560| 6c 65 29 2c 0a 58 09 09 | 09 09 20 20 20 20 20 20 |le),.X..|.. |
|00003570| 64 62 73 6f 72 74 29 3b | 0a 58 09 09 09 7d 0a 58 |dbsort);|.X...}.X|
|00003580| 0a 58 09 09 09 72 65 74 | 75 72 6e 3b 0a 58 09 09 |.X...ret|urn;.X..|
|00003590| 7d 0a 58 09 7d 0a 58 0a | 58 09 2f 2a 0a 58 09 20 |}.X.}.X.|X./*.X. |
|000035a0| 2a 20 44 69 64 6e 27 74 | 20 66 69 6e 64 20 61 6e |* Didn't| find an|
|000035b0| 20 65 6d 70 74 79 20 73 | 6c 6f 74 2c 20 73 6f 20 | empty s|lot, so |
|000035c0| 77 65 20 68 61 76 65 20 | 74 6f 20 61 6c 6c 6f 63 |we have |to alloc|
|000035d0| 61 74 65 0a 58 09 20 2a | 20 73 6f 6d 65 20 6d 6f |ate.X. *| some mo|
|000035e0| 72 65 2e 0a 58 09 20 2a | 2f 0a 58 09 64 62 73 69 |re..X. *|/.X.dbsi|
|000035f0| 7a 65 20 2a 3d 20 32 3b | 0a 58 0a 58 09 69 66 20 |ze *= 2;|.X.X.if |
|00003600| 28 28 64 62 20 3d 20 72 | 65 61 6c 6c 6f 63 28 64 |((db = r|ealloc(d|
|00003610| 62 2c 20 64 62 73 69 7a | 65 20 2a 20 73 69 7a 65 |b, dbsiz|e * size|
|00003620| 6f 66 28 73 74 72 75 63 | 74 20 64 62 66 69 6c 65 |of(struc|t dbfile|
|00003630| 29 29 29 20 3d 3d 20 4e | 55 4c 4c 29 20 7b 0a 58 |))) == N|ULL) {.X|
|00003640| 09 09 65 72 72 6f 72 28 | 22 25 73 3a 20 6f 75 74 |..error(|"%s: out|
|00003650| 20 6f 66 20 6d 65 6d 6f | 72 79 2e 5c 6e 22 2c 20 | of memo|ry.\n", |
|00003660| 70 6e 61 6d 65 2c 20 30 | 2c 20 30 29 3b 0a 58 09 |pname, 0|, 0);.X.|
|00003670| 09 65 78 69 74 28 31 29 | 3b 0a 58 09 7d 0a 58 0a |.exit(1)|;.X.}.X.|
|00003680| 58 09 62 7a 65 72 6f 28 | 26 64 62 5b 64 62 65 6e |X.bzero(|&db[dben|
|00003690| 74 72 69 65 73 5d 2c 20 | 73 69 7a 65 6f 66 28 73 |tries], |sizeof(s|
|000036a0| 74 72 75 63 74 20 64 62 | 66 69 6c 65 29 29 3b 0a |truct db|file));.|
|000036b0| 58 0a 58 09 2f 2a 0a 58 | 09 20 2a 20 4c 65 74 20 |X.X./*.X|. * Let |
|000036c0| 74 68 65 20 75 73 65 72 | 20 65 64 69 74 20 74 68 |the user| edit th|
|000036d0| 65 20 6e 65 77 20 65 6e | 74 72 79 2e 0a 58 09 20 |e new en|try..X. |
|000036e0| 2a 2f 0a 58 09 69 66 20 | 28 65 64 69 74 5f 65 6e |*/.X.if |(edit_en|
|000036f0| 74 72 79 28 26 64 62 5b | 64 62 65 6e 74 72 69 65 |try(&db[|dbentrie|
|00003700| 73 5d 2c 20 22 6e 65 77 | 22 29 29 20 7b 0a 58 09 |s], "new|")) {.X.|
|00003710| 09 2f 2a 0a 58 09 09 20 | 2a 20 4d 61 72 6b 20 74 |./*.X.. |* Mark t|
|00003720| 68 65 20 65 6e 74 72 79 | 20 61 73 20 76 61 6c 69 |he entry| as vali|
|00003730| 64 2c 20 6d 61 72 6b 20 | 74 68 65 0a 58 09 09 20 |d, mark |the.X.. |
|00003740| 2a 20 64 61 74 61 62 61 | 73 65 20 61 73 20 6d 6f |* databa|se as mo|
|00003750| 64 69 66 69 65 64 2c 20 | 61 6e 64 20 69 6e 63 72 |dified, |and incr|
|00003760| 65 61 73 65 0a 58 09 09 | 20 2a 20 74 68 65 20 6e |ease.X..| * the n|
|00003770| 75 6d 62 65 72 20 6f 66 | 20 65 6e 74 72 69 65 73 |umber of| entries|
|00003780| 2e 0a 58 09 09 20 2a 2f | 0a 58 09 09 64 62 5b 64 |..X.. */|.X..db[d|
|00003790| 62 65 6e 74 72 69 65 73 | 5d 2e 64 62 5f 66 6c 61 |bentries|].db_fla|
|000037a0| 67 20 7c 3d 20 44 42 5f | 56 41 4c 49 44 3b 0a 58 |g |= DB_|VALID;.X|
|000037b0| 09 09 64 62 6d 6f 64 69 | 66 69 65 64 20 3d 20 31 |..dbmodi|fied = 1|
|000037c0| 3b 0a 58 09 09 64 62 65 | 6e 74 72 69 65 73 2b 2b |;.X..dbe|ntries++|
|000037d0| 3b 0a 58 0a 58 09 09 71 | 73 6f 72 74 28 64 62 2c |;.X.X..q|sort(db,|
|000037e0| 20 64 62 65 6e 74 72 69 | 65 73 2c 20 73 69 7a 65 | dbentri|es, size|
|000037f0| 6f 66 28 73 74 72 75 63 | 74 20 64 62 66 69 6c 65 |of(struc|t dbfile|
|00003800| 29 2c 20 64 62 73 6f 72 | 74 29 3b 0a 58 09 7d 0a |), dbsor|t);.X.}.|
|00003810| 58 7d 0a 58 0a 58 2f 2a | 0a 58 20 2a 20 64 65 6c |X}.X.X/*|.X * del|
|00003820| 5f 65 6e 74 72 79 20 2d | 20 64 65 6c 65 74 65 20 |_entry -| delete |
|00003830| 61 6e 20 65 6e 74 72 79 | 20 66 72 6f 6d 20 74 68 |an entry| from th|
|00003840| 65 20 64 61 74 61 62 61 | 73 65 2e 0a 58 20 2a 2f |e databa|se..X */|
|00003850| 0a 58 64 65 6c 5f 65 6e | 74 72 79 28 65 6e 74 72 |.Xdel_en|try(entr|
|00003860| 79 29 0a 58 73 74 72 75 | 63 74 20 64 62 66 69 6c |y).Xstru|ct dbfil|
|00003870| 65 20 2a 65 6e 74 72 79 | 3b 0a 58 7b 0a 58 09 63 |e *entry|;.X{.X.c|
|00003880| 68 61 72 20 63 3b 0a 58 | 09 69 6e 74 20 78 2c 20 |har c;.X|.int x, |
|00003890| 79 3b 0a 58 0a 58 09 2f | 2a 0a 58 09 20 2a 20 50 |y;.X.X./|*.X. * P|
|000038a0| 72 6f 6d 70 74 20 74 68 | 65 20 75 73 65 72 20 66 |rompt th|e user f|
|000038b0| 6f 72 20 63 6f 6e 66 69 | 72 6d 61 74 69 6f 6e 2e |or confi|rmation.|
|000038c0| 0a 58 09 20 2a 2f 0a 58 | 09 67 65 74 79 78 28 63 |.X. */.X|.getyx(c|
|000038d0| 75 72 73 63 72 2c 20 79 | 2c 20 78 29 3b 0a 58 09 |urscr, y|, x);.X.|
|000038e0| 63 20 3d 20 70 72 6f 6d | 70 74 5f 63 68 61 72 28 |c = prom|pt_char(|
|000038f0| 79 2c 20 30 2c 20 22 52 | 65 61 6c 6c 79 20 64 65 |y, 0, "R|eally de|
|00003900| 6c 65 74 65 20 74 68 69 | 73 20 65 6e 74 72 79 3f |lete thi|s entry?|
|00003910| 20 22 2c 20 22 59 79 4e | 6e 22 29 3b 0a 58 0a 58 | ", "YyN|n");.X.X|
|00003920| 09 2f 2a 0a 58 09 20 2a | 20 52 65 74 75 72 6e 20 |./*.X. *| Return |
|00003930| 74 68 65 20 73 74 61 74 | 75 73 20 6f 66 20 74 68 |the stat|us of th|
|00003940| 65 20 63 6f 6e 66 69 72 | 6d 61 74 69 6f 6e 2e 0a |e confir|mation..|
|00003950| 58 09 20 2a 2f 0a 58 09 | 73 77 69 74 63 68 20 28 |X. */.X.|switch (|
|00003960| 63 29 20 7b 0a 58 09 63 | 61 73 65 20 27 59 27 3a |c) {.X.c|ase 'Y':|
|00003970| 0a 58 09 63 61 73 65 20 | 27 79 27 3a 0a 58 09 09 |.X.case |'y':.X..|
|00003980| 72 65 74 75 72 6e 28 31 | 29 3b 0a 58 09 63 61 73 |return(1|);.X.cas|
|00003990| 65 20 27 4e 27 3a 0a 58 | 09 63 61 73 65 20 27 6e |e 'N':.X|.case 'n|
|000039a0| 27 3a 0a 58 09 09 72 65 | 74 75 72 6e 28 30 29 3b |':.X..re|turn(0);|
|000039b0| 0a 58 09 7d 0a 58 7d 0a | 58 0a 58 2f 2a 0a 58 20 |.X.}.X}.|X.X/*.X |
|000039c0| 2a 20 66 69 6e 64 5f 65 | 6e 74 72 79 20 2d 20 73 |* find_e|ntry - s|
|000039d0| 65 61 72 63 68 20 66 6f | 72 20 65 6e 74 72 69 65 |earch fo|r entrie|
|000039e0| 73 20 75 73 69 6e 67 20 | 61 20 72 65 67 75 6c 61 |s using |a regula|
|000039f0| 72 20 65 78 70 72 65 73 | 73 69 6f 6e 2e 0a 58 20 |r expres|sion..X |
|00003a00| 2a 2f 0a 58 66 69 6e 64 | 5f 65 6e 74 72 79 28 29 |*/.Xfind|_entry()|
|00003a10| 0a 58 7b 0a 58 09 72 65 | 67 69 73 74 65 72 20 69 |.X{.X.re|gister i|
|00003a20| 6e 74 20 69 3b 0a 58 09 | 63 68 61 72 20 70 61 74 |nt i;.X.|char pat|
|00003a30| 74 65 72 6e 5b 42 55 46 | 53 49 5a 5d 3b 0a 58 0a |tern[BUF|SIZ];.X.|
|00003a40| 58 09 2f 2a 0a 58 09 20 | 2a 20 43 6c 65 61 72 20 |X./*.X. |* Clear |
|00003a50| 74 68 65 20 73 63 72 65 | 65 6e 20 61 6e 64 20 70 |the scre|en and p|
|00003a60| 72 6f 6d 70 74 20 66 6f | 72 20 74 68 65 20 70 61 |rompt fo|r the pa|
|00003a70| 74 74 65 72 6e 20 74 6f | 0a 58 09 20 2a 20 73 65 |ttern to|.X. * se|
|00003a80| 61 72 63 68 20 66 6f 72 | 2e 0a 58 09 20 2a 2f 0a |arch for|..X. */.|
|00003a90| 58 09 63 6c 65 61 72 28 | 29 3b 0a 58 09 70 72 6f |X.clear(|);.X.pro|
|00003aa0| 6d 70 74 5f 73 74 72 28 | 4c 49 4e 45 53 2f 32 2c |mpt_str(|LINES/2,|
|00003ab0| 20 30 2c 20 22 50 61 74 | 74 65 72 6e 20 74 6f 20 | 0, "Pat|tern to |
|00003ac0| 73 65 61 72 63 68 20 66 | 6f 72 3a 20 22 2c 20 70 |search f|or: ", p|
|00003ad0| 61 74 74 65 72 6e 29 3b | 0a 58 0a 58 09 2f 2a 0a |attern);|.X.X./*.|
|00003ae0| 58 09 20 2a 20 53 65 61 | 72 63 68 2e 20 20 73 65 |X. * Sea|rch. se|
|00003af0| 61 72 63 68 5f 64 62 20 | 77 69 6c 6c 20 73 65 74 |arch_db |will set|
|00003b00| 20 44 42 5f 50 52 49 4e | 54 20 69 6e 20 74 68 65 | DB_PRIN|T in the|
|00003b10| 20 65 6e 74 72 69 65 73 | 0a 58 09 20 2a 20 77 68 | entries|.X. * wh|
|00003b20| 69 63 68 20 6d 61 74 63 | 68 2c 20 61 6e 64 20 72 |ich matc|h, and r|
|00003b30| 65 74 75 72 6e 20 6e 6f | 6e 2d 7a 65 72 6f 20 69 |eturn no|n-zero i|
|00003b40| 66 20 61 6e 79 74 68 69 | 6e 67 20 6d 61 74 63 68 |f anythi|ng match|
|00003b50| 65 64 2e 0a 58 09 20 2a | 2f 0a 58 09 69 66 20 28 |ed..X. *|/.X.if (|
|00003b60| 73 65 61 72 63 68 5f 64 | 62 28 70 61 74 74 65 72 |search_d|b(patter|
|00003b70| 6e 29 29 20 7b 0a 58 09 | 09 2f 2a 0a 58 09 09 20 |n)) {.X.|./*.X.. |
|00003b80| 2a 20 44 69 73 70 6c 61 | 79 20 74 68 65 20 65 6e |* Displa|y the en|
|00003b90| 74 72 69 65 73 20 74 68 | 61 74 20 6d 61 74 63 68 |tries th|at match|
|00003ba0| 65 64 2e 0a 58 09 09 20 | 2a 2f 0a 58 09 09 64 69 |ed..X.. |*/.X..di|
|00003bb0| 73 70 5f 65 6e 74 72 69 | 65 73 28 29 3b 0a 58 0a |sp_entri|es();.X.|
|00003bc0| 58 09 09 2f 2a 0a 58 09 | 09 20 2a 20 43 6c 65 61 |X../*.X.|. * Clea|
|00003bd0| 72 20 74 68 65 20 44 42 | 5f 50 52 49 4e 54 20 66 |r the DB|_PRINT f|
|00003be0| 6c 61 67 73 2e 0a 58 09 | 09 20 2a 2f 0a 58 09 09 |lags..X.|. */.X..|
|00003bf0| 66 6f 72 20 28 69 3d 30 | 3b 20 69 20 3c 20 64 62 |for (i=0|; i < db|
|00003c00| 65 6e 74 72 69 65 73 3b | 20 69 2b 2b 29 0a 58 09 |entries;| i++).X.|
|00003c10| 09 09 64 62 5b 69 5d 2e | 64 62 5f 66 6c 61 67 20 |..db[i].|db_flag |
|00003c20| 26 3d 20 7e 44 42 5f 50 | 52 49 4e 54 3b 0a 58 09 |&= ~DB_P|RINT;.X.|
|00003c30| 7d 0a 58 09 65 6c 73 65 | 20 7b 0a 58 09 09 2f 2a |}.X.else| {.X../*|
|00003c40| 0a 58 09 09 20 2a 20 4e | 6f 74 68 69 6e 67 20 6d |.X.. * N|othing m|
|00003c50| 61 74 63 68 65 64 2e 20 | 20 54 65 6c 6c 20 74 68 |atched. | Tell th|
|00003c60| 65 20 75 73 65 72 2e 0a | 58 09 09 20 2a 2f 0a 58 |e user..|X.. */.X|
|00003c70| 09 09 70 72 6f 6d 70 74 | 5f 63 68 61 72 28 4c 49 |..prompt|_char(LI|
|00003c80| 4e 45 53 2f 32 2c 20 30 | 2c 0a 58 09 09 09 22 4e |NES/2, 0|,.X..."N|
|00003c90| 6f 20 65 6e 74 72 69 65 | 73 20 6d 61 74 63 68 20 |o entrie|s match |
|00003ca0| 70 61 74 74 65 72 6e 2c | 20 74 79 70 65 20 52 45 |pattern,| type RE|
|00003cb0| 54 55 52 4e 20 74 6f 20 | 63 6f 6e 74 69 6e 75 65 |TURN to |continue|
|00003cc0| 3a 20 22 2c 0a 58 09 09 | 09 22 5c 6e 22 29 3b 0a |: ",.X..|."\n");.|
|00003cd0| 58 09 7d 0a 58 7d 0a 58 | 0a 58 2f 2a 0a 58 20 2a |X.}.X}.X|.X/*.X *|
|00003ce0| 20 72 65 61 64 5f 64 62 | 20 2d 20 72 75 6e 20 74 | read_db| - run t|
|00003cf0| 68 72 6f 75 67 68 20 74 | 68 65 20 64 61 74 61 62 |hrough t|he datab|
|00003d00| 61 73 65 20 65 6e 74 72 | 79 20 62 79 20 65 6e 74 |ase entr|y by ent|
|00003d10| 72 79 2e 0a 58 20 2a 2f | 0a 58 72 65 61 64 5f 64 |ry..X */|.Xread_d|
|00003d20| 62 28 29 0a 58 7b 0a 58 | 09 72 65 67 69 73 74 65 |b().X{.X|.registe|
|00003d30| 72 20 69 6e 74 20 69 3b | 0a 58 0a 58 09 2f 2a 0a |r int i;|.X.X./*.|
|00003d40| 58 09 20 2a 20 53 6f 72 | 74 20 74 68 65 20 64 61 |X. * Sor|t the da|
|00003d50| 74 61 62 61 73 65 2c 20 | 73 6f 20 77 65 27 72 65 |tabase, |so we're|
|00003d60| 20 73 75 72 65 20 69 74 | 27 73 20 69 6e 20 6f 72 | sure it|'s in or|
|00003d70| 64 65 72 2e 0a 58 09 20 | 2a 2f 0a 58 09 71 73 6f |der..X. |*/.X.qso|
|00003d80| 72 74 28 64 62 2c 20 64 | 62 65 6e 74 72 69 65 73 |rt(db, d|bentries|
|00003d90| 2c 20 73 69 7a 65 6f 66 | 28 73 74 72 75 63 74 20 |, sizeof|(struct |
|00003da0| 64 62 66 69 6c 65 29 2c | 20 64 62 73 6f 72 74 29 |dbfile),| dbsort)|
|00003db0| 3b 0a 58 0a 58 09 2f 2a | 0a 58 09 20 2a 20 53 65 |;.X.X./*|.X. * Se|
|00003dc0| 74 20 44 42 5f 50 52 49 | 4e 54 20 69 6e 20 61 6c |t DB_PRI|NT in al|
|00003dd0| 6c 20 65 6e 74 72 69 65 | 73 2e 0a 58 09 20 2a 2f |l entrie|s..X. */|
|00003de0| 0a 58 09 66 6f 72 20 28 | 69 3d 30 3b 20 69 20 3c |.X.for (|i=0; i <|
|00003df0| 20 64 62 65 6e 74 72 69 | 65 73 3b 20 69 2b 2b 29 | dbentri|es; i++)|
|00003e00| 20 7b 0a 58 09 09 69 66 | 20 28 64 62 5b 69 5d 2e | {.X..if| (db[i].|
|00003e10| 64 62 5f 66 6c 61 67 20 | 26 20 44 42 5f 56 41 4c |db_flag |& DB_VAL|
|00003e20| 49 44 29 0a 58 09 09 09 | 64 62 5b 69 5d 2e 64 62 |ID).X...|db[i].db|
|00003e30| 5f 66 6c 61 67 20 7c 3d | 20 44 42 5f 50 52 49 4e |_flag |=| DB_PRIN|
|00003e40| 54 3b 0a 58 09 7d 0a 58 | 0a 58 09 2f 2a 0a 58 09 |T;.X.}.X|.X./*.X.|
|00003e50| 20 2a 20 44 69 73 70 6c | 61 79 20 74 68 65 20 65 | * Displ|ay the e|
|00003e60| 6e 74 72 69 65 73 2e 0a | 58 09 20 2a 2f 0a 58 09 |ntries..|X. */.X.|
|00003e70| 64 69 73 70 5f 65 6e 74 | 72 69 65 73 28 29 3b 0a |disp_ent|ries();.|
|00003e80| 58 0a 58 09 2f 2a 0a 58 | 09 20 2a 20 43 6c 65 61 |X.X./*.X|. * Clea|
|00003e90| 72 20 44 42 5f 50 52 49 | 4e 54 2e 0a 58 09 20 2a |r DB_PRI|NT..X. *|
|00003ea0| 2f 0a 58 09 66 6f 72 20 | 28 69 3d 30 3b 20 69 20 |/.X.for |(i=0; i |
|00003eb0| 3c 20 64 62 65 6e 74 72 | 69 65 73 3b 20 69 2b 2b |< dbentr|ies; i++|
|00003ec0| 29 0a 58 09 09 64 62 5b | 69 5d 2e 64 62 5f 66 6c |).X..db[|i].db_fl|
|00003ed0| 61 67 20 26 3d 20 7e 44 | 42 5f 50 52 49 4e 54 3b |ag &= ~D|B_PRINT;|
|00003ee0| 0a 58 7d 0a 58 0a 58 2f | 2a 0a 58 20 2a 20 73 61 |.X}.X.X/|*.X * sa|
|00003ef0| 76 65 5f 62 79 65 20 2d | 20 73 61 76 65 20 74 68 |ve_bye -| save th|
|00003f00| 65 20 64 61 74 61 62 61 | 73 65 20 61 6e 64 20 65 |e databa|se and e|
|00003f10| 78 69 74 2e 0a 58 20 2a | 2f 0a 58 73 61 76 65 5f |xit..X *|/.Xsave_|
|00003f20| 62 79 65 28 64 62 6e 61 | 6d 65 29 0a 58 63 68 61 |bye(dbna|me).Xcha|
|00003f30| 72 20 2a 64 62 6e 61 6d | 65 3b 0a 58 7b 0a 58 09 |r *dbnam|e;.X{.X.|
|00003f40| 2f 2a 0a 58 09 20 2a 20 | 53 61 76 65 20 74 68 65 |/*.X. * |Save the|
|00003f50| 20 64 61 74 61 62 61 73 | 65 2e 0a 58 09 20 2a 2f | databas|e..X. */|
|00003f60| 0a 58 09 73 61 76 65 5f | 64 62 28 64 62 6e 61 6d |.X.save_|db(dbnam|
|00003f70| 65 29 3b 0a 58 0a 58 09 | 2f 2a 0a 58 09 20 2a 20 |e);.X.X.|/*.X. * |
|00003f80| 45 78 69 74 2e 0a 58 09 | 20 2a 2f 0a 58 09 62 79 |Exit..X.| */.X.by|
|00003f90| 65 62 79 65 28 29 3b 0a | 58 7d 0a 45 4e 44 5f 4f |ebye();.|X}.END_O|
|00003fa0| 46 5f 46 49 4c 45 0a 69 | 66 20 74 65 73 74 20 33 |F_FILE.i|f test 3|
|00003fb0| 37 32 36 20 2d 6e 65 20 | 60 77 63 20 2d 63 20 3c |726 -ne |`wc -c <|
|00003fc0| 27 64 62 66 75 6e 63 2e | 63 27 60 3b 20 74 68 65 |'dbfunc.|c'`; the|
|00003fd0| 6e 0a 20 20 20 20 65 63 | 68 6f 20 73 68 61 72 3a |n. ec|ho shar:|
|00003fe0| 20 5c 22 27 64 62 66 75 | 6e 63 2e 63 27 5c 22 20 | \"'dbfu|nc.c'\" |
|00003ff0| 75 6e 70 61 63 6b 65 64 | 20 77 69 74 68 20 77 72 |unpacked| with wr|
|00004000| 6f 6e 67 20 73 69 7a 65 | 21 0a 66 69 0a 23 20 65 |ong size|!.fi.# e|
|00004010| 6e 64 20 6f 66 20 27 64 | 62 66 75 6e 63 2e 63 27 |nd of 'd|bfunc.c'|
|00004020| 0a 66 69 0a 69 66 20 74 | 65 73 74 20 2d 66 20 27 |.fi.if t|est -f '|
|00004030| 64 62 69 6f 2e 63 27 20 | 2d 61 20 22 24 7b 31 7d |dbio.c' |-a "${1}|
|00004040| 22 20 21 3d 20 22 2d 63 | 22 20 3b 20 74 68 65 6e |" != "-c|" ; then|
|00004050| 20 0a 20 20 65 63 68 6f | 20 73 68 61 72 3a 20 57 | . echo| shar: W|
|00004060| 69 6c 6c 20 6e 6f 74 20 | 63 6c 6f 62 62 65 72 20 |ill not |clobber |
|00004070| 65 78 69 73 74 69 6e 67 | 20 66 69 6c 65 20 5c 22 |existing| file \"|
|00004080| 27 64 62 69 6f 2e 63 27 | 5c 22 0a 65 6c 73 65 0a |'dbio.c'|\".else.|
|00004090| 65 63 68 6f 20 73 68 61 | 72 3a 20 45 78 74 72 61 |echo sha|r: Extra|
|000040a0| 63 74 69 6e 67 20 5c 22 | 27 64 62 69 6f 2e 63 27 |cting \"|'dbio.c'|
|000040b0| 5c 22 20 5c 28 35 31 32 | 30 20 63 68 61 72 61 63 |\" \(512|0 charac|
|000040c0| 74 65 72 73 5c 29 0a 73 | 65 64 20 22 73 2f 5e 58 |ters\).s|ed "s/^X|
|000040d0| 2f 2f 22 20 3e 27 64 62 | 69 6f 2e 63 27 20 3c 3c |//" >'db|io.c' <<|
|000040e0| 27 45 4e 44 5f 4f 46 5f | 46 49 4c 45 27 0a 58 23 |'END_OF_|FILE'.X#|
|000040f0| 69 66 6e 64 65 66 20 6c | 69 6e 74 0a 58 73 74 61 |ifndef l|int.Xsta|
|00004100| 74 69 63 20 63 68 61 72 | 20 2a 52 43 53 69 64 20 |tic char| *RCSid |
|00004110| 3d 20 22 24 48 65 61 64 | 65 72 3a 20 2f 75 35 2f |= "$Head|er: /u5/|
|00004120| 64 61 76 79 2f 70 72 6f | 67 73 2f 69 6e 64 65 78 |davy/pro|gs/index|
|00004130| 2f 52 43 53 2f 64 62 69 | 6f 2e 63 2c 76 20 31 2e |/RCS/dbi|o.c,v 1.|
|00004140| 31 20 38 39 2f 30 38 2f | 30 39 20 31 31 3a 30 36 |1 89/08/|09 11:06|
|00004150| 3a 33 36 20 64 61 76 79 | 20 45 78 70 20 24 22 3b |:36 davy| Exp $";|
|00004160| 0a 58 23 65 6e 64 69 66 | 0a 58 2f 2a 0a 58 20 2a |.X#endif|.X/*.X *|
|00004170| 20 64 62 69 6f 2e 63 20 | 2d 20 64 61 74 61 62 61 | dbio.c |- databa|
|00004180| 73 65 20 69 6e 70 75 74 | 2f 6f 75 74 70 75 74 20 |se input|/output |
|00004190| 72 6f 75 74 69 6e 65 73 | 2e 0a 58 20 2a 0a 58 20 |routines|..X *.X |
|000041a0| 2a 20 44 61 76 69 64 20 | 41 2e 20 43 75 72 72 79 |* David |A. Curry|
|000041b0| 0a 58 20 2a 20 52 65 73 | 65 61 72 63 68 20 49 6e |.X * Res|earch In|
|000041c0| 73 74 69 74 75 74 65 20 | 66 6f 72 20 41 64 76 61 |stitute |for Adva|
|000041d0| 6e 63 65 64 20 43 6f 6d | 70 75 74 65 72 20 53 63 |nced Com|puter Sc|
|000041e0| 69 65 6e 63 65 0a 58 20 | 2a 20 4d 61 69 6c 20 53 |ience.X |* Mail S|
|000041f0| 74 6f 70 20 32 33 30 2d | 35 0a 58 20 2a 20 4e 41 |top 230-|5.X * NA|
|00004200| 53 41 20 41 6d 65 73 20 | 52 65 73 65 61 72 63 68 |SA Ames |Research|
|00004210| 20 43 65 6e 74 65 72 0a | 58 20 2a 20 4d 6f 66 66 | Center.|X * Moff|
|00004220| 65 74 74 20 46 69 65 6c | 64 2c 20 43 41 20 39 34 |ett Fiel|d, CA 94|
|00004230| 30 33 35 0a 58 20 2a 20 | 64 61 76 79 40 72 69 61 |035.X * |davy@ria|
|00004240| 63 73 2e 65 64 75 0a 58 | 20 2a 0a 58 20 2a 20 24 |cs.edu.X| *.X * $|
|00004250| 4c 6f 67 3a 09 64 62 69 | 6f 2e 63 2c 76 20 24 0a |Log:.dbi|o.c,v $.|
|00004260| 58 20 2a 20 52 65 76 69 | 73 69 6f 6e 20 31 2e 31 |X * Revi|sion 1.1|
|00004270| 20 20 38 39 2f 30 38 2f | 30 39 20 20 31 31 3a 30 | 89/08/|09 11:0|
|00004280| 36 3a 33 36 20 20 64 61 | 76 79 0a 58 20 2a 20 49 |6:36 da|vy.X * I|
|00004290| 6e 69 74 69 61 6c 20 72 | 65 76 69 73 69 6f 6e 0a |nitial r|evision.|
|000042a0| 58 20 2a 20 0a 58 20 2a | 2f 0a 58 23 69 6e 63 6c |X * .X *|/.X#incl|
|000042b0| 75 64 65 20 3c 73 79 73 | 2f 70 61 72 61 6d 2e 68 |ude <sys|/param.h|
|000042c0| 3e 0a 58 23 69 6e 63 6c | 75 64 65 20 3c 73 79 73 |>.X#incl|ude <sys|
|000042d0| 2f 73 74 61 74 2e 68 3e | 0a 58 23 69 6e 63 6c 75 |/stat.h>|.X#inclu|
|000042e0| 64 65 20 3c 63 75 72 73 | 65 73 2e 68 3e 0a 58 23 |de <curs|es.h>.X#|
|000042f0| 69 6e 63 6c 75 64 65 20 | 3c 73 74 64 69 6f 2e 68 |include |<stdio.h|
|00004300| 3e 0a 58 23 69 6e 63 6c | 75 64 65 20 22 64 65 66 |>.X#incl|ude "def|
|00004310| 73 2e 68 22 0a 58 0a 58 | 73 74 72 75 63 74 09 64 |s.h".X.X|struct.d|
|00004320| 62 66 69 6c 65 20 2a 64 | 62 3b 09 09 2f 2a 20 61 |bfile *d|b;../* a|
|00004330| 72 72 61 79 20 6f 66 20 | 64 61 74 61 62 61 73 65 |rray of |database|
|00004340| 20 65 6e 74 72 69 65 73 | 09 09 2a 2f 0a 58 73 74 | entries|..*/.Xst|
|00004350| 72 75 63 74 09 69 64 78 | 66 69 6c 65 20 69 64 78 |ruct.idx|file idx|
|00004360| 3b 09 09 2f 2a 20 64 65 | 73 63 72 69 70 74 69 6f |;../* de|scriptio|
|00004370| 6e 20 6f 66 20 74 68 65 | 20 64 61 74 61 62 61 73 |n of the| databas|
|00004380| 65 20 66 69 6c 65 09 2a | 2f 0a 58 0a 58 69 6e 74 |e file.*|/.X.Xint|
|00004390| 09 64 62 6d 6f 64 69 66 | 69 65 64 20 3d 20 30 3b |.dbmodif|ied = 0;|
|000043a0| 09 09 2f 2a 20 6e 6f 6e | 2d 7a 65 72 6f 20 69 66 |../* non|-zero if|
|000043b0| 20 64 61 74 61 62 61 73 | 65 20 6e 65 65 64 73 20 | databas|e needs |
|000043c0| 73 61 76 69 6e 67 09 2a | 2f 0a 58 69 6e 74 09 64 |saving.*|/.Xint.d|
|000043d0| 62 65 6e 74 72 69 65 73 | 2c 20 64 62 73 69 7a 65 |bentries|, dbsize|
|000043e0| 3b 09 2f 2a 20 6e 75 6d | 62 65 72 20 6f 66 20 65 |;./* num|ber of e|
|000043f0| 6e 74 72 69 65 73 2c 20 | 73 69 7a 65 20 6f 66 20 |ntries, |size of |
|00004400| 64 62 20 61 72 72 61 79 | 09 2a 2f 0a 58 0a 58 2f |db array|.*/.X.X/|
|00004410| 2a 0a 58 20 2a 20 72 65 | 61 64 5f 69 64 78 66 69 |*.X * re|ad_idxfi|
|00004420| 6c 65 20 2d 20 72 65 61 | 64 20 74 68 65 20 64 61 |le - rea|d the da|
|00004430| 74 61 62 61 73 65 20 64 | 65 73 63 72 69 70 74 69 |tabase d|escripti|
|00004440| 6f 6e 20 66 69 6c 65 2e | 0a 58 20 2a 2f 0a 58 72 |on file.|.X */.Xr|
|00004450| 65 61 64 5f 69 64 78 66 | 69 6c 65 28 64 62 6e 61 |ead_idxf|ile(dbna|
|00004460| 6d 65 29 0a 58 63 68 61 | 72 20 2a 64 62 6e 61 6d |me).Xcha|r *dbnam|
|00004470| 65 3b 0a 58 7b 0a 58 09 | 46 49 4c 45 20 2a 66 70 |e;.X{.X.|FILE *fp|
|00004480| 3b 0a 58 09 72 65 67 69 | 73 74 65 72 20 69 6e 74 |;.X.regi|ster int|
|00004490| 20 6c 65 6e 3b 0a 58 09 | 63 68 61 72 20 62 75 66 | len;.X.|char buf|
|000044a0| 5b 42 55 46 53 49 5a 5d | 2c 20 69 64 78 66 69 6c |[BUFSIZ]|, idxfil|
|000044b0| 65 5b 4d 41 58 50 41 54 | 48 4c 45 4e 5d 3b 0a 58 |e[MAXPAT|HLEN];.X|
|000044c0| 0a 58 09 2f 2a 0a 58 09 | 20 2a 20 43 6f 6e 73 74 |.X./*.X.| * Const|
|000044d0| 72 75 63 74 20 74 68 65 | 20 66 69 6c 65 20 6e 61 |ruct the| file na|
|000044e0| 6d 65 2e 0a 58 09 20 2a | 2f 0a 58 09 73 70 72 69 |me..X. *|/.X.spri|
|000044f0| 6e 74 66 28 69 64 78 66 | 69 6c 65 2c 20 22 25 73 |ntf(idxf|ile, "%s|
|00004500| 2f 25 73 25 73 22 2c 20 | 64 62 61 73 65 64 69 72 |/%s%s", |dbasedir|
|00004510| 2c 20 64 62 6e 61 6d 65 | 2c 20 49 44 58 46 49 4c |, dbname|, IDXFIL|
|00004520| 45 5f 53 55 46 46 49 58 | 29 3b 0a 58 0a 58 09 2f |E_SUFFIX|);.X.X./|
|00004530| 2a 0a 58 09 20 2a 20 4f | 70 65 6e 20 74 68 65 20 |*.X. * O|pen the |
|00004540| 66 69 6c 65 2e 0a 58 09 | 20 2a 2f 0a 58 09 69 66 |file..X.| */.X.if|
|00004550| 20 28 28 66 70 20 3d 20 | 66 6f 70 65 6e 28 69 64 | ((fp = |fopen(id|
|00004560| 78 66 69 6c 65 2c 20 22 | 72 22 29 29 20 3d 3d 20 |xfile, "|r")) == |
|00004570| 4e 55 4c 4c 29 20 7b 0a | 58 09 09 65 72 72 6f 72 |NULL) {.|X..error|
|00004580| 28 22 25 73 3a 20 63 61 | 6e 6e 6f 74 20 6f 70 65 |("%s: ca|nnot ope|
|00004590| 6e 20 5c 22 25 73 5c 22 | 2e 5c 6e 22 2c 20 70 6e |n \"%s\"|.\n", pn|
|000045a0| 61 6d 65 2c 20 69 64 78 | 66 69 6c 65 2c 20 30 29 |ame, idx|file, 0)|
|000045b0| 3b 0a 58 09 09 65 78 69 | 74 28 31 29 3b 0a 58 09 |;.X..exi|t(1);.X.|
|000045c0| 7d 0a 58 0a 58 09 2f 2a | 0a 58 09 20 2a 20 5a 65 |}.X.X./*|.X. * Ze|
|000045d0| 72 6f 20 6f 75 74 20 74 | 68 65 20 73 74 72 75 63 |ro out t|he struc|
|000045e0| 74 75 72 65 2e 0a 58 09 | 20 2a 2f 0a 58 09 62 7a |ture..X.| */.X.bz|
|000045f0| 65 72 6f 28 26 69 64 78 | 2c 20 73 69 7a 65 6f 66 |ero(&idx|, sizeof|
|00004600| 28 73 74 72 75 63 74 20 | 69 64 78 66 69 6c 65 29 |(struct |idxfile)|
|00004610| 29 3b 0a 58 0a 58 09 2f | 2a 0a 58 09 20 2a 20 52 |);.X.X./|*.X. * R|
|00004620| 65 61 64 20 6c 69 6e 65 | 73 20 66 72 6f 6d 20 74 |ead line|s from t|
|00004630| 68 65 20 66 69 6c 65 2e | 0a 58 09 20 2a 2f 0a 58 |he file.|.X. */.X|
|00004640| 09 77 68 69 6c 65 20 28 | 69 64 78 2e 69 64 78 5f |.while (|idx.idx_|
|00004650| 6e 6c 69 6e 65 73 20 3c | 20 4d 41 58 44 42 4c 49 |nlines <| MAXDBLI|
|00004660| 4e 45 53 29 20 7b 0a 58 | 09 09 2f 2a 0a 58 09 09 |NES) {.X|../*.X..|
|00004670| 20 2a 20 45 6e 64 20 6f | 66 20 66 69 6c 65 2e 0a | * End o|f file..|
|00004680| 58 09 09 20 2a 2f 0a 58 | 09 09 69 66 20 28 66 67 |X.. */.X|..if (fg|
|00004690| 65 74 73 28 62 75 66 2c | 20 73 69 7a 65 6f 66 28 |ets(buf,| sizeof(|
|000046a0| 62 75 66 29 2c 20 66 70 | 29 20 3d 3d 20 4e 55 4c |buf), fp|) == NUL|
|000046b0| 4c 29 0a 58 09 09 09 62 | 72 65 61 6b 3b 0a 58 0a |L).X...b|reak;.X.|
|000046c0| 58 09 09 2f 2a 0a 58 09 | 09 20 2a 20 53 74 72 69 |X../*.X.|. * Stri|
|000046d0| 70 20 74 68 65 20 6e 65 | 77 6c 69 6e 65 2e 0a 58 |p the ne|wline..X|
|000046e0| 09 09 20 2a 2f 0a 58 09 | 09 6c 65 6e 20 3d 20 73 |.. */.X.|.len = s|
|000046f0| 74 72 6c 65 6e 28 62 75 | 66 29 20 2d 20 31 3b 0a |trlen(bu|f) - 1;.|
|00004700| 58 09 09 62 75 66 5b 6c | 65 6e 5d 20 3d 20 27 5c |X..buf[l|en] = '\|
|00004710| 30 27 3b 0a 58 0a 58 09 | 09 2f 2a 0a 58 09 09 20 |0';.X.X.|./*.X.. |
|00004720| 2a 20 49 66 20 74 68 65 | 20 66 69 72 73 74 20 63 |* If the| first c|
|00004730| 68 61 72 61 63 74 65 72 | 20 69 73 20 27 21 27 2c |haracter| is '!',|
|00004740| 20 74 68 65 6e 20 74 68 | 69 73 20 6c 69 6e 65 0a | then th|is line.|
|00004750| 58 09 09 20 2a 20 73 68 | 6f 75 6c 64 20 6e 6f 74 |X.. * sh|ould not|
|00004760| 20 70 61 72 74 69 63 69 | 70 61 74 65 20 69 6e 20 | partici|pate in |
|00004770| 73 65 61 72 63 68 65 73 | 2e 20 20 53 61 76 65 20 |searches|. Save |
|00004780| 74 68 65 0a 58 09 09 20 | 2a 20 73 74 75 66 66 20 |the.X.. |* stuff |
|00004790| 61 66 74 65 72 20 74 68 | 65 20 27 21 27 2e 20 20 |after th|e '!'. |
|000047a0| 4f 74 68 65 72 77 69 73 | 65 20 74 68 69 73 20 6c |Otherwis|e this l|
|000047b0| 69 6e 65 20 64 6f 65 73 | 0a 58 09 09 20 2a 20 70 |ine does|.X.. * p|
|000047c0| 61 72 74 69 63 69 70 61 | 74 65 20 69 6e 20 73 65 |articipa|te in se|
|000047d0| 61 72 63 68 65 73 2c 20 | 73 61 76 65 20 74 68 65 |arches, |save the|
|000047e0| 20 77 68 6f 6c 65 20 6c | 69 6e 65 2e 0a 58 09 09 | whole l|ine..X..|
|000047f0| 20 2a 2f 0a 58 09 09 69 | 66 20 28 2a 62 75 66 20 | */.X..i|f (*buf |
|00004800| 3d 3d 20 27 21 27 29 20 | 7b 0a 58 09 09 09 69 64 |== '!') |{.X...id|
|00004810| 78 2e 69 64 78 5f 6c 69 | 6e 65 73 5b 69 64 78 2e |x.idx_li|nes[idx.|
|00004820| 69 64 78 5f 6e 6c 69 6e | 65 73 5d 20 3d 20 73 61 |idx_nlin|es] = sa|
|00004830| 76 65 73 74 72 28 62 75 | 66 2b 31 29 3b 0a 58 09 |vestr(bu|f+1);.X.|
|00004840| 09 09 69 64 78 2e 69 64 | 78 5f 73 65 61 72 63 68 |..idx.id|x_search|
|00004850| 5b 69 64 78 2e 69 64 78 | 5f 6e 6c 69 6e 65 73 5d |[idx.idx|_nlines]|
|00004860| 20 3d 20 30 3b 0a 58 09 | 09 09 6c 65 6e 2d 2d 3b | = 0;.X.|..len--;|
|00004870| 0a 58 09 09 7d 0a 58 09 | 09 65 6c 73 65 20 7b 0a |.X..}.X.|.else {.|
|00004880| 58 09 09 09 69 64 78 2e | 69 64 78 5f 6c 69 6e 65 |X...idx.|idx_line|
|00004890| 73 5b 69 64 78 2e 69 64 | 78 5f 6e 6c 69 6e 65 73 |s[idx.id|x_nlines|
|000048a0| 5d 20 3d 20 73 61 76 65 | 73 74 72 28 62 75 66 29 |] = save|str(buf)|
|000048b0| 3b 0a 58 09 09 09 69 64 | 78 2e 69 64 78 5f 73 65 |;.X...id|x.idx_se|
|000048c0| 61 72 63 68 5b 69 64 78 | 2e 69 64 78 5f 6e 6c 69 |arch[idx|.idx_nli|
|000048d0| 6e 65 73 5d 20 3d 20 31 | 3b 0a 58 09 09 7d 0a 58 |nes] = 1|;.X..}.X|
|000048e0| 0a 58 09 09 2f 2a 0a 58 | 09 09 20 2a 20 49 6e 63 |.X../*.X|.. * Inc|
|000048f0| 72 65 6d 65 6e 74 20 74 | 68 65 20 6e 75 6d 62 65 |rement t|he numbe|
|00004900| 72 20 6f 66 20 6c 69 6e | 65 73 2e 0a 58 09 09 20 |r of lin|es..X.. |
|00004910| 2a 2f 0a 58 09 09 69 64 | 78 2e 69 64 78 5f 6e 6c |*/.X..id|x.idx_nl|
|00004920| 69 6e 65 73 2b 2b 3b 0a | 58 0a 58 09 09 2f 2a 0a |ines++;.|X.X../*.|
|00004930| 58 09 09 20 2a 20 53 61 | 76 65 20 74 68 65 20 6c |X.. * Sa|ve the l|
|00004940| 65 6e 67 74 68 20 6f 66 | 20 74 68 65 20 6c 6f 6e |ength of| the lon|
|00004950| 67 65 73 74 20 66 69 65 | 6c 64 20 6e 61 6d 65 2e |gest fie|ld name.|
|00004960| 0a 58 09 09 20 2a 2f 0a | 58 09 09 69 66 20 28 6c |.X.. */.|X..if (l|
|00004970| 65 6e 20 3e 20 69 64 78 | 2e 69 64 78 5f 6d 61 78 |en > idx|.idx_max|
|00004980| 6c 65 6e 29 0a 58 09 09 | 09 69 64 78 2e 69 64 78 |len).X..|.idx.idx|
|00004990| 5f 6d 61 78 6c 65 6e 20 | 3d 20 6c 65 6e 3b 0a 58 |_maxlen |= len;.X|
|000049a0| 09 7d 0a 58 0a 58 09 2f | 2a 0a 58 09 20 2a 20 43 |.}.X.X./|*.X. * C|
|000049b0| 6c 6f 73 65 20 74 68 65 | 20 66 69 6c 65 2e 0a 58 |lose the| file..X|
|000049c0| 09 20 2a 2f 0a 58 09 66 | 63 6c 6f 73 65 28 66 70 |. */.X.f|close(fp|
|000049d0| 29 3b 0a 58 7d 0a 58 0a | 58 2f 2a 0a 58 20 2a 20 |);.X}.X.|X/*.X * |
|000049e0| 72 65 61 64 5f 64 62 66 | 69 6c 65 20 2d 20 72 65 |read_dbf|ile - re|
|000049f0| 61 64 20 74 68 65 20 64 | 61 74 61 62 61 73 65 20 |ad the d|atabase |
|00004a00| 66 69 6c 65 20 69 74 73 | 65 6c 66 2e 0a 58 20 2a |file its|elf..X *|
|00004a10| 2f 0a 58 72 65 61 64 5f | 64 62 66 69 6c 65 28 64 |/.Xread_|dbfile(d|
|00004a20| 62 6e 61 6d 65 29 0a 58 | 63 68 61 72 20 2a 64 62 |bname).X|char *db|
|00004a30| 6e 61 6d 65 3b 0a 58 7b | 0a 58 09 46 49 4c 45 20 |name;.X{|.X.FILE |
|00004a40| 2a 66 70 3b 0a 58 09 72 | 65 67 69 73 74 65 72 20 |*fp;.X.r|egister |
|00004a50| 69 6e 74 20 69 3b 0a 58 | 09 73 74 72 75 63 74 20 |int i;.X|.struct |
|00004a60| 64 62 66 69 6c 65 20 2a | 6d 61 6c 6c 6f 63 28 29 |dbfile *|malloc()|
|00004a70| 2c 20 2a 72 65 61 6c 6c | 6f 63 28 29 3b 0a 58 09 |, *reall|oc();.X.|
|00004a80| 63 68 61 72 20 62 75 66 | 5b 42 55 46 53 49 5a 5d |char buf|[BUFSIZ]|
|00004a90| 2c 20 64 62 66 69 6c 65 | 5b 4d 41 58 50 41 54 48 |, dbfile|[MAXPATH|
|00004aa0| 4c 45 4e 5d 3b 0a 58 0a | 58 09 2f 2a 0a 58 09 20 |LEN];.X.|X./*.X. |
|00004ab0| 2a 20 41 6c 6c 6f 63 61 | 74 65 20 73 6f 6d 65 20 |* Alloca|te some |
|00004ac0| 65 6e 74 72 69 65 73 20 | 69 6e 20 74 68 65 20 61 |entries |in the a|
|00004ad0| 72 72 61 79 2e 20 20 31 | 36 20 69 73 20 6a 75 73 |rray. 1|6 is jus|
|00004ae0| 74 20 61 6e 0a 58 09 20 | 2a 20 61 72 62 69 74 72 |t an.X. |* arbitr|
|00004af0| 61 72 79 20 6e 75 6d 62 | 65 72 2e 0a 58 09 20 2a |ary numb|er..X. *|
|00004b00| 2f 0a 58 09 64 62 73 69 | 7a 65 20 3d 20 31 36 3b |/.X.dbsi|ze = 16;|
|00004b10| 0a 58 09 64 62 65 6e 74 | 72 69 65 73 20 3d 20 30 |.X.dbent|ries = 0|
|00004b20| 3b 0a 58 0a 58 09 69 66 | 20 28 28 64 62 20 3d 20 |;.X.X.if| ((db = |
|00004b30| 6d 61 6c 6c 6f 63 28 64 | 62 73 69 7a 65 20 2a 20 |malloc(d|bsize * |
|00004b40| 73 69 7a 65 6f 66 28 73 | 74 72 75 63 74 20 64 62 |sizeof(s|truct db|
|00004b50| 66 69 6c 65 29 29 29 20 | 3d 3d 20 4e 55 4c 4c 29 |file))) |== NULL)|
|00004b60| 20 7b 0a 58 09 09 65 72 | 72 6f 72 28 22 25 73 3a | {.X..er|ror("%s:|
|00004b70| 20 6f 75 74 20 6f 66 20 | 6d 65 6d 6f 72 79 2e 5c | out of |memory.\|
|00004b80| 6e 22 2c 20 70 6e 61 6d | 65 2c 20 30 2c 20 30 29 |n", pnam|e, 0, 0)|
|00004b90| 3b 0a 58 09 09 65 78 69 | 74 28 31 29 3b 0a 58 09 |;.X..exi|t(1);.X.|
|00004ba0| 7d 0a 58 0a 58 09 2f 2a | 0a 58 09 20 2a 20 43 6f |}.X.X./*|.X. * Co|
|00004bb0| 6e 73 74 72 75 63 74 20 | 74 68 65 20 6e 61 6d 65 |nstruct |the name|
|00004bc0| 20 6f 66 20 74 68 65 20 | 66 69 6c 65 2e 0a 58 09 | of the |file..X.|
|00004bd0| 20 2a 2f 0a 58 09 73 70 | 72 69 6e 74 66 28 64 62 | */.X.sp|rintf(db|
|00004be0| 66 69 6c 65 2c 20 22 25 | 73 2f 25 73 25 73 22 2c |file, "%|s/%s%s",|
|00004bf0| 20 64 62 61 73 65 64 69 | 72 2c 20 64 62 6e 61 6d | dbasedi|r, dbnam|
|00004c00| 65 2c 20 44 42 46 49 4c | 45 5f 53 55 46 46 49 58 |e, DBFIL|E_SUFFIX|
|00004c10| 29 3b 0a 58 0a 58 09 2f | 2a 0a 58 09 20 2a 20 4f |);.X.X./|*.X. * O|
|00004c20| 70 65 6e 20 74 68 65 20 | 66 69 6c 65 2e 0a 58 09 |pen the |file..X.|
|00004c30| 20 2a 2f 0a 58 09 69 66 | 20 28 28 66 70 20 3d 20 | */.X.if| ((fp = |
|00004c40| 66 6f 70 65 6e 28 64 62 | 66 69 6c 65 2c 20 22 72 |fopen(db|file, "r|
|00004c50| 22 29 29 20 3d 3d 20 4e | 55 4c 4c 29 0a 58 09 09 |")) == N|ULL).X..|
|00004c60| 72 65 74 75 72 6e 3b 0a | 58 0a 58 09 2f 2a 0a 58 |return;.|X.X./*.X|
|00004c70| 09 20 2a 20 55 6e 74 69 | 6c 20 77 65 20 68 69 74 |. * Unti|l we hit|
|00004c80| 20 65 6e 64 20 6f 66 20 | 66 69 6c 65 2e 2e 2e 0a | end of |file....|
|00004c90| 58 09 20 2a 2f 0a 58 09 | 77 68 69 6c 65 20 28 21 |X. */.X.|while (!|
|00004ca0| 66 65 6f 66 28 66 70 29 | 29 20 7b 0a 58 09 09 2f |feof(fp)|) {.X../|
|00004cb0| 2a 0a 58 09 09 20 2a 20 | 49 66 20 77 65 20 6e 65 |*.X.. * |If we ne|
|00004cc0| 65 64 20 74 6f 2c 20 61 | 6c 6c 6f 63 61 74 65 20 |ed to, a|llocate |
|00004cd0| 73 6f 6d 65 20 6d 6f 72 | 65 20 65 6e 74 72 69 65 |some mor|e entrie|
|00004ce0| 73 2e 0a 58 09 09 20 2a | 2f 0a 58 09 09 69 66 20 |s..X.. *|/.X..if |
|00004cf0| 28 64 62 65 6e 74 72 69 | 65 73 20 3e 3d 20 64 62 |(dbentri|es >= db|
|00004d00| 73 69 7a 65 29 20 7b 0a | 58 09 09 09 64 62 73 69 |size) {.|X...dbsi|
|00004d10| 7a 65 20 2a 3d 20 32 3b | 0a 58 09 09 09 64 62 20 |ze *= 2;|.X...db |
|00004d20| 3d 20 72 65 61 6c 6c 6f | 63 28 64 62 2c 20 64 62 |= reallo|c(db, db|
|00004d30| 73 69 7a 65 20 2a 20 73 | 69 7a 65 6f 66 28 73 74 |size * s|izeof(st|
|00004d40| 72 75 63 74 20 64 62 66 | 69 6c 65 29 29 3b 0a 58 |ruct dbf|ile));.X|
|00004d50| 0a 58 09 09 09 69 66 20 | 28 64 62 20 3d 3d 20 4e |.X...if |(db == N|
|00004d60| 55 4c 4c 29 20 7b 0a 58 | 09 09 09 09 65 72 72 6f |ULL) {.X|....erro|
|00004d70| 72 28 22 25 73 3a 20 6f | 75 74 20 6f 66 20 6d 65 |r("%s: o|ut of me|
|00004d80| 6d 6f 72 79 2e 5c 6e 22 | 2c 20 70 6e 61 6d 65 2c |mory.\n"|, pname,|
|00004d90| 20 30 2c 20 30 29 3b 0a | 58 09 09 09 09 65 78 69 | 0, 0);.|X....exi|
|00004da0| 74 28 31 29 3b 0a 58 09 | 09 09 7d 0a 58 09 09 7d |t(1);.X.|..}.X..}|
|00004db0| 0a 58 0a 58 09 09 2f 2a | 0a 58 09 09 20 2a 20 52 |.X.X../*|.X.. * R|
|00004dc0| 65 61 64 20 69 6e 20 6f | 6e 65 20 65 6e 74 72 79 |ead in o|ne entry|
|00004dd0| 20 61 74 20 61 20 74 69 | 6d 65 2e 0a 58 09 09 20 | at a ti|me..X.. |
|00004de0| 2a 2f 0a 58 09 09 66 6f | 72 20 28 69 20 3d 20 30 |*/.X..fo|r (i = 0|
|00004df0| 3b 20 69 20 3c 20 69 64 | 78 2e 69 64 78 5f 6e 6c |; i < id|x.idx_nl|
|00004e00| 69 6e 65 73 3b 20 69 2b | 2b 29 20 7b 0a 58 09 09 |ines; i+|+) {.X..|
|00004e10| 09 2f 2a 0a 58 09 09 09 | 20 2a 20 49 66 20 77 65 |./*.X...| * If we|
|00004e20| 20 68 69 74 20 65 6e 64 | 20 6f 66 20 66 69 6c 65 | hit end| of file|
|00004e30| 20 62 65 66 6f 72 65 20 | 67 65 74 74 69 6e 67 20 | before |getting |
|00004e40| 61 0a 58 09 09 09 20 2a | 20 63 6f 6d 70 6c 65 74 |a.X... *| complet|
|00004e50| 65 20 65 6e 74 72 79 2c | 20 74 6f 73 73 20 74 68 |e entry,| toss th|
|00004e60| 69 73 20 6f 6e 65 2e 0a | 58 09 09 09 20 2a 2f 0a |is one..|X... */.|
|00004e70| 58 09 09 09 69 66 20 28 | 66 67 65 74 73 28 62 75 |X...if (|fgets(bu|
|00004e80| 66 2c 20 73 69 7a 65 6f | 66 28 62 75 66 29 2c 20 |f, sizeo|f(buf), |
|00004e90| 66 70 29 20 3d 3d 20 4e | 55 4c 4c 29 0a 58 09 09 |fp) == N|ULL).X..|
|00004ea0| 09 09 67 6f 74 6f 20 6f | 75 74 3b 0a 58 0a 58 09 |..goto o|ut;.X.X.|
|00004eb0| 09 09 2f 2a 0a 58 09 09 | 09 20 2a 20 53 61 76 65 |../*.X..|. * Save|
|00004ec0| 20 74 68 65 20 6c 65 6e | 67 74 68 20 6f 66 20 74 | the len|gth of t|
|00004ed0| 68 65 20 6c 69 6e 65 2c | 20 73 74 72 69 70 20 74 |he line,| strip t|
|00004ee0| 68 65 0a 58 09 09 09 20 | 2a 20 6e 65 77 6c 69 6e |he.X... |* newlin|
|00004ef0| 65 2c 20 61 6e 64 20 73 | 61 76 65 20 74 68 65 20 |e, and s|ave the |
|00004f00| 6c 69 6e 65 2e 0a 58 09 | 09 09 20 2a 2f 0a 58 09 |line..X.|.. */.X.|
|00004f10| 09 09 64 62 5b 64 62 65 | 6e 74 72 69 65 73 5d 2e |..db[dbe|ntries].|
|00004f20| 64 62 5f 6c 65 6e 73 5b | 69 5d 20 3d 20 73 74 72 |db_lens[|i] = str|
|00004f30| 6c 65 6e 28 62 75 66 29 | 20 2d 20 31 3b 0a 58 09 |len(buf)| - 1;.X.|
|00004f40| 09 09 62 75 66 5b 64 62 | 5b 64 62 65 6e 74 72 69 |..buf[db|[dbentri|
|00004f50| 65 73 5d 2e 64 62 5f 6c | 65 6e 73 5b 69 5d 5d 20 |es].db_l|ens[i]] |
|00004f60| 3d 20 27 5c 30 27 3b 0a | 58 0a 58 09 09 09 64 62 |= '\0';.|X.X...db|
|00004f70| 5b 64 62 65 6e 74 72 69 | 65 73 5d 2e 64 62 5f 6c |[dbentri|es].db_l|
|00004f80| 69 6e 65 73 5b 69 5d 20 | 3d 20 73 61 76 65 73 74 |ines[i] |= savest|
|00004f90| 72 28 62 75 66 29 3b 0a | 58 09 09 7d 0a 58 0a 58 |r(buf);.|X..}.X.X|
|00004fa0| 09 09 2f 2a 0a 58 09 09 | 20 2a 20 4d 61 72 6b 20 |../*.X..| * Mark |
|00004fb0| 74 68 69 73 20 65 6e 74 | 72 79 20 61 73 20 76 61 |this ent|ry as va|
|00004fc0| 6c 69 64 20 61 6e 64 20 | 69 6e 63 72 65 61 73 65 |lid and |increase|
|00004fd0| 20 74 68 65 0a 58 09 09 | 20 2a 20 6e 75 6d 62 65 | the.X..| * numbe|
|00004fe0| 72 20 6f 66 20 65 6e 74 | 72 69 65 73 2e 0a 58 09 |r of ent|ries..X.|
|00004ff0| 09 20 2a 2f 0a 58 09 09 | 64 62 5b 64 62 65 6e 74 |. */.X..|db[dbent|
|00005000| 72 69 65 73 5d 2e 64 62 | 5f 66 6c 61 67 20 3d 20 |ries].db|_flag = |
|00005010| 44 42 5f 56 41 4c 49 44 | 3b 0a 58 09 09 64 62 65 |DB_VALID|;.X..dbe|
|00005020| 6e 74 72 69 65 73 2b 2b | 3b 0a 58 09 7d 0a 58 0a |ntries++|;.X.}.X.|
|00005030| 58 6f 75 74 3a 0a 58 09 | 2f 2a 0a 58 09 20 2a 20 |Xout:.X.|/*.X. * |
|00005040| 4d 61 6b 65 20 73 75 72 | 65 20 77 68 61 74 20 77 |Make sur|e what w|
|00005050| 65 27 76 65 20 67 6f 74 | 20 69 73 20 73 6f 72 74 |e've got| is sort|
|00005060| 65 64 2e 0a 58 09 20 2a | 2f 0a 58 09 71 73 6f 72 |ed..X. *|/.X.qsor|
|00005070| 74 28 64 62 2c 20 64 62 | 65 6e 74 72 69 65 73 2c |t(db, db|entries,|
|00005080| 20 73 69 7a 65 6f 66 28 | 73 74 72 75 63 74 20 64 | sizeof(|struct d|
|00005090| 62 66 69 6c 65 29 2c 20 | 64 62 73 6f 72 74 29 3b |bfile), |dbsort);|
|000050a0| 0a 58 0a 58 09 66 63 6c | 6f 73 65 28 66 70 29 3b |.X.X.fcl|ose(fp);|
|000050b0| 0a 58 7d 0a 58 0a 58 2f | 2a 0a 58 20 2a 20 73 61 |.X}.X.X/|*.X * sa|
|000050c0| 76 65 5f 64 62 20 2d 20 | 73 61 76 65 20 74 68 65 |ve_db - |save the|
|000050d0| 20 64 61 74 61 62 61 73 | 65 20 74 6f 20 64 69 73 | databas|e to dis|
|000050e0| 6b 2e 0a 58 20 2a 2f 0a | 58 73 61 76 65 5f 64 62 |k..X */.|Xsave_db|
|000050f0| 28 64 62 6e 61 6d 65 29 | 0a 58 63 68 61 72 20 2a |(dbname)|.Xchar *|
|00005100| 64 62 6e 61 6d 65 3b 0a | 58 7b 0a 58 09 46 49 4c |dbname;.|X{.X.FIL|
|00005110| 45 20 2a 66 70 3b 0a 58 | 09 73 74 72 75 63 74 20 |E *fp;.X|.struct |
|00005120| 73 74 61 74 20 73 74 3b | 0a 58 09 72 65 67 69 73 |stat st;|.X.regis|
|00005130| 74 65 72 20 69 6e 74 20 | 69 2c 20 6a 3b 0a 58 09 |ter int |i, j;.X.|
|00005140| 63 68 61 72 20 72 65 61 | 6c 66 69 6c 65 5b 4d 41 |char rea|lfile[MA|
|00005150| 58 50 41 54 48 4c 45 4e | 5d 2c 20 62 61 6b 66 69 |XPATHLEN|], bakfi|
|00005160| 6c 65 5b 4d 41 58 50 41 | 54 48 4c 45 4e 5d 3b 0a |le[MAXPA|THLEN];.|
|00005170| 58 0a 58 09 2f 2a 0a 58 | 09 20 2a 20 49 66 20 69 |X.X./*.X|. * If i|
|00005180| 74 20 64 6f 65 73 6e 27 | 74 20 6e 65 65 64 20 73 |t doesn'|t need s|
|00005190| 61 76 69 6e 67 2c 20 6e | 65 76 65 72 20 6d 69 6e |aving, n|ever min|
|000051a0| 64 2e 0a 58 09 20 2a 2f | 0a 58 09 69 66 20 28 21 |d..X. */|.X.if (!|
|000051b0| 64 62 6d 6f 64 69 66 69 | 65 64 29 0a 58 09 09 72 |dbmodifi|ed).X..r|
|000051c0| 65 74 75 72 6e 3b 0a 58 | 0a 58 09 2f 2a 0a 58 09 |eturn;.X|.X./*.X.|
|000051d0| 20 2a 20 43 72 65 61 74 | 65 20 74 68 65 20 6e 61 | * Creat|e the na|
|000051e0| 6d 65 20 6f 66 20 74 68 | 65 20 66 69 6c 65 20 61 |me of th|e file a|
|000051f0| 6e 64 20 61 20 62 61 63 | 6b 75 70 20 66 69 6c 65 |nd a bac|kup file|
|00005200| 2e 0a 58 09 20 2a 2f 0a | 58 09 73 70 72 69 6e 74 |..X. */.|X.sprint|
|00005210| 66 28 72 65 61 6c 66 69 | 6c 65 2c 20 22 25 73 2f |f(realfi|le, "%s/|
|00005220| 25 73 25 73 22 2c 20 64 | 62 61 73 65 64 69 72 2c |%s%s", d|basedir,|
|00005230| 20 64 62 6e 61 6d 65 2c | 20 44 42 46 49 4c 45 5f | dbname,| DBFILE_|
|00005240| 53 55 46 46 49 58 29 3b | 0a 58 09 73 70 72 69 6e |SUFFIX);|.X.sprin|
|00005250| 74 66 28 62 61 6b 66 69 | 6c 65 2c 20 22 25 73 2f |tf(bakfi|le, "%s/|
|00005260| 23 25 73 25 73 22 2c 20 | 64 62 61 73 65 64 69 72 |#%s%s", |dbasedir|
|00005270| 2c 20 64 62 6e 61 6d 65 | 2c 20 44 42 46 49 4c 45 |, dbname|, DBFILE|
|00005280| 5f 53 55 46 46 49 58 29 | 3b 0a 58 0a 58 09 2f 2a |_SUFFIX)|;.X.X./*|
|00005290| 0a 58 09 20 2a 20 44 65 | 66 61 75 6c 74 20 63 72 |.X. * De|fault cr|
|000052a0| 65 61 74 69 6f 6e 20 6d | 6f 64 65 2e 0a 58 09 20 |eation m|ode..X. |
|000052b0| 2a 2f 0a 58 09 73 74 2e | 73 74 5f 6d 6f 64 65 20 |*/.X.st.|st_mode |
|000052c0| 3d 20 30 34 30 30 3b 0a | 58 0a 58 09 2f 2a 0a 58 |= 0400;.|X.X./*.X|
|000052d0| 09 20 2a 20 49 66 20 74 | 68 65 20 66 69 6c 65 20 |. * If t|he file |
|000052e0| 61 6c 72 65 61 64 79 20 | 65 78 69 73 74 73 2c 20 |already |exists, |
|000052f0| 72 65 6e 61 6d 65 20 69 | 74 20 74 6f 20 74 68 65 |rename i|t to the|
|00005300| 0a 58 09 20 2a 20 62 61 | 63 6b 75 70 20 66 69 6c |.X. * ba|ckup fil|
|00005310| 65 20 6e 61 6d 65 2e 0a | 58 09 20 2a 2f 0a 58 09 |e name..|X. */.X.|
|00005320| 69 66 20 28 73 74 61 74 | 28 72 65 61 6c 66 69 6c |if (stat|(realfil|
|00005330| 65 2c 20 26 73 74 29 20 | 3d 3d 20 30 29 0a 58 09 |e, &st) |== 0).X.|
|00005340| 09 72 65 6e 61 6d 65 28 | 72 65 61 6c 66 69 6c 65 |.rename(|realfile|
|00005350| 2c 20 62 61 6b 66 69 6c | 65 29 3b 0a 58 0a 58 09 |, bakfil|e);.X.X.|
|00005360| 2f 2a 0a 58 09 20 2a 20 | 4f 70 65 6e 20 74 68 65 |/*.X. * |Open the|
|00005370| 20 6e 65 77 20 66 69 6c | 65 2e 0a 58 09 20 2a 2f | new fil|e..X. */|
|00005380| 0a 58 09 69 66 20 28 28 | 66 70 20 3d 20 66 6f 70 |.X.if ((|fp = fop|
|00005390| 65 6e 28 72 65 61 6c 66 | 69 6c 65 2c 20 22 77 22 |en(realf|ile, "w"|
|000053a0| 29 29 20 3d 3d 20 4e 55 | 4c 4c 29 20 7b 0a 58 09 |)) == NU|LL) {.X.|
|000053b0| 09 65 72 72 6f 72 28 22 | 25 73 3a 20 63 61 6e 6e |.error("|%s: cann|
|000053c0| 6f 74 20 63 72 65 61 74 | 65 20 5c 22 25 73 5c 22 |ot creat|e \"%s\"|
|000053d0| 2e 5c 6e 22 2c 20 70 6e | 61 6d 65 2c 20 72 65 61 |.\n", pn|ame, rea|
|000053e0| 6c 66 69 6c 65 29 3b 0a | 58 09 09 65 78 69 74 28 |lfile);.|X..exit(|
|000053f0| 31 29 3b 0a 58 09 7d 0a | 58 0a 58 09 2f 2a 0a 58 |1);.X.}.|X.X./*.X|
|00005400| 09 20 2a 20 4d 61 6b 65 | 20 73 75 72 65 20 74 68 |. * Make| sure th|
|00005410| 65 20 64 61 74 61 62 61 | 73 65 20 69 73 20 73 6f |e databa|se is so|
|00005420| 72 74 65 64 2e 0a 58 09 | 20 2a 2f 0a 58 09 71 73 |rted..X.| */.X.qs|
|00005430| 6f 72 74 28 64 62 2c 20 | 64 62 65 6e 74 72 69 65 |ort(db, |dbentrie|
|00005440| 73 2c 20 73 69 7a 65 6f | 66 28 73 74 72 75 63 74 |s, sizeo|f(struct|
|00005450| 20 64 62 66 69 6c 65 29 | 2c 20 64 62 73 6f 72 74 | dbfile)|, dbsort|
|00005460| 29 3b 0a 58 0a 58 09 2f | 2a 0a 58 09 20 2a 20 57 |);.X.X./|*.X. * W|
|00005470| 72 69 74 65 20 6f 75 74 | 20 74 68 65 20 65 6e 74 |rite out| the ent|
|00005480| 72 69 65 73 2e 0a 58 09 | 20 2a 2f 0a 58 09 66 6f |ries..X.| */.X.fo|
|00005490| 72 20 28 69 3d 30 3b 20 | 69 20 3c 20 64 62 65 6e |r (i=0; |i < dben|
|000054a0| 74 72 69 65 73 3b 20 69 | 2b 2b 29 20 7b 0a 58 09 |tries; i|++) {.X.|
|000054b0| 09 69 66 20 28 28 64 62 | 5b 69 5d 2e 64 62 5f 66 |.if ((db|[i].db_f|
|000054c0| 6c 61 67 20 26 20 44 42 | 5f 56 41 4c 49 44 29 20 |lag & DB|_VALID) |
|000054d0| 3d 3d 20 30 29 0a 58 09 | 09 09 63 6f 6e 74 69 6e |== 0).X.|..contin|
|000054e0| 75 65 3b 0a 58 0a 58 09 | 09 66 6f 72 20 28 6a 3d |ue;.X.X.|.for (j=|
|000054f0| 30 3b 20 6a 20 3c 20 69 | 64 78 2e 69 64 78 5f 6e |0; j < i|dx.idx_n|
|00005500| 6c 69 6e 65 73 3b 20 6a | 2b 2b 29 0a 58 09 09 09 |lines; j|++).X...|
|00005510| 66 70 72 69 6e 74 66 28 | 66 70 2c 20 22 25 73 5c |fprintf(|fp, "%s\|
|00005520| 6e 22 2c 20 64 62 5b 69 | 5d 2e 64 62 5f 6c 69 6e |n", db[i|].db_lin|
|00005530| 65 73 5b 6a 5d 29 3b 0a | 58 09 7d 0a 58 0a 58 09 |es[j]);.|X.}.X.X.|
|00005540| 2f 2a 0a 58 09 20 2a 20 | 53 65 74 20 74 68 65 20 |/*.X. * |Set the |
|00005550| 66 69 6c 65 20 6d 6f 64 | 65 20 74 6f 20 74 68 65 |file mod|e to the|
|00005560| 20 6d 6f 64 65 20 6f 66 | 20 74 68 65 20 6f 72 69 | mode of| the ori|
|00005570| 67 69 6e 61 6c 0a 58 09 | 20 2a 20 66 69 6c 65 2e |ginal.X.| * file.|
|00005580| 20 20 4d 61 72 6b 20 74 | 68 65 20 64 61 74 61 62 | Mark t|he datab|
|00005590| 61 73 65 20 61 73 20 75 | 6e 6d 6f 64 69 66 69 65 |ase as u|nmodifie|
|000055a0| 64 2e 0a 58 09 20 2a 2f | 0a 58 09 66 63 68 6d 6f |d..X. */|.X.fchmo|
|000055b0| 64 28 66 69 6c 65 6e 6f | 28 66 70 29 2c 20 73 74 |d(fileno|(fp), st|
|000055c0| 2e 73 74 5f 6d 6f 64 65 | 20 26 20 30 37 37 37 29 |.st_mode| & 0777)|
|000055d0| 3b 0a 58 09 64 62 6d 6f | 64 69 66 69 65 64 20 3d |;.X.dbmo|dified =|
|000055e0| 20 30 3b 0a 58 0a 58 09 | 66 63 6c 6f 73 65 28 66 | 0;.X.X.|fclose(f|
|000055f0| 70 29 3b 0a 58 7d 0a 45 | 4e 44 5f 4f 46 5f 46 49 |p);.X}.E|ND_OF_FI|
|00005600| 4c 45 0a 69 66 20 74 65 | 73 74 20 35 31 32 30 20 |LE.if te|st 5120 |
|00005610| 2d 6e 65 20 60 77 63 20 | 2d 63 20 3c 27 64 62 69 |-ne `wc |-c <'dbi|
|00005620| 6f 2e 63 27 60 3b 20 74 | 68 65 6e 0a 20 20 20 20 |o.c'`; t|hen. |
|00005630| 65 63 68 6f 20 73 68 61 | 72 3a 20 5c 22 27 64 62 |echo sha|r: \"'db|
|00005640| 69 6f 2e 63 27 5c 22 20 | 75 6e 70 61 63 6b 65 64 |io.c'\" |unpacked|
|00005650| 20 77 69 74 68 20 77 72 | 6f 6e 67 20 73 69 7a 65 | with wr|ong size|
|00005660| 21 0a 66 69 0a 23 20 65 | 6e 64 20 6f 66 20 27 64 |!.fi.# e|nd of 'd|
|00005670| 62 69 6f 2e 63 27 0a 66 | 69 0a 69 66 20 74 65 73 |bio.c'.f|i.if tes|
|00005680| 74 20 2d 66 20 27 64 65 | 66 73 2e 68 27 20 2d 61 |t -f 'de|fs.h' -a|
|00005690| 20 22 24 7b 31 7d 22 20 | 21 3d 20 22 2d 63 22 20 | "${1}" |!= "-c" |
|000056a0| 3b 20 74 68 65 6e 20 0a | 20 20 65 63 68 6f 20 73 |; then .| echo s|
|000056b0| 68 61 72 3a 20 57 69 6c | 6c 20 6e 6f 74 20 63 6c |har: Wil|l not cl|
|000056c0| 6f 62 62 65 72 20 65 78 | 69 73 74 69 6e 67 20 66 |obber ex|isting f|
|000056d0| 69 6c 65 20 5c 22 27 64 | 65 66 73 2e 68 27 5c 22 |ile \"'d|efs.h'\"|
|000056e0| 0a 65 6c 73 65 0a 65 63 | 68 6f 20 73 68 61 72 3a |.else.ec|ho shar:|
|000056f0| 20 45 78 74 72 61 63 74 | 69 6e 67 20 5c 22 27 64 | Extract|ing \"'d|
|00005700| 65 66 73 2e 68 27 5c 22 | 20 5c 28 32 32 33 32 20 |efs.h'\"| \(2232 |
|00005710| 63 68 61 72 61 63 74 65 | 72 73 5c 29 0a 73 65 64 |characte|rs\).sed|
|00005720| 20 22 73 2f 5e 58 2f 2f | 22 20 3e 27 64 65 66 73 | "s/^X//|" >'defs|
|00005730| 2e 68 27 20 3c 3c 27 45 | 4e 44 5f 4f 46 5f 46 49 |.h' <<'E|ND_OF_FI|
|00005740| 4c 45 27 0a 58 2f 2a 0a | 58 20 2a 20 24 48 65 61 |LE'.X/*.|X * $Hea|
|00005750| 64 65 72 3a 20 2f 75 35 | 2f 64 61 76 79 2f 70 72 |der: /u5|/davy/pr|
|00005760| 6f 67 73 2f 69 6e 64 65 | 78 2f 52 43 53 2f 64 65 |ogs/inde|x/RCS/de|
|00005770| 66 73 2e 68 2c 76 20 31 | 2e 31 20 38 39 2f 30 38 |fs.h,v 1|.1 89/08|
|00005780| 2f 30 39 20 31 31 3a 30 | 36 3a 30 39 20 64 61 76 |/09 11:0|6:09 dav|
|00005790| 79 20 45 78 70 20 24 0a | 58 20 2a 0a 58 20 2a 20 |y Exp $.|X *.X * |
|000057a0| 64 65 66 73 2e 68 20 2d | 20 64 65 66 69 6e 69 74 |defs.h -| definit|
|000057b0| 69 6f 6e 73 20 66 6f 72 | 20 74 68 65 20 69 6e 64 |ions for| the ind|
|000057c0| 65 78 20 70 72 6f 67 72 | 61 6d 2e 0a 58 20 2a 0a |ex progr|am..X *.|
|000057d0| 58 20 2a 20 44 61 76 69 | 64 20 41 2e 20 43 75 72 |X * Davi|d A. Cur|
|000057e0| 72 79 0a 58 20 2a 20 52 | 65 73 65 61 72 63 68 20 |ry.X * R|esearch |
|000057f0| 49 6e 73 74 69 74 75 74 | 65 20 66 6f 72 20 41 64 |Institut|e for Ad|
|00005800| 76 61 6e 63 65 64 20 43 | 6f 6d 70 75 74 65 72 20 |vanced C|omputer |
|00005810| 53 63 69 65 6e 63 65 0a | 58 20 2a 20 4d 61 69 6c |Science.|X * Mail|
|00005820| 20 53 74 6f 70 20 32 33 | 30 2d 35 0a 58 20 2a 20 | Stop 23|0-5.X * |
|00005830| 4e 41 53 41 20 41 6d 65 | 73 20 52 65 73 65 61 72 |NASA Ame|s Resear|
|00005840| 63 68 20 43 65 6e 74 65 | 72 0a 58 20 2a 20 4d 6f |ch Cente|r.X * Mo|
|00005850| 66 66 65 74 74 20 46 69 | 65 6c 64 2c 20 43 41 20 |ffett Fi|eld, CA |
|00005860| 39 34 30 33 35 0a 58 20 | 2a 20 64 61 76 79 40 72 |94035.X |* davy@r|
|00005870| 69 61 63 73 2e 65 64 75 | 0a 58 20 2a 0a 58 20 2a |iacs.edu|.X *.X *|
|00005880| 20 24 4c 6f 67 3a 09 64 | 65 66 73 2e 68 2c 76 20 | $Log:.d|efs.h,v |
|00005890| 24 0a 58 20 2a 20 52 65 | 76 69 73 69 6f 6e 20 31 |$.X * Re|vision 1|
|000058a0| 2e 31 20 20 38 39 2f 30 | 38 2f 30 39 20 20 31 31 |.1 89/0|8/09 11|
|000058b0| 3a 30 36 3a 30 39 20 20 | 64 61 76 79 0a 58 20 2a |:06:09 |davy.X *|
|000058c0| 20 49 6e 69 74 69 61 6c | 20 72 65 76 69 73 69 6f | Initial| revisio|
|000058d0| 6e 0a 58 20 2a 20 0a 58 | 20 2a 2f 0a 58 23 64 65 |n.X * .X| */.X#de|
|000058e0| 66 69 6e 65 20 50 41 54 | 43 48 4c 45 56 45 4c 09 |fine PAT|CHLEVEL.|
|000058f0| 30 09 09 2f 2a 20 6c 65 | 76 65 6c 20 6f 66 20 70 |0../* le|vel of p|
|00005900| 61 74 63 68 65 73 20 61 | 70 70 6c 69 65 64 09 2a |atches a|pplied.*|
|00005910| 2f 0a 58 0a 58 23 64 65 | 66 69 6e 65 20 4d 41 58 |/.X.X#de|fine MAX|
|00005920| 44 42 46 49 4c 45 53 09 | 36 34 09 09 2f 2a 20 6d |DBFILES.|64../* m|
|00005930| 61 78 2e 20 6e 6f 2e 20 | 6f 66 20 64 61 74 61 62 |ax. no. |of datab|
|00005940| 61 73 65 20 66 69 6c 65 | 73 09 2a 2f 0a 58 23 64 |ase file|s.*/.X#d|
|00005950| 65 66 69 6e 65 20 4d 41 | 58 44 42 4c 49 4e 45 53 |efine MA|XDBLINES|
|00005960| 09 31 36 09 09 2f 2a 20 | 6d 61 78 2e 20 6e 6f 2e |.16../* |max. no.|
|00005970| 20 6f 66 20 66 69 65 6c | 64 73 20 69 6e 20 64 62 | of fiel|ds in db|
|00005980| 61 73 65 09 2a 2f 0a 58 | 0a 58 23 64 65 66 69 6e |ase.*/.X|.X#defin|
|00005990| 65 20 45 44 49 54 4f 52 | 09 09 22 2f 75 73 72 2f |e EDITOR|.."/usr/|
|000059a0| 75 63 62 2f 76 69 22 09 | 2f 2a 20 65 64 69 74 6f |ucb/vi".|/* edito|
|000059b0| 72 20 74 6f 20 75 73 65 | 20 77 68 65 6e 20 63 72 |r to use| when cr|
|000059c0| 65 61 74 69 6e 67 09 2a | 2f 0a 58 0a 58 23 64 65 |eating.*|/.X.X#de|
|000059d0| 66 69 6e 65 20 49 4e 44 | 45 58 44 49 52 09 22 2e |fine IND|EXDIR.".|
|000059e0| 69 6e 64 65 78 22 09 2f | 2a 20 64 69 72 65 63 74 |index"./|* direct|
|000059f0| 6f 72 79 20 77 68 65 72 | 65 20 73 74 75 66 66 20 |ory wher|e stuff |
|00005a00| 69 73 09 2a 2f 0a 58 23 | 64 65 66 69 6e 65 20 44 |is.*/.X#|define D|
|00005a10| 42 46 49 4c 45 5f 53 55 | 46 46 49 58 09 22 2e 64 |BFILE_SU|FFIX.".d|
|00005a20| 62 22 09 09 2f 2a 20 64 | 61 74 61 62 61 73 65 20 |b"../* d|atabase |
|00005a30| 66 69 6c 65 20 73 75 66 | 66 69 78 09 09 2a 2f 0a |file suf|fix..*/.|
|00005a40| 58 23 64 65 66 69 6e 65 | 20 46 4d 54 46 49 4c 45 |X#define| FMTFILE|
|00005a50| 5f 53 55 46 46 49 58 09 | 22 2e 66 6d 74 22 09 09 |_SUFFIX.|".fmt"..|
|00005a60| 2f 2a 20 66 6f 72 6d 61 | 74 20 70 72 6f 67 72 61 |/* forma|t progra|
|00005a70| 6d 20 73 75 66 66 69 78 | 09 2a 2f 0a 58 23 64 65 |m suffix|.*/.X#de|
|00005a80| 66 69 6e 65 20 49 44 58 | 46 49 4c 45 5f 53 55 46 |fine IDX|FILE_SUF|
|00005a90| 46 49 58 09 22 2e 69 64 | 78 22 09 09 2f 2a 20 69 |FIX.".id|x"../* i|
|00005aa0| 6e 64 65 78 20 64 65 66 | 69 6e 69 74 69 6f 6e 20 |ndex def|inition |
|00005ab0| 73 75 66 66 69 78 09 2a | 2f 0a 58 0a 58 2f 2a 0a |suffix.*|/.X.X/*.|
|00005ac0| 58 20 2a 20 56 61 6c 75 | 65 73 20 66 6f 72 20 64 |X * Valu|es for d|
|00005ad0| 62 5f 66 6c 61 67 2e 0a | 58 20 2a 2f 0a 58 23 64 |b_flag..|X */.X#d|
|00005ae0| 65 66 69 6e 65 20 44 42 | 5f 56 41 4c 49 44 09 30 |efine DB|_VALID.0|
|00005af0| 78 30 31 0a 58 23 64 65 | 66 69 6e 65 20 44 42 5f |x01.X#de|fine DB_|
|00005b00| 50 52 49 4e 54 09 30 78 | 30 32 0a 58 0a 58 2f 2a |PRINT.0x|02.X.X/*|
|00005b10| 0a 58 20 2a 20 46 6f 72 | 20 34 2e 32 20 63 75 72 |.X * For| 4.2 cur|
|00005b20| 73 65 73 2e 0a 58 20 2a | 2f 0a 58 23 69 66 6e 64 |ses..X *|/.X#ifnd|
|00005b30| 65 66 20 63 62 72 65 61 | 6b 0a 58 23 64 65 66 69 |ef cbrea|k.X#defi|
|00005b40| 6e 65 20 63 62 72 65 61 | 6b 28 29 20 63 72 6d 6f |ne cbrea|k() crmo|
|00005b50| 64 65 28 29 0a 58 23 65 | 6e 64 69 66 0a 58 23 69 |de().X#e|ndif.X#i|
|00005b60| 66 6e 64 65 66 20 6e 6f | 63 62 72 65 61 6b 0a 58 |fndef no|cbreak.X|
|00005b70| 23 64 65 66 69 6e 65 20 | 6e 6f 63 62 72 65 61 6b |#define |nocbreak|
|00005b80| 28 29 20 6e 6f 63 72 6d | 6f 64 65 28 29 0a 58 23 |() nocrm|ode().X#|
|00005b90| 65 6e 64 69 66 0a 58 0a | 58 2f 2a 0a 58 20 2a 20 |endif.X.|X/*.X * |
|00005ba0| 55 73 75 61 6c 6c 79 20 | 64 65 66 69 6e 65 64 20 |Usually |defined |
|00005bb0| 69 6e 20 74 74 79 63 68 | 61 72 73 2e 68 2e 0a 58 |in ttych|ars.h..X|
|00005bc0| 20 2a 2f 0a 58 23 69 66 | 6e 64 65 66 20 43 54 52 | */.X#if|ndef CTR|
|00005bd0| 4c 0a 58 23 64 65 66 69 | 6e 65 20 43 54 52 4c 28 |L.X#defi|ne CTRL(|
|00005be0| 63 29 09 09 28 27 63 27 | 20 26 20 30 33 37 29 0a |c)..('c'| & 037).|
|00005bf0| 58 23 65 6e 64 69 66 0a | 58 0a 58 2f 2a 0a 58 20 |X#endif.|X.X/*.X |
|00005c00| 2a 20 53 74 72 75 63 74 | 75 72 65 20 74 6f 20 68 |* Struct|ure to h|
|00005c10| 6f 6c 64 20 74 68 65 20 | 63 6f 6e 74 65 6e 74 73 |old the |contents|
|00005c20| 20 6f 66 20 74 68 65 20 | 69 6e 64 65 78 20 64 65 | of the |index de|
|00005c30| 66 69 6e 69 74 69 6f 6e | 2e 0a 58 20 2a 2f 0a 58 |finition|..X */.X|
|00005c40| 73 74 72 75 63 74 20 69 | 64 78 66 69 6c 65 20 7b |struct i|dxfile {|
|00005c50| 0a 58 09 69 6e 74 09 69 | 64 78 5f 6d 61 78 6c 65 |.X.int.i|dx_maxle|
|00005c60| 6e 3b 09 09 2f 2a 20 6c | 6f 6e 67 65 73 74 20 66 |n;../* l|ongest f|
|00005c70| 69 65 6c 64 20 6c 65 6e | 67 74 68 09 09 2a 2f 0a |ield len|gth..*/.|
|00005c80| 58 09 69 6e 74 09 69 64 | 78 5f 6e 6c 69 6e 65 73 |X.int.id|x_nlines|
|00005c90| 3b 09 09 2f 2a 20 6e 75 | 6d 62 65 72 20 6f 66 20 |;../* nu|mber of |
|00005ca0| 6c 69 6e 65 73 20 70 65 | 72 20 65 6e 74 72 79 09 |lines pe|r entry.|
|00005cb0| 2a 2f 0a 58 09 63 68 61 | 72 09 69 64 78 5f 73 65 |*/.X.cha|r.idx_se|
|00005cc0| 61 72 63 68 5b 4d 41 58 | 44 42 4c 49 4e 45 53 5d |arch[MAX|DBLINES]|
|00005cd0| 3b 09 2f 2a 20 6e 6f 6e | 2d 7a 65 72 6f 20 69 66 |;./* non|-zero if|
|00005ce0| 20 66 69 65 6c 64 20 73 | 65 61 72 63 68 61 62 6c | field s|earchabl|
|00005cf0| 65 09 2a 2f 0a 58 09 63 | 68 61 72 09 2a 69 64 78 |e.*/.X.c|har.*idx|
|00005d00| 5f 6c 69 6e 65 73 5b 4d | 41 58 44 42 4c 49 4e 45 |_lines[M|AXDBLINE|
|00005d10| 53 5d 3b 09 2f 2a 20 73 | 74 72 69 6e 67 73 20 6e |S];./* s|trings n|
|00005d20| 61 6d 69 6e 67 20 74 68 | 65 20 66 69 65 6c 64 73 |aming th|e fields|
|00005d30| 09 2a 2f 0a 58 7d 3b 0a | 58 0a 58 2f 2a 0a 58 20 |.*/.X};.|X.X/*.X |
|00005d40| 2a 20 53 74 72 75 63 74 | 75 72 65 20 74 6f 20 68 |* Struct|ure to h|
|00005d50| 6f 6c 64 20 61 20 64 61 | 74 61 62 61 73 65 20 65 |old a da|tabase e|
|00005d60| 6e 74 72 79 2e 0a 58 20 | 2a 2f 0a 58 73 74 72 75 |ntry..X |*/.Xstru|
|00005d70| 63 74 20 64 62 66 69 6c | 65 20 7b 0a 58 09 69 6e |ct dbfil|e {.X.in|
|00005d80| 74 09 64 62 5f 66 6c 61 | 67 3b 09 09 2f 2a 20 66 |t.db_fla|g;../* f|
|00005d90| 6c 61 67 2c 20 73 65 65 | 20 61 62 6f 76 65 09 09 |lag, see| above..|
|00005da0| 2a 2f 0a 58 09 69 6e 74 | 09 64 62 5f 6c 65 6e 73 |*/.X.int|.db_lens|
|00005db0| 5b 4d 41 58 44 42 4c 49 | 4e 45 53 5d 3b 09 2f 2a |[MAXDBLI|NES];./*|
|00005dc0| 20 6c 65 6e 67 74 68 73 | 20 6f 66 20 6c 69 6e 65 | lengths| of line|
|00005dd0| 20 63 6f 6e 74 65 6e 74 | 73 09 2a 2f 0a 58 09 63 | content|s.*/.X.c|
|00005de0| 68 61 72 09 2a 64 62 5f | 6c 69 6e 65 73 5b 4d 41 |har.*db_|lines[MA|
|00005df0| 58 44 42 4c 49 4e 45 53 | 5d 3b 09 2f 2a 20 6c 69 |XDBLINES|];./* li|
|00005e00| 6e 65 73 20 69 6e 20 74 | 68 65 20 65 6e 74 72 79 |nes in t|he entry|
|00005e10| 09 09 2a 2f 0a 58 7d 3b | 0a 58 0a 58 65 78 74 65 |..*/.X};|.X.Xexte|
|00005e20| 72 6e 20 63 68 61 72 09 | 2a 70 6e 61 6d 65 3b 09 |rn char.|*pname;.|
|00005e30| 09 09 2f 2a 20 70 72 6f | 67 72 61 6d 20 6e 61 6d |../* pro|gram nam|
|00005e40| 65 09 09 09 2a 2f 0a 58 | 0a 58 65 78 74 65 72 6e |e...*/.X|.Xextern|
|00005e50| 20 69 6e 74 09 64 62 73 | 69 7a 65 3b 09 09 09 2f | int.dbs|ize;.../|
|00005e60| 2a 20 73 69 7a 65 20 6f | 66 20 64 62 20 61 72 72 |* size o|f db arr|
|00005e70| 61 79 09 09 2a 2f 0a 58 | 65 78 74 65 72 6e 20 69 |ay..*/.X|extern i|
|00005e80| 6e 74 09 69 67 6e 63 61 | 73 65 3b 09 09 2f 2a 20 |nt.ignca|se;../* |
|00005e90| 6e 6f 6e 2d 7a 65 72 6f | 20 69 66 20 2d 69 20 73 |non-zero| if -i s|
|00005ea0| 77 69 74 63 68 20 67 69 | 76 65 6e 09 2a 2f 0a 58 |witch gi|ven.*/.X|
|00005eb0| 65 78 74 65 72 6e 20 69 | 6e 74 09 76 65 72 62 6f |extern i|nt.verbo|
|00005ec0| 73 65 3b 09 09 2f 2a 20 | 6e 6f 6e 2d 7a 65 72 6f |se;../* |non-zero|
|00005ed0| 20 69 66 20 2d 76 20 73 | 77 69 74 63 68 20 67 69 | if -v s|witch gi|
|00005ee0| 76 65 6e 09 2a 2f 0a 58 | 65 78 74 65 72 6e 20 69 |ven.*/.X|extern i|
|00005ef0| 6e 74 09 64 62 65 6e 74 | 72 69 65 73 3b 09 09 2f |nt.dbent|ries;../|
|00005f00| 2a 20 6e 75 6d 62 65 72 | 20 6f 66 20 65 6e 74 72 |* number| of entr|
|00005f10| 69 65 73 20 69 6e 20 64 | 62 09 2a 2f 0a 58 65 78 |ies in d|b.*/.Xex|
|00005f20| 74 65 72 6e 20 69 6e 74 | 09 64 62 6d 6f 64 69 66 |tern int|.dbmodif|
|00005f30| 69 65 64 3b 09 09 2f 2a | 20 6e 6f 6e 2d 7a 65 72 |ied;../*| non-zer|
|00005f40| 6f 20 69 66 20 64 62 20 | 6e 65 65 64 73 20 73 61 |o if db |needs sa|
|00005f50| 76 69 6e 67 09 2a 2f 0a | 58 0a 58 65 78 74 65 72 |ving.*/.|X.Xexter|
|00005f60| 6e 20 63 68 61 72 09 64 | 62 61 73 65 64 69 72 5b |n char.d|basedir[|
|00005f70| 5d 3b 09 09 2f 2a 20 70 | 61 74 68 20 74 6f 20 74 |];../* p|ath to t|
|00005f80| 68 65 20 49 4e 44 45 58 | 44 49 52 09 09 2a 2f 0a |he INDEX|DIR..*/.|
|00005f90| 58 0a 58 65 78 74 65 72 | 6e 20 73 74 72 75 63 74 |X.Xexter|n struct|
|00005fa0| 09 64 62 66 69 6c 65 20 | 2a 64 62 3b 09 09 2f 2a |.dbfile |*db;../*|
|00005fb0| 20 64 61 74 61 62 61 73 | 65 20 65 6e 74 72 69 65 | databas|e entrie|
|00005fc0| 73 20 61 72 72 61 79 09 | 2a 2f 0a 58 65 78 74 65 |s array.|*/.Xexte|
|00005fd0| 72 6e 20 73 74 72 75 63 | 74 09 69 64 78 66 69 6c |rn struc|t.idxfil|
|00005fe0| 65 20 69 64 78 3b 09 09 | 2f 2a 20 69 6e 64 65 78 |e idx;..|/* index|
|00005ff0| 20 64 65 66 69 6e 69 74 | 69 6f 6e 20 73 74 72 75 | definit|ion stru|
|00006000| 63 74 75 72 65 09 2a 2f | 0a 58 0a 58 63 68 61 72 |cture.*/|.X.Xchar|
|00006010| 09 09 2a 73 61 76 65 73 | 74 72 28 29 3b 0a 58 63 |..*saves|tr();.Xc|
|00006020| 68 61 72 09 09 2a 73 65 | 6c 65 63 74 5f 64 62 28 |har..*se|lect_db(|
|00006030| 29 3b 0a 58 0a 58 69 6e | 74 09 09 62 79 65 62 79 |);.X.Xin|t..byeby|
|00006040| 65 28 29 3b 0a 58 69 6e | 74 09 09 64 62 73 6f 72 |e();.Xin|t..dbsor|
|00006050| 74 28 29 3b 0a 45 4e 44 | 5f 4f 46 5f 46 49 4c 45 |t();.END|_OF_FILE|
|00006060| 0a 69 66 20 74 65 73 74 | 20 32 32 33 32 20 2d 6e |.if test| 2232 -n|
|00006070| 65 20 60 77 63 20 2d 63 | 20 3c 27 64 65 66 73 2e |e `wc -c| <'defs.|
|00006080| 68 27 60 3b 20 74 68 65 | 6e 0a 20 20 20 20 65 63 |h'`; the|n. ec|
|00006090| 68 6f 20 73 68 61 72 3a | 20 5c 22 27 64 65 66 73 |ho shar:| \"'defs|
|000060a0| 2e 68 27 5c 22 20 75 6e | 70 61 63 6b 65 64 20 77 |.h'\" un|packed w|
|000060b0| 69 74 68 20 77 72 6f 6e | 67 20 73 69 7a 65 21 0a |ith wron|g size!.|
|000060c0| 66 69 0a 23 20 65 6e 64 | 20 6f 66 20 27 64 65 66 |fi.# end| of 'def|
|000060d0| 73 2e 68 27 0a 66 69 0a | 69 66 20 74 65 73 74 20 |s.h'.fi.|if test |
|000060e0| 2d 66 20 27 69 6e 64 65 | 78 2e 31 27 20 2d 61 20 |-f 'inde|x.1' -a |
|000060f0| 22 24 7b 31 7d 22 20 21 | 3d 20 22 2d 63 22 20 3b |"${1}" !|= "-c" ;|
|00006100| 20 74 68 65 6e 20 0a 20 | 20 65 63 68 6f 20 73 68 | then . | echo sh|
|00006110| 61 72 3a 20 57 69 6c 6c | 20 6e 6f 74 20 63 6c 6f |ar: Will| not clo|
|00006120| 62 62 65 72 20 65 78 69 | 73 74 69 6e 67 20 66 69 |bber exi|sting fi|
|00006130| 6c 65 20 5c 22 27 69 6e | 64 65 78 2e 31 27 5c 22 |le \"'in|dex.1'\"|
|00006140| 0a 65 6c 73 65 0a 65 63 | 68 6f 20 73 68 61 72 3a |.else.ec|ho shar:|
|00006150| 20 45 78 74 72 61 63 74 | 69 6e 67 20 5c 22 27 69 | Extract|ing \"'i|
|00006160| 6e 64 65 78 2e 31 27 5c | 22 20 5c 28 37 38 34 34 |ndex.1'\|" \(7844|
|00006170| 20 63 68 61 72 61 63 74 | 65 72 73 5c 29 0a 73 65 | charact|ers\).se|
|00006180| 64 20 22 73 2f 5e 58 2f | 2f 22 20 3e 27 69 6e 64 |d "s/^X/|/" >'ind|
|00006190| 65 78 2e 31 27 20 3c 3c | 27 45 4e 44 5f 4f 46 5f |ex.1' <<|'END_OF_|
|000061a0| 46 49 4c 45 27 0a 58 2e | 5c 22 0a 58 2e 5c 22 20 |FILE'.X.|\".X.\" |
|000061b0| 24 48 65 61 64 65 72 3a | 20 2f 75 35 2f 64 61 76 |$Header:| /u5/dav|
|000061c0| 79 2f 70 72 6f 67 73 2f | 69 6e 64 65 78 2f 52 43 |y/progs/|index/RC|
|000061d0| 53 2f 69 6e 64 65 78 2e | 31 2c 76 20 31 2e 31 20 |S/index.|1,v 1.1 |
|000061e0| 38 39 2f 30 38 2f 30 39 | 20 31 31 3a 30 39 3a 34 |89/08/09| 11:09:4|
|000061f0| 32 20 64 61 76 79 20 45 | 78 70 20 24 0a 58 2e 5c |2 davy E|xp $.X.\|
|00006200| 22 0a 58 2e 5c 22 20 44 | 61 76 69 64 20 41 2e 20 |".X.\" D|avid A. |
|00006210| 43 75 72 72 79 0a 58 2e | 5c 22 20 52 65 73 65 61 |Curry.X.|\" Resea|
|00006220| 72 63 68 20 49 6e 73 74 | 69 74 75 74 65 20 66 6f |rch Inst|itute fo|
|00006230| 72 20 41 64 76 61 6e 63 | 65 64 20 43 6f 6d 70 75 |r Advanc|ed Compu|
|00006240| 74 65 72 20 53 63 69 65 | 6e 63 65 0a 58 2e 5c 22 |ter Scie|nce.X.\"|
|00006250| 20 4d 61 69 6c 20 53 74 | 6f 70 20 32 33 30 2d 35 | Mail St|op 230-5|
|00006260| 0a 58 2e 5c 22 20 4e 41 | 53 41 20 41 6d 65 73 20 |.X.\" NA|SA Ames |
|00006270| 52 65 73 65 61 72 63 68 | 20 43 65 6e 74 65 72 0a |Research| Center.|
|00006280| 58 2e 5c 22 20 4d 6f 66 | 66 65 74 74 20 46 69 65 |X.\" Mof|fett Fie|
|00006290| 6c 64 2c 20 43 41 20 39 | 34 30 33 35 0a 58 2e 5c |ld, CA 9|4035.X.\|
|000062a0| 22 0a 58 2e 5c 22 20 24 | 4c 6f 67 3a 09 69 6e 64 |".X.\" $|Log:.ind|
|000062b0| 65 78 2e 31 2c 76 20 24 | 0a 58 52 65 76 69 73 69 |ex.1,v $|.XRevisi|
|000062c0| 6f 6e 20 31 2e 31 20 20 | 38 39 2f 30 38 2f 30 39 |on 1.1 |89/08/09|
|000062d0| 20 20 31 31 3a 30 39 3a | 34 32 20 20 64 61 76 79 | 11:09:|42 davy|
|000062e0| 0a 58 49 6e 69 74 69 61 | 6c 20 72 65 76 69 73 69 |.XInitia|l revisi|
|000062f0| 6f 6e 0a 58 0a 58 2e 5c | 22 0a 58 2e 54 48 20 49 |on.X.X.\|".X.TH I|
|00006300| 4e 44 45 58 20 31 20 22 | 32 37 20 4a 75 6c 79 20 |NDEX 1 "|27 July |
|00006310| 31 39 38 39 22 20 4c 4f | 43 41 4c 0a 58 2e 53 48 |1989" LO|CAL.X.SH|
|00006320| 20 4e 41 4d 45 0a 58 69 | 6e 64 65 78 20 5c 2d 20 | NAME.Xi|ndex \- |
|00006330| 6d 61 69 6e 74 61 69 6e | 20 73 69 6d 70 6c 65 20 |maintain| simple |
|00006340| 64 61 74 61 62 61 73 65 | 73 0a 58 2e 53 48 20 53 |database|s.X.SH S|
|00006350| 59 4e 4f 50 53 49 53 0a | 58 69 6e 64 65 78 0a 58 |YNOPSIS.|Xindex.X|
|00006360| 5b 0a 58 2e 42 20 5c 2d | 66 0a 58 2e 49 20 66 69 |[.X.B \-|f.X.I fi|
|00006370| 6c 74 65 72 0a 58 5d 20 | 5b 0a 58 2e 42 20 5c 2d |lter.X] |[.X.B \-|
|00006380| 69 0a 58 5d 20 5b 0a 58 | 2e 42 20 5c 2d 76 0a 58 |i.X] [.X|.B \-v.X|
|00006390| 5d 20 5b 0a 58 2e 49 20 | 64 61 74 61 62 61 73 65 |] [.X.I |database|
|000063a0| 0a 58 5d 20 5b 0a 58 2e | 49 20 70 61 74 74 65 72 |.X] [.X.|I patter|
|000063b0| 6e 0a 58 5d 0a 58 2e 53 | 48 20 44 45 53 43 52 49 |n.X].X.S|H DESCRI|
|000063c0| 50 54 49 4f 4e 0a 58 2e | 50 50 0a 58 2e 49 20 49 |PTION.X.|PP.X.I I|
|000063d0| 6e 64 65 78 0a 58 69 73 | 20 75 73 65 64 20 74 6f |ndex.Xis| used to|
|000063e0| 20 6d 61 69 6e 74 61 69 | 6e 20 73 69 6d 70 6c 65 | maintai|n simple|
|000063f0| 20 64 61 74 61 62 61 73 | 65 73 20 73 75 63 68 20 | databas|es such |
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.