home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / altsrcs / 2 / 2020 < prev    next >
SHell self-extracting ARchive  |  1990-12-28  |  18.2 KB

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).

ConfidenceProgramDetectionMatch TypeSupport
100% dexvert Newsgroup Content (archive/news) magic Supported
100% dexvert SHell self-extracting ARchive (archive/shar) magic Supported
100% dexvert Internet Message Format (text/imf) magic Supported
1% dexvert Text File (text/txt) fallback Supported
100% file news or mail, ASCII text default
100% TrID E-Mail message (Var. 2) 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| 46 72 6f 6d 3a 20 6d 61 | 72 6b 40 7a 6f 6b 2e 55 |From: ma|rk@zok.U|
|00000010| 55 43 50 20 28 4d 61 72 | 6b 20 57 2e 20 53 6e 69 |UCP (Mar|k W. Sni|
|00000020| 74 69 6c 79 29 0a 4e 65 | 77 73 67 72 6f 75 70 73 |tily).Ne|wsgroups|
|00000030| 3a 20 61 6c 74 2e 73 6f | 75 72 63 65 73 0a 53 75 |: alt.so|urces.Su|
|00000040| 62 6a 65 63 74 3a 20 6c | 6b 74 72 65 65 3a 20 73 |bject: l|ktree: s|
|00000050| 79 6d 62 6f 6c 69 63 20 | 6c 69 6e 6b 20 74 72 65 |ymbolic |link tre|
|00000060| 65 20 62 75 69 6c 64 65 | 72 20 74 68 61 74 20 75 |e builde|r that u|
|00000070| 6e 64 65 72 73 74 61 6e | 64 73 20 52 43 53 20 26 |nderstan|ds RCS &|
|00000080| 20 53 43 43 53 0a 4d 65 | 73 73 61 67 65 2d 49 44 | SCCS.Me|ssage-ID|
|00000090| 3a 20 3c 34 39 36 40 7a | 6f 6b 2e 55 55 43 50 3e |: <496@z|ok.UUCP>|
|000000a0| 0a 44 61 74 65 3a 20 31 | 20 4e 6f 76 20 39 30 20 |.Date: 1| Nov 90 |
|000000b0| 30 38 3a 31 32 3a 30 39 | 20 47 4d 54 0a 0a 4e 6f |08:12:09| GMT..No|
|000000c0| 74 65 3a 20 20 49 27 6d | 20 70 6f 73 74 69 6e 67 |te: I'm| posting|
|000000d0| 20 74 68 69 73 20 66 6f | 72 20 61 20 66 72 69 65 | this fo|r a frie|
|000000e0| 6e 64 20 74 68 61 74 20 | 64 6f 65 73 6e 27 74 20 |nd that |doesn't |
|000000f0| 68 61 76 65 20 72 65 67 | 75 6c 61 72 20 6e 65 74 |have reg|ular net|
|00000100| 20 61 63 63 65 73 73 2e | 0a 43 65 63 69 6c 20 4d | access.|.Cecil M|
|00000110| 63 47 72 65 67 6f 72 20 | 69 73 20 74 68 65 20 61 |cGregor |is the a|
|00000120| 75 74 68 6f 72 2e 0a 0a | 41 73 20 74 68 65 20 73 |uthor...|As the s|
|00000130| 75 62 6a 65 63 74 20 6c | 69 6e 65 20 73 61 79 73 |ubject l|ine says|
|00000140| 2c 20 74 68 69 73 20 69 | 73 20 61 20 70 72 6f 67 |, this i|s a prog|
|00000150| 72 61 6d 20 74 68 61 74 | 20 62 75 69 6c 64 73 20 |ram that| builds |
|00000160| 61 20 73 79 6d 62 6f 6c | 69 63 0a 6c 69 6e 6b 20 |a symbol|ic.link |
|00000170| 74 72 65 65 2e 20 20 49 | 74 20 72 65 63 6f 67 6e |tree. I|t recogn|
|00000180| 69 7a 65 73 20 52 43 53 | 20 26 20 53 43 43 53 20 |izes RCS| & SCCS |
|00000190| 73 75 62 64 69 72 65 63 | 74 6f 72 69 65 73 20 61 |subdirec|tories a|
|000001a0| 6e 64 20 73 79 6d 6c 69 | 6e 6b 73 20 74 6f 0a 74 |nd symli|nks to.t|
|000001b0| 68 65 20 64 69 72 65 63 | 74 6f 72 79 20 69 6e 73 |he direc|tory ins|
|000001c0| 74 65 61 64 20 6f 66 20 | 61 6c 6c 20 6f 66 20 74 |tead of |all of t|
|000001d0| 68 65 20 69 6e 64 69 76 | 69 64 75 61 6c 20 52 43 |he indiv|idual RC|
|000001e0| 53 20 6f 72 20 53 43 43 | 53 20 66 69 6c 65 73 2e |S or SCC|S files.|
|000001f0| 0a 54 68 65 20 70 72 6f | 67 72 61 6d 20 69 73 20 |.The pro|gram is |
|00000200| 69 6e 20 75 73 65 20 6f | 6e 20 73 75 6e 5b 33 34 |in use o|n sun[34|
|00000210| 5d 27 73 20 72 75 6e 6e | 69 6e 67 20 53 75 6e 20 |]'s runn|ing Sun |
|00000220| 4f 53 20 34 2e 30 2e 33 | 2e 0a 0a 51 75 65 73 74 |OS 4.0.3|...Quest|
|00000230| 69 6f 6e 73 20 63 61 6e | 20 62 65 20 65 6d 61 69 |ions can| be emai|
|00000240| 6c 65 64 20 74 6f 20 6d | 65 20 61 6e 64 20 49 27 |led to m|e and I'|
|00000250| 6c 6c 20 66 6f 72 77 61 | 72 64 20 74 68 65 6d 20 |ll forwa|rd them |
|00000260| 6f 6e 20 74 6f 20 43 65 | 63 69 6c 2e 0a 0a 2d 2d |on to Ce|cil...--|
|00000270| 20 4d 61 72 6b 0a 0a 4d | 61 72 6b 20 57 2e 20 53 | Mark..M|ark W. S|
|00000280| 6e 69 74 69 6c 79 20 20 | 20 20 20 20 20 20 20 20 |nitily | |
|00000290| 20 20 20 20 20 20 20 43 | 6f 6e 73 75 6c 74 69 6e | C|onsultin|
|000002a0| 67 20 53 65 72 76 69 63 | 65 73 3a 0a 38 39 34 20 |g Servic|es:.894 |
|000002b0| 42 72 6f 6f 6b 67 72 6f | 76 65 20 4c 61 6e 65 20 |Brookgro|ve Lane |
|000002c0| 20 20 20 20 20 20 20 20 | 20 20 20 20 47 72 61 70 | | Grap|
|000002d0| 68 69 63 73 2c 20 4f 70 | 65 72 61 74 69 6e 67 20 |hics, Op|erating |
|000002e0| 53 79 73 74 65 6d 73 2c | 20 43 6f 6d 70 69 6c 65 |Systems,| Compile|
|000002f0| 72 73 0a 43 75 70 65 72 | 74 69 6e 6f 2c 20 43 41 |rs.Cuper|tino, CA|
|00000300| 20 39 35 30 31 34 20 20 | 20 20 20 20 20 20 20 20 | 95014 | |
|00000310| 20 20 20 28 34 30 38 29 | 20 32 35 32 2d 30 34 35 | (408)| 252-045|
|00000320| 36 0a 6d 61 72 6b 40 7a | 6f 6b 2e 75 75 63 70 20 |6.mark@z|ok.uucp |
|00000330| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000340| 20 20 57 65 73 74 20 43 | 6f 61 73 74 20 55 55 43 | West C|oast UUC|
|00000350| 50 20 58 31 31 20 61 72 | 63 68 69 76 65 20 73 69 |P X11 ar|chive si|
|00000360| 74 65 0a 0a 49 66 20 79 | 6f 75 72 20 6d 61 69 6c |te..If y|our mail|
|00000370| 65 72 20 64 6f 65 73 6e | 27 74 20 6c 69 6b 65 20 |er doesn|'t like |
|00000380| 74 68 65 20 2e 75 75 63 | 70 20 64 6f 6d 61 69 6e |the .uuc|p domain|
|00000390| 2c 20 74 68 65 73 65 20 | 61 6c 73 6f 20 77 6f 72 |, these |also wor|
|000003a0| 6b 3a 0a 2e 2e 2e 21 7b | 6d 69 70 73 2c 73 67 69 |k:....!{|mips,sgi|
|000003b0| 7d 21 7a 6f 6b 21 6d 61 | 72 6b 2c 20 6d 61 72 6b |}!zok!ma|rk, mark|
|000003c0| 25 7a 6f 6b 40 6d 69 70 | 73 2e 63 6f 6d 2c 20 6d |%zok@mip|s.com, m|
|000003d0| 61 72 6b 25 7a 6f 6b 40 | 73 67 69 2e 63 6f 6d 0a |ark%zok@|sgi.com.|
|000003e0| 0a 2d 2d 2d 3c 63 75 74 | 20 68 65 72 65 3e 2d 2d |.---<cut| here>--|
|000003f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000400| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000410| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000420| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000430| 0a 23 21 20 2f 62 69 6e | 2f 73 68 0a 23 20 54 68 |.#! /bin|/sh.# Th|
|00000440| 69 73 20 69 73 20 61 20 | 73 68 65 6c 6c 20 61 72 |is is a |shell ar|
|00000450| 63 68 69 76 65 2e 20 20 | 52 65 6d 6f 76 65 20 61 |chive. |Remove a|
|00000460| 6e 79 74 68 69 6e 67 20 | 62 65 66 6f 72 65 20 74 |nything |before t|
|00000470| 68 69 73 20 6c 69 6e 65 | 2c 20 74 68 65 6e 20 75 |his line|, then u|
|00000480| 6e 70 61 63 6b 0a 23 20 | 69 74 20 62 79 20 73 61 |npack.# |it by sa|
|00000490| 76 69 6e 67 20 69 74 20 | 69 6e 74 6f 20 61 20 66 |ving it |into a f|
|000004a0| 69 6c 65 20 61 6e 64 20 | 74 79 70 69 6e 67 20 22 |ile and |typing "|
|000004b0| 73 68 20 66 69 6c 65 22 | 2e 20 20 54 6f 20 6f 76 |sh file"|. To ov|
|000004c0| 65 72 77 72 69 74 65 20 | 65 78 69 73 74 69 6e 67 |erwrite |existing|
|000004d0| 0a 23 20 66 69 6c 65 73 | 2c 20 74 79 70 65 20 22 |.# files|, type "|
|000004e0| 73 68 20 66 69 6c 65 20 | 2d 63 22 2e 20 20 59 6f |sh file |-c". Yo|
|000004f0| 75 20 63 61 6e 20 61 6c | 73 6f 20 66 65 65 64 20 |u can al|so feed |
|00000500| 74 68 69 73 20 61 73 20 | 73 74 61 6e 64 61 72 64 |this as |standard|
|00000510| 20 69 6e 70 75 74 20 76 | 69 61 0a 23 20 75 6e 73 | input v|ia.# uns|
|00000520| 68 61 72 2c 20 6f 72 20 | 62 79 20 74 79 70 69 6e |har, or |by typin|
|00000530| 67 20 22 73 68 20 3c 66 | 69 6c 65 22 2c 20 65 2e |g "sh <f|ile", e.|
|00000540| 67 2e 2e 20 20 49 66 20 | 74 68 69 73 20 61 72 63 |g.. If |this arc|
|00000550| 68 69 76 65 20 69 73 20 | 63 6f 6d 70 6c 65 74 65 |hive is |complete|
|00000560| 2c 20 79 6f 75 0a 23 20 | 77 69 6c 6c 20 73 65 65 |, you.# |will see|
|00000570| 20 74 68 65 20 66 6f 6c | 6c 6f 77 69 6e 67 20 6d | the fol|lowing m|
|00000580| 65 73 73 61 67 65 20 61 | 74 20 74 68 65 20 65 6e |essage a|t the en|
|00000590| 64 3a 0a 23 09 09 22 45 | 6e 64 20 6f 66 20 61 72 |d:.#.."E|nd of ar|
|000005a0| 63 68 69 76 65 20 31 20 | 28 6f 66 20 31 29 2e 22 |chive 1 |(of 1)."|
|000005b0| 0a 23 20 43 6f 6e 74 65 | 6e 74 73 3a 20 20 6c 6b |.# Conte|nts: lk|
|000005c0| 74 72 65 65 2e 31 20 6c | 6b 74 72 65 65 2e 63 0a |tree.1 l|ktree.c.|
|000005d0| 23 20 57 72 61 70 70 65 | 64 20 62 79 20 6d 61 72 |# Wrappe|d by mar|
|000005e0| 6b 40 7a 6f 6b 20 6f 6e | 20 57 65 64 20 4f 63 74 |k@zok on| Wed Oct|
|000005f0| 20 33 31 20 32 33 3a 35 | 31 3a 34 31 20 31 39 39 | 31 23:5|1:41 199|
|00000600| 30 0a 50 41 54 48 3d 2f | 62 69 6e 3a 2f 75 73 72 |0.PATH=/|bin:/usr|
|00000610| 2f 62 69 6e 3a 2f 75 73 | 72 2f 75 63 62 20 3b 20 |/bin:/us|r/ucb ; |
|00000620| 65 78 70 6f 72 74 20 50 | 41 54 48 0a 69 66 20 74 |export P|ATH.if t|
|00000630| 65 73 74 20 2d 66 20 27 | 6c 6b 74 72 65 65 2e 31 |est -f '|lktree.1|
|00000640| 27 20 2d 61 20 22 24 7b | 31 7d 22 20 21 3d 20 22 |' -a "${|1}" != "|
|00000650| 2d 63 22 20 3b 20 74 68 | 65 6e 20 0a 20 20 65 63 |-c" ; th|en . ec|
|00000660| 68 6f 20 73 68 61 72 3a | 20 57 69 6c 6c 20 6e 6f |ho shar:| Will no|
|00000670| 74 20 63 6c 6f 62 62 65 | 72 20 65 78 69 73 74 69 |t clobbe|r existi|
|00000680| 6e 67 20 66 69 6c 65 20 | 5c 22 27 6c 6b 74 72 65 |ng file |\"'lktre|
|00000690| 65 2e 31 27 5c 22 0a 65 | 6c 73 65 0a 65 63 68 6f |e.1'\".e|lse.echo|
|000006a0| 20 73 68 61 72 3a 20 45 | 78 74 72 61 63 74 69 6e | shar: E|xtractin|
|000006b0| 67 20 5c 22 27 6c 6b 74 | 72 65 65 2e 31 27 5c 22 |g \"'lkt|ree.1'\"|
|000006c0| 20 5c 28 37 30 31 39 20 | 63 68 61 72 61 63 74 65 | \(7019 |characte|
|000006d0| 72 73 5c 29 0a 73 65 64 | 20 22 73 2f 5e 58 2f 2f |rs\).sed| "s/^X//|
|000006e0| 22 20 3e 27 6c 6b 74 72 | 65 65 2e 31 27 20 3c 3c |" >'lktr|ee.1' <<|
|000006f0| 27 45 4e 44 5f 4f 46 5f | 46 49 4c 45 27 0a 58 2e |'END_OF_|FILE'.X.|
|00000700| 2e 2e 0a 58 2e 2e 2e 20 | 24 48 65 61 64 65 72 3a |...X... |$Header:|
|00000710| 20 2f 77 72 6c 64 2f 36 | 65 35 30 2f 63 65 63 69 | /wrld/6|e50/ceci|
|00000720| 6c 2f 74 6f 6f 6c 73 2f | 52 43 53 2f 6c 6b 74 72 |l/tools/|RCS/lktr|
|00000730| 65 65 2e 31 2c 76 20 31 | 2e 33 20 38 39 2f 30 38 |ee.1,v 1|.3 89/08|
|00000740| 2f 30 34 20 31 37 3a 30 | 33 3a 32 33 20 63 65 63 |/04 17:0|3:23 cec|
|00000750| 69 6c 20 45 78 70 20 24 | 0a 58 2e 2e 2e 20 0a 58 |il Exp $|.X... .X|
|00000760| 2e 2e 2e 20 24 4c 6f 67 | 3a 09 6c 6b 74 72 65 65 |... $Log|:.lktree|
|00000770| 2e 31 2c 76 20 24 0a 58 | 52 65 76 69 73 69 6f 6e |.1,v $.X|Revision|
|00000780| 20 31 2e 33 20 20 38 39 | 2f 30 38 2f 30 34 20 20 | 1.3 89|/08/04 |
|00000790| 31 37 3a 30 33 3a 32 33 | 20 20 63 65 63 69 6c 0a |17:03:23| cecil.|
|000007a0| 58 41 64 64 65 64 20 63 | 6f 6d 6d 65 6e 74 73 20 |XAdded c|omments |
|000007b0| 66 6f 72 20 63 6f 6d 70 | 61 72 69 6e 67 20 6c 6b |for comp|aring lk|
|000007c0| 74 72 65 65 20 74 6f 20 | 27 63 70 20 2d 72 27 20 |tree to |'cp -r' |
|000007d0| 63 6f 6d 6d 61 6e 64 2e | 0a 58 0a 58 52 65 76 69 |command.|.X.XRevi|
|000007e0| 73 69 6f 6e 20 31 2e 32 | 20 20 38 39 2f 30 38 2f |sion 1.2| 89/08/|
|000007f0| 30 34 20 20 30 39 3a 35 | 33 3a 31 31 20 20 63 65 |04 09:5|3:11 ce|
|00000800| 63 69 6c 0a 58 41 64 64 | 65 64 20 69 6e 66 6f 72 |cil.XAdd|ed infor|
|00000810| 6d 61 74 69 6f 6e 20 66 | 6f 72 20 6d 75 6c 74 69 |mation f|or multi|
|00000820| 70 6c 65 20 72 75 6e 73 | 20 6f 66 20 6c 6b 74 72 |ple runs| of lktr|
|00000830| 65 65 20 6f 6e 20 74 68 | 65 20 73 61 6d 65 0a 58 |ee on th|e same.X|
|00000840| 64 65 76 65 6c 6f 70 6d | 65 6e 74 20 74 72 65 65 |developm|ent tree|
|00000850| 2e 0a 58 41 64 64 65 64 | 20 22 73 63 61 72 79 20 |..XAdded| "scary |
|00000860| 6d 65 73 73 61 67 65 73 | 22 20 74 6f 20 42 55 47 |messages|" to BUG|
|00000870| 53 0a 58 41 64 64 65 64 | 20 41 75 74 68 6f 72 20 |S.XAdded| Author |
|00000880| 73 65 63 74 69 6f 6e 20 | 73 69 6e 63 65 20 70 65 |section |since pe|
|00000890| 6f 70 6c 65 20 64 69 64 | 20 6e 6f 74 20 62 65 6c |ople did| not bel|
|000008a0| 69 65 76 65 20 43 65 63 | 69 6c 0a 58 70 72 6f 67 |ieve Cec|il.Xprog|
|000008b0| 72 61 6d 6d 65 64 20 74 | 68 69 73 21 0a 58 0a 58 |rammed t|his!.X.X|
|000008c0| 52 65 76 69 73 69 6f 6e | 20 31 2e 31 20 20 38 39 |Revision| 1.1 89|
|000008d0| 2f 30 38 2f 30 33 20 20 | 31 34 3a 31 37 3a 31 32 |/08/03 |14:17:12|
|000008e0| 20 20 63 65 63 69 6c 0a | 58 49 6e 69 74 69 61 6c | cecil.|XInitial|
|000008f0| 20 72 65 76 69 73 69 6f | 6e 0a 58 0a 58 2e 2e 2e | revisio|n.X.X...|
|00000900| 0a 58 2e 54 48 20 4c 4b | 54 52 45 45 20 31 43 20 |.X.TH LK|TREE 1C |
|00000910| 22 34 20 41 75 67 20 38 | 39 22 0a 58 2e 53 48 20 |"4 Aug 8|9".X.SH |
|00000920| 4e 41 4d 45 0a 58 2e 73 | 70 20 2e 35 0a 58 6c 6b |NAME.X.s|p .5.Xlk|
|00000930| 74 72 65 65 20 5c 2d 20 | 6c 69 6e 6b 20 74 72 65 |tree \- |link tre|
|00000940| 65 20 62 75 69 6c 64 65 | 72 0a 58 2e 53 48 20 53 |e builde|r.X.SH S|
|00000950| 59 4e 4f 50 53 49 53 0a | 58 2e 73 70 20 2e 35 0a |YNOPSIS.|X.sp .5.|
|00000960| 58 2e 42 20 6c 6b 74 72 | 65 65 0a 58 2e 42 20 5b |X.B lktr|ee.X.B [|
|00000970| 0a 58 2e 49 20 5c 20 72 | 6f 6f 74 5f 74 72 65 65 |.X.I \ r|oot_tree|
|00000980| 20 0a 58 2e 42 20 5c 2d | 49 0a 58 2e 49 20 69 6e | .X.B \-|I.X.I in|
|00000990| 63 6c 5f 66 69 6c 65 20 | 0a 58 2e 42 20 5c 20 5c |cl_file |.X.B \ \|
|000009a0| 2d 58 0a 58 2e 49 20 65 | 78 63 6c 5f 66 69 6c 65 |-X.X.I e|xcl_file|
|000009b0| 0a 58 2e 49 20 72 6f 6f | 74 5f 74 72 65 65 20 0a |.X.I roo|t_tree .|
|000009c0| 58 2e 42 20 5d 0a 58 2e | 53 48 20 44 45 53 43 52 |X.B ].X.|SH DESCR|
|000009d0| 49 50 54 49 4f 4e 0a 58 | 2e 49 58 20 20 22 6c 6b |IPTION.X|.IX "lk|
|000009e0| 74 72 65 65 20 63 6f 6d | 6d 61 6e 64 22 20 20 22 |tree com|mand" "|
|000009f0| 22 20 20 22 5c 66 4c 6c | 6b 74 72 65 65 5c 66 50 |" "\fLl|ktree\fP|
|00000a00| 20 5c 28 65 6d 20 6c 69 | 6e 6b 20 74 72 65 65 20 | \(em li|nk tree |
|00000a10| 62 75 69 6c 64 65 72 22 | 0a 58 2e 49 20 6c 6b 74 |builder"|.X.I lkt|
|00000a20| 72 65 65 0a 58 67 65 6e | 65 72 61 74 65 73 20 61 |ree.Xgen|erates a|
|00000a30| 20 74 6f 70 6f 6c 6f 67 | 69 63 61 6c 6c 79 20 65 | topolog|ically e|
|00000a40| 71 75 69 76 61 6c 65 6e | 74 20 74 72 65 65 20 61 |quivalen|t tree a|
|00000a50| 74 20 74 68 65 20 63 75 | 72 72 65 6e 74 20 6c 6f |t the cu|rrent lo|
|00000a60| 63 61 74 69 6f 6e 0a 58 | 74 68 61 74 20 63 6f 72 |cation.X|that cor|
|00000a70| 72 65 73 70 6f 6e 64 73 | 20 74 6f 20 74 68 65 20 |responds| to the |
|00000a80| 64 69 72 65 63 74 6f 72 | 79 20 73 74 72 75 63 74 |director|y struct|
|00000a90| 75 72 65 20 61 74 0a 58 | 2e 49 20 72 6f 6f 74 5f |ure at.X|.I root_|
|00000aa0| 74 72 65 65 0a 58 54 68 | 65 20 0a 58 2e 49 20 69 |tree.XTh|e .X.I i|
|00000ab0| 6e 63 6c 5f 66 69 6c 65 | 20 0a 58 61 6e 64 20 0a |ncl_file| .Xand .|
|00000ac0| 58 2e 49 20 65 78 63 6c | 5f 66 69 6c 65 20 0a 58 |X.I excl|_file .X|
|00000ad0| 61 72 65 20 66 69 6c 65 | 20 6d 61 74 63 68 69 6e |are file| matchin|
|00000ae0| 67 20 61 72 67 75 65 6d | 65 6e 74 73 0a 58 74 68 |g arguem|ents.Xth|
|00000af0| 61 74 20 61 72 65 20 75 | 73 65 64 20 74 6f 20 69 |at are u|sed to i|
|00000b00| 6e 63 6c 75 64 65 20 61 | 6e 64 20 65 78 63 6c 75 |nclude a|nd exclu|
|00000b10| 64 65 20 66 69 6c 65 73 | 20 66 72 6f 6d 20 74 68 |de files| from th|
|00000b20| 65 20 74 72 65 65 0a 58 | 6c 69 6e 6b 69 6e 67 20 |e tree.X|linking |
|00000b30| 6f 70 65 72 61 74 69 6f | 6e 73 2e 0a 58 2e 4c 50 |operatio|ns..X.LP|
|00000b40| 0a 58 2e 49 20 6c 6b 74 | 72 65 65 0a 58 69 73 20 |.X.I lkt|ree.Xis |
|00000b50| 73 69 6d 69 6c 61 72 20 | 74 6f 0a 58 2e 49 20 63 |similar |to.X.I c|
|00000b60| 70 20 5c 2d 72 0a 58 69 | 6e 20 74 68 61 74 20 69 |p \-r.Xi|n that i|
|00000b70| 74 20 72 65 63 75 72 73 | 69 76 65 6c 79 20 63 6f |t recurs|ively co|
|00000b80| 70 69 65 73 20 64 69 72 | 65 63 74 6f 72 79 20 73 |pies dir|ectory s|
|00000b90| 74 72 75 63 74 75 72 65 | 73 2e 20 20 54 68 65 20 |tructure|s. The |
|00000ba0| 64 69 66 66 65 72 65 6e | 63 65 0a 58 69 73 20 74 |differen|ce.Xis t|
|00000bb0| 68 61 74 0a 58 2e 49 20 | 6c 6b 74 72 65 65 0a 58 |hat.X.I |lktree.X|
|00000bc0| 69 73 20 73 65 6c 65 63 | 74 69 76 65 20 69 6e 20 |is selec|tive in |
|00000bd0| 74 68 65 20 66 69 6c 65 | 73 20 69 6e 20 69 6e 63 |the file|s in inc|
|00000be0| 6c 75 64 65 73 20 61 6e | 64 20 65 78 63 6c 75 64 |ludes an|d exclud|
|00000bf0| 65 73 2e 0a 58 2e 49 20 | 6c 6b 74 72 65 65 0a 58 |es..X.I |lktree.X|
|00000c00| 61 6c 73 6f 20 62 75 69 | 6c 64 73 20 6c 69 6e 6b |also bui|lds link|
|00000c10| 73 20 72 61 74 68 65 72 | 20 74 68 61 6e 20 70 65 |s rather| than pe|
|00000c20| 72 66 6f 72 6d 69 6e 67 | 20 66 69 6c 65 20 63 6f |rforming| file co|
|00000c30| 70 69 65 73 2e 0a 58 2e | 49 20 6c 6b 74 72 65 65 |pies..X.|I lktree|
|00000c40| 0a 58 6b 6e 6f 77 73 20 | 74 68 61 74 0a 58 2e 42 |.Xknows |that.X.B|
|00000c50| 20 52 43 53 0a 58 77 69 | 6c 6c 20 62 65 20 75 73 | RCS.Xwi|ll be us|
|00000c60| 65 64 20 74 6f 20 6d 61 | 69 6e 74 61 69 6e 20 61 |ed to ma|intain a|
|00000c70| 20 70 72 6f 67 72 61 6d | 6d 69 6e 67 20 64 65 76 | program|ming dev|
|00000c80| 65 6c 6f 70 6d 65 6e 74 | 20 73 79 73 74 65 6d 20 |elopment| system |
|00000c90| 66 6f 72 20 75 73 65 0a | 58 62 79 20 6d 75 6c 74 |for use.|Xby mult|
|00000ca0| 69 70 6c 65 20 70 72 6f | 67 72 61 6d 6d 65 72 73 |iple pro|grammers|
|00000cb0| 2e 20 20 54 68 75 73 20 | 61 6c 6c 0a 58 2e 42 20 |. Thus |all.X.B |
|00000cc0| 52 43 53 0a 58 64 69 72 | 65 63 74 6f 72 69 65 73 |RCS.Xdir|ectories|
|00000cd0| 20 61 72 65 20 6c 69 6e | 6b 65 64 20 74 6f 20 74 | are lin|ked to t|
|00000ce0| 68 65 20 6f 72 69 67 69 | 6e 61 6c 20 64 65 76 65 |he origi|nal deve|
|00000cf0| 6c 6f 70 6d 65 6e 74 20 | 74 72 65 65 20 77 68 69 |lopment |tree whi|
|00000d00| 6c 65 0a 58 61 6c 6c 20 | 6f 74 68 65 72 20 64 69 |le.Xall |other di|
|00000d10| 72 65 63 74 6f 72 69 65 | 73 20 61 72 65 20 61 63 |rectorie|s are ac|
|00000d20| 74 75 61 6c 6c 79 20 63 | 72 65 61 74 65 64 20 69 |tually c|reated i|
|00000d30| 6e 20 74 68 65 20 70 72 | 6f 67 72 61 6d 6d 65 72 |n the pr|ogrammer|
|00000d40| 73 0a 58 61 72 65 61 2e | 20 20 54 68 69 73 20 61 |s.Xarea.| This a|
|00000d50| 6c 6c 6f 77 73 20 66 6f | 72 20 6e 61 74 75 72 61 |llows fo|r natura|
|00000d60| 6c 20 75 73 65 20 6f 66 | 0a 58 2e 42 20 52 43 53 |l use of|.X.B RCS|
|00000d70| 0a 58 63 6f 6d 6d 61 6e | 64 73 20 74 68 61 74 20 |.Xcomman|ds that |
|00000d80| 61 72 65 20 28 68 6f 70 | 65 66 75 6c 6c 79 29 20 |are (hop|efully) |
|00000d90| 74 72 61 6e 73 70 61 72 | 65 6e 74 20 74 6f 20 64 |transpar|ent to d|
|00000da0| 65 76 65 6c 6f 70 6d 65 | 6e 74 2e 0a 58 2e 4c 50 |evelopme|nt..X.LP|
|00000db0| 0a 58 49 66 20 61 0a 58 | 2e 49 20 72 6f 6f 74 5f |.XIf a.X|.I root_|
|00000dc0| 74 72 65 65 0a 58 64 6f | 65 73 20 6e 6f 74 20 65 |tree.Xdo|es not e|
|00000dd0| 78 69 73 74 2c 20 74 68 | 65 20 65 6e 76 69 72 6f |xist, th|e enviro|
|00000de0| 6e 6d 65 6e 74 20 76 61 | 72 69 61 62 6c 65 0a 58 |nment va|riable.X|
|00000df0| 2e 42 49 20 22 52 4f 4f | 54 5f 54 52 45 45 22 0a |.BI "ROO|T_TREE".|
|00000e00| 58 69 73 20 75 73 65 64 | 20 74 6f 20 61 6e 63 68 |Xis used| to anch|
|00000e10| 6f 72 20 74 68 65 20 74 | 6f 70 6f 6c 6f 67 69 63 |or the t|opologic|
|00000e20| 61 6c 20 73 74 72 75 63 | 74 75 72 65 2e 0a 58 2e |al struc|ture..X.|
|00000e30| 42 49 20 22 52 4f 4f 54 | 5f 54 52 45 45 22 0a 58 |BI "ROOT|_TREE".X|
|00000e40| 69 73 20 75 73 65 64 20 | 74 6f 20 70 72 6f 76 69 |is used |to provi|
|00000e50| 64 65 20 65 61 73 79 20 | 74 72 61 6e 73 69 74 69 |de easy |transiti|
|00000e60| 6f 6e 20 74 6f 20 6d 75 | 6c 74 69 70 6c 65 20 70 |on to mu|ltiple p|
|00000e70| 72 6f 6a 65 63 74 73 0a | 58 69 6e 20 61 20 70 6f |rojects.|Xin a po|
|00000e80| 72 74 61 62 6c 65 2c 20 | 63 6f 6e 66 69 67 75 72 |rtable, |configur|
|00000e90| 61 62 6c 65 20 6d 61 6e | 6e 65 72 2e 0a 58 2e 4c |able man|ner..X.L|
|00000ea0| 50 0a 58 54 68 65 0a 58 | 2e 49 20 72 6f 6f 74 5f |P.XThe.X|.I root_|
|00000eb0| 74 72 65 65 0a 58 73 68 | 6f 75 6c 64 20 62 65 20 |tree.Xsh|ould be |
|00000ec0| 61 20 66 75 6c 6c 79 20 | 71 75 61 6c 69 66 69 65 |a fully |qualifie|
|00000ed0| 64 20 64 69 72 65 63 74 | 6f 72 79 20 6e 61 6d 65 |d direct|ory name|
|00000ee0| 20 66 6f 72 20 61 20 63 | 75 72 72 65 6e 74 6c 79 | for a c|urrently|
|00000ef0| 0a 58 65 78 69 73 74 69 | 6e 67 20 64 69 72 65 63 |.Xexisti|ng direc|
|00000f00| 74 6f 72 79 2e 20 20 49 | 74 20 69 73 20 61 6e 20 |tory. I|t is an |
|00000f10| 65 72 72 6f 72 20 74 6f | 20 64 6f 20 6f 74 68 65 |error to| do othe|
|00000f20| 72 77 69 73 65 2e 0a 58 | 2e 49 52 20 69 6e 63 6c |rwise..X|.IR incl|
|00000f30| 5f 66 69 6c 65 0a 58 61 | 6e 64 0a 58 2e 49 52 20 |_file.Xa|nd.X.IR |
|00000f40| 65 78 63 6c 5f 66 69 6c | 65 0a 58 64 6f 20 6e 6f |excl_fil|e.Xdo no|
|00000f50| 74 20 68 61 76 65 20 74 | 6f 20 62 65 20 70 72 65 |t have t|o be pre|
|00000f60| 73 65 6e 74 2e 20 20 49 | 66 20 74 68 65 73 65 20 |sent. I|f these |
|00000f70| 74 77 6f 20 66 69 6c 65 | 73 20 61 72 65 0a 58 6d |two file|s are.Xm|
|00000f80| 69 73 73 69 6e 67 20 74 | 68 65 6e 20 61 6e 20 6f |issing t|hen an o|
|00000f90| 70 65 6e 20 61 74 74 65 | 6d 70 74 20 69 73 20 6d |pen atte|mpt is m|
|00000fa0| 61 64 65 20 6f 6e 20 0a | 58 2e 42 49 20 24 52 4f |ade on .|X.BI $RO|
|00000fb0| 4f 54 5f 54 52 45 45 0a | 58 2f 69 6e 63 6c 5f 66 |OT_TREE.|X/incl_f|
|00000fc0| 69 6c 65 0a 58 61 6e 64 | 20 0a 58 2e 42 49 20 24 |ile.Xand| .X.BI $|
|00000fd0| 52 4f 4f 54 5f 54 52 45 | 45 0a 58 2f 65 78 63 6c |ROOT_TRE|E.X/excl|
|00000fe0| 5f 66 69 6c 65 2e 20 20 | 54 68 69 73 20 61 6c 6c |_file. |This all|
|00000ff0| 6f 77 73 20 64 65 66 61 | 75 6c 74 69 6e 67 0a 58 |ows defa|ulting.X|
|00001000| 6f 66 20 74 68 65 20 6e | 6f 6e 2d 65 73 73 65 6e |of the n|on-essen|
|00001010| 74 69 61 6c 20 66 69 6c | 65 73 20 69 6e 20 61 20 |tial fil|es in a |
|00001020| 70 72 6f 6a 65 63 74 2d | 77 69 64 65 20 6d 61 6e |project-|wide man|
|00001030| 6e 65 72 2e 0a 58 0a 58 | 2e 49 20 6c 6b 74 72 65 |ner..X.X|.I lktre|
|00001040| 65 0a 58 69 73 20 64 65 | 73 69 67 6e 65 64 20 74 |e.Xis de|signed t|
|00001050| 6f 20 62 65 20 75 73 65 | 64 20 77 69 74 68 20 6e |o be use|d with n|
|00001060| 6f 20 70 61 72 61 6d 65 | 74 65 72 73 3b 20 69 74 |o parame|ters; it|
|00001070| 20 69 73 20 74 68 65 0a | 58 72 65 73 70 6f 6e 73 | is the.|Xrespons|
|00001080| 69 62 69 6c 69 74 79 20 | 6f 66 20 74 68 65 20 73 |ibility |of the s|
|00001090| 79 73 74 65 6d 20 61 64 | 6d 69 6e 73 74 72 61 74 |ystem ad|minstrat|
|000010a0| 6f 72 20 74 6f 20 63 6f | 6e 66 69 67 75 72 65 0a |or to co|nfigure.|
|000010b0| 58 70 72 6f 67 72 61 6d | 6d 65 72 20 2e 63 73 68 |Xprogram|mer .csh|
|000010c0| 72 63 20 66 69 6c 65 73 | 20 74 6f 20 63 6f 6e 74 |rc files| to cont|
|000010d0| 61 69 6e 20 74 68 65 20 | 6e 65 63 65 73 73 61 72 |ain the |necessar|
|000010e0| 79 0a 58 65 6e 76 69 72 | 6f 6e 6d 65 6e 74 2e 20 |y.Xenvir|onment. |
|000010f0| 20 50 72 6f 67 72 61 6d | 6d 65 72 73 20 77 6f 72 | Program|mers wor|
|00001100| 6b 69 6e 67 20 6f 6e 20 | 6d 75 6c 74 69 70 6c 65 |king on |multiple|
|00001110| 0a 58 70 72 6f 6a 65 63 | 74 73 20 73 68 6f 75 6c |.Xprojec|ts shoul|
|00001120| 64 20 61 63 63 65 73 73 | 20 74 68 65 20 0a 58 2e |d access| the .X.|
|00001130| 42 49 20 52 4f 4f 54 5f | 54 52 45 45 0a 58 2f 2e |BI ROOT_|TREE.X/.|
|00001140| 63 73 68 72 63 20 66 6f | 72 20 70 61 72 74 69 63 |cshrc fo|r partic|
|00001150| 75 6c 61 72 20 74 72 65 | 65 20 6e 65 65 64 65 64 |ular tre|e needed|
|00001160| 2e 20 20 54 68 65 20 6c | 6f 63 61 6c 20 70 72 6f |. The l|ocal pro|
|00001170| 6a 65 63 74 20 0a 58 2e | 42 49 20 52 4f 4f 54 5f |ject .X.|BI ROOT_|
|00001180| 54 52 45 45 0a 58 2f 2e | 63 73 68 72 63 0a 58 63 |TREE.X/.|cshrc.Xc|
|00001190| 6f 6e 74 61 69 6e 73 20 | 74 68 65 20 65 6e 76 69 |ontains |the envi|
|000011a0| 72 6f 6e 6d 65 6e 74 61 | 6c 20 73 65 74 74 69 6e |ronmenta|l settin|
|000011b0| 67 20 74 6f 20 61 63 63 | 65 73 73 20 65 76 65 72 |g to acc|ess ever|
|000011c0| 79 74 68 69 6e 67 0a 58 | 61 62 6f 75 74 20 74 68 |ything.X|about th|
|000011d0| 61 74 20 70 72 6f 6a 65 | 63 74 2e 0a 58 2e 4c 50 |at proje|ct..X.LP|
|000011e0| 0a 58 2e 42 20 52 43 53 | 0a 58 64 69 72 65 63 74 |.X.B RCS|.Xdirect|
|000011f0| 6f 72 69 65 73 20 61 72 | 65 20 61 20 73 70 65 63 |ories ar|e a spec|
|00001200| 61 69 6c 20 63 61 73 65 | 2e 20 20 54 68 65 20 69 |ail case|. The i|
|00001210| 6e 74 65 6e 74 20 6f 66 | 20 74 68 69 73 20 75 74 |ntent of| this ut|
|00001220| 69 6c 69 74 79 0a 58 69 | 73 20 74 6f 20 70 72 6f |ility.Xi|s to pro|
|00001230| 76 69 64 65 20 61 20 63 | 6f 6e 76 65 6e 69 65 6e |vide a c|onvenien|
|00001240| 74 20 6d 65 74 68 6f 64 | 20 66 6f 72 20 70 72 6f |t method| for pro|
|00001250| 67 72 61 6d 6d 65 72 73 | 20 74 6f 20 0a 58 68 61 |grammers| to .Xha|
|00001260| 76 65 20 73 65 70 61 72 | 61 74 65 20 64 65 76 65 |ve separ|ate deve|
|00001270| 6c 6f 70 6d 65 6e 74 20 | 74 72 65 65 73 20 61 6e |lopment |trees an|
|00001280| 64 20 74 6f 20 75 73 65 | 20 0a 58 2e 42 20 52 43 |d to use| .X.B RC|
|00001290| 53 0a 58 61 73 20 61 20 | 62 61 63 6b 75 70 20 66 |S.Xas a |backup f|
|000012a0| 65 61 74 75 72 65 20 61 | 6e 64 20 63 6f 6e 66 69 |eature a|nd confi|
|000012b0| 67 75 72 61 74 69 6f 6e | 20 6d 61 6e 61 67 65 6d |guration| managem|
|000012c0| 65 6e 74 20 75 74 69 6c | 69 74 79 2e 0a 58 2e 42 |ent util|ity..X.B|
|000012d0| 20 52 43 53 0a 58 69 73 | 20 61 6c 73 6f 20 75 73 | RCS.Xis| also us|
|000012e0| 65 64 20 74 6f 20 69 6e | 73 75 72 65 20 74 68 61 |ed to in|sure tha|
|000012f0| 74 20 6f 6e 6c 79 20 6f | 6e 65 20 70 72 6f 67 72 |t only o|ne progr|
|00001300| 61 6d 6d 65 72 20 61 74 | 20 61 20 74 69 6d 65 20 |ammer at| a time |
|00001310| 68 61 73 0a 58 61 20 66 | 69 6c 65 20 63 68 65 63 |has.Xa f|ile chec|
|00001320| 6b 65 64 20 6f 75 74 2e | 0a 58 2e 4c 50 0a 58 57 |ked out.|.X.LP.XW|
|00001330| 69 74 68 20 74 68 65 20 | 6c 69 6e 6b 65 64 0a 58 |ith the |linked.X|
|00001340| 2e 42 20 52 43 53 0a 58 | 64 69 72 65 63 74 6f 72 |.B RCS.X|director|
|00001350| 79 20 74 68 65 20 70 72 | 6f 67 72 61 6d 6d 65 72 |y the pr|ogrammer|
|00001360| 20 68 61 73 20 65 61 73 | 79 20 61 63 63 65 73 73 | has eas|y access|
|00001370| 20 74 6f 20 74 68 65 0a | 58 2e 42 20 52 43 53 0a | to the.|X.B RCS.|
|00001380| 58 2e 49 20 63 6f 0a 58 | 61 6e 64 0a 58 2e 49 20 |X.I co.X|and.X.I |
|00001390| 63 69 0a 58 75 74 69 6c | 69 74 69 65 73 2e 0a 58 |ci.Xutil|ities..X|
|000013a0| 41 66 74 65 72 20 62 75 | 69 6c 64 69 6e 67 20 74 |After bu|ilding t|
|000013b0| 68 65 20 6c 69 6e 6b 20 | 74 72 65 65 2c 20 74 68 |he link |tree, th|
|000013c0| 65 20 70 72 6f 67 72 61 | 6d 6d 65 72 20 77 69 6c |e progra|mmer wil|
|000013d0| 6c 20 6e 6f 74 69 63 65 | 20 74 68 61 74 0a 58 61 |l notice| that.Xa|
|000013e0| 6c 6c 20 66 69 6c 65 73 | 20 61 72 65 20 6c 69 6e |ll files| are lin|
|000013f0| 6b 65 64 20 74 6f 0a 58 | 2e 42 20 24 52 4f 4f 54 |ked to.X|.B $ROOT|
|00001400| 5f 54 52 45 45 0a 58 66 | 69 6c 65 73 2c 20 77 68 |_TREE.Xf|iles, wh|
|00001410| 69 6c 65 20 74 68 65 20 | 70 72 6f 67 72 61 6d 6d |ile the |programm|
|00001420| 65 72 20 68 61 73 20 74 | 72 75 65 20 64 69 72 65 |er has t|rue dire|
|00001430| 63 74 6f 72 69 65 73 2e | 20 20 46 75 72 74 68 65 |ctories.| Furthe|
|00001440| 72 6d 6f 72 65 2c 0a 58 | 52 43 53 20 65 78 69 73 |rmore,.X|RCS exis|
|00001450| 74 73 20 61 73 20 61 20 | 6c 69 6e 6b 2c 20 6e 6f |ts as a |link, no|
|00001460| 74 20 61 73 20 61 20 64 | 69 72 65 63 74 6f 72 79 |t as a d|irectory|
|00001470| 2e 20 20 54 68 69 73 20 | 6c 69 6e 6b 20 61 6c 6c |. This |link all|
|00001480| 6f 77 73 0a 58 6d 75 6c | 74 69 70 6c 65 20 70 72 |ows.Xmul|tiple pr|
|00001490| 6f 67 72 61 6d 6d 65 72 | 73 20 74 6f 20 63 68 65 |ogrammer|s to che|
|000014a0| 63 6b 20 6f 75 74 20 52 | 43 53 20 66 69 6c 65 73 |ck out R|CS files|
|000014b0| 20 69 6e 20 61 6e 20 6f | 72 64 65 72 6c 79 20 6d | in an o|rderly m|
|000014c0| 61 6e 6e 65 72 2e 0a 58 | 41 66 74 65 72 20 64 65 |anner..X|After de|
|000014d0| 76 65 6c 6f 70 69 6e 67 | 20 61 6e 64 20 61 64 64 |veloping| and add|
|000014e0| 69 6e 67 20 6d 6f 64 75 | 6c 65 73 20 74 6f 20 74 |ing modu|les to t|
|000014f0| 68 65 20 72 6f 6f 74 20 | 74 72 65 65 0a 58 74 68 |he root |tree.Xth|
|00001500| 65 20 6e 65 77 20 6d 6f | 64 75 6c 65 73 20 6d 75 |e new mo|dules mu|
|00001510| 73 74 20 62 65 20 64 69 | 73 74 72 69 62 75 74 65 |st be di|stribute|
|00001520| 64 20 74 6f 20 74 68 65 | 20 64 65 76 65 6c 6f 70 |d to the| develop|
|00001530| 6d 65 6e 74 20 74 65 61 | 6d 2e 0a 58 54 68 65 20 |ment tea|m..XThe |
|00001540| 69 73 20 64 6f 6e 65 20 | 62 79 20 73 69 6d 70 6c |is done |by simpl|
|00001550| 79 20 72 75 6e 6e 69 6e | 67 0a 58 2e 49 20 6c 6b |y runnin|g.X.I lk|
|00001560| 74 72 65 65 0a 58 6f 6e | 63 65 20 61 67 61 69 6e |tree.Xon|ce again|
|00001570| 20 69 6e 20 65 61 63 68 | 20 64 65 76 65 6c 6f 70 | in each| develop|
|00001580| 65 72 27 73 20 62 61 73 | 65 20 64 65 76 65 6c 6f |er's bas|e develo|
|00001590| 70 6d 65 6e 74 20 64 69 | 72 65 63 74 6f 72 79 2e |pment di|rectory.|
|000015a0| 0a 58 54 68 69 73 20 77 | 69 6c 6c 20 22 72 65 66 |.XThis w|ill "ref|
|000015b0| 72 65 73 68 22 20 74 68 | 65 20 64 65 76 65 6c 6f |resh" th|e develo|
|000015c0| 70 65 72 27 73 20 74 72 | 65 65 20 74 6f 20 6d 61 |per's tr|ee to ma|
|000015d0| 74 63 68 20 74 68 65 0a | 58 2e 42 20 24 52 4f 4f |tch the.|X.B $ROO|
|000015e0| 54 5f 54 52 45 45 0a 58 | 66 69 6c 65 73 2e 20 53 |T_TREE.X|files. S|
|000015f0| 70 65 63 69 66 69 63 61 | 6c 6c 79 20 66 69 6c 65 |pecifica|lly file|
|00001600| 73 20 74 68 61 74 20 61 | 72 65 20 6c 6f 63 6b 65 |s that a|re locke|
|00001610| 64 20 62 79 20 64 65 76 | 65 6c 6f 70 65 72 73 0a |d by dev|elopers.|
|00001620| 58 77 69 6c 6c 20 6e 6f | 74 20 62 65 20 64 69 73 |Xwill no|t be dis|
|00001630| 74 75 72 62 65 64 2e 0a | 58 2e 4c 50 0a 58 50 72 |turbed..|X.LP.XPr|
|00001640| 6f 67 72 61 6d 6d 65 72 | 73 20 77 69 6c 6c 20 6e |ogrammer|s will n|
|00001650| 6f 74 65 20 74 68 61 74 | 20 6f 62 6a 65 63 74 20 |ote that| object |
|00001660| 66 69 6c 65 73 20 61 72 | 65 20 6e 65 69 74 68 65 |files ar|e neithe|
|00001670| 72 20 63 6f 70 69 65 64 | 0a 58 6e 6f 72 20 73 79 |r copied|.Xnor sy|
|00001680| 6d 62 6f 6c 69 63 61 6c | 6c 79 20 6c 69 6e 6b 65 |mbolical|ly linke|
|00001690| 64 2e 20 20 54 68 69 73 | 20 61 6c 6c 6f 77 73 20 |d. This| allows |
|000016a0| 69 6e 64 69 76 69 64 75 | 61 6c 20 70 72 6f 67 72 |individu|al progr|
|000016b0| 61 6d 6d 65 72 73 0a 58 | 74 6f 20 68 61 76 65 20 |ammers.X|to have |
|000016c0| 74 68 65 69 72 20 6f 77 | 6e 20 63 6f 70 79 20 6f |their ow|n copy o|
|000016d0| 66 20 61 6e 20 6f 62 6a | 65 63 74 20 66 69 6c 65 |f an obj|ect file|
|000016e0| 2e 20 45 61 63 68 20 70 | 72 6f 67 72 61 6d 6d 65 |. Each p|rogramme|
|000016f0| 72 0a 58 6d 75 73 74 20 | 22 6d 61 6b 65 22 20 68 |r.Xmust |"make" h|
|00001700| 69 73 20 6f 77 6e 20 74 | 72 65 65 20 69 6e 20 6f |is own t|ree in o|
|00001710| 72 64 65 72 20 74 6f 20 | 6f 62 74 61 69 6e 20 65 |rder to |obtain e|
|00001720| 78 65 63 75 74 61 62 6c | 65 73 2e 0a 58 2e 4c 50 |xecutabl|es..X.LP|
|00001730| 0a 58 2e 49 20 69 6e 63 | 6c 5f 66 69 6c 65 0a 58 |.X.I inc|l_file.X|
|00001740| 69 73 20 6e 6f 72 6d 61 | 6c 6c 79 20 69 6e 20 74 |is norma|lly in t|
|00001750| 68 65 20 0a 58 2e 42 49 | 20 52 4f 4f 54 5f 54 52 |he .X.BI| ROOT_TR|
|00001760| 45 45 0a 58 64 69 72 65 | 63 74 6f 72 79 20 61 6e |EE.Xdire|ctory an|
|00001770| 64 20 63 6f 6e 74 61 69 | 6e 73 20 61 6e 20 0a 58 |d contai|ns an .X|
|00001780| 2e 49 20 66 67 72 65 70 | 20 0a 58 6c 69 73 74 20 |.I fgrep| .Xlist |
|00001790| 6f 66 20 66 69 6c 65 73 | 20 74 6f 20 62 65 0a 58 |of files| to be.X|
|000017a0| 69 6e 63 6c 75 64 65 64 | 20 69 6e 20 74 68 65 20 |included| in the |
|000017b0| 6c 69 6e 6b 69 6e 67 20 | 6f 70 65 72 61 74 69 6f |linking |operatio|
|000017c0| 6e 2e 20 41 6e 20 65 78 | 61 6d 70 6c 65 20 74 68 |n. An ex|ample th|
|000017d0| 61 74 20 73 65 6c 65 63 | 74 73 0a 58 61 6c 6c 20 |at selec|ts.Xall |
|000017e0| 63 2c 20 68 20 61 6e 64 | 20 6d 61 6b 65 66 69 6c |c, h and| makefil|
|000017f0| 65 73 20 69 73 3a 0a 58 | 2e 52 53 0a 58 2e 6e 66 |es is:.X|.RS.X.nf|
|00001800| 0a 58 2e 63 63 20 40 0a | 58 2e 63 0a 58 6d 61 6b |.X.cc @.|X.c.Xmak|
|00001810| 65 0a 58 2e 68 0a 58 40 | 63 63 20 2e 0a 58 2e 66 |e.X.h.X@|cc ..X.f|
|00001820| 69 0a 58 2e 52 45 0a 58 | 54 68 65 20 6c 65 61 64 |i.X.RE.X|The lead|
|00001830| 69 6e 67 20 70 65 72 69 | 6f 64 20 69 6e 73 75 72 |ing peri|od insur|
|00001840| 65 73 20 74 68 61 74 20 | 66 69 6c 65 73 20 74 68 |es that |files th|
|00001850| 65 20 22 64 6f 74 20 63 | 20 61 6e 64 20 68 22 20 |e "dot c| and h" |
|00001860| 66 69 6c 65 73 0a 58 61 | 72 65 20 74 68 65 20 66 |files.Xa|re the f|
|00001870| 69 6c 65 73 20 73 65 6c | 65 63 74 65 64 2c 20 6e |iles sel|ected, n|
|00001880| 6f 74 20 66 69 6c 65 73 | 20 74 68 61 74 20 73 69 |ot files| that si|
|00001890| 6d 70 6c 79 20 63 6f 6e | 74 61 69 6e 20 61 20 63 |mply con|tain a c|
|000018a0| 20 6f 72 20 68 2e 0a 58 | 0a 58 2e 49 20 65 78 63 | or h..X|.X.I exc|
|000018b0| 6c 5f 66 69 6c 65 0a 58 | 69 73 20 6e 6f 72 6d 61 |l_file.X|is norma|
|000018c0| 6c 6c 79 20 69 6e 20 74 | 68 65 20 0a 58 2e 42 49 |lly in t|he .X.BI|
|000018d0| 20 52 4f 4f 54 5f 54 52 | 45 45 20 0a 58 64 69 72 | ROOT_TR|EE .Xdir|
|000018e0| 65 63 74 6f 72 79 20 61 | 6e 64 20 63 6f 6e 74 61 |ectory a|nd conta|
|000018f0| 69 6e 73 20 61 0a 58 73 | 69 6d 69 6c 61 72 20 66 |ins a.Xs|imilar f|
|00001900| 67 72 65 70 20 66 69 6c | 65 20 6f 66 20 66 69 6c |grep fil|e of fil|
|00001910| 65 73 20 74 6f 20 62 65 | 20 65 78 63 6c 75 64 65 |es to be| exclude|
|00001920| 64 20 74 6f 20 74 68 65 | 20 6c 69 6e 6b 0a 58 74 |d to the| link.Xt|
|00001930| 72 65 65 20 62 65 69 6e | 67 20 62 75 69 6c 74 2e |ree bein|g built.|
|00001940| 20 20 54 68 65 20 0a 58 | 2e 49 20 65 78 63 6c 5f | The .X|.I excl_|
|00001950| 66 69 6c 65 20 0a 58 69 | 73 20 61 70 70 6c 69 65 |file .Xi|s applie|
|00001960| 64 20 74 6f 20 74 68 65 | 20 66 69 6c 65 20 63 61 |d to the| file ca|
|00001970| 6e 64 69 64 61 74 65 73 | 20 61 66 74 65 72 20 0a |ndidates| after .|
|00001980| 58 2e 49 20 69 6e 63 6c | 5f 66 69 6c 65 0a 58 73 |X.I incl|_file.Xs|
|00001990| 65 6c 65 63 74 73 20 61 | 20 6c 69 73 74 20 6f 66 |elects a| list of|
|000019a0| 20 70 6f 73 73 69 62 6c | 65 20 63 61 6e 64 69 64 | possibl|e candid|
|000019b0| 61 74 65 73 20 74 6f 20 | 6c 69 6e 6b 69 6e 67 2e |ates to |linking.|
|000019c0| 0a 58 54 68 65 0a 58 2e | 49 20 65 78 63 6c 5f 66 |.XThe.X.|I excl_f|
|000019d0| 69 6c 65 0a 58 69 73 20 | 6d 65 61 6e 74 20 74 6f |ile.Xis |meant to|
|000019e0| 20 65 78 63 6c 75 64 65 | 20 64 69 72 65 63 74 6f | exclude| directo|
|000019f0| 72 69 65 73 20 73 75 63 | 68 20 61 73 20 0a 58 2e |ries suc|h as .X.|
|00001a00| 42 20 53 43 43 53 0a 58 | 66 72 6f 6d 20 6c 69 6e |B SCCS.X|from lin|
|00001a10| 6b 69 6e 67 2e 20 20 41 | 6e 20 65 78 61 6d 70 6c |king. A|n exampl|
|00001a20| 65 20 74 68 61 74 20 65 | 78 63 6c 75 64 65 73 20 |e that e|xcludes |
|00001a30| 61 6c 6c 20 0a 58 2e 42 | 20 53 43 43 53 20 0a 58 |all .X.B| SCCS .X|
|00001a40| 64 69 72 65 63 74 6f 72 | 69 65 73 2c 0a 58 61 6c |director|ies,.Xal|
|00001a50| 6c 20 0a 58 2e 42 20 42 | 41 4b 20 0a 58 66 69 6c |l .X.B B|AK .Xfil|
|00001a60| 65 73 20 28 61 73 20 6f | 75 74 70 75 74 20 66 72 |es (as o|utput fr|
|00001a70| 6f 6d 0a 58 2e 49 20 69 | 6e 64 65 6e 74 0a 58 29 |om.X.I i|ndent.X)|
|00001a80| 2c 20 61 6e 64 20 6d 69 | 73 63 65 6c 6c 61 6e 65 |, and mi|scellane|
|00001a90| 6f 75 73 20 6e 6f 6e 2d | 65 73 73 65 6e 74 69 61 |ous non-|essentia|
|00001aa0| 6c 20 66 69 6c 65 73 20 | 28 67 65 6e 65 72 61 74 |l files |(generat|
|00001ab0| 65 64 20 62 79 20 63 72 | 6f 73 73 20 63 6f 6d 70 |ed by cr|oss comp|
|00001ac0| 69 6c 65 72 73 29 3a 0a | 58 2e 52 53 0a 58 2e 6e |ilers):.|X.RS.X.n|
|00001ad0| 66 0a 58 53 43 43 53 0a | 58 42 41 4b 0a 58 6c 73 |f.XSCCS.|XBAK.Xls|
|00001ae0| 74 0a 58 6f 62 6a 0a 58 | 6d 72 67 0a 58 78 72 66 |t.Xobj.X|mrg.Xxrf|
|00001af0| 0a 58 63 72 66 0a 58 2e | 66 69 0a 58 2e 52 45 0a |.Xcrf.X.|fi.X.RE.|
|00001b00| 58 2e 53 48 20 46 49 4c | 45 53 0a 58 44 65 66 61 |X.SH FIL|ES.XDefa|
|00001b10| 75 6c 74 20 66 69 6c 65 | 73 20 61 72 65 20 61 73 |ult file|s are as|
|00001b20| 73 75 6d 65 64 20 69 6e | 20 74 68 65 20 65 6e 76 |sumed in| the env|
|00001b30| 69 72 6f 6e 6d 65 6e 74 | 20 72 6f 6f 74 20 74 72 |ironment| root tr|
|00001b40| 65 65 0a 58 2e 42 49 20 | 24 52 4f 4f 54 5f 54 52 |ee.X.BI |$ROOT_TR|
|00001b50| 45 45 2e 0a 58 2e 49 20 | 69 6e 63 6c 5f 66 69 6c |EE..X.I |incl_fil|
|00001b60| 65 0a 58 61 6e 64 20 0a | 58 2e 49 20 65 78 63 6c |e.Xand .|X.I excl|
|00001b70| 5f 66 69 6c 65 0a 58 61 | 72 65 20 64 65 66 69 6e |_file.Xa|re defin|
|00001b80| 65 64 20 62 79 20 74 68 | 65 20 63 6f 6e 66 69 67 |ed by th|e config|
|00001b90| 75 72 61 74 69 6f 6e 20 | 6d 61 6e 61 67 65 72 2e |uration |manager.|
|00001ba0| 0a 58 2e 42 49 20 24 52 | 4f 4f 54 5f 54 52 45 45 |.X.BI $R|OOT_TREE|
|00001bb0| 0a 58 69 74 73 65 6c 66 | 20 69 73 20 61 6e 20 65 |.Xitself| is an e|
|00001bc0| 6e 76 69 72 6f 6e 6d 65 | 6e 74 61 6c 20 76 61 72 |nvironme|ntal var|
|00001bd0| 69 61 62 6c 65 20 74 68 | 61 74 20 69 73 20 61 20 |iable th|at is a |
|00001be0| 64 69 72 65 63 74 6f 72 | 79 20 74 6f 20 74 68 65 |director|y to the|
|00001bf0| 0a 58 62 61 73 65 6c 69 | 6e 65 20 6f 66 20 73 6f |.Xbaseli|ne of so|
|00001c00| 75 72 63 65 20 63 6f 64 | 65 20 74 6f 20 62 65 20 |urce cod|e to be |
|00001c10| 75 73 65 64 20 62 79 20 | 6d 75 6c 74 69 70 6c 65 |used by |multiple|
|00001c20| 0a 58 70 72 6f 67 72 61 | 6d 6d 65 72 73 20 69 6e |.Xprogra|mmers in|
|00001c30| 20 73 6f 66 74 77 61 72 | 65 20 64 65 76 65 6c 6f | softwar|e develo|
|00001c40| 70 6d 65 6e 74 2e 20 20 | 49 74 20 69 73 20 6e 6f |pment. |It is no|
|00001c50| 74 20 6e 65 63 65 73 73 | 61 72 69 6c 79 0a 58 72 |t necess|arily.Xr|
|00001c60| 65 73 74 72 69 63 74 65 | 64 20 74 6f 20 70 75 72 |estricte|d to pur|
|00001c70| 65 20 63 6f 64 65 2c 20 | 62 75 74 20 6d 61 79 20 |e code, |but may |
|00001c80| 61 6c 73 6f 20 69 6e 63 | 6c 75 64 65 20 64 6f 63 |also inc|lude doc|
|00001c90| 75 6d 65 6e 74 61 74 69 | 6f 6e 2e 0a 58 2e 53 48 |umentati|on..X.SH|
|00001ca0| 20 41 55 54 48 4f 52 0a | 58 43 65 63 69 6c 20 4d | AUTHOR.|XCecil M|
|00001cb0| 63 47 72 65 67 6f 72 0a | 58 2e 53 48 20 53 45 45 |cGregor.|X.SH SEE|
|00001cc0| 20 41 4c 53 4f 0a 58 64 | 63 6f 28 31 63 29 2c 20 | ALSO.Xd|co(1c), |
|00001cd0| 64 63 69 28 31 63 29 20 | 61 6e 64 20 74 68 65 20 |dci(1c) |and the |
|00001ce0| 63 6f 6e 66 69 67 75 72 | 61 74 69 6f 6e 20 6d 61 |configur|ation ma|
|00001cf0| 6e 61 67 65 72 27 73 20 | 70 72 6f 63 65 64 75 72 |nager's |procedur|
|00001d00| 65 73 2e 0a 58 2e 53 48 | 20 42 55 47 53 0a 58 5c |es..X.SH| BUGS.X\|
|00001d10| 66 49 6c 6b 74 72 65 65 | 5c 66 50 20 69 73 20 6d |fIlktree|\fP is m|
|00001d20| 65 61 6e 74 20 74 6f 20 | 63 72 65 61 74 65 20 6c |eant to |create l|
|00001d30| 69 6e 6b 20 74 72 65 65 | 73 20 6f 6e 20 61 20 73 |ink tree|s on a s|
|00001d40| 69 6e 67 6c 65 20 66 69 | 6c 65 0a 58 73 65 72 76 |ingle fi|le.Xserv|
|00001d50| 65 72 2c 20 61 74 74 65 | 6d 70 74 69 6e 67 0a 58 |er, atte|mpting.X|
|00001d60| 2e 49 20 6c 6b 74 72 65 | 65 0a 58 61 63 72 6f 73 |.I lktre|e.Xacros|
|00001d70| 73 20 66 69 6c 65 20 73 | 65 72 76 65 72 73 20 69 |s file s|ervers i|
|00001d80| 73 20 75 6e 74 65 73 74 | 65 64 2e 0a 58 2e 4c 50 |s untest|ed..X.LP|
|00001d90| 0a 58 2e 49 20 6c 6b 74 | 72 65 65 0a 58 63 6f 70 |.X.I lkt|ree.Xcop|
|00001da0| 69 65 73 20 74 6f 20 74 | 68 65 20 63 75 72 72 65 |ies to t|he curre|
|00001db0| 6e 74 20 64 69 72 65 63 | 74 6f 72 79 2c 20 70 72 |nt direc|tory, pr|
|00001dc0| 6f 67 72 61 6d 6d 65 72 | 73 20 73 68 6f 75 6c 64 |ogrammer|s should|
|00001dd0| 20 63 72 65 61 74 65 0a | 58 74 68 65 69 72 20 72 | create.|Xtheir r|
|00001de0| 6f 6f 74 20 64 69 72 65 | 63 74 6f 72 79 2c 20 64 |oot dire|ctory, d|
|00001df0| 65 73 63 65 6e 64 20 69 | 6e 74 6f 20 69 74 20 61 |escend i|nto it a|
|00001e00| 6e 64 20 0a 58 2e 49 20 | 74 68 65 6e 0a 58 70 65 |nd .X.I |then.Xpe|
|00001e10| 72 66 6f 72 6d 0a 58 2e | 49 20 6c 6b 74 72 65 65 |rform.X.|I lktree|
|00001e20| 0a 58 6f 70 65 72 61 74 | 69 6f 6e 73 2e 0a 58 2e |.Xoperat|ions..X.|
|00001e30| 4c 50 0a 58 2e 49 20 6c | 6b 74 72 65 65 0a 58 77 |LP.X.I l|ktree.Xw|
|00001e40| 69 6c 6c 20 77 6f 72 6b | 20 63 6f 72 72 65 63 74 |ill work| correct|
|00001e50| 6c 79 20 6f 6e 20 61 6e | 20 61 6c 72 65 61 64 79 |ly on an| already|
|00001e60| 20 65 78 69 73 74 69 6e | 67 20 6c 69 6e 6b 20 74 | existin|g link t|
|00001e70| 72 65 65 2e 0a 58 54 68 | 69 73 20 69 73 20 75 73 |ree..XTh|is is us|
|00001e80| 65 66 75 6c 20 77 68 65 | 6e 20 6e 65 77 20 6d 6f |eful whe|n new mo|
|00001e90| 64 75 6c 65 73 20 61 72 | 65 20 61 64 64 65 64 20 |dules ar|e added |
|00001ea0| 74 6f 20 74 68 65 20 63 | 75 72 72 65 6e 74 6c 79 |to the c|urrently|
|00001eb0| 0a 58 65 78 69 73 74 69 | 6e 67 20 0a 58 2e 42 49 |.Xexisti|ng .X.BI|
|00001ec0| 20 52 4f 4f 54 5f 54 52 | 45 45 20 0a 58 61 6e 64 | ROOT_TR|EE .Xand|
|00001ed0| 20 64 65 76 65 6c 6f 70 | 65 72 73 20 6d 75 73 74 | develop|ers must|
|00001ee0| 20 77 6f 72 6b 20 77 69 | 74 68 20 74 68 65 6d 2e | work wi|th them.|
|00001ef0| 0a 58 2e 4c 50 0a 58 2e | 49 20 6c 6b 74 72 65 65 |.X.LP.X.|I lktree|
|00001f00| 0a 58 72 65 71 75 69 72 | 65 73 20 70 65 72 6d 69 |.Xrequir|es permi|
|00001f10| 73 73 69 6f 6e 20 61 6e | 64 20 61 63 63 65 73 73 |ssion an|d access|
|00001f20| 20 62 69 74 73 20 74 6f | 20 62 65 20 73 65 74 20 | bits to| be set |
|00001f30| 70 72 6f 70 65 72 6c 79 | 20 6f 6e 0a 58 74 68 65 |properly| on.Xthe|
|00001f40| 20 0a 58 2e 42 49 20 52 | 4f 4f 54 5f 54 52 45 45 | .X.BI R|OOT_TREE|
|00001f50| 20 0a 58 73 6f 20 70 72 | 6f 67 72 61 6d 6d 65 72 | .Xso pr|ogrammer|
|00001f60| 73 20 63 61 6e 20 72 65 | 61 64 20 66 69 6c 65 73 |s can re|ad files|
|00001f70| 2e 0a 58 2e 4c 50 0a 58 | 2e 49 20 6c 6b 74 72 65 |..X.LP.X|.I lktre|
|00001f80| 65 0a 58 61 73 73 75 6d | 65 73 20 74 68 61 74 20 |e.Xassum|es that |
|00001f90| 74 68 65 20 73 79 73 74 | 65 6d 20 61 64 6d 69 6e |the syst|em admin|
|00001fa0| 73 74 72 61 74 6f 72 20 | 70 65 72 66 6f 72 6d 73 |strator |performs|
|00001fb0| 20 62 61 63 6b 75 70 73 | 20 6f 6e 0a 58 70 72 6f | backups| on.Xpro|
|00001fc0| 67 72 61 6d 6d 65 72 20 | 6c 69 6e 6b 20 74 72 65 |grammer |link tre|
|00001fd0| 65 73 20 61 73 20 77 65 | 6c 6c 20 61 73 20 0a 58 |es as we|ll as .X|
|00001fe0| 2e 42 49 20 52 4f 4f 54 | 5f 54 52 45 45 2e 0a 58 |.BI ROOT|_TREE..X|
|00001ff0| 2e 4c 50 0a 58 57 68 65 | 6e 20 72 65 72 75 6e 6e |.LP.XWhe|n rerunn|
|00002000| 69 6e 67 0a 58 2e 49 20 | 6c 6b 74 72 65 65 0a 58 |ing.X.I |lktree.X|
|00002010| 69 6e 20 61 6e 20 61 6c | 72 65 61 64 79 20 62 75 |in an al|ready bu|
|00002020| 69 6c 74 20 74 72 65 65 | 20 6d 61 6e 79 20 73 63 |ilt tree| many sc|
|00002030| 61 72 79 20 6d 65 73 73 | 61 67 65 73 20 61 72 65 |ary mess|ages are|
|00002040| 20 67 65 6e 65 72 61 74 | 65 64 2e 0a 58 54 68 65 | generat|ed..XThe|
|00002050| 73 65 20 6d 65 73 73 61 | 67 65 73 20 73 68 6f 75 |se messa|ges shou|
|00002060| 6c 64 20 62 65 20 73 75 | 70 70 72 65 73 73 65 64 |ld be su|ppressed|
|00002070| 20 61 6e 64 20 6f 6e 6c | 79 20 74 68 65 20 73 75 | and onl|y the su|
|00002080| 63 63 65 73 73 66 75 6c | 0a 58 6c 69 6e 6b 73 20 |ccessful|.Xlinks |
|00002090| 72 65 70 6f 72 74 65 64 | 2e 20 20 54 68 69 73 20 |reported|. This |
|000020a0| 77 6f 75 6c 64 20 67 69 | 76 65 20 74 68 65 20 70 |would gi|ve the p|
|000020b0| 72 6f 67 72 61 6d 6d 65 | 72 20 63 6f 6e 66 69 64 |rogramme|r confid|
|000020c0| 65 6e 63 65 20 74 68 61 | 74 0a 58 74 68 65 20 73 |ence tha|t.Xthe s|
|000020d0| 79 73 74 65 6d 20 69 73 | 20 6f 70 65 72 61 74 69 |ystem is| operati|
|000020e0| 6e 67 20 70 72 6f 70 65 | 72 6c 79 20 61 73 20 77 |ng prope|rly as w|
|000020f0| 65 6c 6c 20 61 73 20 69 | 6e 66 6f 72 6d 20 68 69 |ell as i|nform hi|
|00002100| 6d 20 6f 66 0a 58 74 68 | 65 20 6e 65 77 20 6c 69 |m of.Xth|e new li|
|00002110| 6e 6b 73 20 74 68 61 74 | 20 77 65 72 65 20 70 65 |nks that| were pe|
|00002120| 72 66 6f 72 6d 65 64 2e | 0a 58 2e 4c 50 0a 58 4f |rformed.|.X.LP.XO|
|00002130| 72 70 68 61 6e 20 6c 69 | 6e 6b 73 20 6d 69 67 68 |rphan li|nks migh|
|00002140| 74 20 62 65 20 63 72 65 | 61 74 65 64 20 77 68 65 |t be cre|ated whe|
|00002150| 6e 20 72 75 6e 6e 69 6e | 67 0a 58 2e 49 20 6c 6b |n runnin|g.X.I lk|
|00002160| 74 72 65 65 0a 58 6d 75 | 6c 74 69 70 6c 65 20 74 |tree.Xmu|ltiple t|
|00002170| 69 6d 65 73 20 6f 6e 20 | 74 68 65 20 73 61 6d 65 |imes on |the same|
|00002180| 20 72 6f 6f 74 20 74 72 | 65 65 2e 20 20 54 68 69 | root tr|ee. Thi|
|00002190| 73 20 6e 65 65 64 73 20 | 61 20 75 74 69 6c 69 74 |s needs |a utilit|
|000021a0| 79 0a 58 74 6f 20 69 6e | 66 6f 72 6d 20 74 68 65 |y.Xto in|form the|
|000021b0| 20 64 65 76 65 6c 6f 70 | 6d 65 6e 74 20 70 72 6f | develop|ment pro|
|000021c0| 67 72 61 6d 6d 65 72 20 | 74 68 61 74 20 74 68 65 |grammer |that the|
|000021d0| 72 65 20 69 73 20 61 6e | 20 6f 72 70 68 61 6e 2e |re is an| orphan.|
|000021e0| 0a 58 41 6e 20 6f 72 70 | 68 61 6e 20 6c 69 6e 6b |.XAn orp|han link|
|000021f0| 20 69 73 20 61 20 66 69 | 6c 65 20 74 68 61 74 20 | is a fi|le that |
|00002200| 6f 72 69 67 69 6e 61 6c | 6c 79 20 65 78 69 73 74 |original|ly exist|
|00002210| 65 64 20 69 6e 20 74 68 | 65 0a 58 72 6f 6f 74 20 |ed in th|e.Xroot |
|00002220| 64 65 76 65 6c 6f 70 6d | 65 6e 74 20 74 72 65 65 |developm|ent tree|
|00002230| 2c 20 62 75 74 20 77 61 | 73 20 65 69 74 68 65 72 |, but wa|s either|
|00002240| 20 72 65 6e 61 6d 65 64 | 20 6f 72 20 72 65 6d 6f | renamed| or remo|
|00002250| 76 65 64 2e 0a 58 54 68 | 65 20 64 65 76 65 6c 6f |ved..XTh|e develo|
|00002260| 70 6d 65 6e 74 20 74 72 | 65 65 20 72 65 74 61 69 |pment tr|ee retai|
|00002270| 6e 73 20 74 68 65 20 73 | 79 6d 62 6f 6c 69 63 20 |ns the s|ymbolic |
|00002280| 6c 69 6e 6b 20 74 6f 20 | 74 68 65 20 6f 72 69 67 |link to |the orig|
|00002290| 69 6e 61 6c 0a 58 66 69 | 6c 65 20 62 75 74 20 61 |inal.Xfi|le but a|
|000022a0| 6e 20 61 74 74 65 6d 70 | 74 65 64 20 61 63 63 65 |n attemp|ted acce|
|000022b0| 73 73 20 74 6f 20 69 74 | 20 77 69 6c 6c 20 72 65 |ss to it| will re|
|000022c0| 73 75 6c 74 20 69 6e 20 | 61 6e 20 65 72 72 6f 72 |sult in |an error|
|000022d0| 0a 58 6d 65 73 73 61 67 | 65 2e 20 20 49 74 20 73 |.Xmessag|e. It s|
|000022e0| 68 6f 75 6c 64 20 62 65 | 20 74 68 65 20 72 65 73 |hould be| the res|
|000022f0| 70 6f 6e 73 69 62 69 6c | 69 74 79 20 6f 66 20 74 |ponsibil|ity of t|
|00002300| 68 65 20 63 6f 6e 66 69 | 67 75 72 61 74 69 6f 6e |he confi|guration|
|00002310| 0a 58 6d 61 6e 61 67 65 | 72 20 74 6f 20 72 65 73 |.Xmanage|r to res|
|00002320| 6f 6c 76 65 20 74 68 65 | 73 65 20 70 72 6f 62 6c |olve the|se probl|
|00002330| 65 6d 73 3b 20 74 68 65 | 20 6f 72 70 68 61 6e 2d |ems; the| orphan-|
|00002340| 6c 69 6e 6b 20 75 74 69 | 6c 69 74 79 0a 58 69 73 |link uti|lity.Xis|
|00002350| 20 73 69 6d 70 6c 79 20 | 70 61 72 74 20 6f 66 20 | simply |part of |
|00002360| 68 69 73 20 74 6f 6f 6c | 20 6b 69 74 2e 0a 58 2e |his tool| kit..X.|
|00002370| 65 78 0a 45 4e 44 5f 4f | 46 5f 46 49 4c 45 0a 69 |ex.END_O|F_FILE.i|
|00002380| 66 20 74 65 73 74 20 37 | 30 31 39 20 2d 6e 65 20 |f test 7|019 -ne |
|00002390| 60 77 63 20 2d 63 20 3c | 27 6c 6b 74 72 65 65 2e |`wc -c <|'lktree.|
|000023a0| 31 27 60 3b 20 74 68 65 | 6e 0a 20 20 20 20 65 63 |1'`; the|n. ec|
|000023b0| 68 6f 20 73 68 61 72 3a | 20 5c 22 27 6c 6b 74 72 |ho shar:| \"'lktr|
|000023c0| 65 65 2e 31 27 5c 22 20 | 75 6e 70 61 63 6b 65 64 |ee.1'\" |unpacked|
|000023d0| 20 77 69 74 68 20 77 72 | 6f 6e 67 20 73 69 7a 65 | with wr|ong size|
|000023e0| 21 0a 66 69 0a 23 20 65 | 6e 64 20 6f 66 20 27 6c |!.fi.# e|nd of 'l|
|000023f0| 6b 74 72 65 65 2e 31 27 | 0a 66 69 0a 69 66 20 74 |ktree.1'|.fi.if t|
|00002400| 65 73 74 20 2d 66 20 27 | 6c 6b 74 72 65 65 2e 63 |est -f '|lktree.c|
|00002410| 27 20 2d 61 20 22 24 7b | 31 7d 22 20 21 3d 20 22 |' -a "${|1}" != "|
|00002420| 2d 63 22 20 3b 20 74 68 | 65 6e 20 0a 20 20 65 63 |-c" ; th|en . ec|
|00002430| 68 6f 20 73 68 61 72 3a | 20 57 69 6c 6c 20 6e 6f |ho shar:| Will no|
|00002440| 74 20 63 6c 6f 62 62 65 | 72 20 65 78 69 73 74 69 |t clobbe|r existi|
|00002450| 6e 67 20 66 69 6c 65 20 | 5c 22 27 6c 6b 74 72 65 |ng file |\"'lktre|
|00002460| 65 2e 63 27 5c 22 0a 65 | 6c 73 65 0a 65 63 68 6f |e.c'\".e|lse.echo|
|00002470| 20 73 68 61 72 3a 20 45 | 78 74 72 61 63 74 69 6e | shar: E|xtractin|
|00002480| 67 20 5c 22 27 6c 6b 74 | 72 65 65 2e 63 27 5c 22 |g \"'lkt|ree.c'\"|
|00002490| 20 5c 28 38 32 38 37 20 | 63 68 61 72 61 63 74 65 | \(8287 |characte|
|000024a0| 72 73 5c 29 0a 73 65 64 | 20 22 73 2f 5e 58 2f 2f |rs\).sed| "s/^X//|
|000024b0| 22 20 3e 27 6c 6b 74 72 | 65 65 2e 63 27 20 3c 3c |" >'lktr|ee.c' <<|
|000024c0| 27 45 4e 44 5f 4f 46 5f | 46 49 4c 45 27 0a 58 73 |'END_OF_|FILE'.Xs|
|000024d0| 74 61 74 69 63 20 63 68 | 61 72 20 52 63 73 49 64 |tatic ch|ar RcsId|
|000024e0| 5b 5d 20 3d 20 22 24 48 | 65 61 64 65 72 3a 20 2f |[] = "$H|eader: /|
|000024f0| 77 72 6c 64 2f 36 65 35 | 30 2f 63 65 63 69 6c 2f |wrld/6e5|0/cecil/|
|00002500| 74 6f 6f 6c 73 2f 52 43 | 53 2f 6c 6b 74 72 65 65 |tools/RC|S/lktree|
|00002510| 2e 63 2c 76 20 31 2e 32 | 20 38 39 2f 30 38 2f 30 |.c,v 1.2| 89/08/0|
|00002520| 34 20 31 30 3a 34 30 3a | 33 32 20 63 65 63 69 6c |4 10:40:|32 cecil|
|00002530| 20 45 78 70 20 4c 6f 63 | 6b 65 72 3a 20 63 65 63 | Exp Loc|ker: cec|
|00002540| 69 6c 20 24 22 3b 0a 58 | 2f 2a 0a 58 09 24 4c 6f |il $";.X|/*.X.$Lo|
|00002550| 67 3a 09 6c 6b 74 72 65 | 65 2e 63 2c 76 20 24 0a |g:.lktre|e.c,v $.|
|00002560| 58 20 2a 20 52 65 76 69 | 73 69 6f 6e 20 31 2e 32 |X * Revi|sion 1.2|
|00002570| 20 20 38 39 2f 30 38 2f | 30 34 20 20 31 30 3a 34 | 89/08/|04 10:4|
|00002580| 30 3a 33 32 20 20 63 65 | 63 69 6c 0a 58 20 2a 20 |0:32 ce|cil.X * |
|00002590| 61 64 64 69 6e 67 20 6c | 6b 74 72 65 65 20 74 6f |adding l|ktree to|
|000025a0| 20 52 43 53 20 63 6f 6e | 74 72 6f 6c 2e 0a 58 20 | RCS con|trol..X |
|000025b0| 2a 20 0a 58 20 2a 20 52 | 65 76 69 73 69 6f 6e 20 |* .X * R|evision |
|000025c0| 31 2e 31 20 20 38 39 2f | 30 38 2f 30 34 20 20 30 |1.1 89/|08/04 0|
|000025d0| 38 3a 35 30 3a 30 37 20 | 20 63 65 63 69 6c 0a 58 |8:50:07 | cecil.X|
|000025e0| 20 2a 20 49 6e 69 74 69 | 61 6c 20 72 65 76 69 73 | * Initi|al revis|
|000025f0| 69 6f 6e 0a 58 20 2a 20 | 0a 58 2a 2f 0a 58 0a 58 |ion.X * |.X*/.X.X|
|00002600| 23 69 6e 63 6c 75 64 65 | 20 3c 73 74 64 69 6f 2e |#include| <stdio.|
|00002610| 68 3e 0a 58 23 69 6e 63 | 6c 75 64 65 20 3c 66 74 |h>.X#inc|lude <ft|
|00002620| 77 2e 68 3e 0a 58 23 69 | 6e 63 6c 75 64 65 20 3c |w.h>.X#i|nclude <|
|00002630| 73 79 73 2f 74 79 70 65 | 73 2e 68 3e 0a 58 23 69 |sys/type|s.h>.X#i|
|00002640| 6e 63 6c 75 64 65 20 3c | 73 79 73 2f 73 74 61 74 |nclude <|sys/stat|
|00002650| 2e 68 3e 0a 58 23 69 6e | 63 6c 75 64 65 20 3c 73 |.h>.X#in|clude <s|
|00002660| 74 72 69 6e 67 2e 68 3e | 0a 58 0a 58 46 49 4c 45 |tring.h>|.X.XFILE|
|00002670| 20 2a 66 70 3b 0a 58 0a | 58 69 6e 74 20 64 65 62 | *fp;.X.|Xint deb|
|00002680| 75 67 20 3d 20 30 3b 09 | 09 09 2f 2a 20 54 52 55 |ug = 0;.|../* TRU|
|00002690| 45 20 74 6f 20 64 65 62 | 75 67 20 2a 2f 0a 58 23 |E to deb|ug */.X#|
|000026a0| 64 65 66 69 6e 65 20 44 | 45 42 55 47 28 78 29 20 |define D|EBUG(x) |
|000026b0| 7b 69 66 28 64 65 62 75 | 67 29 66 70 72 69 6e 74 |{if(debu|g)fprint|
|000026c0| 66 28 73 74 64 65 72 72 | 2c 20 22 25 73 3a 25 64 |f(stderr|, "%s:%d|
|000026d0| 3a 25 73 5c 6e 22 2c 20 | 5f 5f 46 49 4c 45 5f 5f |:%s\n", |__FILE__|
|000026e0| 2c 5f 5f 4c 49 4e 45 5f | 5f 2c 78 29 3b 7d 0a 58 |,__LINE_|_,x);}.X|
|000026f0| 0a 58 69 6e 74 20 64 69 | 72 5f 69 67 6e 6f 72 65 |.Xint di|r_ignore|
|00002700| 20 3d 20 30 3b 09 09 2f | 2a 20 6f 70 74 69 6f 6e | = 0;../|* option|
|00002710| 20 2d 64 20 3d 3d 20 69 | 67 6e 6f 72 65 20 64 69 | -d == i|gnore di|
|00002720| 72 65 63 74 6f 72 69 65 | 73 20 2a 2f 0a 58 69 6e |rectorie|s */.Xin|
|00002730| 74 20 6c 69 6e 6b 5f 69 | 67 6e 6f 72 65 20 3d 20 |t link_i|gnore = |
|00002740| 30 3b 09 09 2f 2a 20 6f | 70 74 69 6f 6e 20 2d 6c |0;../* o|ption -l|
|00002750| 20 3d 3d 20 69 67 6e 6f | 72 65 20 6c 69 6e 6b 73 | == igno|re links|
|00002760| 20 2a 2f 0a 58 0a 58 63 | 68 61 72 20 2a 68 65 61 | */.X.Xc|har *hea|
|00002770| 64 3b 09 09 09 2f 2a 20 | 74 68 65 20 72 65 71 75 |d;.../* |the requ|
|00002780| 65 73 74 65 64 20 72 6f | 6f 74 20 68 65 61 64 20 |ested ro|ot head |
|00002790| 2a 2f 0a 58 63 68 61 72 | 20 68 65 61 64 5f 62 75 |*/.Xchar| head_bu|
|000027a0| 66 5b 35 31 32 5d 3b 09 | 09 2f 2a 20 77 6f 72 6b |f[512];.|./* work|
|000027b0| 20 62 75 66 66 65 72 20 | 66 6f 72 20 65 6e 76 69 | buffer |for envi|
|000027c0| 72 6f 6e 6d 65 6e 74 61 | 6c 20 76 61 72 69 61 62 |ronmenta|l variab|
|000027d0| 6c 65 20 2a 2f 0a 58 0a | 58 46 49 4c 45 20 2a 6f |le */.X.|XFILE *o|
|000027e0| 75 74 5f 66 70 3b 09 09 | 09 2f 2a 20 74 65 6d 70 |ut_fp;..|./* temp|
|000027f0| 20 66 69 6c 65 20 66 6f | 72 20 66 67 72 65 70 27 | file fo|r fgrep'|
|00002800| 73 20 2a 2f 0a 58 63 68 | 61 72 20 2a 74 65 6d 70 |s */.Xch|ar *temp|
|00002810| 5f 66 6e 3b 09 09 09 2f | 2a 20 72 65 74 75 72 6e |_fn;.../|* return|
|00002820| 20 66 72 6f 6d 20 6d 6b | 74 65 6d 70 28 29 20 2a | from mk|temp() *|
|00002830| 2f 0a 58 0a 58 46 49 4c | 45 20 2a 69 6e 63 6c 5f |/.X.XFIL|E *incl_|
|00002840| 66 70 20 3d 20 30 2c 20 | 2a 65 78 63 6c 5f 66 70 |fp = 0, |*excl_fp|
|00002850| 20 3d 20 30 3b 09 2f 2a | 20 69 6e 63 6c 75 64 65 | = 0;./*| include|
|00002860| 20 61 6e 64 20 65 78 63 | 6c 75 64 65 20 66 69 6c | and exc|lude fil|
|00002870| 65 20 70 74 72 73 20 2a | 2f 0a 58 63 68 61 72 20 |e ptrs *|/.Xchar |
|00002880| 2a 69 6e 63 6c 5f 66 6e | 2c 20 2a 65 78 63 6c 5f |*incl_fn|, *excl_|
|00002890| 66 6e 3b 09 09 2f 2a 20 | 69 6e 63 6c 75 64 65 20 |fn;../* |include |
|000028a0| 61 6e 64 20 65 78 63 6c | 75 64 65 20 66 69 6c 65 |and excl|ude file|
|000028b0| 20 6e 61 6d 65 73 20 2a | 2f 0a 58 0a 58 63 68 61 | names *|/.X.Xcha|
|000028c0| 72 20 2a 72 63 73 5f 72 | 6f 6f 74 5f 66 6e 3b 09 |r *rcs_r|oot_fn;.|
|000028d0| 09 2f 2a 20 6e 61 6d 65 | 20 6f 66 20 72 6f 6f 74 |./* name| of root|
|000028e0| 20 64 69 72 65 63 74 6f | 72 79 20 74 6f 20 73 74 | directo|ry to st|
|000028f0| 61 72 74 20 6c 69 6e 6b | 20 2a 2f 0a 58 0a 58 2f |art link| */.X.X/|
|00002900| 2a 20 73 74 72 64 75 70 | 20 2d 20 64 75 70 6c 69 |* strdup| - dupli|
|00002910| 63 61 74 65 20 61 20 73 | 74 72 69 6e 67 20 2a 2f |cate a s|tring */|
|00002920| 0a 58 63 68 61 72 20 2a | 73 74 72 64 75 70 28 73 |.Xchar *|strdup(s|
|00002930| 29 0a 58 63 68 61 72 20 | 2a 73 3b 0a 58 7b 0a 58 |).Xchar |*s;.X{.X|
|00002940| 09 63 68 61 72 20 2a 63 | 70 3b 0a 58 0a 58 09 63 |.char *c|p;.X.X.c|
|00002950| 70 20 3d 20 28 63 68 61 | 72 20 2a 29 6d 61 6c 6c |p = (cha|r *)mall|
|00002960| 6f 63 28 73 74 72 6c 65 | 6e 28 73 29 2b 31 29 3b |oc(strle|n(s)+1);|
|00002970| 0a 58 09 73 74 72 63 70 | 79 28 63 70 2c 20 73 29 |.X.strcp|y(cp, s)|
|00002980| 3b 0a 58 09 72 65 74 75 | 72 6e 20 63 70 3b 0a 58 |;.X.retu|rn cp;.X|
|00002990| 7d 0a 58 0a 58 2f 2a 3d | 3d 3d 3d 3d 3d 3d 3d 3d |}.X.X/*=|========|
|000029a0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000029b0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000029c0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000029d0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 2a 2f 0a 58 2f 2a 20 |========|=*/.X/* |
|000029e0| 73 74 72 73 65 61 72 63 | 68 20 2d 20 73 65 61 72 |strsearc|h - sear|
|000029f0| 63 68 20 73 74 72 69 6e | 67 20 66 6f 72 20 73 75 |ch strin|g for su|
|00002a00| 62 5f 73 74 72 69 6e 67 | 2c 20 72 65 74 75 72 6e |b_string|, return|
|00002a10| 20 70 74 72 20 74 6f 20 | 73 74 61 72 74 20 6f 66 | ptr to |start of|
|00002a20| 20 2a 2f 0a 58 2f 2a 20 | 73 75 62 5f 73 74 72 69 | */.X/* |sub_stri|
|00002a30| 6e 67 20 77 69 74 68 69 | 6e 20 73 74 72 69 6e 67 |ng withi|n string|
|00002a40| 2c 20 4e 55 4c 4c 20 69 | 66 20 6e 6f 74 20 77 69 |, NULL i|f not wi|
|00002a50| 74 68 69 6e 2e 20 20 20 | 20 20 20 20 20 20 20 20 |thin. | |
|00002a60| 20 20 20 20 20 20 20 20 | 20 2a 2f 0a 58 2f 2a 3d | | */.X/*=|
|00002a70| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00002a80| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00002a90| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00002aa0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00002ab0| 3d 2a 2f 0a 58 0a 58 63 | 68 61 72 20 2a 73 74 72 |=*/.X.Xc|har *str|
|00002ac0| 73 65 61 72 63 68 28 73 | 74 72 69 6e 67 2c 20 73 |search(s|tring, s|
|00002ad0| 75 62 5f 73 74 72 69 6e | 67 29 0a 58 63 68 61 72 |ub_strin|g).Xchar|
|00002ae0| 20 2a 73 74 72 69 6e 67 | 2c 20 2a 73 75 62 5f 73 | *string|, *sub_s|
|00002af0| 74 72 69 6e 67 3b 0a 58 | 7b 0a 58 09 66 6f 72 28 |tring;.X|{.X.for(|
|00002b00| 3b 73 74 72 69 6e 67 20 | 3d 20 28 63 68 61 72 20 |;string |= (char |
|00002b10| 2a 29 69 6e 64 65 78 28 | 73 74 72 69 6e 67 2c 20 |*)index(|string, |
|00002b20| 2a 73 75 62 5f 73 74 72 | 69 6e 67 29 3b 2b 2b 73 |*sub_str|ing);++s|
|00002b30| 74 72 69 6e 67 29 7b 0a | 58 09 20 20 20 20 2f 2a |tring){.|X. /*|
|00002b40| 20 66 6f 75 6e 64 20 66 | 69 72 73 74 20 63 68 61 | found f|irst cha|
|00002b50| 72 20 6f 66 20 73 75 62 | 73 74 72 69 6e 67 20 69 |r of sub|string i|
|00002b60| 6e 20 73 74 72 69 6e 67 | 20 2a 2f 0a 58 09 20 20 |n string| */.X. |
|00002b70| 20 20 69 66 28 73 74 72 | 63 6d 70 28 73 74 72 69 | if(str|cmp(stri|
|00002b80| 6e 67 2c 20 73 75 62 5f | 73 74 72 69 6e 67 29 20 |ng, sub_|string) |
|00002b90| 3d 3d 20 30 29 0a 58 09 | 09 72 65 74 75 72 6e 20 |== 0).X.|.return |
|00002ba0| 73 74 72 69 6e 67 3b 0a | 58 09 7d 0a 58 09 2f 2a |string;.|X.}.X./*|
|00002bb0| 20 73 75 62 73 74 72 69 | 6e 67 20 69 73 20 6e 6f | substri|ng is no|
|00002bc0| 74 20 77 69 74 68 69 6e | 20 73 74 72 69 6e 67 2c |t within| string,|
|00002bd0| 20 72 65 74 75 72 6e 20 | 4e 55 4c 4c 20 2a 2f 0a | return |NULL */.|
|00002be0| 58 09 72 65 74 75 72 6e | 20 28 63 68 61 72 20 2a |X.return| (char *|
|00002bf0| 29 30 3b 0a 58 7d 0a 58 | 0a 58 69 6e 74 20 70 72 |)0;.X}.X|.Xint pr|
|00002c00| 69 6e 74 5f 66 69 6c 65 | 28 66 6e 2c 20 73 62 75 |int_file|(fn, sbu|
|00002c10| 66 2c 20 66 74 79 70 65 | 29 0a 58 63 68 61 72 20 |f, ftype|).Xchar |
|00002c20| 2a 66 6e 3b 09 09 09 2f | 2a 20 6e 61 6d 65 20 6f |*fn;.../|* name o|
|00002c30| 66 20 66 69 6c 65 20 2a | 2f 0a 58 73 74 72 75 63 |f file *|/.Xstruc|
|00002c40| 74 20 73 74 61 74 20 2a | 73 62 75 66 3b 0a 58 69 |t stat *|sbuf;.Xi|
|00002c50| 6e 74 20 66 74 79 70 65 | 3b 0a 58 7b 0a 58 20 20 |nt ftype|;.X{.X |
|00002c60| 20 20 72 65 67 69 73 74 | 65 72 20 63 68 61 72 20 | regist|er char |
|00002c70| 2a 6e 61 6d 65 3b 0a 58 | 20 20 20 20 63 68 61 72 |*name;.X| char|
|00002c80| 20 62 75 66 5b 42 55 46 | 53 49 5a 5d 3b 0a 58 20 | buf[BUF|SIZ];.X |
|00002c90| 20 20 20 63 68 61 72 20 | 2a 74 65 6d 70 3b 0a 58 | char |*temp;.X|
|00002ca0| 20 20 20 20 69 6e 74 20 | 73 74 61 74 75 73 3b 0a | int |status;.|
|00002cb0| 58 20 20 20 20 0a 58 20 | 20 20 20 44 45 42 55 47 |X .X | DEBUG|
|00002cc0| 28 66 6e 29 3b 0a 58 20 | 20 20 20 2f 2a 20 49 66 |(fn);.X | /* If|
|00002cd0| 20 74 68 69 73 20 66 69 | 6c 65 20 69 73 20 61 20 | this fi|le is a |
|00002ce0| 73 79 6d 62 6f 6c 69 63 | 20 6c 69 6e 6b 2c 20 74 |symbolic| link, t|
|00002cf0| 68 65 6e 20 61 62 73 6f | 6c 75 74 65 6c 79 20 2a |hen abso|lutely *|
|00002d00| 2f 0a 58 20 20 20 20 2f | 2a 20 69 67 6e 6f 72 65 |/.X /|* ignore|
|00002d10| 20 74 68 69 73 20 72 65 | 66 65 72 65 6e 63 65 21 | this re|ference!|
|00002d20| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002d30| 20 20 20 20 20 20 20 20 | 20 20 20 2a 2f 0a 58 20 | | */.X |
|00002d40| 20 20 20 2f 2a 20 54 68 | 69 73 20 63 61 6c 6c 20 | /* Th|is call |
|00002d50| 73 75 63 63 65 65 64 73 | 20 6f 6e 6c 79 20 69 66 |succeeds| only if|
|00002d60| 20 66 6e 20 49 53 20 61 | 20 6c 69 6e 6b 2e 20 20 | fn IS a| link. |
|00002d70| 20 20 20 20 20 20 20 2a | 2f 0a 58 20 20 20 20 69 | *|/.X i|
|00002d80| 66 28 28 73 74 61 74 75 | 73 20 3d 20 72 65 61 64 |f((statu|s = read|
|00002d90| 6c 69 6e 6b 28 66 6e 2c | 20 62 75 66 2c 20 42 55 |link(fn,| buf, BU|
|00002da0| 46 53 49 5a 29 29 20 21 | 3d 20 2d 31 29 7b 0a 58 |FSIZ)) !|= -1){.X|
|00002db0| 09 44 45 42 55 47 28 22 | 69 67 6e 6f 72 69 6e 67 |.DEBUG("|ignoring|
|00002dc0| 20 73 79 6d 62 6f 6c 69 | 63 20 6c 69 6e 6b 20 66 | symboli|c link f|
|00002dd0| 69 6c 65 22 29 3b 0a 58 | 09 72 65 74 75 72 6e 20 |ile");.X|.return |
|00002de0| 30 3b 0a 58 20 20 20 20 | 7d 0a 58 0a 58 20 20 20 |0;.X |}.X.X |
|00002df0| 20 2f 2a 20 4e 65 76 65 | 72 20 64 65 73 63 65 6e | /* Neve|r descen|
|00002e00| 64 20 69 6e 74 6f 20 52 | 43 53 20 64 69 72 65 63 |d into R|CS direc|
|00002e10| 74 6f 72 69 65 73 2c 20 | 61 73 20 74 68 65 20 69 |tories, |as the i|
|00002e20| 6e 74 65 6e 74 20 2a 2f | 0a 58 20 20 20 20 2f 2a |ntent */|.X /*|
|00002e30| 20 69 73 20 74 6f 20 6c | 69 6e 6b 20 61 6e 20 52 | is to l|ink an R|
|00002e40| 43 53 20 64 69 72 65 63 | 74 6f 72 79 20 69 6e 73 |CS direc|tory ins|
|00002e50| 74 65 61 64 20 74 68 73 | 20 69 6e 64 69 76 69 64 |tead ths| individ|
|00002e60| 75 61 6c 2a 2f 0a 58 20 | 20 20 20 2f 2a 20 66 69 |ual*/.X | /* fi|
|00002e70| 6c 65 73 20 69 6e 20 74 | 68 65 20 64 69 72 65 63 |les in t|he direc|
|00002e80| 74 6f 72 79 2e 20 20 20 | 20 20 20 20 20 20 20 20 |tory. | |
|00002e90| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002ea0| 2a 2f 0a 58 20 20 20 20 | 69 66 28 72 65 5f 65 78 |*/.X |if(re_ex|
|00002eb0| 65 63 28 66 6e 29 20 21 | 3d 20 30 29 20 7b 0a 58 |ec(fn) !|= 0) {.X|
|00002ec0| 09 44 45 42 55 47 28 22 | 4e 4f 54 20 64 65 73 63 |.DEBUG("|NOT desc|
|00002ed0| 65 6e 64 69 6e 67 20 69 | 6e 74 6f 20 52 43 53 20 |ending i|nto RCS |
|00002ee0| 64 69 72 22 29 3b 0a 58 | 09 72 65 74 75 72 6e 20 |dir");.X|.return |
|00002ef0| 30 3b 0a 58 20 20 20 20 | 7d 0a 58 0a 58 20 20 20 |0;.X |}.X.X |
|00002f00| 20 2f 2a 20 6d 75 73 74 | 20 72 75 6e 20 6c 73 74 | /* must| run lst|
|00002f10| 61 74 20 6f 6e 20 74 68 | 65 20 66 69 6c 65 20 2a |at on th|e file *|
|00002f20| 2f 0a 58 20 20 20 20 6c | 73 74 61 74 28 66 6e 2c |/.X l|stat(fn,|
|00002f30| 20 73 62 75 66 29 3b 0a | 58 0a 58 20 20 20 20 69 | sbuf);.|X.X i|
|00002f40| 66 20 28 28 73 62 75 66 | 2d 3e 73 74 5f 6d 6f 64 |f ((sbuf|->st_mod|
|00002f50| 65 20 26 20 53 5f 49 46 | 4d 54 29 20 3d 3d 20 53 |e & S_IF|MT) == S|
|00002f60| 5f 49 46 42 4c 4b 29 0a | 58 09 72 65 74 75 72 6e |_IFBLK).|X.return|
|00002f70| 20 30 3b 0a 58 20 20 20 | 20 69 66 20 28 28 73 62 | 0;.X | if ((sb|
|00002f80| 75 66 2d 3e 73 74 5f 6d | 6f 64 65 20 26 20 53 5f |uf->st_m|ode & S_|
|00002f90| 49 46 4d 54 29 20 3d 3d | 20 53 5f 49 46 53 4f 43 |IFMT) ==| S_IFSOC|
|00002fa0| 4b 29 0a 58 09 72 65 74 | 75 72 6e 20 30 3b 0a 58 |K).X.ret|urn 0;.X|
|00002fb0| 20 20 20 20 69 66 20 28 | 28 73 62 75 66 2d 3e 73 | if (|(sbuf->s|
|00002fc0| 74 5f 6d 6f 64 65 20 26 | 20 53 5f 49 46 4d 54 29 |t_mode &| S_IFMT)|
|00002fd0| 20 3d 3d 20 53 5f 49 46 | 49 46 4f 29 0a 58 09 72 | == S_IF|IFO).X.r|
|00002fe0| 65 74 75 72 6e 20 30 3b | 0a 58 20 20 20 20 69 66 |eturn 0;|.X if|
|00002ff0| 20 28 28 73 62 75 66 2d | 3e 73 74 5f 6d 6f 64 65 | ((sbuf-|>st_mode|
|00003000| 20 26 20 53 5f 49 46 4d | 54 29 20 3d 3d 20 53 5f | & S_IFM|T) == S_|
|00003010| 49 46 43 48 52 29 0a 58 | 09 72 65 74 75 72 6e 20 |IFCHR).X|.return |
|00003020| 30 3b 0a 58 20 20 20 20 | 69 66 20 28 28 73 62 75 |0;.X |if ((sbu|
|00003030| 66 2d 3e 73 74 5f 6d 6f | 64 65 20 26 20 53 5f 49 |f->st_mo|de & S_I|
|00003040| 46 4d 54 29 20 3d 3d 20 | 53 5f 49 46 44 49 52 29 |FMT) == |S_IFDIR)|
|00003050| 20 7b 0a 58 09 73 74 72 | 75 63 74 20 73 74 61 74 | {.X.str|uct stat|
|00003060| 20 78 62 75 66 3b 0a 58 | 0a 58 09 69 66 20 28 64 | xbuf;.X|.X.if (d|
|00003070| 69 72 5f 69 67 6e 6f 72 | 65 29 0a 58 09 20 20 20 |ir_ignor|e).X. |
|00003080| 20 72 65 74 75 72 6e 20 | 30 3b 0a 58 0a 58 09 73 | return |0;.X.X.s|
|00003090| 74 61 74 28 66 6e 2c 20 | 26 78 62 75 66 29 3b 0a |tat(fn, |&xbuf);.|
|000030a0| 58 09 2f 2a 20 69 66 20 | 74 68 69 73 20 69 73 20 |X./* if |this is |
|000030b0| 61 20 6c 69 6e 6b 20 74 | 6f 20 61 20 64 69 72 65 |a link t|o a dire|
|000030c0| 63 74 6f 72 79 2c 20 69 | 67 6e 6f 72 65 20 2a 2f |ctory, i|gnore */|
|000030d0| 0a 58 09 69 66 20 28 28 | 78 62 75 66 2e 73 74 5f |.X.if ((|xbuf.st_|
|000030e0| 6d 6f 64 65 20 26 20 53 | 5f 49 46 4d 54 29 20 3d |mode & S|_IFMT) =|
|000030f0| 3d 20 53 5f 49 46 4c 4e | 4b 29 20 7b 0a 58 09 20 |= S_IFLN|K) {.X. |
|00003100| 20 20 20 72 65 74 75 72 | 6e 20 30 3b 0a 58 09 7d | retur|n 0;.X.}|
|00003110| 0a 58 20 20 20 20 7d 0a | 58 20 20 20 20 69 66 20 |.X }.|X if |
|00003120| 28 28 73 62 75 66 2d 3e | 73 74 5f 6d 6f 64 65 20 |((sbuf->|st_mode |
|00003130| 26 20 53 5f 49 46 4d 54 | 29 20 3d 3d 20 53 5f 49 |& S_IFMT|) == S_I|
|00003140| 46 4c 4e 4b 29 20 7b 0a | 58 09 69 66 20 28 6c 69 |FLNK) {.|X.if (li|
|00003150| 6e 6b 5f 69 67 6e 6f 72 | 65 29 0a 58 09 20 20 20 |nk_ignor|e).X. |
|00003160| 20 72 65 74 75 72 6e 20 | 30 3b 0a 58 20 20 20 20 | return |0;.X |
|00003170| 7d 0a 58 0a 58 20 20 20 | 20 69 66 20 28 28 73 62 |}.X.X | if ((sb|
|00003180| 75 66 2d 3e 73 74 5f 6d | 6f 64 65 20 26 20 53 5f |uf->st_m|ode & S_|
|00003190| 49 46 4d 54 29 20 3d 3d | 20 53 5f 49 46 44 49 52 |IFMT) ==| S_IFDIR|
|000031a0| 29 0a 58 09 6e 61 6d 65 | 20 3d 20 66 6e 20 2b 20 |).X.name| = fn + |
|000031b0| 73 74 72 6c 65 6e 28 68 | 65 61 64 29 3b 0a 58 20 |strlen(h|ead);.X |
|000031c0| 20 20 20 65 6c 73 65 0a | 58 09 6e 61 6d 65 20 3d | else.|X.name =|
|000031d0| 20 66 6e 20 2b 20 73 74 | 72 6c 65 6e 28 68 65 61 | fn + st|rlen(hea|
|000031e0| 64 29 20 2b 20 31 3b 0a | 58 0a 58 20 20 20 20 69 |d) + 1;.|X.X i|
|000031f0| 66 28 73 74 72 6c 65 6e | 28 6e 61 6d 65 29 20 3d |f(strlen|(name) =|
|00003200| 3d 20 30 29 0a 58 09 72 | 65 74 75 72 6e 20 30 3b |= 0).X.r|eturn 0;|
|00003210| 09 2f 2a 20 6f 72 69 67 | 69 6e 61 6c 20 64 69 72 |./* orig|inal dir|
|00003220| 20 63 61 6c 6c 2c 20 69 | 67 6e 6f 72 65 20 2a 2f | call, i|gnore */|
|00003230| 0a 58 0a 58 20 20 20 20 | 73 77 69 74 63 68 20 28 |.X.X |switch (|
|00003240| 66 74 79 70 65 29 20 7b | 0a 58 20 20 20 20 64 65 |ftype) {|.X de|
|00003250| 66 61 75 6c 74 3a 0a 58 | 09 66 70 72 69 6e 74 66 |fault:.X|.fprintf|
|00003260| 28 6f 75 74 5f 66 70 2c | 20 22 65 63 68 6f 20 55 |(out_fp,| "echo U|
|00003270| 6e 6b 6e 6f 77 6e 22 29 | 3b 0a 58 09 66 70 72 69 |nknown")|;.X.fpri|
|00003280| 6e 74 66 28 6f 75 74 5f | 66 70 2c 20 22 5c 74 25 |ntf(out_|fp, "\t%|
|00003290| 73 22 2c 20 66 6e 29 3b | 0a 58 09 66 70 72 69 6e |s", fn);|.X.fprin|
|000032a0| 74 66 28 6f 75 74 5f 66 | 70 2c 20 22 5c 74 25 73 |tf(out_f|p, "\t%s|
|000032b0| 22 2c 20 6e 61 6d 65 29 | 3b 0a 58 09 66 70 72 69 |", name)|;.X.fpri|
|000032c0| 6e 74 66 28 6f 75 74 5f | 66 70 2c 20 22 5c 6e 22 |ntf(out_|fp, "\n"|
|000032d0| 29 3b 0a 58 09 62 72 65 | 61 6b 3b 0a 58 20 20 20 |);.X.bre|ak;.X |
|000032e0| 20 63 61 73 65 20 46 54 | 57 5f 46 3a 0a 58 09 69 | case FT|W_F:.X.i|
|000032f0| 66 20 28 28 73 62 75 66 | 2d 3e 73 74 5f 6d 6f 64 |f ((sbuf|->st_mod|
|00003300| 65 20 26 20 53 5f 49 46 | 4d 54 29 20 3d 3d 20 53 |e & S_IF|MT) == S|
|00003310| 5f 49 46 4c 4e 4b 29 20 | 7b 0a 58 09 20 20 20 20 |_IFLNK) |{.X. |
|00003320| 66 70 72 69 6e 74 66 28 | 6f 75 74 5f 66 70 2c 20 |fprintf(|out_fp, |
|00003330| 22 6c 6e 20 2d 73 22 29 | 3b 0a 58 09 20 20 20 20 |"ln -s")|;.X. |
|00003340| 66 70 72 69 6e 74 66 28 | 6f 75 74 5f 66 70 2c 20 |fprintf(|out_fp, |
|00003350| 22 5c 74 25 73 22 2c 20 | 66 6e 29 3b 0a 58 09 20 |"\t%s", |fn);.X. |
|00003360| 20 20 20 66 70 72 69 6e | 74 66 28 6f 75 74 5f 66 | fprin|tf(out_f|
|00003370| 70 2c 20 22 5c 74 25 73 | 22 2c 20 6e 61 6d 65 29 |p, "\t%s|", name)|
|00003380| 3b 0a 58 09 20 20 20 20 | 66 70 72 69 6e 74 66 28 |;.X. |fprintf(|
|00003390| 6f 75 74 5f 66 70 2c 20 | 22 5c 6e 22 29 3b 0a 58 |out_fp, |"\n");.X|
|000033a0| 09 7d 20 65 6c 73 65 20 | 7b 0a 58 09 20 20 20 20 |.} else |{.X. |
|000033b0| 66 70 72 69 6e 74 66 28 | 6f 75 74 5f 66 70 2c 20 |fprintf(|out_fp, |
|000033c0| 22 6c 6e 20 2d 73 20 22 | 29 3b 0a 58 09 20 20 20 |"ln -s "|);.X. |
|000033d0| 20 66 70 72 69 6e 74 66 | 28 6f 75 74 5f 66 70 2c | fprintf|(out_fp,|
|000033e0| 20 22 5c 74 25 73 22 2c | 20 66 6e 29 3b 0a 58 09 | "\t%s",| fn);.X.|
|000033f0| 20 20 20 20 66 70 72 69 | 6e 74 66 28 6f 75 74 5f | fpri|ntf(out_|
|00003400| 66 70 2c 20 22 5c 74 25 | 73 22 2c 20 6e 61 6d 65 |fp, "\t%|s", name|
|00003410| 29 3b 0a 58 09 20 20 20 | 20 66 70 72 69 6e 74 66 |);.X. | fprintf|
|00003420| 28 6f 75 74 5f 66 70 2c | 20 22 5c 6e 22 29 3b 0a |(out_fp,| "\n");.|
|00003430| 58 09 7d 0a 58 09 69 66 | 28 64 65 62 75 67 29 66 |X.}.X.if|(debug)f|
|00003440| 70 72 69 6e 74 66 28 73 | 74 64 65 72 72 2c 20 22 |printf(s|tderr, "|
|00003450| 6c 6e 20 2d 73 5c 74 25 | 73 5c 74 25 73 5c 6e 22 |ln -s\t%|s\t%s\n"|
|00003460| 2c 20 66 6e 2c 20 6e 61 | 6d 65 29 3b 0a 58 09 62 |, fn, na|me);.X.b|
|00003470| 72 65 61 6b 3b 0a 58 20 | 20 20 20 63 61 73 65 20 |reak;.X | case |
|00003480| 46 54 57 5f 44 3a 0a 58 | 09 2f 2a 20 52 43 53 20 |FTW_D:.X|./* RCS |
|00003490| 69 73 20 61 6c 77 61 79 | 73 20 61 20 6c 69 6e 6b |is alway|s a link|
|000034a0| 20 74 6f 20 74 68 65 20 | 72 65 61 6c 20 62 61 73 | to the |real bas|
|000034b0| 65 20 73 79 73 74 65 6d | 20 20 20 20 20 20 20 20 |e system| |
|000034c0| 20 20 20 20 20 20 2a 2f | 0a 58 09 2f 2a 20 68 61 | */|.X./* ha|
|000034d0| 76 65 20 74 6f 20 6c 6f | 6f 6b 20 61 74 20 74 68 |ve to lo|ok at th|
|000034e0| 65 20 4c 41 53 54 20 34 | 20 63 68 61 72 20 6f 66 |e LAST 4| char of|
|000034f0| 20 6e 61 6d 65 20 66 6f | 72 20 52 43 53 20 64 69 | name fo|r RCS di|
|00003500| 72 65 63 74 6f 72 79 20 | 2a 2f 0a 58 09 2f 2a 20 |rectory |*/.X./* |
|00003510| 54 68 65 20 52 43 53 20 | 64 69 72 65 63 74 6f 72 |The RCS |director|
|00003520| 79 20 77 69 6c 6c 20 62 | 65 20 6c 69 6e 6b 65 64 |y will b|e linked|
|00003530| 20 72 61 74 68 65 72 20 | 74 68 61 6e 20 6d 6b 64 | rather |than mkd|
|00003540| 69 72 27 65 64 20 20 20 | 20 20 2a 2f 0a 58 09 74 |ir'ed | */.X.t|
|00003550| 65 6d 70 20 3d 20 6e 61 | 6d 65 20 2b 20 73 74 72 |emp = na|me + str|
|00003560| 6c 65 6e 28 6e 61 6d 65 | 29 20 2d 20 34 3b 0a 58 |len(name|) - 4;.X|
|00003570| 09 69 66 28 73 74 72 63 | 6d 70 28 74 65 6d 70 2c |.if(strc|mp(temp,|
|00003580| 20 22 2f 52 43 53 22 29 | 20 3d 3d 20 30 29 7b 0a | "/RCS")| == 0){.|
|00003590| 58 09 20 20 20 20 2f 2a | 20 69 66 20 74 68 69 73 |X. /*| if this|
|000035a0| 20 6c 69 6e 6b 20 61 6c | 72 65 61 64 79 20 65 78 | link al|ready ex|
|000035b0| 69 73 74 73 2c 20 64 6f | 20 4e 4f 54 20 64 6f 20 |ists, do| NOT do |
|000035c0| 69 74 20 61 67 61 69 6e | 2c 20 2a 2f 0a 58 09 20 |it again|, */.X. |
|000035d0| 20 20 20 2f 2a 20 61 6e | 20 6f 74 68 65 72 20 6c | /* an| other l|
|000035e0| 69 6e 6b 20 77 69 6c 6c | 20 6c 65 61 64 20 74 6f |ink will| lead to|
|000035f0| 20 61 20 6c 6f 6f 70 20 | 69 6e 20 74 68 65 20 6d | a loop |in the m|
|00003600| 61 73 74 65 72 20 20 2a | 2f 0a 58 09 20 20 20 20 |aster *|/.X. |
|00003610| 2f 2a 20 74 72 65 65 2e | 20 20 20 20 20 20 20 20 |/* tree.| |
|00003620| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003630| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003640| 20 20 20 20 2a 2f 0a 58 | 09 20 20 20 20 63 68 61 | */.X|. cha|
|00003650| 72 20 6c 62 75 66 5b 42 | 55 46 53 49 5a 5d 3b 0a |r lbuf[B|UFSIZ];.|
|00003660| 58 09 20 20 20 20 69 66 | 28 28 73 74 61 74 75 73 |X. if|((status|
|00003670| 20 3d 20 72 65 61 64 6c | 69 6e 6b 28 6e 61 6d 65 | = readl|ink(name|
|00003680| 2b 31 2c 20 6c 62 75 66 | 2c 20 42 55 46 53 49 5a |+1, lbuf|, BUFSIZ|
|00003690| 29 29 20 3e 3d 20 30 29 | 0a 58 09 09 72 65 74 75 |)) >= 0)|.X..retu|
|000036a0| 72 6e 20 30 3b 0a 58 0a | 58 09 20 20 20 20 73 70 |rn 0;.X.|X. sp|
|000036b0| 72 69 6e 74 66 28 62 75 | 66 2c 20 22 6c 6e 20 2d |rintf(bu|f, "ln -|
|000036c0| 73 20 25 73 20 25 73 22 | 2c 20 66 6e 2c 20 6e 61 |s %s %s"|, fn, na|
|000036d0| 6d 65 20 2b 20 31 29 3b | 0a 58 09 20 20 20 20 69 |me + 1);|.X. i|
|000036e0| 66 28 64 65 62 75 67 29 | 0a 58 09 09 66 70 72 69 |f(debug)|.X..fpri|
|000036f0| 6e 74 66 28 73 74 64 65 | 72 72 2c 20 22 25 73 5c |ntf(stde|rr, "%s\|
|00003700| 6e 22 2c 20 62 75 66 29 | 3b 0a 58 0a 58 09 20 20 |n", buf)|;.X.X. |
|00003710| 20 20 69 66 20 28 28 73 | 62 75 66 2d 3e 73 74 5f | if ((s|buf->st_|
|00003720| 6d 6f 64 65 20 26 20 53 | 5f 49 46 4d 54 29 20 3d |mode & S|_IFMT) =|
|00003730| 3d 20 53 5f 49 46 44 49 | 52 29 20 7b 0a 58 09 09 |= S_IFDI|R) {.X..|
|00003740| 73 74 72 75 63 74 20 73 | 74 61 74 20 78 62 75 66 |struct s|tat xbuf|
|00003750| 3b 0a 58 0a 58 09 09 73 | 74 61 74 28 66 6e 2c 20 |;.X.X..s|tat(fn, |
|00003760| 26 78 62 75 66 29 3b 0a | 58 09 09 2f 2a 20 69 66 |&xbuf);.|X../* if|
|00003770| 20 74 68 69 73 20 69 73 | 20 61 20 6c 69 6e 6b 20 | this is| a link |
|00003780| 74 6f 20 61 20 64 69 72 | 65 63 74 6f 72 79 2c 20 |to a dir|ectory, |
|00003790| 69 67 6e 6f 72 65 20 2a | 2f 0a 58 09 09 69 66 20 |ignore *|/.X..if |
|000037a0| 28 28 78 62 75 66 2e 73 | 74 5f 6d 6f 64 65 20 26 |((xbuf.s|t_mode &|
|000037b0| 20 53 5f 49 46 4d 54 29 | 20 3d 3d 20 53 5f 49 46 | S_IFMT)| == S_IF|
|000037c0| 4c 4e 4b 29 20 7b 0a 58 | 09 09 20 20 20 20 66 70 |LNK) {.X|.. fp|
|000037d0| 72 69 6e 74 66 28 22 25 | 64 3a 6c 69 6e 6b 20 74 |rintf("%|d:link t|
|000037e0| 6f 20 65 78 69 73 74 69 | 6e 67 20 64 69 72 65 63 |o existi|ng direc|
|000037f0| 74 6f 72 79 20 69 67 6e | 6f 72 65 64 3a 25 73 5c |tory ign|ored:%s\|
|00003800| 6e 22 2c 0a 58 09 09 09 | 5f 5f 46 49 4c 45 5f 5f |n",.X...|__FILE__|
|00003810| 2c 20 62 75 66 29 3b 0a | 58 09 09 20 20 20 20 72 |, buf);.|X.. r|
|00003820| 65 74 75 72 6e 20 30 3b | 0a 58 09 09 7d 0a 58 09 |eturn 0;|.X..}.X.|
|00003830| 20 20 20 20 7d 0a 58 09 | 7d 0a 58 09 65 6c 73 65 | }.X.|}.X.else|
|00003840| 7b 0a 58 09 20 20 20 20 | 63 68 61 72 20 78 62 75 |{.X. |char xbu|
|00003850| 66 5b 35 31 32 5d 3b 0a | 58 09 20 20 20 20 73 74 |f[512];.|X. st|
|00003860| 72 63 70 79 28 78 62 75 | 66 2c 20 6e 61 6d 65 2b |rcpy(xbu|f, name+|
|00003870| 31 29 3b 0a 58 09 20 20 | 20 20 73 70 72 69 6e 74 |1);.X. | sprint|
|00003880| 66 28 62 75 66 2c 20 22 | 6d 6b 64 69 72 20 25 73 |f(buf, "|mkdir %s|
|00003890| 22 2c 20 78 62 75 66 29 | 3b 0a 58 09 20 20 20 20 |", xbuf)|;.X. |
|000038a0| 69 66 28 64 65 62 75 67 | 29 66 70 72 69 6e 74 66 |if(debug|)fprintf|
|000038b0| 28 73 74 64 65 72 72 2c | 20 22 25 73 5c 6e 22 2c |(stderr,| "%s\n",|
|000038c0| 20 78 62 75 66 29 3b 0a | 58 09 7d 0a 58 0a 58 23 | xbuf);.|X.}.X.X#|
|000038d0| 64 65 66 69 6e 65 20 46 | 4f 52 5f 52 45 41 4c 09 |define F|OR_REAL.|
|000038e0| 31 0a 58 23 69 66 20 46 | 4f 52 5f 52 45 41 4c 0a |1.X#if F|OR_REAL.|
|000038f0| 58 09 2f 2a 20 4e 45 56 | 45 52 20 63 72 65 61 74 |X./* NEV|ER creat|
|00003900| 65 20 61 20 6c 6f 6f 70 | 20 62 79 20 6c 69 6e 6b |e a loop| by link|
|00003910| 69 6e 67 20 77 69 74 68 | 20 61 20 66 69 6c 65 20 |ing with| a file |
|00003920| 63 6f 6e 74 61 69 6e 69 | 6e 67 20 52 43 53 2f 52 |containi|ng RCS/R|
|00003930| 43 53 20 2a 2f 0a 58 09 | 69 66 28 73 74 72 73 65 |CS */.X.|if(strse|
|00003940| 61 72 63 68 28 62 75 66 | 2c 20 22 52 43 53 2f 52 |arch(buf|, "RCS/R|
|00003950| 43 53 22 29 20 3d 3d 20 | 30 29 0a 58 09 20 20 20 |CS") == |0).X. |
|00003960| 20 73 79 73 74 65 6d 28 | 62 75 66 29 3b 0a 58 23 | system(|buf);.X#|
|00003970| 65 6c 73 65 0a 58 09 66 | 70 72 69 6e 74 66 28 6f |else.X.f|printf(o|
|00003980| 75 74 5f 66 70 2c 20 22 | 25 73 5c 6e 22 2c 20 62 |ut_fp, "|%s\n", b|
|00003990| 75 66 29 3b 0a 58 23 65 | 6e 64 69 66 0a 58 09 62 |uf);.X#e|ndif.X.b|
|000039a0| 72 65 61 6b 3b 0a 58 20 | 20 20 20 63 61 73 65 20 |reak;.X | case |
|000039b0| 46 54 57 5f 4e 53 3a 0a | 58 09 66 70 72 69 6e 74 |FTW_NS:.|X.fprint|
|000039c0| 66 28 73 74 64 65 72 72 | 2c 20 22 73 74 61 74 5f |f(stderr|, "stat_|
|000039d0| 66 61 69 6c 65 64 22 29 | 3b 0a 58 09 66 70 72 69 |failed")|;.X.fpri|
|000039e0| 6e 74 66 28 73 74 64 65 | 72 72 2c 20 22 5c 74 25 |ntf(stde|rr, "\t%|
|000039f0| 73 22 2c 20 66 6e 29 3b | 0a 58 09 66 70 72 69 6e |s", fn);|.X.fprin|
|00003a00| 74 66 28 73 74 64 65 72 | 72 2c 20 22 5c 74 25 73 |tf(stder|r, "\t%s|
|00003a10| 22 2c 20 6e 61 6d 65 29 | 3b 0a 58 09 66 70 72 69 |", name)|;.X.fpri|
|00003a20| 6e 74 66 28 73 74 64 65 | 72 72 2c 20 22 5c 6e 22 |ntf(stde|rr, "\n"|
|00003a30| 29 3b 0a 58 09 62 72 65 | 61 6b 3b 0a 58 20 20 20 |);.X.bre|ak;.X |
|00003a40| 20 7d 0a 58 20 20 20 20 | 72 65 74 75 72 6e 20 30 | }.X |return 0|
|00003a50| 3b 0a 58 7d 0a 58 0a 58 | 6d 61 69 6e 28 61 72 67 |;.X}.X.X|main(arg|
|00003a60| 63 2c 20 61 72 67 76 29 | 0a 58 69 6e 74 20 61 72 |c, argv)|.Xint ar|
|00003a70| 67 63 3b 0a 58 63 68 61 | 72 20 2a 61 72 67 76 5b |gc;.Xcha|r *argv[|
|00003a80| 5d 3b 0a 58 7b 0a 58 20 | 20 20 20 69 6e 74 20 73 |];.X{.X | int s|
|00003a90| 61 76 65 5f 61 72 67 63 | 3b 0a 58 20 20 20 20 69 |ave_argc|;.X i|
|00003aa0| 6e 74 20 73 74 61 74 75 | 73 3b 0a 58 20 20 20 20 |nt statu|s;.X |
|00003ab0| 63 68 61 72 20 2a 70 72 | 6f 67 5f 6e 61 6d 65 3b |char *pr|og_name;|
|00003ac0| 0a 58 20 20 20 20 63 68 | 61 72 20 2a 73 3b 0a 58 |.X ch|ar *s;.X|
|00003ad0| 20 20 20 20 63 68 61 72 | 20 62 75 66 5b 42 55 46 | char| buf[BUF|
|00003ae0| 53 49 5a 5d 3b 0a 58 20 | 20 20 20 63 68 61 72 20 |SIZ];.X | char |
|00003af0| 73 79 73 5f 63 6d 64 5b | 42 55 46 53 49 5a 5d 3b |sys_cmd[|BUFSIZ];|
|00003b00| 0a 58 20 20 20 20 63 68 | 61 72 20 2a 72 63 73 5f |.X ch|ar *rcs_|
|00003b10| 62 61 73 65 5f 66 6e 3b | 0a 58 0a 58 20 20 20 20 |base_fn;|.X.X |
|00003b20| 2f 2a 20 70 61 72 73 65 | 20 74 68 65 20 6e 65 63 |/* parse| the nec|
|00003b30| 65 73 73 61 72 79 20 6f | 70 74 69 6f 6e 73 20 2a |essary o|ptions *|
|00003b40| 2f 0a 58 20 20 20 20 73 | 61 76 65 5f 61 72 67 63 |/.X s|ave_argc|
|00003b50| 20 3d 20 61 72 67 63 3b | 0a 58 20 20 20 20 70 72 | = argc;|.X pr|
|00003b60| 6f 67 5f 6e 61 6d 65 20 | 3d 20 2a 61 72 67 76 3b |og_name |= *argv;|
|00003b70| 0a 58 20 20 20 20 77 68 | 69 6c 65 20 28 2d 2d 61 |.X wh|ile (--a|
|00003b80| 72 67 63 20 3e 20 30 20 | 26 26 20 28 2a 2b 2b 61 |rgc > 0 |&& (*++a|
|00003b90| 72 67 76 29 5b 30 5d 20 | 3d 3d 20 27 2d 27 29 20 |rgv)[0] |== '-') |
|00003ba0| 7b 0a 58 09 66 6f 72 20 | 28 73 20 3d 20 61 72 67 |{.X.for |(s = arg|
|00003bb0| 76 5b 30 5d 20 2b 20 31 | 3b 20 2a 73 20 21 3d 20 |v[0] + 1|; *s != |
|00003bc0| 27 5c 30 27 3b 20 73 2b | 2b 29 20 7b 0a 58 09 20 |'\0'; s+|+) {.X. |
|00003bd0| 20 20 20 73 77 69 74 63 | 68 20 28 2a 73 29 20 7b | switc|h (*s) {|
|00003be0| 0a 58 09 20 20 20 20 64 | 65 66 61 75 6c 74 3a 0a |.X. d|efault:.|
|00003bf0| 58 09 20 20 20 20 63 61 | 73 65 20 27 3f 27 3a 0a |X. ca|se '?':.|
|00003c00| 58 09 09 66 70 72 69 6e | 74 66 28 73 74 64 65 72 |X..fprin|tf(stder|
|00003c10| 72 2c 20 22 75 73 61 67 | 65 3a 20 25 73 20 62 61 |r, "usag|e: %s ba|
|00003c20| 73 65 5f 64 69 72 5c 6e | 22 2c 20 70 72 6f 67 5f |se_dir\n|", prog_|
|00003c30| 6e 61 6d 65 29 3b 0a 58 | 09 09 66 70 72 69 6e 74 |name);.X|..fprint|
|00003c40| 66 28 73 74 64 65 72 72 | 2c 20 22 5c 74 2d 49 66 |f(stderr|, "\t-If|
|00003c50| 69 6c 65 20 3d 20 75 73 | 65 20 5c 22 66 69 6c 65 |ile = us|e \"file|
|00003c60| 5c 22 20 61 73 20 61 6e | 20 69 6e 63 6c 75 64 65 |\" as an| include|
|00003c70| 20 69 6e 20 66 67 72 65 | 70 5c 6e 22 29 3b 0a 58 | in fgre|p\n");.X|
|00003c80| 09 09 66 70 72 69 6e 74 | 66 28 73 74 64 65 72 72 |..fprint|f(stderr|
|00003c90| 2c 20 22 5c 74 2d 58 66 | 69 6c 65 20 3d 20 75 73 |, "\t-Xf|ile = us|
|00003ca0| 65 20 5c 22 66 69 6c 65 | 5c 22 20 61 73 20 61 6e |e \"file|\" as an|
|00003cb0| 20 65 78 6c 63 75 64 65 | 20 69 6e 20 66 67 72 65 | exlcude| in fgre|
|00003cc0| 70 5c 6e 22 29 3b 0a 58 | 09 09 65 78 69 74 28 31 |p\n");.X|..exit(1|
|00003cd0| 29 3b 0a 58 09 20 20 20 | 20 63 61 73 65 20 27 64 |);.X. | case 'd|
|00003ce0| 27 3a 0a 58 09 09 64 65 | 62 75 67 20 3d 20 31 3b |':.X..de|bug = 1;|
|00003cf0| 0a 58 09 09 62 72 65 61 | 6b 3b 0a 58 09 20 20 20 |.X..brea|k;.X. |
|00003d00| 20 63 61 73 65 20 27 49 | 27 3a 0a 58 09 09 69 6e | case 'I|':.X..in|
|00003d10| 63 6c 5f 66 6e 20 3d 20 | 2b 2b 73 3b 0a 58 09 09 |cl_fn = |++s;.X..|
|00003d20| 77 68 69 6c 65 20 28 2a | 2b 2b 73 29 3b 09 2f 2a |while (*|++s);./*|
|00003d30| 20 74 6f 20 65 6e 64 20 | 6f 66 20 73 74 72 69 6e | to end |of strin|
|00003d40| 67 20 2a 2f 0a 58 09 09 | 2d 2d 73 3b 09 09 2f 2a |g */.X..|--s;../*|
|00003d50| 20 62 75 74 20 6e 6f 74 | 20 74 6f 6f 20 66 61 72 | but not| too far|
|00003d60| 20 2a 2f 0a 58 09 09 62 | 72 65 61 6b 3b 0a 58 09 | */.X..b|reak;.X.|
|00003d70| 20 20 20 20 63 61 73 65 | 20 27 58 27 3a 0a 58 09 | case| 'X':.X.|
|00003d80| 09 65 78 63 6c 5f 66 6e | 20 3d 20 2b 2b 73 3b 0a |.excl_fn| = ++s;.|
|00003d90| 58 09 09 77 68 69 6c 65 | 20 28 2a 2b 2b 73 29 3b |X..while| (*++s);|
|00003da0| 09 2f 2a 20 74 6f 20 65 | 6e 64 20 6f 66 20 73 74 |./* to e|nd of st|
|00003db0| 72 69 6e 67 20 2a 2f 0a | 58 09 09 2d 2d 73 3b 09 |ring */.|X..--s;.|
|00003dc0| 09 2f 2a 20 62 75 74 20 | 6e 6f 74 20 74 6f 6f 20 |./* but |not too |
|00003dd0| 66 61 72 20 2a 2f 0a 58 | 09 09 62 72 65 61 6b 3b |far */.X|..break;|
|00003de0| 0a 58 09 20 20 20 20 7d | 0a 58 09 7d 0a 58 20 20 |.X. }|.X.}.X |
|00003df0| 20 20 7d 0a 58 0a 58 20 | 20 20 20 2f 2a 20 63 6f | }.X.X | /* co|
|00003e00| 6d 70 69 6c 65 20 72 65 | 67 75 6c 61 72 20 65 78 |mpile re|gular ex|
|00003e10| 70 72 65 73 73 69 6f 6e | 20 74 6f 20 70 72 65 76 |pression| to prev|
|00003e20| 65 6e 74 20 64 65 73 63 | 65 6e 74 20 69 6e 74 6f |ent desc|ent into|
|00003e30| 20 2a 2f 0a 58 20 20 20 | 20 2f 2a 20 61 6e 20 52 | */.X | /* an R|
|00003e40| 43 53 20 6c 69 6e 6b 65 | 64 20 73 75 62 64 69 72 |CS linke|d subdir|
|00003e50| 65 63 74 6f 72 79 2e 20 | 20 20 20 20 20 20 20 20 |ectory. | |
|00003e60| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 2a | | *|
|00003e70| 2f 0a 58 20 20 20 20 69 | 66 28 68 65 61 64 20 3d |/.X i|f(head =|
|00003e80| 20 28 63 68 61 72 20 2a | 29 72 65 5f 63 6f 6d 70 | (char *|)re_comp|
|00003e90| 28 22 5c 2f 52 43 53 5c | 2f 22 29 29 7b 0a 58 09 |("\/RCS\|/")){.X.|
|00003ea0| 70 72 69 6e 74 66 28 68 | 65 61 64 29 3b 0a 58 09 |printf(h|ead);.X.|
|00003eb0| 65 78 69 74 28 31 29 3b | 0a 58 20 20 20 20 7d 0a |exit(1);|.X }.|
|00003ec0| 58 0a 58 20 20 20 20 74 | 65 6d 70 5f 66 6e 20 3d |X.X t|emp_fn =|
|00003ed0| 20 28 63 68 61 72 20 2a | 29 20 6d 6b 74 65 6d 70 | (char *|) mktemp|
|00003ee0| 28 22 54 54 58 58 58 58 | 58 58 22 29 3b 0a 58 20 |("TTXXXX|XX");.X |
|00003ef0| 20 20 20 6f 75 74 5f 66 | 70 20 3d 20 66 6f 70 65 | out_f|p = fope|
|00003f00| 6e 28 74 65 6d 70 5f 66 | 6e 2c 20 22 77 22 29 3b |n(temp_f|n, "w");|
|00003f10| 0a 58 0a 58 20 20 20 20 | 2f 2a 20 74 68 69 73 20 |.X.X |/* this |
|00003f20| 6d 61 79 20 6f 72 20 6d | 61 79 20 6e 6f 74 20 65 |may or m|ay not e|
|00003f30| 78 69 73 74 20 2a 2f 0a | 58 20 20 20 20 69 66 28 |xist */.|X if(|
|00003f40| 61 72 67 63 20 3d 3d 20 | 30 29 20 7b 0a 58 09 68 |argc == |0) {.X.h|
|00003f50| 65 61 64 20 3d 20 72 63 | 73 5f 72 6f 6f 74 5f 66 |ead = rc|s_root_f|
|00003f60| 6e 20 3d 20 28 63 68 61 | 72 20 2a 29 67 65 74 65 |n = (cha|r *)gete|
|00003f70| 6e 76 28 22 52 4f 4f 54 | 5f 54 52 45 45 22 29 3b |nv("ROOT|_TREE");|
|00003f80| 0a 58 20 20 20 20 7d 0a | 58 20 20 20 20 65 6c 73 |.X }.|X els|
|00003f90| 65 0a 58 09 68 65 61 64 | 20 3d 20 2a 61 72 67 76 |e.X.head| = *argv|
|00003fa0| 3b 09 09 2f 2a 20 67 65 | 74 20 74 68 65 20 68 65 |;../* ge|t the he|
|00003fb0| 61 64 20 2a 2f 0a 58 0a | 58 0a 58 20 20 20 20 7b |ad */.X.|X.X {|
|00003fc0| 0a 58 09 69 6e 74 20 69 | 3b 0a 58 0a 58 09 2f 2a |.X.int i|;.X.X./*|
|00003fd0| 20 6d 6f 76 65 20 74 68 | 65 20 65 6e 76 69 72 6f | move th|e enviro|
|00003fe0| 6e 6d 65 6e 74 61 6c 20 | 76 61 72 69 61 6c 62 65 |nmental |varialbe|
|00003ff0| 20 74 6f 20 61 20 77 6f | 72 6b 20 61 72 65 61 20 | to a wo|rk area |
|00004000| 2a 2f 0a 58 09 66 6f 72 | 28 69 20 3d 20 30 3b 20 |*/.X.for|(i = 0; |
|00004010| 69 20 3c 20 73 69 7a 65 | 6f 66 28 68 65 61 64 5f |i < size|of(head_|
|00004020| 62 75 66 29 3b 20 68 65 | 61 64 5f 62 75 66 5b 69 |buf); he|ad_buf[i|
|00004030| 2b 2b 5d 20 3d 20 27 5c | 30 27 29 3b 0a 58 09 73 |++] = '\|0');.X.s|
|00004040| 74 72 63 70 79 28 68 65 | 61 64 5f 62 75 66 2c 20 |trcpy(he|ad_buf, |
|00004050| 68 65 61 64 29 3b 0a 58 | 09 68 65 61 64 20 3d 20 |head);.X|.head = |
|00004060| 68 65 61 64 5f 62 75 66 | 3b 0a 58 20 20 20 20 7d |head_buf|;.X }|
|00004070| 0a 58 0a 58 20 20 20 20 | 2f 2a 20 70 72 6f 76 65 |.X.X |/* prove|
|00004080| 20 65 78 69 73 74 65 6e | 63 65 2f 72 65 61 64 61 | existen|ce/reada|
|00004090| 62 69 6c 69 74 79 20 6f | 66 20 52 43 53 20 72 6f |bility o|f RCS ro|
|000040a0| 6f 74 20 66 69 6c 65 20 | 2a 2f 0a 58 20 20 20 20 |ot file |*/.X |
|000040b0| 69 66 20 28 28 66 70 20 | 3d 20 66 6f 70 65 6e 28 |if ((fp |= fopen(|
|000040c0| 72 63 73 5f 72 6f 6f 74 | 5f 66 6e 2c 20 22 72 22 |rcs_root|_fn, "r"|
|000040d0| 29 29 20 3d 3d 20 28 46 | 49 4c 45 20 2a 29 20 30 |)) == (F|ILE *) 0|
|000040e0| 29 20 7b 0a 58 09 66 70 | 72 69 6e 74 66 28 73 74 |) {.X.fp|rintf(st|
|000040f0| 64 65 72 72 2c 20 22 43 | 61 6e 6e 6f 74 20 6f 70 |derr, "C|annot op|
|00004100| 65 6e 20 24 52 4f 4f 54 | 5f 54 52 45 45 20 25 73 |en $ROOT|_TREE %s|
|00004110| 5c 6e 22 2c 20 72 63 73 | 5f 62 61 73 65 5f 66 6e |\n", rcs|_base_fn|
|00004120| 29 3b 0a 58 09 65 78 69 | 74 28 31 29 3b 0a 58 20 |);.X.exi|t(1);.X |
|00004130| 20 20 20 7d 0a 58 20 20 | 20 20 66 63 6c 6f 73 65 | }.X | fclose|
|00004140| 28 66 70 29 3b 0a 58 0a | 58 20 20 20 20 2f 2a 20 |(fp);.X.|X /* |
|00004150| 6f 70 65 6e 20 74 68 65 | 20 65 78 63 6c 75 73 69 |open the| exclusi|
|00004160| 6f 6e 20 66 69 6c 65 2c | 20 69 66 20 6e 6f 6e 65 |on file,| if none|
|00004170| 20 63 68 65 63 6b 20 75 | 6e 64 65 72 20 74 68 65 | check u|nder the|
|00004180| 20 52 4f 4f 54 5f 54 52 | 45 45 20 64 69 72 20 2a | ROOT_TR|EE dir *|
|00004190| 2f 0a 58 20 20 20 20 69 | 66 20 28 28 65 78 63 6c |/.X i|f ((excl|
|000041a0| 5f 66 70 20 3d 20 66 6f | 70 65 6e 28 65 78 63 6c |_fp = fo|pen(excl|
|000041b0| 5f 66 6e 2c 20 22 72 22 | 29 29 20 3d 3d 20 28 46 |_fn, "r"|)) == (F|
|000041c0| 49 4c 45 20 2a 29 20 30 | 29 20 7b 0a 58 09 73 70 |ILE *) 0|) {.X.sp|
|000041d0| 72 69 6e 74 66 28 65 78 | 63 6c 5f 66 6e 20 3d 20 |rintf(ex|cl_fn = |
|000041e0| 73 79 73 5f 63 6d 64 2c | 20 22 25 73 2f 65 78 63 |sys_cmd,| "%s/exc|
|000041f0| 6c 5f 66 69 6c 65 22 2c | 20 72 63 73 5f 72 6f 6f |l_file",| rcs_roo|
|00004200| 74 5f 66 6e 29 3b 0a 58 | 09 65 78 63 6c 5f 66 6e |t_fn);.X|.excl_fn|
|00004210| 20 3d 20 73 74 72 64 75 | 70 28 73 79 73 5f 63 6d | = strdu|p(sys_cm|
|00004220| 64 29 3b 09 2f 2a 20 73 | 61 76 65 20 74 68 69 73 |d);./* s|ave this|
|00004230| 20 73 74 72 69 6e 67 20 | 2a 2f 0a 58 09 69 66 20 | string |*/.X.if |
|00004240| 28 28 65 78 63 6c 5f 66 | 70 20 3d 20 66 6f 70 65 |((excl_f|p = fope|
|00004250| 6e 28 73 79 73 5f 63 6d | 64 2c 20 22 72 22 29 29 |n(sys_cm|d, "r"))|
|00004260| 20 3d 3d 20 28 46 49 4c | 45 20 2a 29 20 30 29 20 | == (FIL|E *) 0) |
|00004270| 7b 0a 58 09 20 20 20 20 | 66 70 72 69 6e 74 66 28 |{.X. |fprintf(|
|00004280| 73 74 64 65 72 72 2c 20 | 22 43 61 6e 6e 6f 74 20 |stderr, |"Cannot |
|00004290| 72 65 61 64 20 66 69 6c | 65 20 65 78 63 6c 75 73 |read fil|e exclus|
|000042a0| 69 6f 6e 20 6c 69 73 74 | 3a 20 25 73 5c 6e 22 2c |ion list|: %s\n",|
|000042b0| 0a 58 09 09 65 78 63 6c | 5f 66 6e 29 3b 0a 58 09 |.X..excl|_fn);.X.|
|000042c0| 20 20 20 20 65 78 69 74 | 28 31 29 3b 0a 58 09 7d | exit|(1);.X.}|
|000042d0| 0a 58 20 20 20 20 7d 0a | 58 0a 58 20 20 20 20 2f |.X }.|X.X /|
|000042e0| 2a 20 6f 70 65 6e 20 74 | 68 65 20 69 6e 63 6c 75 |* open t|he inclu|
|000042f0| 73 69 6f 6e 20 66 69 6c | 65 2c 20 69 66 20 6e 6f |sion fil|e, if no|
|00004300| 6e 65 20 63 68 65 63 6b | 20 75 6e 64 65 72 20 74 |ne check| under t|
|00004310| 68 65 20 52 4f 4f 54 5f | 54 52 45 45 20 64 69 72 |he ROOT_|TREE dir|
|00004320| 20 2a 2f 0a 58 20 20 20 | 20 69 66 20 28 28 69 6e | */.X | if ((in|
|00004330| 63 6c 5f 66 70 20 3d 20 | 66 6f 70 65 6e 28 69 6e |cl_fp = |fopen(in|
|00004340| 63 6c 5f 66 6e 2c 20 22 | 72 22 29 29 20 3d 3d 20 |cl_fn, "|r")) == |
|00004350| 28 46 49 4c 45 20 2a 29 | 20 30 29 20 7b 0a 58 09 |(FILE *)| 0) {.X.|
|00004360| 73 70 72 69 6e 74 66 28 | 73 79 73 5f 63 6d 64 2c |sprintf(|sys_cmd,|
|00004370| 20 22 25 73 2f 69 6e 63 | 6c 5f 66 69 6c 65 22 2c | "%s/inc|l_file",|
|00004380| 20 72 63 73 5f 72 6f 6f | 74 5f 66 6e 29 3b 0a 58 | rcs_roo|t_fn);.X|
|00004390| 09 69 6e 63 6c 5f 66 6e | 20 3d 20 73 74 72 64 75 |.incl_fn| = strdu|
|000043a0| 70 28 73 79 73 5f 63 6d | 64 29 3b 09 2f 2a 20 73 |p(sys_cm|d);./* s|
|000043b0| 61 76 65 20 74 68 69 73 | 20 73 74 72 69 6e 67 20 |ave this| string |
|000043c0| 2a 2f 0a 58 09 69 66 20 | 28 28 69 6e 63 6c 5f 66 |*/.X.if |((incl_f|
|000043d0| 70 20 3d 20 66 6f 70 65 | 6e 28 73 79 73 5f 63 6d |p = fope|n(sys_cm|
|000043e0| 64 2c 20 22 72 22 29 29 | 20 3d 3d 20 28 46 49 4c |d, "r"))| == (FIL|
|000043f0| 45 20 2a 29 20 30 29 20 | 7b 0a 58 09 20 20 20 20 |E *) 0) |{.X. |
|00004400| 66 70 72 69 6e 74 66 28 | 73 74 64 65 72 72 2c 20 |fprintf(|stderr, |
|00004410| 22 43 61 6e 6e 6f 74 20 | 72 65 61 64 20 66 69 6c |"Cannot |read fil|
|00004420| 65 20 69 6e 63 6c 75 73 | 69 6f 6e 20 6c 69 73 74 |e inclus|ion list|
|00004430| 3a 20 25 73 5c 6e 22 2c | 0a 58 09 09 69 6e 63 6c |: %s\n",|.X..incl|
|00004440| 5f 66 6e 29 3b 0a 58 09 | 20 20 20 20 65 78 69 74 |_fn);.X.| exit|
|00004450| 28 31 29 3b 0a 58 09 7d | 0a 58 20 20 20 20 7d 0a |(1);.X.}|.X }.|
|00004460| 58 0a 58 20 20 20 20 66 | 74 77 28 72 63 73 5f 72 |X.X f|tw(rcs_r|
|00004470| 6f 6f 74 5f 66 6e 2c 20 | 70 72 69 6e 74 5f 66 69 |oot_fn, |print_fi|
|00004480| 6c 65 2c 20 32 30 29 3b | 0a 58 0a 58 20 20 20 20 |le, 20);|.X.X |
|00004490| 72 65 77 69 6e 64 28 6f | 75 74 5f 66 70 29 3b 0a |rewind(o|ut_fp);.|
|000044a0| 58 20 20 20 20 73 70 72 | 69 6e 74 66 28 73 79 73 |X spr|intf(sys|
|000044b0| 5f 63 6d 64 2c 20 22 63 | 61 74 20 25 73 22 2c 20 |_cmd, "c|at %s", |
|000044c0| 74 65 6d 70 5f 66 6e 29 | 3b 0a 58 20 20 20 20 69 |temp_fn)|;.X i|
|000044d0| 66 20 28 69 6e 63 6c 5f | 66 70 29 20 7b 0a 58 09 |f (incl_|fp) {.X.|
|000044e0| 73 70 72 69 6e 74 66 28 | 62 75 66 2c 20 22 7c 20 |sprintf(|buf, "| |
|000044f0| 66 67 72 65 70 20 2d 66 | 20 25 73 20 22 2c 20 69 |fgrep -f| %s ", i|
|00004500| 6e 63 6c 5f 66 6e 29 3b | 0a 58 09 73 74 72 63 61 |ncl_fn);|.X.strca|
|00004510| 74 28 73 79 73 5f 63 6d | 64 2c 20 62 75 66 29 3b |t(sys_cm|d, buf);|
|00004520| 0a 58 20 20 20 20 7d 0a | 58 20 20 20 20 69 66 20 |.X }.|X if |
|00004530| 28 65 78 63 6c 5f 66 70 | 29 20 7b 0a 58 09 73 70 |(excl_fp|) {.X.sp|
|00004540| 72 69 6e 74 66 28 62 75 | 66 2c 20 22 7c 20 66 67 |rintf(bu|f, "| fg|
|00004550| 72 65 70 20 2d 76 20 2d | 66 20 25 73 20 22 2c 20 |rep -v -|f %s ", |
|00004560| 65 78 63 6c 5f 66 6e 29 | 3b 0a 58 09 73 74 72 63 |excl_fn)|;.X.strc|
|00004570| 61 74 28 73 79 73 5f 63 | 6d 64 2c 20 62 75 66 29 |at(sys_c|md, buf)|
|00004580| 3b 0a 58 20 20 20 20 7d | 0a 58 20 20 20 20 73 74 |;.X }|.X st|
|00004590| 72 63 61 74 28 73 79 73 | 5f 63 6d 64 2c 20 22 20 |rcat(sys|_cmd, " |
|000045a0| 7c 20 2f 62 69 6e 2f 63 | 73 68 20 22 29 3b 0a 58 || /bin/c|sh ");.X|
|000045b0| 20 20 20 20 2f 2a 20 44 | 6f 20 6e 6f 74 20 72 65 | /* D|o not re|
|000045c0| 6d 6f 76 65 20 74 65 6d | 70 20 66 69 6c 65 20 69 |move tem|p file i|
|000045d0| 66 20 64 65 62 75 67 67 | 69 6e 67 20 2a 2f 0a 58 |f debugg|ing */.X|
|000045e0| 20 20 20 20 69 66 28 21 | 64 65 62 75 67 29 20 7b | if(!|debug) {|
|000045f0| 0a 58 09 73 74 72 63 61 | 74 28 73 79 73 5f 63 6d |.X.strca|t(sys_cm|
|00004600| 64 2c 20 22 3b 20 72 6d | 20 22 29 3b 0a 58 09 73 |d, "; rm| ");.X.s|
|00004610| 74 72 63 61 74 28 73 79 | 73 5f 63 6d 64 2c 20 74 |trcat(sy|s_cmd, t|
|00004620| 65 6d 70 5f 66 6e 29 3b | 0a 58 20 20 20 20 7d 0a |emp_fn);|.X }.|
|00004630| 58 20 20 20 20 70 72 69 | 6e 74 66 28 22 25 73 5c |X pri|ntf("%s\|
|00004640| 6e 22 2c 20 73 79 73 5f | 63 6d 64 29 3b 0a 58 20 |n", sys_|cmd);.X |
|00004650| 20 20 20 65 78 69 74 28 | 73 79 73 74 65 6d 28 73 | exit(|system(s|
|00004660| 79 73 5f 63 6d 64 29 29 | 3b 0a 58 7d 0a 45 4e 44 |ys_cmd))|;.X}.END|
|00004670| 5f 4f 46 5f 46 49 4c 45 | 0a 65 63 68 6f 20 73 68 |_OF_FILE|.echo sh|
|00004680| 61 72 3a 20 31 20 63 6f | 6e 74 72 6f 6c 20 63 68 |ar: 1 co|ntrol ch|
|00004690| 61 72 61 63 74 65 72 20 | 6d 61 79 20 62 65 20 6d |aracter |may be m|
|000046a0| 69 73 73 69 6e 67 20 66 | 72 6f 6d 20 5c 22 27 6c |issing f|rom \"'l|
|000046b0| 6b 74 72 65 65 2e 63 27 | 5c 22 0a 69 66 20 74 65 |ktree.c'|\".if te|
|000046c0| 73 74 20 38 32 38 37 20 | 2d 6e 65 20 60 77 63 20 |st 8287 |-ne `wc |
|000046d0| 2d 63 20 3c 27 6c 6b 74 | 72 65 65 2e 63 27 60 3b |-c <'lkt|ree.c'`;|
|000046e0| 20 74 68 65 6e 0a 20 20 | 20 20 65 63 68 6f 20 73 | then. | echo s|
|000046f0| 68 61 72 3a 20 5c 22 27 | 6c 6b 74 72 65 65 2e 63 |har: \"'|lktree.c|
|00004700| 27 5c 22 20 75 6e 70 61 | 63 6b 65 64 20 77 69 74 |'\" unpa|cked wit|
|00004710| 68 20 77 72 6f 6e 67 20 | 73 69 7a 65 21 0a 66 69 |h wrong |size!.fi|
|00004720| 0a 23 20 65 6e 64 20 6f | 66 20 27 6c 6b 74 72 65 |.# end o|f 'lktre|
|00004730| 65 2e 63 27 0a 66 69 0a | 65 63 68 6f 20 73 68 61 |e.c'.fi.|echo sha|
|00004740| 72 3a 20 45 6e 64 20 6f | 66 20 61 72 63 68 69 76 |r: End o|f archiv|
|00004750| 65 20 31 20 5c 28 6f 66 | 20 31 5c 29 2e 0a 63 70 |e 1 \(of| 1\)..cp|
|00004760| 20 2f 64 65 76 2f 6e 75 | 6c 6c 20 61 72 6b 31 69 | /dev/nu|ll ark1i|
|00004770| 73 64 6f 6e 65 0a 4d 49 | 53 53 49 4e 47 3d 22 22 |sdone.MI|SSING=""|
|00004780| 0a 66 6f 72 20 49 20 69 | 6e 20 31 20 3b 20 64 6f |.for I i|n 1 ; do|
|00004790| 0a 20 20 20 20 69 66 20 | 74 65 73 74 20 21 20 2d |. if |test ! -|
|000047a0| 66 20 61 72 6b 24 7b 49 | 7d 69 73 64 6f 6e 65 20 |f ark${I|}isdone |
|000047b0| 3b 20 74 68 65 6e 0a 09 | 4d 49 53 53 49 4e 47 3d |; then..|MISSING=|
|000047c0| 22 24 7b 4d 49 53 53 49 | 4e 47 7d 20 24 7b 49 7d |"${MISSI|NG} ${I}|
|000047d0| 22 0a 20 20 20 20 66 69 | 0a 64 6f 6e 65 0a 69 66 |". fi|.done.if|
|000047e0| 20 74 65 73 74 20 22 24 | 7b 4d 49 53 53 49 4e 47 | test "$|{MISSING|
|000047f0| 7d 22 20 3d 20 22 22 20 | 3b 20 74 68 65 6e 0a 20 |}" = "" |; then. |
|00004800| 20 20 20 65 63 68 6f 20 | 59 6f 75 20 68 61 76 65 | echo |You have|
|00004810| 20 74 68 65 20 61 72 63 | 68 69 76 65 2e 0a 20 20 | the arc|hive.. |
|00004820| 20 20 72 6d 20 2d 66 20 | 61 72 6b 5b 31 2d 39 5d | rm -f |ark[1-9]|
|00004830| 69 73 64 6f 6e 65 0a 65 | 6c 73 65 0a 20 20 20 20 |isdone.e|lse. |
|00004840| 65 63 68 6f 20 59 6f 75 | 20 73 74 69 6c 6c 20 6e |echo You| still n|
|00004850| 65 65 64 20 74 6f 20 75 | 6e 70 61 63 6b 20 74 68 |eed to u|npack th|
|00004860| 65 20 66 6f 6c 6c 6f 77 | 69 6e 67 20 61 72 63 68 |e follow|ing arch|
|00004870| 69 76 65 73 3a 0a 20 20 | 20 20 65 63 68 6f 20 22 |ives:. | echo "|
|00004880| 20 20 20 20 20 20 20 20 | 22 20 24 7b 4d 49 53 53 | |" ${MISS|
|00004890| 49 4e 47 7d 0a 66 69 0a | 23 23 20 20 45 6e 64 20 |ING}.fi.|## End |
|000048a0| 6f 66 20 73 68 65 6c 6c | 20 61 72 63 68 69 76 65 |of shell| archive|
|000048b0| 2e 0a 65 78 69 74 20 30 | 0a |..exit 0|. |
+--------+-------------------------+-------------------------+--------+--------+