home *** CD-ROM | disk | FTP | other *** search
open in: MacOS 8.1
extracted
|
Win98
extracted
|
DOS
extracted
browse contents |
view JSON data
|
view as text
This file was processed as: Mailbox/MIME Entity
(archive/mbox ).
Confidence Program Detection Match Type Support
100%
dexvert
SHell self-extracting ARchive (archive/shar)
magic
Supported
100%
dexvert
Mailbox/MIME Entity (archive/mbox)
magic
Supported
100%
dexvert
Internet Message Format (text/imf)
magic
Supported
1%
dexvert
Text File (text/txt)
fallback
Supported
100%
file
Mailbox text, 1st line "From utkcs2!emory!sol.ctr.columbia.edu!zaphod.mps.ohio-state.edu!usc!cs.utexas.edu!uunet!philmtl!telly!lethe!torsqnt!news-serve", ASCII text
default
100%
TrID
E-Mail message (Var. 2)
default
100%
perlTextCheck
Likely Text (Perl)
default
100%
siegfried
fmt/329 Shell Archive Format
default
100%
detectItEasy
Format: Plain text[LF]
default
100%
xdgMime
application/mbox
default
hex view +--------+-------------------------+-------------------------+--------+--------+ |00000000| 46 72 6f 6d 20 75 74 6b | 63 73 32 21 65 6d 6f 72 |From utk|cs2!emor| |00000010| 79 21 73 6f 6c 2e 63 74 | 72 2e 63 6f 6c 75 6d 62 |y!sol.ct|r.columb| |00000020| 69 61 2e 65 64 75 21 7a | 61 70 68 6f 64 2e 6d 70 |ia.edu!z|aphod.mp| |00000030| 73 2e 6f 68 69 6f 2d 73 | 74 61 74 65 2e 65 64 75 |s.ohio-s|tate.edu| |00000040| 21 75 73 63 21 63 73 2e | 75 74 65 78 61 73 2e 65 |!usc!cs.|utexas.e| |00000050| 64 75 21 75 75 6e 65 74 | 21 70 68 69 6c 6d 74 6c |du!uunet|!philmtl| |00000060| 21 74 65 6c 6c 79 21 6c | 65 74 68 65 21 74 6f 72 |!telly!l|ethe!tor| |00000070| 73 71 6e 74 21 6e 65 77 | 73 2d 73 65 72 76 65 72 |sqnt!new|s-server| |00000080| 2e 63 73 72 69 2e 74 6f | 72 6f 6e 74 6f 2e 65 64 |.csri.to|ronto.ed| |00000090| 75 21 68 65 6c 69 6f 73 | 2e 70 68 79 73 69 63 73 |u!helios|.physics| |000000a0| 2e 75 74 6f 72 6f 6e 74 | 6f 2e 63 61 21 69 73 74 |.utoront|o.ca!ist| |000000b0| 73 21 6d 69 6b 65 20 4d | 6f 6e 20 4a 75 6e 20 20 |s!mike M|on Jun | |000000c0| 34 20 31 33 3a 30 32 3a | 35 31 20 45 44 54 20 31 |4 13:02:|51 EDT 1| |000000d0| 39 39 30 0a 41 72 74 69 | 63 6c 65 20 32 38 39 35 |990.Arti|cle 2895| |000000e0| 20 6f 66 20 67 6e 75 2e | 65 6d 61 63 73 3a 0a 58 | of gnu.|emacs:.X| |000000f0| 72 65 66 3a 20 75 74 6b | 63 73 32 20 63 6f 6d 70 |ref: utk|cs2 comp| |00000100| 2e 65 6d 61 63 73 3a 34 | 33 35 36 20 63 6f 6d 70 |.emacs:4|356 comp| |00000110| 2e 74 65 78 74 3a 34 34 | 38 38 20 67 6e 75 2e 65 |.text:44|88 gnu.e| |00000120| 6d 61 63 73 3a 32 38 39 | 35 0a 50 61 74 68 3a 20 |macs:289|5.Path: | |00000130| 75 74 6b 63 73 32 21 65 | 6d 6f 72 79 21 73 6f 6c |utkcs2!e|mory!sol| |00000140| 2e 63 74 72 2e 63 6f 6c | 75 6d 62 69 61 2e 65 64 |.ctr.col|umbia.ed| |00000150| 75 21 7a 61 70 68 6f 64 | 2e 6d 70 73 2e 6f 68 69 |u!zaphod|.mps.ohi| |00000160| 6f 2d 73 74 61 74 65 2e | 65 64 75 21 75 73 63 21 |o-state.|edu!usc!| |00000170| 63 73 2e 75 74 65 78 61 | 73 2e 65 64 75 21 75 75 |cs.utexa|s.edu!uu| |00000180| 6e 65 74 21 70 68 69 6c | 6d 74 6c 21 74 65 6c 6c |net!phil|mtl!tell| |00000190| 79 21 6c 65 74 68 65 21 | 74 6f 72 73 71 6e 74 21 |y!lethe!|torsqnt!| |000001a0| 6e 65 77 73 2d 73 65 72 | 76 65 72 2e 63 73 72 69 |news-ser|ver.csri| |000001b0| 2e 74 6f 72 6f 6e 74 6f | 2e 65 64 75 21 68 65 6c |.toronto|.edu!hel| |000001c0| 69 6f 73 2e 70 68 79 73 | 69 63 73 2e 75 74 6f 72 |ios.phys|ics.utor| |000001d0| 6f 6e 74 6f 2e 63 61 21 | 69 73 74 73 21 6d 69 6b |onto.ca!|ists!mik| |000001e0| 65 0a 3e 46 72 6f 6d 3a | 20 6d 69 6b 65 40 69 73 |e.>From:| mike@is| |000001f0| 74 73 2e 69 73 74 73 2e | 63 61 20 28 4d 69 6b 65 |ts.ists.|ca (Mike| |00000200| 20 43 6c 61 72 6b 73 6f | 6e 29 0a 4e 65 77 73 67 | Clarkso|n).Newsg| |00000210| 72 6f 75 70 73 3a 20 63 | 6f 6d 70 2e 65 6d 61 63 |roups: c|omp.emac| |00000220| 73 2c 63 6f 6d 70 2e 74 | 65 78 74 2c 67 6e 75 2e |s,comp.t|ext,gnu.| |00000230| 65 6d 61 63 73 0a 53 75 | 62 6a 65 63 74 3a 20 4c |emacs.Su|bject: L| |00000240| 61 54 65 58 69 6e 66 6f | 20 2d 20 39 20 6f 66 20 |aTeXinfo| - 9 of | |00000250| 31 30 0a 4d 65 73 73 61 | 67 65 2d 49 44 3a 20 3c |10.Messa|ge-ID: <| |00000260| 38 37 38 34 40 69 73 74 | 73 2e 69 73 74 73 2e 63 |8784@ist|s.ists.c| |00000270| 61 3e 0a 44 61 74 65 3a | 20 33 20 4a 75 6e 20 39 |a>.Date:| 3 Jun 9| |00000280| 30 20 30 31 3a 32 33 3a | 30 35 20 47 4d 54 0a 46 |0 01:23:|05 GMT.F| |00000290| 6f 6c 6c 6f 77 75 70 2d | 54 6f 3a 20 63 6f 6d 70 |ollowup-|To: comp| |000002a0| 2e 65 6d 61 63 73 0a 4f | 72 67 61 6e 69 7a 61 74 |.emacs.O|rganizat| |000002b0| 69 6f 6e 3a 20 49 6e 73 | 74 69 74 75 74 65 20 66 |ion: Ins|titute f| |000002c0| 6f 72 20 53 70 61 63 65 | 20 61 6e 64 20 54 65 72 |or Space| and Ter| |000002d0| 72 65 73 74 72 69 61 6c | 20 53 63 69 65 6e 63 65 |restrial| Science| |000002e0| 0a 4c 69 6e 65 73 3a 20 | 31 37 31 37 0a 0a 0a 23 |.Lines: |1717...#| |000002f0| 21 20 2f 62 69 6e 2f 73 | 68 0a 23 20 54 68 69 73 |! /bin/s|h.# This| |00000300| 20 69 73 20 61 20 73 68 | 65 6c 6c 20 61 72 63 68 | is a sh|ell arch| |00000310| 69 76 65 2e 20 20 52 65 | 6d 6f 76 65 20 61 6e 79 |ive. Re|move any| |00000320| 74 68 69 6e 67 20 62 65 | 66 6f 72 65 20 74 68 69 |thing be|fore thi| |00000330| 73 20 6c 69 6e 65 2c 20 | 74 68 65 6e 20 75 6e 70 |s line, |then unp| |00000340| 61 63 6b 0a 23 20 69 74 | 20 62 79 20 73 61 76 69 |ack.# it| by savi| |00000350| 6e 67 20 69 74 20 69 6e | 74 6f 20 61 20 66 69 6c |ng it in|to a fil| |00000360| 65 20 61 6e 64 20 74 79 | 70 69 6e 67 20 22 73 68 |e and ty|ping "sh| |00000370| 20 66 69 6c 65 22 2e 20 | 20 54 6f 20 6f 76 65 72 | file". | To over| |00000380| 77 72 69 74 65 20 65 78 | 69 73 74 69 6e 67 0a 23 |write ex|isting.#| |00000390| 20 66 69 6c 65 73 2c 20 | 74 79 70 65 20 22 73 68 | files, |type "sh| |000003a0| 20 66 69 6c 65 20 2d 63 | 22 2e 20 20 59 6f 75 20 | file -c|". You | |000003b0| 63 61 6e 20 61 6c 73 6f | 20 66 65 65 64 20 74 68 |can also| feed th| |000003c0| 69 73 20 61 73 20 73 74 | 61 6e 64 61 72 64 20 69 |is as st|andard i| |000003d0| 6e 70 75 74 20 76 69 61 | 0a 23 20 75 6e 73 68 61 |nput via|.# unsha| |000003e0| 72 2c 20 6f 72 20 62 79 | 20 74 79 70 69 6e 67 20 |r, or by| typing | |000003f0| 22 73 68 20 3c 66 69 6c | 65 22 2c 20 65 2e 67 2e |"sh <fil|e", e.g.| |00000400| 2e 20 20 49 66 20 74 68 | 69 73 20 61 72 63 68 69 |. If th|is archi| |00000410| 76 65 20 69 73 20 63 6f | 6d 70 6c 65 74 65 2c 20 |ve is co|mplete, | |00000420| 79 6f 75 0a 23 20 77 69 | 6c 6c 20 73 65 65 20 74 |you.# wi|ll see t| |00000430| 68 65 20 66 6f 6c 6c 6f | 77 69 6e 67 20 6d 65 73 |he follo|wing mes| |00000440| 73 61 67 65 20 61 74 20 | 74 68 65 20 65 6e 64 3a |sage at |the end:| |00000450| 0a 23 09 09 22 45 6e 64 | 20 6f 66 20 61 72 63 68 |.#.."End| of arch| |00000460| 69 76 65 20 38 20 28 6f | 66 20 39 29 2e 22 0a 23 |ive 8 (o|f 9).".#| |00000470| 20 43 6f 6e 74 65 6e 74 | 73 3a 20 20 6d 61 6e 75 | Content|s: manu| |00000480| 61 6c 2f 74 65 78 69 6e | 64 65 78 2e 63 0a 23 20 |al/texin|dex.c.# | |00000490| 57 72 61 70 70 65 64 20 | 62 79 20 6d 69 6b 65 40 |Wrapped |by mike@| |000004a0| 73 61 6d 20 6f 6e 20 53 | 61 74 20 4a 75 6e 20 20 |sam on S|at Jun | |000004b0| 32 20 31 38 3a 31 38 3a | 31 35 20 31 39 39 30 0a |2 18:18:|15 1990.| |000004c0| 50 41 54 48 3d 2f 62 69 | 6e 3a 2f 75 73 72 2f 62 |PATH=/bi|n:/usr/b| |000004d0| 69 6e 3a 2f 75 73 72 2f | 75 63 62 20 3b 20 65 78 |in:/usr/|ucb ; ex| |000004e0| 70 6f 72 74 20 50 41 54 | 48 0a 69 66 20 74 65 73 |port PAT|H.if tes| |000004f0| 74 20 2d 66 20 27 6d 61 | 6e 75 61 6c 2f 74 65 78 |t -f 'ma|nual/tex| |00000500| 69 6e 64 65 78 2e 63 27 | 20 2d 61 20 22 24 7b 31 |index.c'| -a "${1| |00000510| 7d 22 20 21 3d 20 22 2d | 63 22 20 3b 20 74 68 65 |}" != "-|c" ; the| |00000520| 6e 20 0a 20 20 65 63 68 | 6f 20 73 68 61 72 3a 20 |n . ech|o shar: | |00000530| 57 69 6c 6c 20 6e 6f 74 | 20 63 6c 6f 62 62 65 72 |Will not| clobber| |00000540| 20 65 78 69 73 74 69 6e | 67 20 66 69 6c 65 20 5c | existin|g file \| |00000550| 22 27 6d 61 6e 75 61 6c | 2f 74 65 78 69 6e 64 65 |"'manual|/texinde| |00000560| 78 2e 63 27 5c 22 0a 65 | 6c 73 65 0a 65 63 68 6f |x.c'\".e|lse.echo| |00000570| 20 73 68 61 72 3a 20 45 | 78 74 72 61 63 74 69 6e | shar: E|xtractin| |00000580| 67 20 5c 22 27 6d 61 6e | 75 61 6c 2f 74 65 78 69 |g \"'man|ual/texi| |00000590| 6e 64 65 78 2e 63 27 5c | 22 20 5c 28 34 32 37 37 |ndex.c'\|" \(4277| |000005a0| 34 20 63 68 61 72 61 63 | 74 65 72 73 5c 29 0a 73 |4 charac|ters\).s| |000005b0| 65 64 20 22 73 2f 5e 58 | 2f 2f 22 20 3e 27 6d 61 |ed "s/^X|//" >'ma| |000005c0| 6e 75 61 6c 2f 74 65 78 | 69 6e 64 65 78 2e 63 27 |nual/tex|index.c'| |000005d0| 20 3c 3c 27 45 4e 44 5f | 4f 46 5f 46 49 4c 45 27 | <<'END_|OF_FILE'| |000005e0| 0a 58 2f 2a 20 50 72 65 | 70 61 72 65 20 54 65 78 |.X/* Pre|pare Tex| |000005f0| 20 69 6e 64 65 78 20 64 | 72 69 62 62 6c 65 20 6f | index d|ribble o| |00000600| 75 74 70 75 74 20 69 6e | 74 6f 20 61 6e 20 61 63 |utput in|to an ac| |00000610| 74 75 61 6c 20 69 6e 64 | 65 78 2e 0a 58 20 20 20 |tual ind|ex..X | |00000620| 43 6f 70 79 72 69 67 68 | 74 20 28 43 29 20 31 39 |Copyrigh|t (C) 19| |00000630| 38 37 20 46 72 65 65 20 | 53 6f 66 74 77 61 72 65 |87 Free |Software| |00000640| 20 46 6f 75 6e 64 61 74 | 69 6f 6e 2c 20 49 6e 63 | Foundat|ion, Inc| |00000650| 2e 0a 58 0a 58 09 09 20 | 20 20 20 20 20 20 4e 4f |..X.X.. | NO| |00000660| 20 57 41 52 52 41 4e 54 | 59 0a 58 0a 58 20 20 42 | WARRANT|Y.X.X B| |00000670| 45 43 41 55 53 45 20 54 | 48 49 53 20 50 52 4f 47 |ECAUSE T|HIS PROG| |00000680| 52 41 4d 20 49 53 20 4c | 49 43 45 4e 53 45 44 20 |RAM IS L|ICENSED | |00000690| 46 52 45 45 20 4f 46 20 | 43 48 41 52 47 45 2c 20 |FREE OF |CHARGE, | |000006a0| 57 45 20 50 52 4f 56 49 | 44 45 20 41 42 53 4f 4c |WE PROVI|DE ABSOL| |000006b0| 55 54 45 4c 59 0a 58 4e | 4f 20 57 41 52 52 41 4e |UTELY.XN|O WARRAN| |000006c0| 54 59 2c 20 54 4f 20 54 | 48 45 20 45 58 54 45 4e |TY, TO T|HE EXTEN| |000006d0| 54 20 50 45 52 4d 49 54 | 54 45 44 20 42 59 20 41 |T PERMIT|TED BY A| |000006e0| 50 50 4c 49 43 41 42 4c | 45 20 53 54 41 54 45 20 |PPLICABL|E STATE | |000006f0| 4c 41 57 2e 20 20 45 58 | 43 45 50 54 0a 58 57 48 |LAW. EX|CEPT.XWH| |00000700| 45 4e 20 4f 54 48 45 52 | 57 49 53 45 20 53 54 41 |EN OTHER|WISE STA| |00000710| 54 45 44 20 49 4e 20 57 | 52 49 54 49 4e 47 2c 20 |TED IN W|RITING, | |00000720| 46 52 45 45 20 53 4f 46 | 54 57 41 52 45 20 46 4f |FREE SOF|TWARE FO| |00000730| 55 4e 44 41 54 49 4f 4e | 2c 20 49 4e 43 2c 0a 58 |UNDATION|, INC,.X| |00000740| 52 49 43 48 41 52 44 20 | 4d 2e 20 53 54 41 4c 4c |RICHARD |M. STALL| |00000750| 4d 41 4e 20 41 4e 44 2f | 4f 52 20 4f 54 48 45 52 |MAN AND/|OR OTHER| |00000760| 20 50 41 52 54 49 45 53 | 20 50 52 4f 56 49 44 45 | PARTIES| PROVIDE| |00000770| 20 54 48 49 53 20 50 52 | 4f 47 52 41 4d 20 22 41 | THIS PR|OGRAM "A| |00000780| 53 20 49 53 22 0a 58 57 | 49 54 48 4f 55 54 20 57 |S IS".XW|ITHOUT W| |00000790| 41 52 52 41 4e 54 59 20 | 4f 46 20 41 4e 59 20 4b |ARRANTY |OF ANY K| |000007a0| 49 4e 44 2c 20 45 49 54 | 48 45 52 20 45 58 50 52 |IND, EIT|HER EXPR| |000007b0| 45 53 53 45 44 20 4f 52 | 20 49 4d 50 4c 49 45 44 |ESSED OR| IMPLIED| |000007c0| 2c 20 49 4e 43 4c 55 44 | 49 4e 47 2c 0a 58 42 55 |, INCLUD|ING,.XBU| |000007d0| 54 20 4e 4f 54 20 4c 49 | 4d 49 54 45 44 20 54 4f |T NOT LI|MITED TO| |000007e0| 2c 20 54 48 45 20 49 4d | 50 4c 49 45 44 20 57 41 |, THE IM|PLIED WA| |000007f0| 52 52 41 4e 54 49 45 53 | 20 4f 46 20 4d 45 52 43 |RRANTIES| OF MERC| |00000800| 48 41 4e 54 41 42 49 4c | 49 54 59 20 41 4e 44 0a |HANTABIL|ITY AND.| |00000810| 58 46 49 54 4e 45 53 53 | 20 46 4f 52 20 41 20 50 |XFITNESS| FOR A P| |00000820| 41 52 54 49 43 55 4c 41 | 52 20 50 55 52 50 4f 53 |ARTICULA|R PURPOS| |00000830| 45 2e 20 20 54 48 45 20 | 45 4e 54 49 52 45 20 52 |E. THE |ENTIRE R| |00000840| 49 53 4b 20 41 53 20 54 | 4f 20 54 48 45 20 51 55 |ISK AS T|O THE QU| |00000850| 41 4c 49 54 59 0a 58 41 | 4e 44 20 50 45 52 46 4f |ALITY.XA|ND PERFO| |00000860| 52 4d 41 4e 43 45 20 4f | 46 20 54 48 45 20 50 52 |RMANCE O|F THE PR| |00000870| 4f 47 52 41 4d 20 49 53 | 20 57 49 54 48 20 59 4f |OGRAM IS| WITH YO| |00000880| 55 2e 20 20 53 48 4f 55 | 4c 44 20 54 48 45 20 50 |U. SHOU|LD THE P| |00000890| 52 4f 47 52 41 4d 20 50 | 52 4f 56 45 0a 58 44 45 |ROGRAM P|ROVE.XDE| |000008a0| 46 45 43 54 49 56 45 2c | 20 59 4f 55 20 41 53 53 |FECTIVE,| YOU ASS| |000008b0| 55 4d 45 20 54 48 45 20 | 43 4f 53 54 20 4f 46 20 |UME THE |COST OF | |000008c0| 41 4c 4c 20 4e 45 43 45 | 53 53 41 52 59 20 53 45 |ALL NECE|SSARY SE| |000008d0| 52 56 49 43 49 4e 47 2c | 20 52 45 50 41 49 52 20 |RVICING,| REPAIR | |000008e0| 4f 52 0a 58 43 4f 52 52 | 45 43 54 49 4f 4e 2e 0a |OR.XCORR|ECTION..| |000008f0| 58 0a 58 20 49 4e 20 4e | 4f 20 45 56 45 4e 54 20 |X.X IN N|O EVENT | |00000900| 55 4e 4c 45 53 53 20 52 | 45 51 55 49 52 45 44 20 |UNLESS R|EQUIRED | |00000910| 42 59 20 41 50 50 4c 49 | 43 41 42 4c 45 20 4c 41 |BY APPLI|CABLE LA| |00000920| 57 20 57 49 4c 4c 20 52 | 49 43 48 41 52 44 20 4d |W WILL R|ICHARD M| |00000930| 2e 0a 58 53 54 41 4c 4c | 4d 41 4e 2c 20 54 48 45 |..XSTALL|MAN, THE| |00000940| 20 46 52 45 45 20 53 4f | 46 54 57 41 52 45 20 46 | FREE SO|FTWARE F| |00000950| 4f 55 4e 44 41 54 49 4f | 4e 2c 20 49 4e 43 2e 2c |OUNDATIO|N, INC.,| |00000960| 20 41 4e 44 2f 4f 52 20 | 41 4e 59 20 4f 54 48 45 | AND/OR |ANY OTHE| |00000970| 52 20 50 41 52 54 59 0a | 58 57 48 4f 20 4d 41 59 |R PARTY.|XWHO MAY| |00000980| 20 4d 4f 44 49 46 59 20 | 41 4e 44 20 52 45 44 49 | MODIFY |AND REDI| |00000990| 53 54 52 49 42 55 54 45 | 20 54 48 49 53 20 50 52 |STRIBUTE| THIS PR| |000009a0| 4f 47 52 41 4d 20 41 53 | 20 50 45 52 4d 49 54 54 |OGRAM AS| PERMITT| |000009b0| 45 44 20 42 45 4c 4f 57 | 2c 20 42 45 0a 58 4c 49 |ED BELOW|, BE.XLI| |000009c0| 41 42 4c 45 20 54 4f 20 | 59 4f 55 20 46 4f 52 20 |ABLE TO |YOU FOR | |000009d0| 44 41 4d 41 47 45 53 2c | 20 49 4e 43 4c 55 44 49 |DAMAGES,| INCLUDI| |000009e0| 4e 47 20 41 4e 59 20 4c | 4f 53 54 20 50 52 4f 46 |NG ANY L|OST PROF| |000009f0| 49 54 53 2c 20 4c 4f 53 | 54 20 4d 4f 4e 49 45 53 |ITS, LOS|T MONIES| |00000a00| 2c 20 4f 52 0a 58 4f 54 | 48 45 52 20 53 50 45 43 |, OR.XOT|HER SPEC| |00000a10| 49 41 4c 2c 20 49 4e 43 | 49 44 45 4e 54 41 4c 20 |IAL, INC|IDENTAL | |00000a20| 4f 52 20 43 4f 4e 53 45 | 51 55 45 4e 54 49 41 4c |OR CONSE|QUENTIAL| |00000a30| 20 44 41 4d 41 47 45 53 | 20 41 52 49 53 49 4e 47 | DAMAGES| ARISING| |00000a40| 20 4f 55 54 20 4f 46 20 | 54 48 45 0a 58 55 53 45 | OUT OF |THE.XUSE| |00000a50| 20 4f 52 20 49 4e 41 42 | 49 4c 49 54 59 20 54 4f | OR INAB|ILITY TO| |00000a60| 20 55 53 45 20 28 49 4e | 43 4c 55 44 49 4e 47 20 | USE (IN|CLUDING | |00000a70| 42 55 54 20 4e 4f 54 20 | 4c 49 4d 49 54 45 44 20 |BUT NOT |LIMITED | |00000a80| 54 4f 20 4c 4f 53 53 20 | 4f 46 20 44 41 54 41 20 |TO LOSS |OF DATA | |00000a90| 4f 52 0a 58 44 41 54 41 | 20 42 45 49 4e 47 20 52 |OR.XDATA| BEING R| |00000aa0| 45 4e 44 45 52 45 44 20 | 49 4e 41 43 43 55 52 41 |ENDERED |INACCURA| |00000ab0| 54 45 20 4f 52 20 4c 4f | 53 53 45 53 20 53 55 53 |TE OR LO|SSES SUS| |00000ac0| 54 41 49 4e 45 44 20 42 | 59 20 54 48 49 52 44 20 |TAINED B|Y THIRD | |00000ad0| 50 41 52 54 49 45 53 20 | 4f 52 0a 58 41 20 46 41 |PARTIES |OR.XA FA| |00000ae0| 49 4c 55 52 45 20 4f 46 | 20 54 48 45 20 50 52 4f |ILURE OF| THE PRO| |00000af0| 47 52 41 4d 20 54 4f 20 | 4f 50 45 52 41 54 45 20 |GRAM TO |OPERATE | |00000b00| 57 49 54 48 20 41 4e 59 | 20 4f 54 48 45 52 20 50 |WITH ANY| OTHER P| |00000b10| 52 4f 47 52 41 4d 53 29 | 20 54 48 49 53 0a 58 50 |ROGRAMS)| THIS.XP| |00000b20| 52 4f 47 52 41 4d 2c 20 | 45 56 45 4e 20 49 46 20 |ROGRAM, |EVEN IF | |00000b30| 59 4f 55 20 48 41 56 45 | 20 42 45 45 4e 20 41 44 |YOU HAVE| BEEN AD| |00000b40| 56 49 53 45 44 20 4f 46 | 20 54 48 45 20 50 4f 53 |VISED OF| THE POS| |00000b50| 53 49 42 49 4c 49 54 59 | 20 4f 46 20 53 55 43 48 |SIBILITY| OF SUCH| |00000b60| 0a 58 44 41 4d 41 47 45 | 53 2c 20 4f 52 20 46 4f |.XDAMAGE|S, OR FO| |00000b70| 52 20 41 4e 59 20 43 4c | 41 49 4d 20 42 59 20 41 |R ANY CL|AIM BY A| |00000b80| 4e 59 20 4f 54 48 45 52 | 20 50 41 52 54 59 2e 0a |NY OTHER| PARTY..| |00000b90| 58 0a 58 09 09 47 45 4e | 45 52 41 4c 20 50 55 42 |X.X..GEN|ERAL PUB| |00000ba0| 4c 49 43 20 4c 49 43 45 | 4e 53 45 20 54 4f 20 43 |LIC LICE|NSE TO C| |00000bb0| 4f 50 59 0a 58 0a 58 20 | 20 31 2e 20 59 6f 75 20 |OPY.X.X | 1. You | |00000bc0| 6d 61 79 20 63 6f 70 79 | 20 61 6e 64 20 64 69 73 |may copy| and dis| |00000bd0| 74 72 69 62 75 74 65 20 | 76 65 72 62 61 74 69 6d |tribute |verbatim| |00000be0| 20 63 6f 70 69 65 73 20 | 6f 66 20 74 68 69 73 20 | copies |of this | |00000bf0| 73 6f 75 72 63 65 20 66 | 69 6c 65 0a 58 61 73 20 |source f|ile.Xas | |00000c00| 79 6f 75 20 72 65 63 65 | 69 76 65 20 69 74 2c 20 |you rece|ive it, | |00000c10| 69 6e 20 61 6e 79 20 6d | 65 64 69 75 6d 2c 20 70 |in any m|edium, p| |00000c20| 72 6f 76 69 64 65 64 20 | 74 68 61 74 20 79 6f 75 |rovided |that you| |00000c30| 20 63 6f 6e 73 70 69 63 | 75 6f 75 73 6c 79 0a 58 | conspic|uously.X| |00000c40| 61 6e 64 20 61 70 70 72 | 6f 70 72 69 61 74 65 6c |and appr|opriatel| |00000c50| 79 20 70 75 62 6c 69 73 | 68 20 6f 6e 20 65 61 63 |y publis|h on eac| |00000c60| 68 20 63 6f 70 79 20 61 | 20 76 61 6c 69 64 20 63 |h copy a| valid c| |00000c70| 6f 70 79 72 69 67 68 74 | 20 6e 6f 74 69 63 65 0a |opyright| notice.| |00000c80| 58 22 43 6f 70 79 72 69 | 67 68 74 20 28 43 29 20 |X"Copyri|ght (C) | |00000c90| 31 39 38 37 20 46 72 65 | 65 20 53 6f 66 74 77 61 |1987 Fre|e Softwa| |00000ca0| 72 65 20 46 6f 75 6e 64 | 61 74 69 6f 6e 2c 20 49 |re Found|ation, I| |00000cb0| 6e 63 2e 22 2c 20 61 6e | 64 20 69 6e 63 6c 75 64 |nc.", an|d includ| |00000cc0| 65 0a 58 66 6f 6c 6c 6f | 77 69 6e 67 20 74 68 65 |e.Xfollo|wing the| |00000cd0| 20 63 6f 70 79 72 69 67 | 68 74 20 6e 6f 74 69 63 | copyrig|ht notic| |00000ce0| 65 20 61 20 76 65 72 62 | 61 74 69 6d 20 63 6f 70 |e a verb|atim cop| |00000cf0| 79 20 6f 66 20 74 68 65 | 20 61 62 6f 76 65 20 64 |y of the| above d| |00000d00| 69 73 63 6c 61 69 6d 65 | 72 0a 58 6f 66 20 77 61 |isclaime|r.Xof wa| |00000d10| 72 72 61 6e 74 79 20 61 | 6e 64 20 6f 66 20 74 68 |rranty a|nd of th| |00000d20| 69 73 20 4c 69 63 65 6e | 73 65 2e 0a 58 0a 58 20 |is Licen|se..X.X | |00000d30| 20 32 2e 20 59 6f 75 20 | 6d 61 79 20 6d 6f 64 69 | 2. You |may modi| |00000d40| 66 79 20 79 6f 75 72 20 | 63 6f 70 79 20 6f 72 20 |fy your |copy or | |00000d50| 63 6f 70 69 65 73 20 6f | 66 20 74 68 69 73 20 73 |copies o|f this s| |00000d60| 6f 75 72 63 65 20 66 69 | 6c 65 20 6f 72 0a 58 61 |ource fi|le or.Xa| |00000d70| 6e 79 20 70 6f 72 74 69 | 6f 6e 20 6f 66 20 69 74 |ny porti|on of it| |00000d80| 2c 20 61 6e 64 20 63 6f | 70 79 20 61 6e 64 20 64 |, and co|py and d| |00000d90| 69 73 74 72 69 62 75 74 | 65 20 73 75 63 68 20 6d |istribut|e such m| |00000da0| 6f 64 69 66 69 63 61 74 | 69 6f 6e 73 20 75 6e 64 |odificat|ions und| |00000db0| 65 72 0a 58 74 68 65 20 | 74 65 72 6d 73 20 6f 66 |er.Xthe |terms of| |00000dc0| 20 50 61 72 61 67 72 61 | 70 68 20 31 20 61 62 6f | Paragra|ph 1 abo| |00000dd0| 76 65 2c 20 70 72 6f 76 | 69 64 65 64 20 74 68 61 |ve, prov|ided tha| |00000de0| 74 20 79 6f 75 20 61 6c | 73 6f 20 64 6f 20 74 68 |t you al|so do th| |00000df0| 65 20 66 6f 6c 6c 6f 77 | 69 6e 67 3a 0a 58 0a 58 |e follow|ing:.X.X| |00000e00| 20 20 20 20 61 29 20 63 | 61 75 73 65 20 74 68 65 | a) c|ause the| |00000e10| 20 6d 6f 64 69 66 69 65 | 64 20 66 69 6c 65 73 20 | modifie|d files | |00000e20| 74 6f 20 63 61 72 72 79 | 20 70 72 6f 6d 69 6e 65 |to carry| promine| |00000e30| 6e 74 20 6e 6f 74 69 63 | 65 73 20 73 74 61 74 69 |nt notic|es stati| |00000e40| 6e 67 0a 58 20 20 20 20 | 74 68 61 74 20 79 6f 75 |ng.X |that you| |00000e50| 20 63 68 61 6e 67 65 64 | 20 74 68 65 20 66 69 6c | changed| the fil| |00000e60| 65 73 20 61 6e 64 20 74 | 68 65 20 64 61 74 65 20 |es and t|he date | |00000e70| 6f 66 20 61 6e 79 20 63 | 68 61 6e 67 65 3b 20 61 |of any c|hange; a| |00000e80| 6e 64 0a 58 0a 58 20 20 | 20 20 62 29 20 63 61 75 |nd.X.X | b) cau| |00000e90| 73 65 20 74 68 65 20 77 | 68 6f 6c 65 20 6f 66 20 |se the w|hole of | |00000ea0| 61 6e 79 20 77 6f 72 6b | 20 74 68 61 74 20 79 6f |any work| that yo| |00000eb0| 75 20 64 69 73 74 72 69 | 62 75 74 65 20 6f 72 20 |u distri|bute or | |00000ec0| 70 75 62 6c 69 73 68 2c | 0a 58 20 20 20 20 74 68 |publish,|.X th| |00000ed0| 61 74 20 69 6e 20 77 68 | 6f 6c 65 20 6f 72 20 69 |at in wh|ole or i| |00000ee0| 6e 20 70 61 72 74 20 63 | 6f 6e 74 61 69 6e 73 20 |n part c|ontains | |00000ef0| 6f 72 20 69 73 20 61 20 | 64 65 72 69 76 61 74 69 |or is a |derivati| |00000f00| 76 65 20 6f 66 20 74 68 | 69 73 0a 58 20 20 20 20 |ve of th|is.X | |00000f10| 70 72 6f 67 72 61 6d 20 | 6f 72 20 61 6e 79 20 70 |program |or any p| |00000f20| 61 72 74 20 74 68 65 72 | 65 6f 66 2c 20 74 6f 20 |art ther|eof, to | |00000f30| 62 65 20 6c 69 63 65 6e | 73 65 64 20 61 74 20 6e |be licen|sed at n| |00000f40| 6f 20 63 68 61 72 67 65 | 20 74 6f 20 61 6c 6c 0a |o charge| to all.| |00000f50| 58 20 20 20 20 74 68 69 | 72 64 20 70 61 72 74 69 |X thi|rd parti| |00000f60| 65 73 20 6f 6e 20 74 65 | 72 6d 73 20 69 64 65 6e |es on te|rms iden| |00000f70| 74 69 63 61 6c 20 74 6f | 20 74 68 6f 73 65 20 63 |tical to| those c| |00000f80| 6f 6e 74 61 69 6e 65 64 | 20 69 6e 20 74 68 69 73 |ontained| in this| |00000f90| 0a 58 20 20 20 20 4c 69 | 63 65 6e 73 65 20 41 67 |.X Li|cense Ag| |00000fa0| 72 65 65 6d 65 6e 74 20 | 28 65 78 63 65 70 74 20 |reement |(except | |00000fb0| 74 68 61 74 20 79 6f 75 | 20 6d 61 79 20 63 68 6f |that you| may cho| |00000fc0| 6f 73 65 20 74 6f 20 67 | 72 61 6e 74 20 6d 6f 72 |ose to g|rant mor| |00000fd0| 65 20 65 78 74 65 6e 73 | 69 76 65 0a 58 20 20 20 |e extens|ive.X | |00000fe0| 20 77 61 72 72 61 6e 74 | 79 20 70 72 6f 74 65 63 | warrant|y protec| |00000ff0| 74 69 6f 6e 20 74 6f 20 | 73 6f 6d 65 20 6f 72 20 |tion to |some or | |00001000| 61 6c 6c 20 74 68 69 72 | 64 20 70 61 72 74 69 65 |all thir|d partie| |00001010| 73 2c 20 61 74 20 79 6f | 75 72 20 6f 70 74 69 6f |s, at yo|ur optio| |00001020| 6e 29 2e 0a 58 0a 58 20 | 20 20 20 63 29 20 59 6f |n)..X.X | c) Yo| |00001030| 75 20 6d 61 79 20 63 68 | 61 72 67 65 20 61 20 64 |u may ch|arge a d| |00001040| 69 73 74 72 69 62 75 74 | 69 6f 6e 20 66 65 65 20 |istribut|ion fee | |00001050| 66 6f 72 20 74 68 65 20 | 70 68 79 73 69 63 61 6c |for the |physical| |00001060| 20 61 63 74 20 6f 66 0a | 58 20 20 20 20 74 72 61 | act of.|X tra| |00001070| 6e 73 66 65 72 72 69 6e | 67 20 61 20 63 6f 70 79 |nsferrin|g a copy| |00001080| 2c 20 61 6e 64 20 79 6f | 75 20 6d 61 79 20 61 74 |, and yo|u may at| |00001090| 20 79 6f 75 72 20 6f 70 | 74 69 6f 6e 20 6f 66 66 | your op|tion off| |000010a0| 65 72 20 77 61 72 72 61 | 6e 74 79 0a 58 20 20 20 |er warra|nty.X | |000010b0| 20 70 72 6f 74 65 63 74 | 69 6f 6e 20 69 6e 20 65 | protect|ion in e| |000010c0| 78 63 68 61 6e 67 65 20 | 66 6f 72 20 61 20 66 65 |xchange |for a fe| |000010d0| 65 2e 0a 58 0a 58 4d 65 | 72 65 20 61 67 67 72 65 |e..X.XMe|re aggre| |000010e0| 67 61 74 69 6f 6e 20 6f | 66 20 61 6e 6f 74 68 65 |gation o|f anothe| |000010f0| 72 20 75 6e 72 65 6c 61 | 74 65 64 20 70 72 6f 67 |r unrela|ted prog| |00001100| 72 61 6d 20 77 69 74 68 | 20 74 68 69 73 20 70 72 |ram with| this pr| |00001110| 6f 67 72 61 6d 20 28 6f | 72 20 69 74 73 0a 58 64 |ogram (o|r its.Xd| |00001120| 65 72 69 76 61 74 69 76 | 65 29 20 6f 6e 20 61 20 |erivativ|e) on a | |00001130| 76 6f 6c 75 6d 65 20 6f | 66 20 61 20 73 74 6f 72 |volume o|f a stor| |00001140| 61 67 65 20 6f 72 20 64 | 69 73 74 72 69 62 75 74 |age or d|istribut| |00001150| 69 6f 6e 20 6d 65 64 69 | 75 6d 20 64 6f 65 73 20 |ion medi|um does | |00001160| 6e 6f 74 20 62 72 69 6e | 67 0a 58 74 68 65 20 6f |not brin|g.Xthe o| |00001170| 74 68 65 72 20 70 72 6f | 67 72 61 6d 20 75 6e 64 |ther pro|gram und| |00001180| 65 72 20 74 68 65 20 73 | 63 6f 70 65 20 6f 66 20 |er the s|cope of | |00001190| 74 68 65 73 65 20 74 65 | 72 6d 73 2e 0a 58 0a 58 |these te|rms..X.X| |000011a0| 20 20 33 2e 20 59 6f 75 | 20 6d 61 79 20 63 6f 70 | 3. You| may cop| |000011b0| 79 20 61 6e 64 20 64 69 | 73 74 72 69 62 75 74 65 |y and di|stribute| |000011c0| 20 74 68 69 73 20 70 72 | 6f 67 72 61 6d 20 28 6f | this pr|ogram (o| |000011d0| 72 20 61 20 70 6f 72 74 | 69 6f 6e 20 6f 72 20 64 |r a port|ion or d| |000011e0| 65 72 69 76 61 74 69 76 | 65 0a 58 6f 66 20 69 74 |erivativ|e.Xof it| |000011f0| 2c 20 75 6e 64 65 72 20 | 50 61 72 61 67 72 61 70 |, under |Paragrap| |00001200| 68 20 32 29 20 69 6e 20 | 6f 62 6a 65 63 74 20 63 |h 2) in |object c| |00001210| 6f 64 65 20 6f 72 20 65 | 78 65 63 75 74 61 62 6c |ode or e|xecutabl| |00001220| 65 20 66 6f 72 6d 20 75 | 6e 64 65 72 20 74 68 65 |e form u|nder the| |00001230| 20 74 65 72 6d 73 0a 58 | 6f 66 20 50 61 72 61 67 | terms.X|of Parag| |00001240| 72 61 70 68 73 20 31 20 | 61 6e 64 20 32 20 61 62 |raphs 1 |and 2 ab| |00001250| 6f 76 65 20 70 72 6f 76 | 69 64 65 64 20 74 68 61 |ove prov|ided tha| |00001260| 74 20 79 6f 75 20 61 6c | 73 6f 20 64 6f 20 6f 6e |t you al|so do on| |00001270| 65 20 6f 66 20 74 68 65 | 20 66 6f 6c 6c 6f 77 69 |e of the| followi| |00001280| 6e 67 3a 0a 58 0a 58 20 | 20 20 20 61 29 20 61 63 |ng:.X.X | a) ac| |00001290| 63 6f 6d 70 61 6e 79 20 | 69 74 20 77 69 74 68 20 |company |it with | |000012a0| 74 68 65 20 63 6f 6d 70 | 6c 65 74 65 20 63 6f 72 |the comp|lete cor| |000012b0| 72 65 73 70 6f 6e 64 69 | 6e 67 20 6d 61 63 68 69 |respondi|ng machi| |000012c0| 6e 65 2d 72 65 61 64 61 | 62 6c 65 0a 58 20 20 20 |ne-reada|ble.X | |000012d0| 20 73 6f 75 72 63 65 20 | 63 6f 64 65 2c 20 77 68 | source |code, wh| |000012e0| 69 63 68 20 6d 75 73 74 | 20 62 65 20 64 69 73 74 |ich must| be dist| |000012f0| 72 69 62 75 74 65 64 20 | 75 6e 64 65 72 20 74 68 |ributed |under th| |00001300| 65 20 74 65 72 6d 73 20 | 6f 66 0a 58 20 20 20 20 |e terms |of.X | |00001310| 50 61 72 61 67 72 61 70 | 68 73 20 31 20 61 6e 64 |Paragrap|hs 1 and| |00001320| 20 32 20 61 62 6f 76 65 | 3b 20 6f 72 2c 0a 58 0a | 2 above|; or,.X.| |00001330| 58 20 20 20 20 62 29 20 | 61 63 63 6f 6d 70 61 6e |X b) |accompan| |00001340| 79 20 69 74 20 77 69 74 | 68 20 61 20 77 72 69 74 |y it wit|h a writ| |00001350| 74 65 6e 20 6f 66 66 65 | 72 2c 20 76 61 6c 69 64 |ten offe|r, valid| |00001360| 20 66 6f 72 20 61 74 20 | 6c 65 61 73 74 20 74 68 | for at |least th| |00001370| 72 65 65 0a 58 20 20 20 | 20 79 65 61 72 73 2c 20 |ree.X | years, | |00001380| 74 6f 20 67 69 76 65 20 | 61 6e 79 20 74 68 69 72 |to give |any thir| |00001390| 64 20 70 61 72 74 79 20 | 66 72 65 65 20 28 65 78 |d party |free (ex| |000013a0| 63 65 70 74 20 66 6f 72 | 20 61 20 6e 6f 6d 69 6e |cept for| a nomin| |000013b0| 61 6c 0a 58 20 20 20 20 | 73 68 69 70 70 69 6e 67 |al.X |shipping| |000013c0| 20 63 68 61 72 67 65 29 | 20 61 20 63 6f 6d 70 6c | charge)| a compl| |000013d0| 65 74 65 20 6d 61 63 68 | 69 6e 65 2d 72 65 61 64 |ete mach|ine-read| |000013e0| 61 62 6c 65 20 63 6f 70 | 79 20 6f 66 20 74 68 65 |able cop|y of the| |000013f0| 0a 58 20 20 20 20 63 6f | 72 72 65 73 70 6f 6e 64 |.X co|rrespond| |00001400| 69 6e 67 20 73 6f 75 72 | 63 65 20 63 6f 64 65 2c |ing sour|ce code,| |00001410| 20 74 6f 20 62 65 20 64 | 69 73 74 72 69 62 75 74 | to be d|istribut| |00001420| 65 64 20 75 6e 64 65 72 | 20 74 68 65 20 74 65 72 |ed under| the ter| |00001430| 6d 73 20 6f 66 0a 58 20 | 20 20 20 50 61 72 61 67 |ms of.X | Parag| |00001440| 72 61 70 68 73 20 31 20 | 61 6e 64 20 32 20 61 62 |raphs 1 |and 2 ab| |00001450| 6f 76 65 3b 20 6f 72 2c | 0a 58 0a 58 20 20 20 20 |ove; or,|.X.X | |00001460| 63 29 20 61 63 63 6f 6d | 70 61 6e 79 20 69 74 20 |c) accom|pany it | |00001470| 77 69 74 68 20 74 68 65 | 20 69 6e 66 6f 72 6d 61 |with the| informa| |00001480| 74 69 6f 6e 20 79 6f 75 | 20 72 65 63 65 69 76 65 |tion you| receive| |00001490| 64 20 61 73 20 74 6f 20 | 77 68 65 72 65 20 74 68 |d as to |where th| |000014a0| 65 0a 58 20 20 20 20 63 | 6f 72 72 65 73 70 6f 6e |e.X c|orrespon| |000014b0| 64 69 6e 67 20 73 6f 75 | 72 63 65 20 63 6f 64 65 |ding sou|rce code| |000014c0| 20 6d 61 79 20 62 65 20 | 6f 62 74 61 69 6e 65 64 | may be |obtained| |000014d0| 2e 20 20 28 54 68 69 73 | 20 61 6c 74 65 72 6e 61 |. (This| alterna| |000014e0| 74 69 76 65 20 69 73 0a | 58 20 20 20 20 61 6c 6c |tive is.|X all| |000014f0| 6f 77 65 64 20 6f 6e 6c | 79 20 66 6f 72 20 6e 6f |owed onl|y for no| |00001500| 6e 63 6f 6d 6d 65 72 63 | 69 61 6c 20 64 69 73 74 |ncommerc|ial dist| |00001510| 72 69 62 75 74 69 6f 6e | 20 61 6e 64 20 6f 6e 6c |ribution| and onl| |00001520| 79 20 69 66 20 79 6f 75 | 0a 58 20 20 20 20 72 65 |y if you|.X re| |00001530| 63 65 69 76 65 64 20 74 | 68 65 20 70 72 6f 67 72 |ceived t|he progr| |00001540| 61 6d 20 69 6e 20 6f 62 | 6a 65 63 74 20 63 6f 64 |am in ob|ject cod| |00001550| 65 20 6f 72 20 65 78 65 | 63 75 74 61 62 6c 65 20 |e or exe|cutable | |00001560| 66 6f 72 6d 20 61 6c 6f | 6e 65 2e 29 0a 58 0a 58 |form alo|ne.).X.X| |00001570| 46 6f 72 20 61 6e 20 65 | 78 65 63 75 74 61 62 6c |For an e|xecutabl| |00001580| 65 20 66 69 6c 65 2c 20 | 63 6f 6d 70 6c 65 74 65 |e file, |complete| |00001590| 20 73 6f 75 72 63 65 20 | 63 6f 64 65 20 6d 65 61 | source |code mea| |000015a0| 6e 73 20 61 6c 6c 20 74 | 68 65 20 73 6f 75 72 63 |ns all t|he sourc| |000015b0| 65 20 63 6f 64 65 20 66 | 6f 72 0a 58 61 6c 6c 20 |e code f|or.Xall | |000015c0| 6d 6f 64 75 6c 65 73 20 | 69 74 20 63 6f 6e 74 61 |modules |it conta| |000015d0| 69 6e 73 3b 20 62 75 74 | 2c 20 61 73 20 61 20 73 |ins; but|, as a s| |000015e0| 70 65 63 69 61 6c 20 65 | 78 63 65 70 74 69 6f 6e |pecial e|xception| |000015f0| 2c 20 69 74 20 6e 65 65 | 64 20 6e 6f 74 20 69 6e |, it nee|d not in| |00001600| 63 6c 75 64 65 0a 58 73 | 6f 75 72 63 65 20 63 6f |clude.Xs|ource co| |00001610| 64 65 20 66 6f 72 20 6d | 6f 64 75 6c 65 73 20 77 |de for m|odules w| |00001620| 68 69 63 68 20 61 72 65 | 20 73 74 61 6e 64 61 72 |hich are| standar| |00001630| 64 20 6c 69 62 72 61 72 | 69 65 73 20 74 68 61 74 |d librar|ies that| |00001640| 20 61 63 63 6f 6d 70 61 | 6e 79 20 74 68 65 0a 58 | accompa|ny the.X| |00001650| 6f 70 65 72 61 74 69 6e | 67 20 73 79 73 74 65 6d |operatin|g system| |00001660| 20 6f 6e 20 77 68 69 63 | 68 20 74 68 65 20 65 78 | on whic|h the ex| |00001670| 65 63 75 74 61 62 6c 65 | 20 66 69 6c 65 20 72 75 |ecutable| file ru| |00001680| 6e 73 2e 0a 58 0a 58 20 | 20 34 2e 20 59 6f 75 20 |ns..X.X | 4. You | |00001690| 6d 61 79 20 6e 6f 74 20 | 63 6f 70 79 2c 20 73 75 |may not |copy, su| |000016a0| 62 6c 69 63 65 6e 73 65 | 2c 20 64 69 73 74 72 69 |blicense|, distri| |000016b0| 62 75 74 65 20 6f 72 20 | 74 72 61 6e 73 66 65 72 |bute or |transfer| |000016c0| 20 74 68 69 73 20 70 72 | 6f 67 72 61 6d 0a 58 65 | this pr|ogram.Xe| |000016d0| 78 63 65 70 74 20 61 73 | 20 65 78 70 72 65 73 73 |xcept as| express| |000016e0| 6c 79 20 70 72 6f 76 69 | 64 65 64 20 75 6e 64 65 |ly provi|ded unde| |000016f0| 72 20 74 68 69 73 20 4c | 69 63 65 6e 73 65 20 41 |r this L|icense A| |00001700| 67 72 65 65 6d 65 6e 74 | 2e 20 20 41 6e 79 20 61 |greement|. Any a| |00001710| 74 74 65 6d 70 74 0a 58 | 6f 74 68 65 72 77 69 73 |ttempt.X|otherwis| |00001720| 65 20 74 6f 20 63 6f 70 | 79 2c 20 73 75 62 6c 69 |e to cop|y, subli| |00001730| 63 65 6e 73 65 2c 20 64 | 69 73 74 72 69 62 75 74 |cense, d|istribut| |00001740| 65 20 6f 72 20 74 72 61 | 6e 73 66 65 72 20 74 68 |e or tra|nsfer th| |00001750| 69 73 20 70 72 6f 67 72 | 61 6d 20 69 73 20 76 6f |is progr|am is vo| |00001760| 69 64 20 61 6e 64 0a 58 | 79 6f 75 72 20 72 69 67 |id and.X|your rig| |00001770| 68 74 73 20 74 6f 20 75 | 73 65 20 74 68 65 20 70 |hts to u|se the p| |00001780| 72 6f 67 72 61 6d 20 75 | 6e 64 65 72 20 74 68 69 |rogram u|nder thi| |00001790| 73 20 4c 69 63 65 6e 73 | 65 20 61 67 72 65 65 6d |s Licens|e agreem| |000017a0| 65 6e 74 20 73 68 61 6c | 6c 20 62 65 0a 58 61 75 |ent shal|l be.Xau| |000017b0| 74 6f 6d 61 74 69 63 61 | 6c 6c 79 20 74 65 72 6d |tomatica|lly term| |000017c0| 69 6e 61 74 65 64 2e 20 | 20 48 6f 77 65 76 65 72 |inated. | However| |000017d0| 2c 20 70 61 72 74 69 65 | 73 20 77 68 6f 20 68 61 |, partie|s who ha| |000017e0| 76 65 20 72 65 63 65 69 | 76 65 64 20 63 6f 6d 70 |ve recei|ved comp| |000017f0| 75 74 65 72 0a 58 73 6f | 66 74 77 61 72 65 20 70 |uter.Xso|ftware p| |00001800| 72 6f 67 72 61 6d 73 20 | 66 72 6f 6d 20 79 6f 75 |rograms |from you| |00001810| 20 77 69 74 68 20 74 68 | 69 73 20 4c 69 63 65 6e | with th|is Licen| |00001820| 73 65 20 41 67 72 65 65 | 6d 65 6e 74 20 77 69 6c |se Agree|ment wil| |00001830| 6c 20 6e 6f 74 20 68 61 | 76 65 0a 58 74 68 65 69 |l not ha|ve.Xthei| |00001840| 72 20 6c 69 63 65 6e 73 | 65 73 20 74 65 72 6d 69 |r licens|es termi| |00001850| 6e 61 74 65 64 20 73 6f | 20 6c 6f 6e 67 20 61 73 |nated so| long as| |00001860| 20 73 75 63 68 20 70 61 | 72 74 69 65 73 20 72 65 | such pa|rties re| |00001870| 6d 61 69 6e 20 69 6e 20 | 66 75 6c 6c 20 63 6f 6d |main in |full com| |00001880| 70 6c 69 61 6e 63 65 2e | 0a 58 0a 58 20 20 35 2e |pliance.|.X.X 5.| |00001890| 20 49 66 20 79 6f 75 20 | 77 69 73 68 20 74 6f 20 | If you |wish to | |000018a0| 69 6e 63 6f 72 70 6f 72 | 61 74 65 20 70 61 72 74 |incorpor|ate part| |000018b0| 73 20 6f 66 20 74 68 69 | 73 20 70 72 6f 67 72 61 |s of thi|s progra| |000018c0| 6d 20 69 6e 74 6f 20 6f | 74 68 65 72 20 66 72 65 |m into o|ther fre| |000018d0| 65 0a 58 70 72 6f 67 72 | 61 6d 73 20 77 68 6f 73 |e.Xprogr|ams whos| |000018e0| 65 20 64 69 73 74 72 69 | 62 75 74 69 6f 6e 20 63 |e distri|bution c| |000018f0| 6f 6e 64 69 74 69 6f 6e | 73 20 61 72 65 20 64 69 |ondition|s are di| |00001900| 66 66 65 72 65 6e 74 2c | 20 77 72 69 74 65 20 74 |fferent,| write t| |00001910| 6f 20 74 68 65 20 46 72 | 65 65 0a 58 53 6f 66 74 |o the Fr|ee.XSoft| |00001920| 77 61 72 65 20 46 6f 75 | 6e 64 61 74 69 6f 6e 20 |ware Fou|ndation | |00001930| 61 74 20 36 37 35 20 4d | 61 73 73 20 41 76 65 2c |at 675 M|ass Ave,| |00001940| 20 43 61 6d 62 72 69 64 | 67 65 2c 20 4d 41 20 30 | Cambrid|ge, MA 0| |00001950| 32 31 33 39 2e 20 20 57 | 65 20 68 61 76 65 20 6e |2139. W|e have n| |00001960| 6f 74 20 79 65 74 0a 58 | 77 6f 72 6b 65 64 20 6f |ot yet.X|worked o| |00001970| 75 74 20 61 20 73 69 6d | 70 6c 65 20 72 75 6c 65 |ut a sim|ple rule| |00001980| 20 74 68 61 74 20 63 61 | 6e 20 62 65 20 73 74 61 | that ca|n be sta| |00001990| 74 65 64 20 68 65 72 65 | 2c 20 62 75 74 20 77 65 |ted here|, but we| |000019a0| 20 77 69 6c 6c 20 6f 66 | 74 65 6e 20 70 65 72 6d | will of|ten perm| |000019b0| 69 74 0a 58 74 68 69 73 | 2e 20 20 57 65 20 77 69 |it.Xthis|. We wi| |000019c0| 6c 6c 20 62 65 20 67 75 | 69 64 65 64 20 62 79 20 |ll be gu|ided by | |000019d0| 74 68 65 20 74 77 6f 20 | 67 6f 61 6c 73 20 6f 66 |the two |goals of| |000019e0| 20 70 72 65 73 65 72 76 | 69 6e 67 20 74 68 65 20 | preserv|ing the | |000019f0| 66 72 65 65 20 73 74 61 | 74 75 73 20 6f 66 0a 58 |free sta|tus of.X| |00001a00| 61 6c 6c 20 64 65 72 69 | 76 61 74 69 76 65 73 20 |all deri|vatives | |00001a10| 6f 66 20 6f 75 72 20 66 | 72 65 65 20 73 6f 66 74 |of our f|ree soft| |00001a20| 77 61 72 65 20 61 6e 64 | 20 6f 66 20 70 72 6f 6d |ware and| of prom| |00001a30| 6f 74 69 6e 67 20 74 68 | 65 20 73 68 61 72 69 6e |oting th|e sharin| |00001a40| 67 20 61 6e 64 20 72 65 | 75 73 65 20 6f 66 0a 58 |g and re|use of.X| |00001a50| 73 6f 66 74 77 61 72 65 | 2e 0a 58 0a 58 20 49 6e |software|..X.X In| |00001a60| 20 6f 74 68 65 72 20 77 | 6f 72 64 73 2c 20 79 6f | other w|ords, yo| |00001a70| 75 20 61 72 65 20 77 65 | 6c 63 6f 6d 65 20 74 6f |u are we|lcome to| |00001a80| 20 75 73 65 2c 20 73 68 | 61 72 65 20 61 6e 64 20 | use, sh|are and | |00001a90| 69 6d 70 72 6f 76 65 20 | 74 68 69 73 20 70 72 6f |improve |this pro| |00001aa0| 67 72 61 6d 2e 0a 58 20 | 59 6f 75 20 61 72 65 20 |gram..X |You are | |00001ab0| 66 6f 72 62 69 64 64 65 | 6e 20 74 6f 20 66 6f 72 |forbidde|n to for| |00001ac0| 62 69 64 20 61 6e 79 6f | 6e 65 20 65 6c 73 65 20 |bid anyo|ne else | |00001ad0| 74 6f 20 75 73 65 2c 20 | 73 68 61 72 65 20 61 6e |to use, |share an| |00001ae0| 64 20 69 6d 70 72 6f 76 | 65 0a 58 20 77 68 61 74 |d improv|e.X what| |00001af0| 20 79 6f 75 20 67 69 76 | 65 20 74 68 65 6d 2e 20 | you giv|e them. | |00001b00| 20 20 48 65 6c 70 20 73 | 74 61 6d 70 20 6f 75 74 | Help s|tamp out| |00001b10| 20 73 6f 66 74 77 61 72 | 65 2d 68 6f 61 72 64 69 | softwar|e-hoardi| |00001b20| 6e 67 21 20 20 2a 2f 0a | 58 0a 58 0a 58 23 69 6e |ng! */.|X.X.X#in| |00001b30| 63 6c 75 64 65 20 3c 73 | 74 64 69 6f 2e 68 3e 0a |clude <s|tdio.h>.| |00001b40| 58 23 69 6e 63 6c 75 64 | 65 20 3c 63 74 79 70 65 |X#includ|e <ctype| |00001b50| 2e 68 3e 0a 58 0a 58 23 | 69 66 64 65 66 20 56 4d |.h>.X.X#|ifdef VM| |00001b60| 53 0a 58 23 69 6e 63 6c | 75 64 65 20 3c 66 69 6c |S.X#incl|ude <fil| |00001b70| 65 2e 68 3e 0a 58 0a 58 | 23 64 65 66 69 6e 65 20 |e.h>.X.X|#define | |00001b80| 45 58 49 54 5f 53 55 43 | 43 45 53 53 20 28 28 31 |EXIT_SUC|CESS ((1| |00001b90| 20 3c 3c 20 32 38 29 20 | 7c 20 31 29 0a 58 23 64 | << 28) || 1).X#d| |00001ba0| 65 66 69 6e 65 20 45 58 | 49 54 5f 46 41 54 41 4c |efine EX|IT_FATAL| |00001bb0| 20 28 28 31 20 3c 3c 20 | 32 38 29 20 7c 20 34 29 | ((1 << |28) | 4)| |00001bc0| 0a 58 23 64 65 66 69 6e | 65 20 75 6e 6c 69 6e 6b |.X#defin|e unlink| |00001bd0| 20 64 65 6c 65 74 65 0a | 58 23 64 65 66 69 6e 65 | delete.|X#define| |00001be0| 20 74 65 6c 6c 28 66 64 | 29 20 6c 73 65 65 6b 28 | tell(fd|) lseek(| |00001bf0| 66 64 2c 20 30 4c 2c 20 | 31 29 0a 58 23 65 6c 73 |fd, 0L, |1).X#els| |00001c00| 65 0a 58 23 69 6e 63 6c | 75 64 65 20 3c 73 79 73 |e.X#incl|ude <sys| |00001c10| 2f 66 69 6c 65 2e 68 3e | 0a 58 0a 58 23 64 65 66 |/file.h>|.X.X#def| |00001c20| 69 6e 65 20 45 58 49 54 | 5f 53 55 43 43 45 53 53 |ine EXIT|_SUCCESS| |00001c30| 20 30 0a 58 23 64 65 66 | 69 6e 65 20 45 58 49 54 | 0.X#def|ine EXIT| |00001c40| 5f 46 41 54 41 4c 20 31 | 0a 58 23 65 6e 64 69 66 |_FATAL 1|.X#endif| |00001c50| 0a 58 0a 58 0a 58 23 69 | 66 6e 64 65 66 20 4c 5f |.X.X.X#i|fndef L_| |00001c60| 58 54 4e 44 0a 58 23 64 | 65 66 69 6e 65 20 4c 5f |XTND.X#d|efine L_| |00001c70| 58 54 4e 44 20 32 0a 58 | 23 65 6e 64 69 66 0a 58 |XTND 2.X|#endif.X| |00001c80| 0a 58 2f 2a 20 57 68 65 | 6e 20 73 6f 72 74 69 6e |.X/* Whe|n sortin| |00001c90| 67 20 69 6e 20 63 6f 72 | 65 2c 20 74 68 69 73 20 |g in cor|e, this | |00001ca0| 73 74 72 75 63 74 75 72 | 65 20 64 65 73 63 72 69 |structur|e descri| |00001cb0| 62 65 73 20 6f 6e 65 20 | 6c 69 6e 65 0a 58 20 61 |bes one |line.X a| |00001cc0| 6e 64 20 74 68 65 20 70 | 6f 73 69 74 69 6f 6e 20 |nd the p|osition | |00001cd0| 61 6e 64 20 6c 65 6e 67 | 74 68 20 6f 66 20 69 74 |and leng|th of it| |00001ce0| 73 20 66 69 72 73 74 20 | 6b 65 79 66 69 65 6c 64 |s first |keyfield| |00001cf0| 2e 20 20 2a 2f 0a 58 0a | 58 73 74 72 75 63 74 20 |. */.X.|Xstruct | |00001d00| 6c 69 6e 65 69 6e 66 6f | 0a 58 20 20 7b 0a 58 20 |lineinfo|.X {.X | |00001d10| 20 20 20 63 68 61 72 20 | 2a 74 65 78 74 3b 09 09 | char |*text;..| |00001d20| 2f 2a 20 54 68 65 20 61 | 63 74 75 61 6c 20 74 65 |/* The a|ctual te| |00001d30| 78 74 20 6f 66 20 74 68 | 65 20 6c 69 6e 65 20 2a |xt of th|e line *| |00001d40| 2f 0a 58 20 20 20 20 75 | 6e 69 6f 6e 0a 58 20 20 |/.X u|nion.X | |00001d50| 20 20 20 20 7b 09 09 09 | 2f 2a 20 54 68 65 20 73 | {...|/* The s| |00001d60| 74 61 72 74 20 6f 66 20 | 74 68 65 20 6b 65 79 20 |tart of |the key | |00001d70| 28 66 6f 72 20 74 65 78 | 74 75 61 6c 20 63 6f 6d |(for tex|tual com| |00001d80| 70 61 72 69 73 6f 6e 29 | 20 2a 2f 0a 58 09 63 68 |parison)| */.X.ch| |00001d90| 61 72 20 2a 74 65 78 74 | 3b 0a 58 09 6c 6f 6e 67 |ar *text|;.X.long| |00001da0| 20 6e 75 6d 62 65 72 3b | 09 2f 2a 20 6f 72 20 74 | number;|./* or t| |00001db0| 68 65 20 6e 75 6d 65 72 | 69 63 20 76 61 6c 75 65 |he numer|ic value| |00001dc0| 20 28 66 6f 72 20 6e 75 | 6d 65 72 69 63 20 63 6f | (for nu|meric co| |00001dd0| 6d 70 61 72 69 73 6f 6e | 29 20 2a 2f 0a 58 20 20 |mparison|) */.X | |00001de0| 20 20 20 20 7d 20 6b 65 | 79 3b 0a 58 20 20 20 20 | } ke|y;.X | |00001df0| 6c 6f 6e 67 20 6b 65 79 | 6c 65 6e 3b 09 2f 2a 20 |long key|len;./* | |00001e00| 4c 65 6e 67 74 68 20 6f | 66 20 6b 65 79 20 66 69 |Length o|f key fi| |00001e10| 65 6c 64 20 2a 2f 0a 58 | 20 20 7d 3b 0a 58 0a 58 |eld */.X| };.X.X| |00001e20| 2f 2a 20 54 68 69 73 20 | 73 74 72 75 63 74 75 72 |/* This |structur| |00001e30| 65 20 64 65 73 63 72 69 | 62 65 73 20 61 20 66 69 |e descri|bes a fi| |00001e40| 65 6c 64 20 74 6f 20 75 | 73 65 20 61 73 20 61 20 |eld to u|se as a | |00001e50| 73 6f 72 74 20 6b 65 79 | 20 2a 2f 0a 58 0a 58 73 |sort key| */.X.Xs| |00001e60| 74 72 75 63 74 20 6b 65 | 79 66 69 65 6c 64 0a 58 |truct ke|yfield.X| |00001e70| 20 20 7b 0a 58 20 20 20 | 20 69 6e 74 20 73 74 61 | {.X | int sta| |00001e80| 72 74 77 6f 72 64 73 3b | 09 09 2f 2a 20 23 20 77 |rtwords;|../* # w| |00001e90| 6f 72 64 73 20 74 6f 20 | 73 6b 69 70 20 20 2a 2f |ords to |skip */| |00001ea0| 0a 58 20 20 20 20 69 6e | 74 20 73 74 61 72 74 63 |.X in|t startc| |00001eb0| 68 61 72 73 3b 09 09 2f | 2a 20 20 61 6e 64 20 23 |hars;../|* and #| |00001ec0| 20 61 64 64 69 74 69 6f | 6e 61 6c 20 63 68 61 72 | additio|nal char| |00001ed0| 73 20 74 6f 20 73 6b 69 | 70 2c 20 74 6f 20 73 74 |s to ski|p, to st| |00001ee0| 61 72 74 20 6f 66 20 66 | 69 65 6c 64 20 2a 2f 0a |art of f|ield */.| |00001ef0| 58 20 20 20 20 69 6e 74 | 20 65 6e 64 77 6f 72 64 |X int| endword| |00001f00| 73 3b 09 09 2f 2a 20 73 | 69 6d 69 6c 61 72 2c 20 |s;../* s|imilar, | |00001f10| 66 72 6f 6d 20 62 65 67 | 20 28 6f 72 20 65 6e 64 |from beg| (or end| |00001f20| 29 20 6f 66 20 6c 69 6e | 65 2c 20 74 6f 20 66 69 |) of lin|e, to fi| |00001f30| 6e 64 20 65 6e 64 20 6f | 66 20 66 69 65 6c 64 20 |nd end o|f field | |00001f40| 2a 2f 0a 58 20 20 20 20 | 69 6e 74 20 65 6e 64 63 |*/.X |int endc| |00001f50| 68 61 72 73 3b 0a 58 20 | 20 20 20 63 68 61 72 20 |hars;.X | char | |00001f60| 69 67 6e 6f 72 65 5f 62 | 6c 61 6e 6b 73 3b 09 09 |ignore_b|lanks;..| |00001f70| 2f 2a 20 49 67 6e 6f 72 | 65 20 73 70 61 63 65 73 |/* Ignor|e spaces| |00001f80| 20 61 6e 64 20 74 61 62 | 73 20 77 69 74 68 69 6e | and tab|s within| |00001f90| 20 74 68 65 20 66 69 65 | 6c 64 20 2a 2f 0a 58 20 | the fie|ld */.X | |00001fa0| 20 20 20 63 68 61 72 20 | 66 6f 6c 64 5f 63 61 73 | char |fold_cas| |00001fb0| 65 3b 09 09 2f 2a 20 43 | 6f 6e 76 65 72 74 20 75 |e;../* C|onvert u| |00001fc0| 70 70 65 72 20 63 61 73 | 65 20 74 6f 20 6c 6f 77 |pper cas|e to low| |00001fd0| 65 72 20 62 65 66 6f 72 | 65 20 63 6f 6d 70 61 72 |er befor|e compar| |00001fe0| 69 6e 67 20 2a 2f 0a 58 | 20 20 20 20 63 68 61 72 |ing */.X| char| |00001ff0| 20 72 65 76 65 72 73 65 | 3b 09 09 2f 2a 20 43 6f | reverse|;../* Co| |00002000| 6d 70 61 72 65 20 69 6e | 20 72 65 76 65 72 73 65 |mpare in| reverse| |00002010| 20 6f 72 64 65 72 20 2a | 2f 0a 58 20 20 20 20 63 | order *|/.X c| |00002020| 68 61 72 20 6e 75 6d 65 | 72 69 63 3b 09 09 2f 2a |har nume|ric;../*| |00002030| 20 50 61 72 73 65 20 74 | 65 78 74 20 61 73 20 61 | Parse t|ext as a| |00002040| 6e 20 69 6e 74 65 67 65 | 72 20 61 6e 64 20 63 6f |n intege|r and co| |00002050| 6d 70 61 72 65 20 74 68 | 65 20 69 6e 74 65 67 65 |mpare th|e intege| |00002060| 72 73 20 2a 2f 0a 58 20 | 20 20 20 63 68 61 72 20 |rs */.X | char | |00002070| 70 6f 73 69 74 69 6f 6e | 61 6c 3b 09 09 2f 2a 20 |position|al;../* | |00002080| 53 6f 72 74 20 61 63 63 | 6f 72 64 69 6e 67 20 74 |Sort acc|ording t| |00002090| 6f 20 70 6f 73 69 74 69 | 6f 6e 20 77 69 74 68 69 |o positi|on withi| |000020a0| 6e 20 74 68 65 20 66 69 | 6c 65 20 2a 2f 0a 58 20 |n the fi|le */.X | |000020b0| 20 20 20 63 68 61 72 20 | 62 72 61 63 65 64 3b 09 | char |braced;.| |000020c0| 09 2f 2a 20 43 6f 75 6e | 74 20 62 61 6c 61 6e 63 |./* Coun|t balanc| |000020d0| 65 64 2d 62 72 61 63 65 | 64 20 67 72 6f 75 70 69 |ed-brace|d groupi| |000020e0| 6e 67 73 20 61 73 20 66 | 69 65 6c 64 73 20 2a 2f |ngs as f|ields */| |000020f0| 0a 58 20 20 7d 3b 0a 58 | 0a 58 2f 2a 20 56 65 63 |.X };.X|.X/* Vec| |00002100| 74 6f 72 20 6f 66 20 6b | 65 79 66 69 65 6c 64 73 |tor of k|eyfields| |00002110| 20 74 6f 20 75 73 65 20 | 2a 2f 0a 58 0a 58 73 74 | to use |*/.X.Xst| |00002120| 72 75 63 74 20 6b 65 79 | 66 69 65 6c 64 20 6b 65 |ruct key|field ke| |00002130| 79 66 69 65 6c 64 73 5b | 33 5d 3b 0a 58 0a 58 2f |yfields[|3];.X.X/| |00002140| 2a 20 4e 75 6d 62 65 72 | 20 6f 66 20 6b 65 79 66 |* Number| of keyf| |00002150| 69 65 6c 64 73 20 73 74 | 6f 72 65 64 20 69 6e 20 |ields st|ored in | |00002160| 74 68 61 74 20 76 65 63 | 74 6f 72 2e 20 20 2a 2f |that vec|tor. */| |00002170| 0a 58 0a 58 69 6e 74 20 | 6e 75 6d 5f 6b 65 79 66 |.X.Xint |num_keyf| |00002180| 69 65 6c 64 73 20 3d 20 | 33 3b 0a 58 0a 58 2f 2a |ields = |3;.X.X/*| |00002190| 20 56 65 63 74 6f 72 20 | 6f 66 20 69 6e 70 75 74 | Vector |of input| |000021a0| 20 66 69 6c 65 20 6e 61 | 6d 65 73 2c 20 74 65 72 | file na|mes, ter| |000021b0| 6d 69 6e 61 74 65 64 20 | 77 69 74 68 20 61 20 7a |minated |with a z| |000021c0| 65 72 6f 20 28 6e 75 6c | 6c 20 70 6f 69 6e 74 65 |ero (nul|l pointe| |000021d0| 72 29 20 2a 2f 0a 58 0a | 58 63 68 61 72 20 2a 2a |r) */.X.|Xchar **| |000021e0| 69 6e 66 69 6c 65 73 3b | 0a 58 0a 58 2f 2a 20 56 |infiles;|.X.X/* V| |000021f0| 65 63 74 6f 72 20 6f 66 | 20 63 6f 72 72 65 73 70 |ector of| corresp| |00002200| 6f 6e 64 69 6e 67 20 6f | 75 74 70 75 74 20 66 69 |onding o|utput fi| |00002210| 6c 65 20 6e 61 6d 65 73 | 2c 20 6f 72 20 7a 65 72 |le names|, or zer| |00002220| 6f 20 6d 65 61 6e 69 6e | 67 20 64 65 66 61 75 6c |o meanin|g defaul| |00002230| 74 20 69 74 20 2a 2f 0a | 58 0a 58 63 68 61 72 20 |t it */.|X.Xchar | |00002240| 2a 2a 6f 75 74 66 69 6c | 65 73 3b 0a 58 0a 58 2f |**outfil|es;.X.X/| |00002250| 2a 20 4c 65 6e 67 74 68 | 20 6f 66 20 60 69 6e 66 |* Length| of `inf| |00002260| 69 6c 65 73 27 20 2a 2f | 0a 58 0a 58 69 6e 74 20 |iles' */|.X.Xint | |00002270| 6e 75 6d 5f 69 6e 66 69 | 6c 65 73 3b 0a 58 0a 58 |num_infi|les;.X.X| |00002280| 2f 2a 20 50 6f 69 6e 74 | 65 72 20 74 6f 20 74 68 |/* Point|er to th| |00002290| 65 20 61 72 72 61 79 20 | 6f 66 20 70 6f 69 6e 74 |e array |of point| |000022a0| 65 72 73 20 74 6f 20 6c | 69 6e 65 73 20 62 65 69 |ers to l|ines bei| |000022b0| 6e 67 20 73 6f 72 74 65 | 64 20 2a 2f 0a 58 0a 58 |ng sorte|d */.X.X| |000022c0| 63 68 61 72 20 2a 2a 6c | 69 6e 65 61 72 72 61 79 |char **l|inearray| |000022d0| 3b 0a 58 0a 58 2f 2a 20 | 54 68 65 20 61 6c 6c 6f |;.X.X/* |The allo| |000022e0| 63 61 74 65 64 20 6c 65 | 6e 67 74 68 20 6f 66 20 |cated le|ngth of | |000022f0| 60 6c 69 6e 65 61 72 72 | 61 79 27 2e 20 2a 2f 0a |`linearr|ay'. */.| |00002300| 58 0a 58 6c 6f 6e 67 20 | 6c 69 6e 65 73 3b 0a 58 |X.Xlong |lines;.X| |00002310| 0a 58 2f 2a 20 44 69 72 | 65 63 74 6f 72 79 20 74 |.X/* Dir|ectory t| |00002320| 6f 20 75 73 65 20 66 6f | 72 20 74 65 6d 70 6f 72 |o use fo|r tempor| |00002330| 61 72 79 20 66 69 6c 65 | 73 2e 20 20 4f 6e 20 55 |ary file|s. On U| |00002340| 6e 69 78 2c 20 69 74 20 | 65 6e 64 73 20 77 69 74 |nix, it |ends wit| |00002350| 68 20 61 20 73 6c 61 73 | 68 2e 20 20 2a 2f 0a 58 |h a slas|h. */.X| |00002360| 0a 58 63 68 61 72 20 2a | 74 65 6d 70 64 69 72 3b |.Xchar *|tempdir;| |00002370| 0a 58 0a 58 2f 2a 20 53 | 74 61 72 74 20 6f 66 20 |.X.X/* S|tart of | |00002380| 66 69 6c 65 6e 61 6d 65 | 20 74 6f 20 75 73 65 20 |filename| to use | |00002390| 66 6f 72 20 74 65 6d 70 | 6f 72 61 72 79 20 66 69 |for temp|orary fi| |000023a0| 6c 65 73 2e 20 20 2a 2f | 0a 58 0a 58 63 68 61 72 |les. */|.X.Xchar| |000023b0| 20 2a 74 65 6d 70 62 61 | 73 65 3b 0a 58 0a 58 2f | *tempba|se;.X.X/| |000023c0| 2a 20 4e 75 6d 62 65 72 | 20 6f 66 20 6c 61 73 74 |* Number| of last| |000023d0| 20 74 65 6d 70 6f 72 61 | 72 79 20 66 69 6c 65 2e | tempora|ry file.| |000023e0| 20 20 2a 2f 0a 58 0a 58 | 69 6e 74 20 74 65 6d 70 | */.X.X|int temp| |000023f0| 63 6f 75 6e 74 3b 0a 58 | 0a 58 2f 2a 20 4e 75 6d |count;.X|.X/* Num| |00002400| 62 65 72 20 6f 66 20 6c | 61 73 74 20 74 65 6d 70 |ber of l|ast temp| |00002410| 6f 72 61 72 79 20 66 69 | 6c 65 20 61 6c 72 65 61 |orary fi|le alrea| |00002420| 64 79 20 64 65 6c 65 74 | 65 64 2e 0a 58 20 54 65 |dy delet|ed..X Te| |00002430| 6d 70 6f 72 61 72 79 20 | 66 69 6c 65 73 20 61 72 |mporary |files ar| |00002440| 65 20 64 65 6c 65 74 65 | 64 20 62 79 20 60 66 6c |e delete|d by `fl| |00002450| 75 73 68 5f 74 65 6d 70 | 66 69 6c 65 73 27 20 69 |ush_temp|files' i| |00002460| 6e 20 6f 72 64 65 72 20 | 6f 66 20 63 72 65 61 74 |n order |of creat| |00002470| 69 6f 6e 2e 20 20 2a 2f | 0a 58 0a 58 69 6e 74 20 |ion. */|.X.Xint | |00002480| 6c 61 73 74 5f 64 65 6c | 65 74 65 64 5f 74 65 6d |last_del|eted_tem| |00002490| 70 63 6f 75 6e 74 3b 0a | 58 0a 58 2f 2a 20 44 75 |pcount;.|X.X/* Du| |000024a0| 72 69 6e 67 20 69 6e 2d | 63 6f 72 65 20 73 6f 72 |ring in-|core sor| |000024b0| 74 2c 20 74 68 69 73 20 | 70 6f 69 6e 74 73 20 74 |t, this |points t| |000024c0| 6f 20 74 68 65 20 62 61 | 73 65 20 6f 66 20 74 68 |o the ba|se of th| |000024d0| 65 20 64 61 74 61 20 62 | 6c 6f 63 6b 0a 58 20 77 |e data b|lock.X w| |000024e0| 68 69 63 68 20 63 6f 6e | 74 61 69 6e 73 20 61 6c |hich con|tains al| |000024f0| 6c 20 74 68 65 20 6c 69 | 6e 65 73 20 6f 66 20 64 |l the li|nes of d| |00002500| 61 74 61 2e 20 20 2a 2f | 0a 58 0a 58 63 68 61 72 |ata. */|.X.Xchar| |00002510| 20 2a 74 65 78 74 5f 62 | 61 73 65 3b 0a 58 0a 58 | *text_b|ase;.X.X| |00002520| 2f 2a 20 41 64 64 69 74 | 69 6f 6e 61 6c 20 63 6f |/* Addit|ional co| |00002530| 6d 6d 61 6e 64 20 73 77 | 69 74 63 68 65 73 20 2a |mmand sw|itches *| |00002540| 2f 0a 58 0a 58 69 6e 74 | 20 6b 65 65 70 5f 74 65 |/.X.Xint| keep_te| |00002550| 6d 70 66 69 6c 65 73 3b | 09 2f 2a 20 4e 6f 6e 7a |mpfiles;|./* Nonz| |00002560| 65 72 6f 20 6d 65 61 6e | 73 20 64 6f 20 6e 6f 74 |ero mean|s do not| |00002570| 20 64 65 6c 65 74 65 20 | 74 65 6d 70 66 69 6c 65 | delete |tempfile| |00002580| 73 20 2d 2d 20 66 6f 72 | 20 64 65 62 75 67 67 69 |s -- for| debuggi| |00002590| 6e 67 20 2a 2f 0a 58 0a | 58 2f 2a 20 46 6f 72 77 |ng */.X.|X/* Forw| |000025a0| 61 72 64 20 64 65 63 6c | 61 72 61 74 69 6f 6e 73 |ard decl|arations| |000025b0| 20 6f 66 20 66 75 6e 63 | 74 69 6f 6e 73 20 69 6e | of func|tions in| |000025c0| 20 74 68 69 73 20 66 69 | 6c 65 20 2a 2f 0a 58 0a | this fi|le */.X.| |000025d0| 58 76 6f 69 64 20 64 65 | 63 6f 64 65 5f 63 6f 6d |Xvoid de|code_com| |000025e0| 6d 61 6e 64 20 28 29 3b | 0a 58 76 6f 69 64 20 73 |mand ();|.Xvoid s| |000025f0| 6f 72 74 5f 69 6e 5f 63 | 6f 72 65 20 28 29 3b 0a |ort_in_c|ore ();.| |00002600| 58 76 6f 69 64 20 73 6f | 72 74 5f 6f 66 66 6c 69 |Xvoid so|rt_offli| |00002610| 6e 65 20 28 29 3b 0a 58 | 63 68 61 72 20 2a 2a 70 |ne ();.X|char **p| |00002620| 61 72 73 65 66 69 6c 65 | 20 28 29 3b 0a 58 63 68 |arsefile| ();.Xch| |00002630| 61 72 20 2a 66 69 6e 64 | 5f 66 69 65 6c 64 20 28 |ar *find|_field (| |00002640| 29 3b 0a 58 63 68 61 72 | 20 2a 66 69 6e 64 5f 70 |);.Xchar| *find_p| |00002650| 6f 73 20 28 29 3b 0a 58 | 6c 6f 6e 67 20 66 69 6e |os ();.X|long fin| |00002660| 64 5f 76 61 6c 75 65 20 | 28 29 3b 0a 58 63 68 61 |d_value |();.Xcha| |00002670| 72 20 2a 66 69 6e 64 5f | 62 72 61 63 65 64 5f 70 |r *find_|braced_p| |00002680| 6f 73 20 28 29 3b 0a 58 | 63 68 61 72 20 2a 66 69 |os ();.X|char *fi| |00002690| 6e 64 5f 62 72 61 63 65 | 64 5f 65 6e 64 20 28 29 |nd_brace|d_end ()| |000026a0| 3b 0a 58 76 6f 69 64 20 | 77 72 69 74 65 6c 69 6e |;.Xvoid |writelin| |000026b0| 65 73 20 28 29 3b 0a 58 | 69 6e 74 20 63 6f 6d 70 |es ();.X|int comp| |000026c0| 61 72 65 5f 66 75 6c 6c | 20 28 29 3b 0a 58 6c 6f |are_full| ();.Xlo| |000026d0| 6e 67 20 72 65 61 64 6c | 69 6e 65 20 28 29 3b 0a |ng readl|ine ();.| |000026e0| 58 69 6e 74 20 6d 65 72 | 67 65 5f 66 69 6c 65 73 |Xint mer|ge_files| |000026f0| 20 28 29 3b 0a 58 69 6e | 74 20 6d 65 72 67 65 5f | ();.Xin|t merge_| |00002700| 64 69 72 65 63 74 20 28 | 29 3b 0a 58 63 68 61 72 |direct (|);.Xchar| |00002710| 20 2a 63 6f 6e 63 61 74 | 20 28 29 3b 0a 58 63 68 | *concat| ();.Xch| |00002720| 61 72 20 2a 6d 61 6b 65 | 74 65 6d 70 6e 61 6d 65 |ar *make|tempname| |00002730| 20 28 29 3b 0a 58 76 6f | 69 64 20 66 6c 75 73 68 | ();.Xvo|id flush| |00002740| 5f 74 65 6d 70 66 69 6c | 65 73 20 28 29 3b 0a 58 |_tempfil|es ();.X| |00002750| 63 68 61 72 20 2a 74 65 | 6d 70 63 6f 70 79 20 28 |char *te|mpcopy (| |00002760| 29 3b 0a 58 0a 58 65 78 | 74 65 72 6e 20 63 68 61 |);.X.Xex|tern cha| |00002770| 72 20 2a 6d 6b 74 65 6d | 70 20 28 29 3b 0a 58 0c |r *mktem|p ();.X.| |00002780| 0a 58 23 64 65 66 69 6e | 65 20 4d 41 58 5f 49 4e |.X#defin|e MAX_IN| |00002790| 5f 43 4f 52 45 5f 53 4f | 52 54 20 35 30 30 30 30 |_CORE_SO|RT 50000| |000027a0| 30 0a 58 0a 58 69 6e 74 | 0a 58 6d 61 69 6e 20 28 |0.X.Xint|.Xmain (| |000027b0| 61 72 67 63 2c 20 61 72 | 67 76 29 0a 58 20 20 20 |argc, ar|gv).X | |000027c0| 20 20 69 6e 74 20 61 72 | 67 63 3b 0a 58 20 20 20 | int ar|gc;.X | |000027d0| 20 20 63 68 61 72 20 2a | 2a 61 72 67 76 3b 0a 58 | char *|*argv;.X| |000027e0| 7b 0a 58 20 20 69 6e 74 | 20 69 3b 0a 58 0a 58 20 |{.X int| i;.X.X | |000027f0| 20 74 65 6d 70 63 6f 75 | 6e 74 20 3d 20 30 3b 0a | tempcou|nt = 0;.| |00002800| 58 20 20 6c 61 73 74 5f | 64 65 6c 65 74 65 64 5f |X last_|deleted_| |00002810| 74 65 6d 70 63 6f 75 6e | 74 20 3d 20 30 3b 0a 58 |tempcoun|t = 0;.X| |00002820| 0a 58 20 20 2f 2a 20 44 | 65 73 63 72 69 62 65 20 |.X /* D|escribe | |00002830| 74 68 65 20 6b 69 6e 64 | 20 6f 66 20 73 6f 72 74 |the kind| of sort| |00002840| 69 6e 67 20 74 6f 20 64 | 6f 2e 20 2a 2f 0a 58 20 |ing to d|o. */.X | |00002850| 20 2f 2a 20 54 68 65 20 | 66 69 72 73 74 20 6b 65 | /* The |first ke| |00002860| 79 66 69 65 6c 64 20 75 | 73 65 73 20 74 68 65 20 |yfield u|ses the | |00002870| 66 69 72 73 74 20 62 72 | 61 63 65 64 20 66 69 65 |first br|aced fie| |00002880| 6c 64 20 61 6e 64 20 66 | 6f 6c 64 73 20 63 61 73 |ld and f|olds cas| |00002890| 65 20 2a 2f 0a 58 20 20 | 6b 65 79 66 69 65 6c 64 |e */.X |keyfield| |000028a0| 73 5b 30 5d 2e 62 72 61 | 63 65 64 20 3d 20 31 3b |s[0].bra|ced = 1;| |000028b0| 0a 58 20 20 6b 65 79 66 | 69 65 6c 64 73 5b 30 5d |.X keyf|ields[0]| |000028c0| 2e 66 6f 6c 64 5f 63 61 | 73 65 20 3d 20 31 3b 0a |.fold_ca|se = 1;.| |000028d0| 58 20 20 6b 65 79 66 69 | 65 6c 64 73 5b 30 5d 2e |X keyfi|elds[0].| |000028e0| 65 6e 64 77 6f 72 64 73 | 20 3d 20 2d 31 3b 0a 58 |endwords| = -1;.X| |000028f0| 20 20 6b 65 79 66 69 65 | 6c 64 73 5b 30 5d 2e 65 | keyfie|lds[0].e| |00002900| 6e 64 63 68 61 72 73 20 | 3d 20 2d 31 3b 0a 58 20 |ndchars |= -1;.X | |00002910| 20 2f 2a 20 54 68 65 20 | 73 65 63 6f 6e 64 20 6b | /* The |second k| |00002920| 65 79 66 69 65 6c 64 20 | 75 73 65 73 20 74 68 65 |eyfield |uses the| |00002930| 20 73 65 63 6f 6e 64 20 | 62 72 61 63 65 64 20 66 | second |braced f| |00002940| 69 65 6c 64 2c 20 6e 75 | 6d 65 72 69 63 61 6c 6c |ield, nu|mericall| |00002950| 79 20 2a 2f 0a 58 20 20 | 6b 65 79 66 69 65 6c 64 |y */.X |keyfield| |00002960| 73 5b 31 5d 2e 62 72 61 | 63 65 64 20 3d 20 31 3b |s[1].bra|ced = 1;| |00002970| 0a 58 20 20 6b 65 79 66 | 69 65 6c 64 73 5b 31 5d |.X keyf|ields[1]| |00002980| 2e 6e 75 6d 65 72 69 63 | 20 3d 20 31 3b 0a 58 20 |.numeric| = 1;.X | |00002990| 20 6b 65 79 66 69 65 6c | 64 73 5b 31 5d 2e 73 74 | keyfiel|ds[1].st| |000029a0| 61 72 74 77 6f 72 64 73 | 20 3d 20 31 3b 0a 58 20 |artwords| = 1;.X | |000029b0| 20 6b 65 79 66 69 65 6c | 64 73 5b 31 5d 2e 65 6e | keyfiel|ds[1].en| |000029c0| 64 77 6f 72 64 73 20 3d | 20 2d 31 3b 0a 58 20 20 |dwords =| -1;.X | |000029d0| 6b 65 79 66 69 65 6c 64 | 73 5b 31 5d 2e 65 6e 64 |keyfield|s[1].end| |000029e0| 63 68 61 72 73 20 3d 20 | 2d 31 3b 0a 58 20 20 2f |chars = |-1;.X /| |000029f0| 2a 20 54 68 65 20 74 68 | 69 72 64 20 6b 65 79 66 |* The th|ird keyf| |00002a00| 69 65 6c 64 20 28 77 68 | 69 63 68 20 69 73 20 69 |ield (wh|ich is i| |00002a10| 67 6e 6f 72 65 64 20 77 | 68 69 6c 65 20 64 69 73 |gnored w|hile dis| |00002a20| 63 61 72 64 69 6e 67 20 | 64 75 70 6c 69 63 61 74 |carding |duplicat| |00002a30| 65 73 29 0a 58 20 20 20 | 20 20 63 6f 6d 70 61 72 |es).X | compar| |00002a40| 65 73 20 74 68 65 20 77 | 68 6f 6c 65 20 6c 69 6e |es the w|hole lin| |00002a50| 65 20 2a 2f 0a 58 20 20 | 6b 65 79 66 69 65 6c 64 |e */.X |keyfield| |00002a60| 73 5b 32 5d 2e 65 6e 64 | 77 6f 72 64 73 20 3d 20 |s[2].end|words = | |00002a70| 2d 31 3b 0a 58 20 20 6b | 65 79 66 69 65 6c 64 73 |-1;.X k|eyfields| |00002a80| 5b 32 5d 2e 65 6e 64 63 | 68 61 72 73 20 3d 20 2d |[2].endc|hars = -| |00002a90| 31 3b 0a 58 0a 58 20 20 | 64 65 63 6f 64 65 5f 63 |1;.X.X |decode_c| |00002aa0| 6f 6d 6d 61 6e 64 20 28 | 61 72 67 63 2c 20 61 72 |ommand (|argc, ar| |00002ab0| 67 76 29 3b 0a 58 0a 58 | 20 20 74 65 6d 70 62 61 |gv);.X.X| tempba| |00002ac0| 73 65 20 3d 20 6d 6b 74 | 65 6d 70 20 28 63 6f 6e |se = mkt|emp (con| |00002ad0| 63 61 74 20 28 22 74 78 | 69 58 58 58 58 58 58 22 |cat ("tx|iXXXXXX"| |00002ae0| 2c 20 22 22 2c 20 22 22 | 29 29 3b 0a 58 0a 58 20 |, "", ""|));.X.X | |00002af0| 20 2f 2a 20 50 72 6f 63 | 65 73 73 20 69 6e 70 75 | /* Proc|ess inpu| |00002b00| 74 20 66 69 6c 65 73 20 | 63 6f 6d 70 6c 65 74 65 |t files |complete| |00002b10| 6c 79 2c 20 6f 6e 65 20 | 62 79 20 6f 6e 65 2e 20 |ly, one |by one. | |00002b20| 20 2a 2f 0a 58 0a 58 20 | 20 66 6f 72 20 28 69 20 | */.X.X | for (i | |00002b30| 3d 20 30 3b 20 69 20 3c | 20 6e 75 6d 5f 69 6e 66 |= 0; i <| num_inf| |00002b40| 69 6c 65 73 3b 20 69 2b | 2b 29 0a 58 20 20 20 20 |iles; i+|+).X | |00002b50| 7b 0a 58 20 20 20 20 20 | 20 69 6e 74 20 64 65 73 |{.X | int des| |00002b60| 63 3b 0a 58 20 20 20 20 | 20 20 6c 6f 6e 67 20 70 |c;.X | long p| |00002b70| 74 72 3b 0a 58 20 20 20 | 20 20 20 63 68 61 72 20 |tr;.X | char | |00002b80| 2a 6f 75 74 66 69 6c 65 | 3b 0a 58 20 20 20 20 20 |*outfile|;.X | |00002b90| 20 63 68 61 72 20 2a 70 | 3b 0a 58 0a 58 20 20 20 | char *p|;.X.X | |00002ba0| 20 20 20 64 65 73 63 20 | 3d 20 6f 70 65 6e 20 28 | desc |= open (| |00002bb0| 69 6e 66 69 6c 65 73 5b | 69 5d 2c 20 30 2c 20 30 |infiles[|i], 0, 0| |00002bc0| 29 3b 0a 58 20 20 20 20 | 20 20 69 66 20 28 64 65 |);.X | if (de| |00002bd0| 73 63 20 3c 20 30 29 20 | 70 66 61 74 61 6c 5f 77 |sc < 0) |pfatal_w| |00002be0| 69 74 68 5f 6e 61 6d 65 | 20 28 69 6e 66 69 6c 65 |ith_name| (infile| |00002bf0| 73 5b 69 5d 29 3b 0a 58 | 20 20 20 20 20 20 6c 73 |s[i]);.X| ls| |00002c00| 65 65 6b 20 28 64 65 73 | 63 2c 20 30 2c 20 4c 5f |eek (des|c, 0, L_| |00002c10| 58 54 4e 44 29 3b 0a 58 | 20 20 20 20 20 20 70 74 |XTND);.X| pt| |00002c20| 72 20 3d 20 74 65 6c 6c | 20 28 64 65 73 63 29 3b |r = tell| (desc);| |00002c30| 0a 58 20 20 20 20 20 20 | 63 6c 6f 73 65 20 28 64 |.X |close (d| |00002c40| 65 73 63 29 3b 0a 58 0a | 58 20 20 20 20 20 20 6f |esc);.X.|X o| |00002c50| 75 74 66 69 6c 65 20 3d | 20 6f 75 74 66 69 6c 65 |utfile =| outfile| |00002c60| 73 5b 69 5d 3b 0a 58 20 | 20 20 20 20 20 69 66 20 |s[i];.X | if | |00002c70| 28 21 6f 75 74 66 69 6c | 65 29 0a 58 09 7b 0a 58 |(!outfil|e).X.{.X| |00002c80| 09 20 20 6f 75 74 66 69 | 6c 65 20 3d 20 63 6f 6e |. outfi|le = con| |00002c90| 63 61 74 20 28 69 6e 66 | 69 6c 65 73 5b 69 5d 2c |cat (inf|iles[i],| |00002ca0| 20 22 73 22 2c 20 22 22 | 29 3b 0a 58 09 7d 0a 58 | "s", ""|);.X.}.X| |00002cb0| 0a 58 20 20 20 20 20 20 | 69 66 20 28 70 74 72 20 |.X |if (ptr | |00002cc0| 3c 20 4d 41 58 5f 49 4e | 5f 43 4f 52 45 5f 53 4f |< MAX_IN|_CORE_SO| |00002cd0| 52 54 29 0a 58 20 20 20 | 20 20 20 20 20 2f 2a 20 |RT).X | /* | |00002ce0| 53 6f 72 74 20 61 20 73 | 6d 61 6c 6c 20 61 6d 6f |Sort a s|mall amo| |00002cf0| 75 6e 74 20 6f 66 20 64 | 61 74 61 20 2a 2f 0a 58 |unt of d|ata */.X| |00002d00| 20 20 20 20 20 20 20 20 | 73 6f 72 74 5f 69 6e 5f | |sort_in_| |00002d10| 63 6f 72 65 20 28 69 6e | 66 69 6c 65 73 5b 69 5d |core (in|files[i]| |00002d20| 2c 20 70 74 72 2c 20 6f | 75 74 66 69 6c 65 29 3b |, ptr, o|utfile);| |00002d30| 0a 58 20 20 20 20 20 20 | 65 6c 73 65 0a 58 20 20 |.X |else.X | |00002d40| 20 20 20 20 20 20 73 6f | 72 74 5f 6f 66 66 6c 69 | so|rt_offli| |00002d50| 6e 65 20 28 69 6e 66 69 | 6c 65 73 5b 69 5d 2c 20 |ne (infi|les[i], | |00002d60| 70 74 72 2c 20 6f 75 74 | 66 69 6c 65 29 3b 0a 58 |ptr, out|file);.X| |00002d70| 20 20 20 20 7d 0a 58 0a | 58 20 20 66 6c 75 73 68 | }.X.|X flush| |00002d80| 5f 74 65 6d 70 66 69 6c | 65 73 20 28 74 65 6d 70 |_tempfil|es (temp| |00002d90| 63 6f 75 6e 74 29 3b 0a | 58 20 20 65 78 69 74 20 |count);.|X exit | |00002da0| 28 45 58 49 54 5f 53 55 | 43 43 45 53 53 29 3b 0a |(EXIT_SU|CCESS);.| |00002db0| 58 7d 0a 58 0c 0a 58 2f | 2a 20 54 68 69 73 20 70 |X}.X..X/|* This p| |00002dc0| 61 67 65 20 64 65 63 6f | 64 65 73 20 74 68 65 20 |age deco|des the | |00002dd0| 63 6f 6d 6d 61 6e 64 20 | 6c 69 6e 65 20 61 72 67 |command |line arg| |00002de0| 75 6d 65 6e 74 73 20 74 | 6f 20 73 65 74 20 74 68 |uments t|o set th| |00002df0| 65 20 70 61 72 61 6d 65 | 74 65 72 20 76 61 72 69 |e parame|ter vari| |00002e00| 61 62 6c 65 73 0a 58 20 | 61 6e 64 20 73 65 74 20 |ables.X |and set | |00002e10| 75 70 20 74 68 65 20 76 | 65 63 74 6f 72 20 6f 66 |up the v|ector of| |00002e20| 20 6b 65 79 66 69 65 6c | 64 73 20 61 6e 64 20 74 | keyfiel|ds and t| |00002e30| 68 65 20 76 65 63 74 6f | 72 20 6f 66 20 69 6e 70 |he vecto|r of inp| |00002e40| 75 74 20 66 69 6c 65 73 | 20 2a 2f 0a 58 0a 58 76 |ut files| */.X.Xv| |00002e50| 6f 69 64 0a 58 64 65 63 | 6f 64 65 5f 63 6f 6d 6d |oid.Xdec|ode_comm| |00002e60| 61 6e 64 20 28 61 72 67 | 63 2c 20 61 72 67 76 29 |and (arg|c, argv)| |00002e70| 0a 58 20 20 20 20 20 69 | 6e 74 20 61 72 67 63 3b |.X i|nt argc;| |00002e80| 0a 58 20 20 20 20 20 63 | 68 61 72 20 2a 2a 61 72 |.X c|har **ar| |00002e90| 67 76 3b 0a 58 7b 0a 58 | 20 20 69 6e 74 20 69 3b |gv;.X{.X| int i;| |00002ea0| 0a 58 20 20 63 68 61 72 | 20 2a 2a 69 70 3b 0a 58 |.X char| **ip;.X| |00002eb0| 20 20 63 68 61 72 20 2a | 2a 6f 70 3b 0a 58 0a 58 | char *|*op;.X.X| |00002ec0| 20 20 2f 2a 20 53 74 6f | 72 65 20 64 65 66 61 75 | /* Sto|re defau| |00002ed0| 6c 74 20 76 61 6c 75 65 | 73 20 69 6e 74 6f 20 70 |lt value|s into p| |00002ee0| 61 72 61 6d 65 74 65 72 | 20 76 61 72 69 61 62 6c |arameter| variabl| |00002ef0| 65 73 20 2a 2f 0a 58 0a | 58 23 69 66 64 65 66 20 |es */.X.|X#ifdef | |00002f00| 56 4d 53 0a 58 20 20 74 | 65 6d 70 64 69 72 20 3d |VMS.X t|empdir =| |00002f10| 20 22 73 79 73 24 73 63 | 72 61 74 63 68 3a 22 3b | "sys$sc|ratch:";| |00002f20| 0a 58 23 65 6c 73 65 0a | 58 20 20 74 65 6d 70 64 |.X#else.|X tempd| |00002f30| 69 72 20 3d 20 22 2f 74 | 6d 70 2f 22 3b 0a 58 23 |ir = "/t|mp/";.X#| |00002f40| 65 6e 64 69 66 0a 58 0a | 58 20 20 6b 65 65 70 5f |endif.X.|X keep_| |00002f50| 74 65 6d 70 66 69 6c 65 | 73 20 3d 20 30 3b 0a 58 |tempfile|s = 0;.X| |00002f60| 0a 58 20 20 2f 2a 20 41 | 6c 6c 6f 63 61 74 65 20 |.X /* A|llocate | |00002f70| 61 72 67 63 20 69 6e 70 | 75 74 20 66 69 6c 65 73 |argc inp|ut files| |00002f80| 2c 20 77 68 69 63 68 20 | 6d 75 73 74 20 62 65 20 |, which |must be | |00002f90| 65 6e 6f 75 67 68 2e 20 | 20 2a 2f 0a 58 0a 58 20 |enough. | */.X.X | |00002fa0| 20 69 6e 66 69 6c 65 73 | 20 3d 20 28 63 68 61 72 | infiles| = (char| |00002fb0| 20 2a 2a 29 20 78 6d 61 | 6c 6c 6f 63 20 28 61 72 | **) xma|lloc (ar| |00002fc0| 67 63 20 2a 20 73 69 7a | 65 6f 66 20 28 63 68 61 |gc * siz|eof (cha| |00002fd0| 72 20 2a 29 29 3b 0a 58 | 20 20 6f 75 74 66 69 6c |r *));.X| outfil| |00002fe0| 65 73 20 3d 20 28 63 68 | 61 72 20 2a 2a 29 20 78 |es = (ch|ar **) x| |00002ff0| 6d 61 6c 6c 6f 63 20 28 | 61 72 67 63 20 2a 20 73 |malloc (|argc * s| |00003000| 69 7a 65 6f 66 20 28 63 | 68 61 72 20 2a 29 29 3b |izeof (c|har *));| |00003010| 0a 58 20 20 69 70 20 3d | 20 69 6e 66 69 6c 65 73 |.X ip =| infiles| |00003020| 3b 0a 58 20 20 6f 70 20 | 3d 20 6f 75 74 66 69 6c |;.X op |= outfil| |00003030| 65 73 3b 0a 58 0a 58 20 | 20 2f 2a 20 46 69 72 73 |es;.X.X | /* Firs| |00003040| 74 20 66 69 6e 64 20 61 | 6c 6c 20 73 77 69 74 63 |t find a|ll switc| |00003050| 68 65 73 20 74 68 61 74 | 20 63 6f 6e 74 72 6f 6c |hes that| control| |00003060| 20 74 68 65 20 64 65 66 | 61 75 6c 74 20 6b 69 6e | the def|ault kin| |00003070| 64 2d 6f 66 2d 73 6f 72 | 74 20 2a 2f 0a 58 0a 58 |d-of-sor|t */.X.X| |00003080| 20 20 66 6f 72 20 28 69 | 20 3d 20 31 3b 20 69 20 | for (i| = 1; i | |00003090| 3c 20 61 72 67 63 3b 20 | 69 2b 2b 29 0a 58 20 20 |< argc; |i++).X | |000030a0| 20 20 7b 0a 58 20 20 20 | 20 20 20 69 6e 74 20 74 | {.X | int t| |000030b0| 65 6d 20 3d 20 63 6c 61 | 73 73 69 66 79 5f 61 72 |em = cla|ssify_ar| |000030c0| 67 20 28 61 72 67 76 5b | 69 5d 29 3b 0a 58 20 20 |g (argv[|i]);.X | |000030d0| 20 20 20 20 63 68 61 72 | 20 63 3b 0a 58 20 20 20 | char| c;.X | |000030e0| 20 20 20 63 68 61 72 20 | 2a 70 3b 0a 58 0a 58 20 | char |*p;.X.X | |000030f0| 20 20 20 20 20 69 66 20 | 28 74 65 6d 20 3c 3d 20 | if |(tem <= | |00003100| 30 29 0a 58 09 7b 0a 58 | 09 20 20 2a 69 70 2b 2b |0).X.{.X|. *ip++| |00003110| 20 3d 20 61 72 67 76 5b | 69 5d 3b 0a 58 09 20 20 | = argv[|i];.X. | |00003120| 2a 6f 70 2b 2b 20 3d 20 | 30 3b 0a 58 09 20 20 63 |*op++ = |0;.X. c| |00003130| 6f 6e 74 69 6e 75 65 3b | 0a 58 09 7d 0a 58 20 20 |ontinue;|.X.}.X | |00003140| 20 20 20 20 69 66 20 28 | 74 65 6d 20 3e 20 31 29 | if (|tem > 1)| |00003150| 0a 58 09 7b 0a 58 09 20 | 20 69 66 20 28 69 20 2b |.X.{.X. | if (i +| |00003160| 20 31 20 3d 3d 20 61 72 | 67 63 29 0a 58 09 20 20 | 1 == ar|gc).X. | |00003170| 20 20 66 61 74 61 6c 20 | 28 22 73 77 69 74 63 68 | fatal |("switch| |00003180| 20 25 73 20 67 69 76 65 | 6e 20 77 69 74 68 20 6e | %s give|n with n| |00003190| 6f 20 61 72 67 75 6d 65 | 6e 74 20 66 6f 6c 6c 6f |o argume|nt follo| |000031a0| 77 69 6e 67 20 69 74 22 | 2c 20 61 72 67 76 5b 69 |wing it"|, argv[i| |000031b0| 5d 29 3b 0a 58 09 20 20 | 65 6c 73 65 20 69 66 20 |]);.X. |else if | |000031c0| 28 21 73 74 72 63 6d 70 | 20 28 61 72 67 76 5b 69 |(!strcmp| (argv[i| |000031d0| 5d 2c 20 22 2d 54 22 29 | 29 0a 58 09 20 20 20 20 |], "-T")|).X. | |000031e0| 74 65 6d 70 64 69 72 20 | 3d 20 61 72 67 76 5b 69 |tempdir |= argv[i| |000031f0| 20 2b 20 31 5d 3b 0a 58 | 09 20 20 65 6c 73 65 20 | + 1];.X|. else | |00003200| 69 66 20 28 21 73 74 72 | 63 6d 70 20 28 61 72 67 |if (!str|cmp (arg| |00003210| 76 5b 69 5d 2c 20 22 2d | 6f 22 29 29 0a 58 09 20 |v[i], "-|o")).X. | |00003220| 20 20 20 2a 28 6f 70 20 | 2d 20 31 29 20 3d 20 61 | *(op |- 1) = a| |00003230| 72 67 76 5b 69 20 2b 20 | 31 5d 3b 0a 58 09 20 20 |rgv[i + |1];.X. | |00003240| 69 20 2b 3d 20 74 65 6d | 20 2d 20 31 3b 0a 58 09 |i += tem| - 1;.X.| |00003250| 20 20 63 6f 6e 74 69 6e | 75 65 3b 0a 58 09 7d 0a | contin|ue;.X.}.| |00003260| 58 0a 58 20 20 20 20 20 | 20 70 20 3d 20 26 61 72 |X.X | p = &ar| |00003270| 67 76 5b 69 5d 5b 31 5d | 3b 0a 58 20 20 20 20 20 |gv[i][1]|;.X | |00003280| 20 77 68 69 6c 65 20 28 | 63 20 3d 20 2a 70 2b 2b | while (|c = *p++| |00003290| 29 0a 58 09 73 77 69 74 | 63 68 20 28 63 29 0a 58 |).X.swit|ch (c).X| |000032a0| 09 20 20 7b 0a 58 09 20 | 20 63 61 73 65 20 27 6b |. {.X. | case 'k| |000032b0| 27 3a 0a 58 09 20 20 20 | 20 6b 65 65 70 5f 74 65 |':.X. | keep_te| |000032c0| 6d 70 66 69 6c 65 73 20 | 3d 20 31 3b 0a 58 09 20 |mpfiles |= 1;.X. | |000032d0| 20 20 20 62 72 65 61 6b | 3b 0a 58 0a 58 09 20 20 | break|;.X.X. | |000032e0| 64 65 66 61 75 6c 74 3a | 0a 58 09 20 20 20 20 66 |default:|.X. f| |000032f0| 61 74 61 6c 20 28 22 69 | 6e 76 61 6c 69 64 20 63 |atal ("i|nvalid c| |00003300| 6f 6d 6d 61 6e 64 20 73 | 77 69 74 63 68 20 25 63 |ommand s|witch %c| |00003310| 22 2c 20 63 29 3b 0a 58 | 09 20 20 7d 0a 58 20 20 |", c);.X|. }.X | |00003320| 20 20 73 77 69 74 63 68 | 64 6f 6e 65 3a 20 3b 0a | switch|done: ;.| |00003330| 58 20 20 20 20 7d 0a 58 | 0a 58 20 20 2f 2a 20 52 |X }.X|.X /* R| |00003340| 65 63 6f 72 64 20 6e 75 | 6d 62 65 72 20 6f 66 20 |ecord nu|mber of | |00003350| 6b 65 79 66 69 65 6c 64 | 73 2c 20 74 65 72 6d 69 |keyfield|s, termi| |00003360| 6e 61 74 65 20 6c 69 73 | 74 20 6f 66 20 66 69 6c |nate lis|t of fil| |00003370| 65 6e 61 6d 65 73 20 2a | 2f 0a 58 0a 58 20 20 6e |enames *|/.X.X n| |00003380| 75 6d 5f 69 6e 66 69 6c | 65 73 20 3d 20 69 70 20 |um_infil|es = ip | |00003390| 2d 20 69 6e 66 69 6c 65 | 73 3b 0a 58 20 20 2a 69 |- infile|s;.X *i| |000033a0| 70 20 3d 20 30 3b 0a 58 | 7d 0a 58 0a 58 2f 2a 20 |p = 0;.X|}.X.X/* | |000033b0| 52 65 74 75 72 6e 20 30 | 20 66 6f 72 20 61 6e 20 |Return 0| for an | |000033c0| 61 72 67 75 6d 65 6e 74 | 20 74 68 61 74 20 69 73 |argument| that is| |000033d0| 20 6e 6f 74 20 61 20 73 | 77 69 74 63 68 3b 0a 58 | not a s|witch;.X| |000033e0| 20 66 6f 72 20 61 20 73 | 77 69 74 63 68 2c 20 72 | for a s|witch, r| |000033f0| 65 74 75 72 6e 20 31 20 | 70 6c 75 73 20 74 68 65 |eturn 1 |plus the| |00003400| 20 6e 75 6d 62 65 72 20 | 6f 66 20 66 6f 6c 6c 6f | number |of follo| |00003410| 77 69 6e 67 20 61 72 67 | 75 6d 65 6e 74 73 20 74 |wing arg|uments t| |00003420| 68 61 74 20 74 68 65 20 | 73 77 69 74 63 68 20 73 |hat the |switch s| |00003430| 77 61 6c 6c 6f 77 73 2e | 0a 58 2a 2f 0a 58 0a 58 |wallows.|.X*/.X.X| |00003440| 69 6e 74 0a 58 63 6c 61 | 73 73 69 66 79 5f 61 72 |int.Xcla|ssify_ar| |00003450| 67 20 28 61 72 67 29 0a | 58 20 20 20 20 20 63 68 |g (arg).|X ch| |00003460| 61 72 20 2a 61 72 67 3b | 0a 58 7b 0a 58 20 20 69 |ar *arg;|.X{.X i| |00003470| 66 20 28 21 73 74 72 63 | 6d 70 20 28 61 72 67 2c |f (!strc|mp (arg,| |00003480| 20 22 2d 54 22 29 20 7c | 7c 20 21 73 74 72 63 6d | "-T") ||| !strcm| |00003490| 70 20 28 61 72 67 2c 20 | 22 2d 6f 22 29 29 0a 58 |p (arg, |"-o")).X| |000034a0| 20 20 20 20 72 65 74 75 | 72 6e 20 32 3b 0a 58 20 | retu|rn 2;.X | |000034b0| 20 69 66 20 28 61 72 67 | 5b 30 5d 20 3d 3d 20 27 | if (arg|[0] == '| |000034c0| 2d 27 29 0a 58 20 20 20 | 20 72 65 74 75 72 6e 20 |-').X | return | |000034d0| 31 3b 0a 58 20 20 72 65 | 74 75 72 6e 20 30 3b 0a |1;.X re|turn 0;.| |000034e0| 58 7d 0a 58 0c 0a 58 2f | 2a 20 43 72 65 61 74 65 |X}.X..X/|* Create| |000034f0| 20 61 20 6e 61 6d 65 20 | 66 6f 72 20 61 20 74 65 | a name |for a te| |00003500| 6d 70 6f 72 61 72 79 20 | 66 69 6c 65 20 2a 2f 0a |mporary |file */.| |00003510| 58 0a 58 63 68 61 72 20 | 2a 0a 58 6d 61 6b 65 74 |X.Xchar |*.Xmaket| |00003520| 65 6d 70 6e 61 6d 65 20 | 28 63 6f 75 6e 74 29 0a |empname |(count).| |00003530| 58 20 20 20 20 20 69 6e | 74 20 63 6f 75 6e 74 3b |X in|t count;| |00003540| 0a 58 7b 0a 58 20 20 63 | 68 61 72 20 74 65 6d 70 |.X{.X c|har temp| |00003550| 73 75 66 66 69 78 5b 31 | 30 5d 3b 0a 58 20 20 73 |suffix[1|0];.X s| |00003560| 70 72 69 6e 74 66 20 28 | 74 65 6d 70 73 75 66 66 |printf (|tempsuff| |00003570| 69 78 2c 20 22 25 64 22 | 2c 20 63 6f 75 6e 74 29 |ix, "%d"|, count)| |00003580| 3b 0a 58 20 20 72 65 74 | 75 72 6e 20 63 6f 6e 63 |;.X ret|urn conc| |00003590| 61 74 20 28 74 65 6d 70 | 64 69 72 2c 20 74 65 6d |at (temp|dir, tem| |000035a0| 70 62 61 73 65 2c 20 74 | 65 6d 70 73 75 66 66 69 |pbase, t|empsuffi| |000035b0| 78 29 3b 0a 58 7d 0a 58 | 0a 58 2f 2a 20 44 65 6c |x);.X}.X|.X/* Del| |000035c0| 65 74 65 20 61 6c 6c 20 | 74 65 6d 70 6f 72 61 72 |ete all |temporar| |000035d0| 79 20 66 69 6c 65 73 20 | 75 70 20 74 6f 20 74 68 |y files |up to th| |000035e0| 65 20 73 70 65 63 69 66 | 69 65 64 20 63 6f 75 6e |e specif|ied coun| |000035f0| 74 20 2a 2f 0a 58 0a 58 | 76 6f 69 64 0a 58 66 6c |t */.X.X|void.Xfl| |00003600| 75 73 68 5f 74 65 6d 70 | 66 69 6c 65 73 20 28 74 |ush_temp|files (t| |00003610| 6f 5f 63 6f 75 6e 74 29 | 0a 58 20 20 20 20 20 69 |o_count)|.X i| |00003620| 6e 74 20 74 6f 5f 63 6f | 75 6e 74 3b 0a 58 7b 0a |nt to_co|unt;.X{.| |00003630| 58 20 20 69 66 20 28 6b | 65 65 70 5f 74 65 6d 70 |X if (k|eep_temp| |00003640| 66 69 6c 65 73 29 20 72 | 65 74 75 72 6e 3b 0a 58 |files) r|eturn;.X| |00003650| 20 20 77 68 69 6c 65 20 | 28 6c 61 73 74 5f 64 65 | while |(last_de| |00003660| 6c 65 74 65 64 5f 74 65 | 6d 70 63 6f 75 6e 74 20 |leted_te|mpcount | |00003670| 3c 20 74 6f 5f 63 6f 75 | 6e 74 29 0a 58 20 20 20 |< to_cou|nt).X | |00003680| 20 75 6e 6c 69 6e 6b 20 | 28 6d 61 6b 65 74 65 6d | unlink |(maketem| |00003690| 70 6e 61 6d 65 20 28 2b | 2b 6c 61 73 74 5f 64 65 |pname (+|+last_de| |000036a0| 6c 65 74 65 64 5f 74 65 | 6d 70 63 6f 75 6e 74 29 |leted_te|mpcount)| |000036b0| 29 3b 0a 58 7d 0a 58 0a | 58 2f 2a 20 43 6f 70 79 |);.X}.X.|X/* Copy| |000036c0| 20 61 6e 20 69 6e 70 75 | 74 20 66 69 6c 65 20 69 | an inpu|t file i| |000036d0| 6e 74 6f 20 61 20 74 65 | 6d 70 6f 72 61 72 79 20 |nto a te|mporary | |000036e0| 66 69 6c 65 2c 20 61 6e | 64 20 72 65 74 75 72 6e |file, an|d return| |000036f0| 20 74 68 65 20 74 65 6d | 70 6f 72 61 72 79 20 66 | the tem|porary f| |00003700| 69 6c 65 20 6e 61 6d 65 | 20 2a 2f 0a 58 0a 58 23 |ile name| */.X.X#| |00003710| 64 65 66 69 6e 65 20 42 | 55 46 53 49 5a 45 20 31 |define B|UFSIZE 1| |00003720| 30 32 34 0a 58 0a 58 63 | 68 61 72 20 2a 0a 58 74 |024.X.Xc|har *.Xt| |00003730| 65 6d 70 63 6f 70 79 20 | 28 69 64 65 73 63 29 0a |empcopy |(idesc).| |00003740| 58 20 20 20 20 20 69 6e | 74 20 69 64 65 73 63 3b |X in|t idesc;| |00003750| 0a 58 7b 0a 58 20 20 63 | 68 61 72 20 2a 6f 75 74 |.X{.X c|har *out| |00003760| 66 69 6c 65 20 3d 20 6d | 61 6b 65 74 65 6d 70 6e |file = m|aketempn| |00003770| 61 6d 65 20 28 2b 2b 74 | 65 6d 70 63 6f 75 6e 74 |ame (++t|empcount| |00003780| 29 3b 0a 58 20 20 69 6e | 74 20 6f 64 65 73 63 3b |);.X in|t odesc;| |00003790| 0a 58 20 20 63 68 61 72 | 20 62 75 66 66 65 72 5b |.X char| buffer[| |000037a0| 42 55 46 53 49 5a 45 5d | 3b 0a 58 0a 58 20 20 6f |BUFSIZE]|;.X.X o| |000037b0| 64 65 73 63 20 3d 20 6f | 70 65 6e 20 28 6f 75 74 |desc = o|pen (out| |000037c0| 66 69 6c 65 2c 20 4f 5f | 57 52 4f 4e 4c 59 20 7c |file, O_|WRONLY || |000037d0| 20 4f 5f 43 52 45 41 54 | 2c 20 30 36 36 36 29 3b | O_CREAT|, 0666);| |000037e0| 0a 58 0a 58 20 20 69 66 | 20 28 6f 64 65 73 63 20 |.X.X if| (odesc | |000037f0| 3c 20 30 29 20 70 66 61 | 74 61 6c 5f 77 69 74 68 |< 0) pfa|tal_with| |00003800| 5f 6e 61 6d 65 20 28 6f | 75 74 66 69 6c 65 29 3b |_name (o|utfile);| |00003810| 0a 58 0a 58 20 20 77 68 | 69 6c 65 20 28 31 29 0a |.X.X wh|ile (1).| |00003820| 58 20 20 20 20 7b 0a 58 | 20 20 20 20 20 20 69 6e |X {.X| in| |00003830| 74 20 6e 72 65 61 64 20 | 3d 20 72 65 61 64 20 28 |t nread |= read (| |00003840| 69 64 65 73 63 2c 20 62 | 75 66 66 65 72 2c 20 42 |idesc, b|uffer, B| |00003850| 55 46 53 49 5a 45 29 3b | 0a 58 20 20 20 20 20 20 |UFSIZE);|.X | |00003860| 77 72 69 74 65 20 28 6f | 64 65 73 63 2c 20 62 75 |write (o|desc, bu| |00003870| 66 66 65 72 2c 20 6e 72 | 65 61 64 29 3b 0a 58 20 |ffer, nr|ead);.X | |00003880| 20 20 20 20 20 69 66 20 | 28 21 6e 72 65 61 64 29 | if |(!nread)| |00003890| 20 62 72 65 61 6b 3b 0a | 58 20 20 20 20 7d 0a 58 | break;.|X }.X| |000038a0| 0a 58 20 20 63 6c 6f 73 | 65 20 28 6f 64 65 73 63 |.X clos|e (odesc| |000038b0| 29 3b 0a 58 0a 58 20 20 | 72 65 74 75 72 6e 20 6f |);.X.X |return o| |000038c0| 75 74 66 69 6c 65 3b 0a | 58 7d 0a 58 0c 0a 58 2f |utfile;.|X}.X..X/| |000038d0| 2a 20 43 6f 6d 70 61 72 | 65 20 74 77 6f 20 6c 69 |* Compar|e two li| |000038e0| 6e 65 73 2c 20 70 72 6f | 76 69 64 65 64 20 61 73 |nes, pro|vided as| |000038f0| 20 70 6f 69 6e 74 65 72 | 73 20 74 6f 20 70 6f 69 | pointer|s to poi| |00003900| 6e 74 65 72 73 20 74 6f | 20 74 65 78 74 2c 0a 58 |nters to| text,.X| |00003910| 20 61 63 63 6f 72 64 69 | 6e 67 20 74 6f 20 74 68 | accordi|ng to th| |00003920| 65 20 73 70 65 63 69 66 | 69 65 64 20 73 65 74 20 |e specif|ied set | |00003930| 6f 66 20 6b 65 79 66 69 | 65 6c 64 73 20 2a 2f 0a |of keyfi|elds */.| |00003940| 58 0a 58 69 6e 74 0a 58 | 63 6f 6d 70 61 72 65 5f |X.Xint.X|compare_| |00003950| 66 75 6c 6c 20 28 6c 69 | 6e 65 31 2c 20 6c 69 6e |full (li|ne1, lin| |00003960| 65 32 29 0a 58 20 20 20 | 20 20 63 68 61 72 20 2a |e2).X | char *| |00003970| 2a 6c 69 6e 65 31 2c 20 | 2a 2a 6c 69 6e 65 32 3b |*line1, |**line2;| |00003980| 0a 58 7b 0a 58 20 20 69 | 6e 74 20 69 3b 0a 58 0a |.X{.X i|nt i;.X.| |00003990| 58 20 20 2f 2a 20 43 6f | 6d 70 61 72 65 20 75 73 |X /* Co|mpare us| |000039a0| 69 6e 67 20 74 68 65 20 | 66 69 72 73 74 20 6b 65 |ing the |first ke| |000039b0| 79 66 69 65 6c 64 3b 0a | 58 20 20 20 20 20 69 66 |yfield;.|X if| |000039c0| 20 74 68 61 74 20 64 6f | 65 73 20 6e 6f 74 20 64 | that do|es not d| |000039d0| 69 73 74 69 6e 67 75 69 | 73 68 20 74 68 65 20 6c |istingui|sh the l| |000039e0| 69 6e 65 73 2c 20 74 72 | 79 20 74 68 65 20 73 65 |ines, tr|y the se| |000039f0| 63 6f 6e 64 20 6b 65 79 | 66 69 65 6c 64 3b 20 61 |cond key|field; a| |00003a00| 6e 64 20 73 6f 20 6f 6e | 2e 20 2a 2f 0a 58 0a 58 |nd so on|. */.X.X| |00003a10| 20 20 66 6f 72 20 28 69 | 20 3d 20 30 3b 20 69 20 | for (i| = 0; i | |00003a20| 3c 20 6e 75 6d 5f 6b 65 | 79 66 69 65 6c 64 73 3b |< num_ke|yfields;| |00003a30| 20 69 2b 2b 29 0a 58 20 | 20 20 20 7b 0a 58 20 20 | i++).X | {.X | |00003a40| 20 20 20 20 6c 6f 6e 67 | 20 6c 65 6e 67 74 68 31 | long| length1| |00003a50| 2c 20 6c 65 6e 67 74 68 | 32 3b 0a 58 20 20 20 20 |, length|2;.X | |00003a60| 20 20 63 68 61 72 20 2a | 73 74 61 72 74 31 20 3d | char *|start1 =| |00003a70| 20 66 69 6e 64 5f 66 69 | 65 6c 64 20 28 26 6b 65 | find_fi|eld (&ke| |00003a80| 79 66 69 65 6c 64 73 5b | 69 5d 2c 20 2a 6c 69 6e |yfields[|i], *lin| |00003a90| 65 31 2c 20 26 6c 65 6e | 67 74 68 31 29 3b 0a 58 |e1, &len|gth1);.X| |00003aa0| 20 20 20 20 20 20 63 68 | 61 72 20 2a 73 74 61 72 | ch|ar *star| |00003ab0| 74 32 20 3d 20 66 69 6e | 64 5f 66 69 65 6c 64 20 |t2 = fin|d_field | |00003ac0| 28 26 6b 65 79 66 69 65 | 6c 64 73 5b 69 5d 2c 20 |(&keyfie|lds[i], | |00003ad0| 2a 6c 69 6e 65 32 2c 20 | 26 6c 65 6e 67 74 68 32 |*line2, |&length2| |00003ae0| 29 3b 0a 58 20 20 20 20 | 20 20 69 6e 74 20 74 65 |);.X | int te| |00003af0| 6d 20 3d 20 63 6f 6d 70 | 61 72 65 5f 66 69 65 6c |m = comp|are_fiel| |00003b00| 64 20 28 26 6b 65 79 66 | 69 65 6c 64 73 5b 69 5d |d (&keyf|ields[i]| |00003b10| 2c 20 73 74 61 72 74 31 | 2c 20 6c 65 6e 67 74 68 |, start1|, length| |00003b20| 31 2c 20 2a 6c 69 6e 65 | 31 20 2d 20 74 65 78 74 |1, *line|1 - text| |00003b30| 5f 62 61 73 65 2c 0a 58 | 09 09 09 09 09 20 20 20 |_base,.X|..... | |00003b40| 20 20 20 73 74 61 72 74 | 32 2c 20 6c 65 6e 67 74 | start|2, lengt| |00003b50| 68 32 2c 20 2a 6c 69 6e | 65 32 20 2d 20 74 65 78 |h2, *lin|e2 - tex| |00003b60| 74 5f 62 61 73 65 29 3b | 0a 58 20 20 20 20 20 20 |t_base);|.X | |00003b70| 69 66 20 28 74 65 6d 29 | 0a 58 09 7b 0a 58 09 20 |if (tem)|.X.{.X. | |00003b80| 20 69 66 20 28 6b 65 79 | 66 69 65 6c 64 73 5b 69 | if (key|fields[i| |00003b90| 5d 2e 72 65 76 65 72 73 | 65 29 0a 58 09 20 20 20 |].revers|e).X. | |00003ba0| 20 72 65 74 75 72 6e 20 | 2d 20 74 65 6d 3b 0a 58 | return |- tem;.X| |00003bb0| 20 20 20 20 20 20 20 20 | 20 20 72 65 74 75 72 6e | | return| |00003bc0| 20 74 65 6d 3b 0a 58 09 | 7d 0a 58 20 20 20 20 7d | tem;.X.|}.X }| |00003bd0| 0a 58 0a 58 20 20 72 65 | 74 75 72 6e 20 30 3b 20 |.X.X re|turn 0; | |00003be0| 20 20 20 2f 2a 20 4c 69 | 6e 65 73 20 6d 61 74 63 | /* Li|nes matc| |00003bf0| 68 20 65 78 61 63 74 6c | 79 20 2a 2f 0a 58 7d 0a |h exactl|y */.X}.| |00003c00| 58 0a 58 2f 2a 20 43 6f | 6d 70 61 72 65 20 74 77 |X.X/* Co|mpare tw| |00003c10| 6f 20 6c 69 6e 65 73 20 | 64 65 73 63 72 69 62 65 |o lines |describe| |00003c20| 64 20 62 79 20 73 74 72 | 75 63 74 75 72 65 73 0a |d by str|uctures.| |00003c30| 58 20 69 6e 20 77 68 69 | 63 68 20 74 68 65 20 66 |X in whi|ch the f| |00003c40| 69 72 73 74 20 6b 65 79 | 66 69 65 6c 64 20 69 73 |irst key|field is| |00003c50| 20 69 64 65 6e 74 69 66 | 69 65 64 20 69 6e 20 61 | identif|ied in a| |00003c60| 64 76 61 6e 63 65 2e 0a | 58 20 46 6f 72 20 70 6f |dvance..|X For po| |00003c70| 73 69 74 69 6f 6e 61 6c | 20 73 6f 72 74 69 6e 67 |sitional| sorting| |00003c80| 2c 20 61 73 73 75 6d 65 | 73 20 74 68 61 74 20 74 |, assume|s that t| |00003c90| 68 65 20 6f 72 64 65 72 | 20 6f 66 20 74 68 65 20 |he order| of the | |00003ca0| 6c 69 6e 65 73 20 69 6e | 20 63 6f 72 65 0a 58 20 |lines in| core.X | |00003cb0| 72 65 66 6c 65 63 74 73 | 20 74 68 65 69 72 20 6e |reflects| their n| |00003cc0| 6f 6d 69 6e 61 6c 20 6f | 72 64 65 72 2e 20 20 2a |ominal o|rder. *| |00003cd0| 2f 0a 58 0a 58 69 6e 74 | 0a 58 63 6f 6d 70 61 72 |/.X.Xint|.Xcompar| |00003ce0| 65 5f 70 72 65 70 61 72 | 65 64 20 28 6c 69 6e 65 |e_prepar|ed (line| |00003cf0| 31 2c 20 6c 69 6e 65 32 | 29 0a 58 20 20 20 20 20 |1, line2|).X | |00003d00| 73 74 72 75 63 74 20 6c | 69 6e 65 69 6e 66 6f 20 |struct l|ineinfo | |00003d10| 2a 6c 69 6e 65 31 2c 20 | 2a 6c 69 6e 65 32 3b 0a |*line1, |*line2;.| |00003d20| 58 7b 0a 58 20 20 69 6e | 74 20 69 3b 0a 58 20 20 |X{.X in|t i;.X | |00003d30| 69 6e 74 20 74 65 6d 3b | 0a 58 20 20 63 68 61 72 |int tem;|.X char| |00003d40| 20 2a 74 65 78 74 31 2c | 20 2a 74 65 78 74 32 3b | *text1,| *text2;| |00003d50| 0a 58 0a 58 20 20 2f 2a | 20 43 6f 6d 70 61 72 65 |.X.X /*| Compare| |00003d60| 20 75 73 69 6e 67 20 74 | 68 65 20 66 69 72 73 74 | using t|he first| |00003d70| 20 6b 65 79 66 69 65 6c | 64 2c 20 77 68 69 63 68 | keyfiel|d, which| |00003d80| 20 68 61 73 20 62 65 65 | 6e 20 66 6f 75 6e 64 20 | has bee|n found | |00003d90| 66 6f 72 20 75 73 20 61 | 6c 72 65 61 64 79 20 2a |for us a|lready *| |00003da0| 2f 0a 58 20 20 69 66 20 | 28 6b 65 79 66 69 65 6c |/.X if |(keyfiel| |00003db0| 64 73 2d 3e 70 6f 73 69 | 74 69 6f 6e 61 6c 29 0a |ds->posi|tional).| |00003dc0| 58 20 20 20 20 7b 0a 58 | 20 20 20 20 20 20 69 66 |X {.X| if| |00003dd0| 20 28 6c 69 6e 65 31 2d | 3e 74 65 78 74 20 2d 20 | (line1-|>text - | |00003de0| 74 65 78 74 5f 62 61 73 | 65 20 3e 20 6c 69 6e 65 |text_bas|e > line| |00003df0| 32 2d 3e 74 65 78 74 20 | 2d 20 74 65 78 74 5f 62 |2->text |- text_b| |00003e00| 61 73 65 29 0a 58 09 74 | 65 6d 20 3d 20 31 3b 0a |ase).X.t|em = 1;.| |00003e10| 58 20 20 20 20 20 20 65 | 6c 73 65 0a 58 09 74 65 |X e|lse.X.te| |00003e20| 6d 20 3d 20 2d 31 3b 0a | 58 20 20 20 20 7d 0a 58 |m = -1;.|X }.X| |00003e30| 20 20 65 6c 73 65 20 69 | 66 20 28 6b 65 79 66 69 | else i|f (keyfi| |00003e40| 65 6c 64 73 2d 3e 6e 75 | 6d 65 72 69 63 29 0a 58 |elds->nu|meric).X| |00003e50| 20 20 20 20 74 65 6d 20 | 3d 20 6c 69 6e 65 31 2d | tem |= line1-| |00003e60| 3e 6b 65 79 2e 6e 75 6d | 62 65 72 20 2d 20 6c 69 |>key.num|ber - li| |00003e70| 6e 65 32 2d 3e 6b 65 79 | 2e 6e 75 6d 62 65 72 3b |ne2->key|.number;| |00003e80| 0a 58 20 20 65 6c 73 65 | 0a 58 20 20 20 20 74 65 |.X else|.X te| |00003e90| 6d 20 3d 20 63 6f 6d 70 | 61 72 65 5f 66 69 65 6c |m = comp|are_fiel| |00003ea0| 64 20 28 6b 65 79 66 69 | 65 6c 64 73 2c 20 6c 69 |d (keyfi|elds, li| |00003eb0| 6e 65 31 2d 3e 6b 65 79 | 2e 74 65 78 74 2c 20 6c |ne1->key|.text, l| |00003ec0| 69 6e 65 31 2d 3e 6b 65 | 79 6c 65 6e 2c 20 30 2c |ine1->ke|ylen, 0,| |00003ed0| 20 6c 69 6e 65 32 2d 3e | 6b 65 79 2e 74 65 78 74 | line2->|key.text| |00003ee0| 2c 20 6c 69 6e 65 32 2d | 3e 6b 65 79 6c 65 6e 2c |, line2-|>keylen,| |00003ef0| 20 30 29 3b 0a 58 20 20 | 69 66 20 28 74 65 6d 29 | 0);.X |if (tem)| |00003f00| 0a 58 20 20 20 20 7b 0a | 58 20 20 20 20 20 20 69 |.X {.|X i| |00003f10| 66 20 28 6b 65 79 66 69 | 65 6c 64 73 2d 3e 72 65 |f (keyfi|elds->re| |00003f20| 76 65 72 73 65 29 0a 58 | 09 72 65 74 75 72 6e 20 |verse).X|.return | |00003f30| 2d 20 74 65 6d 3b 0a 58 | 20 20 20 20 20 20 72 65 |- tem;.X| re| |00003f40| 74 75 72 6e 20 74 65 6d | 3b 0a 58 20 20 20 20 7d |turn tem|;.X }| |00003f50| 0a 58 0a 58 20 20 74 65 | 78 74 31 20 3d 20 6c 69 |.X.X te|xt1 = li| |00003f60| 6e 65 31 2d 3e 74 65 78 | 74 3b 0a 58 20 20 74 65 |ne1->tex|t;.X te| |00003f70| 78 74 32 20 3d 20 6c 69 | 6e 65 32 2d 3e 74 65 78 |xt2 = li|ne2->tex| |00003f80| 74 3b 0a 58 0a 58 20 20 | 2f 2a 20 43 6f 6d 70 61 |t;.X.X |/* Compa| |00003f90| 72 65 20 75 73 69 6e 67 | 20 74 68 65 20 73 65 63 |re using| the sec| |00003fa0| 6f 6e 64 20 6b 65 79 66 | 69 65 6c 64 3b 0a 58 20 |ond keyf|ield;.X | |00003fb0| 20 20 20 20 69 66 20 74 | 68 61 74 20 64 6f 65 73 | if t|hat does| |00003fc0| 20 6e 6f 74 20 64 69 73 | 74 69 6e 67 75 69 73 68 | not dis|tinguish| |00003fd0| 20 74 68 65 20 6c 69 6e | 65 73 2c 20 74 72 79 20 | the lin|es, try | |00003fe0| 74 68 65 20 74 68 69 72 | 64 20 6b 65 79 66 69 65 |the thir|d keyfie| |00003ff0| 6c 64 3b 20 61 6e 64 20 | 73 6f 20 6f 6e 2e 20 2a |ld; and |so on. *| |00004000| 2f 0a 58 0a 58 20 20 66 | 6f 72 20 28 69 20 3d 20 |/.X.X f|or (i = | |00004010| 31 3b 20 69 20 3c 20 6e | 75 6d 5f 6b 65 79 66 69 |1; i < n|um_keyfi| |00004020| 65 6c 64 73 3b 20 69 2b | 2b 29 0a 58 20 20 20 20 |elds; i+|+).X | |00004030| 7b 0a 58 20 20 20 20 20 | 20 6c 6f 6e 67 20 6c 65 |{.X | long le| |00004040| 6e 67 74 68 31 2c 20 6c | 65 6e 67 74 68 32 3b 0a |ngth1, l|ength2;.| |00004050| 58 20 20 20 20 20 20 63 | 68 61 72 20 2a 73 74 61 |X c|har *sta| |00004060| 72 74 31 20 3d 20 66 69 | 6e 64 5f 66 69 65 6c 64 |rt1 = fi|nd_field| |00004070| 20 28 26 6b 65 79 66 69 | 65 6c 64 73 5b 69 5d 2c | (&keyfi|elds[i],| |00004080| 20 74 65 78 74 31 2c 20 | 26 6c 65 6e 67 74 68 31 | text1, |&length1| |00004090| 29 3b 0a 58 20 20 20 20 | 20 20 63 68 61 72 20 2a |);.X | char *| |000040a0| 73 74 61 72 74 32 20 3d | 20 66 69 6e 64 5f 66 69 |start2 =| find_fi| |000040b0| 65 6c 64 20 28 26 6b 65 | 79 66 69 65 6c 64 73 5b |eld (&ke|yfields[| |000040c0| 69 5d 2c 20 74 65 78 74 | 32 2c 20 26 6c 65 6e 67 |i], text|2, &leng| |000040d0| 74 68 32 29 3b 0a 58 20 | 20 20 20 20 20 69 6e 74 |th2);.X | int| |000040e0| 20 74 65 6d 20 3d 20 63 | 6f 6d 70 61 72 65 5f 66 | tem = c|ompare_f| |000040f0| 69 65 6c 64 20 28 26 6b | 65 79 66 69 65 6c 64 73 |ield (&k|eyfields| |00004100| 5b 69 5d 2c 20 73 74 61 | 72 74 31 2c 20 6c 65 6e |[i], sta|rt1, len| |00004110| 67 74 68 31 2c 20 74 65 | 78 74 31 20 2d 20 74 65 |gth1, te|xt1 - te| |00004120| 78 74 5f 62 61 73 65 2c | 0a 58 09 09 09 09 09 20 |xt_base,|.X..... | |00004130| 20 20 20 20 20 73 74 61 | 72 74 32 2c 20 6c 65 6e | sta|rt2, len| |00004140| 67 74 68 32 2c 20 74 65 | 78 74 32 20 2d 20 74 65 |gth2, te|xt2 - te| |00004150| 78 74 5f 62 61 73 65 29 | 3b 0a 58 20 20 20 20 20 |xt_base)|;.X | |00004160| 20 69 66 20 28 74 65 6d | 29 0a 58 09 7b 0a 58 09 | if (tem|).X.{.X.| |00004170| 20 20 69 66 20 28 6b 65 | 79 66 69 65 6c 64 73 5b | if (ke|yfields[| |00004180| 69 5d 2e 72 65 76 65 72 | 73 65 29 0a 58 09 20 20 |i].rever|se).X. | |00004190| 20 20 72 65 74 75 72 6e | 20 2d 20 74 65 6d 3b 0a | return| - tem;.| |000041a0| 58 20 20 20 20 20 20 20 | 20 20 20 72 65 74 75 72 |X | retur| |000041b0| 6e 20 74 65 6d 3b 0a 58 | 09 7d 0a 58 20 20 20 20 |n tem;.X|.}.X | |000041c0| 7d 0a 58 0a 58 20 20 72 | 65 74 75 72 6e 20 30 3b |}.X.X r|eturn 0;| |000041d0| 20 20 20 20 2f 2a 20 4c | 69 6e 65 73 20 6d 61 74 | /* L|ines mat| |000041e0| 63 68 20 65 78 61 63 74 | 6c 79 20 2a 2f 0a 58 7d |ch exact|ly */.X}| |000041f0| 0a 58 0a 58 2f 2a 20 4c | 69 6b 65 20 63 6f 6d 70 |.X.X/* L|ike comp| |00004200| 61 72 65 5f 66 75 6c 6c | 20 62 75 74 20 6d 6f 72 |are_full| but mor| |00004210| 65 20 67 65 6e 65 72 61 | 6c 2e 0a 58 20 59 6f 75 |e genera|l..X You| |00004220| 20 63 61 6e 20 70 61 73 | 73 20 61 6e 79 20 73 74 | can pas|s any st| |00004230| 72 69 6e 67 73 2c 20 61 | 6e 64 20 79 6f 75 20 63 |rings, a|nd you c| |00004240| 61 6e 20 73 61 79 20 68 | 6f 77 20 6d 61 6e 79 20 |an say h|ow many | |00004250| 6b 65 79 66 69 65 6c 64 | 73 20 74 6f 20 75 73 65 |keyfield|s to use| |00004260| 2e 0a 58 20 60 70 6f 73 | 31 27 20 61 6e 64 20 60 |..X `pos|1' and `| |00004270| 70 6f 73 32 27 20 73 68 | 6f 75 6c 64 20 69 6e 64 |pos2' sh|ould ind| |00004280| 69 63 61 74 65 20 74 68 | 65 20 6e 6f 6d 69 6e 61 |icate th|e nomina| |00004290| 6c 20 70 6f 73 69 74 69 | 6f 6e 61 6c 20 6f 72 64 |l positi|onal ord| |000042a0| 65 72 69 6e 67 20 6f 66 | 0a 58 20 74 68 65 20 74 |ering of|.X the t| |000042b0| 77 6f 20 6c 69 6e 65 73 | 20 69 6e 20 74 68 65 20 |wo lines| in the | |000042c0| 69 6e 70 75 74 2e 20 20 | 2a 2f 0a 58 0a 58 69 6e |input. |*/.X.Xin| |000042d0| 74 0a 58 63 6f 6d 70 61 | 72 65 5f 67 65 6e 65 72 |t.Xcompa|re_gener| |000042e0| 61 6c 20 28 73 74 72 31 | 2c 20 73 74 72 32 2c 20 |al (str1|, str2, | |000042f0| 70 6f 73 31 2c 20 70 6f | 73 32 2c 20 75 73 65 5f |pos1, po|s2, use_| |00004300| 6b 65 79 66 69 65 6c 64 | 73 29 0a 58 20 20 20 20 |keyfield|s).X | |00004310| 20 63 68 61 72 20 2a 73 | 74 72 31 2c 20 2a 73 74 | char *s|tr1, *st| |00004320| 72 32 3b 0a 58 20 20 20 | 20 20 6c 6f 6e 67 20 70 |r2;.X | long p| |00004330| 6f 73 31 2c 20 70 6f 73 | 32 3b 0a 58 20 20 20 20 |os1, pos|2;.X | |00004340| 20 69 6e 74 20 75 73 65 | 5f 6b 65 79 66 69 65 6c | int use|_keyfiel| |00004350| 64 73 3b 0a 58 7b 0a 58 | 20 20 69 6e 74 20 69 3b |ds;.X{.X| int i;| |00004360| 0a 58 0a 58 20 20 2f 2a | 20 43 6f 6d 70 61 72 65 |.X.X /*| Compare| |00004370| 20 75 73 69 6e 67 20 74 | 68 65 20 66 69 72 73 74 | using t|he first| |00004380| 20 6b 65 79 66 69 65 6c | 64 3b 0a 58 20 20 20 20 | keyfiel|d;.X | |00004390| 20 69 66 20 74 68 61 74 | 20 64 6f 65 73 20 6e 6f | if that| does no| |000043a0| 74 20 64 69 73 74 69 6e | 67 75 69 73 68 20 74 68 |t distin|guish th| |000043b0| 65 20 6c 69 6e 65 73 2c | 20 74 72 79 20 74 68 65 |e lines,| try the| |000043c0| 20 73 65 63 6f 6e 64 20 | 6b 65 79 66 69 65 6c 64 | second |keyfield| |000043d0| 3b 20 61 6e 64 20 73 6f | 20 6f 6e 2e 20 2a 2f 0a |; and so| on. */.| |000043e0| 58 0a 58 20 20 66 6f 72 | 20 28 69 20 3d 20 30 3b |X.X for| (i = 0;| |000043f0| 20 69 20 3c 20 75 73 65 | 5f 6b 65 79 66 69 65 6c | i < use|_keyfiel| |00004400| 64 73 3b 20 69 2b 2b 29 | 0a 58 20 20 20 20 7b 0a |ds; i++)|.X {.| |00004410| 58 20 20 20 20 20 20 6c | 6f 6e 67 20 6c 65 6e 67 |X l|ong leng| |00004420| 74 68 31 2c 20 6c 65 6e | 67 74 68 32 3b 0a 58 20 |th1, len|gth2;.X | |00004430| 20 20 20 20 20 63 68 61 | 72 20 2a 73 74 61 72 74 | cha|r *start| |00004440| 31 20 3d 20 66 69 6e 64 | 5f 66 69 65 6c 64 20 28 |1 = find|_field (| |00004450| 26 6b 65 79 66 69 65 6c | 64 73 5b 69 5d 2c 20 73 |&keyfiel|ds[i], s| |00004460| 74 72 31 2c 20 26 6c 65 | 6e 67 74 68 31 29 3b 0a |tr1, &le|ngth1);.| |00004470| 58 20 20 20 20 20 20 63 | 68 61 72 20 2a 73 74 61 |X c|har *sta| |00004480| 72 74 32 20 3d 20 66 69 | 6e 64 5f 66 69 65 6c 64 |rt2 = fi|nd_field| |00004490| 20 28 26 6b 65 79 66 69 | 65 6c 64 73 5b 69 5d 2c | (&keyfi|elds[i],| |000044a0| 20 73 74 72 32 2c 20 26 | 6c 65 6e 67 74 68 32 29 | str2, &|length2)| |000044b0| 3b 0a 58 20 20 20 20 20 | 20 69 6e 74 20 74 65 6d |;.X | int tem| |000044c0| 20 3d 20 63 6f 6d 70 61 | 72 65 5f 66 69 65 6c 64 | = compa|re_field| |000044d0| 20 28 26 6b 65 79 66 69 | 65 6c 64 73 5b 69 5d 2c | (&keyfi|elds[i],| |000044e0| 20 73 74 61 72 74 31 2c | 20 6c 65 6e 67 74 68 31 | start1,| length1| |000044f0| 2c 20 70 6f 73 31 2c 20 | 73 74 61 72 74 32 2c 20 |, pos1, |start2, | |00004500| 6c 65 6e 67 74 68 32 2c | 20 70 6f 73 32 29 3b 0a |length2,| pos2);.| |00004510| 58 20 20 20 20 20 20 69 | 66 20 28 74 65 6d 29 0a |X i|f (tem).| |00004520| 58 09 7b 0a 58 09 20 20 | 69 66 20 28 6b 65 79 66 |X.{.X. |if (keyf| |00004530| 69 65 6c 64 73 5b 69 5d | 2e 72 65 76 65 72 73 65 |ields[i]|.reverse| |00004540| 29 0a 58 09 20 20 20 20 | 72 65 74 75 72 6e 20 2d |).X. |return -| |00004550| 20 74 65 6d 3b 0a 58 20 | 20 20 20 20 20 20 20 20 | tem;.X | | |00004560| 20 72 65 74 75 72 6e 20 | 74 65 6d 3b 0a 58 09 7d | return |tem;.X.}| |00004570| 0a 58 20 20 20 20 7d 0a | 58 0a 58 20 20 72 65 74 |.X }.|X.X ret| |00004580| 75 72 6e 20 30 3b 20 20 | 20 20 2f 2a 20 4c 69 6e |urn 0; | /* Lin| |00004590| 65 73 20 6d 61 74 63 68 | 20 65 78 61 63 74 6c 79 |es match| exactly| |000045a0| 20 2a 2f 0a 58 7d 0a 58 | 0a 58 2f 2a 20 46 69 6e | */.X}.X|.X/* Fin| |000045b0| 64 20 74 68 65 20 73 74 | 61 72 74 20 61 6e 64 20 |d the st|art and | |000045c0| 6c 65 6e 67 74 68 20 6f | 66 20 61 20 66 69 65 6c |length o|f a fiel| |000045d0| 64 20 69 6e 20 60 73 74 | 72 27 20 61 63 63 6f 72 |d in `st|r' accor| |000045e0| 64 69 6e 67 20 74 6f 20 | 60 6b 65 79 66 69 65 6c |ding to |`keyfiel| |000045f0| 64 27 2e 0a 58 20 41 20 | 70 6f 69 6e 74 65 72 20 |d'..X A |pointer | |00004600| 74 6f 20 74 68 65 20 73 | 74 61 72 74 69 6e 67 20 |to the s|tarting | |00004610| 63 68 61 72 61 63 74 65 | 72 20 69 73 20 72 65 74 |characte|r is ret| |00004620| 75 72 6e 65 64 2c 20 61 | 6e 64 20 74 68 65 20 6c |urned, a|nd the l| |00004630| 65 6e 67 74 68 0a 58 20 | 69 73 20 73 74 6f 72 65 |ength.X |is store| |00004640| 64 20 69 6e 74 6f 20 74 | 68 65 20 69 6e 74 20 74 |d into t|he int t| |00004650| 68 61 74 20 60 6c 65 6e | 67 74 68 70 74 72 27 20 |hat `len|gthptr' | |00004660| 70 6f 69 6e 74 73 20 74 | 6f 2e 20 20 2a 2f 0a 58 |points t|o. */.X| |00004670| 0a 58 63 68 61 72 20 2a | 0a 58 66 69 6e 64 5f 66 |.Xchar *|.Xfind_f| |00004680| 69 65 6c 64 20 28 6b 65 | 79 66 69 65 6c 64 2c 20 |ield (ke|yfield, | |00004690| 73 74 72 2c 20 6c 65 6e | 67 74 68 70 74 72 29 0a |str, len|gthptr).| |000046a0| 58 20 20 20 20 20 73 74 | 72 75 63 74 20 6b 65 79 |X st|ruct key| |000046b0| 66 69 65 6c 64 20 2a 6b | 65 79 66 69 65 6c 64 3b |field *k|eyfield;| |000046c0| 0a 58 20 20 20 20 20 63 | 68 61 72 20 2a 73 74 72 |.X c|har *str| |000046d0| 3b 0a 58 20 20 20 20 20 | 6c 6f 6e 67 20 2a 6c 65 |;.X |long *le| |000046e0| 6e 67 74 68 70 74 72 3b | 0a 58 7b 0a 58 20 20 63 |ngthptr;|.X{.X c| |000046f0| 68 61 72 20 2a 73 74 61 | 72 74 3b 0a 58 20 20 63 |har *sta|rt;.X c| |00004700| 68 61 72 20 2a 65 6e 64 | 3b 0a 58 20 20 63 68 61 |har *end|;.X cha| |00004710| 72 20 2a 28 2a 66 75 6e | 29 20 28 29 3b 0a 58 0a |r *(*fun|) ();.X.| |00004720| 58 20 20 69 66 20 28 6b | 65 79 66 69 65 6c 64 2d |X if (k|eyfield-| |00004730| 3e 62 72 61 63 65 64 29 | 20 66 75 6e 20 3d 20 66 |>braced)| fun = f| |00004740| 69 6e 64 5f 62 72 61 63 | 65 64 5f 70 6f 73 3b 0a |ind_brac|ed_pos;.| |00004750| 58 20 20 65 6c 73 65 20 | 66 75 6e 20 3d 20 66 69 |X else |fun = fi| |00004760| 6e 64 5f 70 6f 73 3b 0a | 58 0a 58 20 20 73 74 61 |nd_pos;.|X.X sta| |00004770| 72 74 20 3d 20 28 20 2a | 66 75 6e 20 29 28 73 74 |rt = ( *|fun )(st| |00004780| 72 2c 20 6b 65 79 66 69 | 65 6c 64 2d 3e 73 74 61 |r, keyfi|eld->sta| |00004790| 72 74 77 6f 72 64 73 2c | 20 6b 65 79 66 69 65 6c |rtwords,| keyfiel| |000047a0| 64 2d 3e 73 74 61 72 74 | 63 68 61 72 73 2c 0a 58 |d->start|chars,.X| |000047b0| 09 20 20 20 20 20 20 20 | 6b 65 79 66 69 65 6c 64 |. |keyfield| |000047c0| 2d 3e 69 67 6e 6f 72 65 | 5f 62 6c 61 6e 6b 73 29 |->ignore|_blanks)| |000047d0| 3b 0a 58 20 20 69 66 20 | 28 6b 65 79 66 69 65 6c |;.X if |(keyfiel| |000047e0| 64 2d 3e 65 6e 64 77 6f | 72 64 73 20 3c 20 30 29 |d->endwo|rds < 0)| |000047f0| 0a 58 20 20 20 20 7b 0a | 58 20 20 20 20 20 20 69 |.X {.|X i| |00004800| 66 20 28 6b 65 79 66 69 | 65 6c 64 2d 3e 62 72 61 |f (keyfi|eld->bra| |00004810| 63 65 64 29 0a 58 09 65 | 6e 64 20 3d 20 66 69 6e |ced).X.e|nd = fin| |00004820| 64 5f 62 72 61 63 65 64 | 5f 65 6e 64 20 28 73 74 |d_braced|_end (st| |00004830| 61 72 74 29 3b 0a 58 20 | 20 20 20 20 20 65 6c 73 |art);.X | els| |00004840| 65 0a 58 09 7b 0a 58 09 | 20 20 65 6e 64 20 3d 20 |e.X.{.X.| end = | |00004850| 73 74 61 72 74 3b 0a 58 | 09 20 20 77 68 69 6c 65 |start;.X|. while| |00004860| 20 28 2a 65 6e 64 20 26 | 26 20 2a 65 6e 64 20 21 | (*end &|& *end !| |00004870| 3d 20 27 5c 6e 27 29 20 | 65 6e 64 2b 2b 3b 0a 58 |= '\n') |end++;.X| |00004880| 09 7d 0a 58 20 20 20 20 | 7d 0a 58 20 20 65 6c 73 |.}.X |}.X els| |00004890| 65 0a 58 20 20 20 20 7b | 0a 58 20 20 20 20 20 20 |e.X {|.X | |000048a0| 65 6e 64 20 3d 20 28 20 | 2a 66 75 6e 20 29 28 73 |end = ( |*fun )(s| |000048b0| 74 72 2c 20 6b 65 79 66 | 69 65 6c 64 2d 3e 65 6e |tr, keyf|ield->en| |000048c0| 64 77 6f 72 64 73 2c 20 | 6b 65 79 66 69 65 6c 64 |dwords, |keyfield| |000048d0| 2d 3e 65 6e 64 63 68 61 | 72 73 2c 20 30 29 3b 0a |->endcha|rs, 0);.| |000048e0| 58 20 20 20 20 20 20 69 | 66 20 28 65 6e 64 20 2d |X i|f (end -| |000048f0| 20 73 74 72 20 3c 20 73 | 74 61 72 74 20 2d 20 73 | str < s|tart - s| |00004900| 74 72 29 20 65 6e 64 20 | 3d 20 73 74 61 72 74 3b |tr) end |= start;| |00004910| 0a 58 20 20 20 20 7d 0a | 58 20 20 2a 6c 65 6e 67 |.X }.|X *leng| |00004920| 74 68 70 74 72 20 3d 20 | 65 6e 64 20 2d 20 73 74 |thptr = |end - st| |00004930| 61 72 74 3b 0a 58 20 20 | 72 65 74 75 72 6e 20 73 |art;.X |return s| |00004940| 74 61 72 74 3b 0a 58 7d | 0a 58 0a 58 2f 2a 20 46 |tart;.X}|.X.X/* F| |00004950| 69 6e 64 20 61 20 70 6f | 69 6e 74 65 72 20 74 6f |ind a po|inter to| |00004960| 20 61 20 73 70 65 63 69 | 66 69 65 64 20 70 6c 61 | a speci|fied pla| |00004970| 63 65 20 77 69 74 68 69 | 6e 20 60 73 74 72 27 2c |ce withi|n `str',| |00004980| 0a 58 20 73 6b 69 70 70 | 69 6e 67 20 28 66 72 6f |.X skipp|ing (fro| |00004990| 6d 20 74 68 65 20 62 65 | 67 69 6e 6e 69 6e 67 29 |m the be|ginning)| |000049a0| 20 60 77 6f 72 64 73 27 | 20 77 6f 72 64 73 20 61 | `words'| words a| |000049b0| 6e 64 20 74 68 65 6e 20 | 60 63 68 61 72 73 27 20 |nd then |`chars' | |000049c0| 63 68 61 72 73 2e 0a 58 | 20 49 66 20 60 69 67 6e |chars..X| If `ign| |000049d0| 6f 72 65 5f 62 6c 61 6e | 6b 73 27 20 69 73 20 6e |ore_blan|ks' is n| |000049e0| 6f 6e 7a 65 72 6f 2c 20 | 77 65 20 73 6b 69 70 20 |onzero, |we skip | |000049f0| 61 6c 6c 20 62 6c 61 6e | 6b 73 0a 58 20 61 66 74 |all blan|ks.X aft| |00004a00| 65 72 20 66 69 6e 64 69 | 6e 67 20 74 68 65 20 73 |er findi|ng the s| |00004a10| 70 65 63 69 66 69 65 64 | 20 77 6f 72 64 2e 20 20 |pecified| word. | |00004a20| 2a 2f 0a 58 0a 58 63 68 | 61 72 20 2a 0a 58 66 69 |*/.X.Xch|ar *.Xfi| |00004a30| 6e 64 5f 70 6f 73 20 28 | 73 74 72 2c 20 77 6f 72 |nd_pos (|str, wor| |00004a40| 64 73 2c 20 63 68 61 72 | 73 2c 20 69 67 6e 6f 72 |ds, char|s, ignor| |00004a50| 65 5f 62 6c 61 6e 6b 73 | 29 0a 58 20 20 20 20 20 |e_blanks|).X | |00004a60| 63 68 61 72 20 2a 73 74 | 72 3b 0a 58 20 20 20 20 |char *st|r;.X | |00004a70| 20 69 6e 74 20 77 6f 72 | 64 73 2c 20 63 68 61 72 | int wor|ds, char| |00004a80| 73 3b 0a 58 20 20 20 20 | 20 69 6e 74 20 69 67 6e |s;.X | int ign| |00004a90| 6f 72 65 5f 62 6c 61 6e | 6b 73 3b 0a 58 7b 0a 58 |ore_blan|ks;.X{.X| |00004aa0| 20 20 69 6e 74 20 69 3b | 0a 58 20 20 63 68 61 72 | int i;|.X char| |00004ab0| 20 2a 70 20 3d 20 73 74 | 72 3b 0a 58 0a 58 20 20 | *p = st|r;.X.X | |00004ac0| 66 6f 72 20 28 69 20 3d | 20 30 3b 20 69 20 3c 20 |for (i =| 0; i < | |00004ad0| 77 6f 72 64 73 3b 20 69 | 2b 2b 29 0a 58 20 20 20 |words; i|++).X | |00004ae0| 20 7b 0a 58 20 20 20 20 | 20 20 63 68 61 72 20 63 | {.X | char c| |00004af0| 3b 0a 58 20 20 20 20 20 | 20 2f 2a 20 46 69 6e 64 |;.X | /* Find| |00004b00| 20 6e 65 78 74 20 62 75 | 6e 63 68 20 6f 66 20 6e | next bu|nch of n| |00004b10| 6f 6e 62 6c 61 6e 6b 73 | 20 61 6e 64 20 73 6b 69 |onblanks| and ski| |00004b20| 70 20 74 68 65 6d 2e 20 | 2a 2f 0a 58 20 20 20 20 |p them. |*/.X | |00004b30| 20 20 77 68 69 6c 65 20 | 28 28 63 20 3d 20 2a 70 | while |((c = *p| |00004b40| 29 20 3d 3d 20 27 20 27 | 20 7c 7c 20 63 20 3d 3d |) == ' '| || c ==| |00004b50| 20 27 5c 74 27 29 20 70 | 2b 2b 3b 0a 58 20 20 20 | '\t') p|++;.X | |00004b60| 20 20 20 77 68 69 6c 65 | 20 28 28 63 20 3d 20 2a | while| ((c = *| |00004b70| 70 29 20 26 26 20 63 20 | 21 3d 20 27 5c 6e 27 20 |p) && c |!= '\n' | |00004b80| 26 26 20 21 28 63 20 3d | 3d 20 27 20 27 20 7c 7c |&& !(c =|= ' ' ||| |00004b90| 20 63 20 3d 3d 20 27 5c | 74 27 29 29 20 70 2b 2b | c == '\|t')) p++| |00004ba0| 3b 0a 58 20 20 20 20 20 | 20 69 66 20 28 21 2a 70 |;.X | if (!*p| |00004bb0| 20 7c 7c 20 2a 70 20 3d | 3d 20 27 5c 6e 27 29 20 | || *p =|= '\n') | |00004bc0| 72 65 74 75 72 6e 20 70 | 3b 0a 58 20 20 20 20 7d |return p|;.X }| |00004bd0| 0a 58 0a 58 20 20 77 68 | 69 6c 65 20 28 2a 70 20 |.X.X wh|ile (*p | |00004be0| 3d 3d 20 27 20 27 20 7c | 7c 20 2a 70 20 3d 3d 20 |== ' ' ||| *p == | |00004bf0| 27 5c 74 27 29 20 70 2b | 2b 3b 0a 58 0a 58 20 20 |'\t') p+|+;.X.X | |00004c00| 66 6f 72 20 28 69 20 3d | 20 30 3b 20 69 20 3c 20 |for (i =| 0; i < | |00004c10| 63 68 61 72 73 3b 20 69 | 2b 2b 29 0a 58 20 20 20 |chars; i|++).X | |00004c20| 20 7b 0a 58 20 20 20 20 | 20 20 69 66 20 28 21 2a | {.X | if (!*| |00004c30| 70 20 20 7c 7c 20 2a 70 | 20 3d 3d 20 27 5c 6e 27 |p || *p| == '\n'| |00004c40| 29 20 62 72 65 61 6b 3b | 0a 58 20 20 20 20 20 20 |) break;|.X | |00004c50| 70 2b 2b 3b 0a 58 20 20 | 20 20 7d 0a 58 20 20 72 |p++;.X | }.X r| |00004c60| 65 74 75 72 6e 20 70 3b | 0a 58 7d 0a 58 0a 58 2f |eturn p;|.X}.X.X/| |00004c70| 2a 20 4c 69 6b 65 20 66 | 69 6e 64 5f 70 6f 73 20 |* Like f|ind_pos | |00004c80| 62 75 74 20 61 73 73 75 | 6d 65 73 20 74 68 61 74 |but assu|mes that| |00004c90| 20 65 61 63 68 20 66 69 | 65 6c 64 20 69 73 20 73 | each fi|eld is s| |00004ca0| 75 72 72 6f 75 6e 64 65 | 64 20 62 79 20 62 72 61 |urrounde|d by bra| |00004cb0| 63 65 73 0a 58 20 61 6e | 64 20 74 68 61 74 20 62 |ces.X an|d that b| |00004cc0| 72 61 63 65 73 20 77 69 | 74 68 69 6e 20 66 69 65 |races wi|thin fie| |00004cd0| 6c 64 73 20 61 72 65 20 | 62 61 6c 61 6e 63 65 64 |lds are |balanced| |00004ce0| 2e 20 2a 2f 0a 58 0a 58 | 63 68 61 72 20 2a 0a 58 |. */.X.X|char *.X| |00004cf0| 66 69 6e 64 5f 62 72 61 | 63 65 64 5f 70 6f 73 20 |find_bra|ced_pos | |00004d00| 28 73 74 72 2c 20 77 6f | 72 64 73 2c 20 63 68 61 |(str, wo|rds, cha| |00004d10| 72 73 2c 20 69 67 6e 6f | 72 65 5f 62 6c 61 6e 6b |rs, igno|re_blank| |00004d20| 73 29 0a 58 20 20 20 20 | 20 63 68 61 72 20 2a 73 |s).X | char *s| |00004d30| 74 72 3b 0a 58 20 20 20 | 20 20 69 6e 74 20 77 6f |tr;.X | int wo| |00004d40| 72 64 73 2c 20 63 68 61 | 72 73 3b 0a 58 20 20 20 |rds, cha|rs;.X | |00004d50| 20 20 69 6e 74 20 69 67 | 6e 6f 72 65 5f 62 6c 61 | int ig|nore_bla| |00004d60| 6e 6b 73 3b 0a 58 7b 0a | 58 20 20 69 6e 74 20 69 |nks;.X{.|X int i| |00004d70| 3b 0a 58 20 20 69 6e 74 | 20 62 72 61 63 65 6c 65 |;.X int| bracele| |00004d80| 76 65 6c 3b 0a 58 20 20 | 63 68 61 72 20 2a 70 20 |vel;.X |char *p | |00004d90| 3d 20 73 74 72 3b 0a 58 | 20 20 63 68 61 72 20 63 |= str;.X| char c| |00004da0| 3b 0a 58 0a 58 20 20 66 | 6f 72 20 28 69 20 3d 20 |;.X.X f|or (i = | |00004db0| 30 3b 20 69 20 3c 20 77 | 6f 72 64 73 3b 20 69 2b |0; i < w|ords; i+| |00004dc0| 2b 29 0a 58 20 20 20 20 | 7b 0a 58 20 20 20 20 20 |+).X |{.X | |00004dd0| 20 62 72 61 63 65 6c 65 | 76 65 6c 20 3d 20 31 3b | bracele|vel = 1;| |00004de0| 0a 58 20 20 20 20 20 20 | 77 68 69 6c 65 20 28 28 |.X |while ((| |00004df0| 63 20 3d 20 2a 70 2b 2b | 29 20 21 3d 20 27 7b 27 |c = *p++|) != '{'| |00004e00| 20 26 26 20 63 20 21 3d | 20 27 5c 6e 27 20 26 26 | && c !=| '\n' &&| |00004e10| 20 63 29 3b 0a 58 20 20 | 20 20 20 20 69 66 20 28 | c);.X | if (| |00004e20| 63 20 21 3d 20 27 7b 27 | 29 0a 58 09 72 65 74 75 |c != '{'|).X.retu| |00004e30| 72 6e 20 70 20 2d 20 31 | 3b 0a 58 20 20 20 20 20 |rn p - 1|;.X | |00004e40| 20 77 68 69 6c 65 20 28 | 62 72 61 63 65 6c 65 76 | while (|bracelev| |00004e50| 65 6c 29 0a 58 09 7b 0a | 58 09 20 20 63 20 3d 20 |el).X.{.|X. c = | |00004e60| 2a 70 2b 2b 3b 0a 58 09 | 20 20 69 66 20 28 63 20 |*p++;.X.| if (c | |00004e70| 3d 3d 20 27 7b 27 29 20 | 62 72 61 63 65 6c 65 76 |== '{') |bracelev| |00004e80| 65 6c 2b 2b 3b 0a 58 09 | 20 20 69 66 20 28 63 20 |el++;.X.| if (c | |00004e90| 3d 3d 20 27 7d 27 29 20 | 62 72 61 63 65 6c 65 76 |== '}') |bracelev| |00004ea0| 65 6c 2d 2d 3b 0a 58 09 | 20 20 69 66 20 28 63 20 |el--;.X.| if (c | |00004eb0| 3d 3d 20 27 5c 5c 27 29 | 20 63 20 3d 20 2a 70 2b |== '\\')| c = *p+| |00004ec0| 2b 3b 09 2f 2a 20 5c 20 | 71 75 6f 74 65 73 20 62 |+;./* \ |quotes b| |00004ed0| 72 61 63 65 73 20 61 6e | 64 20 5c 20 2a 2f 0a 58 |races an|d \ */.X| |00004ee0| 09 20 20 69 66 20 28 63 | 20 3d 3d 20 30 20 7c 7c |. if (c| == 0 ||| |00004ef0| 20 63 20 3d 3d 20 27 5c | 6e 27 29 20 72 65 74 75 | c == '\|n') retu| |00004f00| 72 6e 20 70 2d 31 3b 0a | 58 09 7d 0a 58 20 20 20 |rn p-1;.|X.}.X | |00004f10| 20 7d 0a 58 0a 58 20 20 | 77 68 69 6c 65 20 28 28 | }.X.X |while ((| |00004f20| 63 20 3d 20 2a 70 2b 2b | 29 20 21 3d 20 27 7b 27 |c = *p++|) != '{'| |00004f30| 20 26 26 20 63 20 21 3d | 20 27 5c 6e 27 20 26 26 | && c !=| '\n' &&| |00004f40| 20 63 29 3b 0a 58 0a 58 | 20 20 69 66 20 28 63 20 | c);.X.X| if (c | |00004f50| 21 3d 20 27 7b 27 29 0a | 58 20 20 20 20 72 65 74 |!= '{').|X ret| |00004f60| 75 72 6e 20 70 2d 31 3b | 0a 58 0a 58 20 20 69 66 |urn p-1;|.X.X if| |00004f70| 20 28 69 67 6e 6f 72 65 | 5f 62 6c 61 6e 6b 73 29 | (ignore|_blanks)| |00004f80| 0a 58 20 20 20 20 77 68 | 69 6c 65 20 28 28 63 20 |.X wh|ile ((c | |00004f90| 3d 20 2a 70 29 20 3d 3d | 20 27 20 27 20 7c 7c 20 |= *p) ==| ' ' || | |00004fa0| 63 20 3d 3d 20 27 5c 74 | 27 29 20 70 2b 2b 3b 0a |c == '\t|') p++;.| |00004fb0| 58 20 20 0a 58 20 20 66 | 6f 72 20 28 69 20 3d 20 |X .X f|or (i = | |00004fc0| 30 3b 20 69 20 3c 20 63 | 68 61 72 73 3b 20 69 2b |0; i < c|hars; i+| |00004fd0| 2b 29 0a 58 20 20 20 20 | 7b 0a 58 20 20 20 20 20 |+).X |{.X | |00004fe0| 20 69 66 20 28 21 2a 70 | 20 20 7c 7c 20 2a 70 20 | if (!*p| || *p | |00004ff0| 3d 3d 20 27 5c 6e 27 29 | 20 62 72 65 61 6b 3b 0a |== '\n')| break;.| |00005000| 58 20 20 20 20 20 20 70 | 2b 2b 3b 0a 58 20 20 20 |X p|++;.X | |00005010| 20 7d 0a 58 20 20 72 65 | 74 75 72 6e 20 70 3b 0a | }.X re|turn p;.| |00005020| 58 7d 0a 58 0a 58 2f 2a | 20 46 69 6e 64 20 74 68 |X}.X.X/*| Find th| |00005030| 65 20 65 6e 64 20 6f 66 | 20 74 68 65 20 62 61 6c |e end of| the bal| |00005040| 61 6e 63 65 64 2d 62 72 | 61 63 65 20 66 69 65 6c |anced-br|ace fiel| |00005050| 64 20 77 68 69 63 68 20 | 73 74 61 72 74 73 20 61 |d which |starts a| |00005060| 74 20 60 73 74 72 27 2e | 0a 58 20 20 54 68 65 20 |t `str'.|.X The | |00005070| 70 6f 73 69 74 69 6f 6e | 20 72 65 74 75 72 6e 65 |position| returne| |00005080| 64 20 69 73 20 6a 75 73 | 74 20 62 65 66 6f 72 65 |d is jus|t before| |00005090| 20 74 68 65 20 63 6c 6f | 73 69 6e 67 20 62 72 61 | the clo|sing bra| |000050a0| 63 65 2e 20 2a 2f 0a 58 | 0a 58 63 68 61 72 20 2a |ce. */.X|.Xchar *| |000050b0| 0a 58 66 69 6e 64 5f 62 | 72 61 63 65 64 5f 65 6e |.Xfind_b|raced_en| |000050c0| 64 20 28 73 74 72 29 0a | 58 20 20 20 20 20 63 68 |d (str).|X ch| |000050d0| 61 72 20 2a 73 74 72 3b | 0a 58 7b 0a 58 20 20 69 |ar *str;|.X{.X i| |000050e0| 6e 74 20 62 72 61 63 65 | 6c 65 76 65 6c 3b 0a 58 |nt brace|level;.X| |000050f0| 20 20 63 68 61 72 20 2a | 70 20 3d 20 73 74 72 3b | char *|p = str;| |00005100| 0a 58 20 20 63 68 61 72 | 20 63 3b 0a 58 0a 58 20 |.X char| c;.X.X | |00005110| 20 62 72 61 63 65 6c 65 | 76 65 6c 20 3d 20 31 3b | bracele|vel = 1;| |00005120| 0a 58 20 20 77 68 69 6c | 65 20 28 62 72 61 63 65 |.X whil|e (brace| |00005130| 6c 65 76 65 6c 29 0a 58 | 20 20 20 20 7b 0a 58 20 |level).X| {.X | |00005140| 20 20 20 20 20 63 20 3d | 20 2a 70 2b 2b 3b 0a 58 | c =| *p++;.X| |00005150| 20 20 20 20 20 20 69 66 | 20 28 63 20 3d 3d 20 27 | if| (c == '| |00005160| 7b 27 29 20 62 72 61 63 | 65 6c 65 76 65 6c 2b 2b |{') brac|elevel++| |00005170| 3b 0a 58 20 20 20 20 20 | 20 69 66 20 28 63 20 3d |;.X | if (c =| |00005180| 3d 20 27 7d 27 29 20 62 | 72 61 63 65 6c 65 76 65 |= '}') b|raceleve| |00005190| 6c 2d 2d 3b 0a 58 20 20 | 20 20 20 20 69 66 20 28 |l--;.X | if (| |000051a0| 63 20 3d 3d 20 27 5c 5c | 27 29 20 63 20 3d 20 2a |c == '\\|') c = *| |000051b0| 70 2b 2b 3b 0a 58 20 20 | 20 20 20 20 69 66 20 28 |p++;.X | if (| |000051c0| 63 20 3d 3d 20 30 20 7c | 7c 20 63 20 3d 3d 20 27 |c == 0 ||| c == '| |000051d0| 5c 6e 27 29 20 72 65 74 | 75 72 6e 20 70 2d 31 3b |\n') ret|urn p-1;| |000051e0| 0a 58 20 20 20 20 7d 0a | 58 20 20 72 65 74 75 72 |.X }.|X retur| |000051f0| 6e 20 70 20 2d 20 31 3b | 0a 58 7d 0a 58 0a 58 6c |n p - 1;|.X}.X.Xl| |00005200| 6f 6e 67 0a 58 66 69 6e | 64 5f 76 61 6c 75 65 20 |ong.Xfin|d_value | |00005210| 28 73 74 61 72 74 2c 20 | 6c 65 6e 67 74 68 29 0a |(start, |length).| |00005220| 58 20 20 20 20 20 63 68 | 61 72 20 2a 73 74 61 72 |X ch|ar *star| |00005230| 74 3b 0a 58 20 20 20 20 | 20 6c 6f 6e 67 20 6c 65 |t;.X | long le| |00005240| 6e 67 74 68 3b 0a 58 7b | 0a 58 20 20 77 68 69 6c |ngth;.X{|.X whil| |00005250| 65 20 28 6c 65 6e 67 74 | 68 20 21 3d 20 30 4c 29 |e (lengt|h != 0L)| |00005260| 20 7b 0a 58 20 20 20 20 | 69 66 20 28 69 73 64 69 | {.X |if (isdi| |00005270| 67 69 74 28 2a 73 74 61 | 72 74 29 29 0a 58 20 20 |git(*sta|rt)).X | |00005280| 20 20 20 20 72 65 74 75 | 72 6e 20 61 74 6f 6c 28 | retu|rn atol(| |00005290| 73 74 61 72 74 29 3b 0a | 58 20 20 20 20 6c 65 6e |start);.|X len| |000052a0| 67 74 68 2d 2d 3b 0a 58 | 20 20 20 20 73 74 61 72 |gth--;.X| star| |000052b0| 74 2b 2b 3b 0a 58 20 20 | 7d 0a 58 20 20 72 65 74 |t++;.X |}.X ret| |000052c0| 75 72 6e 20 30 6c 3b 0a | 58 7d 0a 58 0a 58 2f 2a |urn 0l;.|X}.X.X/*| |000052d0| 20 56 65 63 74 6f 72 20 | 75 73 65 64 20 74 6f 20 | Vector |used to | |000052e0| 74 72 61 6e 73 6c 61 74 | 65 20 63 68 61 72 61 63 |translat|e charac| |000052f0| 74 65 72 73 20 66 6f 72 | 20 63 6f 6d 70 61 72 69 |ters for| compari| |00005300| 73 6f 6e 2e 0a 58 20 20 | 20 54 68 69 73 20 69 73 |son..X | This is| |00005310| 20 68 6f 77 20 77 65 20 | 6d 61 6b 65 20 61 6c 6c | how we |make all| |00005320| 20 61 6c 70 68 61 6e 75 | 6d 65 72 69 63 73 20 66 | alphanu|merics f| |00005330| 6f 6c 6c 6f 77 20 61 6c | 6c 20 65 6c 73 65 2c 0a |ollow al|l else,.| |00005340| 58 20 20 20 61 6e 64 20 | 69 67 6e 6f 72 65 20 63 |X and |ignore c| |00005350| 61 73 65 20 69 6e 20 74 | 68 65 20 66 69 72 73 74 |ase in t|he first| |00005360| 20 73 6f 72 74 69 6e 67 | 2e 20 20 2a 2f 0a 58 69 | sorting|. */.Xi| |00005370| 6e 74 20 63 68 61 72 5f | 6f 72 64 65 72 5b 32 35 |nt char_|order[25| |00005380| 36 5d 3b 0a 58 0a 58 69 | 6e 69 74 5f 63 68 61 72 |6];.X.Xi|nit_char| |00005390| 5f 6f 72 64 65 72 20 28 | 29 0a 58 7b 0a 58 20 20 |_order (|).X{.X | |000053a0| 69 6e 74 20 69 3b 0a 58 | 20 20 66 6f 72 20 28 69 |int i;.X| for (i| |000053b0| 20 3d 20 31 3b 20 69 20 | 3c 20 32 35 36 3b 20 69 | = 1; i |< 256; i| |000053c0| 2b 2b 29 0a 58 20 20 20 | 20 63 68 61 72 5f 6f 72 |++).X | char_or| |000053d0| 64 65 72 5b 69 5d 20 3d | 20 69 3b 0a 58 0a 58 20 |der[i] =| i;.X.X | |000053e0| 20 66 6f 72 20 28 69 20 | 3d 20 27 30 27 3b 20 69 | for (i |= '0'; i| |000053f0| 20 3c 3d 20 27 39 27 3b | 20 69 2b 2b 29 0a 58 20 | <= '9';| i++).X | |00005400| 20 20 20 63 68 61 72 5f | 6f 72 64 65 72 5b 69 5d | char_|order[i]| |00005410| 20 2b 3d 20 35 31 32 3b | 0a 58 0a 58 20 20 66 6f | += 512;|.X.X fo| |00005420| 72 20 28 69 20 3d 20 27 | 61 27 3b 20 69 20 3c 3d |r (i = '|a'; i <=| |00005430| 20 27 7a 27 3b 20 69 2b | 2b 29 20 7b 0a 58 20 20 | 'z'; i+|+) {.X | |00005440| 20 20 63 68 61 72 5f 6f | 72 64 65 72 5b 69 5d 20 | char_o|rder[i] | |00005450| 3d 20 35 31 32 20 2b 20 | 69 3b 0a 58 20 20 20 20 |= 512 + |i;.X | |00005460| 63 68 61 72 5f 6f 72 64 | 65 72 5b 69 20 2b 20 27 |char_ord|er[i + '| |00005470| 41 27 20 2d 20 27 61 27 | 5d 20 3d 20 35 31 32 20 |A' - 'a'|] = 512 | |00005480| 2b 20 69 3b 0a 58 20 20 | 7d 0a 58 7d 0a 58 0a 58 |+ i;.X |}.X}.X.X| |00005490| 2f 2a 20 43 6f 6d 70 61 | 72 65 20 74 77 6f 20 66 |/* Compa|re two f| |000054a0| 69 65 6c 64 73 20 28 65 | 61 63 68 20 73 70 65 63 |ields (e|ach spec| |000054b0| 69 66 69 65 64 20 61 73 | 20 61 20 73 74 61 72 74 |ified as| a start| |000054c0| 20 70 6f 69 6e 74 65 72 | 20 61 6e 64 20 61 20 63 | pointer| and a c| |000054d0| 68 61 72 61 63 74 65 72 | 20 63 6f 75 6e 74 29 0a |haracter| count).| |000054e0| 58 20 61 63 63 6f 72 64 | 69 6e 67 20 74 6f 20 60 |X accord|ing to `| |000054f0| 6b 65 79 66 69 65 6c 64 | 27 2e 20 20 54 68 65 20 |keyfield|'. The | |00005500| 73 69 67 6e 20 6f 66 20 | 74 68 65 20 76 61 6c 75 |sign of |the valu| |00005510| 65 20 72 65 70 6f 72 74 | 73 20 74 68 65 20 72 65 |e report|s the re| |00005520| 6c 61 74 69 6f 6e 20 62 | 65 74 77 65 65 6e 20 74 |lation b|etween t| |00005530| 68 65 20 66 69 65 6c 64 | 73 20 2a 2f 0a 58 0a 58 |he field|s */.X.X| |00005540| 69 6e 74 0a 58 63 6f 6d | 70 61 72 65 5f 66 69 65 |int.Xcom|pare_fie| |00005550| 6c 64 20 28 6b 65 79 66 | 69 65 6c 64 2c 20 73 74 |ld (keyf|ield, st| |00005560| 61 72 74 31 2c 20 6c 65 | 6e 67 74 68 31 2c 20 70 |art1, le|ngth1, p| |00005570| 6f 73 31 2c 20 73 74 61 | 72 74 32 2c 20 6c 65 6e |os1, sta|rt2, len| |00005580| 67 74 68 32 2c 20 70 6f | 73 32 29 0a 58 20 20 20 |gth2, po|s2).X | |00005590| 20 20 73 74 72 75 63 74 | 20 6b 65 79 66 69 65 6c | struct| keyfiel| |000055a0| 64 20 2a 6b 65 79 66 69 | 65 6c 64 3b 0a 58 20 20 |d *keyfi|eld;.X | |000055b0| 20 20 20 63 68 61 72 20 | 2a 73 74 61 72 74 31 3b | char |*start1;| |000055c0| 0a 58 20 20 20 20 20 6c | 6f 6e 67 20 6c 65 6e 67 |.X l|ong leng| |000055d0| 74 68 31 3b 0a 58 20 20 | 20 20 20 6c 6f 6e 67 20 |th1;.X | long | |000055e0| 70 6f 73 31 3b 0a 58 20 | 20 20 20 20 63 68 61 72 |pos1;.X | char| |000055f0| 20 2a 73 74 61 72 74 32 | 3b 0a 58 20 20 20 20 20 | *start2|;.X | |00005600| 6c 6f 6e 67 20 6c 65 6e | 67 74 68 32 3b 0a 58 20 |long len|gth2;.X | |00005610| 20 20 20 20 6c 6f 6e 67 | 20 70 6f 73 32 3b 0a 58 | long| pos2;.X| |00005620| 7b 0a 58 20 20 69 66 20 | 28 6b 65 79 66 69 65 6c |{.X if |(keyfiel| |00005630| 64 73 2d 3e 70 6f 73 69 | 74 69 6f 6e 61 6c 29 0a |ds->posi|tional).| |00005640| 58 20 20 20 20 7b 0a 58 | 20 20 20 20 20 20 69 66 |X {.X| if| |00005650| 20 28 70 6f 73 31 20 3e | 20 70 6f 73 32 29 0a 58 | (pos1 >| pos2).X| |00005660| 09 72 65 74 75 72 6e 20 | 31 3b 0a 58 20 20 20 20 |.return |1;.X | |00005670| 20 20 65 6c 73 65 0a 58 | 09 72 65 74 75 72 6e 20 | else.X|.return | |00005680| 2d 31 3b 0a 58 20 20 20 | 20 7d 0a 58 20 20 69 66 |-1;.X | }.X if| |00005690| 20 28 6b 65 79 66 69 65 | 6c 64 2d 3e 6e 75 6d 65 | (keyfie|ld->nume| |000056a0| 72 69 63 29 0a 58 20 20 | 20 20 7b 0a 58 09 6c 6f |ric).X | {.X.lo| |000056b0| 6e 67 20 76 61 6c 75 65 | 20 3d 20 66 69 6e 64 5f |ng value| = find_| |000056c0| 76 61 6c 75 65 20 28 73 | 74 61 72 74 31 2c 20 6c |value (s|tart1, l| |000056d0| 65 6e 67 74 68 31 29 20 | 2d 20 66 69 6e 64 5f 76 |ength1) |- find_v| |000056e0| 61 6c 75 65 20 28 73 74 | 61 72 74 32 2c 20 6c 65 |alue (st|art2, le| |000056f0| 6e 67 74 68 32 29 3b 0a | 58 20 20 20 20 20 20 69 |ngth2);.|X i| |00005700| 66 20 28 76 61 6c 75 65 | 20 3e 20 30 29 20 72 65 |f (value| > 0) re| |00005710| 74 75 72 6e 20 31 3b 0a | 58 20 20 20 20 20 20 69 |turn 1;.|X i| |00005720| 66 20 28 76 61 6c 75 65 | 20 3c 20 30 29 20 72 65 |f (value| < 0) re| |00005730| 74 75 72 6e 20 2d 31 3b | 0a 58 20 20 20 20 20 20 |turn -1;|.X | |00005740| 72 65 74 75 72 6e 20 30 | 3b 0a 58 20 20 20 20 7d |return 0|;.X }| |00005750| 0a 58 20 20 65 6c 73 65 | 0a 58 20 20 20 20 7b 0a |.X else|.X {.| |00005760| 58 20 20 20 20 20 20 63 | 68 61 72 20 2a 70 31 20 |X c|har *p1 | |00005770| 3d 20 73 74 61 72 74 31 | 3b 0a 58 20 20 20 20 20 |= start1|;.X | |00005780| 20 63 68 61 72 20 2a 70 | 32 20 3d 20 73 74 61 72 | char *p|2 = star| |00005790| 74 32 3b 0a 58 20 20 20 | 20 20 20 63 68 61 72 20 |t2;.X | char | |000057a0| 2a 65 31 20 3d 20 73 74 | 61 72 74 31 20 2b 20 6c |*e1 = st|art1 + l| |000057b0| 65 6e 67 74 68 31 3b 0a | 58 20 20 20 20 20 20 63 |ength1;.|X c| |000057c0| 68 61 72 20 2a 65 32 20 | 3d 20 73 74 61 72 74 32 |har *e2 |= start2| |000057d0| 20 2b 20 6c 65 6e 67 74 | 68 32 3b 0a 58 0a 58 20 | + lengt|h2;.X.X | |000057e0| 20 20 20 20 20 69 6e 74 | 20 66 6f 6c 64 5f 63 61 | int| fold_ca| |000057f0| 73 65 20 3d 20 6b 65 79 | 66 69 65 6c 64 2d 3e 66 |se = key|field->f| |00005800| 6f 6c 64 5f 63 61 73 65 | 3b 0a 58 0a 58 20 20 20 |old_case|;.X.X | |00005810| 20 20 20 77 68 69 6c 65 | 20 28 31 29 0a 58 09 7b | while| (1).X.{| |00005820| 0a 58 09 20 20 69 6e 74 | 20 63 31 2c 20 63 32 3b |.X. int| c1, c2;| |00005830| 0a 58 0a 58 09 20 20 69 | 66 20 28 70 31 20 3d 3d |.X.X. i|f (p1 ==| |00005840| 20 65 31 29 20 63 31 20 | 3d 20 30 3b 0a 58 09 20 | e1) c1 |= 0;.X. | |00005850| 20 65 6c 73 65 20 63 31 | 20 3d 20 2a 70 31 2b 2b | else c1| = *p1++| |00005860| 3b 0a 58 09 20 20 69 66 | 20 28 70 32 20 3d 3d 20 |;.X. if| (p2 == | |00005870| 65 32 29 20 63 32 20 3d | 20 30 3b 0a 58 09 20 20 |e2) c2 =| 0;.X. | |00005880| 65 6c 73 65 20 63 32 20 | 3d 20 2a 70 32 2b 2b 3b |else c2 |= *p2++;| |00005890| 0a 58 0a 58 09 20 20 69 | 66 20 28 63 68 61 72 5f |.X.X. i|f (char_| |000058a0| 6f 72 64 65 72 5b 63 31 | 5d 20 21 3d 20 63 68 61 |order[c1|] != cha| |000058b0| 72 5f 6f 72 64 65 72 5b | 63 32 5d 29 0a 58 09 20 |r_order[|c2]).X. | |000058c0| 20 20 20 72 65 74 75 72 | 6e 20 63 68 61 72 5f 6f | retur|n char_o| |000058d0| 72 64 65 72 5b 63 31 5d | 20 2d 20 63 68 61 72 5f |rder[c1]| - char_| |000058e0| 6f 72 64 65 72 5b 63 32 | 5d 3b 0a 58 09 20 20 69 |order[c2|];.X. i| |000058f0| 66 20 28 21 63 31 29 20 | 62 72 65 61 6b 3b 0a 58 |f (!c1) |break;.X| |00005900| 09 7d 0a 58 0a 58 20 20 | 20 20 20 20 2f 2a 20 53 |.}.X.X | /* S| |00005910| 74 72 69 6e 67 73 20 61 | 72 65 20 65 71 75 61 6c |trings a|re equal| |00005920| 20 65 78 63 65 70 74 20 | 70 6f 73 73 69 62 6c 79 | except |possibly| |00005930| 20 66 6f 72 20 63 61 73 | 65 2e 20 20 2a 2f 0a 58 | for cas|e. */.X| |00005940| 20 20 20 20 20 20 70 31 | 20 3d 20 73 74 61 72 74 | p1| = start| |00005950| 31 3b 0a 58 20 20 20 20 | 20 20 70 32 20 3d 20 73 |1;.X | p2 = s| |00005960| 74 61 72 74 32 3b 0a 58 | 20 20 20 20 20 20 77 68 |tart2;.X| wh| |00005970| 69 6c 65 20 28 31 29 0a | 58 09 7b 0a 58 09 20 20 |ile (1).|X.{.X. | |00005980| 69 6e 74 20 63 31 2c 20 | 63 32 3b 0a 58 0a 58 09 |int c1, |c2;.X.X.| |00005990| 20 20 69 66 20 28 70 31 | 20 3d 3d 20 65 31 29 20 | if (p1| == e1) | |000059a0| 63 31 20 3d 20 30 3b 0a | 58 09 20 20 65 6c 73 65 |c1 = 0;.|X. else| |000059b0| 20 63 31 20 3d 20 2a 70 | 31 2b 2b 3b 0a 58 09 20 | c1 = *p|1++;.X. | |000059c0| 20 69 66 20 28 70 32 20 | 3d 3d 20 65 32 29 20 63 | if (p2 |== e2) c| |000059d0| 32 20 3d 20 30 3b 0a 58 | 09 20 20 65 6c 73 65 20 |2 = 0;.X|. else | |000059e0| 63 32 20 3d 20 2a 70 32 | 2b 2b 3b 0a 58 0a 58 09 |c2 = *p2|++;.X.X.| |000059f0| 20 20 69 66 20 28 63 31 | 20 21 3d 20 63 32 29 0a | if (c1| != c2).| |00005a00| 58 09 20 20 20 20 2f 2a | 20 52 65 76 65 72 73 65 |X. /*| Reverse| |00005a10| 20 73 69 67 6e 20 68 65 | 72 65 20 73 6f 20 75 70 | sign he|re so up| |00005a20| 70 65 72 20 63 61 73 65 | 20 63 6f 6d 65 73 20 6f |per case| comes o| |00005a30| 75 74 20 6c 61 73 74 2e | 20 20 2a 2f 0a 58 09 20 |ut last.| */.X. | |00005a40| 20 20 20 72 65 74 75 72 | 6e 20 63 32 20 2d 20 63 | retur|n c2 - c| |00005a50| 31 3b 0a 58 09 20 20 69 | 66 20 28 21 63 31 29 20 |1;.X. i|f (!c1) | |00005a60| 62 72 65 61 6b 3b 0a 58 | 09 7d 0a 58 0a 58 20 20 |break;.X|.}.X.X | |00005a70| 20 20 20 20 72 65 74 75 | 72 6e 20 30 3b 0a 58 20 | retu|rn 0;.X | |00005a80| 20 20 20 7d 0a 58 7d 0a | 58 0c 0a 58 2f 2a 20 41 | }.X}.|X..X/* A| |00005a90| 20 60 73 74 72 75 63 74 | 20 6c 69 6e 65 62 75 66 | `struct| linebuf| |00005aa0| 66 65 72 27 20 69 73 20 | 61 20 73 74 72 75 63 74 |fer' is |a struct| |00005ab0| 75 72 65 20 77 68 69 63 | 68 20 68 6f 6c 64 73 20 |ure whic|h holds | |00005ac0| 61 20 6c 69 6e 65 20 6f | 66 20 74 65 78 74 2e 0a |a line o|f text..| |00005ad0| 58 20 60 72 65 61 64 6c | 69 6e 65 27 20 72 65 61 |X `readl|ine' rea| |00005ae0| 64 73 20 61 20 6c 69 6e | 65 20 66 72 6f 6d 20 61 |ds a lin|e from a| |00005af0| 20 73 74 72 65 61 6d 20 | 69 6e 74 6f 20 61 20 6c | stream |into a l| |00005b00| 69 6e 65 62 75 66 66 65 | 72 0a 58 20 61 6e 64 20 |inebuffe|r.X and | |00005b10| 77 6f 72 6b 73 20 72 65 | 67 61 72 64 6c 65 73 73 |works re|gardless| |00005b20| 20 6f 66 20 74 68 65 20 | 6c 65 6e 67 74 68 20 6f | of the |length o| |00005b30| 66 20 74 68 65 20 6c 69 | 6e 65 2e 20 20 2a 2f 0a |f the li|ne. */.| |00005b40| 58 0a 58 73 74 72 75 63 | 74 20 6c 69 6e 65 62 75 |X.Xstruc|t linebu| |00005b50| 66 66 65 72 0a 58 20 20 | 7b 0a 58 20 20 20 20 6c |ffer.X |{.X l| |00005b60| 6f 6e 67 20 73 69 7a 65 | 3b 0a 58 20 20 20 20 63 |ong size|;.X c| |00005b70| 68 61 72 20 2a 62 75 66 | 66 65 72 3b 0a 58 20 20 |har *buf|fer;.X | |00005b80| 7d 3b 0a 58 0a 58 2f 2a | 20 49 6e 69 74 69 61 6c |};.X.X/*| Initial| |00005b90| 69 7a 65 20 61 20 6c 69 | 6e 65 62 75 66 66 65 72 |ize a li|nebuffer| |00005ba0| 20 66 6f 72 20 75 73 65 | 20 2a 2f 0a 58 0a 58 76 | for use| */.X.Xv| |00005bb0| 6f 69 64 0a 58 69 6e 69 | 74 62 75 66 66 65 72 20 |oid.Xini|tbuffer | |00005bc0| 28 6c 69 6e 65 62 75 66 | 66 65 72 29 0a 58 20 20 |(linebuf|fer).X | |00005bd0| 20 20 20 73 74 72 75 63 | 74 20 6c 69 6e 65 62 75 | struc|t linebu| |00005be0| 66 66 65 72 20 2a 6c 69 | 6e 65 62 75 66 66 65 72 |ffer *li|nebuffer| |00005bf0| 3b 0a 58 7b 0a 58 20 20 | 6c 69 6e 65 62 75 66 66 |;.X{.X |linebuff| |00005c00| 65 72 2d 3e 73 69 7a 65 | 20 3d 20 32 30 30 3b 0a |er->size| = 200;.| |00005c10| 58 20 20 6c 69 6e 65 62 | 75 66 66 65 72 2d 3e 62 |X lineb|uffer->b| |00005c20| 75 66 66 65 72 20 3d 20 | 28 63 68 61 72 20 2a 29 |uffer = |(char *)| |00005c30| 20 78 6d 61 6c 6c 6f 63 | 20 28 32 30 30 29 3b 0a | xmalloc| (200);.| |00005c40| 58 7d 0a 58 0a 58 2f 2a | 20 52 65 61 64 20 61 20 |X}.X.X/*| Read a | |00005c50| 6c 69 6e 65 20 6f 66 20 | 74 65 78 74 20 66 72 6f |line of |text fro| |00005c60| 6d 20 60 73 74 72 65 61 | 6d 27 20 69 6e 74 6f 20 |m `strea|m' into | |00005c70| 60 6c 69 6e 65 62 75 66 | 66 65 72 27 2e 0a 58 20 |`linebuf|fer'..X | |00005c80| 52 65 74 75 72 6e 20 74 | 68 65 20 6c 65 6e 67 74 |Return t|he lengt| |00005c90| 68 20 6f 66 20 74 68 65 | 20 6c 69 6e 65 2e 20 20 |h of the| line. | |00005ca0| 2a 2f 0a 58 0a 58 6c 6f | 6e 67 0a 58 72 65 61 64 |*/.X.Xlo|ng.Xread| |00005cb0| 6c 69 6e 65 20 28 6c 69 | 6e 65 62 75 66 66 65 72 |line (li|nebuffer| |00005cc0| 2c 20 73 74 72 65 61 6d | 29 0a 58 20 20 20 20 20 |, stream|).X | |00005cd0| 73 74 72 75 63 74 20 6c | 69 6e 65 62 75 66 66 65 |struct l|inebuffe| |00005ce0| 72 20 2a 6c 69 6e 65 62 | 75 66 66 65 72 3b 0a 58 |r *lineb|uffer;.X| |00005cf0| 20 20 20 20 20 46 49 4c | 45 20 2a 73 74 72 65 61 | FIL|E *strea| |00005d00| 6d 3b 0a 58 7b 0a 58 20 | 20 63 68 61 72 20 2a 62 |m;.X{.X | char *b| |00005d10| 75 66 66 65 72 20 3d 20 | 6c 69 6e 65 62 75 66 66 |uffer = |linebuff| |00005d20| 65 72 2d 3e 62 75 66 66 | 65 72 3b 0a 58 20 20 63 |er->buff|er;.X c| |00005d30| 68 61 72 20 2a 70 20 3d | 20 6c 69 6e 65 62 75 66 |har *p =| linebuf| |00005d40| 66 65 72 2d 3e 62 75 66 | 66 65 72 3b 0a 58 20 20 |fer->buf|fer;.X | |00005d50| 63 68 61 72 20 2a 65 6e | 64 20 3d 20 70 20 2b 20 |char *en|d = p + | |00005d60| 6c 69 6e 65 62 75 66 66 | 65 72 2d 3e 73 69 7a 65 |linebuff|er->size| |00005d70| 3b 0a 58 0a 58 20 20 77 | 68 69 6c 65 20 28 31 29 |;.X.X w|hile (1)| |00005d80| 0a 58 20 20 20 20 7b 0a | 58 20 20 20 20 20 20 69 |.X {.|X i| |00005d90| 6e 74 20 63 20 3d 20 67 | 65 74 63 20 28 73 74 72 |nt c = g|etc (str| |00005da0| 65 61 6d 29 3b 0a 58 20 | 20 20 20 20 20 69 66 20 |eam);.X | if | |00005db0| 28 70 20 3d 3d 20 65 6e | 64 29 0a 58 09 7b 0a 58 |(p == en|d).X.{.X| |00005dc0| 09 20 20 62 75 66 66 65 | 72 20 3d 20 28 63 68 61 |. buffe|r = (cha| |00005dd0| 72 20 2a 29 20 78 72 65 | 61 6c 6c 6f 63 20 28 62 |r *) xre|alloc (b| |00005de0| 75 66 66 65 72 2c 20 6c | 69 6e 65 62 75 66 66 65 |uffer, l|inebuffe| |00005df0| 72 2d 3e 73 69 7a 65 20 | 2a 3d 20 32 29 3b 0a 58 |r->size |*= 2);.X| |00005e00| 09 20 20 70 20 2b 3d 20 | 62 75 66 66 65 72 20 2d |. p += |buffer -| |00005e10| 20 6c 69 6e 65 62 75 66 | 66 65 72 2d 3e 62 75 66 | linebuf|fer->buf| |00005e20| 66 65 72 3b 0a 58 09 20 | 20 65 6e 64 20 2b 3d 20 |fer;.X. | end += | |00005e30| 62 75 66 66 65 72 20 2d | 20 6c 69 6e 65 62 75 66 |buffer -| linebuf| |00005e40| 66 65 72 2d 3e 62 75 66 | 66 65 72 3b 0a 58 09 20 |fer->buf|fer;.X. | |00005e50| 20 6c 69 6e 65 62 75 66 | 66 65 72 2d 3e 62 75 66 | linebuf|fer->buf| |00005e60| 66 65 72 20 3d 20 62 75 | 66 66 65 72 3b 0a 58 09 |fer = bu|ffer;.X.| |00005e70| 7d 0a 58 20 20 20 20 20 | 20 69 66 20 28 63 20 3c |}.X | if (c <| |00005e80| 20 30 20 7c 7c 20 63 20 | 3d 3d 20 27 5c 6e 27 29 | 0 || c |== '\n')| |00005e90| 0a 58 09 7b 0a 58 09 20 | 20 2a 70 20 3d 20 30 3b |.X.{.X. | *p = 0;| |00005ea0| 0a 58 09 20 20 62 72 65 | 61 6b 3b 0a 58 09 7d 0a |.X. bre|ak;.X.}.| |00005eb0| 58 20 20 20 20 20 20 2a | 70 2b 2b 20 3d 20 63 3b |X *|p++ = c;| |00005ec0| 0a 58 20 20 20 20 7d 0a | 58 0a 58 20 20 72 65 74 |.X }.|X.X ret| |00005ed0| 75 72 6e 20 70 20 2d 20 | 62 75 66 66 65 72 3b 0a |urn p - |buffer;.| |00005ee0| 58 7d 0a 58 0c 0a 58 2f | 2a 20 53 6f 72 74 20 61 |X}.X..X/|* Sort a| |00005ef0| 6e 20 69 6e 70 75 74 20 | 66 69 6c 65 20 74 6f 6f |n input |file too| |00005f00| 20 62 69 67 20 74 6f 20 | 73 6f 72 74 20 69 6e 20 | big to |sort in | |00005f10| 63 6f 72 65 2e 20 20 2a | 2f 0a 58 0a 58 76 6f 69 |core. *|/.X.Xvoi| |00005f20| 64 0a 58 73 6f 72 74 5f | 6f 66 66 6c 69 6e 65 20 |d.Xsort_|offline | |00005f30| 28 69 6e 66 69 6c 65 2c | 20 6e 66 69 6c 65 73 2c |(infile,| nfiles,| |00005f40| 20 74 6f 74 61 6c 2c 20 | 6f 75 74 66 69 6c 65 29 | total, |outfile)| |00005f50| 0a 58 20 20 20 20 20 63 | 68 61 72 20 2a 69 6e 66 |.X c|har *inf| |00005f60| 69 6c 65 3b 0a 58 20 20 | 20 20 20 6c 6f 6e 67 20 |ile;.X | long | |00005f70| 74 6f 74 61 6c 3b 0a 58 | 20 20 20 20 20 63 68 61 |total;.X| cha| |00005f80| 72 20 2a 6f 75 74 66 69 | 6c 65 3b 0a 58 7b 0a 58 |r *outfi|le;.X{.X| |00005f90| 20 20 69 6e 74 20 6e 74 | 65 6d 70 73 20 3d 20 32 | int nt|emps = 2| |00005fa0| 20 2a 20 28 74 6f 74 61 | 6c 20 2b 20 4d 41 58 5f | * (tota|l + MAX_| |00005fb0| 49 4e 5f 43 4f 52 45 5f | 53 4f 52 54 20 2d 20 31 |IN_CORE_|SORT - 1| |00005fc0| 29 20 2f 20 4d 41 58 5f | 49 4e 5f 43 4f 52 45 5f |) / MAX_|IN_CORE_| |00005fd0| 53 4f 52 54 3b 20 20 2f | 2a 20 4d 6f 72 65 20 74 |SORT; /|* More t| |00005fe0| 68 61 6e 20 65 6e 6f 75 | 67 68 20 2a 2f 0a 58 20 |han enou|gh */.X | |00005ff0| 20 63 68 61 72 20 2a 2a | 74 65 6d 70 66 69 6c 65 | char **|tempfile| |00006000| 73 20 3d 20 28 63 68 61 | 72 20 2a 2a 29 20 78 6d |s = (cha|r **) xm| |00006010| 61 6c 6c 6f 63 20 28 6e | 74 65 6d 70 73 20 2a 20 |alloc (n|temps * | |00006020| 73 69 7a 65 6f 66 20 28 | 63 68 61 72 20 2a 29 29 |sizeof (|char *))| |00006030| 3b 0a 58 20 20 46 49 4c | 45 20 2a 69 73 74 72 65 |;.X FIL|E *istre| |00006040| 61 6d 20 3d 20 66 6f 70 | 65 6e 20 28 69 6e 66 69 |am = fop|en (infi| |00006050| 6c 65 2c 20 22 72 22 29 | 3b 0a 58 20 20 69 6e 74 |le, "r")|;.X int| |00006060| 20 69 3b 0a 58 20 20 73 | 74 72 75 63 74 20 6c 69 | i;.X s|truct li| |00006070| 6e 65 62 75 66 66 65 72 | 20 6c 62 3b 0a 58 20 20 |nebuffer| lb;.X | |00006080| 6c 6f 6e 67 20 6c 69 6e | 65 6c 65 6e 67 74 68 3b |long lin|elength;| |00006090| 0a 58 20 20 69 6e 74 20 | 66 61 69 6c 75 72 65 20 |.X int |failure | |000060a0| 3d 20 30 3b 0a 58 0a 58 | 20 20 69 6e 69 74 62 75 |= 0;.X.X| initbu| |000060b0| 66 66 65 72 20 28 26 6c | 62 29 3b 0a 58 0a 58 20 |ffer (&l|b);.X.X | |000060c0| 20 2f 2a 20 52 65 61 64 | 20 69 6e 20 6f 6e 65 20 | /* Read| in one | |000060d0| 6c 69 6e 65 20 6f 66 20 | 69 6e 70 75 74 20 64 61 |line of |input da| |000060e0| 74 61 2e 20 20 2a 2f 0a | 58 0a 58 20 20 6c 69 6e |ta. */.|X.X lin| |000060f0| 65 6c 65 6e 67 74 68 20 | 3d 20 72 65 61 64 6c 69 |elength |= readli| |00006100| 6e 65 20 28 26 6c 62 2c | 20 69 73 74 72 65 61 6d |ne (&lb,| istream| |00006110| 29 3b 0a 58 0a 58 20 20 | 69 66 20 28 6c 62 2e 62 |);.X.X |if (lb.b| |00006120| 75 66 66 65 72 5b 30 5d | 20 21 3d 20 27 5c 5c 27 |uffer[0]| != '\\'| |00006130| 29 0a 58 20 20 20 20 7b | 0a 58 20 20 20 20 20 20 |).X {|.X | |00006140| 65 72 72 6f 72 20 28 22 | 25 73 3a 20 6e 6f 74 20 |error ("|%s: not | |00006150| 61 20 74 65 78 69 6e 66 | 6f 20 69 6e 64 65 78 20 |a texinf|o index | |00006160| 66 69 6c 65 22 2c 20 69 | 6e 66 69 6c 65 29 3b 0a |file", i|nfile);.| |00006170| 58 20 20 20 20 20 20 72 | 65 74 75 72 6e 3b 0a 58 |X r|eturn;.X| |00006180| 20 20 20 20 7d 0a 58 0a | 58 20 20 2f 2a 20 53 70 | }.X.|X /* Sp| |00006190| 6c 69 74 20 75 70 20 74 | 68 65 20 69 6e 70 75 74 |lit up t|he input| |000061a0| 20 69 6e 74 6f 20 60 6e | 74 65 6d 70 73 27 20 74 | into `n|temps' t| |000061b0| 65 6d 70 6f 72 61 72 79 | 20 66 69 6c 65 73 2c 20 |emporary| files, | |000061c0| 6f 72 20 6d 61 79 62 65 | 20 66 65 77 65 72 2c 0a |or maybe| fewer,.| |000061d0| 58 20 20 20 20 61 6e 64 | 20 70 75 74 20 74 68 65 |X and| put the| |000061e0| 20 6e 65 77 20 66 69 6c | 65 73 27 20 6e 61 6d 65 | new fil|es' name| |000061f0| 73 20 69 6e 74 6f 20 60 | 74 65 6d 70 66 69 6c 65 |s into `|tempfile| |00006200| 73 27 20 2a 2f 0a 58 0a | 58 20 20 66 6f 72 20 28 |s' */.X.|X for (| |00006210| 69 20 3d 20 30 3b 20 69 | 20 3c 20 6e 74 65 6d 70 |i = 0; i| < ntemp| |00006220| 73 3b 20 69 2b 2b 29 0a | 58 20 20 20 20 7b 0a 58 |s; i++).|X {.X| |00006230| 20 20 20 20 20 20 63 68 | 61 72 20 2a 6f 75 74 6e | ch|ar *outn| |00006240| 61 6d 65 20 3d 20 6d 61 | 6b 65 74 65 6d 70 6e 61 |ame = ma|ketempna| |00006250| 6d 65 20 28 2b 2b 74 65 | 6d 70 63 6f 75 6e 74 29 |me (++te|mpcount)| |00006260| 3b 0a 58 20 20 20 20 20 | 20 46 49 4c 45 20 2a 6f |;.X | FILE *o| |00006270| 73 74 72 65 61 6d 20 3d | 20 66 6f 70 65 6e 20 28 |stream =| fopen (| |00006280| 6f 75 74 6e 61 6d 65 2c | 20 22 77 22 29 3b 0a 58 |outname,| "w");.X| |00006290| 20 20 20 20 20 20 6c 6f | 6e 67 20 74 65 6d 70 73 | lo|ng temps| |000062a0| 69 7a 65 20 3d 20 30 3b | 0a 58 0a 58 20 20 20 20 |ize = 0;|.X.X | |000062b0| 20 20 69 66 20 28 21 6f | 73 74 72 65 61 6d 29 20 | if (!o|stream) | |000062c0| 70 66 61 74 61 6c 5f 77 | 69 74 68 5f 6e 61 6d 65 |pfatal_w|ith_name| |000062d0| 20 28 6f 75 74 6e 61 6d | 65 29 3b 0a 58 20 20 20 | (outnam|e);.X | |000062e0| 20 20 20 74 65 6d 70 66 | 69 6c 65 73 5b 69 5d 20 | tempf|iles[i] | |000062f0| 3d 20 6f 75 74 6e 61 6d | 65 3b 0a 58 0a 58 20 20 |= outnam|e;.X.X | |00006300| 20 20 20 20 2f 2a 20 43 | 6f 70 79 20 6c 69 6e 65 | /* C|opy line| |00006310| 73 20 69 6e 74 6f 20 74 | 68 69 73 20 74 65 6d 70 |s into t|his temp| |00006320| 20 66 69 6c 65 20 61 73 | 20 6c 6f 6e 67 20 61 73 | file as| long as| |00006330| 20 69 74 20 64 6f 65 73 | 20 6e 6f 74 20 6d 61 6b | it does| not mak| |00006340| 65 20 66 69 6c 65 20 22 | 74 6f 6f 20 62 69 67 22 |e file "|too big"| |00006350| 0a 58 09 6f 72 20 75 6e | 74 69 6c 20 74 68 65 72 |.X.or un|til ther| |00006360| 65 20 61 72 65 20 6e 6f | 20 6d 6f 72 65 20 6c 69 |e are no| more li| |00006370| 6e 65 73 2e 20 20 2a 2f | 0a 58 0a 58 20 20 20 20 |nes. */|.X.X | |00006380| 20 20 77 68 69 6c 65 20 | 28 74 65 6d 70 73 69 7a | while |(tempsiz| |00006390| 65 20 2b 20 6c 69 6e 65 | 6c 65 6e 67 74 68 20 2b |e + line|length +| |000063a0| 20 31 20 3c 3d 20 4d 41 | 58 5f 49 4e 5f 43 4f 52 | 1 <= MA|X_IN_COR| |000063b0| 45 5f 53 4f 52 54 29 0a | 58 09 7b 0a 58 09 20 20 |E_SORT).|X.{.X. | |000063c0| 74 65 6d 70 73 69 7a 65 | 20 2b 3d 20 6c 69 6e 65 |tempsize| += line| |000063d0| 6c 65 6e 67 74 68 20 2b | 20 31 3b 0a 58 09 20 20 |length +| 1;.X. | |000063e0| 66 70 75 74 73 20 28 6c | 62 2e 62 75 66 66 65 72 |fputs (l|b.buffer| |000063f0| 2c 20 6f 73 74 72 65 61 | 6d 29 3b 0a 58 09 20 20 |, ostrea|m);.X. | +--------+-------------------------+-------------------------+--------+--------+ Only 25.0 KB of data is shown above.