home *** CD-ROM | disk | FTP | other *** search
open in:
MacOS 8.1
|
Win98
|
DOS
browse contents |
view JSON data
|
view as text
This file was processed as: SHell self-extracting ARchive
(archive/shar).
Confidence | Program | Detection | Match Type | Support
|
---|
100%
| dexvert
| Newsgroup Content (archive/news)
| magic
| Supported |
100%
| dexvert
| SHell self-extracting ARchive (archive/shar)
| magic
| Supported |
100%
| dexvert
| Internet Message Format (text/imf)
| magic
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| news or mail 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)
| |
100%
| xdgMime
| message/rfc822
| default
|
|
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 53 75 62 6a 65 63 74 3a | 20 20 76 32 32 69 31 30 |Subject:| v22i10|
|00000010| 39 3a 20 20 50 61 74 68 | 61 6c 69 61 73 2c 20 76 |9: Path|alias, v|
|00000020| 65 72 73 69 6f 6e 20 31 | 30 2c 20 50 61 72 74 30 |ersion 1|0, Part0|
|00000030| 31 2f 30 33 0a 4e 65 77 | 73 67 72 6f 75 70 73 3a |1/03.New|sgroups:|
|00000040| 20 63 6f 6d 70 2e 73 6f | 75 72 63 65 73 2e 75 6e | comp.so|urces.un|
|00000050| 69 78 0a 41 70 70 72 6f | 76 65 64 3a 20 72 73 61 |ix.Appro|ved: rsa|
|00000060| 6c 7a 40 75 75 6e 65 74 | 2e 55 55 2e 4e 45 54 0a |lz@uunet|.UU.NET.|
|00000070| 58 2d 43 68 65 63 6b 73 | 75 6d 2d 53 6e 65 66 72 |X-Checks|um-Snefr|
|00000080| 75 3a 20 65 64 32 65 38 | 66 62 66 20 39 32 32 31 |u: ed2e8|fbf 9221|
|00000090| 65 38 63 31 20 62 30 64 | 33 37 62 35 65 20 30 39 |e8c1 b0d|37b5e 09|
|000000a0| 37 30 65 31 32 34 0a 0a | 53 75 62 6d 69 74 74 65 |70e124..|Submitte|
|000000b0| 64 2d 62 79 3a 20 70 65 | 74 65 72 20 68 6f 6e 65 |d-by: pe|ter hone|
|000000c0| 79 6d 61 6e 20 3c 68 6f | 6e 65 79 40 63 69 74 69 |yman <ho|ney@citi|
|000000d0| 2e 75 6d 69 63 68 2e 65 | 64 75 3e 0a 50 6f 73 74 |.umich.e|du>.Post|
|000000e0| 69 6e 67 2d 6e 75 6d 62 | 65 72 3a 20 56 6f 6c 75 |ing-numb|er: Volu|
|000000f0| 6d 65 20 32 32 2c 20 49 | 73 73 75 65 20 31 30 39 |me 22, I|ssue 109|
|00000100| 0a 41 72 63 68 69 76 65 | 2d 6e 61 6d 65 3a 20 70 |.Archive|-name: p|
|00000110| 61 74 68 61 6c 69 61 73 | 31 30 2f 70 61 72 74 30 |athalias|10/part0|
|00000120| 31 0a 0a 5b 20 49 20 46 | 54 50 27 64 20 74 68 69 |1..[ I F|TP'd thi|
|00000130| 73 20 66 72 6f 6d 20 70 | 65 74 65 72 27 73 20 6d |s from p|eter's m|
|00000140| 61 63 68 69 6e 65 20 61 | 6e 64 20 61 6d 20 70 6f |achine a|nd am po|
|00000150| 73 74 69 6e 67 20 69 74 | 20 62 65 63 61 75 73 65 |sting it| because|
|00000160| 20 74 68 65 20 76 65 72 | 73 69 6f 6e 39 0a 20 20 | the ver|sion9. |
|00000170| 68 69 63 63 75 70 73 20 | 6f 6e 20 74 68 65 20 6d |hiccups |on the m|
|00000180| 61 70 73 2e 20 20 41 66 | 74 65 72 20 74 68 69 73 |aps. Af|ter this|
|00000190| 2c 20 49 27 6d 20 6f 66 | 66 20 74 6f 20 55 73 65 |, I'm of|f to Use|
|000001a0| 6e 69 78 20 61 6e 64 20 | 61 20 63 6f 75 70 6c 65 |nix and |a couple|
|000001b0| 20 6f 66 20 64 61 79 73 | 0a 20 20 6f 66 20 76 61 | of days|. of va|
|000001c0| 63 61 74 69 6f 6e 2e 20 | 20 53 65 65 20 79 6f 75 |cation. | See you|
|000001d0| 20 69 6e 20 41 6e 61 68 | 65 69 6d 2c 20 6f 72 20 | in Anah|eim, or |
|000001e0| 65 6c 65 63 74 72 6f 6e | 69 63 61 6c 6c 79 20 69 |electron|ically i|
|000001f0| 6e 20 61 20 77 65 65 6b | 20 61 6e 64 20 61 20 68 |n a week| and a h|
|00000200| 61 6c 66 2e 0a 20 20 2d | 2d 72 24 20 20 5d 0a 0a |alf.. -|-r$ ]..|
|00000210| 50 61 74 68 61 6c 69 61 | 73 20 72 65 61 64 73 20 |Pathalia|s reads |
|00000220| 74 68 65 20 6d 61 70 20 | 64 61 74 61 20 61 66 74 |the map |data aft|
|00000230| 65 72 20 69 74 20 68 61 | 73 20 62 65 65 6e 20 75 |er it ha|s been u|
|00000240| 6e 70 61 63 6b 65 64 20 | 66 72 6f 6d 20 63 6f 6d |npacked |from com|
|00000250| 70 2e 6d 61 69 6c 2e 6d | 61 70 73 2c 0a 61 6e 64 |p.mail.m|aps,.and|
|00000260| 20 67 65 6e 65 72 61 74 | 65 73 20 74 68 65 20 22 | generat|es the "|
|00000270| 6c 6f 77 65 73 74 2d 63 | 6f 73 74 22 20 72 6f 75 |lowest-c|ost" rou|
|00000280| 74 65 73 20 66 72 6f 6d | 20 6f 6e 65 20 68 6f 73 |tes from| one hos|
|00000290| 74 20 74 6f 20 61 6c 6c | 20 6f 74 68 65 72 20 68 |t to all| other h|
|000002a0| 6f 73 74 73 20 69 6e 0a | 74 68 65 20 6d 61 70 73 |osts in.|the maps|
|000002b0| 2e 0a 0a 23 21 20 2f 62 | 69 6e 2f 73 68 0a 23 20 |...#! /b|in/sh.# |
|000002c0| 54 68 69 73 20 69 73 20 | 61 20 73 68 65 6c 6c 20 |This is |a shell |
|000002d0| 61 72 63 68 69 76 65 2e | 20 20 52 65 6d 6f 76 65 |archive.| Remove|
|000002e0| 20 61 6e 79 74 68 69 6e | 67 20 62 65 66 6f 72 65 | anythin|g before|
|000002f0| 20 74 68 69 73 20 6c 69 | 6e 65 2c 20 74 68 65 6e | this li|ne, then|
|00000300| 20 66 65 65 64 20 69 74 | 0a 23 20 69 6e 74 6f 20 | feed it|.# into |
|00000310| 61 20 73 68 65 6c 6c 20 | 76 69 61 20 22 73 68 20 |a shell |via "sh |
|00000320| 66 69 6c 65 22 20 6f 72 | 20 73 69 6d 69 6c 61 72 |file" or| similar|
|00000330| 2e 20 20 54 6f 20 6f 76 | 65 72 77 72 69 74 65 20 |. To ov|erwrite |
|00000340| 65 78 69 73 74 69 6e 67 | 20 66 69 6c 65 73 2c 0a |existing| files,.|
|00000350| 23 20 74 79 70 65 20 22 | 73 68 20 66 69 6c 65 20 |# type "|sh file |
|00000360| 2d 63 22 2e 0a 23 20 54 | 68 65 20 74 6f 6f 6c 20 |-c"..# T|he tool |
|00000370| 74 68 61 74 20 67 65 6e | 65 72 61 74 65 64 20 74 |that gen|erated t|
|00000380| 68 69 73 20 61 70 70 65 | 61 72 65 64 20 69 6e 20 |his appe|ared in |
|00000390| 74 68 65 20 63 6f 6d 70 | 2e 73 6f 75 72 63 65 73 |the comp|.sources|
|000003a0| 2e 75 6e 69 78 20 6e 65 | 77 73 67 72 6f 75 70 3b |.unix ne|wsgroup;|
|000003b0| 0a 23 20 73 65 6e 64 20 | 6d 61 69 6c 20 74 6f 20 |.# send |mail to |
|000003c0| 63 6f 6d 70 2d 73 6f 75 | 72 63 65 73 2d 75 6e 69 |comp-sou|rces-uni|
|000003d0| 78 40 75 75 6e 65 74 2e | 75 75 2e 6e 65 74 20 69 |x@uunet.|uu.net i|
|000003e0| 66 20 79 6f 75 20 77 61 | 6e 74 20 74 68 61 74 20 |f you wa|nt that |
|000003f0| 74 6f 6f 6c 2e 0a 23 20 | 43 6f 6e 74 65 6e 74 73 |tool..# |Contents|
|00000400| 3a 20 20 52 45 41 44 4d | 45 20 61 72 70 61 74 78 |: READM|E arpatx|
|00000410| 74 2e 63 20 6d 61 70 69 | 74 2e 63 20 6d 65 6d 2e |t.c mapi|t.c mem.|
|00000420| 63 20 70 61 74 68 61 6c | 69 61 73 2e 38 0a 23 20 |c pathal|ias.8.# |
|00000430| 57 72 61 70 70 65 64 20 | 62 79 20 72 73 61 6c 7a |Wrapped |by rsalz|
|00000440| 40 6c 69 74 63 68 69 2e | 62 62 6e 2e 63 6f 6d 20 |@litchi.|bbn.com |
|00000450| 6f 6e 20 46 72 69 20 4a | 75 6e 20 20 38 20 30 39 |on Fri J|un 8 09|
|00000460| 3a 32 35 3a 31 39 20 31 | 39 39 30 0a 50 41 54 48 |:25:19 1|990.PATH|
|00000470| 3d 2f 62 69 6e 3a 2f 75 | 73 72 2f 62 69 6e 3a 2f |=/bin:/u|sr/bin:/|
|00000480| 75 73 72 2f 75 63 62 20 | 3b 20 65 78 70 6f 72 74 |usr/ucb |; export|
|00000490| 20 50 41 54 48 0a 65 63 | 68 6f 20 49 66 20 74 68 | PATH.ec|ho If th|
|000004a0| 69 73 20 61 72 63 68 69 | 76 65 20 69 73 20 63 6f |is archi|ve is co|
|000004b0| 6d 70 6c 65 74 65 2c 20 | 79 6f 75 20 77 69 6c 6c |mplete, |you will|
|000004c0| 20 73 65 65 20 74 68 65 | 20 66 6f 6c 6c 6f 77 69 | see the| followi|
|000004d0| 6e 67 20 6d 65 73 73 61 | 67 65 3a 0a 65 63 68 6f |ng messa|ge:.echo|
|000004e0| 20 27 20 20 20 20 20 20 | 20 20 20 20 22 73 68 61 | ' | "sha|
|000004f0| 72 3a 20 45 6e 64 20 6f | 66 20 61 72 63 68 69 76 |r: End o|f archiv|
|00000500| 65 20 31 20 28 6f 66 20 | 33 29 2e 22 27 0a 69 66 |e 1 (of |3)."'.if|
|00000510| 20 74 65 73 74 20 2d 66 | 20 27 52 45 41 44 4d 45 | test -f| 'README|
|00000520| 27 20 2d 61 20 22 24 7b | 31 7d 22 20 21 3d 20 22 |' -a "${|1}" != "|
|00000530| 2d 63 22 20 3b 20 74 68 | 65 6e 20 0a 20 20 65 63 |-c" ; th|en . ec|
|00000540| 68 6f 20 73 68 61 72 3a | 20 57 69 6c 6c 20 6e 6f |ho shar:| Will no|
|00000550| 74 20 63 6c 6f 62 62 65 | 72 20 65 78 69 73 74 69 |t clobbe|r existi|
|00000560| 6e 67 20 66 69 6c 65 20 | 5c 22 27 52 45 41 44 4d |ng file |\"'READM|
|00000570| 45 27 5c 22 0a 65 6c 73 | 65 0a 20 20 65 63 68 6f |E'\".els|e. echo|
|00000580| 20 73 68 61 72 3a 20 45 | 78 74 72 61 63 74 69 6e | shar: E|xtractin|
|00000590| 67 20 5c 22 27 52 45 41 | 44 4d 45 27 5c 22 20 5c |g \"'REA|DME'\" \|
|000005a0| 28 31 31 35 36 20 63 68 | 61 72 61 63 74 65 72 73 |(1156 ch|aracters|
|000005b0| 5c 29 0a 20 20 73 65 64 | 20 22 73 2f 5e 58 2f 2f |\). sed| "s/^X//|
|000005c0| 22 20 3e 27 52 45 41 44 | 4d 45 27 20 3c 3c 27 45 |" >'READ|ME' <<'E|
|000005d0| 4e 44 5f 4f 46 5f 46 49 | 4c 45 27 0a 58 46 72 6f |ND_OF_FI|LE'.XFro|
|000005e0| 6d 20 63 69 74 69 21 68 | 6f 6e 65 79 20 53 75 6e |m citi!h|oney Sun|
|000005f0| 20 4f 63 74 20 20 34 20 | 32 33 3a 33 30 20 45 44 | Oct 4 |23:30 ED|
|00000600| 54 20 31 39 38 37 0a 58 | 44 61 74 65 3a 20 30 34 |T 1987.X|Date: 04|
|00000610| 20 4f 63 74 20 31 39 38 | 37 20 32 33 3a 33 30 20 | Oct 198|7 23:30 |
|00000620| 45 44 54 0a 58 46 72 6f | 6d 3a 20 68 6f 6e 65 79 |EDT.XFro|m: honey|
|00000630| 40 63 69 74 69 2e 75 6d | 69 63 68 2e 65 64 75 0a |@citi.um|ich.edu.|
|00000640| 58 54 6f 3a 20 77 68 6f | 6d 20 69 74 20 6d 61 79 |XTo: who|m it may|
|00000650| 20 63 6f 6e 63 65 72 6e | 0a 58 53 75 62 6a 65 63 | concern|.XSubjec|
|00000660| 74 3a 20 70 61 74 68 61 | 6c 69 61 73 20 63 6f 6d |t: patha|lias com|
|00000670| 70 69 6c 61 74 69 6f 6e | 20 69 6e 73 74 72 75 63 |pilation| instruc|
|00000680| 74 69 6f 6e 73 0a 58 0a | 58 65 64 69 74 20 63 6f |tions.X.|Xedit co|
|00000690| 6e 66 69 67 2e 68 0a 58 | 6d 61 6b 65 0a 58 0a 58 |nfig.h.X|make.X.X|
|000006a0| 69 66 20 67 65 74 6f 70 | 74 20 69 73 20 75 6e 64 |if getop|t is und|
|000006b0| 65 66 69 6e 65 64 2c 20 | 6f 62 74 61 69 6e 20 61 |efined, |obtain a|
|000006c0| 20 63 6f 70 79 20 66 72 | 6f 6d 20 75 73 65 6e 65 | copy fr|om usene|
|000006d0| 74 20 67 72 6f 75 70 0a | 58 63 6f 6d 70 2e 73 6f |t group.|Xcomp.so|
|000006e0| 75 72 63 65 73 2e 75 6e | 69 78 20 61 6e 64 20 61 |urces.un|ix and a|
|000006f0| 64 6a 75 73 74 20 4d 61 | 6b 65 66 69 6c 65 2e 0a |djust Ma|kefile..|
|00000700| 58 0a 58 70 61 74 68 61 | 6c 69 61 73 20 69 6e 70 |X.Xpatha|lias inp|
|00000710| 75 74 20 69 73 20 72 65 | 67 75 6c 61 72 6c 79 20 |ut is re|gularly |
|00000720| 70 75 62 6c 69 73 68 65 | 64 20 69 6e 20 75 73 65 |publishe|d in use|
|00000730| 6e 65 74 20 67 72 6f 75 | 70 20 63 6f 6d 70 2e 6d |net grou|p comp.m|
|00000740| 61 69 6c 2e 6d 61 70 73 | 2e 0a 58 0a 58 09 70 65 |ail.maps|..X.X.pe|
|00000750| 74 65 72 0a 58 0a 58 70 | 73 3a 20 20 70 61 74 68 |ter.X.Xp|s: path|
|00000760| 61 6c 69 61 73 2c 20 77 | 72 69 74 74 65 6e 20 62 |alias, w|ritten b|
|00000770| 79 20 73 74 65 76 65 20 | 62 65 6c 6c 6f 76 69 6e |y steve |bellovin|
|00000780| 20 61 6e 64 20 70 65 74 | 65 72 20 68 6f 6e 65 79 | and pet|er honey|
|00000790| 6d 61 6e 2c 20 69 73 20 | 69 6e 20 74 68 65 0a 58 |man, is |in the.X|
|000007a0| 20 20 20 20 20 70 75 62 | 6c 69 63 20 64 6f 6d 61 | pub|lic doma|
|000007b0| 69 6e 2c 20 61 6e 64 20 | 6d 61 79 20 62 65 20 75 |in, and |may be u|
|000007c0| 73 65 64 20 62 79 20 61 | 6e 79 20 70 65 72 73 6f |sed by a|ny perso|
|000007d0| 6e 20 6f 72 20 6f 72 67 | 61 6e 69 7a 61 74 69 6f |n or org|anizatio|
|000007e0| 6e 2c 20 69 6e 0a 58 20 | 20 20 20 20 61 6e 79 20 |n, in.X | any |
|000007f0| 77 61 79 20 61 6e 64 20 | 66 6f 72 20 61 6e 79 20 |way and |for any |
|00000800| 70 75 72 70 6f 73 65 2e | 0a 58 0a 58 70 70 73 3a |purpose.|.X.Xpps:|
|00000810| 20 20 54 68 65 72 65 20 | 69 73 20 6e 6f 20 77 61 | There |is no wa|
|00000820| 72 72 61 6e 74 79 20 6f | 66 20 6d 65 72 63 68 61 |rranty o|f mercha|
|00000830| 6e 74 61 62 69 6c 69 74 | 79 20 6e 6f 72 20 61 6e |ntabilit|y nor an|
|00000840| 79 20 77 61 72 72 61 6e | 74 79 20 6f 66 20 66 69 |y warran|ty of fi|
|00000850| 74 2d 0a 58 20 20 20 20 | 20 20 6e 65 73 73 20 66 |t-.X | ness f|
|00000860| 6f 72 20 61 20 70 61 72 | 74 69 63 75 6c 61 72 20 |or a par|ticular |
|00000870| 70 75 72 70 6f 73 65 20 | 6e 6f 72 20 61 6e 79 20 |purpose |nor any |
|00000880| 6f 74 68 65 72 20 77 61 | 72 72 61 6e 74 79 2c 20 |other wa|rranty, |
|00000890| 65 69 74 68 65 72 20 65 | 78 2d 0a 58 20 20 20 20 |either e|x-.X |
|000008a0| 20 20 70 72 65 73 73 20 | 6f 72 20 69 6d 70 6c 69 | press |or impli|
|000008b0| 65 64 2c 20 61 73 20 74 | 6f 20 74 68 65 20 61 63 |ed, as t|o the ac|
|000008c0| 63 75 72 61 63 79 20 6f | 66 20 74 68 65 20 65 6e |curacy o|f the en|
|000008d0| 63 6c 6f 73 65 64 20 6d | 61 74 65 72 69 61 6c 73 |closed m|aterials|
|000008e0| 20 6f 72 0a 58 20 20 20 | 20 20 20 61 73 20 74 6f | or.X | as to|
|000008f0| 20 74 68 65 69 72 20 73 | 75 69 74 61 62 69 6c 69 | their s|uitabili|
|00000900| 74 79 20 66 6f 72 20 61 | 6e 79 20 70 61 72 74 69 |ty for a|ny parti|
|00000910| 63 75 6c 61 72 20 70 75 | 72 70 6f 73 65 2e 20 20 |cular pu|rpose. |
|00000920| 41 63 63 6f 72 64 69 6e | 67 6c 79 2c 0a 58 20 20 |Accordin|gly,.X |
|00000930| 20 20 20 20 74 68 65 20 | 61 75 74 68 6f 72 73 20 | the |authors |
|00000940| 61 73 73 75 6d 65 20 6e | 6f 20 72 65 73 70 6f 6e |assume n|o respon|
|00000950| 73 69 62 69 6c 69 74 79 | 20 66 6f 72 20 74 68 65 |sibility| for the|
|00000960| 69 72 20 75 73 65 20 62 | 79 20 74 68 65 20 72 65 |ir use b|y the re|
|00000970| 63 69 70 69 2d 0a 58 20 | 20 20 20 20 20 65 6e 74 |cipi-.X | ent|
|00000980| 2e 20 20 20 46 75 72 74 | 68 65 72 2c 20 74 68 65 |. Furt|her, the|
|00000990| 20 61 75 74 68 6f 72 73 | 20 61 73 73 75 6d 65 20 | authors| assume |
|000009a0| 6e 6f 20 6f 62 6c 69 67 | 61 74 69 6f 6e 20 74 6f |no oblig|ation to|
|000009b0| 20 66 75 72 6e 69 73 68 | 20 61 6e 79 0a 58 20 20 | furnish| any.X |
|000009c0| 20 20 20 20 61 73 73 69 | 73 74 61 6e 63 65 20 6f | assi|stance o|
|000009d0| 66 20 61 6e 79 20 6b 69 | 6e 64 20 77 68 61 74 73 |f any ki|nd whats|
|000009e0| 6f 65 76 65 72 2c 20 6f | 72 20 74 6f 20 66 75 72 |oever, o|r to fur|
|000009f0| 6e 69 73 68 20 61 6e 79 | 20 61 64 64 69 74 69 6f |nish any| additio|
|00000a00| 6e 61 6c 0a 58 20 20 20 | 20 20 20 69 6e 66 6f 72 |nal.X | infor|
|00000a10| 6d 61 74 69 6f 6e 20 6f | 72 20 64 6f 63 75 6d 65 |mation o|r docume|
|00000a20| 6e 74 61 74 69 6f 6e 2e | 20 20 54 68 69 73 20 70 |ntation.| This p|
|00000a30| 61 72 61 67 72 61 70 68 | 20 77 61 73 20 63 6f 70 |aragraph| was cop|
|00000a40| 69 65 64 20 77 69 74 68 | 6f 75 74 0a 58 20 20 20 |ied with|out.X |
|00000a50| 20 20 20 70 65 72 6d 69 | 73 73 69 6f 6e 20 66 72 | permi|ssion fr|
|00000a60| 6f 6d 20 61 6e 20 6f 6c | 64 20 63 72 79 70 74 28 |om an ol|d crypt(|
|00000a70| 31 29 20 6d 61 6e 20 70 | 61 67 65 2e 0a 45 4e 44 |1) man p|age..END|
|00000a80| 5f 4f 46 5f 46 49 4c 45 | 0a 20 20 69 66 20 74 65 |_OF_FILE|. if te|
|00000a90| 73 74 20 31 31 35 36 20 | 2d 6e 65 20 60 77 63 20 |st 1156 |-ne `wc |
|00000aa0| 2d 63 20 3c 27 52 45 41 | 44 4d 45 27 60 3b 20 74 |-c <'REA|DME'`; t|
|00000ab0| 68 65 6e 0a 20 20 20 20 | 65 63 68 6f 20 73 68 61 |hen. |echo sha|
|00000ac0| 72 3a 20 5c 22 27 52 45 | 41 44 4d 45 27 5c 22 20 |r: \"'RE|ADME'\" |
|00000ad0| 75 6e 70 61 63 6b 65 64 | 20 77 69 74 68 20 77 72 |unpacked| with wr|
|00000ae0| 6f 6e 67 20 73 69 7a 65 | 21 0a 20 20 66 69 0a 20 |ong size|!. fi. |
|00000af0| 20 23 20 65 6e 64 20 6f | 66 20 27 52 45 41 44 4d | # end o|f 'READM|
|00000b00| 45 27 0a 66 69 0a 69 66 | 20 74 65 73 74 20 2d 66 |E'.fi.if| test -f|
|00000b10| 20 27 61 72 70 61 74 78 | 74 2e 63 27 20 2d 61 20 | 'arpatx|t.c' -a |
|00000b20| 22 24 7b 31 7d 22 20 21 | 3d 20 22 2d 63 22 20 3b |"${1}" !|= "-c" ;|
|00000b30| 20 74 68 65 6e 20 0a 20 | 20 65 63 68 6f 20 73 68 | then . | echo sh|
|00000b40| 61 72 3a 20 57 69 6c 6c | 20 6e 6f 74 20 63 6c 6f |ar: Will| not clo|
|00000b50| 62 62 65 72 20 65 78 69 | 73 74 69 6e 67 20 66 69 |bber exi|sting fi|
|00000b60| 6c 65 20 5c 22 27 61 72 | 70 61 74 78 74 2e 63 27 |le \"'ar|patxt.c'|
|00000b70| 5c 22 0a 65 6c 73 65 0a | 20 20 65 63 68 6f 20 73 |\".else.| echo s|
|00000b80| 68 61 72 3a 20 45 78 74 | 72 61 63 74 69 6e 67 20 |har: Ext|racting |
|00000b90| 5c 22 27 61 72 70 61 74 | 78 74 2e 63 27 5c 22 20 |\"'arpat|xt.c'\" |
|00000ba0| 5c 28 31 33 33 33 30 20 | 63 68 61 72 61 63 74 65 |\(13330 |characte|
|00000bb0| 72 73 5c 29 0a 20 20 73 | 65 64 20 22 73 2f 5e 58 |rs\). s|ed "s/^X|
|00000bc0| 2f 2f 22 20 3e 27 61 72 | 70 61 74 78 74 2e 63 27 |//" >'ar|patxt.c'|
|00000bd0| 20 3c 3c 27 45 4e 44 5f | 4f 46 5f 46 49 4c 45 27 | <<'END_|OF_FILE'|
|00000be0| 0a 58 23 69 66 6e 64 65 | 66 20 6c 69 6e 74 0a 58 |.X#ifnde|f lint.X|
|00000bf0| 73 74 61 74 69 63 20 63 | 68 61 72 20 2a 73 63 63 |static c|har *scc|
|00000c00| 73 69 64 20 3d 20 22 40 | 28 23 29 61 72 70 61 74 |sid = "@|(#)arpat|
|00000c10| 78 74 2e 63 09 39 2e 34 | 20 38 38 2f 30 39 2f 32 |xt.c.9.4| 88/09/2|
|00000c20| 31 22 3b 0a 58 23 65 6e | 64 69 66 0a 58 0a 58 2f |1";.X#en|dif.X.X/|
|00000c30| 2a 0a 58 20 2a 20 63 6f | 6e 76 65 72 74 20 68 6f |*.X * co|nvert ho|
|00000c40| 73 74 73 2e 74 78 74 20 | 69 6e 74 6f 20 70 61 74 |sts.txt |into pat|
|00000c50| 68 61 6c 69 61 73 20 66 | 6f 72 6d 61 74 2e 0a 58 |halias f|ormat..X|
|00000c60| 20 2a 0a 58 20 2a 20 61 | 6c 69 61 73 20 72 75 6c | *.X * a|lias rul|
|00000c70| 65 3a 20 22 68 6f 73 74 | 2e 64 6f 6d 2e 61 69 6e |e: "host|.dom.ain|
|00000c80| 2c 6e 69 63 6b 6e 61 6d | 65 2e 61 72 70 61 2c 2e |,nicknam|e.arpa,.|
|00000c90| 2e 2e 22 20 2d 3e 20 68 | 6f 73 74 20 3d 20 6e 69 |.." -> h|ost = ni|
|00000ca0| 63 6b 6e 61 6d 65 2c 20 | 2e 2e 2e 0a 58 20 2a 2f |ckname, |....X */|
|00000cb0| 0a 58 0a 58 2f 2a 20 72 | 65 6d 6f 76 65 20 74 68 |.X.X/* r|emove th|
|00000cc0| 65 20 6e 65 78 74 20 6c | 69 6e 65 20 66 6f 72 20 |e next l|ine for |
|00000cd0| 73 74 61 6e 64 61 72 64 | 20 6f 72 20 72 65 73 65 |standard| or rese|
|00000ce0| 61 72 63 68 20 75 6e 69 | 78 20 2a 2f 0a 58 23 64 |arch uni|x */.X#d|
|00000cf0| 65 66 69 6e 65 20 42 53 | 44 0a 58 0a 58 23 69 66 |efine BS|D.X.X#if|
|00000d00| 64 65 66 20 42 53 44 0a | 58 23 64 65 66 69 6e 65 |def BSD.|X#define|
|00000d10| 20 73 74 72 63 68 72 20 | 69 6e 64 65 78 0a 58 23 | strchr |index.X#|
|00000d20| 65 6e 64 69 66 20 2f 2a | 20 42 53 44 20 2a 2f 0a |endif /*| BSD */.|
|00000d30| 58 0a 58 23 69 6e 63 6c | 75 64 65 20 3c 73 74 64 |X.X#incl|ude <std|
|00000d40| 69 6f 2e 68 3e 0a 58 23 | 69 6e 63 6c 75 64 65 20 |io.h>.X#|include |
|00000d50| 3c 63 74 79 70 65 2e 68 | 3e 0a 58 0a 58 2f 2a 20 |<ctype.h|>.X.X/* |
|00000d60| 69 6d 70 6f 72 74 73 20 | 2a 2f 0a 58 65 78 74 65 |imports |*/.Xexte|
|00000d70| 72 6e 20 63 68 61 72 20 | 2a 72 65 5f 63 6f 6d 70 |rn char |*re_comp|
|00000d80| 28 29 2c 20 2a 6d 61 6c | 6c 6f 63 28 29 2c 20 2a |(), *mal|loc(), *|
|00000d90| 73 74 72 63 68 72 28 29 | 2c 20 2a 63 61 6c 6c 6f |strchr()|, *callo|
|00000da0| 63 28 29 3b 0a 58 65 78 | 74 65 72 6e 20 63 68 61 |c();.Xex|tern cha|
|00000db0| 72 20 2a 67 65 74 73 28 | 29 2c 20 2a 73 74 72 63 |r *gets(|), *strc|
|00000dc0| 70 79 28 29 2c 20 2a 66 | 67 65 74 73 28 29 3b 0a |py(), *f|gets();.|
|00000dd0| 58 65 78 74 65 72 6e 20 | 46 49 4c 45 20 2a 66 6f |Xextern |FILE *fo|
|00000de0| 70 65 6e 28 29 3b 0a 58 | 0a 58 74 79 70 65 64 65 |pen();.X|.Xtypede|
|00000df0| 66 20 73 74 72 75 63 74 | 20 6e 6f 64 65 20 6e 6f |f struct| node no|
|00000e00| 64 65 3b 0a 58 0a 58 73 | 74 72 75 63 74 20 6e 6f |de;.X.Xs|truct no|
|00000e10| 64 65 20 7b 0a 58 09 6e | 6f 64 65 20 2a 63 68 69 |de {.X.n|ode *chi|
|00000e20| 6c 64 3b 09 2f 2a 20 73 | 75 62 64 6f 6d 61 69 6e |ld;./* s|ubdomain|
|00000e30| 20 6f 72 20 6d 65 6d 62 | 65 72 20 68 6f 73 74 20 | or memb|er host |
|00000e40| 2a 2f 0a 58 09 6e 6f 64 | 65 20 2a 70 61 72 65 6e |*/.X.nod|e *paren|
|00000e50| 74 3b 09 2f 2a 20 70 61 | 72 65 6e 74 20 64 6f 6d |t;./* pa|rent dom|
|00000e60| 61 69 6e 20 2a 2f 0a 58 | 09 6e 6f 64 65 20 2a 6e |ain */.X|.node *n|
|00000e70| 65 78 74 3b 09 2f 2a 20 | 73 69 62 6c 69 6e 67 20 |ext;./* |sibling |
|00000e80| 69 6e 20 64 6f 6d 61 69 | 6e 20 74 72 65 65 20 6f |in domai|n tree o|
|00000e90| 72 20 68 6f 73 74 20 6c | 69 73 74 20 2a 2f 0a 58 |r host l|ist */.X|
|00000ea0| 09 63 68 61 72 20 2a 6e | 61 6d 65 3b 09 2f 2a 20 |.char *n|ame;./* |
|00000eb0| 68 6f 73 74 20 6e 61 6d | 65 20 2a 2f 0a 58 09 6e |host nam|e */.X.n|
|00000ec0| 6f 64 65 20 2a 61 6c 69 | 61 73 3b 09 2f 2a 20 6c |ode *ali|as;./* l|
|00000ed0| 69 73 74 20 6f 66 20 61 | 6c 69 61 73 65 73 20 2a |ist of a|liases *|
|00000ee0| 2f 0a 58 09 6e 6f 64 65 | 20 2a 62 75 63 6b 65 74 |/.X.node| *bucket|
|00000ef0| 3b 0a 58 09 6e 6f 64 65 | 20 2a 67 61 74 65 77 61 |;.X.node| *gatewa|
|00000f00| 79 3b 0a 58 09 69 6e 74 | 20 20 66 6c 61 67 3b 0a |y;.X.int| flag;.|
|00000f10| 58 7d 3b 0a 58 0a 58 6e | 6f 64 65 20 2a 54 6f 70 |X};.X.Xn|ode *Top|
|00000f20| 3b 0a 58 69 6e 74 20 41 | 74 66 6c 61 67 2c 20 46 |;.Xint A|tflag, F|
|00000f30| 66 6c 61 67 2c 20 49 66 | 6c 61 67 2c 20 56 66 6c |flag, If|lag, Vfl|
|00000f40| 61 67 3b 0a 58 63 68 61 | 72 20 2a 44 6f 74 41 72 |ag;.Xcha|r *DotAr|
|00000f50| 70 61 20 3d 20 22 2e 41 | 52 50 41 22 3b 0a 58 63 |pa = ".A|RPA";.Xc|
|00000f60| 68 61 72 20 46 6e 61 6d | 65 5b 32 35 36 5d 2c 20 |har Fnam|e[256], |
|00000f70| 2a 46 73 74 61 72 74 3b | 0a 58 0a 58 6e 6f 64 65 |*Fstart;|.X.Xnode|
|00000f80| 20 2a 6e 65 77 6e 6f 64 | 65 28 29 2c 20 2a 66 69 | *newnod|e(), *fi|
|00000f90| 6e 64 28 29 3b 0a 58 63 | 68 61 72 20 2a 73 74 72 |nd();.Xc|har *str|
|00000fa0| 73 61 76 65 28 29 2c 20 | 2a 6c 6f 77 65 72 63 61 |save(), |*lowerca|
|00000fb0| 73 65 28 29 3b 0a 58 76 | 6f 69 64 20 63 72 63 69 |se();.Xv|oid crci|
|00000fc0| 6e 69 74 28 29 3b 0a 58 | 6c 6f 6e 67 20 66 6f 6c |nit();.X|long fol|
|00000fd0| 64 28 29 3b 0a 58 46 49 | 4c 45 20 2a 6d 6b 66 69 |d();.XFI|LE *mkfi|
|00000fe0| 6c 65 28 29 3b 0a 58 69 | 6e 74 20 69 6e 73 65 72 |le();.Xi|nt inser|
|00000ff0| 74 28 29 3b 0a 58 0a 58 | 23 64 65 66 69 6e 65 20 |t();.X.X|#define |
|00001000| 49 53 41 44 4f 4d 41 49 | 4e 28 6e 29 20 28 28 6e |ISADOMAI|N(n) ((n|
|00001010| 29 20 26 26 20 2a 28 28 | 6e 29 2d 3e 6e 61 6d 65 |) && *((|n)->name|
|00001020| 29 20 3d 3d 20 27 2e 27 | 29 0a 58 0a 58 2f 2a 20 |) == '.'|).X.X/* |
|00001030| 66 6f 72 20 6e 6f 64 65 | 2e 66 6c 61 67 20 2a 2f |for node|.flag */|
|00001040| 0a 58 23 64 65 66 69 6e | 65 20 43 4f 4c 4c 49 53 |.X#defin|e COLLIS|
|00001050| 49 4f 4e 20 31 0a 58 0a | 58 2f 2a 20 66 6f 72 20 |ION 1.X.|X/* for |
|00001060| 66 6f 72 6d 61 74 70 72 | 69 6e 74 28 29 20 2a 2f |formatpr|int() */|
|00001070| 0a 58 23 64 65 66 69 6e | 65 20 50 52 49 56 41 54 |.X#defin|e PRIVAT|
|00001080| 45 09 09 30 0a 58 23 64 | 65 66 69 6e 65 20 48 4f |E..0.X#d|efine HO|
|00001090| 53 54 53 09 09 31 0a 58 | 23 64 65 66 69 6e 65 20 |STS..1.X|#define |
|000010a0| 53 55 42 44 4f 4d 41 49 | 4e 53 09 32 0a 58 0a 58 |SUBDOMAI|NS.2.X.X|
|000010b0| 2f 2a 20 66 6f 72 20 75 | 73 61 67 65 28 29 20 2a |/* for u|sage() *|
|000010c0| 2f 0a 58 23 64 65 66 69 | 6e 65 20 55 53 41 47 45 |/.X#defi|ne USAGE|
|000010d0| 20 22 75 73 61 67 65 3a | 20 25 73 20 5b 2d 69 40 | "usage:| %s [-i@|
|000010e0| 5d 20 5b 2d 67 20 67 61 | 74 65 77 61 79 5d 20 5b |] [-g ga|teway] [|
|000010f0| 2d 70 20 70 72 69 76 61 | 74 65 66 69 6c 65 5d 20 |-p priva|tefile] |
|00001100| 5b 2d 66 20 7c 20 2d 64 | 20 64 69 72 65 63 74 6f |[-f | -d| directo|
|00001110| 72 79 5d 20 5b 66 69 6c | 65 20 2e 2e 2e 5d 5c 6e |ry] [fil|e ...]\n|
|00001120| 22 0a 58 0a 58 6d 61 69 | 6e 28 61 72 67 63 2c 20 |".X.Xmai|n(argc, |
|00001130| 61 72 67 76 29 0a 58 09 | 63 68 61 72 20 2a 2a 61 |argv).X.|char **a|
|00001140| 72 67 76 3b 0a 58 7b 09 | 69 6e 74 20 63 3b 0a 58 |rgv;.X{.|int c;.X|
|00001150| 09 63 68 61 72 20 2a 70 | 72 6f 67 6e 61 6d 65 3b |.char *p|rogname;|
|00001160| 0a 58 09 65 78 74 65 72 | 6e 20 63 68 61 72 20 2a |.X.exter|n char *|
|00001170| 6f 70 74 61 72 67 3b 0a | 58 09 65 78 74 65 72 6e |optarg;.|X.extern|
|00001180| 20 69 6e 74 20 6f 70 74 | 69 6e 64 3b 0a 58 0a 58 | int opt|ind;.X.X|
|00001190| 09 69 66 20 28 28 70 72 | 6f 67 6e 61 6d 65 20 3d |.if ((pr|ogname =|
|000011a0| 20 73 74 72 63 68 72 28 | 61 72 67 76 5b 30 5d 2c | strchr(|argv[0],|
|000011b0| 20 27 2f 27 29 29 20 21 | 3d 20 30 29 0a 58 09 09 | '/')) !|= 0).X..|
|000011c0| 70 72 6f 67 6e 61 6d 65 | 2b 2b 3b 0a 58 09 65 6c |progname|++;.X.el|
|000011d0| 73 65 0a 58 09 09 70 72 | 6f 67 6e 61 6d 65 20 3d |se.X..pr|ogname =|
|000011e0| 20 61 72 67 76 5b 30 5d | 3b 0a 58 09 63 72 63 69 | argv[0]|;.X.crci|
|000011f0| 6e 69 74 28 29 3b 0a 58 | 0a 58 09 54 6f 70 20 3d |nit();.X|.X.Top =|
|00001200| 20 6e 65 77 6e 6f 64 65 | 28 29 3b 09 2f 2a 20 6e | newnode|();./* n|
|00001210| 65 65 64 65 64 20 66 6f | 72 20 61 64 64 69 6e 67 |eeded fo|r adding|
|00001220| 20 67 61 74 65 77 61 79 | 73 20 2a 2f 0a 58 09 77 | gateway|s */.X.w|
|00001230| 68 69 6c 65 20 28 28 63 | 20 3d 20 67 65 74 6f 70 |hile ((c| = getop|
|00001240| 74 28 61 72 67 63 2c 20 | 61 72 67 76 2c 20 22 64 |t(argc, |argv, "d|
|00001250| 3a 66 67 3a 69 70 3a 76 | 40 22 29 29 20 21 3d 20 |:fg:ip:v|@")) != |
|00001260| 45 4f 46 29 0a 58 09 09 | 73 77 69 74 63 68 28 63 |EOF).X..|switch(c|
|00001270| 29 20 7b 0a 58 09 09 63 | 61 73 65 20 27 64 27 3a |) {.X..c|ase 'd':|
|00001280| 0a 58 09 09 09 73 74 72 | 63 70 79 28 46 6e 61 6d |.X...str|cpy(Fnam|
|00001290| 65 2c 20 6f 70 74 61 72 | 67 29 3b 0a 58 09 09 09 |e, optar|g);.X...|
|000012a0| 62 72 65 61 6b 3b 0a 58 | 09 09 63 61 73 65 20 27 |break;.X|..case '|
|000012b0| 66 27 3a 09 2f 2a 20 66 | 69 6c 74 65 72 20 6d 6f |f':./* f|ilter mo|
|000012c0| 64 65 20 2d 2d 20 77 72 | 69 74 65 20 6f 6e 20 73 |de -- wr|ite on s|
|000012d0| 74 64 6f 75 74 20 2a 2f | 0a 58 09 09 09 46 66 6c |tdout */|.X...Ffl|
|000012e0| 61 67 2b 2b 3b 0a 58 09 | 09 09 62 72 65 61 6b 3b |ag++;.X.|..break;|
|000012f0| 0a 58 09 09 63 61 73 65 | 20 27 67 27 3a 0a 58 09 |.X..case| 'g':.X.|
|00001300| 09 09 67 61 74 65 77 61 | 79 28 6f 70 74 61 72 67 |..gatewa|y(optarg|
|00001310| 29 3b 0a 58 09 09 09 62 | 72 65 61 6b 3b 0a 58 09 |);.X...b|reak;.X.|
|00001320| 09 63 61 73 65 20 27 69 | 27 3a 0a 58 09 09 09 49 |.case 'i|':.X...I|
|00001330| 66 6c 61 67 2b 2b 3b 0a | 58 09 09 09 62 72 65 61 |flag++;.|X...brea|
|00001340| 6b 3b 0a 58 09 09 63 61 | 73 65 20 27 70 27 3a 0a |k;.X..ca|se 'p':.|
|00001350| 58 09 09 09 72 65 61 64 | 70 72 69 76 61 74 65 73 |X...read|privates|
|00001360| 28 6f 70 74 61 72 67 29 | 3b 0a 58 09 09 09 62 72 |(optarg)|;.X...br|
|00001370| 65 61 6b 3b 0a 58 09 09 | 63 61 73 65 20 27 76 27 |eak;.X..|case 'v'|
|00001380| 3a 0a 58 09 09 09 56 66 | 6c 61 67 2b 2b 3b 0a 58 |:.X...Vf|lag++;.X|
|00001390| 09 09 09 62 72 65 61 6b | 3b 0a 58 09 09 63 61 73 |...break|;.X..cas|
|000013a0| 65 20 27 40 27 3a 0a 58 | 09 09 09 41 74 66 6c 61 |e '@':.X|...Atfla|
|000013b0| 67 2b 2b 3b 0a 58 09 09 | 09 62 72 65 61 6b 3b 0a |g++;.X..|.break;.|
|000013c0| 58 09 09 64 65 66 61 75 | 6c 74 3a 0a 58 09 09 09 |X..defau|lt:.X...|
|000013d0| 75 73 61 67 65 28 70 72 | 6f 67 6e 61 6d 65 29 3b |usage(pr|ogname);|
|000013e0| 0a 58 09 09 7d 0a 58 0a | 58 09 69 66 20 28 46 66 |.X..}.X.|X.if (Ff|
|000013f0| 6c 61 67 20 26 26 20 2a | 46 6e 61 6d 65 29 0a 58 |lag && *|Fname).X|
|00001400| 09 09 75 73 61 67 65 28 | 70 72 6f 67 6e 61 6d 65 |..usage(|progname|
|00001410| 29 3b 0a 58 09 69 66 20 | 28 49 66 6c 61 67 29 0a |);.X.if |(Iflag).|
|00001420| 58 09 09 28 76 6f 69 64 | 29 20 6c 6f 77 65 72 63 |X..(void|) lowerc|
|00001430| 61 73 65 28 44 6f 74 41 | 72 70 61 29 3b 0a 58 09 |ase(DotA|rpa);.X.|
|00001440| 69 66 20 28 54 6f 70 2d | 3e 67 61 74 65 77 61 79 |if (Top-|>gateway|
|00001450| 20 3d 3d 20 30 29 0a 58 | 09 09 66 70 72 69 6e 74 | == 0).X|..fprint|
|00001460| 66 28 73 74 64 65 72 72 | 2c 20 22 25 73 3a 20 77 |f(stderr|, "%s: w|
|00001470| 61 72 6e 69 6e 67 3a 20 | 6e 6f 20 67 61 74 65 77 |arning: |no gatew|
|00001480| 61 79 20 74 6f 20 74 6f | 70 20 6c 65 76 65 6c 20 |ay to to|p level |
|00001490| 64 6f 6d 61 69 6e 73 5c | 6e 22 2c 20 70 72 6f 67 |domains\|n", prog|
|000014a0| 6e 61 6d 65 29 3b 0a 58 | 0a 58 09 46 73 74 61 72 |name);.X|.X.Fstar|
|000014b0| 74 20 3d 20 46 6e 61 6d | 65 20 2b 20 73 74 72 6c |t = Fnam|e + strl|
|000014c0| 65 6e 28 46 6e 61 6d 65 | 29 3b 0a 58 09 69 66 20 |en(Fname|);.X.if |
|000014d0| 28 46 73 74 61 72 74 20 | 21 3d 20 46 6e 61 6d 65 |(Fstart |!= Fname|
|000014e0| 29 20 7b 0a 58 09 09 2a | 46 73 74 61 72 74 2b 2b |) {.X..*|Fstart++|
|000014f0| 20 3d 20 27 2f 27 3b 0a | 58 09 09 2a 46 73 74 61 | = '/';.|X..*Fsta|
|00001500| 72 74 20 3d 20 30 3b 0a | 58 09 7d 0a 58 09 2f 2a |rt = 0;.|X.}.X./*|
|00001510| 20 73 68 6f 75 6c 64 20 | 64 6f 20 74 68 65 20 6d | should |do the m|
|00001520| 6b 64 69 72 20 68 65 72 | 65 20 69 6e 73 74 65 61 |kdir her|e instea|
|00001530| 64 20 6f 66 20 74 68 65 | 20 73 68 65 6c 6c 20 73 |d of the| shell s|
|00001540| 63 72 69 70 74 20 2e 2e | 2e 2a 2f 0a 58 09 09 0a |cript ..|.*/.X...|
|00001550| 58 09 54 6f 70 2d 3e 6e | 61 6d 65 20 3d 20 22 69 |X.Top->n|ame = "i|
|00001560| 6e 74 65 72 6e 65 74 22 | 3b 0a 58 09 69 66 20 28 |nternet"|;.X.if (|
|00001570| 6f 70 74 69 6e 64 20 3d | 3d 20 61 72 67 63 29 0a |optind =|= argc).|
|00001580| 58 09 09 73 63 61 6e 28 | 29 3b 0a 58 09 65 6c 73 |X..scan(|);.X.els|
|00001590| 65 20 66 6f 72 20 28 20 | 3b 20 6f 70 74 69 6e 64 |e for ( |; optind|
|000015a0| 20 3c 20 61 72 67 63 3b | 20 6f 70 74 69 6e 64 2b | < argc;| optind+|
|000015b0| 2b 29 20 7b 0a 58 09 09 | 69 66 20 28 66 72 65 6f |+) {.X..|if (freo|
|000015c0| 70 65 6e 28 61 72 67 76 | 5b 6f 70 74 69 6e 64 5d |pen(argv|[optind]|
|000015d0| 2c 20 22 72 22 2c 20 73 | 74 64 69 6e 29 20 3d 3d |, "r", s|tdin) ==|
|000015e0| 20 30 29 20 7b 0a 58 09 | 09 09 70 65 72 72 6f 72 | 0) {.X.|..perror|
|000015f0| 28 61 72 67 76 5b 6f 70 | 74 69 6e 64 5d 29 3b 0a |(argv[op|tind]);.|
|00001600| 58 09 09 09 63 6f 6e 74 | 69 6e 75 65 3b 0a 58 09 |X...cont|inue;.X.|
|00001610| 09 7d 0a 58 09 09 73 63 | 61 6e 28 29 3b 0a 58 09 |.}.X..sc|an();.X.|
|00001620| 7d 0a 58 09 73 65 74 75 | 6e 69 71 66 6c 61 67 28 |}.X.setu|niqflag(|
|00001630| 54 6f 70 29 3b 09 2f 2a | 20 6c 6f 6f 6b 20 66 6f |Top);./*| look fo|
|00001640| 72 20 61 6e 64 20 6d 61 | 72 6b 20 63 6f 6c 6c 69 |r and ma|rk colli|
|00001650| 73 69 6f 6e 73 20 2a 2f | 0a 58 09 68 61 73 68 61 |sions */|.X.hasha|
|00001660| 6e 61 6c 79 7a 65 28 29 | 3b 09 09 2f 2a 20 63 68 |nalyze()|;../* ch|
|00001670| 65 63 6b 20 68 61 73 68 | 20 61 6c 67 6f 72 69 74 |eck hash| algorit|
|00001680| 68 6d 20 70 65 72 66 6f | 72 6d 61 6e 63 65 20 2a |hm perfo|rmance *|
|00001690| 2f 0a 58 09 6d 65 72 67 | 65 28 29 3b 09 09 2f 2a |/.X.merg|e();../*|
|000016a0| 20 6d 61 6b 65 20 75 6e | 69 71 75 65 20 64 6f 6d | make un|ique dom|
|000016b0| 61 69 6e 20 6e 61 6d 65 | 73 20 2a 2f 0a 58 09 64 |ain name|s */.X.d|
|000016c0| 75 6d 70 28 54 6f 70 29 | 3b 09 09 2f 2a 20 70 72 |ump(Top)|;../* pr|
|000016d0| 69 6e 74 20 2a 2f 0a 58 | 09 72 65 74 75 72 6e 20 |int */.X|.return |
|000016e0| 30 3b 0a 58 7d 0a 58 0a | 58 73 63 61 6e 28 29 0a |0;.X}.X.|Xscan().|
|000016f0| 58 7b 09 73 74 61 74 69 | 63 20 66 69 72 73 74 3b |X{.stati|c first;|
|00001700| 0a 58 09 63 68 61 72 20 | 62 75 66 30 5b 42 55 46 |.X.char |buf0[BUF|
|00001710| 53 49 5a 5d 2c 20 62 75 | 66 31 5b 42 55 46 53 49 |SIZ], bu|f1[BUFSI|
|00001720| 5a 5d 2c 20 62 75 66 32 | 5b 42 55 46 53 49 5a 5d |Z], buf2|[BUFSIZ]|
|00001730| 3b 0a 58 0a 58 09 69 66 | 20 28 66 69 72 73 74 2b |;.X.X.if| (first+|
|00001740| 2b 20 3d 3d 20 30 29 0a | 58 09 09 28 76 6f 69 64 |+ == 0).|X..(void|
|00001750| 29 20 72 65 5f 63 6f 6d | 70 28 22 5e 48 4f 53 54 |) re_com|p("^HOST|
|00001760| 2e 2a 53 4d 54 50 22 29 | 3b 0a 58 09 77 68 69 6c |.*SMTP")|;.X.whil|
|00001770| 65 20 28 67 65 74 73 28 | 62 75 66 30 29 20 21 3d |e (gets(|buf0) !=|
|00001780| 20 30 29 20 7b 0a 58 09 | 09 69 66 20 28 72 65 5f | 0) {.X.|.if (re_|
|00001790| 65 78 65 63 28 62 75 66 | 30 29 20 3d 3d 20 30 29 |exec(buf|0) == 0)|
|000017a0| 0a 58 09 09 09 63 6f 6e | 74 69 6e 75 65 3b 0a 58 |.X...con|tinue;.X|
|000017b0| 09 09 69 66 20 28 73 73 | 63 61 6e 66 28 62 75 66 |..if (ss|canf(buf|
|000017c0| 30 2c 20 22 48 4f 53 54 | 20 3a 20 25 5b 5e 3a 5d |0, "HOST| : %[^:]|
|000017d0| 20 3a 20 25 5b 5e 3a 20 | 5d 22 2c 20 62 75 66 31 | : %[^: |]", buf1|
|000017e0| 2c 20 62 75 66 32 29 20 | 21 3d 20 32 29 0a 58 09 |, buf2) |!= 2).X.|
|000017f0| 09 09 63 6f 6e 74 69 6e | 75 65 3b 0a 58 09 09 69 |..contin|ue;.X..i|
|00001800| 66 20 28 49 66 6c 61 67 | 29 0a 58 09 09 09 28 76 |f (Iflag|).X...(v|
|00001810| 6f 69 64 29 20 6c 6f 77 | 65 72 63 61 73 65 28 62 |oid) low|ercase(b|
|00001820| 75 66 32 29 3b 0a 58 09 | 09 69 66 20 28 69 6e 73 |uf2);.X.|.if (ins|
|00001830| 65 72 74 28 62 75 66 32 | 29 20 21 3d 20 30 29 0a |ert(buf2|) != 0).|
|00001840| 58 09 09 09 66 70 72 69 | 6e 74 66 28 73 74 64 65 |X...fpri|ntf(stde|
|00001850| 72 72 2c 20 22 69 6e 70 | 75 74 20 65 72 72 6f 72 |rr, "inp|ut error|
|00001860| 3a 20 25 73 5c 6e 22 2c | 20 62 75 66 30 29 3b 0a |: %s\n",| buf0);.|
|00001870| 58 09 7d 0a 58 7d 0a 58 | 2f 2a 0a 58 20 2a 20 66 |X.}.X}.X|/*.X * f|
|00001880| 6f 72 6d 61 74 20 6f 66 | 20 70 72 69 76 61 74 65 |ormat of| private|
|00001890| 20 66 69 6c 65 3a 0a 58 | 20 2a 09 6f 6e 65 20 70 | file:.X| *.one p|
|000018a0| 65 72 20 6c 69 6e 65 2c | 20 6f 70 74 69 6f 6e 61 |er line,| optiona|
|000018b0| 6c 6c 79 20 66 6f 6c 6c | 6f 77 65 64 20 62 79 20 |lly foll|owed by |
|000018c0| 77 68 69 74 65 20 73 70 | 61 63 65 20 61 6e 64 20 |white sp|ace and |
|000018d0| 63 6f 6d 6d 65 6e 74 73 | 0a 58 20 2a 09 6c 69 6e |comments|.X *.lin|
|000018e0| 65 20 73 74 61 72 74 69 | 6e 67 20 77 69 74 68 20 |e starti|ng with |
|000018f0| 23 20 69 73 20 63 6f 6d | 6d 65 6e 74 0a 58 20 2a |# is com|ment.X *|
|00001900| 2f 0a 58 72 65 61 64 70 | 72 69 76 61 74 65 73 28 |/.Xreadp|rivates(|
|00001910| 70 66 69 6c 65 29 0a 58 | 09 63 68 61 72 20 2a 70 |pfile).X|.char *p|
|00001920| 66 69 6c 65 3b 0a 58 7b | 09 46 49 4c 45 20 2a 66 |file;.X{|.FILE *f|
|00001930| 3b 0a 58 09 6e 6f 64 65 | 20 2a 6e 3b 0a 58 09 63 |;.X.node| *n;.X.c|
|00001940| 68 61 72 20 62 75 66 5b | 42 55 46 53 49 5a 5d 2c |har buf[|BUFSIZ],|
|00001950| 20 2a 62 70 74 72 3b 0a | 58 0a 58 09 69 66 20 28 | *bptr;.|X.X.if (|
|00001960| 28 66 20 3d 20 66 6f 70 | 65 6e 28 70 66 69 6c 65 |(f = fop|en(pfile|
|00001970| 2c 20 22 72 22 29 29 20 | 3d 3d 20 30 29 20 7b 0a |, "r")) |== 0) {.|
|00001980| 58 09 09 70 65 72 72 6f | 72 28 70 66 69 6c 65 29 |X..perro|r(pfile)|
|00001990| 3b 0a 58 09 09 72 65 74 | 75 72 6e 3b 0a 58 09 7d |;.X..ret|urn;.X.}|
|000019a0| 0a 58 09 77 68 69 6c 65 | 20 28 66 67 65 74 73 28 |.X.while| (fgets(|
|000019b0| 62 75 66 2c 20 42 55 46 | 53 49 5a 2c 20 66 29 20 |buf, BUF|SIZ, f) |
|000019c0| 21 3d 20 30 29 20 7b 0a | 58 09 09 69 66 20 28 2a |!= 0) {.|X..if (*|
|000019d0| 62 75 66 20 3d 3d 20 27 | 23 27 29 0a 58 09 09 09 |buf == '|#').X...|
|000019e0| 63 6f 6e 74 69 6e 75 65 | 3b 0a 58 09 09 69 66 20 |continue|;.X..if |
|000019f0| 28 28 62 70 74 72 20 3d | 20 73 74 72 63 68 72 28 |((bptr =| strchr(|
|00001a00| 62 75 66 2c 20 27 20 27 | 29 29 20 21 3d 20 30 29 |buf, ' '|)) != 0)|
|00001a10| 0a 58 09 09 09 2a 62 70 | 74 72 20 3d 20 30 3b 0a |.X...*bp|tr = 0;.|
|00001a20| 58 09 09 69 66 20 28 28 | 62 70 74 72 20 3d 20 73 |X..if ((|bptr = s|
|00001a30| 74 72 63 68 72 28 62 75 | 66 2c 20 27 5c 74 27 29 |trchr(bu|f, '\t')|
|00001a40| 29 20 21 3d 20 30 29 0a | 58 09 09 09 2a 62 70 74 |) != 0).|X...*bpt|
|00001a50| 72 20 3d 20 30 3b 0a 58 | 09 09 69 66 20 28 2a 62 |r = 0;.X|..if (*b|
|00001a60| 75 66 20 3d 3d 20 30 29 | 0a 58 09 09 09 63 6f 6e |uf == 0)|.X...con|
|00001a70| 74 69 6e 75 65 3b 0a 58 | 09 09 6e 20 3d 20 6e 65 |tinue;.X|..n = ne|
|00001a80| 77 6e 6f 64 65 28 29 3b | 0a 58 09 09 6e 2d 3e 6e |wnode();|.X..n->n|
|00001a90| 61 6d 65 20 3d 20 73 74 | 72 73 61 76 65 28 62 75 |ame = st|rsave(bu|
|00001aa0| 66 29 3b 0a 58 09 09 68 | 61 73 68 28 6e 29 3b 0a |f);.X..h|ash(n);.|
|00001ab0| 58 09 7d 0a 58 09 28 76 | 6f 69 64 29 20 66 63 6c |X.}.X.(v|oid) fcl|
|00001ac0| 6f 73 65 28 66 29 3b 0a | 58 7d 0a 58 75 73 61 67 |ose(f);.|X}.Xusag|
|00001ad0| 65 28 70 72 6f 67 6e 61 | 6d 65 29 0a 58 09 63 68 |e(progna|me).X.ch|
|00001ae0| 61 72 20 2a 70 72 6f 67 | 6e 61 6d 65 3b 0a 58 7b |ar *prog|name;.X{|
|00001af0| 0a 58 09 66 70 72 69 6e | 74 66 28 73 74 64 65 72 |.X.fprin|tf(stder|
|00001b00| 72 2c 20 55 53 41 47 45 | 2c 20 70 72 6f 67 6e 61 |r, USAGE|, progna|
|00001b10| 6d 65 29 3b 0a 58 09 65 | 78 69 74 28 31 29 3b 0a |me);.X.e|xit(1);.|
|00001b20| 58 7d 0a 58 0a 58 64 75 | 6d 70 67 61 74 65 77 61 |X}.X.Xdu|mpgatewa|
|00001b30| 79 73 28 6e 64 6f 6d 2c | 20 66 29 0a 58 09 6e 6f |ys(ndom,| f).X.no|
|00001b40| 64 65 20 2a 6e 64 6f 6d | 3b 0a 58 09 46 49 4c 45 |de *ndom|;.X.FILE|
|00001b50| 20 2a 66 3b 0a 58 7b 09 | 6e 6f 64 65 20 2a 6e 3b | *f;.X{.|node *n;|
|00001b60| 0a 58 0a 58 09 66 6f 72 | 20 28 6e 20 3d 20 6e 64 |.X.X.for| (n = nd|
|00001b70| 6f 6d 2d 3e 67 61 74 65 | 77 61 79 3b 20 6e 3b 20 |om->gate|way; n; |
|00001b80| 6e 20 3d 20 6e 2d 3e 6e | 65 78 74 29 20 7b 0a 58 |n = n->n|ext) {.X|
|00001b90| 09 09 66 70 72 69 6e 74 | 66 28 66 2c 20 22 25 73 |..fprint|f(f, "%s|
|00001ba0| 20 22 2c 20 6e 2d 3e 6e | 61 6d 65 29 3b 0a 58 09 | ", n->n|ame);.X.|
|00001bb0| 09 69 66 20 28 41 74 66 | 6c 61 67 29 0a 58 09 09 |.if (Atf|lag).X..|
|00001bc0| 09 70 75 74 63 28 27 40 | 27 2c 20 66 29 3b 0a 58 |.putc('@|', f);.X|
|00001bd0| 09 09 66 70 72 69 6e 74 | 66 28 66 2c 20 22 25 73 |..fprint|f(f, "%s|
|00001be0| 28 25 73 29 5c 74 23 20 | 67 61 74 65 77 61 79 5c |(%s)\t# |gateway\|
|00001bf0| 6e 22 2c 20 6e 64 6f 6d | 2d 3e 6e 61 6d 65 2c 0a |n", ndom|->name,.|
|00001c00| 58 09 09 09 09 6e 64 6f | 6d 20 3d 3d 20 54 6f 70 |X....ndo|m == Top|
|00001c10| 20 3f 20 22 44 45 44 49 | 43 41 54 45 44 22 20 3a | ? "DEDI|CATED" :|
|00001c20| 20 22 4c 4f 43 41 4c 22 | 29 3b 0a 58 09 7d 0a 58 | "LOCAL"|);.X.}.X|
|00001c30| 7d 0a 58 0a 58 67 61 74 | 65 77 61 79 28 62 75 66 |}.X.Xgat|eway(buf|
|00001c40| 29 0a 58 09 63 68 61 72 | 20 2a 62 75 66 3b 0a 58 |).X.char| *buf;.X|
|00001c50| 7b 09 6e 6f 64 65 20 2a | 6e 2c 20 2a 64 6f 6d 3b |{.node *|n, *dom;|
|00001c60| 0a 58 09 63 68 61 72 20 | 2a 64 6f 74 3b 0a 58 0a |.X.char |*dot;.X.|
|00001c70| 58 09 64 6f 74 20 3d 20 | 73 74 72 63 68 72 28 62 |X.dot = |strchr(b|
|00001c80| 75 66 2c 20 27 2e 27 29 | 3b 0a 58 09 69 66 20 28 |uf, '.')|;.X.if (|
|00001c90| 64 6f 74 29 20 7b 0a 58 | 09 09 64 6f 6d 20 3d 20 |dot) {.X|..dom = |
|00001ca0| 66 69 6e 64 28 64 6f 74 | 29 3b 0a 58 09 09 2a 64 |find(dot|);.X..*d|
|00001cb0| 6f 74 20 3d 20 30 3b 0a | 58 09 7d 20 65 6c 73 65 |ot = 0;.|X.} else|
|00001cc0| 0a 58 09 09 64 6f 6d 20 | 3d 20 54 6f 70 3b 0a 58 |.X..dom |= Top;.X|
|00001cd0| 0a 58 09 6e 20 3d 20 6e | 65 77 6e 6f 64 65 28 29 |.X.n = n|ewnode()|
|00001ce0| 3b 0a 58 09 6e 2d 3e 6e | 61 6d 65 20 3d 20 73 74 |;.X.n->n|ame = st|
|00001cf0| 72 73 61 76 65 28 62 75 | 66 29 3b 0a 58 09 6e 2d |rsave(bu|f);.X.n-|
|00001d00| 3e 6e 65 78 74 20 3d 20 | 64 6f 6d 2d 3e 67 61 74 |>next = |dom->gat|
|00001d10| 65 77 61 79 3b 0a 58 09 | 64 6f 6d 2d 3e 67 61 74 |eway;.X.|dom->gat|
|00001d20| 65 77 61 79 20 3d 20 6e | 3b 0a 58 7d 0a 58 09 0a |eway = n|;.X}.X..|
|00001d30| 58 69 6e 74 0a 58 69 6e | 73 65 72 74 28 62 75 66 |Xint.Xin|sert(buf|
|00001d40| 29 0a 58 09 63 68 61 72 | 20 2a 62 75 66 3b 0a 58 |).X.char| *buf;.X|
|00001d50| 7b 09 63 68 61 72 20 68 | 6f 73 74 5b 42 55 46 53 |{.char h|ost[BUFS|
|00001d60| 49 5a 5d 2c 20 2a 68 70 | 74 72 2c 20 2a 64 6f 74 |IZ], *hp|tr, *dot|
|00001d70| 3b 0a 58 09 6e 6f 64 65 | 20 2a 6e 3b 0a 58 0a 58 |;.X.node| *n;.X.X|
|00001d80| 09 66 6f 72 20 28 68 70 | 74 72 20 3d 20 68 6f 73 |.for (hp|tr = hos|
|00001d90| 74 3b 20 2a 68 70 74 72 | 20 3d 20 2a 62 75 66 2b |t; *hptr| = *buf+|
|00001da0| 2b 3b 20 68 70 74 72 2b | 2b 29 0a 58 09 09 69 66 |+; hptr+|+).X..if|
|00001db0| 20 28 2a 68 70 74 72 20 | 3d 3d 20 27 2c 27 29 0a | (*hptr |== ',').|
|00001dc0| 58 09 09 09 62 72 65 61 | 6b 3b 0a 58 0a 58 09 69 |X...brea|k;.X.X.i|
|00001dd0| 66 20 28 2a 68 70 74 72 | 20 3d 3d 20 27 2c 27 29 |f (*hptr| == ',')|
|00001de0| 0a 58 09 09 2a 68 70 74 | 72 20 3d 20 30 3b 0a 58 |.X..*hpt|r = 0;.X|
|00001df0| 09 65 6c 73 65 0a 58 09 | 09 62 75 66 20 3d 20 30 |.else.X.|.buf = 0|
|00001e00| 3b 09 2f 2a 20 6e 6f 20 | 61 6c 69 61 73 65 73 20 |;./* no |aliases |
|00001e10| 2a 2f 0a 58 0a 58 09 69 | 66 20 28 28 64 6f 74 20 |*/.X.X.i|f ((dot |
|00001e20| 3d 20 73 74 72 63 68 72 | 28 68 6f 73 74 2c 20 27 |= strchr|(host, '|
|00001e30| 2e 27 29 29 20 3d 3d 20 | 30 29 0a 58 09 09 72 65 |.')) == |0).X..re|
|00001e40| 74 75 72 6e 20 31 3b 09 | 2f 2a 20 63 61 6e 27 74 |turn 1;.|/* can't|
|00001e50| 20 68 61 70 70 65 6e 20 | 2a 2f 0a 58 09 0a 58 09 | happen |*/.X..X.|
|00001e60| 69 66 20 28 73 74 72 63 | 6d 70 28 64 6f 74 2c 20 |if (strc|mp(dot, |
|00001e70| 44 6f 74 41 72 70 61 29 | 20 3d 3d 20 30 29 0a 58 |DotArpa)| == 0).X|
|00001e80| 09 09 62 75 66 20 3d 20 | 30 3b 09 09 2f 2a 20 6e |..buf = |0;../* n|
|00001e90| 6f 20 61 6c 69 61 73 65 | 73 20 2a 2f 0a 58 0a 58 |o aliase|s */.X.X|
|00001ea0| 09 6e 20 3d 20 66 69 6e | 64 28 64 6f 74 29 3b 0a |.n = fin|d(dot);.|
|00001eb0| 58 09 2a 64 6f 74 20 3d | 20 30 3b 0a 58 0a 58 09 |X.*dot =| 0;.X.X.|
|00001ec0| 61 64 64 63 68 69 6c 64 | 28 6e 2c 20 68 6f 73 74 |addchild|(n, host|
|00001ed0| 2c 20 62 75 66 29 3b 0a | 58 09 72 65 74 75 72 6e |, buf);.|X.return|
|00001ee0| 20 30 3b 0a 58 7d 0a 58 | 0a 58 6e 6f 64 65 20 2a | 0;.X}.X|.Xnode *|
|00001ef0| 0a 58 66 69 6e 64 28 64 | 6f 6d 61 69 6e 29 0a 58 |.Xfind(d|omain).X|
|00001f00| 09 63 68 61 72 20 2a 64 | 6f 6d 61 69 6e 3b 0a 58 |.char *d|omain;.X|
|00001f10| 7b 09 63 68 61 72 20 2a | 64 6f 74 3b 0a 58 09 6e |{.char *|dot;.X.n|
|00001f20| 6f 64 65 20 2a 70 61 72 | 65 6e 74 2c 20 2a 63 68 |ode *par|ent, *ch|
|00001f30| 69 6c 64 3b 0a 58 0a 58 | 09 69 66 20 28 64 6f 6d |ild;.X.X|.if (dom|
|00001f40| 61 69 6e 20 3d 3d 20 30 | 29 0a 58 09 09 72 65 74 |ain == 0|).X..ret|
|00001f50| 75 72 6e 20 54 6f 70 3b | 0a 58 09 69 66 20 28 28 |urn Top;|.X.if ((|
|00001f60| 64 6f 74 20 3d 20 73 74 | 72 63 68 72 28 64 6f 6d |dot = st|rchr(dom|
|00001f70| 61 69 6e 2b 31 2c 20 27 | 2e 27 29 29 20 21 3d 20 |ain+1, '|.')) != |
|00001f80| 30 29 20 7b 0a 58 09 09 | 70 61 72 65 6e 74 20 3d |0) {.X..|parent =|
|00001f90| 20 66 69 6e 64 28 64 6f | 74 29 3b 0a 58 09 09 2a | find(do|t);.X..*|
|00001fa0| 64 6f 74 20 3d 20 30 3b | 0a 58 09 7d 20 65 6c 73 |dot = 0;|.X.} els|
|00001fb0| 65 0a 58 09 09 70 61 72 | 65 6e 74 20 3d 20 54 6f |e.X..par|ent = To|
|00001fc0| 70 3b 0a 58 0a 58 09 66 | 6f 72 20 28 63 68 69 6c |p;.X.X.f|or (chil|
|00001fd0| 64 20 3d 20 70 61 72 65 | 6e 74 2d 3e 63 68 69 6c |d = pare|nt->chil|
|00001fe0| 64 3b 20 63 68 69 6c 64 | 3b 20 63 68 69 6c 64 20 |d; child|; child |
|00001ff0| 3d 20 63 68 69 6c 64 2d | 3e 6e 65 78 74 29 0a 58 |= child-|>next).X|
|00002000| 09 09 69 66 20 28 73 74 | 72 63 6d 70 28 64 6f 6d |..if (st|rcmp(dom|
|00002010| 61 69 6e 2c 20 63 68 69 | 6c 64 2d 3e 6e 61 6d 65 |ain, chi|ld->name|
|00002020| 29 20 3d 3d 20 30 29 0a | 58 09 09 09 62 72 65 61 |) == 0).|X...brea|
|00002030| 6b 3b 0a 58 09 69 66 20 | 28 63 68 69 6c 64 20 3d |k;.X.if |(child =|
|00002040| 3d 20 30 29 20 7b 0a 58 | 09 09 63 68 69 6c 64 20 |= 0) {.X|..child |
|00002050| 3d 20 6e 65 77 6e 6f 64 | 65 28 29 3b 0a 58 09 09 |= newnod|e();.X..|
|00002060| 63 68 69 6c 64 2d 3e 6e | 65 78 74 20 3d 20 70 61 |child->n|ext = pa|
|00002070| 72 65 6e 74 2d 3e 63 68 | 69 6c 64 3b 0a 58 09 09 |rent->ch|ild;.X..|
|00002080| 70 61 72 65 6e 74 2d 3e | 63 68 69 6c 64 20 3d 20 |parent->|child = |
|00002090| 63 68 69 6c 64 3b 0a 58 | 09 09 63 68 69 6c 64 2d |child;.X|..child-|
|000020a0| 3e 70 61 72 65 6e 74 20 | 3d 20 70 61 72 65 6e 74 |>parent |= parent|
|000020b0| 3b 0a 58 09 09 63 68 69 | 6c 64 2d 3e 6e 61 6d 65 |;.X..chi|ld->name|
|000020c0| 20 3d 20 73 74 72 73 61 | 76 65 28 64 6f 6d 61 69 | = strsa|ve(domai|
|000020d0| 6e 29 3b 0a 58 09 7d 0a | 58 09 72 65 74 75 72 6e |n);.X.}.|X.return|
|000020e0| 20 63 68 69 6c 64 3b 0a | 58 7d 0a 58 0a 58 6e 6f | child;.|X}.X.Xno|
|000020f0| 64 65 20 2a 0a 58 6e 65 | 77 6e 6f 64 65 28 29 0a |de *.Xne|wnode().|
|00002100| 58 7b 0a 58 09 6e 6f 64 | 65 20 2a 6e 3b 0a 58 0a |X{.X.nod|e *n;.X.|
|00002110| 58 09 69 66 20 28 28 6e | 20 3d 20 28 6e 6f 64 65 |X.if ((n| = (node|
|00002120| 20 2a 29 20 63 61 6c 6c | 6f 63 28 31 2c 20 73 69 | *) call|oc(1, si|
|00002130| 7a 65 6f 66 28 6e 6f 64 | 65 29 29 29 20 3d 3d 20 |zeof(nod|e))) == |
|00002140| 30 29 0a 58 09 09 61 62 | 6f 72 74 28 29 3b 0a 58 |0).X..ab|ort();.X|
|00002150| 09 72 65 74 75 72 6e 20 | 6e 3b 0a 58 7d 0a 58 0a |.return |n;.X}.X.|
|00002160| 58 63 68 61 72 20 2a 0a | 58 73 74 72 73 61 76 65 |Xchar *.|Xstrsave|
|00002170| 28 62 75 66 29 0a 58 09 | 63 68 61 72 20 2a 62 75 |(buf).X.|char *bu|
|00002180| 66 3b 0a 58 7b 09 63 68 | 61 72 20 2a 6d 73 74 72 |f;.X{.ch|ar *mstr|
|00002190| 3b 0a 58 0a 58 09 69 66 | 20 28 28 6d 73 74 72 20 |;.X.X.if| ((mstr |
|000021a0| 3d 20 6d 61 6c 6c 6f 63 | 28 73 74 72 6c 65 6e 28 |= malloc|(strlen(|
|000021b0| 62 75 66 29 2b 31 29 29 | 20 3d 3d 20 30 29 0a 58 |buf)+1))| == 0).X|
|000021c0| 09 09 61 62 6f 72 74 28 | 29 3b 0a 58 09 73 74 72 |..abort(|);.X.str|
|000021d0| 63 70 79 28 6d 73 74 72 | 2c 20 62 75 66 29 3b 0a |cpy(mstr|, buf);.|
|000021e0| 58 09 72 65 74 75 72 6e | 20 6d 73 74 72 3b 0a 58 |X.return| mstr;.X|
|000021f0| 7d 0a 58 0a 58 61 64 64 | 63 68 69 6c 64 28 6e 2c |}.X.Xadd|child(n,|
|00002200| 20 68 6f 73 74 2c 20 61 | 6c 69 61 73 65 73 29 0a | host, a|liases).|
|00002210| 58 09 6e 6f 64 65 20 2a | 6e 3b 0a 58 09 63 68 61 |X.node *|n;.X.cha|
|00002220| 72 20 2a 68 6f 73 74 2c | 20 2a 61 6c 69 61 73 65 |r *host,| *aliase|
|00002230| 73 3b 0a 58 7b 09 6e 6f | 64 65 20 2a 63 68 69 6c |s;.X{.no|de *chil|
|00002240| 64 3b 0a 58 0a 58 09 2f | 2a 20 63 68 65 63 6b 20 |d;.X.X./|* check |
|00002250| 66 6f 72 20 64 75 70 73 | 3f 20 20 6e 61 68 21 20 |for dups|? nah! |
|00002260| 2a 2f 0a 58 09 63 68 69 | 6c 64 20 3d 20 6e 65 77 |*/.X.chi|ld = new|
|00002270| 6e 6f 64 65 28 29 3b 0a | 58 09 63 68 69 6c 64 2d |node();.|X.child-|
|00002280| 3e 6e 61 6d 65 20 3d 20 | 73 74 72 73 61 76 65 28 |>name = |strsave(|
|00002290| 68 6f 73 74 29 3b 0a 58 | 09 63 68 69 6c 64 2d 3e |host);.X|.child->|
|000022a0| 70 61 72 65 6e 74 20 3d | 20 6e 3b 0a 58 09 63 68 |parent =| n;.X.ch|
|000022b0| 69 6c 64 2d 3e 6e 65 78 | 74 20 3d 20 6e 2d 3e 63 |ild->nex|t = n->c|
|000022c0| 68 69 6c 64 3b 0a 58 09 | 6d 61 6b 65 61 6c 69 61 |hild;.X.|makealia|
|000022d0| 73 65 73 28 63 68 69 6c | 64 2c 20 61 6c 69 61 73 |ses(chil|d, alias|
|000022e0| 65 73 29 3b 0a 58 09 6e | 2d 3e 63 68 69 6c 64 20 |es);.X.n|->child |
|000022f0| 3d 20 63 68 69 6c 64 3b | 0a 58 7d 0a 58 0a 58 2f |= child;|.X}.X.X/|
|00002300| 2a 20 79 65 72 20 62 61 | 73 69 63 20 74 72 65 65 |* yer ba|sic tree|
|00002310| 20 77 61 6c 6b 20 74 6f | 20 6d 61 6b 65 20 6f 75 | walk to| make ou|
|00002320| 74 70 75 74 20 2a 2f 0a | 58 64 75 6d 70 28 6e 29 |tput */.|Xdump(n)|
|00002330| 0a 58 09 6e 6f 64 65 20 | 2a 6e 3b 0a 58 7b 09 6e |.X.node |*n;.X{.n|
|00002340| 6f 64 65 20 2a 63 68 69 | 6c 64 3b 0a 58 09 46 49 |ode *chi|ld;.X.FI|
|00002350| 4c 45 20 2a 66 3b 0a 58 | 09 69 6e 74 20 70 72 69 |LE *f;.X|.int pri|
|00002360| 76 61 74 65 73 3b 0a 58 | 0a 58 09 2f 2a 20 73 61 |vates;.X|.X./* sa|
|00002370| 6e 69 74 79 20 63 68 65 | 63 6b 20 2a 2f 0a 58 09 |nity che|ck */.X.|
|00002380| 69 66 20 28 6e 20 21 3d | 20 54 6f 70 20 26 26 20 |if (n !=| Top && |
|00002390| 21 20 49 53 41 44 4f 4d | 41 49 4e 28 6e 29 29 0a |! ISADOM|AIN(n)).|
|000023a0| 58 09 09 61 62 6f 72 74 | 28 29 3b 0a 58 0a 58 09 |X..abort|();.X.X.|
|000023b0| 66 20 3d 20 6d 6b 66 69 | 6c 65 28 6e 29 3b 09 09 |f = mkfi|le(n);..|
|000023c0| 2f 2a 20 70 72 65 70 61 | 72 65 20 74 68 65 20 6f |/* prepa|re the o|
|000023d0| 75 74 70 75 74 20 66 69 | 6c 65 20 2a 2f 0a 58 09 |utput fi|le */.X.|
|000023e0| 70 72 69 76 61 74 65 73 | 20 3d 20 64 6f 6d 70 72 |privates| = dompr|
|000023f0| 69 6e 74 28 6e 2c 20 66 | 29 3b 09 09 2f 2a 20 70 |int(n, f|);../* p|
|00002400| 72 69 6e 74 20 74 68 69 | 73 20 64 6f 6d 61 69 6e |rint thi|s domain|
|00002410| 20 2a 2f 0a 58 09 64 75 | 6d 70 67 61 74 65 77 61 | */.X.du|mpgatewa|
|00002420| 79 73 28 6e 2c 20 66 29 | 3b 09 2f 2a 20 70 72 69 |ys(n, f)|;./* pri|
|00002430| 6e 74 20 61 6e 79 20 67 | 61 74 65 77 61 79 73 20 |nt any g|ateways |
|00002440| 74 6f 20 74 68 69 73 20 | 64 6f 6d 61 69 6e 20 2a |to this |domain *|
|00002450| 2f 0a 58 09 69 66 20 28 | 70 72 69 76 61 74 65 73 |/.X.if (|privates|
|00002460| 20 7c 7c 20 6e 20 3d 3d | 20 54 6f 70 29 0a 58 09 | || n ==| Top).X.|
|00002470| 09 66 70 75 74 73 28 22 | 70 72 69 76 61 74 65 20 |.fputs("|private |
|00002480| 7b 7d 5c 6e 22 2c 20 66 | 29 3b 09 2f 2a 20 65 6e |{}\n", f|);./* en|
|00002490| 64 20 73 63 6f 70 65 20 | 6f 66 20 70 72 69 76 61 |d scope |of priva|
|000024a0| 74 65 73 20 2a 2f 0a 58 | 09 69 66 20 28 46 66 6c |tes */.X|.if (Ffl|
|000024b0| 61 67 29 0a 58 09 09 70 | 75 74 63 28 27 5c 6e 27 |ag).X..p|utc('\n'|
|000024c0| 2c 20 66 29 3b 0a 58 09 | 65 6c 73 65 0a 58 09 09 |, f);.X.|else.X..|
|000024d0| 28 76 6f 69 64 29 20 66 | 63 6c 6f 73 65 28 66 29 |(void) f|close(f)|
|000024e0| 3b 0a 58 09 66 6f 72 20 | 28 63 68 69 6c 64 20 3d |;.X.for |(child =|
|000024f0| 20 6e 2d 3e 63 68 69 6c | 64 3b 20 63 68 69 6c 64 | n->chil|d; child|
|00002500| 3b 20 63 68 69 6c 64 20 | 3d 20 63 68 69 6c 64 2d |; child |= child-|
|00002510| 3e 6e 65 78 74 29 0a 58 | 09 09 69 66 20 28 63 68 |>next).X|..if (ch|
|00002520| 69 6c 64 2d 3e 63 68 69 | 6c 64 29 0a 58 09 09 09 |ild->chi|ld).X...|
|00002530| 64 75 6d 70 28 63 68 69 | 6c 64 29 3b 0a 58 7d 0a |dump(chi|ld);.X}.|
|00002540| 58 0a 58 71 63 6d 70 28 | 61 2c 20 62 29 0a 58 09 |X.Xqcmp(|a, b).X.|
|00002550| 6e 6f 64 65 20 2a 2a 61 | 2c 20 2a 2a 62 3b 0a 58 |node **a|, **b;.X|
|00002560| 7b 0a 58 09 72 65 74 75 | 72 6e 20 73 74 72 63 6d |{.X.retu|rn strcm|
|00002570| 70 28 28 2a 61 29 2d 3e | 6e 61 6d 65 2c 20 28 2a |p((*a)->|name, (*|
|00002580| 62 29 2d 3e 6e 61 6d 65 | 29 3b 0a 58 7d 0a 58 0a |b)->name|);.X}.X.|
|00002590| 58 64 6f 6d 70 72 69 6e | 74 28 6e 2c 20 66 29 0a |Xdomprin|t(n, f).|
|000025a0| 58 09 6e 6f 64 65 20 2a | 6e 3b 0a 58 09 46 49 4c |X.node *|n;.X.FIL|
|000025b0| 45 20 2a 66 3b 0a 58 7b | 09 6e 6f 64 65 20 2a 74 |E *f;.X{|.node *t|
|000025c0| 61 62 6c 65 5b 38 31 39 | 31 5d 2c 20 2a 63 68 69 |able[819|1], *chi|
|000025d0| 6c 64 2c 20 2a 61 6c 69 | 61 73 3b 0a 58 09 63 68 |ld, *ali|as;.X.ch|
|000025e0| 61 72 20 2a 63 6f 73 74 | 20 3d 20 30 3b 0a 58 09 |ar *cost| = 0;.X.|
|000025f0| 69 6e 74 20 6e 65 6c 65 | 6d 2c 20 69 2c 20 70 72 |int nele|m, i, pr|
|00002600| 69 76 61 74 65 73 20 3d | 20 30 3b 0a 58 0a 58 09 |ivates =| 0;.X.X.|
|00002610| 2f 2a 0a 58 09 20 2a 20 | 64 75 6d 70 20 70 72 69 |/*.X. * |dump pri|
|00002620| 76 61 74 65 20 64 65 66 | 69 6e 69 74 69 6f 6e 73 |vate def|initions|
|00002630| 2e 20 20 0a 58 09 20 2a | 20 73 6f 72 74 20 68 6f |. .X. *| sort ho|
|00002640| 73 74 73 20 61 6e 64 20 | 61 6c 69 61 73 65 73 20 |sts and |aliases |
|00002650| 66 6f 72 20 70 72 65 74 | 74 79 20 6f 75 74 70 75 |for pret|ty outpu|
|00002660| 74 2e 0a 58 09 20 2a 2f | 0a 58 09 69 66 20 28 6e |t..X. */|.X.if (n|
|00002670| 20 21 3d 20 54 6f 70 29 | 20 7b 0a 58 09 09 69 20 | != Top)| {.X..i |
|00002680| 3d 20 30 3b 0a 58 09 09 | 66 6f 72 20 28 63 68 69 |= 0;.X..|for (chi|
|00002690| 6c 64 20 3d 20 6e 2d 3e | 63 68 69 6c 64 3b 20 63 |ld = n->|child; c|
|000026a0| 68 69 6c 64 3b 20 63 68 | 69 6c 64 20 3d 20 63 68 |hild; ch|ild = ch|
|000026b0| 69 6c 64 2d 3e 6e 65 78 | 74 29 20 7b 0a 58 09 09 |ild->nex|t) {.X..|
|000026c0| 09 74 61 62 6c 65 5b 69 | 2b 2b 5d 20 3d 20 63 68 |.table[i|++] = ch|
|000026d0| 69 6c 64 3b 0a 58 09 09 | 09 66 6f 72 20 28 61 6c |ild;.X..|.for (al|
|000026e0| 69 61 73 20 3d 20 63 68 | 69 6c 64 2d 3e 61 6c 69 |ias = ch|ild->ali|
|000026f0| 61 73 3b 20 61 6c 69 61 | 73 3b 20 61 6c 69 61 73 |as; alia|s; alias|
|00002700| 20 3d 20 61 6c 69 61 73 | 2d 3e 6e 65 78 74 29 0a | = alias|->next).|
|00002710| 58 09 09 09 09 74 61 62 | 6c 65 5b 69 2b 2b 5d 20 |X....tab|le[i++] |
|00002720| 3d 20 61 6c 69 61 73 3b | 0a 58 09 09 7d 0a 58 0a |= alias;|.X..}.X.|
|00002730| 58 09 09 71 73 6f 72 74 | 28 28 63 68 61 72 20 2a |X..qsort|((char *|
|00002740| 29 20 74 61 62 6c 65 2c | 20 69 2c 20 73 69 7a 65 |) table,| i, size|
|00002750| 6f 66 28 74 61 62 6c 65 | 5b 30 5d 29 2c 20 71 63 |of(table|[0]), qc|
|00002760| 6d 70 29 3b 0a 58 09 09 | 70 72 69 76 61 74 65 73 |mp);.X..|privates|
|00002770| 20 3d 20 66 6f 72 6d 61 | 74 70 72 69 6e 74 28 66 | = forma|tprint(f|
|00002780| 2c 20 74 61 62 6c 65 2c | 20 69 2c 20 50 52 49 56 |, table,| i, PRIV|
|00002790| 41 54 45 2c 20 22 70 72 | 69 76 61 74 65 22 2c 20 |ATE, "pr|ivate", |
|000027a0| 63 6f 73 74 29 3b 0a 58 | 09 7d 0a 58 0a 58 09 2f |cost);.X|.}.X.X./|
|000027b0| 2a 20 64 75 6d 70 20 64 | 6f 6d 61 69 6e 73 20 61 |* dump d|omains a|
|000027c0| 6e 64 20 61 6c 69 61 73 | 65 73 2c 20 73 6f 72 74 |nd alias|es, sort|
|000027d0| 65 64 20 66 6f 72 20 70 | 72 65 74 74 79 20 6f 75 |ed for p|retty ou|
|000027e0| 74 70 75 74 20 2a 2f 0a | 58 09 69 20 3d 20 30 3b |tput */.|X.i = 0;|
|000027f0| 0a 58 09 66 6f 72 20 28 | 63 68 69 6c 64 20 3d 20 |.X.for (|child = |
|00002800| 6e 2d 3e 63 68 69 6c 64 | 3b 20 63 68 69 6c 64 3b |n->child|; child;|
|00002810| 20 63 68 69 6c 64 20 3d | 20 63 68 69 6c 64 2d 3e | child =| child->|
|00002820| 6e 65 78 74 29 0a 58 09 | 09 74 61 62 6c 65 5b 69 |next).X.|.table[i|
|00002830| 2b 2b 5d 20 3d 20 63 68 | 69 6c 64 3b 0a 58 09 71 |++] = ch|ild;.X.q|
|00002840| 73 6f 72 74 28 28 63 68 | 61 72 20 2a 29 20 74 61 |sort((ch|ar *) ta|
|00002850| 62 6c 65 2c 20 69 2c 20 | 73 69 7a 65 6f 66 28 74 |ble, i, |sizeof(t|
|00002860| 61 62 6c 65 5b 30 5d 29 | 2c 20 71 63 6d 70 29 3b |able[0])|, qcmp);|
|00002870| 0a 58 0a 58 09 2f 2a 20 | 63 6f 73 74 20 69 73 20 |.X.X./* |cost is |
|00002880| 44 45 44 49 43 41 54 45 | 44 20 66 6f 72 20 68 6f |DEDICATE|D for ho|
|00002890| 73 74 73 20 69 6e 20 74 | 6f 70 2d 6c 65 76 65 6c |sts in t|op-level|
|000028a0| 20 64 6f 6d 61 69 6e 73 | 2c 20 4c 4f 43 41 4c 20 | domains|, LOCAL |
|000028b0| 6f 2e 77 2e 20 2a 2f 0a | 58 09 69 66 20 28 6e 2d |o.w. */.|X.if (n-|
|000028c0| 3e 70 61 72 65 6e 74 20 | 3d 3d 20 54 6f 70 20 26 |>parent |== Top &|
|000028d0| 26 20 73 74 72 63 68 72 | 28 6e 2d 3e 6e 61 6d 65 |& strchr|(n->name|
|000028e0| 20 2b 20 31 2c 20 27 2e | 27 29 20 3d 3d 20 30 29 | + 1, '.|') == 0)|
|000028f0| 0a 58 09 09 63 6f 73 74 | 20 3d 20 22 44 45 44 49 |.X..cost| = "DEDI|
|00002900| 43 41 54 45 44 22 3b 0a | 58 09 65 6c 73 65 0a 58 |CATED";.|X.else.X|
|00002910| 09 09 63 6f 73 74 20 3d | 20 22 4c 4f 43 41 4c 22 |..cost =| "LOCAL"|
|00002920| 3b 0a 58 0a 58 09 28 76 | 6f 69 64 29 20 66 6f 72 |;.X.X.(v|oid) for|
|00002930| 6d 61 74 70 72 69 6e 74 | 28 66 2c 20 74 61 62 6c |matprint|(f, tabl|
|00002940| 65 2c 20 69 2c 20 48 4f | 53 54 53 2c 20 6e 2d 3e |e, i, HO|STS, n->|
|00002950| 6e 61 6d 65 2c 20 63 6f | 73 74 29 3b 0a 58 09 28 |name, co|st);.X.(|
|00002960| 76 6f 69 64 29 20 66 6f | 72 6d 61 74 70 72 69 6e |void) fo|rmatprin|
|00002970| 74 28 66 2c 20 74 61 62 | 6c 65 2c 20 69 2c 20 53 |t(f, tab|le, i, S|
|00002980| 55 42 44 4f 4d 41 49 4e | 53 2c 20 6e 2d 3e 6e 61 |UBDOMAIN|S, n->na|
|00002990| 6d 65 2c 20 22 30 22 29 | 3b 0a 58 0a 58 09 2f 2a |me, "0")|;.X.X./*|
|000029a0| 20 64 75 6d 70 20 61 6c | 69 61 73 65 73 20 2a 2f | dump al|iases */|
|000029b0| 0a 58 09 6e 65 6c 65 6d | 20 3d 20 69 3b 0a 58 09 |.X.nelem| = i;.X.|
|000029c0| 66 6f 72 20 28 69 20 3d | 20 30 3b 20 69 20 3c 20 |for (i =| 0; i < |
|000029d0| 6e 65 6c 65 6d 3b 20 69 | 2b 2b 29 20 7b 0a 58 09 |nelem; i|++) {.X.|
|000029e0| 09 69 66 20 28 28 61 6c | 69 61 73 20 3d 20 74 61 |.if ((al|ias = ta|
|000029f0| 62 6c 65 5b 69 5d 2d 3e | 61 6c 69 61 73 29 20 3d |ble[i]->|alias) =|
|00002a00| 3d 20 30 29 0a 58 09 09 | 09 63 6f 6e 74 69 6e 75 |= 0).X..|.continu|
|00002a10| 65 3b 0a 58 09 09 66 70 | 72 69 6e 74 66 28 66 2c |e;.X..fp|rintf(f,|
|00002a20| 20 22 25 73 20 3d 20 25 | 73 22 2c 20 74 61 62 6c | "%s = %|s", tabl|
|00002a30| 65 5b 69 5d 2d 3e 6e 61 | 6d 65 2c 20 61 6c 69 61 |e[i]->na|me, alia|
|00002a40| 73 2d 3e 6e 61 6d 65 29 | 3b 0a 58 09 09 66 6f 72 |s->name)|;.X..for|
|00002a50| 20 28 61 6c 69 61 73 20 | 3d 20 61 6c 69 61 73 2d | (alias |= alias-|
|00002a60| 3e 6e 65 78 74 3b 20 61 | 6c 69 61 73 3b 20 61 6c |>next; a|lias; al|
|00002a70| 69 61 73 20 3d 20 61 6c | 69 61 73 2d 3e 6e 65 78 |ias = al|ias->nex|
|00002a80| 74 29 0a 58 09 09 09 66 | 70 72 69 6e 74 66 28 66 |t).X...f|printf(f|
|00002a90| 2c 20 22 2c 20 25 73 22 | 2c 20 61 6c 69 61 73 2d |, ", %s"|, alias-|
|00002aa0| 3e 6e 61 6d 65 29 3b 0a | 58 09 09 70 75 74 63 28 |>name);.|X..putc(|
|00002ab0| 27 5c 6e 27 2c 20 66 29 | 3b 0a 58 09 7d 0a 58 09 |'\n', f)|;.X.}.X.|
|00002ac0| 72 65 74 75 72 6e 20 70 | 72 69 76 61 74 65 73 3b |return p|rivates;|
|00002ad0| 0a 58 7d 0a 58 0a 58 69 | 6e 74 0a 58 66 6f 72 6d |.X}.X.Xi|nt.Xform|
|00002ae0| 61 74 70 72 69 6e 74 28 | 66 2c 20 74 61 62 6c 65 |atprint(|f, table|
|00002af0| 2c 20 6e 65 6c 65 6d 2c | 20 74 79 70 65 2c 20 6c |, nelem,| type, l|
|00002b00| 68 73 2c 20 63 6f 73 74 | 29 0a 58 09 46 49 4c 45 |hs, cost|).X.FILE|
|00002b10| 20 2a 66 3b 0a 58 09 6e | 6f 64 65 20 2a 2a 74 61 | *f;.X.n|ode **ta|
|00002b20| 62 6c 65 3b 0a 58 09 63 | 68 61 72 20 2a 6c 68 73 |ble;.X.c|har *lhs|
|00002b30| 2c 20 2a 63 6f 73 74 3b | 0a 58 7b 09 69 6e 74 20 |, *cost;|.X{.int |
|00002b40| 69 2c 20 64 69 64 70 72 | 69 6e 74 3b 0a 58 09 63 |i, didpr|int;.X.c|
|00002b50| 68 61 72 20 62 75 66 5b | 31 32 38 5d 2c 20 2a 62 |har buf[|128], *b|
|00002b60| 70 74 72 3b 0a 58 0a 58 | 09 73 70 72 69 6e 74 66 |ptr;.X.X|.sprintf|
|00002b70| 28 62 75 66 2c 20 22 25 | 73 25 73 7b 22 20 2f 2a |(buf, "%|s%s{" /*|
|00002b80| 7d 2a 2f 2c 20 6c 68 73 | 2c 20 74 79 70 65 20 3d |}*/, lhs|, type =|
|00002b90| 3d 20 50 52 49 56 41 54 | 45 20 3f 20 22 20 22 20 |= PRIVAT|E ? " " |
|00002ba0| 3a 20 22 20 3d 20 22 29 | 3b 0a 58 09 62 70 74 72 |: " = ")|;.X.bptr|
|00002bb0| 20 3d 20 62 75 66 20 2b | 20 73 74 72 6c 65 6e 28 | = buf +| strlen(|
|00002bc0| 62 75 66 29 3b 0a 58 0a | 58 09 64 69 64 70 72 69 |buf);.X.|X.didpri|
|00002bd0| 6e 74 20 3d 20 30 3b 0a | 58 09 66 6f 72 20 28 69 |nt = 0;.|X.for (i|
|00002be0| 20 3d 20 30 3b 20 69 20 | 3c 20 6e 65 6c 65 6d 3b | = 0; i |< nelem;|
|00002bf0| 20 69 2b 2b 29 20 7b 0a | 58 09 09 69 66 20 28 74 | i++) {.|X..if (t|
|00002c00| 79 70 65 20 3d 3d 20 50 | 52 49 56 41 54 45 20 26 |ype == P|RIVATE &|
|00002c10| 26 20 21 20 28 74 61 62 | 6c 65 5b 69 5d 2d 3e 66 |& ! (tab|le[i]->f|
|00002c20| 6c 61 67 20 26 20 43 4f | 4c 4c 49 53 49 4f 4e 29 |lag & CO|LLISION)|
|00002c30| 29 0a 58 09 09 09 63 6f | 6e 74 69 6e 75 65 3b 0a |).X...co|ntinue;.|
|00002c40| 58 09 09 65 6c 73 65 20 | 69 66 20 28 74 79 70 65 |X..else |if (type|
|00002c50| 20 3d 3d 20 48 4f 53 54 | 53 20 26 26 20 49 53 41 | == HOST|S && ISA|
|00002c60| 44 4f 4d 41 49 4e 28 74 | 61 62 6c 65 5b 69 5d 29 |DOMAIN(t|able[i])|
|00002c70| 20 29 0a 58 09 09 09 63 | 6f 6e 74 69 6e 75 65 3b | ).X...c|ontinue;|
|00002c80| 0a 58 09 09 65 6c 73 65 | 20 69 66 20 28 74 79 70 |.X..else| if (typ|
|00002c90| 65 20 3d 3d 20 53 55 42 | 44 4f 4d 41 49 4e 53 20 |e == SUB|DOMAINS |
|00002ca0| 26 26 20 21 20 49 53 41 | 44 4f 4d 41 49 4e 28 74 |&& ! ISA|DOMAIN(t|
|00002cb0| 61 62 6c 65 5b 69 5d 29 | 20 29 0a 58 09 09 09 63 |able[i])| ).X...c|
|00002cc0| 6f 6e 74 69 6e 75 65 3b | 0a 58 0a 58 09 09 69 66 |ontinue;|.X.X..if|
|00002cd0| 20 28 28 62 70 74 72 20 | 2d 20 62 75 66 29 20 2b | ((bptr |- buf) +|
|00002ce0| 20 73 74 72 6c 65 6e 28 | 74 61 62 6c 65 5b 69 5d | strlen(|table[i]|
|00002cf0| 2d 3e 6e 61 6d 65 29 20 | 3e 20 36 39 29 20 7b 0a |->name) |> 69) {.|
|00002d00| 58 09 09 09 2a 62 70 74 | 72 20 3d 20 30 3b 0a 58 |X...*bpt|r = 0;.X|
|00002d10| 09 09 09 66 70 72 69 6e | 74 66 28 66 2c 20 22 25 |...fprin|tf(f, "%|
|00002d20| 73 5c 6e 20 22 2c 20 62 | 75 66 29 3b 09 2f 2a 20 |s\n ", b|uf);./* |
|00002d30| 63 6f 6e 74 69 6e 75 61 | 74 69 6f 6e 20 2a 2f 0a |continua|tion */.|
|00002d40| 58 09 09 09 62 70 74 72 | 20 3d 20 62 75 66 3b 0a |X...bptr| = buf;.|
|00002d50| 58 09 09 7d 0a 58 09 09 | 73 70 72 69 6e 74 66 28 |X..}.X..|sprintf(|
|00002d60| 62 70 74 72 2c 20 22 25 | 73 2c 20 22 2c 20 74 61 |bptr, "%|s, ", ta|
|00002d70| 62 6c 65 5b 69 5d 2d 3e | 6e 61 6d 65 29 3b 0a 58 |ble[i]->|name);.X|
|00002d80| 09 09 62 70 74 72 20 2b | 3d 20 73 74 72 6c 65 6e |..bptr +|= strlen|
|00002d90| 28 62 70 74 72 29 3b 0a | 58 09 09 64 69 64 70 72 |(bptr);.|X..didpr|
|00002da0| 69 6e 74 2b 2b 3b 0a 58 | 09 7d 0a 58 09 2a 62 70 |int++;.X|.}.X.*bp|
|00002db0| 74 72 20 3d 20 30 3b 0a | 58 0a 58 09 69 66 20 28 |tr = 0;.|X.X.if (|
|00002dc0| 64 69 64 70 72 69 6e 74 | 29 20 7b 0a 58 09 09 66 |didprint|) {.X..f|
|00002dd0| 70 72 69 6e 74 66 28 66 | 2c 20 2f 2a 7b 2a 2f 20 |printf(f|, /*{*/ |
|00002de0| 22 25 73 7d 22 2c 20 62 | 75 66 29 3b 0a 58 09 09 |"%s}", b|uf);.X..|
|00002df0| 69 66 20 28 74 79 70 65 | 20 21 3d 20 50 52 49 56 |if (type| != PRIV|
|00002e00| 41 54 45 29 0a 58 09 09 | 09 66 70 72 69 6e 74 66 |ATE).X..|.fprintf|
|00002e10| 28 66 2c 20 22 28 25 73 | 29 22 2c 20 63 6f 73 74 |(f, "(%s|)", cost|
|00002e20| 29 3b 0a 58 09 09 70 75 | 74 63 28 27 5c 6e 27 2c |);.X..pu|tc('\n',|
|00002e30| 20 66 29 3b 0a 58 09 7d | 0a 58 09 72 65 74 75 72 | f);.X.}|.X.retur|
|00002e40| 6e 20 64 69 64 70 72 69 | 6e 74 3b 0a 58 7d 0a 58 |n didpri|nt;.X}.X|
|00002e50| 0a 58 46 49 4c 45 20 2a | 09 09 09 09 0a 58 6d 6b |.XFILE *|.....Xmk|
|00002e60| 66 69 6c 65 28 6e 29 0a | 58 09 6e 6f 64 65 20 2a |file(n).|X.node *|
|00002e70| 6e 3b 0a 58 7b 09 6e 6f | 64 65 20 2a 70 61 72 65 |n;.X{.no|de *pare|
|00002e80| 6e 74 3b 0a 58 09 63 68 | 61 72 20 2a 62 70 74 72 |nt;.X.ch|ar *bptr|
|00002e90| 3b 0a 58 09 46 49 4c 45 | 20 2a 66 3b 0a 58 0a 58 |;.X.FILE| *f;.X.X|
|00002ea0| 09 2f 2a 20 62 75 69 6c | 64 20 75 70 20 74 68 65 |./* buil|d up the|
|00002eb0| 20 64 6f 6d 61 69 6e 20 | 6e 61 6d 65 20 69 6e 20 | domain |name in |
|00002ec0| 46 6e 61 6d 65 5b 5d 20 | 2a 2f 0a 58 09 62 70 74 |Fname[] |*/.X.bpt|
|00002ed0| 72 20 3d 20 46 73 74 61 | 72 74 3b 0a 58 09 69 66 |r = Fsta|rt;.X.if|
|00002ee0| 20 28 6e 20 3d 3d 20 54 | 6f 70 29 0a 58 09 09 73 | (n == T|op).X..s|
|00002ef0| 74 72 63 70 79 28 62 70 | 74 72 2c 20 6e 2d 3e 6e |trcpy(bp|tr, n->n|
|00002f00| 61 6d 65 29 3b 0a 58 09 | 65 6c 73 65 20 7b 0a 58 |ame);.X.|else {.X|
|00002f10| 09 09 73 74 72 63 70 79 | 28 62 70 74 72 2c 20 6e |..strcpy|(bptr, n|
|00002f20| 2d 3e 6e 61 6d 65 20 2b | 20 31 29 3b 09 2f 2a 20 |->name +| 1);./* |
|00002f30| 73 6b 69 70 20 6c 65 61 | 64 69 6e 67 20 64 6f 74 |skip lea|ding dot|
|00002f40| 20 2a 2f 0a 58 09 09 62 | 70 74 72 20 3d 20 62 70 | */.X..b|ptr = bp|
|00002f50| 74 72 20 2b 20 73 74 72 | 6c 65 6e 28 62 70 74 72 |tr + str|len(bptr|
|00002f60| 29 3b 0a 58 09 09 70 61 | 72 65 6e 74 20 3d 20 6e |);.X..pa|rent = n|
|00002f70| 2d 3e 70 61 72 65 6e 74 | 3b 0a 58 09 09 77 68 69 |->parent|;.X..whi|
|00002f80| 6c 65 20 28 49 53 41 44 | 4f 4d 41 49 4e 28 70 61 |le (ISAD|OMAIN(pa|
|00002f90| 72 65 6e 74 29 29 20 7b | 0a 58 09 09 09 73 74 72 |rent)) {|.X...str|
|00002fa0| 63 70 79 28 62 70 74 72 | 2c 20 70 61 72 65 6e 74 |cpy(bptr|, parent|
|00002fb0| 2d 3e 6e 61 6d 65 29 3b | 0a 58 09 09 09 62 70 74 |->name);|.X...bpt|
|00002fc0| 72 20 2b 3d 20 73 74 72 | 6c 65 6e 28 62 70 74 72 |r += str|len(bptr|
|00002fd0| 29 3b 0a 58 09 09 09 70 | 61 72 65 6e 74 20 3d 20 |);.X...p|arent = |
|00002fe0| 70 61 72 65 6e 74 2d 3e | 70 61 72 65 6e 74 3b 0a |parent->|parent;.|
|00002ff0| 58 09 09 7d 0a 58 09 09 | 2a 62 70 74 72 20 3d 20 |X..}.X..|*bptr = |
|00003000| 30 3b 0a 58 09 7d 0a 58 | 0a 58 09 2f 2a 20 67 65 |0;.X.}.X|.X./* ge|
|00003010| 74 20 61 20 73 74 72 65 | 61 6d 20 64 65 73 63 72 |t a stre|am descr|
|00003020| 69 70 74 6f 72 20 2a 2f | 0a 58 09 69 66 20 28 46 |iptor */|.X.if (F|
|00003030| 66 6c 61 67 29 20 7b 0a | 58 09 09 70 72 69 6e 74 |flag) {.|X..print|
|00003040| 66 28 22 23 20 25 73 5c | 6e 22 2c 20 46 73 74 61 |f("# %s\|n", Fsta|
|00003050| 72 74 29 3b 0a 58 09 09 | 66 20 3d 20 73 74 64 6f |rt);.X..|f = stdo|
|00003060| 75 74 3b 0a 58 09 7d 20 | 65 6c 73 65 20 7b 0a 58 |ut;.X.} |else {.X|
|00003070| 23 69 66 6e 64 65 66 20 | 42 53 44 0a 58 09 09 46 |#ifndef |BSD.X..F|
|00003080| 73 74 61 72 74 5b 31 34 | 5d 20 3d 20 30 3b 0a 58 |start[14|] = 0;.X|
|00003090| 23 65 6e 64 69 66 0a 58 | 09 09 69 66 20 28 28 66 |#endif.X|..if ((f|
|000030a0| 20 3d 20 66 6f 70 65 6e | 28 46 6e 61 6d 65 2c 20 | = fopen|(Fname, |
|000030b0| 22 77 22 29 29 20 3d 3d | 20 30 29 20 7b 0a 58 09 |"w")) ==| 0) {.X.|
|000030c0| 09 09 70 65 72 72 6f 72 | 28 46 6e 61 6d 65 29 3b |..perror|(Fname);|
|000030d0| 0a 58 09 09 09 65 78 69 | 74 28 31 29 3b 0a 58 09 |.X...exi|t(1);.X.|
|000030e0| 09 7d 0a 58 09 7d 0a 58 | 09 69 66 20 28 6e 20 3d |.}.X.}.X|.if (n =|
|000030f0| 3d 20 54 6f 70 29 0a 58 | 09 09 66 70 72 69 6e 74 |= Top).X|..fprint|
|00003100| 66 28 66 2c 20 22 70 72 | 69 76 61 74 65 20 7b 25 |f(f, "pr|ivate {%|
|00003110| 73 7d 5c 6e 64 65 61 64 | 20 7b 25 73 7d 5c 6e 22 |s}\ndead| {%s}\n"|
|00003120| 2c 20 54 6f 70 2d 3e 6e | 61 6d 65 2c 20 54 6f 70 |, Top->n|ame, Top|
|00003130| 2d 3e 6e 61 6d 65 29 3b | 0a 58 09 72 65 74 75 72 |->name);|.X.retur|
|00003140| 6e 20 66 3b 0a 58 7d 0a | 58 0a 58 2f 2a 20 6d 61 |n f;.X}.|X.X/* ma|
|00003150| 70 20 74 6f 20 6c 6f 77 | 65 72 20 63 61 73 65 20 |p to low|er case |
|00003160| 69 6e 20 70 6c 61 63 65 | 2e 20 20 72 65 74 75 72 |in place|. retur|
|00003170| 6e 20 70 61 72 61 6d 65 | 74 65 72 20 66 6f 72 20 |n parame|ter for |
|00003180| 63 6f 6e 76 65 6e 69 65 | 6e 63 65 20 2a 2f 0a 58 |convenie|nce */.X|
|00003190| 63 68 61 72 20 2a 0a 58 | 6c 6f 77 65 72 63 61 73 |char *.X|lowercas|
|000031a0| 65 28 62 75 66 29 0a 58 | 09 63 68 61 72 20 2a 62 |e(buf).X|.char *b|
|000031b0| 75 66 3b 0a 58 7b 09 63 | 68 61 72 20 2a 73 74 72 |uf;.X{.c|har *str|
|000031c0| 3b 0a 58 0a 58 09 66 6f | 72 20 28 73 74 72 20 3d |;.X.X.fo|r (str =|
|000031d0| 20 62 75 66 20 3b 20 2a | 73 74 72 3b 20 73 74 72 | buf ; *|str; str|
|000031e0| 2b 2b 29 0a 58 09 09 69 | 66 20 28 69 73 75 70 70 |++).X..i|f (isupp|
|000031f0| 65 72 28 2a 73 74 72 29 | 29 0a 58 09 09 09 2a 73 |er(*str)|).X...*s|
|00003200| 74 72 20 2d 3d 20 27 41 | 27 20 2d 20 27 61 27 3b |tr -= 'A|' - 'a';|
|00003210| 0a 58 09 72 65 74 75 72 | 6e 20 62 75 66 3b 0a 58 |.X.retur|n buf;.X|
|00003220| 7d 0a 58 0a 58 2f 2a 20 | 67 65 74 20 74 68 65 20 |}.X.X/* |get the |
|00003230| 69 6e 74 65 72 65 73 74 | 69 6e 67 20 61 6c 69 61 |interest|ing alia|
|00003240| 73 65 73 2c 20 61 74 74 | 61 63 68 20 74 6f 20 6e |ses, att|ach to n|
|00003250| 2d 3e 61 6c 69 61 73 20 | 2a 2f 0a 58 6d 61 6b 65 |->alias |*/.Xmake|
|00003260| 61 6c 69 61 73 65 73 28 | 6e 2c 20 6c 69 6e 65 29 |aliases(|n, line)|
|00003270| 0a 58 09 6e 6f 64 65 20 | 2a 6e 3b 0a 58 09 63 68 |.X.node |*n;.X.ch|
|00003280| 61 72 20 2a 6c 69 6e 65 | 3b 0a 58 7b 09 63 68 61 |ar *line|;.X{.cha|
|00003290| 72 20 2a 6e 65 78 74 2c | 20 2a 64 6f 74 3b 0a 58 |r *next,| *dot;.X|
|000032a0| 09 6e 6f 64 65 20 2a 61 | 3b 0a 58 0a 58 09 69 66 |.node *a|;.X.X.if|
|000032b0| 20 28 6c 69 6e 65 20 3d | 3d 20 30 20 7c 7c 20 2a | (line =|= 0 || *|
|000032c0| 6c 69 6e 65 20 3d 3d 20 | 30 29 0a 58 09 09 72 65 |line == |0).X..re|
|000032d0| 74 75 72 6e 3b 0a 58 0a | 58 09 66 6f 72 20 28 20 |turn;.X.|X.for ( |
|000032e0| 3b 20 6c 69 6e 65 3b 20 | 6c 69 6e 65 20 3d 20 6e |; line; |line = n|
|000032f0| 65 78 74 29 20 7b 0a 58 | 09 09 6e 65 78 74 20 3d |ext) {.X|..next =|
|00003300| 20 73 74 72 63 68 72 28 | 6c 69 6e 65 2c 20 27 2c | strchr(|line, ',|
|00003310| 27 29 3b 0a 58 09 09 69 | 66 20 28 6e 65 78 74 29 |');.X..i|f (next)|
|00003320| 0a 58 09 09 09 2a 6e 65 | 78 74 2b 2b 20 3d 20 30 |.X...*ne|xt++ = 0|
|00003330| 3b 0a 58 09 09 69 66 20 | 28 28 64 6f 74 20 3d 20 |;.X..if |((dot = |
|00003340| 73 74 72 63 68 72 28 6c | 69 6e 65 2c 20 27 2e 27 |strchr(l|ine, '.'|
|00003350| 29 29 20 3d 3d 20 30 29 | 0a 58 09 09 09 63 6f 6e |)) == 0)|.X...con|
|00003360| 74 69 6e 75 65 3b 0a 58 | 09 09 69 66 20 28 73 74 |tinue;.X|..if (st|
|00003370| 72 63 6d 70 28 64 6f 74 | 2c 20 44 6f 74 41 72 70 |rcmp(dot|, DotArp|
|00003380| 61 29 20 21 3d 20 30 29 | 0a 58 09 09 09 63 6f 6e |a) != 0)|.X...con|
|00003390| 74 69 6e 75 65 3b 0a 58 | 09 09 2a 64 6f 74 20 3d |tinue;.X|..*dot =|
|000033a0| 20 30 3b 0a 58 0a 58 09 | 09 69 66 20 28 73 74 72 | 0;.X.X.|.if (str|
|000033b0| 63 6d 70 28 6e 2d 3e 6e | 61 6d 65 2c 20 6c 69 6e |cmp(n->n|ame, lin|
|000033c0| 65 29 20 3d 3d 20 30 29 | 0a 58 09 09 09 63 6f 6e |e) == 0)|.X...con|
|000033d0| 74 69 6e 75 65 3b 0a 58 | 0a 58 09 09 61 20 3d 20 |tinue;.X|.X..a = |
|000033e0| 6e 65 77 6e 6f 64 65 28 | 29 3b 0a 58 09 09 61 2d |newnode(|);.X..a-|
|000033f0| 3e 6e 61 6d 65 20 3d 20 | 73 74 72 73 61 76 65 28 |>name = |strsave(|
|00003400| 6c 69 6e 65 29 3b 0a 58 | 09 09 61 2d 3e 6e 65 78 |line);.X|..a->nex|
|00003410| 74 20 3d 20 6e 2d 3e 61 | 6c 69 61 73 3b 0a 58 09 |t = n->a|lias;.X.|
|00003420| 09 6e 2d 3e 61 6c 69 61 | 73 20 3d 20 61 3b 0a 58 |.n->alia|s = a;.X|
|00003430| 09 7d 0a 58 7d 0a 58 0a | 58 2f 2a 20 6d 61 6b 65 |.}.X}.X.|X/* make|
|00003440| 20 75 6e 69 71 75 65 20 | 64 6f 6d 61 69 6e 20 6e | unique |domain n|
|00003450| 61 6d 65 73 20 2a 2f 0a | 58 6d 65 72 67 65 28 29 |ames */.|Xmerge()|
|00003460| 0a 58 7b 09 72 65 67 69 | 73 74 65 72 20 6e 6f 64 |.X{.regi|ster nod|
|00003470| 65 20 2a 6e 3b 0a 58 0a | 58 09 66 6f 72 20 28 6e |e *n;.X.|X.for (n|
|00003480| 20 3d 20 54 6f 70 2d 3e | 63 68 69 6c 64 3b 20 6e | = Top->|child; n|
|00003490| 3b 20 6e 20 3d 20 6e 2d | 3e 6e 65 78 74 29 0a 58 |; n = n-|>next).X|
|000034a0| 09 09 6d 61 6b 65 5f 63 | 68 69 6c 64 72 65 6e 5f |..make_c|hildren_|
|000034b0| 75 6e 69 71 75 65 28 6e | 29 3b 0a 58 7d 0a 58 0a |unique(n|);.X}.X.|
|000034c0| 58 2f 2a 0a 58 20 2a 20 | 61 6e 6f 74 68 65 72 20 |X/*.X * |another |
|000034d0| 72 65 63 75 72 73 69 76 | 65 20 74 72 65 65 20 77 |recursiv|e tree w|
|000034e0| 61 6c 6b 2c 20 74 68 69 | 73 20 74 69 6d 65 20 74 |alk, thi|s time t|
|000034f0| 6f 20 6d 61 6b 65 20 75 | 6e 69 71 75 65 20 64 6f |o make u|nique do|
|00003500| 6d 61 69 6e 0a 58 20 2a | 20 63 6f 6d 70 6f 6e 65 |main.X *| compone|
|00003510| 6e 74 73 2e 0a 58 20 2a | 0a 58 20 2a 20 66 6f 72 |nts..X *|.X * for|
|00003520| 20 64 6f 6d 61 69 6e 73 | 20 6c 69 6b 65 20 63 63 | domains| like cc|
|00003530| 2e 75 6d 69 63 68 2e 65 | 64 75 20 61 6e 64 20 63 |.umich.e|du and c|
|00003540| 63 2e 62 65 72 6b 65 6c | 65 79 2e 65 64 75 2c 20 |c.berkel|ey.edu, |
|00003550| 69 74 27 73 20 69 6e 61 | 63 63 75 72 61 74 65 0a |it's ina|ccurate.|
|00003560| 58 20 2a 20 74 6f 20 64 | 65 73 63 72 69 62 65 20 |X * to d|escribe |
|00003570| 63 63 20 61 73 20 61 20 | 6d 65 6d 62 65 72 20 6f |cc as a |member o|
|00003580| 66 20 75 6d 69 63 68 2e | 65 64 75 20 6f 72 20 62 |f umich.|edu or b|
|00003590| 65 72 6b 65 6c 65 79 2e | 65 64 75 2e 20 20 28 69 |erkeley.|edu. (i|
|000035a0| 2e 65 2e 2c 20 74 68 65 | 0a 58 20 2a 20 6c 6f 75 |.e., the|.X * lou|
|000035b0| 73 79 20 73 63 6f 70 69 | 6e 67 20 72 75 6c 65 73 |sy scopi|ng rules|
|000035c0| 20 66 6f 72 20 70 72 69 | 76 61 74 65 73 20 64 6f | for pri|vates do|
|000035d0| 6e 27 74 20 70 65 72 6d | 69 74 20 61 20 63 6c 65 |n't perm|it a cle|
|000035e0| 61 6e 20 73 79 6e 74 61 | 78 2e 29 20 20 73 6f 2e |an synta|x.) so.|
|000035f0| 0a 58 20 2a 0a 58 20 2a | 20 74 6f 20 70 72 65 76 |.X *.X *| to prev|
|00003600| 65 6e 74 20 63 6f 6e 66 | 75 73 69 6f 6e 2c 20 74 |ent conf|usion, t|
|00003610| 61 63 6b 20 6f 6e 20 74 | 6f 20 61 6e 79 20 73 75 |ack on t|o any su|
|00003620| 63 68 20 64 6f 6d 61 69 | 6e 20 6e 61 6d 65 20 69 |ch domai|n name i|
|00003630| 74 73 20 70 61 72 65 6e | 74 20 64 6f 6d 61 69 6e |ts paren|t domain|
|00003640| 0a 58 20 2a 20 61 6e 64 | 20 70 72 6f 6d 6f 74 65 |.X * and| promote|
|00003650| 20 69 74 20 69 6e 20 74 | 68 65 20 74 72 65 65 2e | it in t|he tree.|
|00003660| 20 20 65 2e 67 2e 2c 20 | 6d 61 6b 65 20 63 63 2e | e.g., |make cc.|
|00003670| 75 6d 69 63 68 20 61 6e | 64 20 63 63 2e 62 65 72 |umich an|d cc.ber|
|00003680| 6b 65 6c 65 79 0a 58 20 | 2a 20 73 75 62 64 6f 6d |keley.X |* subdom|
|00003690| 61 69 6e 73 20 6f 66 20 | 65 64 75 2e 0a 58 20 2a |ains of |edu..X *|
|000036a0| 2f 0a 58 0a 58 6d 61 6b | 65 5f 63 68 69 6c 64 72 |/.X.Xmak|e_childr|
|000036b0| 65 6e 5f 75 6e 69 71 75 | 65 28 70 61 72 65 6e 74 |en_uniqu|e(parent|
|000036c0| 29 0a 58 09 6e 6f 64 65 | 20 2a 70 61 72 65 6e 74 |).X.node| *parent|
|000036d0| 3b 0a 58 7b 09 6e 6f 64 | 65 20 2a 70 72 65 76 2c |;.X{.nod|e *prev,|
|000036e0| 20 2a 63 68 69 6c 64 2c | 20 2a 6e 65 78 74 3b 0a | *child,| *next;.|
|000036f0| 58 09 63 68 61 72 20 62 | 75 66 5b 42 55 46 53 49 |X.char b|uf[BUFSI|
|00003700| 5a 5d 3b 0a 58 0a 58 09 | 70 72 65 76 20 3d 20 30 |Z];.X.X.|prev = 0|
|00003710| 3b 0a 58 09 66 6f 72 20 | 28 63 68 69 6c 64 20 3d |;.X.for |(child =|
|00003720| 20 70 61 72 65 6e 74 2d | 3e 63 68 69 6c 64 3b 20 | parent-|>child; |
|00003730| 63 68 69 6c 64 3b 20 63 | 68 69 6c 64 20 3d 20 6e |child; c|hild = n|
|00003740| 65 78 74 29 20 7b 0a 58 | 09 09 6e 65 78 74 20 3d |ext) {.X|..next =|
|00003750| 20 63 68 69 6c 64 2d 3e | 6e 65 78 74 3b 0a 58 0a | child->|next;.X.|
|00003760| 58 09 09 2f 2a 20 73 6b | 69 70 20 68 6f 73 74 73 |X../* sk|ip hosts|
|00003770| 20 2a 2f 0a 58 09 09 69 | 66 20 28 21 49 53 41 44 | */.X..i|f (!ISAD|
|00003780| 4f 4d 41 49 4e 28 63 68 | 69 6c 64 29 29 20 7b 0a |OMAIN(ch|ild)) {.|
|00003790| 58 09 09 09 70 72 65 76 | 20 3d 20 63 68 69 6c 64 |X...prev| = child|
|000037a0| 3b 0a 58 09 09 09 63 6f | 6e 74 69 6e 75 65 3b 0a |;.X...co|ntinue;.|
|000037b0| 58 09 09 7d 0a 58 0a 58 | 09 09 2f 2a 0a 58 09 09 |X..}.X.X|../*.X..|
|000037c0| 20 2a 20 70 72 6f 6d 6f | 74 65 20 6e 6f 6e 2d 75 | * promo|te non-u|
|000037d0| 6e 69 71 75 65 20 64 6f | 6d 61 69 6e 2c 20 6f 72 |nique do|main, or|
|000037e0| 20 61 6e 79 20 64 6f 6d | 61 69 6e 20 77 69 74 68 | any dom|ain with|
|000037f0| 20 61 0a 58 09 09 20 2a | 20 67 61 74 65 77 61 79 | a.X.. *| gateway|
|00003800| 2e 20 20 28 74 68 65 20 | 6c 61 74 74 65 72 20 67 |. (the |latter g|
|00003810| 65 74 20 70 72 6f 6d 6f | 74 65 64 20 61 6c 6c 20 |et promo|ted all |
|00003820| 74 68 65 20 77 61 79 20 | 74 6f 0a 58 09 09 20 2a |the way |to.X.. *|
|00003830| 20 74 6f 70 2d 6c 65 76 | 65 6c 2e 29 0a 58 09 09 | top-lev|el.).X..|
|00003840| 20 2a 2f 0a 58 09 09 69 | 66 20 28 28 63 68 69 6c | */.X..i|f ((chil|
|00003850| 64 2d 3e 66 6c 61 67 20 | 26 20 43 4f 4c 4c 49 53 |d->flag |& COLLIS|
|00003860| 49 4f 4e 29 20 3d 3d 20 | 30 20 26 26 20 63 68 69 |ION) == |0 && chi|
|00003870| 6c 64 2d 3e 67 61 74 65 | 77 61 79 20 3d 3d 20 30 |ld->gate|way == 0|
|00003880| 29 20 7b 0a 58 09 09 09 | 2f 2a 0a 58 09 09 09 20 |) {.X...|/*.X... |
|00003890| 2a 20 75 6e 69 6e 74 65 | 72 65 73 74 69 6e 67 20 |* uninte|resting |
|000038a0| 64 6f 6d 61 69 6e 2e 20 | 20 6d 61 6b 65 20 69 74 |domain. | make it|
|000038b0| 73 20 63 68 69 6c 64 72 | 65 6e 0a 58 09 09 09 20 |s childr|en.X... |
|000038c0| 2a 20 75 6e 69 71 75 65 | 20 61 6e 64 20 62 75 6d |* unique| and bum|
|000038d0| 70 20 70 72 65 76 2e 0a | 58 09 09 09 20 2a 2f 0a |p prev..|X... */.|
|000038e0| 58 09 09 09 6d 61 6b 65 | 5f 63 68 69 6c 64 72 65 |X...make|_childre|
|000038f0| 6e 5f 75 6e 69 71 75 65 | 28 63 68 69 6c 64 29 3b |n_unique|(child);|
|00003900| 0a 58 09 09 09 70 72 65 | 76 20 3d 20 63 68 69 6c |.X...pre|v = chil|
|00003910| 64 3b 0a 58 09 09 09 63 | 6f 6e 74 69 6e 75 65 3b |d;.X...c|ontinue;|
|00003920| 0a 58 09 09 7d 0a 58 0a | 58 09 09 2f 2a 0a 58 09 |.X..}.X.|X../*.X.|
|00003930| 09 20 2a 20 67 61 74 65 | 77 61 79 20 6f 72 20 64 |. * gate|way or d|
|00003940| 75 70 20 64 6f 6d 61 69 | 6e 20 6e 61 6d 65 20 66 |up domai|n name f|
|00003950| 6f 75 6e 64 2e 20 20 64 | 6f 6e 27 74 20 62 75 6d |ound. d|on't bum|
|00003960| 70 0a 58 09 09 20 2a 20 | 70 72 65 76 3a 20 74 68 |p.X.. * |prev: th|
|00003970| 69 73 20 6e 6f 64 65 20 | 69 73 20 6d 6f 76 69 6e |is node |is movin|
|00003980| 67 20 75 70 20 74 68 65 | 20 74 72 65 65 2e 0a 58 |g up the| tree..X|
|00003990| 09 09 20 2a 2f 0a 58 0a | 58 09 09 2f 2a 20 71 75 |.. */.X.|X../* qu|
|000039a0| 61 6c 69 66 79 20 63 68 | 69 6c 64 20 64 6f 6d 61 |alify ch|ild doma|
|000039b0| 69 6e 20 6e 61 6d 65 20 | 2a 2f 0a 58 09 09 73 70 |in name |*/.X..sp|
|000039c0| 72 69 6e 74 66 28 62 75 | 66 2c 20 22 25 73 25 73 |rintf(bu|f, "%s%s|
|000039d0| 22 2c 20 63 68 69 6c 64 | 2d 3e 6e 61 6d 65 2c 20 |", child|->name, |
|000039e0| 70 61 72 65 6e 74 2d 3e | 6e 61 6d 65 29 3b 0a 58 |parent->|name);.X|
|000039f0| 09 09 63 66 72 65 65 28 | 63 68 69 6c 64 2d 3e 6e |..cfree(|child->n|
|00003a00| 61 6d 65 29 3b 0a 58 09 | 09 63 68 69 6c 64 2d 3e |ame);.X.|.child->|
|00003a10| 6e 61 6d 65 20 3d 20 73 | 74 72 73 61 76 65 28 62 |name = s|trsave(b|
|00003a20| 75 66 29 3b 0a 58 0a 58 | 09 09 2f 2a 20 75 6e 6c |uf);.X.X|../* unl|
|00003a30| 69 6e 6b 20 63 68 69 6c | 64 20 6f 75 74 20 6f 66 |ink chil|d out of|
|00003a40| 20 73 69 62 6c 69 6e 67 | 20 63 68 61 69 6e 20 2a | sibling| chain *|
|00003a50| 2f 0a 58 09 09 69 66 20 | 28 70 72 65 76 29 0a 58 |/.X..if |(prev).X|
|00003a60| 09 09 09 70 72 65 76 2d | 3e 6e 65 78 74 20 3d 20 |...prev-|>next = |
|00003a70| 63 68 69 6c 64 2d 3e 6e | 65 78 74 3b 0a 58 09 09 |child->n|ext;.X..|
|00003a80| 65 6c 73 65 0a 58 09 09 | 09 70 61 72 65 6e 74 2d |else.X..|.parent-|
|00003a90| 3e 63 68 69 6c 64 20 3d | 20 63 68 69 6c 64 2d 3e |>child =| child->|
|00003aa0| 6e 65 78 74 3b 0a 58 0a | 58 09 09 2f 2a 20 6c 69 |next;.X.|X../* li|
|00003ab0| 6e 6b 20 63 68 69 6c 64 | 20 69 6e 20 61 73 20 70 |nk child| in as p|
|00003ac0| 65 65 72 20 6f 66 20 70 | 61 72 65 6e 74 20 2a 2f |eer of p|arent */|
|00003ad0| 0a 58 09 09 63 68 69 6c | 64 2d 3e 6e 65 78 74 20 |.X..chil|d->next |
|00003ae0| 3d 20 70 61 72 65 6e 74 | 2d 3e 6e 65 78 74 3b 0a |= parent|->next;.|
|00003af0| 58 09 09 70 61 72 65 6e | 74 2d 3e 6e 65 78 74 20 |X..paren|t->next |
|00003b00| 3d 20 63 68 69 6c 64 3b | 0a 58 09 09 63 68 69 6c |= child;|.X..chil|
|00003b10| 64 2d 3e 70 61 72 65 6e | 74 20 3d 20 70 61 72 65 |d->paren|t = pare|
|00003b20| 6e 74 2d 3e 70 61 72 65 | 6e 74 3b 0a 58 0a 58 09 |nt->pare|nt;.X.X.|
|00003b30| 09 2f 2a 0a 58 09 09 20 | 2a 20 72 65 73 65 74 20 |./*.X.. |* reset |
|00003b40| 63 6f 6c 6c 69 73 69 6f | 6e 20 66 6c 61 67 3b 20 |collisio|n flag; |
|00003b50| 6d 61 79 20 70 72 6f 6d | 6f 74 65 20 61 67 61 69 |may prom|ote agai|
|00003b60| 6e 20 6f 6e 0a 58 09 09 | 20 2a 20 72 65 74 75 72 |n on.X..| * retur|
|00003b70| 6e 20 74 6f 20 63 61 6c | 6c 65 72 2e 0a 58 09 09 |n to cal|ler..X..|
|00003b80| 20 2a 2f 0a 58 09 09 63 | 68 69 6c 64 2d 3e 66 6c | */.X..c|hild->fl|
|00003b90| 61 67 20 26 3d 20 7e 43 | 4f 4c 4c 49 53 49 4f 4e |ag &= ~C|OLLISION|
|00003ba0| 3b 0a 58 09 09 68 61 73 | 68 28 63 68 69 6c 64 29 |;.X..has|h(child)|
|00003bb0| 3b 0a 58 09 7d 0a 58 7d | 0a 58 0a 58 2f 2a 20 61 |;.X.}.X}|.X.X/* a|
|00003bc0| 6e 6f 74 68 65 72 20 72 | 65 63 75 72 73 69 76 65 |nother r|ecursive|
|00003bd0| 20 74 72 65 65 20 77 61 | 6c 6b 2c 20 74 68 69 73 | tree wa|lk, this|
|00003be0| 20 74 69 6d 65 20 74 6f | 20 73 65 74 20 74 68 65 | time to| set the|
|00003bf0| 20 43 4f 4c 4c 49 53 49 | 4f 4e 20 62 69 74 2e 20 | COLLISI|ON bit. |
|00003c00| 2a 2f 0a 58 73 65 74 75 | 6e 69 71 66 6c 61 67 28 |*/.Xsetu|niqflag(|
|00003c10| 6e 29 0a 58 09 6e 6f 64 | 65 20 2a 6e 3b 0a 58 7b |n).X.nod|e *n;.X{|
|00003c20| 09 6e 6f 64 65 20 2a 63 | 68 69 6c 64 2c 20 2a 61 |.node *c|hild, *a|
|00003c30| 6c 69 61 73 3b 0a 58 0a | 58 09 2f 2a 20 6d 61 72 |lias;.X.|X./* mar|
|00003c40| 6b 20 74 68 69 73 20 6e | 6f 64 65 20 69 6e 20 74 |k this n|ode in t|
|00003c50| 68 65 20 68 61 73 68 20 | 74 61 62 6c 65 20 2a 2f |he hash |table */|
|00003c60| 0a 58 09 68 61 73 68 28 | 6e 29 3b 0a 58 09 2f 2a |.X.hash(|n);.X./*|
|00003c70| 20 6d 61 72 6b 20 74 68 | 65 20 61 6c 69 61 73 65 | mark th|e aliase|
|00003c80| 73 20 6f 66 20 74 68 69 | 73 20 6e 6f 64 65 20 2a |s of thi|s node *|
|00003c90| 2f 0a 58 09 66 6f 72 20 | 28 61 6c 69 61 73 20 3d |/.X.for |(alias =|
|00003ca0| 20 6e 2d 3e 61 6c 69 61 | 73 3b 20 61 6c 69 61 73 | n->alia|s; alias|
|00003cb0| 3b 20 61 6c 69 61 73 20 | 3d 20 61 6c 69 61 73 2d |; alias |= alias-|
|00003cc0| 3e 6e 65 78 74 29 0a 58 | 09 09 68 61 73 68 28 61 |>next).X|..hash(a|
|00003cd0| 6c 69 61 73 29 3b 0a 58 | 09 2f 2a 20 72 65 63 75 |lias);.X|./* recu|
|00003ce0| 72 73 69 76 65 6c 79 20 | 6d 61 72 6b 20 74 68 69 |rsively |mark thi|
|00003cf0| 73 20 6e 6f 64 65 27 73 | 20 63 68 69 6c 64 72 65 |s node's| childre|
|00003d00| 6e 20 2a 2f 0a 58 09 66 | 6f 72 20 28 63 68 69 6c |n */.X.f|or (chil|
|00003d10| 64 20 3d 20 6e 2d 3e 63 | 68 69 6c 64 3b 20 63 68 |d = n->c|hild; ch|
|00003d20| 69 6c 64 3b 20 63 68 69 | 6c 64 20 3d 20 63 68 69 |ild; chi|ld = chi|
|00003d30| 6c 64 2d 3e 6e 65 78 74 | 29 0a 58 09 09 73 65 74 |ld->next|).X..set|
|00003d40| 75 6e 69 71 66 6c 61 67 | 28 63 68 69 6c 64 29 3b |uniqflag|(child);|
|00003d50| 0a 58 7d 0a 58 0a 58 23 | 64 65 66 69 6e 65 20 4e |.X}.X.X#|define N|
|00003d60| 48 41 53 48 20 38 31 39 | 31 09 09 2f 2a 20 6d 75 |HASH 819|1../* mu|
|00003d70| 73 74 20 62 65 20 70 72 | 69 6d 65 20 2a 2f 0a 58 |st be pr|ime */.X|
|00003d80| 6e 6f 64 65 20 2a 48 74 | 61 62 6c 65 5b 4e 48 41 |node *Ht|able[NHA|
|00003d90| 53 48 5d 3b 09 09 2f 2a | 20 68 61 73 68 20 74 61 |SH];../*| hash ta|
|00003da0| 62 6c 65 20 2a 2f 0a 58 | 0a 58 68 61 73 68 28 6e |ble */.X|.Xhash(n|
|00003db0| 29 0a 58 09 6e 6f 64 65 | 20 2a 6e 3b 0a 58 7b 09 |).X.node| *n;.X{.|
|00003dc0| 6e 6f 64 65 20 2a 2a 62 | 75 63 6b 65 74 2c 20 2a |node **b|ucket, *|
|00003dd0| 62 3b 0a 58 0a 58 09 62 | 75 63 6b 65 74 20 3d 20 |b;.X.X.b|ucket = |
|00003de0| 48 74 61 62 6c 65 20 2b | 20 28 66 6f 6c 64 28 6e |Htable +| (fold(n|
|00003df0| 2d 3e 6e 61 6d 65 29 20 | 25 20 4e 48 41 53 48 29 |->name) |% NHASH)|
|00003e00| 3b 0a 58 09 66 6f 72 20 | 28 62 20 3d 20 2a 62 75 |;.X.for |(b = *bu|
|00003e10| 63 6b 65 74 3b 20 62 3b | 20 62 20 3d 20 62 2d 3e |cket; b;| b = b->|
|00003e20| 62 75 63 6b 65 74 29 0a | 58 09 09 69 66 20 28 73 |bucket).|X..if (s|
|00003e30| 74 72 63 6d 70 28 6e 2d | 3e 6e 61 6d 65 2c 20 62 |trcmp(n-|>name, b|
|00003e40| 2d 3e 6e 61 6d 65 29 20 | 3d 3d 20 30 29 20 7b 0a |->name) |== 0) {.|
|00003e50| 58 09 09 09 62 2d 3e 66 | 6c 61 67 20 7c 3d 20 43 |X...b->f|lag |= C|
|00003e60| 4f 4c 4c 49 53 49 4f 4e | 3b 0a 58 09 09 09 6e 2d |OLLISION|;.X...n-|
|00003e70| 3e 66 6c 61 67 20 7c 3d | 20 43 4f 4c 4c 49 53 49 |>flag |=| COLLISI|
|00003e80| 4f 4e 3b 0a 58 09 09 09 | 72 65 74 75 72 6e 3b 0a |ON;.X...|return;.|
|00003e90| 58 09 09 7d 0a 58 0a 58 | 09 6e 2d 3e 62 75 63 6b |X..}.X.X|.n->buck|
|00003ea0| 65 74 20 3d 20 2a 62 75 | 63 6b 65 74 3b 0a 58 09 |et = *bu|cket;.X.|
|00003eb0| 2a 62 75 63 6b 65 74 20 | 3d 20 6e 3b 0a 58 7d 0a |*bucket |= n;.X}.|
|00003ec0| 58 0a 58 2f 2a 20 73 74 | 6f 6c 65 6e 20 66 72 6f |X.X/* st|olen fro|
|00003ed0| 6d 20 70 61 74 68 61 6c | 69 61 73 3a 61 64 64 6e |m pathal|ias:addn|
|00003ee0| 6f 64 65 2e 63 2c 20 71 | 2e 76 2e 20 2a 2f 0a 58 |ode.c, q|.v. */.X|
|00003ef0| 23 64 65 66 69 6e 65 20 | 50 4f 4c 59 09 30 78 34 |#define |POLY.0x4|
|00003f00| 38 30 30 30 30 30 30 09 | 09 2f 2a 20 33 31 2d 62 |8000000.|./* 31-b|
|00003f10| 69 74 20 70 6f 6c 79 6e | 6f 6d 69 61 6c 20 2a 2f |it polyn|omial */|
|00003f20| 0a 58 6c 6f 6e 67 20 43 | 72 63 54 61 62 6c 65 5b |.Xlong C|rcTable[|
|00003f30| 31 32 38 5d 3b 0a 58 0a | 58 76 6f 69 64 0a 58 63 |128];.X.|Xvoid.Xc|
|00003f40| 72 63 69 6e 69 74 28 29 | 0a 58 7b 09 72 65 67 69 |rcinit()|.X{.regi|
|00003f50| 73 74 65 72 20 69 6e 74 | 20 69 2c 6a 3b 0a 58 09 |ster int| i,j;.X.|
|00003f60| 72 65 67 69 73 74 65 72 | 20 6c 6f 6e 67 20 73 75 |register| long su|
|00003f70| 6d 3b 0a 58 0a 58 09 66 | 6f 72 20 28 69 20 3d 20 |m;.X.X.f|or (i = |
|00003f80| 30 3b 20 69 20 3c 20 31 | 32 38 3b 20 69 2b 2b 29 |0; i < 1|28; i++)|
|00003f90| 20 7b 0a 58 09 09 73 75 | 6d 20 3d 20 30 3b 0a 58 | {.X..su|m = 0;.X|
|00003fa0| 09 09 66 6f 72 20 28 6a | 20 3d 20 37 2d 31 3b 20 |..for (j| = 7-1; |
|00003fb0| 6a 20 3e 3d 20 30 3b 20 | 2d 2d 6a 29 0a 58 09 09 |j >= 0; |--j).X..|
|00003fc0| 09 69 66 20 28 69 20 26 | 20 28 31 20 3c 3c 20 6a |.if (i &| (1 << j|
|00003fd0| 29 29 0a 58 09 09 09 09 | 73 75 6d 20 5e 3d 20 50 |)).X....|sum ^= P|
|00003fe0| 4f 4c 59 20 3e 3e 20 6a | 3b 0a 58 09 09 43 72 63 |OLY >> j|;.X..Crc|
|00003ff0| 54 61 62 6c 65 5b 69 5d | 20 3d 20 73 75 6d 3b 0a |Table[i]| = sum;.|
|00004000| 58 09 7d 0a 58 7d 0a 58 | 0a 58 6c 6f 6e 67 0a 58 |X.}.X}.X|.Xlong.X|
|00004010| 66 6f 6c 64 28 73 29 0a | 58 09 72 65 67 69 73 74 |fold(s).|X.regist|
|00004020| 65 72 20 63 68 61 72 20 | 2a 73 3b 0a 58 7b 09 72 |er char |*s;.X{.r|
|00004030| 65 67 69 73 74 65 72 20 | 6c 6f 6e 67 20 73 75 6d |egister |long sum|
|00004040| 20 3d 20 30 3b 0a 58 09 | 72 65 67 69 73 74 65 72 | = 0;.X.|register|
|00004050| 20 69 6e 74 20 63 3b 0a | 58 0a 58 09 77 68 69 6c | int c;.|X.X.whil|
|00004060| 65 20 28 63 20 3d 20 2a | 73 2b 2b 29 0a 58 09 09 |e (c = *|s++).X..|
|00004070| 73 75 6d 20 3d 20 28 73 | 75 6d 20 3e 3e 20 37 29 |sum = (s|um >> 7)|
|00004080| 20 5e 20 43 72 63 54 61 | 62 6c 65 5b 28 73 75 6d | ^ CrcTa|ble[(sum|
|00004090| 20 5e 20 63 29 20 26 20 | 30 78 37 66 5d 3b 0a 58 | ^ c) & |0x7f];.X|
|000040a0| 09 72 65 74 75 72 6e 20 | 73 75 6d 3b 0a 58 7d 0a |.return |sum;.X}.|
|000040b0| 58 0a 58 68 61 73 68 61 | 6e 61 6c 79 7a 65 28 29 |X.Xhasha|nalyze()|
|000040c0| 0a 58 7b 09 69 6e 74 20 | 6e 6f 64 65 63 6f 75 6e |.X{.int |nodecoun|
|000040d0| 74 20 3d 20 30 2c 20 6d | 61 78 6c 65 6e 20 3d 20 |t = 0, m|axlen = |
|000040e0| 30 2c 20 6c 65 6e 2c 20 | 69 2c 20 70 72 6f 62 65 |0, len, |i, probe|
|000040f0| 73 20 3d 20 30 3b 0a 58 | 09 6e 6f 64 65 20 2a 6e |s = 0;.X|.node *n|
|00004100| 3b 0a 58 0a 58 09 69 66 | 20 28 21 56 66 6c 61 67 |;.X.X.if| (!Vflag|
|00004110| 29 0a 58 09 09 72 65 74 | 75 72 6e 3b 0a 58 0a 58 |).X..ret|urn;.X.X|
|00004120| 09 66 6f 72 20 28 69 20 | 3d 20 30 3b 20 69 20 3c |.for (i |= 0; i <|
|00004130| 20 4e 48 41 53 48 3b 20 | 69 2b 2b 29 20 7b 0a 58 | NHASH; |i++) {.X|
|00004140| 09 09 6c 65 6e 20 3d 20 | 30 3b 0a 58 09 09 66 6f |..len = |0;.X..fo|
|00004150| 72 20 28 6e 20 3d 20 48 | 74 61 62 6c 65 5b 69 5d |r (n = H|table[i]|
|00004160| 3b 20 6e 3b 20 6e 20 3d | 20 6e 2d 3e 62 75 63 6b |; n; n =| n->buck|
|00004170| 65 74 29 20 7b 0a 58 09 | 09 09 6c 65 6e 2b 2b 3b |et) {.X.|..len++;|
|00004180| 0a 58 09 09 09 70 72 6f | 62 65 73 20 2b 3d 20 6c |.X...pro|bes += l|
|00004190| 65 6e 3b 0a 58 09 09 7d | 0a 58 09 09 6e 6f 64 65 |en;.X..}|.X..node|
|000041a0| 63 6f 75 6e 74 20 2b 3d | 20 6c 65 6e 3b 0a 58 09 |count +=| len;.X.|
|000041b0| 09 69 66 20 28 6c 65 6e | 20 3e 20 6d 61 78 6c 65 |.if (len| > maxle|
|000041c0| 6e 29 0a 58 09 09 09 6d | 61 78 6c 65 6e 20 3d 20 |n).X...m|axlen = |
|000041d0| 6c 65 6e 3b 0a 58 09 7d | 0a 58 09 66 70 72 69 6e |len;.X.}|.X.fprin|
|000041e0| 74 66 28 73 74 64 65 72 | 72 2c 0a 58 09 20 20 22 |tf(stder|r,.X. "|
|000041f0| 6c 6f 61 64 20 3d 20 25 | 32 2e 32 66 2c 20 70 72 |load = %|2.2f, pr|
|00004200| 6f 62 65 73 2f 61 63 63 | 65 73 73 20 3d 20 25 32 |obes/acc|ess = %2|
|00004210| 2e 32 66 2c 20 25 64 20 | 6e 6f 64 65 73 2c 20 6d |.2f, %d |nodes, m|
|00004220| 61 78 20 63 68 61 69 6e | 20 69 73 20 25 64 5c 6e |ax chain| is %d\n|
|00004230| 22 2c 0a 58 09 20 20 28 | 64 6f 75 62 6c 65 29 20 |",.X. (|double) |
|00004240| 6e 6f 64 65 63 6f 75 6e | 74 20 2f 20 28 64 6f 75 |nodecoun|t / (dou|
|00004250| 62 6c 65 29 20 4e 48 41 | 53 48 2c 0a 58 09 20 20 |ble) NHA|SH,.X. |
|00004260| 28 64 6f 75 62 6c 65 29 | 20 70 72 6f 62 65 73 20 |(double)| probes |
|00004270| 2f 20 28 64 6f 75 62 6c | 65 29 20 6e 6f 64 65 63 |/ (doubl|e) nodec|
|00004280| 6f 75 6e 74 2c 20 6e 6f | 64 65 63 6f 75 6e 74 2c |ount, no|decount,|
|00004290| 20 6d 61 78 6c 65 6e 29 | 3b 0a 58 7d 0a 45 4e 44 | maxlen)|;.X}.END|
|000042a0| 5f 4f 46 5f 46 49 4c 45 | 0a 20 20 69 66 20 74 65 |_OF_FILE|. if te|
|000042b0| 73 74 20 31 33 33 33 30 | 20 2d 6e 65 20 60 77 63 |st 13330| -ne `wc|
|000042c0| 20 2d 63 20 3c 27 61 72 | 70 61 74 78 74 2e 63 27 | -c <'ar|patxt.c'|
|000042d0| 60 3b 20 74 68 65 6e 0a | 20 20 20 20 65 63 68 6f |`; then.| echo|
|000042e0| 20 73 68 61 72 3a 20 5c | 22 27 61 72 70 61 74 78 | shar: \|"'arpatx|
|000042f0| 74 2e 63 27 5c 22 20 75 | 6e 70 61 63 6b 65 64 20 |t.c'\" u|npacked |
|00004300| 77 69 74 68 20 77 72 6f | 6e 67 20 73 69 7a 65 21 |with wro|ng size!|
|00004310| 0a 20 20 66 69 0a 20 20 | 23 20 65 6e 64 20 6f 66 |. fi. |# end of|
|00004320| 20 27 61 72 70 61 74 78 | 74 2e 63 27 0a 66 69 0a | 'arpatx|t.c'.fi.|
|00004330| 69 66 20 74 65 73 74 20 | 2d 66 20 27 6d 61 70 69 |if test |-f 'mapi|
|00004340| 74 2e 63 27 20 2d 61 20 | 22 24 7b 31 7d 22 20 21 |t.c' -a |"${1}" !|
|00004350| 3d 20 22 2d 63 22 20 3b | 20 74 68 65 6e 20 0a 20 |= "-c" ;| then . |
|00004360| 20 65 63 68 6f 20 73 68 | 61 72 3a 20 57 69 6c 6c | echo sh|ar: Will|
|00004370| 20 6e 6f 74 20 63 6c 6f | 62 62 65 72 20 65 78 69 | not clo|bber exi|
|00004380| 73 74 69 6e 67 20 66 69 | 6c 65 20 5c 22 27 6d 61 |sting fi|le \"'ma|
|00004390| 70 69 74 2e 63 27 5c 22 | 0a 65 6c 73 65 0a 20 20 |pit.c'\"|.else. |
|000043a0| 65 63 68 6f 20 73 68 61 | 72 3a 20 45 78 74 72 61 |echo sha|r: Extra|
|000043b0| 63 74 69 6e 67 20 5c 22 | 27 6d 61 70 69 74 2e 63 |cting \"|'mapit.c|
|000043c0| 27 5c 22 20 5c 28 31 35 | 36 38 35 20 63 68 61 72 |'\" \(15|685 char|
|000043d0| 61 63 74 65 72 73 5c 29 | 0a 20 20 73 65 64 20 22 |acters\)|. sed "|
|000043e0| 73 2f 5e 58 2f 2f 22 20 | 3e 27 6d 61 70 69 74 2e |s/^X//" |>'mapit.|
|000043f0| 63 27 20 3c 3c 27 45 4e | 44 5f 4f 46 5f 46 49 4c |c' <<'EN|D_OF_FIL|
|00004400| 45 27 0a 58 2f 2a 20 70 | 61 74 68 61 6c 69 61 73 |E'.X/* p|athalias|
|00004410| 20 2d 2d 20 62 79 20 73 | 74 65 76 65 20 62 65 6c | -- by s|teve bel|
|00004420| 6c 6f 76 69 6e 2c 20 61 | 73 20 74 6f 6c 64 20 74 |lovin, a|s told t|
|00004430| 6f 20 70 65 74 65 72 20 | 68 6f 6e 65 79 6d 61 6e |o peter |honeyman|
|00004440| 20 2a 2f 0a 58 23 69 66 | 6e 64 65 66 20 6c 69 6e | */.X#if|ndef lin|
|00004450| 74 0a 58 73 74 61 74 69 | 63 20 63 68 61 72 09 2a |t.Xstati|c char.*|
|00004460| 73 63 63 73 69 64 20 3d | 20 22 40 28 23 29 6d 61 |sccsid =| "@(#)ma|
|00004470| 70 69 74 2e 63 09 39 2e | 31 33 20 38 38 2f 30 36 |pit.c.9.|13 88/06|
|00004480| 2f 31 32 22 3b 0a 58 23 | 65 6e 64 69 66 0a 58 0a |/12";.X#|endif.X.|
|00004490| 58 23 69 6e 63 6c 75 64 | 65 20 22 64 65 66 2e 68 |X#includ|e "def.h|
|000044a0| 22 0a 58 0a 58 23 64 65 | 66 69 6e 65 20 63 68 6b |".X.X#de|fine chk|
|000044b0| 68 65 61 70 28 69 29 09 | 2f 2a 20 76 6f 69 64 20 |heap(i).|/* void |
|000044c0| 2a 2f 0a 58 23 64 65 66 | 69 6e 65 20 63 68 6b 67 |*/.X#def|ine chkg|
|000044d0| 61 70 28 29 09 2f 2a 20 | 69 6e 74 20 2a 2f 0a 58 |ap()./* |int */.X|
|000044e0| 0a 58 23 64 65 66 69 6e | 65 20 74 72 70 72 69 6e |.X#defin|e trprin|
|000044f0| 74 28 73 74 72 65 61 6d | 2c 20 6e 29 20 5c 0a 58 |t(stream|, n) \.X|
|00004500| 09 66 70 72 69 6e 74 66 | 28 28 73 74 72 65 61 6d |.fprintf|((stream|
|00004510| 29 2c 20 28 6e 29 2d 3e | 6e 5f 66 6c 61 67 20 26 |), (n)->|n_flag &|
|00004520| 20 4e 54 45 52 4d 49 4e | 41 4c 20 3f 20 22 3c 25 | NTERMIN|AL ? "<%|
|00004530| 73 3e 22 20 3a 20 22 25 | 73 22 2c 20 28 6e 29 2d |s>" : "%|s", (n)-|
|00004540| 3e 6e 5f 6e 61 6d 65 29 | 0a 58 0a 58 2f 2a 20 65 |>n_name)|.X.X/* e|
|00004550| 78 70 6f 72 74 73 20 2a | 2f 0a 58 2f 2a 20 69 6e |xports *|/.X/* in|
|00004560| 76 61 72 69 61 6e 74 20 | 77 68 69 6c 65 20 6d 61 |variant |while ma|
|00004570| 70 70 69 6e 67 3a 20 4e | 68 65 61 70 20 3c 20 48 |pping: N|heap < H|
|00004580| 61 73 68 70 61 72 74 20 | 2a 2f 0a 58 6c 6f 6e 67 |ashpart |*/.Xlong|
|00004590| 20 48 61 73 68 70 61 72 | 74 3b 09 09 2f 2a 20 73 | Hashpar|t;../* s|
|000045a0| 74 61 72 74 20 6f 66 20 | 75 6e 72 65 61 63 68 65 |tart of |unreache|
|000045b0| 64 20 6e 6f 64 65 73 20 | 2a 2f 0a 58 6c 6f 6e 67 |d nodes |*/.Xlong|
|000045c0| 20 4e 68 65 61 70 3b 09 | 09 2f 2a 20 65 6e 64 20 | Nheap;.|./* end |
|000045d0| 6f 66 20 68 65 61 70 20 | 2a 2f 0a 58 6c 6f 6e 67 |of heap |*/.Xlong|
|000045e0| 20 4e 75 6d 4e 63 6f 70 | 79 2c 20 4e 6c 69 6e 6b | NumNcop|y, Nlink|
|000045f0| 2c 20 4e 75 6d 4c 63 6f | 70 79 3b 0a 58 0a 58 76 |, NumLco|py;.X.Xv|
|00004600| 6f 69 64 20 6d 61 70 69 | 74 28 29 3b 0a 58 0a 58 |oid mapi|t();.X.X|
|00004610| 2f 2a 20 69 6d 70 6f 72 | 74 73 20 2a 2f 0a 58 65 |/* impor|ts */.Xe|
|00004620| 78 74 65 72 6e 20 6c 6f | 6e 67 20 4e 68 65 61 70 |xtern lo|ng Nheap|
|00004630| 2c 20 48 61 73 68 70 61 | 72 74 2c 20 54 61 62 73 |, Hashpa|rt, Tabs|
|00004640| 69 7a 65 2c 20 54 63 6f | 75 6e 74 3b 0a 58 65 78 |ize, Tco|unt;.Xex|
|00004650| 74 65 72 6e 20 69 6e 74 | 20 54 66 6c 61 67 2c 20 |tern int| Tflag, |
|00004660| 56 66 6c 61 67 3b 0a 58 | 65 78 74 65 72 6e 20 6e |Vflag;.X|extern n|
|00004670| 6f 64 65 20 2a 2a 54 61 | 62 6c 65 2c 20 2a 48 6f |ode **Ta|ble, *Ho|
|00004680| 6d 65 3b 0a 58 65 78 74 | 65 72 6e 20 63 68 61 72 |me;.Xext|ern char|
|00004690| 20 2a 4c 69 6e 6b 6f 75 | 74 2c 20 2a 47 72 61 70 | *Linkou|t, *Grap|
|000046a0| 68 6f 75 74 3b 0a 58 0a | 58 65 78 74 65 72 6e 20 |hout;.X.|Xextern |
|000046b0| 76 6f 69 64 20 66 72 65 | 65 6c 69 6e 6b 28 29 2c |void fre|elink(),|
|000046c0| 20 72 65 73 65 74 6e 6f | 64 65 73 28 29 2c 20 70 | resetno|des(), p|
|000046d0| 72 69 6e 74 69 74 28 29 | 2c 20 64 75 6d 70 67 72 |rintit()|, dumpgr|
|000046e0| 61 70 68 28 29 3b 0a 58 | 65 78 74 65 72 6e 20 76 |aph();.X|extern v|
|000046f0| 6f 69 64 20 73 68 6f 77 | 6c 69 6e 6b 73 28 29 2c |oid show|links(),|
|00004700| 20 64 69 65 28 29 3b 0a | 58 65 78 74 65 72 6e 20 | die();.|Xextern |
|00004710| 6c 6f 6e 67 20 70 61 63 | 6b 28 29 2c 20 61 6c 6c |long pac|k(), all|
|00004720| 6f 63 61 74 69 6f 6e 28 | 29 3b 0a 58 65 78 74 65 |ocation(|);.Xexte|
|00004730| 72 6e 20 6c 69 6e 6b 20 | 2a 6e 65 77 6c 69 6e 6b |rn link |*newlink|
|00004740| 28 29 2c 20 2a 61 64 64 | 6c 69 6e 6b 28 29 3b 0a |(), *add|link();.|
|00004750| 58 65 78 74 65 72 6e 20 | 69 6e 74 20 6d 61 70 74 |Xextern |int mapt|
|00004760| 72 61 63 65 28 29 2c 20 | 74 69 65 62 72 65 61 6b |race(), |tiebreak|
|00004770| 65 72 28 29 3b 0a 58 65 | 78 74 65 72 6e 20 6e 6f |er();.Xe|xtern no|
|00004780| 64 65 20 2a 6e 63 6f 70 | 79 28 29 3b 0a 58 0a 58 |de *ncop|y();.X.X|
|00004790| 0a 58 2f 2a 20 70 72 69 | 76 61 74 65 73 20 2a 2f |.X/* pri|vates */|
|000047a0| 0a 58 73 74 61 74 69 63 | 20 6c 6f 6e 67 09 48 65 |.Xstatic| long.He|
|000047b0| 61 70 68 69 67 68 77 61 | 74 65 72 3b 0a 58 73 74 |aphighwa|ter;.Xst|
|000047c0| 61 74 69 63 20 6c 69 6e | 6b 09 2a 2a 48 65 61 70 |atic lin|k.**Heap|
|000047d0| 3b 0a 58 0a 58 53 54 41 | 54 49 43 20 76 6f 69 64 |;.X.XSTA|TIC void|
|000047e0| 20 69 6e 73 65 72 74 28 | 29 2c 20 68 65 61 70 75 | insert(|), heapu|
|000047f0| 70 28 29 2c 20 68 65 61 | 70 64 6f 77 6e 28 29 2c |p(), hea|pdown(),|
|00004800| 20 68 65 61 70 73 77 61 | 70 28 29 2c 20 62 61 63 | heapswa|p(), bac|
|00004810| 6b 6c 69 6e 6b 73 28 29 | 3b 0a 58 53 54 41 54 49 |klinks()|;.XSTATI|
|00004820| 43 20 76 6f 69 64 20 73 | 65 74 68 65 61 70 62 69 |C void s|etheapbi|
|00004830| 74 73 28 29 2c 20 6d 74 | 72 61 63 65 72 65 70 6f |ts(), mt|racerepo|
|00004840| 72 74 28 29 2c 20 68 65 | 61 70 63 68 69 6c 64 72 |rt(), he|apchildr|
|00004850| 65 6e 28 29 2c 20 6f 74 | 72 61 63 65 72 65 70 6f |en(), ot|racerepo|
|00004860| 72 74 28 29 3b 0a 58 53 | 54 41 54 49 43 20 6c 69 |rt();.XS|TATIC li|
|00004870| 6e 6b 20 2a 6d 69 6e 5f | 6e 6f 64 65 28 29 3b 0a |nk *min_|node();.|
|00004880| 58 53 54 41 54 49 43 20 | 69 6e 74 20 64 65 68 61 |XSTATIC |int deha|
|00004890| 73 68 28 29 2c 20 73 6b | 69 70 6c 69 6e 6b 28 29 |sh(), sk|iplink()|
|000048a0| 2c 20 73 6b 69 70 74 65 | 72 6d 69 6e 61 6c 61 6c |, skipte|rminalal|
|000048b0| 69 61 73 28 29 3b 0a 58 | 53 54 41 54 49 43 20 43 |ias();.X|STATIC C|
|000048c0| 6f 73 74 20 63 6f 73 74 | 6f 66 28 29 3b 0a 58 53 |ost cost|of();.XS|
|000048d0| 54 41 54 49 43 20 6e 6f | 64 65 20 2a 6d 61 70 70 |TATIC no|de *mapp|
|000048e0| 65 64 63 6f 70 79 28 29 | 3b 0a 58 0a 58 2f 2a 20 |edcopy()|;.X.X/* |
|000048f0| 74 72 61 6e 73 66 6f 72 | 6d 20 74 68 65 20 67 72 |transfor|m the gr|
|00004900| 61 70 68 20 74 6f 20 61 | 20 73 68 6f 72 74 65 73 |aph to a| shortes|
|00004910| 74 2d 70 61 74 68 20 74 | 72 65 65 20 62 79 20 6d |t-path t|ree by m|
|00004920| 61 72 6b 69 6e 67 20 74 | 72 65 65 20 65 64 67 65 |arking t|ree edge|
|00004930| 73 20 2a 2f 0a 58 76 6f | 69 64 0a 58 6d 61 70 69 |s */.Xvo|id.Xmapi|
|00004940| 74 28 29 0a 58 7b 09 72 | 65 67 69 73 74 65 72 20 |t().X{.r|egister |
|00004950| 6e 6f 64 65 20 2a 6e 3b | 0a 58 09 72 65 67 69 73 |node *n;|.X.regis|
|00004960| 74 65 72 20 6c 69 6e 6b | 20 2a 6c 3b 0a 58 0a 58 |ter link| *l;.X.X|
|00004970| 09 76 70 72 69 6e 74 66 | 28 73 74 64 65 72 72 2c |.vprintf|(stderr,|
|00004980| 20 22 2a 2a 2a 20 6d 61 | 70 70 69 6e 67 5c 74 74 | "*** ma|pping\tt|
|00004990| 63 6f 75 6e 74 20 3d 20 | 25 6c 64 5c 6e 22 2c 20 |count = |%ld\n", |
|000049a0| 54 63 6f 75 6e 74 29 3b | 0a 58 09 54 66 6c 61 67 |Tcount);|.X.Tflag|
|000049b0| 20 3d 20 54 66 6c 61 67 | 20 26 26 20 56 66 6c 61 | = Tflag| && Vfla|
|000049c0| 67 3b 09 09 2f 2a 20 74 | 72 61 63 69 6e 67 20 68 |g;../* t|racing h|
|000049d0| 65 72 65 20 6f 6e 6c 79 | 20 69 66 20 76 65 72 62 |ere only| if verb|
|000049e0| 6f 73 65 20 2a 2f 0a 58 | 09 2f 2a 20 72 65 2d 75 |ose */.X|./* re-u|
|000049f0| 73 65 20 74 68 65 20 68 | 61 73 68 20 74 61 62 6c |se the h|ash tabl|
|00004a00| 65 20 73 70 61 63 65 20 | 66 6f 72 20 74 68 65 20 |e space |for the |
|00004a10| 68 65 61 70 20 2a 2f 0a | 58 09 48 65 61 70 20 3d |heap */.|X.Heap =|
|00004a20| 20 28 6c 69 6e 6b 20 2a | 2a 29 20 54 61 62 6c 65 | (link *|*) Table|
|00004a30| 3b 0a 58 09 48 61 73 68 | 70 61 72 74 20 3d 20 70 |;.X.Hash|part = p|
|00004a40| 61 63 6b 28 30 4c 2c 20 | 54 61 62 73 69 7a 65 20 |ack(0L, |Tabsize |
|00004a50| 2d 20 31 29 3b 0a 58 0a | 58 09 2f 2a 20 65 78 70 |- 1);.X.|X./* exp|
|00004a60| 75 6e 67 65 20 70 65 6e | 61 6c 74 69 65 73 20 66 |unge pen|alties f|
|00004a70| 72 6f 6d 20 2d 61 20 6f | 70 74 69 6f 6e 20 61 6e |rom -a o|ption an|
|00004a80| 64 20 6d 61 6b 65 20 63 | 69 72 63 75 6c 61 72 20 |d make c|ircular |
|00004a90| 63 6f 70 79 20 6c 69 73 | 74 73 20 2a 2f 0a 58 09 |copy lis|ts */.X.|
|00004aa0| 72 65 73 65 74 6e 6f 64 | 65 73 28 29 3b 0a 58 0a |resetnod|es();.X.|
|00004ab0| 58 09 69 66 20 28 4c 69 | 6e 6b 6f 75 74 20 26 26 |X.if (Li|nkout &&|
|00004ac0| 20 2a 4c 69 6e 6b 6f 75 | 74 29 09 2f 2a 20 64 75 | *Linkou|t)./* du|
|00004ad0| 6d 70 20 63 68 65 61 70 | 65 73 74 20 6c 69 6e 6b |mp cheap|est link|
|00004ae0| 73 20 2a 2f 0a 58 09 09 | 73 68 6f 77 6c 69 6e 6b |s */.X..|showlink|
|00004af0| 73 28 29 3b 0a 58 09 69 | 66 20 28 47 72 61 70 68 |s();.X.i|f (Graph|
|00004b00| 6f 75 74 20 26 26 20 2a | 47 72 61 70 68 6f 75 74 |out && *|Graphout|
|00004b10| 29 09 2f 2a 20 64 75 6d | 70 20 74 68 65 20 65 64 |)./* dum|p the ed|
|00004b20| 67 65 20 6c 69 73 74 20 | 2a 2f 0a 58 09 09 64 75 |ge list |*/.X..du|
|00004b30| 6d 70 67 72 61 70 68 28 | 29 3b 0a 58 0a 58 09 2f |mpgraph(|);.X.X./|
|00004b40| 2a 20 69 6e 73 65 72 74 | 20 48 6f 6d 65 20 74 6f |* insert| Home to|
|00004b50| 20 67 65 74 20 74 68 69 | 6e 67 73 20 73 74 61 72 | get thi|ngs star|
|00004b60| 74 65 64 20 2a 2f 0a 58 | 09 6c 20 3d 20 6e 65 77 |ted */.X|.l = new|
|00004b70| 6c 69 6e 6b 28 29 3b 09 | 09 2f 2a 20 6c 69 6e 6b |link();.|./* link|
|00004b80| 20 74 6f 20 67 65 74 20 | 74 68 69 6e 67 73 20 73 | to get |things s|
|00004b90| 74 61 72 74 65 64 20 2a | 2f 0a 58 09 6c 2d 3e 6c |tarted *|/.X.l->l|
|00004ba0| 5f 74 6f 20 3d 20 48 6f | 6d 65 3b 0a 58 09 28 76 |_to = Ho|me;.X.(v|
|00004bb0| 6f 69 64 29 20 64 65 68 | 61 73 68 28 48 6f 6d 65 |oid) deh|ash(Home|
|00004bc0| 29 3b 0a 58 09 69 6e 73 | 65 72 74 28 6c 29 3b 0a |);.X.ins|ert(l);.|
|00004bd0| 58 0a 58 09 2f 2a 20 6d | 61 69 6e 20 6d 61 70 70 |X.X./* m|ain mapp|
|00004be0| 69 6e 67 20 6c 6f 6f 70 | 20 2a 2f 0a 58 09 64 6f |ing loop| */.X.do|
|00004bf0| 20 7b 0a 58 09 09 48 65 | 61 70 68 69 67 68 77 61 | {.X..He|aphighwa|
|00004c00| 74 65 72 20 3d 20 4e 68 | 65 61 70 3b 0a 58 09 09 |ter = Nh|eap;.X..|
|00004c10| 77 68 69 6c 65 20 28 28 | 6c 20 3d 20 6d 69 6e 5f |while ((|l = min_|
|00004c20| 6e 6f 64 65 28 29 29 20 | 21 3d 20 30 29 20 7b 0a |node()) |!= 0) {.|
|00004c30| 58 09 09 09 6c 2d 3e 6c | 5f 66 6c 61 67 20 7c 3d |X...l->l|_flag |=|
|00004c40| 20 4c 54 52 45 45 3b 0a | 58 09 09 09 6e 20 3d 20 | LTREE;.|X...n = |
|00004c50| 6c 2d 3e 6c 5f 74 6f 3b | 0a 58 09 09 09 69 66 20 |l->l_to;|.X...if |
|00004c60| 28 6e 2d 3e 6e 5f 66 6c | 61 67 20 26 20 4d 41 50 |(n->n_fl|ag & MAP|
|00004c70| 50 45 44 29 09 09 2f 2a | 20 73 61 6e 69 74 79 20 |PED)../*| sanity |
|00004c80| 63 68 65 63 6b 20 2a 2f | 0a 58 09 09 09 09 64 69 |check */|.X....di|
|00004c90| 65 28 22 6d 61 70 70 65 | 64 20 6e 6f 64 65 20 69 |e("mappe|d node i|
|00004ca0| 6e 20 68 65 61 70 22 29 | 3b 0a 58 09 09 09 69 66 |n heap")|;.X...if|
|00004cb0| 20 28 54 66 6c 61 67 20 | 26 26 20 6d 61 70 74 72 | (Tflag |&& maptr|
|00004cc0| 61 63 65 28 6e 2c 20 6e | 29 29 0a 58 09 09 09 09 |ace(n, n|)).X....|
|00004cd0| 6f 74 72 61 63 65 72 65 | 70 6f 72 74 28 6e 29 3b |otracere|port(n);|
|00004ce0| 09 2f 2a 20 74 72 61 63 | 69 6e 67 20 2a 2f 0a 58 |./* trac|ing */.X|
|00004cf0| 09 09 09 63 68 6b 68 65 | 61 70 28 31 29 3b 20 63 |...chkhe|ap(1); c|
|00004d00| 68 6b 67 61 70 28 29 3b | 09 09 2f 2a 20 64 65 62 |hkgap();|../* deb|
|00004d10| 75 67 67 69 6e 67 20 2a | 2f 0a 58 09 09 09 6e 2d |ugging *|/.X...n-|
|00004d20| 3e 6e 5f 66 6c 61 67 20 | 7c 3d 20 4d 41 50 50 45 |>n_flag ||= MAPPE|
|00004d30| 44 3b 0a 58 09 09 09 68 | 65 61 70 63 68 69 6c 64 |D;.X...h|eapchild|
|00004d40| 72 65 6e 28 6e 29 3b 09 | 2f 2a 20 61 64 64 20 63 |ren(n);.|/* add c|
|00004d50| 68 69 6c 64 72 65 6e 20 | 74 6f 20 68 65 61 70 20 |hildren |to heap |
|00004d60| 2a 2f 0a 58 09 09 7d 0a | 58 09 09 76 70 72 69 6e |*/.X..}.|X..vprin|
|00004d70| 74 66 28 73 74 64 65 72 | 72 2c 20 22 68 65 61 70 |tf(stder|r, "heap|
|00004d80| 20 68 69 77 61 74 20 25 | 64 5c 6e 61 6c 6c 6f 63 | hiwat %|d\nalloc|
|00004d90| 20 25 6c 64 6b 2c 20 6e | 63 6f 70 79 20 3d 20 25 | %ldk, n|copy = %|
|00004da0| 6c 64 2c 20 6e 6c 69 6e | 6b 20 3d 20 25 6c 64 2c |ld, nlin|k = %ld,|
|00004db0| 20 6c 63 6f 70 79 20 3d | 20 25 6c 64 5c 6e 22 2c | lcopy =| %ld\n",|
|00004dc0| 20 48 65 61 70 68 69 67 | 68 77 61 74 65 72 2c 20 | Heaphig|hwater, |
|00004dd0| 61 6c 6c 6f 63 61 74 69 | 6f 6e 28 29 2c 20 4e 75 |allocati|on(), Nu|
|00004de0| 6d 4e 63 6f 70 79 2c 20 | 4e 6c 69 6e 6b 2c 20 4e |mNcopy, |Nlink, N|
|00004df0| 75 6d 4c 63 6f 70 79 29 | 3b 0a 58 0a 58 09 09 69 |umLcopy)|;.X.X..i|
|00004e00| 66 20 28 4e 68 65 61 70 | 20 21 3d 20 30 29 09 09 |f (Nheap| != 0)..|
|00004e10| 2f 2a 20 73 61 6e 69 74 | 79 20 63 68 65 63 6b 20 |/* sanit|y check |
|00004e20| 2a 2f 0a 58 09 09 09 64 | 69 65 28 22 6e 75 6c 6c |*/.X...d|ie("null|
|00004e30| 20 65 6e 74 72 79 20 69 | 6e 20 68 65 61 70 22 29 | entry i|n heap")|
|00004e40| 3b 0a 58 0a 58 09 09 2f | 2a 0a 58 09 09 20 2a 20 |;.X.X../|*.X.. * |
|00004e50| 61 64 64 20 62 61 63 6b | 20 6c 69 6e 6b 73 20 66 |add back| links f|
|00004e60| 72 6f 6d 20 75 6e 72 65 | 61 63 68 61 62 6c 65 20 |rom unre|achable |
|00004e70| 68 6f 73 74 73 20 74 6f | 20 72 65 61 63 68 61 62 |hosts to| reachab|
|00004e80| 6c 65 0a 58 09 09 20 2a | 20 6e 65 69 67 68 62 6f |le.X.. *| neighbo|
|00004e90| 72 73 2c 20 74 68 65 6e | 20 72 65 6d 61 70 2e 20 |rs, then| remap. |
|00004ea0| 20 61 73 79 6d 70 74 6f | 74 69 63 61 6c 6c 79 2c | asympto|tically,|
|00004eb0| 20 74 68 69 73 20 69 73 | 0a 58 09 09 20 2a 20 71 | this is|.X.. * q|
|00004ec0| 75 61 64 72 61 74 69 63 | 3b 20 69 6e 20 70 72 61 |uadratic|; in pra|
|00004ed0| 63 74 69 63 65 2c 20 74 | 68 69 73 20 69 73 20 64 |ctice, t|his is d|
|00004ee0| 6f 6e 65 20 6f 6e 63 65 | 20 6f 72 20 74 77 69 63 |one once| or twic|
|00004ef0| 65 2c 0a 58 09 09 20 2a | 20 77 68 65 6e 20 6e 20 |e,.X.. *| when n |
|00004f00| 69 73 20 73 6d 61 6c 6c | 2e 0a 58 09 09 20 2a 2f |is small|..X.. */|
|00004f10| 0a 58 09 09 62 61 63 6b | 6c 69 6e 6b 73 28 29 3b |.X..back|links();|
|00004f20| 0a 58 09 7d 20 77 68 69 | 6c 65 20 28 4e 68 65 61 |.X.} whi|le (Nhea|
|00004f30| 70 20 3e 20 30 29 3b 0a | 58 0a 58 09 69 66 20 28 |p > 0);.|X.X.if (|
|00004f40| 48 61 73 68 70 61 72 74 | 20 3c 20 54 61 62 73 69 |Hashpart| < Tabsi|
|00004f50| 7a 65 29 20 7b 0a 58 09 | 09 69 6e 74 20 66 6f 75 |ze) {.X.|.int fou|
|00004f60| 6e 64 6f 6e 65 20 3d 20 | 30 3b 0a 58 0a 58 09 09 |ndone = |0;.X.X..|
|00004f70| 66 6f 72 20 28 20 3b 20 | 48 61 73 68 70 61 72 74 |for ( ; |Hashpart|
|00004f80| 20 3c 20 54 61 62 73 69 | 7a 65 3b 20 48 61 73 68 | < Tabsi|ze; Hash|
|00004f90| 70 61 72 74 2b 2b 29 20 | 7b 0a 58 09 09 09 69 66 |part++) |{.X...if|
|00004fa0| 20 28 54 61 62 6c 65 5b | 48 61 73 68 70 61 72 74 | (Table[|Hashpart|
|00004fb0| 5d 2d 3e 6e 5f 66 6c 61 | 67 20 26 20 49 53 50 52 |]->n_fla|g & ISPR|
|00004fc0| 49 56 41 54 45 29 0a 58 | 09 09 09 09 63 6f 6e 74 |IVATE).X|....cont|
|00004fd0| 69 6e 75 65 3b 0a 58 09 | 09 09 69 66 20 28 66 6f |inue;.X.|..if (fo|
|00004fe0| 75 6e 64 6f 6e 65 2b 2b | 20 3d 3d 20 30 29 0a 58 |undone++| == 0).X|
|00004ff0| 09 09 09 09 66 70 75 74 | 73 28 22 59 6f 75 20 63 |....fput|s("You c|
|00005000| 61 6e 27 74 20 67 65 74 | 20 74 68 65 72 65 20 66 |an't get| there f|
|00005010| 72 6f 6d 20 68 65 72 65 | 3a 5c 6e 22 2c 20 73 74 |rom here|:\n", st|
|00005020| 64 65 72 72 29 3b 0a 58 | 09 09 09 70 75 74 63 28 |derr);.X|...putc(|
|00005030| 27 5c 74 27 2c 20 73 74 | 64 65 72 72 29 3b 0a 58 |'\t', st|derr);.X|
|00005040| 09 09 09 74 72 70 72 69 | 6e 74 28 73 74 64 65 72 |...trpri|nt(stder|
|00005050| 72 2c 20 54 61 62 6c 65 | 5b 48 61 73 68 70 61 72 |r, Table|[Hashpar|
|00005060| 74 5d 29 3b 0a 58 09 09 | 09 70 75 74 63 28 27 5c |t]);.X..|.putc('\|
|00005070| 6e 27 2c 20 73 74 64 65 | 72 72 29 3b 0a 58 09 09 |n', stde|rr);.X..|
|00005080| 7d 0a 58 09 7d 0a 58 7d | 0a 58 0a 58 53 54 41 54 |}.X.}.X}|.X.XSTAT|
|00005090| 49 43 20 76 6f 69 64 0a | 58 68 65 61 70 63 68 69 |IC void.|Xheapchi|
|000050a0| 6c 64 72 65 6e 28 6e 29 | 0a 58 09 72 65 67 69 73 |ldren(n)|.X.regis|
|000050b0| 74 65 72 20 6e 6f 64 65 | 20 2a 6e 3b 0a 58 7b 09 |ter node| *n;.X{.|
|000050c0| 72 65 67 69 73 74 65 72 | 20 6c 69 6e 6b 20 2a 6c |register| link *l|
|000050d0| 3b 0a 58 09 72 65 67 69 | 73 74 65 72 20 6e 6f 64 |;.X.regi|ster nod|
|000050e0| 65 20 2a 6e 65 78 74 3b | 0a 58 09 72 65 67 69 73 |e *next;|.X.regis|
|000050f0| 74 65 72 20 69 6e 74 20 | 6d 74 72 61 63 65 3b 0a |ter int |mtrace;.|
|00005100| 58 09 72 65 67 69 73 74 | 65 72 20 43 6f 73 74 20 |X.regist|er Cost |
|00005110| 63 6f 73 74 3b 0a 58 0a | 58 09 66 6f 72 20 28 6c |cost;.X.|X.for (l|
|00005120| 20 3d 20 6e 2d 3e 6e 5f | 6c 69 6e 6b 3b 20 6c 3b | = n->n_|link; l;|
|00005130| 20 6c 20 3d 20 6c 2d 3e | 6c 5f 6e 65 78 74 29 20 | l = l->|l_next) |
|00005140| 7b 0a 58 0a 58 09 09 6e | 65 78 74 20 3d 20 6c 2d |{.X.X..n|ext = l-|
|00005150| 3e 6c 5f 74 6f 3b 09 09 | 2f 2a 20 6e 65 69 67 68 |>l_to;..|/* neigh|
|00005160| 62 6f 72 69 6e 67 20 6e | 6f 64 65 20 2a 2f 0a 58 |boring n|ode */.X|
|00005170| 09 09 6d 74 72 61 63 65 | 20 3d 20 54 66 6c 61 67 |..mtrace| = Tflag|
|00005180| 20 26 26 20 6d 61 70 74 | 72 61 63 65 28 6e 2c 20 | && mapt|race(n, |
|00005190| 6e 65 78 74 29 3b 0a 58 | 0a 58 09 09 69 66 20 28 |next);.X|.X..if (|
|000051a0| 6c 2d 3e 6c 5f 66 6c 61 | 67 20 26 20 4c 54 52 45 |l->l_fla|g & LTRE|
|000051b0| 45 29 0a 58 09 09 09 63 | 6f 6e 74 69 6e 75 65 3b |E).X...c|ontinue;|
|000051c0| 0a 58 0a 58 09 09 69 66 | 20 28 6c 2d 3e 6c 5f 66 |.X.X..if| (l->l_f|
|000051d0| 6c 61 67 20 26 20 4c 54 | 45 52 4d 49 4e 41 4c 29 |lag & LT|ERMINAL)|
|000051e0| 0a 58 09 09 09 6c 2d 3e | 6c 5f 74 6f 20 3d 20 6e |.X...l->|l_to = n|
|000051f0| 65 78 74 20 3d 20 6e 63 | 6f 70 79 28 6e 2c 20 6c |ext = nc|opy(n, l|
|00005200| 29 3b 0a 58 0a 58 09 09 | 69 66 20 28 28 6e 2d 3e |);.X.X..|if ((n->|
|00005210| 6e 5f 66 6c 61 67 20 26 | 20 4e 54 45 52 4d 49 4e |n_flag &| NTERMIN|
|00005220| 41 4c 29 20 26 26 20 28 | 6c 2d 3e 6c 5f 66 6c 61 |AL) && (|l->l_fla|
|00005230| 67 20 26 20 4c 41 4c 49 | 41 53 29 29 0a 58 09 09 |g & LALI|AS)).X..|
|00005240| 09 69 66 20 28 73 6b 69 | 70 74 65 72 6d 69 6e 61 |.if (ski|ptermina|
|00005250| 6c 61 6c 69 61 73 28 6e | 2c 20 6e 65 78 74 29 29 |lalias(n|, next))|
|00005260| 0a 58 09 09 09 09 63 6f | 6e 74 69 6e 75 65 3b 0a |.X....co|ntinue;.|
|00005270| 58 09 09 09 65 6c 73 65 | 0a 58 09 09 09 09 6c 2d |X...else|.X....l-|
|00005280| 3e 6c 5f 74 6f 20 3d 20 | 6e 65 78 74 20 3d 20 6e |>l_to = |next = n|
|00005290| 63 6f 70 79 28 6e 2c 20 | 6c 29 3b 0a 58 0a 58 09 |copy(n, |l);.X.X.|
|000052a0| 09 69 66 20 28 6e 65 78 | 74 2d 3e 6e 5f 66 6c 61 |.if (nex|t->n_fla|
|000052b0| 67 20 26 20 4d 41 50 50 | 45 44 29 20 7b 0a 58 09 |g & MAPP|ED) {.X.|
|000052c0| 09 09 69 66 20 28 6d 74 | 72 61 63 65 29 0a 58 09 |..if (mt|race).X.|
|000052d0| 09 09 09 6d 74 72 61 63 | 65 72 65 70 6f 72 74 28 |...mtrac|ereport(|
|000052e0| 6e 2c 20 6c 2c 20 22 2d | 5c 74 61 6c 72 65 61 64 |n, l, "-|\talread|
|000052f0| 79 20 6d 61 70 70 65 64 | 22 29 3b 0a 58 09 09 09 |y mapped|");.X...|
|00005300| 63 6f 6e 74 69 6e 75 65 | 3b 0a 58 09 09 7d 0a 58 |continue|;.X..}.X|
|00005310| 09 09 63 6f 73 74 20 3d | 20 63 6f 73 74 6f 66 28 |..cost =| costof(|
|00005320| 6e 2c 20 6c 29 3b 0a 58 | 0a 58 09 09 69 66 20 28 |n, l);.X|.X..if (|
|00005330| 73 6b 69 70 6c 69 6e 6b | 28 6c 2c 20 6e 2c 20 63 |skiplink|(l, n, c|
|00005340| 6f 73 74 2c 20 6d 74 72 | 61 63 65 29 29 0a 58 09 |ost, mtr|ace)).X.|
|00005350| 09 09 63 6f 6e 74 69 6e | 75 65 3b 0a 58 0a 58 09 |..contin|ue;.X.X.|
|00005360| 09 2f 2a 0a 58 09 09 20 | 2a 20 70 75 74 20 74 68 |./*.X.. |* put th|
|00005370| 69 73 20 6c 69 6e 6b 20 | 69 6e 20 74 68 65 20 68 |is link |in the h|
|00005380| 65 61 70 20 61 6e 64 20 | 72 65 73 74 6f 72 65 20 |eap and |restore |
|00005390| 74 68 65 0a 58 09 09 20 | 2a 20 68 65 61 70 20 70 |the.X.. |* heap p|
|000053a0| 72 6f 70 65 72 74 79 2e | 0a 58 09 09 20 2a 2f 0a |roperty.|.X.. */.|
|000053b0| 58 09 09 69 66 20 28 6d | 74 72 61 63 65 29 20 7b |X..if (m|trace) {|
|000053c0| 0a 58 09 09 09 69 66 20 | 28 6e 65 78 74 2d 3e 6e |.X...if |(next->n|
|000053d0| 5f 70 61 72 65 6e 74 29 | 0a 58 09 09 09 09 6d 74 |_parent)|.X....mt|
|000053e0| 72 61 63 65 72 65 70 6f | 72 74 28 6e 65 78 74 2d |racerepo|rt(next-|
|000053f0| 3e 6e 5f 70 61 72 65 6e | 74 2c 20 6c 2c 20 22 2a |>n_paren|t, l, "*|
|00005400| 5c 74 64 72 6f 70 22 29 | 3b 0a 58 09 09 09 6d 74 |\tdrop")|;.X...mt|
|00005410| 72 61 63 65 72 65 70 6f | 72 74 28 6e 2c 20 6c 2c |racerepo|rt(n, l,|
|00005420| 20 22 2b 5c 74 61 64 64 | 22 29 3b 0a 58 09 09 7d | "+\tadd|");.X..}|
|00005430| 0a 58 09 09 6e 65 78 74 | 2d 3e 6e 5f 70 61 72 65 |.X..next|->n_pare|
|00005440| 6e 74 20 3d 20 6e 3b 0a | 58 09 09 69 66 20 28 64 |nt = n;.|X..if (d|
|00005450| 65 68 61 73 68 28 6e 65 | 78 74 29 20 3d 3d 20 30 |ehash(ne|xt) == 0|
|00005460| 29 20 7b 20 20 2f 2a 20 | 66 69 72 73 74 20 74 69 |) { /* |first ti|
|00005470| 6d 65 20 2a 2f 0a 58 09 | 09 09 6e 65 78 74 2d 3e |me */.X.|..next->|
|00005480| 6e 5f 63 6f 73 74 20 3d | 20 63 6f 73 74 3b 0a 58 |n_cost =| cost;.X|
|00005490| 09 09 09 69 6e 73 65 72 | 74 28 6c 29 3b 09 20 20 |...inser|t(l);. |
|000054a0| 2f 2a 20 69 6e 73 65 72 | 74 20 61 74 20 65 6e 64 |/* inser|t at end|
|000054b0| 20 2a 2f 0a 58 09 09 09 | 68 65 61 70 75 70 28 6c | */.X...|heapup(l|
|000054c0| 29 3b 0a 58 09 09 7d 20 | 65 6c 73 65 20 7b 0a 58 |);.X..} |else {.X|
|000054d0| 09 09 09 2f 2a 20 72 65 | 70 6c 61 63 65 20 69 6e |.../* re|place in|
|000054e0| 66 65 72 69 6f 72 20 70 | 61 74 68 20 2a 2f 0a 58 |ferior p|ath */.X|
|000054f0| 09 09 09 48 65 61 70 5b | 6e 65 78 74 2d 3e 6e 5f |...Heap[|next->n_|
|00005500| 74 6c 6f 63 5d 20 3d 20 | 6c 3b 0a 58 09 09 09 69 |tloc] = |l;.X...i|
|00005510| 66 20 28 63 6f 73 74 20 | 3e 20 6e 65 78 74 2d 3e |f (cost |> next->|
|00005520| 6e 5f 63 6f 73 74 29 20 | 7b 0a 58 09 09 09 09 2f |n_cost) |{.X..../|
|00005530| 2a 20 69 6e 63 72 65 61 | 73 65 20 63 6f 73 74 20 |* increa|se cost |
|00005540| 28 67 61 74 65 77 61 79 | 29 20 2a 2f 0a 58 09 09 |(gateway|) */.X..|
|00005550| 09 09 6e 65 78 74 2d 3e | 6e 5f 63 6f 73 74 20 3d |..next->|n_cost =|
|00005560| 20 63 6f 73 74 3b 0a 58 | 09 09 09 09 68 65 61 70 | cost;.X|....heap|
|00005570| 64 6f 77 6e 28 6c 29 3b | 0a 58 09 09 09 7d 20 65 |down(l);|.X...} e|
|00005580| 6c 73 65 20 69 66 20 28 | 63 6f 73 74 20 3c 20 6e |lse if (|cost < n|
|00005590| 65 78 74 2d 3e 6e 5f 63 | 6f 73 74 29 20 7b 0a 58 |ext->n_c|ost) {.X|
|000055a0| 09 09 09 09 2f 2a 20 63 | 68 65 61 70 65 72 20 72 |..../* c|heaper r|
|000055b0| 6f 75 74 65 20 2a 2f 0a | 58 09 09 09 09 6e 65 78 |oute */.|X....nex|
|000055c0| 74 2d 3e 6e 5f 63 6f 73 | 74 20 3d 20 63 6f 73 74 |t->n_cos|t = cost|
|000055d0| 3b 0a 58 0a 58 09 09 09 | 09 68 65 61 70 75 70 28 |;.X.X...|.heapup(|
|000055e0| 6c 29 3b 0a 58 09 09 09 | 7d 0a 58 09 09 7d 0a 58 |l);.X...|}.X..}.X|
|000055f0| 09 09 73 65 74 68 65 61 | 70 62 69 74 73 28 6c 29 |..sethea|pbits(l)|
|00005600| 3b 0a 58 09 09 63 68 6b | 68 65 61 70 28 31 29 3b |;.X..chk|heap(1);|
|00005610| 0a 58 0a 58 09 7d 0a 58 | 7d 0a 58 0a 58 2f 2a 20 |.X.X.}.X|}.X.X/* |
|00005620| 0a 58 20 2a 20 62 69 7a | 61 72 72 6f 20 73 70 65 |.X * biz|arro spe|
|00005630| 63 69 61 6c 20 63 61 73 | 65 2e 20 20 74 68 69 73 |cial cas|e. this|
|00005640| 20 6d 65 72 69 74 73 20 | 63 6f 6d 6d 65 6e 74 2e | merits |comment.|
|00005650| 0a 58 20 2a 20 0a 58 20 | 2a 20 6e 20 69 73 20 61 |.X * .X |* n is a|
|00005660| 20 74 65 72 6d 69 6e 61 | 6c 20 6e 6f 64 65 20 6a | termina|l node j|
|00005670| 75 73 74 20 73 75 63 6b | 65 64 20 6f 75 74 20 6f |ust suck|ed out o|
|00005680| 66 20 74 68 65 20 68 65 | 61 70 2c 20 6e 65 78 74 |f the he|ap, next|
|00005690| 20 69 73 20 61 6e 20 61 | 6c 69 61 73 0a 58 20 2a | is an a|lias.X *|
|000056a0| 20 66 6f 72 20 6e 2e 20 | 20 62 65 63 61 75 73 65 | for n. | because|
|000056b0| 20 6e 20 69 73 20 74 65 | 72 6d 69 6e 61 6c 2c 20 | n is te|rminal, |
|000056c0| 69 74 20 6d 75 73 74 20 | 68 61 76 65 20 6f 6e 65 |it must |have one|
|000056d0| 20 6f 72 20 6d 6f 72 65 | 20 22 63 6f 70 69 65 73 | or more| "copies|
|000056e0| 2e 22 0a 58 20 2a 20 69 | 66 20 6e 65 78 74 20 69 |.".X * i|f next i|
|000056f0| 73 20 6f 6e 65 20 6f 66 | 20 74 68 6f 73 65 20 63 |s one of| those c|
|00005700| 6f 70 69 65 73 2c 20 64 | 6f 6e 27 74 20 70 75 74 |opies, d|on't put|
|00005710| 20 6e 65 78 74 20 69 6e | 20 74 68 65 20 68 65 61 | next in| the hea|
|00005720| 70 2e 0a 58 20 2a 0a 58 | 20 2a 20 64 6f 65 73 20 |p..X *.X| * does |
|00005730| 74 68 61 74 20 63 6c 65 | 61 72 20 74 68 69 6e 67 |that cle|ar thing|
|00005740| 73 20 75 70 3f 0a 58 20 | 2a 2f 0a 58 53 54 41 54 |s up?.X |*/.XSTAT|
|00005750| 49 43 20 69 6e 74 0a 58 | 73 6b 69 70 74 65 72 6d |IC int.X|skipterm|
|00005760| 69 6e 61 6c 61 6c 69 61 | 73 28 6e 2c 20 6e 65 78 |inalalia|s(n, nex|
|00005770| 74 29 0a 58 09 6e 6f 64 | 65 20 2a 6e 2c 20 2a 6e |t).X.nod|e *n, *n|
|00005780| 65 78 74 3b 0a 58 7b 0a | 58 0a 58 09 77 68 69 6c |ext;.X{.|X.X.whil|
|00005790| 65 20 28 6e 2d 3e 6e 5f | 66 6c 61 67 20 26 20 4e |e (n->n_|flag & N|
|000057a0| 41 4c 49 41 53 29 20 7b | 0a 58 09 09 6e 20 3d 20 |ALIAS) {|.X..n = |
|000057b0| 6e 2d 3e 6e 5f 70 61 72 | 65 6e 74 3b 0a 58 09 09 |n->n_par|ent;.X..|
|000057c0| 69 66 20 28 41 4c 54 45 | 52 45 47 4f 28 6e 2c 20 |if (ALTE|REGO(n, |
|000057d0| 6e 65 78 74 29 29 0a 58 | 09 09 09 72 65 74 75 72 |next)).X|...retur|
|000057e0| 6e 20 31 3b 0a 58 09 7d | 0a 58 09 72 65 74 75 72 |n 1;.X.}|.X.retur|
|000057f0| 6e 20 30 3b 0a 58 7d 0a | 58 0a 58 2f 2a 0a 58 20 |n 0;.X}.|X.X/*.X |
|00005800| 2a 20 72 65 74 75 72 6e | 20 31 20 69 66 20 77 65 |* return| 1 if we|
|00005810| 20 64 65 66 69 6e 69 74 | 65 6c 79 20 64 6f 6e 27 | definit|ely don'|
|00005820| 74 20 77 61 6e 74 20 77 | 61 6e 74 20 74 68 69 73 |t want w|ant this|
|00005830| 20 6c 69 6e 6b 20 69 6e | 20 74 68 65 0a 58 20 2a | link in| the.X *|
|00005840| 20 73 68 6f 72 74 65 73 | 74 20 70 61 74 68 20 74 | shortes|t path t|
|00005850| 72 65 65 2c 20 30 20 69 | 66 20 77 65 20 6d 69 67 |ree, 0 i|f we mig|
|00005860| 68 74 20 77 61 6e 74 20 | 69 74 2c 20 69 2e 65 2e |ht want |it, i.e.|
|00005870| 2c 20 62 65 73 74 20 73 | 6f 20 66 61 72 2e 0a 58 |, best s|o far..X|
|00005880| 20 2a 0a 58 20 2a 20 69 | 66 20 74 72 61 63 69 6e | *.X * i|f tracin|
|00005890| 67 20 69 73 20 74 75 72 | 6e 65 64 20 6f 6e 2c 20 |g is tur|ned on, |
|000058a0| 72 65 70 6f 72 74 20 6f | 6e 6c 79 20 69 66 20 74 |report o|nly if t|
|000058b0| 68 69 73 20 6e 6f 64 65 | 20 69 73 20 62 65 69 6e |his node| is bein|
|000058c0| 67 20 73 6b 69 70 70 65 | 64 2e 0a 58 20 2a 2f 0a |g skippe|d..X */.|
|000058d0| 58 53 54 41 54 49 43 20 | 69 6e 74 0a 58 73 6b 69 |XSTATIC |int.Xski|
|000058e0| 70 6c 69 6e 6b 28 6c 2c | 20 70 61 72 65 6e 74 2c |plink(l,| parent,|
|000058f0| 20 63 6f 73 74 2c 20 74 | 72 61 63 65 29 0a 58 09 | cost, t|race).X.|
|00005900| 6c 69 6e 6b 20 2a 6c 3b | 09 09 2f 2a 20 6e 65 77 |link *l;|../* new|
|00005910| 20 6c 69 6e 6b 20 74 6f | 20 74 68 69 73 20 6e 6f | link to| this no|
|00005920| 64 65 20 2a 2f 0a 58 09 | 6e 6f 64 65 20 2a 70 61 |de */.X.|node *pa|
|00005930| 72 65 6e 74 3b 09 09 2f | 2a 20 28 70 6f 74 65 6e |rent;../|* (poten|
|00005940| 74 69 61 6c 29 20 6e 65 | 77 20 70 61 72 65 6e 74 |tial) ne|w parent|
|00005950| 20 6f 66 20 74 68 69 73 | 20 6e 6f 64 65 20 2a 2f | of this| node */|
|00005960| 0a 58 09 72 65 67 69 73 | 74 65 72 20 43 6f 73 74 |.X.regis|ter Cost|
|00005970| 20 63 6f 73 74 3b 09 2f | 2a 20 6e 65 77 20 63 6f | cost;./|* new co|
|00005980| 73 74 20 74 6f 20 74 68 | 69 73 20 6e 6f 64 65 20 |st to th|is node |
|00005990| 2a 2f 0a 58 09 69 6e 74 | 20 74 72 61 63 65 3b 09 |*/.X.int| trace;.|
|000059a0| 09 2f 2a 20 74 72 61 63 | 65 20 74 68 69 73 20 6c |./* trac|e this l|
|000059b0| 69 6e 6b 3f 20 2a 2f 0a | 58 7b 09 72 65 67 69 73 |ink? */.|X{.regis|
|000059c0| 74 65 72 20 6e 6f 64 65 | 20 2a 6e 3b 09 2f 2a 20 |ter node| *n;./* |
|000059d0| 74 68 69 73 20 6e 6f 64 | 65 20 2a 2f 0a 58 09 72 |this nod|e */.X.r|
|000059e0| 65 67 69 73 74 65 72 20 | 6c 69 6e 6b 20 2a 6c 68 |egister |link *lh|
|000059f0| 65 61 70 3b 09 09 2f 2a | 20 6f 6c 64 20 6c 69 6e |eap;../*| old lin|
|00005a00| 6b 20 74 6f 20 74 68 69 | 73 20 6e 6f 64 65 20 2a |k to thi|s node *|
|00005a10| 2f 0a 58 0a 58 09 6e 20 | 3d 20 6c 2d 3e 6c 5f 74 |/.X.X.n |= l->l_t|
|00005a20| 6f 3b 0a 58 0a 58 09 2f | 2a 20 66 69 72 73 74 20 |o;.X.X./|* first |
|00005a30| 74 69 6d 65 20 77 65 27 | 76 65 20 72 65 61 63 68 |time we'|ve reach|
|00005a40| 65 64 20 74 68 69 73 20 | 6e 6f 64 65 3f 20 2a 2f |ed this |node? */|
|00005a50| 0a 58 09 69 66 20 28 6e | 2d 3e 6e 5f 74 6c 6f 63 |.X.if (n|->n_tloc|
|00005a60| 20 3e 3d 20 48 61 73 68 | 70 61 72 74 29 0a 58 09 | >= Hash|part).X.|
|00005a70| 09 72 65 74 75 72 6e 20 | 30 3b 0a 58 0a 58 09 6c |.return |0;.X.X.l|
|00005a80| 68 65 61 70 20 3d 20 48 | 65 61 70 5b 6e 2d 3e 6e |heap = H|eap[n->n|
|00005a90| 5f 74 6c 6f 63 5d 3b 0a | 58 0a 58 09 2f 2a 20 65 |_tloc];.|X.X./* e|
|00005aa0| 78 61 6d 69 6e 65 20 6c | 69 6e 6b 73 20 74 6f 20 |xamine l|inks to |
|00005ab0| 6e 65 74 73 20 74 68 61 | 74 20 72 65 71 75 69 72 |nets tha|t requir|
|00005ac0| 65 20 67 61 74 65 77 61 | 79 73 20 2a 2f 0a 58 09 |e gatewa|ys */.X.|
|00005ad0| 69 66 20 28 47 41 54 45 | 57 41 59 45 44 28 6e 29 |if (GATE|WAYED(n)|
|00005ae0| 29 20 7b 0a 58 09 09 2f | 2a 20 69 66 20 65 78 61 |) {.X../|* if exa|
|00005af0| 63 74 6c 79 20 6f 6e 65 | 20 69 73 20 61 20 67 61 |ctly one| is a ga|
|00005b00| 74 65 77 61 79 2c 20 75 | 73 65 20 69 74 20 2a 2f |teway, u|se it */|
|00005b10| 0a 58 09 09 69 66 20 28 | 28 6c 68 65 61 70 2d 3e |.X..if (|(lheap->|
|00005b20| 6c 5f 66 6c 61 67 20 26 | 20 4c 47 41 54 45 57 41 |l_flag &| LGATEWA|
|00005b30| 59 29 20 26 26 20 21 28 | 6c 2d 3e 6c 5f 66 6c 61 |Y) && !(|l->l_fla|
|00005b40| 67 20 26 20 4c 47 41 54 | 45 57 41 59 29 29 20 7b |g & LGAT|EWAY)) {|
|00005b50| 0a 58 09 09 09 69 66 20 | 28 74 72 61 63 65 29 0a |.X...if |(trace).|
|00005b60| 58 09 09 09 09 6d 74 72 | 61 63 65 72 65 70 6f 72 |X....mtr|acerepor|
|00005b70| 74 28 70 61 72 65 6e 74 | 2c 20 6c 2c 20 22 2d 5c |t(parent|, l, "-\|
|00005b80| 74 6f 6c 64 20 67 61 74 | 65 77 61 79 22 29 3b 0a |told gat|eway");.|
|00005b90| 58 09 09 09 72 65 74 75 | 72 6e 20 31 3b 09 2f 2a |X...retu|rn 1;./*|
|00005ba0| 20 6f 6c 64 20 69 73 20 | 67 61 74 65 77 61 79 20 | old is |gateway |
|00005bb0| 2a 2f 0a 58 09 09 7d 0a | 58 09 09 69 66 20 28 21 |*/.X..}.|X..if (!|
|00005bc0| 28 6c 68 65 61 70 2d 3e | 6c 5f 66 6c 61 67 20 26 |(lheap->|l_flag &|
|00005bd0| 20 4c 47 41 54 45 57 41 | 59 29 20 26 26 20 28 6c | LGATEWA|Y) && (l|
|00005be0| 2d 3e 6c 5f 66 6c 61 67 | 20 26 20 4c 47 41 54 45 |->l_flag| & LGATE|
|00005bf0| 57 41 59 29 29 0a 58 09 | 09 09 72 65 74 75 72 6e |WAY)).X.|..return|
|00005c00| 20 30 3b 09 2f 2a 20 6e | 65 77 20 69 73 20 67 61 | 0;./* n|ew is ga|
|00005c10| 74 65 77 61 79 20 2a 2f | 0a 58 0a 58 09 09 2f 2a |teway */|.X.X../*|
|00005c20| 20 6e 6f 20 67 61 74 65 | 77 61 79 20 6f 72 20 62 | no gate|way or b|
|00005c30| 6f 74 68 20 67 61 74 65 | 77 61 79 73 3b 20 20 72 |oth gate|ways; r|
|00005c40| 65 73 6f 6c 76 65 20 69 | 6e 20 73 74 61 6e 64 61 |esolve i|n standa|
|00005c50| 72 64 20 77 61 79 20 2e | 2e 2e 20 2a 2f 0a 58 09 |rd way .|.. */.X.|
|00005c60| 7d 0a 58 0a 58 09 2f 2a | 20 65 78 61 6d 69 6e 65 |}.X.X./*| examine|
|00005c70| 20 64 75 70 20 6c 69 6e | 6b 20 28 73 61 6e 69 74 | dup lin|k (sanit|
|00005c80| 79 20 63 68 65 63 6b 29 | 20 2a 2f 0a 58 09 69 66 |y check)| */.X.if|
|00005c90| 20 28 6e 2d 3e 6e 5f 70 | 61 72 65 6e 74 20 3d 3d | (n->n_p|arent ==|
|00005ca0| 20 70 61 72 65 6e 74 20 | 26 26 20 28 44 45 41 44 | parent |&& (DEAD|
|00005cb0| 4c 49 4e 4b 28 6c 68 65 | 61 70 29 20 7c 7c 20 44 |LINK(lhe|ap) || D|
|00005cc0| 45 41 44 4c 49 4e 4b 28 | 6c 29 29 29 0a 58 09 09 |EADLINK(|l))).X..|
|00005cd0| 64 69 65 28 22 64 75 70 | 20 64 65 61 64 20 6c 69 |die("dup| dead li|
|00005ce0| 6e 6b 22 29 3b 0a 58 0a | 58 09 2f 2a 20 20 65 78 |nk");.X.|X./* ex|
|00005cf0| 61 6d 69 6e 65 20 63 6f | 73 74 20 2a 2f 0a 58 09 |amine co|st */.X.|
|00005d00| 69 66 20 28 63 6f 73 74 | 20 3c 20 6e 2d 3e 6e 5f |if (cost| < n->n_|
|00005d10| 63 6f 73 74 29 0a 58 09 | 09 72 65 74 75 72 6e 20 |cost).X.|.return |
|00005d20| 30 3b 0a 58 09 69 66 20 | 28 63 6f 73 74 20 3e 20 |0;.X.if |(cost > |
|00005d30| 6e 2d 3e 6e 5f 63 6f 73 | 74 29 20 7b 0a 58 09 09 |n->n_cos|t) {.X..|
|00005d40| 69 66 20 28 74 72 61 63 | 65 29 0a 58 09 09 09 6d |if (trac|e).X...m|
|00005d50| 74 72 61 63 65 72 65 70 | 6f 72 74 28 70 61 72 65 |tracerep|ort(pare|
|00005d60| 6e 74 2c 20 6c 2c 20 22 | 2d 5c 74 63 68 65 61 70 |nt, l, "|-\tcheap|
|00005d70| 65 72 22 29 3b 0a 58 09 | 09 72 65 74 75 72 6e 20 |er");.X.|.return |
|00005d80| 31 3b 0a 58 09 7d 0a 58 | 0a 58 09 2f 2a 20 61 6c |1;.X.}.X|.X./* al|
|00005d90| 6c 20 6f 74 68 65 72 20 | 74 68 69 6e 67 73 20 62 |l other |things b|
|00005da0| 65 69 6e 67 20 65 71 75 | 61 6c 2c 20 61 73 6b 20 |eing equ|al, ask |
|00005db0| 74 68 65 20 6f 72 61 63 | 6c 65 20 2a 2f 0a 58 09 |the orac|le */.X.|
|00005dc0| 69 66 20 28 74 69 65 62 | 72 65 61 6b 65 72 28 6e |if (tieb|reaker(n|
|00005dd0| 2c 20 70 61 72 65 6e 74 | 29 29 20 7b 0a 58 09 09 |, parent|)) {.X..|
|00005de0| 69 66 20 28 74 72 61 63 | 65 29 0a 58 09 09 09 6d |if (trac|e).X...m|
|00005df0| 74 72 61 63 65 72 65 70 | 6f 72 74 28 70 61 72 65 |tracerep|ort(pare|
|00005e00| 6e 74 2c 20 6c 2c 20 22 | 2d 5c 74 74 69 65 62 72 |nt, l, "|-\ttiebr|
|00005e10| 65 61 6b 65 72 22 29 3b | 0a 58 09 09 72 65 74 75 |eaker");|.X..retu|
|00005e20| 72 6e 20 31 3b 0a 58 09 | 7d 0a 58 09 72 65 74 75 |rn 1;.X.|}.X.retu|
|00005e30| 72 6e 20 30 3b 0a 58 7d | 0a 58 0a 58 2f 2a 20 63 |rn 0;.X}|.X.X/* c|
|00005e40| 6f 6d 70 75 74 65 20 63 | 6f 73 74 20 74 6f 20 6c |ompute c|ost to l|
|00005e50| 2d 3e 6c 5f 74 6f 20 76 | 69 61 20 70 61 72 65 6e |->l_to v|ia paren|
|00005e60| 74 20 2a 2f 0a 58 53 54 | 41 54 49 43 20 43 6f 73 |t */.XST|ATIC Cos|
|00005e70| 74 0a 58 63 6f 73 74 6f | 66 28 70 72 65 76 2c 20 |t.Xcosto|f(prev, |
|00005e80| 6c 29 0a 58 09 72 65 67 | 69 73 74 65 72 20 6e 6f |l).X.reg|ister no|
|00005e90| 64 65 20 2a 70 72 65 76 | 3b 0a 58 09 72 65 67 69 |de *prev|;.X.regi|
|00005ea0| 73 74 65 72 20 6c 69 6e | 6b 20 2a 6c 3b 0a 58 7b |ster lin|k *l;.X{|
|00005eb0| 09 72 65 67 69 73 74 65 | 72 20 6e 6f 64 65 20 2a |.registe|r node *|
|00005ec0| 6e 65 78 74 3b 0a 58 09 | 72 65 67 69 73 74 65 72 |next;.X.|register|
|00005ed0| 20 43 6f 73 74 20 63 6f | 73 74 3b 0a 58 0a 58 09 | Cost co|st;.X.X.|
|00005ee0| 69 66 20 28 6c 2d 3e 6c | 5f 66 6c 61 67 20 26 20 |if (l->l|_flag & |
|00005ef0| 4c 41 4c 49 41 53 29 0a | 58 09 09 72 65 74 75 72 |LALIAS).|X..retur|
|00005f00| 6e 20 70 72 65 76 2d 3e | 6e 5f 63 6f 73 74 3b 09 |n prev->|n_cost;.|
|00005f10| 2f 2a 20 62 79 20 64 65 | 66 69 6e 69 74 69 6f 6e |/* by de|finition|
|00005f20| 20 2a 2f 0a 58 0a 58 09 | 6e 65 78 74 20 3d 20 6c | */.X.X.|next = l|
|00005f30| 2d 3e 6c 5f 74 6f 3b 0a | 58 09 63 6f 73 74 20 3d |->l_to;.|X.cost =|
|00005f40| 20 70 72 65 76 2d 3e 6e | 5f 63 6f 73 74 20 2b 20 | prev->n|_cost + |
|00005f50| 6c 2d 3e 6c 5f 63 6f 73 | 74 3b 09 2f 2a 20 62 61 |l->l_cos|t;./* ba|
|00005f60| 73 69 63 20 63 6f 73 74 | 20 2a 2f 0a 58 0a 58 09 |sic cost| */.X.X.|
|00005f70| 2f 2a 0a 58 09 20 2a 20 | 68 65 75 72 69 73 74 69 |/*.X. * |heuristi|
|00005f80| 63 73 3a 0a 58 09 20 2a | 20 20 20 20 63 68 61 72 |cs:.X. *| char|
|00005f90| 67 65 20 66 6f 72 20 61 | 20 64 65 61 64 20 6c 69 |ge for a| dead li|
|00005fa0| 6e 6b 2e 0a 58 09 20 2a | 20 20 20 20 63 68 61 72 |nk..X. *| char|
|00005fb0| 67 65 20 66 6f 72 20 67 | 65 74 74 69 6e 67 20 70 |ge for g|etting p|
|00005fc0| 61 73 74 20 61 20 74 65 | 72 6d 69 6e 61 6c 20 68 |ast a te|rminal h|
|00005fd0| 6f 73 74 0a 58 09 20 2a | 20 20 20 20 09 6f 72 20 |ost.X. *| .or |
|00005fe0| 67 65 74 74 69 6e 67 20 | 6f 75 74 20 6f 66 20 61 |getting |out of a|
|00005ff0| 20 64 65 61 64 20 68 6f | 73 74 2e 0a 58 09 20 2a | dead ho|st..X. *|
|00006000| 20 20 20 20 63 68 61 72 | 67 65 20 66 6f 72 20 67 | char|ge for g|
|00006010| 65 74 74 69 6e 67 20 69 | 6e 74 6f 20 61 20 67 61 |etting i|nto a ga|
|00006020| 74 65 77 61 79 65 64 20 | 6e 65 74 20 28 65 78 63 |tewayed |net (exc|
|00006030| 65 70 74 20 61 74 20 61 | 20 67 61 74 65 77 61 79 |ept at a| gateway|
|00006040| 29 2e 0a 58 09 20 2a 20 | 20 20 20 64 69 73 63 6f |)..X. * | disco|
|00006050| 75 72 61 67 65 20 6d 69 | 78 69 6e 67 20 6f 66 20 |urage mi|xing of |
|00006060| 73 79 6e 74 61 78 20 28 | 77 68 65 6e 20 70 72 65 |syntax (|when pre|
|00006070| 76 20 69 73 20 61 20 68 | 6f 73 74 29 2e 0a 58 09 |v is a h|ost)..X.|
|00006080| 20 2a 0a 58 09 20 2a 20 | 6c 69 66 65 20 77 61 73 | *.X. * |life was|
|00006090| 20 73 69 6d 70 6c 65 72 | 20 77 68 65 6e 20 70 61 | simpler| when pa|
|000060a0| 74 68 61 6c 69 61 73 20 | 63 6f 6d 70 75 74 65 64 |thalias |computed|
|000060b0| 20 74 72 75 65 20 73 68 | 6f 72 74 65 73 74 20 70 | true sh|ortest p|
|000060c0| 61 74 68 73 2e 0a 58 09 | 20 2a 2f 0a 58 09 69 66 |aths..X.| */.X.if|
|000060d0| 20 28 44 45 41 44 4c 49 | 4e 4b 28 6c 29 29 0a 58 | (DEADLI|NK(l)).X|
|000060e0| 09 09 63 6f 73 74 20 2b | 3d 20 49 4e 46 3b 09 09 |..cost +|= INF;..|
|000060f0| 09 09 2f 2a 20 64 65 61 | 64 20 6c 69 6e 6b 20 2a |../* dea|d link *|
|00006100| 2f 0a 58 09 69 66 20 28 | 44 45 41 44 48 4f 53 54 |/.X.if (|DEADHOST|
|00006110| 28 70 72 65 76 29 29 0a | 58 09 09 63 6f 73 74 20 |(prev)).|X..cost |
|00006120| 2b 3d 20 49 4e 46 3b 09 | 09 09 09 2f 2a 20 64 65 |+= INF;.|.../* de|
|00006130| 61 64 20 70 61 72 65 6e | 74 20 2a 2f 0a 58 09 69 |ad paren|t */.X.i|
|00006140| 66 20 28 47 41 54 45 57 | 41 59 45 44 28 6e 65 78 |f (GATEW|AYED(nex|
|00006150| 74 29 20 26 26 20 21 28 | 6c 2d 3e 6c 5f 66 6c 61 |t) && !(|l->l_fla|
|00006160| 67 20 26 20 4c 47 41 54 | 45 57 41 59 29 29 0a 58 |g & LGAT|EWAY)).X|
|00006170| 09 09 63 6f 73 74 20 2b | 3d 20 49 4e 46 3b 09 09 |..cost +|= INF;..|
|00006180| 09 09 2f 2a 20 6e 6f 74 | 20 67 61 74 65 77 61 79 |../* not| gateway|
|00006190| 20 2a 2f 0a 58 09 69 66 | 20 28 21 49 53 41 4e 45 | */.X.if| (!ISANE|
|000061a0| 54 28 70 72 65 76 29 29 | 20 7b 0a 58 09 09 69 66 |T(prev))| {.X..if|
|000061b0| 20 28 28 4e 45 54 44 49 | 52 28 6c 29 20 3d 3d 20 | ((NETDI|R(l) == |
|000061c0| 4c 4c 45 46 54 20 26 26 | 20 28 70 72 65 76 2d 3e |LLEFT &&| (prev->|
|000061d0| 6e 5f 66 6c 61 67 20 26 | 20 48 41 53 52 49 47 48 |n_flag &| HASRIGH|
|000061e0| 54 29 29 0a 58 09 09 20 | 7c 7c 20 28 4e 45 54 44 |T)).X.. ||| (NETD|
|000061f0| 49 52 28 6c 29 20 3d 3d | 20 4c 52 49 47 48 54 20 |IR(l) ==| LRIGHT |
|00006200| 26 26 20 28 70 72 65 76 | 2d 3e 6e 5f 66 6c 61 67 |&& (prev|->n_flag|
|00006210| 20 26 20 48 41 53 4c 45 | 46 54 29 29 29 0a 58 09 | & HASLE|FT))).X.|
|00006220| 09 09 63 6f 73 74 20 2b | 3d 20 49 4e 46 3b 09 09 |..cost +|= INF;..|
|00006230| 09 2f 2a 20 6d 69 78 65 | 64 20 73 79 6e 74 61 78 |./* mixe|d syntax|
|00006240| 20 2a 2f 0a 58 09 7d 0a | 58 0a 58 09 72 65 74 75 | */.X.}.|X.X.retu|
|00006250| 72 6e 20 63 6f 73 74 3b | 0a 58 7d 0a 58 0a 58 2f |rn cost;|.X}.X.X/|
|00006260| 2a 20 62 69 6e 61 72 79 | 20 68 65 61 70 20 69 6d |* binary| heap im|
|00006270| 70 6c 65 6d 65 6e 74 61 | 74 69 6f 6e 20 6f 66 20 |plementa|tion of |
|00006280| 70 72 69 6f 72 69 74 79 | 20 71 75 65 75 65 20 2a |priority| queue *|
|00006290| 2f 0a 58 0a 58 53 54 41 | 54 49 43 20 76 6f 69 64 |/.X.XSTA|TIC void|
|000062a0| 0a 58 69 6e 73 65 72 74 | 28 6c 29 0a 58 09 6c 69 |.Xinsert|(l).X.li|
|000062b0| 6e 6b 20 2a 6c 3b 0a 58 | 7b 09 72 65 67 69 73 74 |nk *l;.X|{.regist|
|000062c0| 65 72 20 6e 6f 64 65 20 | 2a 6e 3b 0a 58 0a 58 09 |er node |*n;.X.X.|
|000062d0| 6e 20 3d 20 6c 2d 3e 6c | 5f 74 6f 3b 0a 58 09 69 |n = l->l|_to;.X.i|
|000062e0| 66 20 28 6e 2d 3e 6e 5f | 66 6c 61 67 20 26 20 4d |f (n->n_|flag & M|
|000062f0| 41 50 50 45 44 29 0a 58 | 09 09 64 69 65 28 22 69 |APPED).X|..die("i|
|00006300| 6e 73 65 72 74 20 6d 61 | 70 70 65 64 20 6e 6f 64 |nsert ma|pped nod|
|00006310| 65 22 29 3b 0a 58 0a 58 | 09 48 65 61 70 5b 6e 2d |e");.X.X|.Heap[n-|
|00006320| 3e 6e 5f 74 6c 6f 63 5d | 20 3d 20 30 3b 0a 58 09 |>n_tloc]| = 0;.X.|
|00006330| 69 66 20 28 48 65 61 70 | 5b 4e 68 65 61 70 2b 31 |if (Heap|[Nheap+1|
|00006340| 5d 20 21 3d 20 30 29 0a | 58 09 09 64 69 65 28 22 |] != 0).|X..die("|
|00006350| 68 65 61 70 20 65 72 72 | 6f 72 20 69 6e 20 69 6e |heap err|or in in|
|00006360| 73 65 72 74 22 29 3b 0a | 58 09 69 66 20 28 4e 68 |sert");.|X.if (Nh|
|00006370| 65 61 70 2b 2b 20 3d 3d | 20 30 29 20 7b 0a 58 09 |eap++ ==| 0) {.X.|
|00006380| 09 48 65 61 70 5b 31 5d | 20 3d 20 6c 3b 0a 58 09 |.Heap[1]| = l;.X.|
|00006390| 09 6e 2d 3e 6e 5f 74 6c | 6f 63 20 3d 20 31 3b 0a |.n->n_tl|oc = 1;.|
|000063a0| 58 09 09 72 65 74 75 72 | 6e 3b 0a 58 09 7d 0a 58 |X..retur|n;.X.}.X|
|000063b0| 09 69 66 20 28 56 66 6c | 61 67 20 26 26 20 4e 68 |.if (Vfl|ag && Nh|
|000063c0| 65 61 70 20 3e 20 48 65 | 61 70 68 69 67 68 77 61 |eap > He|aphighwa|
|000063d0| 74 65 72 29 0a 58 09 09 | 48 65 61 70 68 69 67 68 |ter).X..|Heaphigh|
|000063e0| 77 61 74 65 72 20 3d 20 | 4e 68 65 61 70 3b 09 2f |water = |Nheap;./|
|000063f0| 2a 20 64 69 61 67 6e 6f | 73 74 69 63 73 20 2a 2f |* diagno|stics */|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.