home *** CD-ROM | disk | FTP | other *** search
open in:
MacOS 8.1
|
Win98
|
DOS
browse contents |
view JSON data
|
view as text
This file was processed as: SHell self-extracting ARchive
(archive/shar).
Confidence | Program | Detection | Match Type | Support
|
---|
100%
| dexvert
| SHell self-extracting ARchive (archive/shar)
| magic
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| C source text
| default
| |
99%
| file
| C source, ASCII text
| default
| |
100%
| checkBytes
| Printable ASCII
| default
| |
100%
| perlTextCheck
| Likely Text (Perl)
| default
| |
100%
| siegfried
| fmt/329 Shell Archive Format
| default
| |
100%
| detectItEasy
| Format: plain text[LF]
| default (weak)
|
|
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 4e 65 77 73 67 72 6f 75 | 70 73 3a 20 63 6f 6d 70 |Newsgrou|ps: comp|
|00000010| 2e 73 6f 75 72 63 65 73 | 2e 6d 69 73 63 0a 6b 65 |.sources|.misc.ke|
|00000020| 79 77 6f 72 64 73 3a 20 | 73 6f 72 74 0a 73 75 62 |ywords: |sort.sub|
|00000030| 6a 65 63 74 3a 20 76 30 | 38 69 30 39 32 3a 20 66 |ject: v0|8i092: f|
|00000040| 61 73 74 20 26 20 73 69 | 6d 70 6c 65 20 73 6f 72 |ast & si|mple sor|
|00000050| 74 69 6e 67 20 70 72 6f | 67 72 61 6d 0a 46 72 6f |ting pro|gram.Fro|
|00000060| 6d 3a 20 61 6c 6c 62 65 | 72 79 40 75 75 6e 65 74 |m: allbe|ry@uunet|
|00000070| 2e 55 55 2e 4e 45 54 20 | 28 42 72 61 6e 64 6f 6e |.UU.NET |(Brandon|
|00000080| 20 53 2e 20 41 6c 6c 62 | 65 72 79 20 2d 20 63 6f | S. Allb|ery - co|
|00000090| 6d 70 2e 73 6f 75 72 63 | 65 73 2e 6d 69 73 63 29 |mp.sourc|es.misc)|
|000000a0| 0a 52 65 70 6c 79 2d 54 | 6f 3a 20 6f 6b 40 63 73 |.Reply-T|o: ok@cs|
|000000b0| 2e 6d 75 2e 6f 7a 2e 61 | 75 2e 55 55 43 50 20 28 |.mu.oz.a|u.UUCP (|
|000000c0| 52 69 63 68 61 72 64 20 | 4f 27 4b 65 65 66 65 29 |Richard |O'Keefe)|
|000000d0| 0a 0a 50 6f 73 74 69 6e | 67 2d 6e 75 6d 62 65 72 |..Postin|g-number|
|000000e0| 3a 20 56 6f 6c 75 6d 65 | 20 38 2c 20 49 73 73 75 |: Volume| 8, Issu|
|000000f0| 65 20 39 32 0a 53 75 62 | 6d 69 74 74 65 64 2d 62 |e 92.Sub|mitted-b|
|00000100| 79 3a 20 6f 6b 40 63 73 | 2e 6d 75 2e 6f 7a 2e 61 |y: ok@cs|.mu.oz.a|
|00000110| 75 2e 55 55 43 50 20 28 | 52 69 63 68 61 72 64 20 |u.UUCP (|Richard |
|00000120| 4f 27 4b 65 65 66 65 29 | 0a 41 72 63 68 69 76 65 |O'Keefe)|.Archive|
|00000130| 2d 6e 61 6d 65 3a 20 6e | 73 6f 72 74 0a 0a 23 21 |-name: n|sort..#!|
|00000140| 2f 62 69 6e 2f 73 68 0a | 23 20 54 68 69 73 20 69 |/bin/sh.|# This i|
|00000150| 73 20 61 20 73 68 65 6c | 6c 20 61 72 63 68 69 76 |s a shel|l archiv|
|00000160| 65 2c 20 6d 65 61 6e 69 | 6e 67 3a 20 20 20 20 20 |e, meani|ng: |
|00000170| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000180| 20 20 20 20 20 20 20 20 | 20 0a 23 20 31 2e 20 52 | | .# 1. R|
|00000190| 65 6d 6f 76 65 20 65 76 | 65 72 79 74 68 69 6e 67 |emove ev|erything|
|000001a0| 20 61 62 6f 76 65 20 74 | 68 65 20 23 21 2f 62 69 | above t|he #!/bi|
|000001b0| 6e 2f 73 68 20 6c 69 6e | 65 2e 20 20 20 20 20 20 |n/sh lin|e. |
|000001c0| 20 20 20 20 20 20 20 20 | 20 20 0a 23 20 32 2e 20 | | .# 2. |
|000001d0| 53 61 76 65 20 74 68 65 | 20 72 65 73 75 6c 74 69 |Save the| resulti|
|000001e0| 6e 67 20 74 65 78 74 20 | 69 6e 20 61 20 66 69 6c |ng text |in a fil|
|000001f0| 65 2e 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |e. | |
|00000200| 20 20 20 20 20 20 20 20 | 20 20 20 20 0a 23 20 33 | | .# 3|
|00000210| 2e 20 45 78 65 63 75 74 | 65 20 74 68 65 20 66 69 |. Execut|e the fi|
|00000220| 6c 65 20 77 69 74 68 20 | 2f 62 69 6e 2f 73 68 20 |le with |/bin/sh |
|00000230| 28 6e 6f 74 20 63 73 68 | 29 20 74 6f 20 63 72 65 |(not csh|) to cre|
|00000240| 61 74 65 20 74 68 65 20 | 66 69 6c 65 73 3a 0a 23 |ate the |files:.#|
|00000250| 09 52 45 41 44 4d 45 0a | 23 09 6d 61 6b 65 66 69 |.README.|#.makefi|
|00000260| 6c 65 0a 23 09 6e 73 6f | 72 74 2e 31 0a 23 09 6e |le.#.nso|rt.1.#.n|
|00000270| 73 6f 72 74 2e 63 0a 63 | 61 74 20 3e 52 45 41 44 |sort.c.c|at >READ|
|00000280| 4d 45 20 3c 3c 27 2d 2d | 2d 2d 2d 2d 20 45 4f 46 |ME <<'--|---- EOF|
|00000290| 20 2d 2d 2d 2d 2d 2d 27 | 0a 6e 73 6f 72 74 20 69 | ------'|.nsort i|
|000002a0| 73 20 61 20 74 6f 74 61 | 6c 6c 79 20 73 74 72 69 |s a tota|lly stri|
|000002b0| 70 70 65 64 20 64 6f 77 | 6e 20 73 6f 72 74 28 31 |pped dow|n sort(1|
|000002c0| 29 3b 20 69 74 20 72 65 | 61 64 73 20 61 20 66 69 |); it re|ads a fi|
|000002d0| 6c 65 20 69 6e 74 6f 20 | 6d 65 6d 6f 72 79 2c 0a |le into |memory,.|
|000002e0| 73 6f 72 74 73 20 69 74 | 20 75 73 69 6e 67 20 6d |sorts it| using m|
|000002f0| 65 72 67 65 20 73 6f 72 | 74 2c 20 61 6e 64 20 77 |erge sor|t, and w|
|00000300| 72 69 74 65 73 20 74 68 | 65 20 72 65 73 75 6c 74 |rites th|e result|
|00000310| 20 6f 75 74 2e 20 20 49 | 20 77 72 6f 74 65 20 69 | out. I| wrote i|
|00000320| 74 20 74 6f 0a 73 68 6f | 77 20 74 68 61 74 20 6d |t to.sho|w that m|
|00000330| 65 72 67 65 20 73 6f 72 | 74 20 69 73 20 66 61 73 |erge sor|t is fas|
|00000340| 74 20 2d 2d 20 73 6f 72 | 74 28 31 29 20 69 73 20 |t -- sor|t(1) is |
|00000350| 64 6f 63 75 6d 65 6e 74 | 65 64 20 61 73 20 75 73 |document|ed as us|
|00000360| 69 6e 67 20 61 0a 76 65 | 72 73 69 6f 6e 20 6f 66 |ing a.ve|rsion of|
|00000370| 20 71 75 69 63 6b 73 6f | 72 74 20 69 6e 74 65 72 | quickso|rt inter|
|00000380| 6e 61 6c 6c 79 2c 20 61 | 6e 64 20 6e 73 6f 72 74 |nally, a|nd nsort|
|00000390| 20 62 65 61 74 73 20 69 | 74 20 65 61 73 69 6c 79 | beats i|t easily|
|000003a0| 20 65 76 65 6e 20 77 68 | 65 6e 0a 73 6f 72 74 28 | even wh|en.sort(|
|000003b0| 31 29 20 69 73 20 67 69 | 76 65 6e 20 65 6e 6f 75 |1) is gi|ven enou|
|000003c0| 67 68 20 6d 65 6d 6f 72 | 79 20 74 6f 20 73 6f 72 |gh memor|y to sor|
|000003d0| 74 20 69 6e 20 6d 65 6d | 6f 72 79 2e 0a 54 6f 20 |t in mem|ory..To |
|000003e0| 63 6f 6d 70 69 6c 65 20 | 69 74 2c 20 6a 75 73 74 |compile |it, just|
|000003f0| 20 72 75 6e 20 6d 61 6b | 65 28 31 29 2e 0a 2d 2d | run mak|e(1)..--|
|00000400| 2d 2d 2d 2d 20 45 4f 46 | 20 2d 2d 2d 2d 2d 2d 0a |---- EOF| ------.|
|00000410| 6c 73 20 2d 6c 20 52 45 | 41 44 4d 45 0a 63 61 74 |ls -l RE|ADME.cat|
|00000420| 20 3e 6d 61 6b 65 66 69 | 6c 65 20 3c 3c 27 2d 2d | >makefi|le <<'--|
|00000430| 2d 2d 2d 2d 20 45 4f 46 | 20 2d 2d 2d 2d 2d 2d 27 |---- EOF| ------'|
|00000440| 0a 6e 73 6f 72 74 3a 0a | 09 63 63 20 2d 6f 20 6e |.nsort:.|.cc -o n|
|00000450| 73 6f 72 74 20 2d 4f 20 | 6e 73 6f 72 74 2e 63 0a |sort -O |nsort.c.|
|00000460| 2d 2d 2d 2d 2d 2d 20 45 | 4f 46 20 2d 2d 2d 2d 2d |------ E|OF -----|
|00000470| 2d 0a 6c 73 20 2d 6c 20 | 6d 61 6b 65 66 69 6c 65 |-.ls -l |makefile|
|00000480| 0a 63 61 74 20 3e 6e 73 | 6f 72 74 2e 31 20 3c 3c |.cat >ns|ort.1 <<|
|00000490| 27 2d 2d 2d 2d 2d 2d 20 | 45 4f 46 20 2d 2d 2d 2d |'------ |EOF ----|
|000004a0| 2d 2d 27 0a 2e 54 48 20 | 4e 53 4f 52 54 20 31 0a |--'..TH |NSORT 1.|
|000004b0| 2e 5c 22 2f 2a 25 6e 72 | 6f 66 66 20 2d 6d 61 6e |.\"/*%nr|off -man|
|000004c0| 20 25 0a 2e 53 48 20 4e | 41 4d 45 0a 6e 73 6f 72 | %..SH N|AME.nsor|
|000004d0| 74 20 5c 2a 2d 20 66 61 | 73 74 20 61 6e 64 20 73 |t \*- fa|st and s|
|000004e0| 69 6d 70 6c 65 20 73 6f | 72 74 69 6e 67 20 70 72 |imple so|rting pr|
|000004f0| 6f 67 72 61 6d 0a 2e 53 | 48 20 53 59 4e 4f 50 53 |ogram..S|H SYNOPS|
|00000500| 49 53 0a 2e 42 20 6e 73 | 6f 72 74 0a 3c 69 6e 20 |IS..B ns|ort.<in |
|00000510| 3e 6f 75 74 0a 2e 53 48 | 20 44 45 53 43 52 49 50 |>out..SH| DESCRIP|
|00000520| 54 49 4f 4e 0a 54 68 65 | 0a 2e 42 20 6e 73 6f 72 |TION.The|..B nsor|
|00000530| 74 0a 63 6f 6d 6d 61 6e | 64 0a 72 65 61 64 73 20 |t.comman|d.reads |
|00000540| 6c 69 6e 65 73 20 66 72 | 6f 6d 20 69 74 73 20 73 |lines fr|om its s|
|00000550| 74 61 6e 64 61 72 64 20 | 69 6e 70 75 74 2c 20 73 |tandard |input, s|
|00000560| 6f 72 74 73 20 74 68 65 | 6d 2c 20 61 6e 64 20 77 |orts the|m, and w|
|00000570| 72 69 74 65 73 20 74 68 | 65 0a 73 6f 72 74 65 64 |rites th|e.sorted|
|00000580| 20 6c 69 6e 65 73 20 74 | 6f 20 69 74 73 20 73 74 | lines t|o its st|
|00000590| 61 6e 64 61 72 64 20 6f | 75 74 70 75 74 2e 20 20 |andard o|utput. |
|000005a0| 49 74 20 62 65 68 61 76 | 65 73 20 6a 75 73 74 20 |It behav|es just |
|000005b0| 6c 69 6b 65 0a 73 6f 72 | 74 28 31 29 20 77 68 65 |like.sor|t(1) whe|
|000005c0| 6e 20 74 68 65 20 6c 61 | 74 74 65 72 20 69 73 20 |n the la|tter is |
|000005d0| 67 69 76 65 6e 20 6e 6f | 20 61 72 67 75 6d 65 6e |given no| argumen|
|000005e0| 74 73 2e 20 20 54 68 65 | 20 6f 6e 6c 79 20 72 65 |ts. The| only re|
|000005f0| 61 73 6f 6e 0a 66 6f 72 | 20 75 73 69 6e 67 0a 2e |ason.for| using..|
|00000600| 42 20 6e 73 6f 72 74 0a | 69 73 20 73 70 65 65 64 |B nsort.|is speed|
|00000610| 3a 20 20 77 68 65 6e 20 | 69 74 20 63 61 6e 20 62 |: when |it can b|
|00000620| 65 20 75 73 65 64 20 69 | 74 20 69 73 20 75 70 20 |e used i|t is up |
|00000630| 74 6f 20 74 77 69 63 65 | 20 61 73 20 66 61 73 74 |to twice| as fast|
|00000640| 20 61 73 20 73 6f 72 74 | 28 31 29 2e 0a 2e 50 50 | as sort|(1)...PP|
|00000650| 0a 54 68 69 73 20 70 72 | 6f 67 72 61 6d 20 64 6f |.This pr|ogram do|
|00000660| 65 73 0a 2e 49 20 6e 6f | 74 0a 61 63 63 65 70 74 |es..I no|t.accept|
|00000670| 20 66 69 6c 65 20 6e 61 | 6d 65 73 20 61 73 20 61 | file na|mes as a|
|00000680| 72 67 75 6d 65 6e 74 73 | 2e 20 20 54 6f 20 70 72 |rguments|. To pr|
|00000690| 6f 63 65 73 73 20 6d 6f | 72 65 20 74 68 61 6e 0a |ocess mo|re than.|
|000006a0| 6f 6e 65 20 69 6e 70 75 | 74 20 66 69 6c 65 2c 20 |one inpu|t file, |
|000006b0| 70 69 70 65 20 74 68 65 | 20 6f 75 74 70 75 74 20 |pipe the| output |
|000006c0| 6f 66 20 63 61 74 28 31 | 29 20 69 6e 74 6f 0a 2e |of cat(1|) into..|
|000006d0| 42 20 6e 73 6f 72 74 2e | 0a 2e 50 50 0a 54 68 65 |B nsort.|..PP.The|
|000006e0| 20 70 72 6f 67 72 61 6d | 20 64 6f 65 73 20 6e 6f | program| does no|
|000006f0| 74 20 6e 65 65 64 20 74 | 6f 20 6b 6e 6f 77 20 68 |t need t|o know h|
|00000700| 6f 77 20 6d 61 6e 79 20 | 6c 69 6e 65 73 20 74 68 |ow many |lines th|
|00000710| 65 72 65 0a 61 72 65 20 | 69 6e 20 74 68 65 20 73 |ere.are |in the s|
|00000720| 74 61 6e 64 61 72 64 20 | 69 6e 70 75 74 2c 20 6e |tandard |input, n|
|00000730| 6f 72 20 64 6f 65 73 20 | 69 74 20 6e 65 65 64 20 |or does |it need |
|00000740| 74 6f 20 72 65 61 64 20 | 74 68 65 0a 73 74 61 6e |to read |the.stan|
|00000750| 64 61 72 64 20 69 6e 70 | 75 74 20 6d 6f 72 65 20 |dard inp|ut more |
|00000760| 74 68 61 6e 20 6f 6e 63 | 65 2e 20 20 48 6f 77 65 |than onc|e. Howe|
|00000770| 76 65 72 2c 20 74 68 65 | 20 64 61 74 61 20 6d 75 |ver, the| data mu|
|00000780| 73 74 0a 66 69 74 20 69 | 6e 74 6f 20 6d 65 6d 6f |st.fit i|nto memo|
|00000790| 72 79 2e 0a 2e 53 48 20 | 4f 50 54 49 4f 4e 53 0a |ry...SH |OPTIONS.|
|000007a0| 54 68 65 0a 2e 42 20 6e | 73 6f 72 74 0a 63 6f 6d |The..B n|sort.com|
|000007b0| 6d 61 6e 64 20 68 61 73 | 20 6e 6f 20 6f 70 74 69 |mand has| no opti|
|000007c0| 6f 6e 73 2e 0a 2e 53 48 | 20 45 58 41 4d 50 4c 45 |ons...SH| EXAMPLE|
|000007d0| 53 0a 2e 49 50 20 25 20 | 33 0a 6c 73 20 2d 66 20 |S..IP % |3.ls -f |
|000007e0| 2e 20 7c 20 6e 73 6f 72 | 74 0a 2e 50 50 0a 68 61 |. | nsor|t..PP.ha|
|000007f0| 73 20 74 68 65 20 73 61 | 6d 65 20 65 66 66 65 63 |s the sa|me effec|
|00000800| 74 20 61 73 20 61 20 70 | 6c 61 69 6e 20 60 6c 73 |t as a p|lain `ls|
|00000810| 27 2e 0a 2e 53 48 20 44 | 49 41 47 4e 4f 53 54 49 |'...SH D|IAGNOSTI|
|00000820| 43 53 0a 41 6e 20 65 72 | 72 6f 72 20 6d 65 73 73 |CS.An er|ror mess|
|00000830| 61 67 65 20 69 73 20 70 | 72 69 6e 74 65 64 20 6f |age is p|rinted o|
|00000840| 6e 20 73 74 64 65 72 72 | 20 61 6e 64 20 74 68 65 |n stderr| and the|
|00000850| 20 70 72 6f 67 72 61 6d | 20 68 61 6c 74 73 20 77 | program| halts w|
|00000860| 69 74 68 6f 75 74 0a 70 | 72 6f 64 75 63 69 6e 67 |ithout.p|roducing|
|00000870| 20 61 6e 79 20 6f 75 74 | 70 75 74 20 69 66 0a 2e | any out|put if..|
|00000880| 50 50 0a 74 68 65 72 65 | 20 61 72 65 20 61 6e 79 |PP.there| are any|
|00000890| 20 61 72 67 75 6d 65 6e | 74 73 20 6f 6e 20 74 68 | argumen|ts on th|
|000008a0| 65 20 63 6f 6d 6d 61 6e | 64 20 6c 69 6e 65 20 28 |e comman|d line (|
|000008b0| 73 74 61 74 75 73 20 45 | 58 5f 55 53 41 47 45 20 |status E|X_USAGE |
|000008c0| 69 73 0a 72 65 74 75 72 | 6e 65 64 20 69 6e 20 74 |is.retur|ned in t|
|000008d0| 68 69 73 20 63 61 73 65 | 29 2c 20 6f 72 0a 2e 50 |his case|), or..P|
|000008e0| 50 0a 74 68 65 20 70 72 | 6f 67 72 61 6d 20 69 73 |P.the pr|ogram is|
|000008f0| 20 75 6e 61 62 6c 65 20 | 74 6f 20 6f 62 74 61 69 | unable |to obtai|
|00000900| 6e 20 65 6e 6f 75 67 68 | 20 6d 65 6d 6f 72 79 20 |n enough| memory |
|00000910| 75 73 69 6e 67 20 6d 61 | 6c 6c 6f 63 20 28 69 66 |using ma|lloc (if|
|00000920| 20 74 68 65 0a 66 69 6c | 65 20 68 61 73 20 4e 20 | the.fil|e has N |
|00000930| 6c 69 6e 65 73 20 61 6e | 64 20 43 20 63 68 61 72 |lines an|d C char|
|00000940| 61 63 74 65 72 73 2c 20 | 72 6f 75 67 68 6c 79 20 |acters, |roughly |
|00000950| 38 4e 2b 43 20 62 79 74 | 65 73 20 61 72 65 20 6e |8N+C byt|es are n|
|00000960| 65 65 64 65 64 29 0a 28 | 73 74 61 74 75 73 20 45 |eeded).(|status E|
|00000970| 58 5f 53 4f 46 54 57 41 | 52 45 20 69 73 20 72 65 |X_SOFTWA|RE is re|
|00000980| 74 75 72 6e 65 64 20 69 | 6e 20 74 68 69 73 20 63 |turned i|n this c|
|00000990| 61 73 65 29 2c 20 6f 72 | 0a 2e 50 50 0a 73 6f 6d |ase), or|..PP.som|
|000009a0| 65 74 68 69 6e 67 20 67 | 6f 65 73 20 77 72 6f 6e |ething g|oes wron|
|000009b0| 67 20 77 68 69 6c 65 20 | 72 65 61 64 69 6e 67 20 |g while |reading |
|000009c0| 73 74 61 6e 64 61 72 64 | 20 69 6e 70 75 74 0a 28 |standard| input.(|
|000009d0| 73 74 61 74 75 73 20 45 | 58 5f 49 4f 45 52 52 20 |status E|X_IOERR |
|000009e0| 69 73 20 72 65 74 75 72 | 6e 65 64 20 69 6e 20 74 |is retur|ned in t|
|000009f0| 68 69 73 20 63 61 73 65 | 29 2e 0a 2e 50 50 0a 41 |his case|)...PP.A|
|00000a00| 6c 6c 20 65 72 72 6f 72 | 20 6d 65 73 73 61 67 65 |ll error| message|
|00000a10| 73 20 69 6e 64 69 63 61 | 74 65 20 74 68 65 20 61 |s indica|te the a|
|00000a20| 63 74 75 61 6c 20 6e 61 | 6d 65 20 74 68 65 20 70 |ctual na|me the p|
|00000a30| 72 6f 67 72 61 6d 20 77 | 61 73 20 69 6e 76 6f 6b |rogram w|as invok|
|00000a40| 65 64 20 62 79 2e 0a 49 | 66 20 61 6e 20 65 72 72 |ed by..I|f an err|
|00000a50| 6f 72 20 6d 65 73 73 61 | 67 65 20 69 73 20 70 72 |or messa|ge is pr|
|00000a60| 6f 64 75 63 65 64 2c 20 | 74 68 65 20 72 65 73 74 |oduced, |the rest|
|00000a70| 20 6f 66 20 74 68 65 20 | 73 74 61 6e 64 61 72 64 | of the |standard|
|00000a80| 20 69 6e 70 75 74 20 69 | 73 20 6e 6f 74 0a 72 65 | input i|s not.re|
|00000a90| 61 64 2c 20 73 6f 20 79 | 6f 75 20 61 72 65 20 6c |ad, so y|ou are l|
|00000aa0| 69 6b 65 6c 79 20 74 6f | 20 67 65 74 20 22 42 72 |ikely to| get "Br|
|00000ab0| 6f 6b 65 6e 20 70 69 70 | 65 22 20 6d 65 73 73 61 |oken pip|e" messa|
|00000ac0| 67 65 73 20 66 72 6f 6d | 20 75 70 73 74 72 65 61 |ges from| upstrea|
|00000ad0| 6d 0a 70 72 6f 63 65 73 | 73 65 73 2e 0a 2e 53 48 |m.proces|ses...SH|
|00000ae0| 20 42 55 47 53 0a 49 6e | 70 75 74 20 6c 69 6e 65 | BUGS.In|put line|
|00000af0| 73 20 77 68 69 63 68 20 | 63 6f 6e 74 61 69 6e 20 |s which |contain |
|00000b00| 4e 55 4c 20 63 68 61 72 | 61 63 74 65 72 73 20 61 |NUL char|acters a|
|00000b10| 72 65 20 71 75 69 65 74 | 6c 79 20 74 72 75 6e 63 |re quiet|ly trunc|
|00000b20| 61 74 65 64 2e 0a 73 6f | 72 74 28 31 29 20 63 61 |ated..so|rt(1) ca|
|00000b30| 6e 6e 6f 74 20 68 61 6e | 64 6c 65 20 73 75 63 68 |nnot han|dle such|
|00000b40| 20 6c 69 6e 65 73 20 65 | 69 74 68 65 72 2c 20 62 | lines e|ither, b|
|00000b50| 75 74 20 63 6f 6d 70 6c | 61 69 6e 73 2e 0a 2e 53 |ut compl|ains...S|
|00000b60| 48 20 22 53 45 45 20 41 | 4c 53 4f 22 0a 73 6f 72 |H "SEE A|LSO".sor|
|00000b70| 74 28 31 29 0a 2e 53 48 | 20 41 55 54 48 4f 52 0a |t(1)..SH| AUTHOR.|
|00000b80| 52 69 63 68 61 72 64 20 | 41 2e 20 4f 27 4b 65 65 |Richard |A. O'Kee|
|00000b90| 66 65 0a 2d 2d 2d 2d 2d | 2d 20 45 4f 46 20 2d 2d |fe.-----|- EOF --|
|00000ba0| 2d 2d 2d 2d 0a 6c 73 20 | 2d 6c 20 6e 73 6f 72 74 |----.ls |-l nsort|
|00000bb0| 2e 31 0a 63 61 74 20 3e | 6e 73 6f 72 74 2e 63 20 |.1.cat >|nsort.c |
|00000bc0| 3c 3c 27 2d 2d 2d 2d 2d | 2d 20 45 4f 46 20 2d 2d |<<'-----|- EOF --|
|00000bd0| 2d 2d 2d 2d 27 0a 2f 2a | 20 20 46 69 6c 65 20 20 |----'./*| File |
|00000be0| 20 3a 20 6e 73 6f 72 74 | 2e 63 0a 20 20 20 20 41 | : nsort|.c. A|
|00000bf0| 75 74 68 6f 72 20 3a 20 | 52 69 63 68 61 72 64 20 |uthor : |Richard |
|00000c00| 41 2e 20 4f 27 4b 65 65 | 66 65 0a 20 20 20 20 55 |A. O'Kee|fe. U|
|00000c10| 70 64 61 74 65 64 3a 20 | 31 39 38 38 0a 20 20 20 |pdated: |1988. |
|00000c20| 20 50 75 72 70 6f 73 65 | 3a 20 46 61 73 74 20 73 | Purpose|: Fast s|
|00000c30| 6f 72 74 69 6e 67 20 63 | 6f 6d 6d 61 6e 64 20 66 |orting c|ommand f|
|00000c40| 6f 72 20 73 6d 61 6c 6c | 69 73 68 20 66 69 6c 65 |or small|ish file|
|00000c50| 73 2e 0a 0a 20 20 20 20 | 54 68 69 73 20 70 72 6f |s... |This pro|
|00000c60| 67 72 61 6d 20 68 61 73 | 20 6e 6f 20 63 6f 70 79 |gram has| no copy|
|00000c70| 72 69 67 68 74 20 6e 6f | 74 69 63 65 2e 20 20 59 |right no|tice. Y|
|00000c80| 6f 75 20 63 61 6e 20 64 | 6f 20 61 6e 79 74 68 69 |ou can d|o anythi|
|00000c90| 6e 67 20 79 6f 75 20 70 | 6c 65 61 73 65 0a 20 20 |ng you p|lease. |
|00000ca0| 20 20 77 69 74 68 20 69 | 74 2c 20 65 78 63 65 70 | with i|t, excep|
|00000cb0| 74 20 62 6c 61 6d 65 20 | 6d 65 20 69 66 20 69 74 |t blame |me if it|
|00000cc0| 20 64 6f 65 73 6e 27 74 | 20 77 6f 72 6b 2e 0a 2a | doesn't| work..*|
|00000cd0| 2f 0a 0a 23 69 66 6e 64 | 65 66 09 6c 69 6e 74 0a |/..#ifnd|ef.lint.|
|00000ce0| 73 74 61 74 69 63 09 63 | 68 61 72 20 53 43 43 53 |static.c|har SCCS|
|00000cf0| 69 64 5b 5d 20 3d 20 22 | 25 5a 25 25 45 25 20 25 |id[] = "|%Z%%E% %|
|00000d00| 4d 25 09 25 49 25 22 3b | 0a 23 65 6e 64 69 66 2f |M%.%I%";|.#endif/|
|00000d10| 2a 6c 69 6e 74 2a 2f 0a | 0a 2f 2a 20 20 6e 73 6f |*lint*/.|./* nso|
|00000d20| 72 74 20 3c 69 6e 70 75 | 74 20 3e 6f 75 74 70 75 |rt <inpu|t >outpu|
|00000d30| 74 0a 0a 20 20 20 20 69 | 73 20 61 20 76 65 72 79 |t.. i|s a very|
|00000d40| 20 73 69 6d 70 6c 65 20 | 73 6f 72 74 69 6e 67 20 | simple |sorting |
|00000d50| 70 72 6f 67 72 61 6d 20 | 77 68 69 63 68 20 68 61 |program |which ha|
|00000d60| 73 20 62 65 65 6e 20 77 | 72 69 74 74 65 6e 20 74 |s been w|ritten t|
|00000d70| 6f 20 62 65 20 61 73 20 | 66 61 73 74 0a 20 20 20 |o be as |fast. |
|00000d80| 20 61 73 20 70 6f 73 73 | 69 62 6c 65 2e 20 20 49 | as poss|ible. I|
|00000d90| 74 20 69 73 20 65 71 75 | 69 76 61 6c 65 6e 74 20 |t is equ|ivalent |
|00000da0| 74 6f 20 73 6f 72 74 20 | 77 69 74 68 20 6e 6f 20 |to sort |with no |
|00000db0| 61 72 67 75 6d 65 6e 74 | 73 2e 20 20 54 68 61 74 |argument|s. That|
|00000dc0| 20 69 73 2c 0a 20 20 20 | 20 69 74 20 73 6f 72 74 | is,. | it sort|
|00000dd0| 73 20 69 74 73 20 73 74 | 61 6e 64 61 72 64 20 69 |s its st|andard i|
|00000de0| 6e 70 75 74 20 74 6f 20 | 69 74 73 20 73 74 61 6e |nput to |its stan|
|00000df0| 64 61 72 64 20 6f 75 74 | 70 75 74 2c 20 61 6e 64 |dard out|put, and|
|00000e00| 20 63 6f 6d 70 61 72 65 | 73 0a 20 20 20 20 65 6e | compare|s. en|
|00000e10| 74 69 72 65 20 6c 69 6e | 65 73 2e 0a 0a 20 20 20 |tire lin|es... |
|00000e20| 20 49 74 20 75 73 65 73 | 20 61 20 6e 61 74 75 72 | It uses| a natur|
|00000e30| 61 6c 20 6d 65 72 67 65 | 2c 20 73 6f 20 69 66 20 |al merge|, so if |
|00000e40| 74 68 65 20 69 6e 70 75 | 74 20 69 73 20 61 6c 72 |the inpu|t is alr|
|00000e50| 65 61 64 79 20 69 6e 20 | 6f 72 64 65 72 20 69 74 |eady in |order it|
|00000e60| 20 74 61 6b 65 73 0a 20 | 20 20 20 6c 69 6e 65 61 | takes. | linea|
|00000e70| 72 20 74 69 6d 65 2c 20 | 61 6e 64 20 69 74 20 72 |r time, |and it r|
|00000e80| 65 61 64 73 20 74 68 65 | 20 65 6e 74 69 72 65 20 |eads the| entire |
|00000e90| 66 69 6c 65 20 69 6e 74 | 6f 20 6d 65 6d 6f 72 79 |file int|o memory|
|00000ea0| 2c 20 75 73 69 6e 67 20 | 61 20 73 69 6e 67 6c 65 |, using |a single|
|00000eb0| 0a 20 20 20 20 72 65 61 | 64 28 29 20 69 66 20 74 |. rea|d() if t|
|00000ec0| 68 65 20 73 74 61 6e 64 | 61 72 64 20 69 6e 70 75 |he stand|ard inpu|
|00000ed0| 74 20 69 73 20 61 20 72 | 65 67 75 6c 61 72 20 66 |t is a r|egular f|
|00000ee0| 69 6c 65 2e 0a 0a 20 20 | 20 20 53 6f 72 74 69 6e |ile... | Sortin|
|00000ef0| 67 20 72 61 6e 64 6f 6d | 20 70 65 72 6d 75 74 61 |g random| permuta|
|00000f00| 74 69 6f 6e 73 20 6f 66 | 20 2f 75 73 72 2f 64 69 |tions of| /usr/di|
|00000f10| 63 74 2f 77 6f 72 64 73 | 20 6f 6e 20 61 20 53 75 |ct/words| on a Su|
|00000f20| 6e 2d 33 2f 35 30 3a 0a | 09 73 6f 72 74 28 31 29 |n-3/50:.|.sort(1)|
|00000f30| 20 3a 20 31 35 20 73 65 | 63 6f 6e 64 73 20 20 6e | : 15 se|conds n|
|00000f40| 73 6f 72 74 20 3a 20 20 | 38 20 73 65 63 6f 6e 64 |sort : |8 second|
|00000f50| 73 20 20 28 77 69 74 68 | 20 53 43 53 49 20 64 69 |s (with| SCSI di|
|00000f60| 73 63 29 0a 09 09 20 20 | 31 37 20 73 65 63 6f 6e |sc)... |17 secon|
|00000f70| 64 73 09 20 20 20 20 20 | 20 31 31 20 73 65 63 6f |ds. | 11 seco|
|00000f80| 6e 64 73 20 20 28 4e 46 | 53 20 6f 76 65 72 20 45 |nds (NF|S over E|
|00000f90| 74 68 65 72 6e 65 74 29 | 0a 2a 2f 0a 0a 23 69 6e |thernet)|.*/..#in|
|00000fa0| 63 6c 75 64 65 20 3c 73 | 74 64 69 6f 2e 68 3e 0a |clude <s|tdio.h>.|
|00000fb0| 0a 2f 2a 20 20 54 68 65 | 20 66 6f 6c 6c 6f 77 69 |./* The| followi|
|00000fc0| 6e 67 20 76 61 6c 75 65 | 73 20 61 72 65 20 74 61 |ng value|s are ta|
|00000fd0| 6b 65 6e 20 66 72 6f 6d | 20 3c 73 79 73 65 78 69 |ken from| <sysexi|
|00000fe0| 74 73 2e 68 3e 2c 20 62 | 75 74 20 61 72 65 20 63 |ts.h>, b|ut are c|
|00000ff0| 6f 70 69 65 64 20 68 65 | 72 65 0a 20 20 20 20 69 |opied he|re. i|
|00001000| 6e 20 63 61 73 65 20 79 | 6f 75 20 6c 61 63 6b 20 |n case y|ou lack |
|00001010| 74 68 61 74 20 42 53 44 | 20 68 65 61 64 65 72 20 |that BSD| header |
|00001020| 66 69 6c 65 2e 0a 2a 2f | 0a 23 64 65 66 69 6e 65 |file..*/|.#define|
|00001030| 09 45 58 5f 4f 4b 09 09 | 20 30 09 2f 2a 20 6e 6f |.EX_OK..| 0./* no|
|00001040| 74 68 69 6e 67 20 77 65 | 6e 74 20 77 72 6f 6e 67 |thing we|nt wrong|
|00001050| 20 2a 2f 0a 23 64 65 66 | 69 6e 65 09 45 58 5f 55 | */.#def|ine.EX_U|
|00001060| 53 41 47 45 09 36 34 09 | 2f 2a 20 73 6f 6d 65 74 |SAGE.64.|/* somet|
|00001070| 68 69 6e 67 20 77 72 6f | 6e 67 20 77 69 74 68 20 |hing wro|ng with |
|00001080| 74 68 65 20 63 6f 6d 6d | 61 6e 64 20 6c 69 6e 65 |the comm|and line|
|00001090| 20 2a 2f 0a 23 64 65 66 | 69 6e 65 09 45 58 5f 53 | */.#def|ine.EX_S|
|000010a0| 4f 46 54 57 41 52 45 09 | 37 30 09 2f 2a 20 69 6e |OFTWARE.|70./* in|
|000010b0| 74 65 72 6e 61 6c 20 65 | 72 72 6f 72 20 28 68 65 |ternal e|rror (he|
|000010c0| 72 65 2c 20 6d 65 6d 6f | 72 79 20 72 61 6e 20 6f |re, memo|ry ran o|
|000010d0| 75 74 29 20 2a 2f 0a 23 | 64 65 66 69 6e 65 09 45 |ut) */.#|define.E|
|000010e0| 58 5f 49 4f 45 52 52 09 | 37 31 09 2f 2a 20 74 72 |X_IOERR.|71./* tr|
|000010f0| 61 6e 73 70 75 74 20 65 | 72 72 6f 72 20 28 68 65 |ansput e|rror (he|
|00001100| 72 65 2c 20 72 65 61 64 | 28 29 20 74 72 6f 75 62 |re, read|() troub|
|00001110| 6c 65 29 20 2a 2f 0a 0a | 23 64 65 66 69 6e 65 09 |le) */..|#define.|
|00001120| 53 54 44 49 4e 09 09 20 | 30 0a 0a 65 78 74 65 72 |STDIN.. |0..exter|
|00001130| 6e 09 63 68 61 72 20 2a | 09 6d 61 6c 6c 6f 63 28 |n.char *|.malloc(|
|00001140| 29 3b 0a 65 78 74 65 72 | 6e 09 63 68 61 72 20 2a |);.exter|n.char *|
|00001150| 09 73 74 72 63 70 79 28 | 29 3b 0a 65 78 74 65 72 |.strcpy(|);.exter|
|00001160| 6e 09 69 6e 74 09 73 74 | 72 63 6d 70 28 29 3b 0a |n.int.st|rcmp();.|
|00001170| 65 78 74 65 72 6e 09 69 | 6e 74 09 73 74 72 6c 65 |extern.i|nt.strle|
|00001180| 6e 28 29 3b 0a 65 78 74 | 65 72 6e 09 76 6f 69 64 |n();.ext|ern.void|
|00001190| 09 70 65 72 72 6f 72 28 | 29 3b 0a 65 78 74 65 72 |.perror(|);.exter|
|000011a0| 6e 09 69 6e 74 09 6c 73 | 65 65 6b 28 29 3b 0a 65 |n.int.ls|eek();.e|
|000011b0| 78 74 65 72 6e 09 69 6e | 74 09 72 65 61 64 28 29 |xtern.in|t.read()|
|000011c0| 3b 0a 0a 74 79 70 65 64 | 65 66 20 73 74 72 75 63 |;..typed|ef struc|
|000011d0| 74 20 69 74 65 6d 5f 72 | 65 63 20 2a 69 74 65 6d |t item_r|ec *item|
|000011e0| 5f 70 74 72 3b 0a 0a 73 | 74 72 75 63 74 20 69 74 |_ptr;..s|truct it|
|000011f0| 65 6d 5f 72 65 63 0a 20 | 20 20 20 7b 20 20 20 20 |em_rec. | { |
|00001200| 0a 09 69 74 65 6d 5f 70 | 74 72 09 6e 65 78 74 3b |..item_p|tr.next;|
|00001210| 0a 09 63 68 61 72 2a 20 | 09 09 64 61 74 61 3b 0a |..char* |..data;.|
|00001220| 20 20 20 20 7d 3b 0a 0a | 23 64 65 66 69 6e 65 09 | };..|#define.|
|00001230| 49 4e 5f 4f 52 44 45 52 | 28 78 2c 20 79 29 20 28 |IN_ORDER|(x, y) (|
|00001240| 73 74 72 63 6d 70 28 28 | 78 29 2d 3e 64 61 74 61 |strcmp((|x)->data|
|00001250| 2c 20 28 79 29 2d 3e 64 | 61 74 61 29 20 3c 3d 20 |, (y)->d|ata) <= |
|00001260| 30 29 0a 0a 0a 69 74 65 | 6d 5f 70 74 72 20 6e 61 |0)...ite|m_ptr na|
|00001270| 74 5f 73 6f 72 74 28 6c | 69 73 74 29 0a 20 20 20 |t_sort(l|ist). |
|00001280| 20 69 74 65 6d 5f 70 74 | 72 20 6c 69 73 74 3b 0a | item_pt|r list;.|
|00001290| 20 20 20 20 7b 0a 09 69 | 74 65 6d 5f 70 74 72 20 | {..i|tem_ptr |
|000012a0| 73 74 61 63 6b 5b 33 30 | 5d 3b 0a 09 69 74 65 6d |stack[30|];..item|
|000012b0| 5f 70 74 72 20 2a 73 70 | 20 3d 20 73 74 61 63 6b |_ptr *sp| = stack|
|000012c0| 3b 0a 09 69 6e 74 20 72 | 75 6e 73 20 3d 20 30 3b |;..int r|uns = 0;|
|000012d0| 09 09 09 2f 2a 20 74 6f | 74 61 6c 20 6e 75 6d 62 |.../* to|tal numb|
|000012e0| 65 72 20 6f 66 20 72 75 | 6e 73 20 70 72 6f 63 65 |er of ru|ns proce|
|000012f0| 73 73 65 64 20 2a 2f 0a | 09 72 65 67 69 73 74 65 |ssed */.|.registe|
|00001300| 72 20 69 74 65 6d 5f 70 | 74 72 20 70 2c 20 71 2c |r item_p|tr p, q,|
|00001310| 20 72 3b 0a 09 73 74 72 | 75 63 74 20 69 74 65 6d | r;..str|uct item|
|00001320| 5f 72 65 63 20 68 65 61 | 64 65 72 3b 0a 09 69 6e |_rec hea|der;..in|
|00001330| 74 20 6b 3b 0a 0a 09 77 | 68 69 6c 65 20 28 70 20 |t k;...w|hile (p |
|00001340| 3d 20 6c 69 73 74 29 20 | 7b 0a 09 20 20 20 20 2f |= list) |{.. /|
|00001350| 2a 20 70 69 63 6b 20 75 | 70 20 61 20 72 75 6e 20 |* pick u|p a run |
|00001360| 66 72 6f 6d 20 74 68 65 | 20 66 72 6f 6e 74 20 6f |from the| front o|
|00001370| 66 20 6c 69 73 74 2c 20 | 73 65 74 74 69 6e 67 20 |f list, |setting |
|00001380| 2a 2f 0a 09 20 20 20 20 | 2f 2a 20 70 20 3d 20 28 |*/.. |/* p = (|
|00001390| 70 6f 69 6e 74 65 72 20 | 74 6f 20 62 65 67 69 6e |pointer |to begin|
|000013a0| 6e 69 6e 67 20 6f 66 20 | 72 75 6e 29 2c 20 6c 69 |ning of |run), li|
|000013b0| 73 74 20 3d 20 28 72 65 | 73 74 20 6f 66 20 6c 69 |st = (re|st of li|
|000013c0| 73 74 29 20 2a 2f 0a 09 | 20 20 20 20 69 66 20 28 |st) */..| if (|
|000013d0| 71 20 3d 20 70 2d 3e 6e | 65 78 74 29 20 7b 0a 09 |q = p->n|ext) {..|
|000013e0| 09 6c 69 73 74 20 3d 20 | 71 2d 3e 6e 65 78 74 3b |.list = |q->next;|
|000013f0| 0a 09 09 69 66 20 28 21 | 49 4e 5f 4f 52 44 45 52 |...if (!|IN_ORDER|
|00001400| 28 70 2c 20 71 29 29 20 | 72 20 3d 20 71 2c 20 71 |(p, q)) |r = q, q|
|00001410| 20 3d 20 70 2c 20 70 20 | 3d 20 72 3b 0a 09 09 70 | = p, p |= r;...p|
|00001420| 2d 3e 6e 65 78 74 20 3d | 20 71 3b 0a 09 09 66 6f |->next =| q;...fo|
|00001430| 72 20 28 72 20 3d 20 6c | 69 73 74 3b 20 72 20 26 |r (r = l|ist; r &|
|00001440| 26 20 49 4e 5f 4f 52 44 | 45 52 28 71 2c 20 72 29 |& IN_ORD|ER(q, r)|
|00001450| 3b 20 72 20 3d 20 72 2d | 3e 6e 65 78 74 29 0a 09 |; r = r-|>next)..|
|00001460| 09 20 20 20 20 71 2d 3e | 6e 65 78 74 20 3d 20 72 |. q->|next = r|
|00001470| 2c 20 71 20 3d 20 72 3b | 0a 09 09 71 2d 3e 6e 65 |, q = r;|...q->ne|
|00001480| 78 74 20 3d 20 28 69 74 | 65 6d 5f 70 74 72 29 30 |xt = (it|em_ptr)0|
|00001490| 3b 0a 09 09 6c 69 73 74 | 20 3d 20 72 3b 0a 09 20 |;...list| = r;.. |
|000014a0| 20 20 20 7d 20 65 6c 73 | 65 20 7b 0a 09 09 6c 69 | } els|e {...li|
|000014b0| 73 74 20 3d 20 28 69 74 | 65 6d 5f 70 74 72 29 30 |st = (it|em_ptr)0|
|000014c0| 3b 0a 09 20 20 20 20 7d | 0a 09 20 20 20 20 72 75 |;.. }|.. ru|
|000014d0| 6e 73 2b 2b 3b 0a 09 20 | 20 20 20 2f 2a 20 6d 65 |ns++;.. | /* me|
|000014e0| 72 67 65 20 74 68 69 73 | 20 72 75 6e 20 77 69 74 |rge this| run wit|
|000014f0| 68 20 30 20 6f 72 20 6d | 6f 72 65 20 72 75 6e 73 |h 0 or m|ore runs|
|00001500| 20 6f 66 66 20 74 68 65 | 20 74 6f 70 20 6f 66 20 | off the| top of |
|00001510| 74 68 65 20 73 74 61 63 | 6b 20 2a 2f 0a 09 20 20 |the stac|k */.. |
|00001520| 20 20 66 6f 72 20 28 6b | 20 3d 20 72 75 6e 73 3b | for (k| = runs;|
|00001530| 20 31 20 26 7e 20 6b 3b | 20 6b 20 3e 3e 3d 20 31 | 1 &~ k;| k >>= 1|
|00001540| 29 20 7b 0a 09 09 71 20 | 3d 20 2a 2d 2d 73 70 3b |) {...q |= *--sp;|
|00001550| 0a 09 09 72 20 3d 20 26 | 68 65 61 64 65 72 3b 0a |...r = &|header;.|
|00001560| 09 09 77 68 69 6c 65 20 | 28 71 20 26 26 20 70 29 |..while |(q && p)|
|00001570| 0a 09 09 20 20 20 20 69 | 66 20 28 49 4e 5f 4f 52 |... i|f (IN_OR|
|00001580| 44 45 52 28 71 2c 20 70 | 29 29 20 7b 0a 09 09 09 |DER(q, p|)) {....|
|00001590| 72 2d 3e 6e 65 78 74 20 | 3d 20 71 3b 0a 09 09 09 |r->next |= q;....|
|000015a0| 72 20 3d 20 71 2c 20 71 | 20 3d 20 71 2d 3e 6e 65 |r = q, q| = q->ne|
|000015b0| 78 74 3b 0a 09 09 20 20 | 20 20 7d 20 65 6c 73 65 |xt;... | } else|
|000015c0| 20 7b 0a 09 09 09 72 2d | 3e 6e 65 78 74 20 3d 20 | {....r-|>next = |
|000015d0| 70 3b 0a 09 09 09 72 20 | 3d 20 70 2c 20 70 20 3d |p;....r |= p, p =|
|000015e0| 20 70 2d 3e 6e 65 78 74 | 3b 0a 09 09 20 20 20 20 | p->next|;... |
|000015f0| 7d 0a 09 09 72 2d 3e 6e | 65 78 74 20 3d 20 71 20 |}...r->n|ext = q |
|00001600| 3f 20 71 20 3a 20 70 3b | 0a 09 09 70 20 3d 20 68 |? q : p;|...p = h|
|00001610| 65 61 64 65 72 2e 6e 65 | 78 74 3b 0a 09 20 20 20 |eader.ne|xt;.. |
|00001620| 20 7d 0a 09 20 20 20 20 | 2f 2a 20 70 75 73 68 20 | }.. |/* push |
|00001630| 74 68 65 20 6d 65 72 67 | 65 64 20 72 75 6e 20 6f |the merg|ed run o|
|00001640| 6e 74 6f 20 74 68 65 20 | 73 74 61 63 6b 20 2a 2f |nto the |stack */|
|00001650| 0a 09 20 20 20 20 2a 73 | 70 2b 2b 20 3d 20 70 3b |.. *s|p++ = p;|
|00001660| 0a 09 7d 0a 09 69 66 20 | 28 73 70 20 3d 3d 20 73 |..}..if |(sp == s|
|00001670| 74 61 63 6b 29 20 72 65 | 74 75 72 6e 20 28 69 74 |tack) re|turn (it|
|00001680| 65 6d 5f 70 74 72 29 30 | 3b 0a 09 2f 2a 20 6d 65 |em_ptr)0|;../* me|
|00001690| 72 67 65 20 61 6c 6c 20 | 74 68 65 20 72 75 6e 73 |rge all |the runs|
|000016a0| 20 6f 6e 20 74 68 65 20 | 73 74 61 63 6b 20 2a 2f | on the |stack */|
|000016b0| 0a 09 70 20 3d 20 2a 2d | 2d 73 70 3b 0a 09 77 68 |..p = *-|-sp;..wh|
|000016c0| 69 6c 65 20 28 73 70 20 | 21 3d 20 73 74 61 63 6b |ile (sp |!= stack|
|000016d0| 29 20 7b 0a 09 20 20 20 | 20 71 20 3d 20 2a 2d 2d |) {.. | q = *--|
|000016e0| 73 70 3b 0a 09 20 20 20 | 20 72 20 3d 20 26 68 65 |sp;.. | r = &he|
|000016f0| 61 64 65 72 3b 0a 09 20 | 20 20 20 77 68 69 6c 65 |ader;.. | while|
|00001700| 20 28 71 20 26 26 20 70 | 29 0a 09 09 69 66 20 28 | (q && p|)...if (|
|00001710| 49 4e 5f 4f 52 44 45 52 | 28 71 2c 20 70 29 29 20 |IN_ORDER|(q, p)) |
|00001720| 7b 0a 09 09 20 20 20 20 | 72 2d 3e 6e 65 78 74 20 |{... |r->next |
|00001730| 3d 20 71 3b 0a 09 09 20 | 20 20 20 72 20 3d 20 71 |= q;... | r = q|
|00001740| 2c 20 71 20 3d 20 71 2d | 3e 6e 65 78 74 3b 0a 09 |, q = q-|>next;..|
|00001750| 09 7d 20 65 6c 73 65 20 | 7b 0a 09 09 20 20 20 20 |.} else |{... |
|00001760| 72 2d 3e 6e 65 78 74 20 | 3d 20 70 3b 0a 09 09 20 |r->next |= p;... |
|00001770| 20 20 20 72 20 3d 20 70 | 2c 20 70 20 3d 20 70 2d | r = p|, p = p-|
|00001780| 3e 6e 65 78 74 3b 0a 09 | 09 7d 0a 09 20 20 20 20 |>next;..|.}.. |
|00001790| 72 2d 3e 6e 65 78 74 20 | 3d 20 71 20 3f 20 71 20 |r->next |= q ? q |
|000017a0| 3a 20 70 3b 0a 09 20 20 | 20 20 70 20 3d 20 68 65 |: p;.. | p = he|
|000017b0| 61 64 65 72 2e 6e 65 78 | 74 3b 0a 09 7d 0a 09 72 |ader.nex|t;..}..r|
|000017c0| 65 74 75 72 6e 20 70 3b | 0a 20 20 20 20 7d 0a 0a |eturn p;|. }..|
|000017d0| 69 74 65 6d 5f 70 74 72 | 20 61 6c 6c 6f 63 5f 69 |item_ptr| alloc_i|
|000017e0| 74 65 6d 28 64 61 74 61 | 29 0a 20 20 20 20 63 68 |tem(data|). ch|
|000017f0| 61 72 20 2a 64 61 74 61 | 3b 0a 20 20 20 20 7b 0a |ar *data|;. {.|
|00001800| 09 72 65 67 69 73 74 65 | 72 20 69 74 65 6d 5f 70 |.registe|r item_p|
|00001810| 74 72 20 72 65 73 75 6c | 74 3b 0a 0a 09 72 65 73 |tr resul|t;...res|
|00001820| 75 6c 74 20 3d 20 28 69 | 74 65 6d 5f 70 74 72 29 |ult = (i|tem_ptr)|
|00001830| 6d 61 6c 6c 6f 63 28 73 | 69 7a 65 6f 66 20 2a 72 |malloc(s|izeof *r|
|00001840| 65 73 75 6c 74 20 2b 20 | 73 74 72 6c 65 6e 28 64 |esult + |strlen(d|
|00001850| 61 74 61 29 20 2b 20 31 | 29 3b 0a 09 69 66 20 28 |ata) + 1|);..if (|
|00001860| 72 65 73 75 6c 74 29 20 | 7b 0a 09 20 20 20 20 72 |result) |{.. r|
|00001870| 65 73 75 6c 74 2d 3e 6e | 65 78 74 20 3d 20 28 69 |esult->n|ext = (i|
|00001880| 74 65 6d 5f 70 74 72 29 | 30 3b 0a 09 20 20 20 20 |tem_ptr)|0;.. |
|00001890| 72 65 73 75 6c 74 2d 3e | 64 61 74 61 20 3d 20 73 |result->|data = s|
|000018a0| 74 72 63 70 79 28 28 63 | 68 61 72 2a 29 72 65 73 |trcpy((c|har*)res|
|000018b0| 75 6c 74 20 2b 20 73 69 | 7a 65 6f 66 20 2a 72 65 |ult + si|zeof *re|
|000018c0| 73 75 6c 74 2c 20 64 61 | 74 61 29 3b 0a 09 7d 0a |sult, da|ta);..}.|
|000018d0| 09 72 65 74 75 72 6e 20 | 72 65 73 75 6c 74 3b 0a |.return |result;.|
|000018e0| 20 20 20 20 7d 0a 0a 2f | 2a 20 20 57 68 61 74 20 | }../|* What |
|000018f0| 77 65 20 72 65 61 6c 6c | 79 20 77 61 6e 74 20 74 |we reall|y want t|
|00001900| 6f 20 64 6f 20 69 73 20 | 74 6f 20 73 6c 75 72 70 |o do is |to slurp|
|00001910| 20 74 68 65 20 65 6e 74 | 69 72 65 20 66 69 6c 65 | the ent|ire file|
|00001920| 20 69 6e 20 77 69 74 68 | 20 6f 6e 65 20 63 61 6c | in with| one cal|
|00001930| 6c 0a 20 20 20 20 74 6f | 20 72 65 61 64 28 29 2e |l. to| read().|
|00001940| 20 20 49 6e 20 6f 72 64 | 65 72 20 74 6f 20 64 6f | In ord|er to do|
|00001950| 20 74 68 61 74 2c 20 77 | 65 20 6e 65 65 64 20 74 | that, w|e need t|
|00001960| 6f 20 6b 6e 6f 77 20 68 | 6f 77 20 6d 75 63 68 20 |o know h|ow much |
|00001970| 74 68 65 72 65 20 69 73 | 2e 20 20 41 0a 20 20 20 |there is|. A. |
|00001980| 20 66 69 6c 65 27 73 20 | 73 69 7a 65 20 63 61 6e | file's |size can|
|00001990| 20 62 65 20 64 65 74 65 | 72 6d 69 6e 65 64 20 65 | be dete|rmined e|
|000019a0| 69 74 68 65 72 20 62 79 | 20 63 61 6c 6c 69 6e 67 |ither by| calling|
|000019b0| 20 66 73 74 61 74 28 29 | 20 6f 72 20 62 79 20 75 | fstat()| or by u|
|000019c0| 73 69 6e 67 20 61 6e 0a | 20 20 20 20 6c 73 65 65 |sing an.| lsee|
|000019d0| 6b 28 29 20 74 6f 20 74 | 68 65 20 65 6e 64 2e 20 |k() to t|he end. |
|000019e0| 20 54 68 65 20 6e 75 6d | 62 65 72 20 79 6f 75 20 | The num|ber you |
|000019f0| 67 65 74 20 66 72 6f 6d | 20 66 73 74 61 74 28 29 |get from| fstat()|
|00001a00| 20 64 6f 65 73 6e 27 74 | 20 6d 65 61 6e 20 6d 75 | doesn't| mean mu|
|00001a10| 63 68 0a 20 20 20 20 66 | 6f 72 20 70 69 70 65 73 |ch. f|or pipes|
|00001a20| 20 61 6e 64 20 74 65 72 | 6d 69 6e 61 6c 73 2c 20 | and ter|minals, |
|00001a30| 73 6f 20 6c 73 65 65 6b | 28 29 20 61 70 70 65 61 |so lseek|() appea|
|00001a40| 72 73 20 74 6f 20 62 65 | 20 74 68 65 20 62 65 74 |rs to be| the bet|
|00001a50| 74 65 72 20 61 70 70 72 | 6f 61 63 68 2e 0a 20 20 |ter appr|oach.. |
|00001a60| 20 20 4e 6f 74 65 20 74 | 68 61 74 20 65 76 65 6e | Note t|hat even|
|00001a70| 20 77 68 65 6e 20 73 74 | 64 69 6e 20 69 73 20 63 | when st|din is c|
|00001a80| 6f 6e 6e 65 63 74 65 64 | 20 74 6f 20 61 20 66 69 |onnected| to a fi|
|00001a90| 6c 65 2c 20 70 61 72 74 | 20 6f 66 20 69 74 20 6d |le, part| of it m|
|00001aa0| 61 79 20 68 61 76 65 0a | 20 20 20 20 62 65 65 6e |ay have.| been|
|00001ab0| 20 72 65 61 64 20 61 6c | 72 65 61 64 79 2e 20 20 | read al|ready. |
|00001ac0| 49 6e 20 74 68 61 74 20 | 63 61 73 65 2c 20 77 65 |In that |case, we|
|00001ad0| 20 73 68 6f 75 6c 64 20 | 6e 6f 74 20 69 6e 63 6c | should |not incl|
|00001ae0| 75 64 65 20 74 68 65 20 | 70 61 72 74 20 77 68 69 |ude the |part whi|
|00001af0| 63 68 0a 20 20 20 20 68 | 61 73 20 62 65 65 6e 20 |ch. h|as been |
|00001b00| 72 65 61 64 2e 20 20 53 | 6f 20 77 65 20 64 6f 0a |read. S|o we do.|
|00001b10| 09 69 20 3d 20 6c 73 65 | 65 6b 28 53 54 44 49 4e |.i = lse|ek(STDIN|
|00001b20| 2c 20 30 2c 20 31 29 0a | 20 20 20 20 74 6f 20 64 |, 0, 1).| to d|
|00001b30| 69 73 63 6f 76 65 72 20 | 74 68 65 20 63 75 72 72 |iscover |the curr|
|00001b40| 65 6e 74 20 70 6f 73 69 | 74 69 6f 6e 20 28 61 6e |ent posi|tion (an|
|00001b50| 64 20 73 69 6d 75 6c 74 | 61 6e 65 6f 75 73 6c 79 |d simult|aneously|
|00001b60| 20 74 6f 20 66 69 6e 64 | 20 6f 75 74 20 69 66 20 | to find| out if |
|00001b70| 77 65 0a 20 20 20 20 63 | 61 6e 20 75 73 65 20 6c |we. c|an use l|
|00001b80| 73 65 65 6b 28 29 20 61 | 74 20 61 6c 6c 20 6f 6e |seek() a|t all on|
|00001b90| 20 74 68 69 73 20 66 69 | 6c 65 20 64 65 73 63 72 | this fi|le descr|
|00001ba0| 69 70 74 6f 72 29 2e 20 | 20 4f 6e 65 20 70 72 6f |iptor). | One pro|
|00001bb0| 62 6c 65 6d 20 72 65 6d | 61 69 6e 73 3b 0a 20 20 |blem rem|ains;. |
|00001bc0| 20 20 74 68 65 20 73 69 | 7a 65 20 6f 66 20 74 68 | the si|ze of th|
|00001bd0| 65 20 66 69 6c 65 20 6d | 61 79 20 63 68 61 6e 67 |e file m|ay chang|
|00001be0| 65 20 77 68 69 6c 65 20 | 77 65 20 61 72 65 20 72 |e while |we are r|
|00001bf0| 65 61 64 69 6e 67 20 69 | 74 2e 20 20 49 6e 20 74 |eading i|t. In t|
|00001c00| 68 61 74 20 63 61 73 65 | 0a 20 20 20 20 77 65 27 |hat case|. we'|
|00001c10| 6c 6c 20 73 74 6f 70 20 | 65 61 72 6c 79 20 69 66 |ll stop |early if|
|00001c20| 20 77 65 20 68 61 76 65 | 20 74 6f 2c 20 62 75 74 | we have| to, but|
|00001c30| 20 69 66 20 74 68 65 20 | 66 69 6c 65 20 67 72 6f | if the |file gro|
|00001c40| 77 73 20 77 65 27 6c 6c | 20 6d 69 73 73 20 73 74 |ws we'll| miss st|
|00001c50| 75 66 66 0a 20 20 20 20 | 61 64 64 65 64 20 61 74 |uff. |added at|
|00001c60| 20 74 68 65 20 65 6e 64 | 2e 0a 2a 2f 0a 6d 61 69 | the end|..*/.mai|
|00001c70| 6e 28 61 72 67 63 2c 20 | 61 72 67 76 29 0a 20 20 |n(argc, |argv). |
|00001c80| 20 20 69 6e 74 20 61 72 | 67 63 3b 0a 20 20 20 20 | int ar|gc;. |
|00001c90| 63 68 61 72 20 2a 2a 61 | 72 67 76 3b 0a 20 20 20 |char **a|rgv;. |
|00001ca0| 20 7b 0a 09 73 74 72 75 | 63 74 20 69 74 65 6d 5f | {..stru|ct item_|
|00001cb0| 72 65 63 20 68 65 61 64 | 65 72 3b 0a 09 69 74 65 |rec head|er;..ite|
|00001cc0| 6d 5f 70 74 72 20 70 2c | 20 71 3b 0a 09 63 68 61 |m_ptr p,| q;..cha|
|00001cd0| 72 20 2a 70 72 6f 67 6e | 61 6d 65 20 3d 20 61 72 |r *progn|ame = ar|
|00001ce0| 67 63 20 3e 3d 20 31 20 | 3f 20 61 72 67 76 5b 30 |gc >= 1 |? argv[0|
|00001cf0| 5d 20 3a 20 22 6e 73 6f | 72 74 22 3b 0a 09 69 6e |] : "nso|rt";..in|
|00001d00| 74 20 69 3b 0a 0a 09 69 | 66 20 28 61 72 67 63 20 |t i;...i|f (argc |
|00001d10| 21 3d 20 31 29 20 7b 0a | 09 20 20 20 20 66 70 72 |!= 1) {.|. fpr|
|00001d20| 69 6e 74 66 28 73 74 64 | 65 72 72 2c 20 22 55 73 |intf(std|err, "Us|
|00001d30| 61 67 65 3a 20 25 73 20 | 3c 75 6e 6f 72 64 65 72 |age: %s |<unorder|
|00001d40| 65 64 20 3e 73 6f 72 74 | 65 64 5c 6e 22 2c 20 70 |ed >sort|ed\n", p|
|00001d50| 72 6f 67 6e 61 6d 65 29 | 3b 0a 09 20 20 20 20 65 |rogname)|;.. e|
|00001d60| 78 69 74 28 45 58 5f 55 | 53 41 47 45 29 3b 0a 09 |xit(EX_U|SAGE);..|
|00001d70| 7d 0a 09 69 20 3d 20 6c | 73 65 65 6b 28 53 54 44 |}..i = l|seek(STD|
|00001d80| 49 4e 2c 20 30 2c 20 31 | 29 3b 09 2f 2a 20 63 75 |IN, 0, 1|);./* cu|
|00001d90| 72 72 65 6e 74 20 70 6f | 73 69 74 69 6f 6e 20 69 |rrent po|sition i|
|00001da0| 6e 20 73 74 72 65 61 6d | 20 2a 2f 0a 09 69 66 20 |n stream| */..if |
|00001db0| 28 69 20 3c 20 30 29 20 | 7b 09 09 2f 2a 20 63 61 |(i < 0) |{../* ca|
|00001dc0| 6e 27 74 20 66 69 6e 64 | 20 6f 75 74 20 74 68 65 |n't find| out the|
|00001dd0| 20 73 69 7a 65 20 62 79 | 20 73 65 65 6b 69 6e 67 | size by| seeking|
|00001de0| 20 2a 2f 0a 09 20 20 20 | 20 63 68 61 72 20 62 75 | */.. | char bu|
|00001df0| 66 66 65 72 5b 31 30 32 | 34 5d 3b 0a 0a 09 20 20 |ffer[102|4];... |
|00001e00| 20 20 66 6f 72 20 28 70 | 20 3d 20 26 68 65 61 64 | for (p| = &head|
|00001e10| 65 72 0a 09 09 3b 20 66 | 67 65 74 73 28 62 75 66 |er...; f|gets(buf|
|00001e20| 66 65 72 2c 20 73 69 7a | 65 6f 66 20 62 75 66 66 |fer, siz|eof buff|
|00001e30| 65 72 2c 20 73 74 64 69 | 6e 29 0a 09 09 3b 20 70 |er, stdi|n)...; p|
|00001e40| 2d 3e 6e 65 78 74 20 3d | 20 71 2c 20 70 20 3d 20 |->next =| q, p = |
|00001e50| 71 29 20 7b 0a 09 09 69 | 20 3d 20 73 74 72 6c 65 |q) {...i| = strle|
|00001e60| 6e 28 62 75 66 66 65 72 | 29 3b 0a 09 09 69 66 20 |n(buffer|);...if |
|00001e70| 28 69 20 3e 20 30 20 26 | 26 20 62 75 66 66 65 72 |(i > 0 &|& buffer|
|00001e80| 5b 69 2d 31 5d 20 3d 3d | 20 27 5c 6e 27 29 20 62 |[i-1] ==| '\n') b|
|00001e90| 75 66 66 65 72 5b 69 2d | 31 5d 20 3d 20 27 5c 30 |uffer[i-|1] = '\0|
|00001ea0| 27 3b 0a 09 09 69 66 20 | 28 21 28 71 20 3d 20 61 |';...if |(!(q = a|
|00001eb0| 6c 6c 6f 63 5f 69 74 65 | 6d 28 62 75 66 66 65 72 |lloc_ite|m(buffer|
|00001ec0| 29 29 29 20 7b 0a 09 09 | 20 20 20 20 66 70 72 69 |))) {...| fpri|
|00001ed0| 6e 74 66 28 73 74 64 65 | 72 72 2c 20 22 25 73 3a |ntf(stde|rr, "%s:|
|00001ee0| 20 72 61 6e 20 6f 75 74 | 20 6f 66 20 6d 65 6d 6f | ran out| of memo|
|00001ef0| 72 79 5c 6e 22 2c 20 70 | 72 6f 67 6e 61 6d 65 29 |ry\n", p|rogname)|
|00001f00| 3b 0a 09 09 20 20 20 20 | 65 78 69 74 28 45 58 5f |;... |exit(EX_|
|00001f10| 53 4f 46 54 57 41 52 45 | 29 3b 0a 09 09 7d 0a 09 |SOFTWARE|);...}..|
|00001f20| 7d 20 65 6c 73 65 20 7b | 0a 09 20 20 20 20 72 65 |} else {|.. re|
|00001f30| 67 69 73 74 65 72 20 63 | 68 61 72 20 2a 62 2c 20 |gister c|har *b, |
|00001f40| 2a 63 3b 0a 09 20 20 20 | 20 72 65 67 69 73 74 65 |*c;.. | registe|
|00001f50| 72 20 69 6e 74 20 6e 3b | 0a 0a 09 20 20 20 20 6e |r int n;|... n|
|00001f60| 20 3d 20 6c 73 65 65 6b | 28 53 54 44 49 4e 2c 20 | = lseek|(STDIN, |
|00001f70| 30 2c 20 32 29 20 2d 20 | 69 3b 09 2f 2a 20 70 61 |0, 2) - |i;./* pa|
|00001f80| 72 74 20 6f 66 20 73 74 | 64 69 6e 20 6d 61 79 20 |rt of st|din may |
|00001f90| 68 61 76 65 20 62 65 65 | 6e 20 72 65 61 64 20 2a |have bee|n read *|
|00001fa0| 2f 0a 09 20 20 20 20 28 | 76 6f 69 64 29 20 6c 73 |/.. (|void) ls|
|00001fb0| 65 65 6b 28 53 54 44 49 | 4e 2c 20 69 2c 20 30 29 |eek(STDI|N, i, 0)|
|00001fc0| 3b 09 2f 2a 20 67 6f 20 | 62 61 63 6b 20 74 6f 20 |;./* go |back to |
|00001fd0| 6f 72 69 67 69 6e 61 6c | 20 70 6f 73 69 74 69 6f |original| positio|
|00001fe0| 6e 20 2a 2f 0a 09 20 20 | 20 20 69 66 20 28 21 28 |n */.. | if (!(|
|00001ff0| 62 20 3d 20 6d 61 6c 6c | 6f 63 28 6e 2b 31 29 29 |b = mall|oc(n+1))|
|00002000| 29 20 7b 0a 09 09 66 70 | 72 69 6e 74 66 28 73 74 |) {...fp|rintf(st|
|00002010| 64 65 72 72 2c 20 22 25 | 73 3a 20 72 61 6e 20 6f |derr, "%|s: ran o|
|00002020| 75 74 20 6f 66 20 6d 65 | 6d 6f 72 79 5c 6e 22 2c |ut of me|mory\n",|
|00002030| 20 70 72 6f 67 6e 61 6d | 65 29 3b 0a 09 09 65 78 | prognam|e);...ex|
|00002040| 69 74 28 45 58 5f 53 4f | 46 54 57 41 52 45 29 3b |it(EX_SO|FTWARE);|
|00002050| 0a 09 20 20 20 20 7d 0a | 09 20 20 20 20 66 6f 72 |.. }.|. for|
|00002060| 20 28 63 20 3d 20 62 3b | 20 28 69 20 3d 20 6e 2d | (c = b;| (i = n-|
|00002070| 28 63 2d 62 29 29 20 3e | 20 30 3b 20 63 20 2b 3d |(c-b)) >| 0; c +=|
|00002080| 20 69 29 20 7b 0a 09 09 | 69 20 3d 20 72 65 61 64 | i) {...|i = read|
|00002090| 28 53 54 44 49 4e 2c 20 | 63 2c 20 69 29 3b 0a 09 |(STDIN, |c, i);..|
|000020a0| 09 69 66 20 28 69 20 3c | 20 30 29 20 7b 0a 09 09 |.if (i <| 0) {...|
|000020b0| 20 20 20 20 70 65 72 72 | 6f 72 28 70 72 6f 67 6e | perr|or(progn|
|000020c0| 61 6d 65 29 3b 0a 09 09 | 20 20 20 20 65 78 69 74 |ame);...| exit|
|000020d0| 28 45 58 5f 49 4f 45 52 | 52 29 3b 0a 09 09 7d 20 |(EX_IOER|R);...} |
|000020e0| 65 6c 73 65 20 0a 09 09 | 69 66 20 28 69 20 3d 3d |else ...|if (i ==|
|000020f0| 20 30 29 20 7b 0a 09 09 | 20 20 20 20 62 72 65 61 | 0) {...| brea|
|00002100| 6b 3b 0a 09 09 7d 0a 09 | 20 20 20 20 7d 0a 09 20 |k;...}..| }.. |
|00002110| 20 20 20 2f 2a 20 69 74 | 20 69 73 20 70 6f 73 73 | /* it| is poss|
|00002120| 69 62 6c 65 20 74 68 61 | 74 20 74 68 65 20 66 69 |ible tha|t the fi|
|00002130| 6c 65 20 6d 61 79 20 68 | 61 76 65 20 62 65 65 6e |le may h|ave been|
|00002140| 20 74 72 75 6e 63 61 74 | 65 64 20 2a 2f 0a 09 20 | truncat|ed */.. |
|00002150| 20 20 20 2f 2a 20 77 68 | 69 6c 65 20 77 65 20 77 | /* wh|ile we w|
|00002160| 65 72 65 20 72 65 61 64 | 69 6e 67 20 69 74 2e 20 |ere read|ing it. |
|00002170| 2a 2f 0a 09 20 20 20 20 | 6e 20 3d 20 63 2d 62 3b |*/.. |n = c-b;|
|00002180| 0a 09 20 20 20 20 66 6f | 72 20 28 70 20 3d 20 26 |.. fo|r (p = &|
|00002190| 68 65 61 64 65 72 3b 20 | 6e 20 3e 20 30 3b 20 62 |header; |n > 0; b|
|000021a0| 20 3d 20 63 2c 20 70 2d | 3e 6e 65 78 74 20 3d 20 | = c, p-|>next = |
|000021b0| 71 2c 20 70 20 3d 20 71 | 29 20 7b 0a 09 09 66 6f |q, p = q|) {...fo|
|000021c0| 72 20 28 63 20 3d 20 62 | 3b 20 2d 2d 6e 20 3e 3d |r (c = b|; --n >=|
|000021d0| 20 30 3b 20 63 2b 2b 29 | 0a 09 09 20 20 20 20 69 | 0; c++)|... i|
|000021e0| 66 20 28 2a 63 20 3d 3d | 20 27 5c 6e 27 29 20 7b |f (*c ==| '\n') {|
|000021f0| 0a 09 09 09 2a 63 2b 2b | 20 3d 20 27 5c 30 27 3b |....*c++| = '\0';|
|00002200| 0a 09 09 09 62 72 65 61 | 6b 3b 0a 09 09 20 20 20 |....brea|k;... |
|00002210| 20 7d 0a 09 09 69 66 20 | 28 6e 20 3c 20 30 29 20 | }...if |(n < 0) |
|00002220| 2a 63 20 3d 20 27 5c 30 | 27 3b 0a 09 09 69 66 20 |*c = '\0|';...if |
|00002230| 28 21 28 71 20 3d 20 28 | 69 74 65 6d 5f 70 74 72 |(!(q = (|item_ptr|
|00002240| 29 20 6d 61 6c 6c 6f 63 | 28 73 69 7a 65 6f 66 20 |) malloc|(sizeof |
|00002250| 2a 71 29 29 29 20 7b 0a | 09 09 20 20 20 20 66 70 |*q))) {.|.. fp|
|00002260| 72 69 6e 74 66 28 73 74 | 64 65 72 72 2c 20 22 6e |rintf(st|derr, "n|
|00002270| 73 6f 72 74 3a 20 72 61 | 6e 20 6f 75 74 20 6f 66 |sort: ra|n out of|
|00002280| 20 6d 65 6d 6f 72 79 5c | 6e 22 29 3b 0a 09 09 20 | memory\|n");... |
|00002290| 20 20 20 65 78 69 74 28 | 45 58 5f 53 4f 46 54 57 | exit(|EX_SOFTW|
|000022a0| 41 52 45 29 3b 0a 09 09 | 7d 0a 09 09 71 2d 3e 64 |ARE);...|}...q->d|
|000022b0| 61 74 61 20 3d 20 62 3b | 0a 09 20 20 20 20 7d 0a |ata = b;|.. }.|
|000022c0| 09 7d 0a 09 70 2d 3e 6e | 65 78 74 20 3d 20 28 69 |.}..p->n|ext = (i|
|000022d0| 74 65 6d 5f 70 74 72 29 | 30 3b 0a 09 70 20 3d 20 |tem_ptr)|0;..p = |
|000022e0| 68 65 61 64 65 72 2e 6e | 65 78 74 3b 0a 09 66 6f |header.n|ext;..fo|
|000022f0| 72 20 28 70 20 3d 20 6e | 61 74 5f 73 6f 72 74 28 |r (p = n|at_sort(|
|00002300| 70 29 3b 20 70 3b 20 70 | 20 3d 20 70 2d 3e 6e 65 |p); p; p| = p->ne|
|00002310| 78 74 29 0a 09 20 20 20 | 20 70 75 74 73 28 70 2d |xt).. | puts(p-|
|00002320| 3e 64 61 74 61 29 3b 0a | 09 65 78 69 74 28 45 58 |>data);.|.exit(EX|
|00002330| 5f 4f 4b 29 3b 0a 20 20 | 20 20 7d 0a 0a 2d 2d 2d |_OK);. | }..---|
|00002340| 2d 2d 2d 20 45 4f 46 20 | 2d 2d 2d 2d 2d 2d 0a 6c |--- EOF |------.l|
|00002350| 73 20 2d 6c 20 6e 73 6f | 72 74 2e 63 0a 65 78 69 |s -l nso|rt.c.exi|
|00002360| 74 20 30 0a 0a | |t 0.. | |
+--------+-------------------------+-------------------------+--------+--------+