home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / languages / elisp / packages / LaTeXinfo.shar.9 < prev    next >
Mailbox/MIME Entity  |  1990-07-22  |  45.7 KB

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


This file was processed as: Mailbox/MIME Entity (archive/mbox).

ConfidenceProgramDetectionMatch TypeSupport
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.