home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / source / a2.0bemacs-src.lha / Emacs-19.25 / lisp / shadowfile.elc < prev    next >
Emacs Compiled Lisp  |  1994-05-07  |  19.4 KB

open in: MacOS 8.1     |     Win98     |     DOS

view JSON data     |     view as text


This file was processed as: Emacs Compiled Lisp (other/emacsCompiledLisp).
This format is not currently supported by dexvert.

ConfidenceProgramDetectionMatch TypeSupport
1% dexvert Emacs Compiled Lisp (other/emacsCompiledLisp) magic Unsupported
100% file Emacs/XEmacs v19 byte-compiled Lisp data default
99% file data default
100% TrID Emacs/XEmacs byte-compiled Lisp (generic) default



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 3b 45 4c 43 13 00 00 00 | 0a 3b 3b 3b 20 63 6f 6d |;ELC....|.;;; com|
|00000010| 70 69 6c 65 64 20 62 79 | 20 72 6d 73 40 6d 6f 6c |piled by| rms@mol|
|00000020| 65 2e 67 6e 75 2e 61 69 | 2e 6d 69 74 2e 65 64 75 |e.gnu.ai|.mit.edu|
|00000030| 20 6f 6e 20 53 61 74 20 | 4d 61 79 20 20 37 20 30 | on Sat |May 7 0|
|00000040| 31 3a 33 33 3a 32 30 20 | 31 39 39 34 0a 3b 3b 3b |1:33:20 |1994.;;;|
|00000050| 20 66 72 6f 6d 20 66 69 | 6c 65 20 2f 68 6f 6d 65 | from fi|le /home|
|00000060| 2f 66 73 66 2f 72 6d 73 | 2f 65 31 39 2f 6c 69 73 |/fsf/rms|/e19/lis|
|00000070| 70 2f 73 68 61 64 6f 77 | 66 69 6c 65 2e 65 6c 0a |p/shadow|file.el.|
|00000080| 3b 3b 3b 20 65 6d 61 63 | 73 20 76 65 72 73 69 6f |;;; emac|s versio|
|00000090| 6e 20 31 39 2e 32 32 2e | 39 31 2e 35 2e 0a 3b 3b |n 19.22.|91.5..;;|
|000000a0| 3b 20 62 79 74 65 63 6f | 6d 70 20 76 65 72 73 69 |; byteco|mp versi|
|000000b0| 6f 6e 20 46 53 46 20 32 | 2e 31 30 0a 3b 3b 3b 20 |on FSF 2|.10.;;; |
|000000c0| 6f 70 74 69 6d 69 7a 61 | 74 69 6f 6e 20 69 73 20 |optimiza|tion is |
|000000d0| 6f 6e 2e 0a 3b 3b 3b 20 | 74 68 69 73 20 66 69 6c |on..;;; |this fil|
|000000e0| 65 20 75 73 65 73 20 6f | 70 63 6f 64 65 73 20 77 |e uses o|pcodes w|
|000000f0| 68 69 63 68 20 64 6f 20 | 6e 6f 74 20 65 78 69 73 |hich do |not exis|
|00000100| 74 20 69 6e 20 45 6d 61 | 63 73 20 31 38 2e 0a 0a |t in Ema|cs 18...|
|00000110| 28 69 66 20 28 61 6e 64 | 20 28 62 6f 75 6e 64 70 |(if (and| (boundp|
|00000120| 20 27 65 6d 61 63 73 2d | 76 65 72 73 69 6f 6e 29 | 'emacs-|version)|
|00000130| 0a 09 20 28 6f 72 20 28 | 61 6e 64 20 28 62 6f 75 |.. (or (|and (bou|
|00000140| 6e 64 70 20 27 65 70 6f | 63 68 3a 3a 76 65 72 73 |ndp 'epo|ch::vers|
|00000150| 69 6f 6e 29 20 65 70 6f | 63 68 3a 3a 76 65 72 73 |ion) epo|ch::vers|
|00000160| 69 6f 6e 29 0a 09 20 20 | 20 20 20 28 73 74 72 69 |ion).. | (stri|
|00000170| 6e 67 2d 6c 65 73 73 70 | 20 65 6d 61 63 73 2d 76 |ng-lessp| emacs-v|
|00000180| 65 72 73 69 6f 6e 20 22 | 31 39 22 29 29 29 0a 20 |ersion "|19"))). |
|00000190| 20 20 20 28 65 72 72 6f | 72 20 22 60 2f 68 6f 6d | (erro|r "`/hom|
|000001a0| 65 2f 66 73 66 2f 72 6d | 73 2f 65 31 39 2f 6c 69 |e/fsf/rm|s/e19/li|
|000001b0| 73 70 2f 73 68 61 64 6f | 77 66 69 6c 65 2e 65 6c |sp/shado|wfile.el|
|000001c0| 27 20 77 61 73 20 63 6f | 6d 70 69 6c 65 64 20 66 |' was co|mpiled f|
|000001d0| 6f 72 20 45 6d 61 63 73 | 20 31 39 22 29 29 0a 0a |or Emacs| 19"))..|
|000001e0| 28 62 79 74 65 2d 63 6f | 64 65 20 22 c0 c1 21 88 |(byte-co|de "..!.|
|000001f0| c2 c3 21 88 c4 15 c0 87 | 22 20 5b 70 72 6f 76 69 |..!.....|" [provi|
|00000200| 64 65 20 73 68 61 64 6f | 77 66 69 6c 65 20 72 65 |de shado|wfile re|
|00000210| 71 75 69 72 65 20 61 6e | 67 65 2d 66 74 70 20 74 |quire an|ge-ftp t|
|00000220| 20 66 69 6e 64 2d 66 69 | 6c 65 2d 76 69 73 69 74 | find-fi|le-visit|
|00000230| 2d 74 72 75 65 6e 61 6d | 65 5d 20 32 29 0a 28 64 |-truenam|e] 2).(d|
|00000240| 65 66 76 61 72 20 73 68 | 61 64 6f 77 2d 6e 6f 71 |efvar sh|adow-noq|
|00000250| 75 65 72 79 20 6e 69 6c | 20 22 5c 0a 2a 49 66 20 |uery nil| "\.*If |
|00000260| 74 2c 20 61 6c 77 61 79 | 73 20 63 6f 70 79 20 73 |t, alway|s copy s|
|00000270| 68 61 64 6f 77 20 66 69 | 6c 65 73 20 77 69 74 68 |hadow fi|les with|
|00000280| 6f 75 74 20 61 73 6b 69 | 6e 67 2e 0a 49 66 20 6e |out aski|ng..If n|
|00000290| 69 6c 20 28 74 68 65 20 | 64 65 66 61 75 6c 74 29 |il (the |default)|
|000002a0| 2c 20 61 6c 77 61 79 73 | 20 61 73 6b 2e 20 20 49 |, always| ask. I|
|000002b0| 66 20 6e 6f 74 20 6e 69 | 6c 20 61 6e 64 20 6e 6f |f not ni|l and no|
|000002c0| 74 20 74 2c 20 61 73 6b | 20 6f 6e 6c 79 20 69 66 |t t, ask| only if|
|000002d0| 20 74 68 65 72 65 0a 69 | 73 20 6e 6f 20 62 75 66 | there.i|s no buf|
|000002e0| 66 65 72 20 63 75 72 72 | 65 6e 74 6c 79 20 76 69 |fer curr|ently vi|
|000002f0| 73 69 74 69 6e 67 20 74 | 68 65 20 66 69 6c 65 2e |siting t|he file.|
|00000300| 22 29 0a 28 64 65 66 76 | 61 72 20 73 68 61 64 6f |").(defv|ar shado|
|00000310| 77 2d 69 6e 68 69 62 69 | 74 2d 6d 65 73 73 61 67 |w-inhibi|t-messag|
|00000320| 65 20 6e 69 6c 20 22 5c | 0a 2a 49 66 20 6e 6f 6e |e nil "\|.*If non|
|00000330| 6e 69 6c 2c 20 64 6f 20 | 6e 6f 74 20 64 69 73 70 |nil, do |not disp|
|00000340| 6c 61 79 20 61 20 6d 65 | 73 73 61 67 65 20 77 68 |lay a me|ssage wh|
|00000350| 65 6e 20 61 20 66 69 6c | 65 20 6e 65 65 64 73 20 |en a fil|e needs |
|00000360| 63 6f 70 79 69 6e 67 2e | 22 29 0a 28 64 65 66 76 |copying.|").(defv|
|00000370| 61 72 20 73 68 61 64 6f | 77 2d 69 6e 68 69 62 69 |ar shado|w-inhibi|
|00000380| 74 2d 6f 76 65 72 6c 6f | 61 64 20 6e 69 6c 20 22 |t-overlo|ad nil "|
|00000390| 5c 0a 49 66 20 6e 6f 6e | 6e 69 6c 2c 20 73 68 61 |\.If non|nil, sha|
|000003a0| 64 6f 77 66 69 6c 65 20 | 77 6f 6e 27 74 20 72 65 |dowfile |won't re|
|000003b0| 64 65 66 69 6e 65 20 43 | 2d 78 20 43 2d 63 2e 0a |define C|-x C-c..|
|000003c0| 4e 6f 72 6d 61 6c 6c 79 | 20 69 74 20 6f 76 65 72 |Normally| it over|
|000003d0| 6c 6f 61 64 73 20 74 68 | 65 20 66 75 6e 63 74 69 |loads th|e functi|
|000003e0| 6f 6e 20 60 73 61 76 65 | 2d 62 75 66 66 65 72 73 |on `save|-buffers|
|000003f0| 2d 6b 69 6c 6c 2d 65 6d | 61 63 73 27 20 74 6f 20 |-kill-em|acs' to |
|00000400| 63 68 65 63 6b 0a 66 6f | 72 20 66 69 6c 65 73 20 |check.fo|r files |
|00000410| 68 61 76 65 20 62 65 65 | 6e 20 63 68 61 6e 67 65 |have bee|n change|
|00000420| 64 20 61 6e 64 20 6e 65 | 65 64 20 74 6f 20 62 65 |d and ne|ed to be|
|00000430| 20 63 6f 70 69 65 64 20 | 74 6f 20 6f 74 68 65 72 | copied |to other|
|00000440| 20 73 79 73 74 65 6d 73 | 2e 22 29 0a 28 64 65 66 | systems|.").(def|
|00000450| 76 61 72 20 73 68 61 64 | 6f 77 2d 69 6e 66 6f 2d |var shad|ow-info-|
|00000460| 66 69 6c 65 20 6e 69 6c | 20 22 5c 0a 46 69 6c 65 |file nil| "\.File|
|00000470| 20 74 6f 20 6b 65 65 70 | 20 73 68 61 64 6f 77 20 | to keep| shadow |
|00000480| 69 6e 66 6f 72 6d 61 74 | 69 6f 6e 20 69 6e 2e 20 |informat|ion in. |
|00000490| 20 0a 54 68 65 20 73 68 | 61 64 6f 77 2d 69 6e 66 | .The sh|adow-inf|
|000004a0| 6f 2d 66 69 6c 65 20 73 | 68 6f 75 6c 64 20 62 65 |o-file s|hould be|
|000004b0| 20 73 68 61 64 6f 77 65 | 64 20 74 6f 20 61 6c 6c | shadowe|d to all|
|000004c0| 20 79 6f 75 72 20 61 63 | 63 6f 75 6e 74 73 20 74 | your ac|counts t|
|000004d0| 6f 0a 65 6e 73 75 72 65 | 20 63 6f 6e 73 69 73 74 |o.ensure| consist|
|000004e0| 65 6e 63 79 2e 20 20 44 | 65 66 61 75 6c 74 3a 20 |ency. D|efault: |
|000004f0| 7e 2f 2e 73 68 61 64 6f | 77 73 22 29 0a 28 64 65 |~/.shado|ws").(de|
|00000500| 66 76 61 72 20 73 68 61 | 64 6f 77 2d 74 6f 64 6f |fvar sha|dow-todo|
|00000510| 2d 66 69 6c 65 20 6e 69 | 6c 20 22 5c 0a 46 69 6c |-file ni|l "\.Fil|
|00000520| 65 20 74 6f 20 73 74 6f | 72 65 20 74 68 65 20 6c |e to sto|re the l|
|00000530| 69 73 74 20 6f 66 20 75 | 6e 63 6f 70 69 65 64 20 |ist of u|ncopied |
|00000540| 73 68 61 64 6f 77 73 20 | 69 6e 2e 0a 54 68 69 73 |shadows |in..This|
|00000550| 20 6d 65 61 6e 73 20 74 | 68 61 74 20 69 66 20 61 | means t|hat if a|
|00000560| 20 72 65 6d 6f 74 65 20 | 73 79 73 74 65 6d 20 69 | remote |system i|
|00000570| 73 20 64 6f 77 6e 2c 20 | 6f 72 20 66 6f 72 20 61 |s down, |or for a|
|00000580| 6e 79 20 72 65 61 73 6f | 6e 20 79 6f 75 20 63 61 |ny reaso|n you ca|
|00000590| 6e 6e 6f 74 20 6f 72 0a | 64 65 63 69 64 65 20 6e |nnot or.|decide n|
|000005a0| 6f 74 20 74 6f 20 63 6f | 70 79 20 79 6f 75 72 20 |ot to co|py your |
|000005b0| 73 68 61 64 6f 77 20 66 | 69 6c 65 73 20 61 74 20 |shadow f|iles at |
|000005c0| 74 68 65 20 65 6e 64 20 | 6f 66 20 6f 6e 65 20 65 |the end |of one e|
|000005d0| 6d 61 63 73 20 73 65 73 | 73 69 6f 6e 2c 20 69 74 |macs ses|sion, it|
|000005e0| 20 77 69 6c 6c 0a 72 65 | 6d 65 6d 62 65 72 20 61 | will.re|member a|
|000005f0| 6e 64 20 61 73 6b 20 79 | 6f 75 20 61 67 61 69 6e |nd ask y|ou again|
|00000600| 20 69 6e 20 79 6f 75 72 | 20 6e 65 78 74 20 65 6d | in your| next em|
|00000610| 61 63 73 20 73 65 73 73 | 69 6f 6e 2e 0a 54 68 69 |acs sess|ion..Thi|
|00000620| 73 20 66 69 6c 65 20 6d | 75 73 74 20 4e 4f 54 20 |s file m|ust NOT |
|00000630| 62 65 20 73 68 61 64 6f | 77 65 64 20 74 6f 20 61 |be shado|wed to a|
|00000640| 6e 79 20 6f 74 68 65 72 | 20 73 79 73 74 65 6d 2c |ny other| system,|
|00000650| 20 69 74 20 69 73 20 68 | 6f 73 74 2d 73 70 65 63 | it is h|ost-spec|
|00000660| 69 66 69 63 2e 0a 44 65 | 66 61 75 6c 74 3a 20 7e |ific..De|fault: ~|
|00000670| 2f 2e 73 68 61 64 6f 77 | 5f 74 6f 64 6f 22 29 0a |/.shadow|_todo").|
|00000680| 28 64 65 66 76 61 72 20 | 73 68 61 64 6f 77 2d 73 |(defvar |shadow-s|
|00000690| 79 73 74 65 6d 2d 6e 61 | 6d 65 20 28 73 79 73 74 |ystem-na|me (syst|
|000006a0| 65 6d 2d 6e 61 6d 65 29 | 20 22 5c 0a 54 68 65 20 |em-name)| "\.The |
|000006b0| 63 6f 6d 70 6c 65 74 65 | 20 68 6f 73 74 6e 61 6d |complete| hostnam|
|000006c0| 65 20 6f 66 20 74 68 69 | 73 20 6d 61 63 68 69 6e |e of thi|s machin|
|000006d0| 65 2e 22 29 0a 28 64 65 | 66 76 61 72 20 73 68 61 |e.").(de|fvar sha|
|000006e0| 64 6f 77 2d 68 6f 6d 65 | 64 69 72 20 6e 69 6c 20 |dow-home|dir nil |
|000006f0| 22 5c 0a 59 6f 75 72 20 | 68 6f 6d 65 20 64 69 72 |"\.Your |home dir|
|00000700| 65 63 74 6f 72 79 20 6f | 6e 20 74 68 69 73 20 6d |ectory o|n this m|
|00000710| 61 63 68 69 6e 65 2e 22 | 29 0a 28 64 65 66 76 61 |achine."|).(defva|
|00000720| 72 20 73 68 61 64 6f 77 | 2d 63 6c 75 73 74 65 72 |r shadow|-cluster|
|00000730| 73 20 6e 69 6c 20 22 5c | 0a 4c 69 73 74 20 6f 66 |s nil "\|.List of|
|00000740| 20 68 6f 73 74 20 63 6c | 75 73 74 65 72 73 20 28 | host cl|usters (|
|00000750| 73 65 65 20 73 68 61 64 | 6f 77 2d 64 65 66 69 6e |see shad|ow-defin|
|00000760| 65 2d 63 6c 75 73 74 65 | 72 29 2e 22 29 0a 28 64 |e-cluste|r).").(d|
|00000770| 65 66 76 61 72 20 73 68 | 61 64 6f 77 2d 6c 69 74 |efvar sh|adow-lit|
|00000780| 65 72 61 6c 2d 67 72 6f | 75 70 73 20 6e 69 6c 20 |eral-gro|ups nil |
|00000790| 22 5c 0a 4c 69 73 74 20 | 6f 66 20 66 69 6c 65 73 |"\.List |of files|
|000007a0| 20 74 68 61 74 20 61 72 | 65 20 73 68 61 72 65 64 | that ar|e shared|
|000007b0| 20 62 65 74 77 65 65 6e | 20 68 6f 73 74 73 2e 0a | between| hosts..|
|000007c0| 54 68 69 73 20 6c 69 73 | 74 20 63 6f 6e 74 61 69 |This lis|t contai|
|000007d0| 6e 73 20 73 68 61 64 6f | 77 20 73 74 72 75 63 74 |ns shado|w struct|
|000007e0| 75 72 65 73 20 77 69 74 | 68 20 6c 69 74 65 72 61 |ures wit|h litera|
|000007f0| 6c 20 66 69 6c 65 6e 61 | 6d 65 73 2c 20 63 72 65 |l filena|mes, cre|
|00000800| 61 74 65 64 20 62 79 0a | 73 68 61 64 6f 77 2d 64 |ated by.|shadow-d|
|00000810| 65 66 69 6e 65 2d 67 72 | 6f 75 70 2e 22 29 0a 28 |efine-gr|oup.").(|
|00000820| 64 65 66 76 61 72 20 73 | 68 61 64 6f 77 2d 72 65 |defvar s|hadow-re|
|00000830| 67 65 78 70 2d 67 72 6f | 75 70 73 20 6e 69 6c 20 |gexp-gro|ups nil |
|00000840| 22 5c 0a 4c 69 73 74 20 | 6f 66 20 66 69 6c 65 20 |"\.List |of file |
|00000850| 74 79 70 65 73 20 74 68 | 61 74 20 61 72 65 20 73 |types th|at are s|
|00000860| 68 61 72 65 64 20 62 65 | 74 77 65 65 6e 20 68 6f |hared be|tween ho|
|00000870| 73 74 73 2e 0a 54 68 69 | 73 20 6c 69 73 74 20 63 |sts..Thi|s list c|
|00000880| 6f 6e 74 61 69 6e 73 20 | 73 68 61 64 6f 77 20 73 |ontains |shadow s|
|00000890| 74 72 75 63 74 75 72 65 | 73 20 77 69 74 68 20 72 |tructure|s with r|
|000008a0| 65 67 65 78 70 73 20 6d | 61 74 63 68 69 6e 67 20 |egexps m|atching |
|000008b0| 66 69 6c 65 6e 61 6d 65 | 73 2c 20 0a 63 72 65 61 |filename|s, .crea|
|000008c0| 74 65 64 20 62 79 20 73 | 68 61 64 6f 77 2d 64 65 |ted by s|hadow-de|
|000008d0| 66 69 6e 65 2d 72 65 67 | 65 78 70 2d 67 72 6f 75 |fine-reg|exp-grou|
|000008e0| 70 2e 22 29 0a 28 62 79 | 74 65 2d 63 6f 64 65 20 |p.").(by|te-code |
|000008f0| 22 c0 c1 21 84 08 00 c2 | 11 c0 c3 21 84 10 00 c2 |"..!....|...!....|
|00000900| 13 c0 c4 21 84 18 00 c2 | 14 c0 c5 21 84 20 00 c2 |...!....|...!. ..|
|00000910| 15 c2 87 22 20 5b 62 6f | 75 6e 64 70 20 73 68 61 |..." [bo|undp sha|
|00000920| 64 6f 77 2d 66 69 6c 65 | 73 2d 74 6f 2d 63 6f 70 |dow-file|s-to-cop|
|00000930| 79 20 6e 69 6c 20 73 68 | 61 64 6f 77 2d 68 61 73 |y nil sh|adow-has|
|00000940| 68 74 61 62 6c 65 20 73 | 68 61 64 6f 77 2d 69 6e |htable s|hadow-in|
|00000950| 66 6f 2d 62 75 66 66 65 | 72 20 73 68 61 64 6f 77 |fo-buffe|r shadow|
|00000960| 2d 74 6f 64 6f 2d 62 75 | 66 66 65 72 5d 20 32 29 |-todo-bu|ffer] 2)|
|00000970| 0a 28 64 65 66 61 6c 69 | 61 73 20 27 73 68 61 64 |.(defali|as 'shad|
|00000980| 6f 77 2d 77 68 65 6e 20 | 27 28 6d 61 63 72 6f 20 |ow-when |'(macro |
|00000990| 2e 20 23 5b 28 63 6f 6e | 64 69 74 69 6f 6e 20 26 |. #[(con|dition &|
|000009a0| 72 65 73 74 20 62 6f 64 | 79 29 20 22 c0 c1 5c 6e |rest bod|y) "..\n|
|000009b0| 44 c3 5c 66 42 42 42 87 | 22 20 5b 69 66 20 6e 6f |D.\fBBB.|" [if no|
|000009c0| 74 20 63 6f 6e 64 69 74 | 69 6f 6e 20 6e 69 6c 20 |t condit|ion nil |
|000009d0| 62 6f 64 79 5d 20 34 20 | 22 5c 0a 28 73 68 61 64 |body] 4 |"\.(shad|
|000009e0| 6f 77 2d 77 68 65 6e 20 | 43 4f 4e 44 49 54 49 4f |ow-when |CONDITIO|
|000009f0| 4e 20 2e 20 42 4f 44 59 | 29 20 3d 3e 20 65 76 61 |N . BODY|) => eva|
|00000a00| 6c 75 61 74 65 20 42 4f | 44 59 20 69 66 20 43 4f |luate BO|DY if CO|
|00000a10| 4e 44 49 54 49 4f 4e 20 | 69 73 20 74 72 75 65 2e |NDITION |is true.|
|00000a20| 22 5d 29 29 0a 28 64 65 | 66 61 6c 69 61 73 20 27 |"])).(de|falias '|
|00000a30| 73 68 61 64 6f 77 2d 75 | 6e 69 6f 6e 20 23 5b 28 |shadow-u|nion #[(|
|00000a40| 61 20 62 29 20 22 08 84 | 06 00 09 87 08 40 09 9d |a b) "..|.....@..|
|00000a50| 83 13 00 c2 08 41 09 5c | 22 87 c2 08 41 08 40 09 |.....A.\|"...A.@.|
|00000a60| 42 5c 22 87 22 20 5b 61 | 20 62 20 73 68 61 64 6f |B\"." [a| b shado|
|00000a70| 77 2d 75 6e 69 6f 6e 5d | 20 34 20 22 5c 0a 41 64 |w-union]| 4 "\.Ad|
|00000a80| 64 20 6d 65 6d 62 65 72 | 73 20 6f 66 20 6c 69 73 |d member|s of lis|
|00000a90| 74 20 41 20 74 6f 20 6c | 69 73 74 20 42 0a 69 66 |t A to l|ist B.if|
|00000aa0| 20 74 68 65 79 20 61 72 | 65 20 6e 6f 74 20 65 71 | they ar|e not eq|
|00000ab0| 75 61 6c 20 74 6f 20 69 | 74 65 6d 73 20 61 6c 72 |ual to i|tems alr|
|00000ac0| 65 61 64 79 20 69 6e 20 | 42 2e 22 5d 29 0a 28 64 |eady in |B."]).(d|
|00000ad0| 65 66 61 6c 69 61 73 20 | 27 73 68 61 64 6f 77 2d |efalias |'shadow-|
|00000ae0| 66 69 6e 64 20 23 5b 28 | 66 75 6e 63 20 6c 69 73 |find #[(|func lis|
|00000af0| 74 29 20 22 08 83 12 00 | 09 08 40 21 84 12 00 08 |t) "....|..@!....|
|00000b00| 41 89 10 84 04 00 08 40 | 87 22 20 5b 6c 69 73 74 |A......@|." [list|
|00000b10| 20 66 75 6e 63 5d 20 33 | 20 22 5c 0a 49 66 20 46 | func] 3| "\.If F|
|00000b20| 55 4e 43 20 61 70 70 6c | 69 65 64 20 74 6f 20 73 |UNC appl|ied to s|
|00000b30| 6f 6d 65 20 65 6c 65 6d | 65 6e 74 20 6f 66 20 4c |ome elem|ent of L|
|00000b40| 49 53 54 20 69 73 20 6e | 6f 6e 6e 69 6c 2c 20 0a |IST is n|onnil, .|
|00000b50| 72 65 74 75 72 6e 20 74 | 68 65 20 66 69 72 73 74 |return t|he first|
|00000b60| 20 73 75 63 68 20 65 6c | 65 6d 65 6e 74 2e 22 5d | such el|ement."]|
|00000b70| 29 0a 28 64 65 66 61 6c | 69 61 73 20 27 73 68 61 |).(defal|ias 'sha|
|00000b80| 64 6f 77 2d 72 65 6d 6f | 76 65 2d 69 66 20 23 5b |dow-remo|ve-if #[|
|00000b90| 28 66 75 6e 63 20 6c 69 | 73 74 29 20 22 08 85 19 |(func li|st) "...|
|00000ba0| 00 09 08 40 21 83 11 00 | c2 09 08 41 5c 22 87 08 |...@!...|...A\"..|
|00000bb0| 40 c2 09 08 41 5c 22 42 | 87 22 20 5b 6c 69 73 74 |@...A\"B|." [list|
|00000bc0| 20 66 75 6e 63 20 73 68 | 61 64 6f 77 2d 72 65 6d | func sh|adow-rem|
|00000bd0| 6f 76 65 2d 69 66 5d 20 | 34 20 22 5c 0a 52 65 6d |ove-if] |4 "\.Rem|
|00000be0| 6f 76 65 20 65 6c 65 6d | 65 6e 74 73 20 73 61 74 |ove elem|ents sat|
|00000bf0| 69 73 66 79 69 6e 67 20 | 46 55 4e 43 20 66 72 6f |isfying |FUNC fro|
|00000c00| 6d 20 4c 49 53 54 2e 0a | 4e 6f 6e 64 65 73 74 72 |m LIST..|Nondestr|
|00000c10| 75 63 74 69 76 65 3b 20 | 61 63 74 75 61 6c 6c 79 |uctive; |actually|
|00000c20| 20 72 65 74 75 72 6e 73 | 20 61 20 63 6f 70 79 20 | returns| a copy |
|00000c30| 6f 66 20 74 68 65 20 6c | 69 73 74 20 77 69 74 68 |of the l|ist with|
|00000c40| 20 74 68 65 20 65 6c 65 | 6d 65 6e 74 73 20 72 65 | the ele|ments re|
|00000c50| 6d 6f 76 65 64 2e 22 5d | 29 0a 28 64 65 66 61 6c |moved."]|).(defal|
|00000c60| 69 61 73 20 27 73 68 61 | 64 6f 77 2d 6a 6f 69 6e |ias 'sha|dow-join|
|00000c70| 20 23 5b 28 73 74 72 69 | 6e 67 73 20 73 65 70 29 | #[(stri|ngs sep)|
|00000c80| 20 22 08 84 06 00 c1 87 | 08 41 84 0e 00 08 40 87 | "......|.A....@.|
|00000c90| 08 40 c2 c3 08 41 5c 66 | 5c 22 51 87 22 20 5b 73 |.@...A\f|\"Q." [s|
|00000ca0| 74 72 69 6e 67 73 20 22 | 22 20 22 20 22 20 73 68 |trings "|" " " sh|
|00000cb0| 61 64 6f 77 2d 6a 6f 69 | 6e 20 73 65 70 5d 20 35 |adow-joi|n sep] 5|
|00000cc0| 20 22 5c 0a 43 6f 6e 63 | 61 74 65 6e 61 74 65 20 | "\.Conc|atenate |
|00000cd0| 65 6c 65 6d 65 6e 74 73 | 20 6f 66 20 74 68 65 20 |elements| of the |
|00000ce0| 6c 69 73 74 20 6f 66 20 | 53 54 52 49 4e 47 53 20 |list of |STRINGS |
|00000cf0| 77 69 74 68 20 53 45 50 | 20 62 65 74 77 65 65 6e |with SEP| between|
|00000d00| 20 65 61 63 68 2e 22 5d | 29 0a 28 64 65 66 61 6c | each."]|).(defal|
|00000d10| 69 61 73 20 27 73 68 61 | 64 6f 77 2d 72 65 67 65 |ias 'sha|dow-rege|
|00000d20| 78 70 2d 73 75 70 65 72 | 71 75 6f 74 65 20 23 5b |xp-super|quote #[|
|00000d30| 28 73 74 72 69 6e 67 29 | 20 22 c0 c1 5c 6e 21 c3 |(string)| "..\n!.|
|00000d40| 51 87 22 20 5b 22 5e 22 | 20 72 65 67 65 78 70 2d |Q." ["^"| regexp-|
|00000d50| 71 75 6f 74 65 20 73 74 | 72 69 6e 67 20 22 24 22 |quote st|ring "$"|
|00000d60| 5d 20 33 20 22 5c 0a 4c | 69 6b 65 20 72 65 67 65 |] 3 "\.L|ike rege|
|00000d70| 78 70 2d 71 75 6f 74 65 | 2c 20 62 75 74 20 69 6e |xp-quote|, but in|
|00000d80| 63 6c 75 64 65 73 20 74 | 68 65 20 5e 20 61 6e 64 |cludes t|he ^ and|
|00000d90| 20 24 20 0a 74 6f 20 6d | 61 6b 65 20 73 75 72 65 | $ .to m|ake sure|
|00000da0| 20 72 65 67 65 78 70 20 | 6d 61 74 63 68 65 73 20 | regexp |matches |
|00000db0| 6e 6f 74 68 69 6e 67 20 | 62 75 74 20 53 54 52 49 |nothing |but STRI|
|00000dc0| 4e 47 2e 22 5d 29 0a 28 | 64 65 66 61 6c 69 61 73 |NG."]).(|defalias|
|00000dd0| 20 27 73 68 61 64 6f 77 | 2d 73 75 66 66 69 78 20 | 'shadow|-suffix |
|00000de0| 23 5b 28 70 72 65 66 69 | 78 20 73 74 72 69 6e 67 |#[(prefi|x string|
|00000df0| 29 20 22 08 47 09 47 1a | 1b 5c 6e 0b 59 85 19 00 |) ".G.G.|.\n.Y...|
|00000e00| 08 09 c4 0b 4f 98 85 19 | 00 09 0b c5 4f 2a 87 22 |....O...|....O*."|
|00000e10| 20 5b 70 72 65 66 69 78 | 20 73 74 72 69 6e 67 20 | [prefix| string |
|00000e20| 6c 73 20 6c 70 20 30 20 | 6e 69 6c 5d 20 34 20 22 |ls lp 0 |nil] 4 "|
|00000e30| 5c 0a 49 66 20 50 52 45 | 46 49 58 20 62 65 67 69 |\.If PRE|FIX begi|
|00000e40| 6e 73 20 53 54 52 49 4e | 47 2c 20 72 65 74 75 72 |ns STRIN|G, retur|
|00000e50| 6e 20 74 68 65 20 72 65 | 73 74 2e 0a 52 65 74 75 |n the re|st..Retu|
|00000e60| 72 6e 20 76 61 6c 75 65 | 20 69 73 20 6e 6f 6e 6e |rn value| is nonn|
|00000e70| 69 6c 20 69 66 20 50 52 | 45 46 49 58 20 61 6e 64 |il if PR|EFIX and|
|00000e80| 20 53 54 52 49 4e 47 20 | 61 72 65 20 73 74 72 69 | STRING |are stri|
|00000e90| 6e 67 3d 20 75 70 20 74 | 6f 20 74 68 65 20 6c 65 |ng= up t|o the le|
|00000ea0| 6e 67 74 68 20 6f 66 0a | 50 52 45 46 49 58 2e 22 |ngth of.|PREFIX."|
|00000eb0| 5d 29 0a 28 64 65 66 61 | 6c 69 61 73 20 27 73 68 |]).(defa|lias 'sh|
|00000ec0| 61 64 6f 77 2d 6d 61 6b | 65 2d 63 6c 75 73 74 65 |adow-mak|e-cluste|
|00000ed0| 72 20 23 5b 28 6e 61 6d | 65 20 70 72 69 6d 61 72 |r #[(nam|e primar|
|00000ee0| 79 20 72 65 67 65 78 70 | 29 20 22 08 09 5c 6e 45 |y regexp|) "..\nE|
|00000ef0| 87 22 20 5b 6e 61 6d 65 | 20 70 72 69 6d 61 72 79 |." [name| primary|
|00000f00| 20 72 65 67 65 78 70 5d | 20 33 20 22 5c 0a 43 72 | regexp]| 3 "\.Cr|
|00000f10| 65 61 74 65 73 20 61 20 | 73 68 61 64 6f 77 20 63 |eates a |shadow c|
|00000f20| 6c 75 73 74 65 72 20 0a | 63 61 6c 6c 65 64 20 4e |luster .|called N|
|00000f30| 41 4d 45 2c 20 75 73 69 | 6e 67 20 74 68 65 20 50 |AME, usi|ng the P|
|00000f40| 52 49 4d 41 52 59 20 68 | 6f 73 74 6e 61 6d 65 2c |RIMARY h|ostname,|
|00000f50| 20 52 45 47 45 58 50 20 | 6d 61 74 63 68 69 6e 67 | REGEXP |matching|
|00000f60| 20 61 6c 6c 20 68 6f 73 | 74 73 20 69 6e 20 74 68 | all hos|ts in th|
|00000f70| 65 0a 63 6c 75 73 74 65 | 72 2e 20 20 54 68 65 20 |e.cluste|r. The |
|00000f80| 76 61 72 69 61 62 6c 65 | 20 73 68 61 64 6f 77 2d |variable| shadow-|
|00000f90| 63 6c 75 73 74 65 72 73 | 20 61 73 73 6f 63 69 61 |clusters| associa|
|00000fa0| 74 65 73 20 74 68 65 20 | 6e 61 6d 65 73 20 6f 66 |tes the |names of|
|00000fb0| 20 63 6c 75 73 74 65 72 | 73 20 74 6f 0a 74 68 65 | cluster|s to.the|
|00000fc0| 73 65 20 73 74 72 75 63 | 74 75 72 65 73 2e 20 0a |se struc|tures. .|
|00000fd0| 20 20 20 54 68 69 73 20 | 66 75 6e 63 74 69 6f 6e | This |function|
|00000fe0| 20 69 73 20 66 6f 72 20 | 70 72 6f 67 72 61 6d 20 | is for |program |
|00000ff0| 75 73 65 3a 20 74 6f 20 | 63 72 65 61 74 65 20 63 |use: to |create c|
|00001000| 6c 75 73 74 65 72 73 20 | 69 6e 74 65 72 61 63 74 |lusters |interact|
|00001010| 69 76 65 6c 79 2c 20 75 | 73 65 0a 73 68 61 64 6f |ively, u|se.shado|
|00001020| 77 2d 64 65 66 69 6e 65 | 2d 63 6c 75 73 74 65 72 |w-define|-cluster|
|00001030| 20 69 6e 73 74 65 61 64 | 2e 22 5d 29 0a 28 64 65 | instead|."]).(de|
|00001040| 66 61 6c 69 61 73 20 27 | 73 68 61 64 6f 77 2d 63 |falias '|shadow-c|
|00001050| 6c 75 73 74 65 72 2d 6e | 61 6d 65 20 27 28 6d 61 |luster-n|ame '(ma|
|00001060| 63 72 6f 20 2e 20 23 5b | 28 63 6c 75 73 74 65 72 |cro . #[|(cluster|
|00001070| 29 20 22 c0 09 c2 45 87 | 22 20 5b 65 6c 74 20 63 |) "...E.|" [elt c|
|00001080| 6c 75 73 74 65 72 20 30 | 5d 20 33 20 22 5c 0a 52 |luster 0|] 3 "\.R|
|00001090| 65 74 75 72 6e 20 74 68 | 65 20 6e 61 6d 65 20 6f |eturn th|e name o|
|000010a0| 66 20 74 68 65 20 43 4c | 55 53 54 45 52 2e 22 5d |f the CL|USTER."]|
|000010b0| 29 29 0a 28 64 65 66 61 | 6c 69 61 73 20 27 73 68 |)).(defa|lias 'sh|
|000010c0| 61 64 6f 77 2d 63 6c 75 | 73 74 65 72 2d 70 72 69 |adow-clu|ster-pri|
|000010d0| 6d 61 72 79 20 27 28 6d | 61 63 72 6f 20 2e 20 23 |mary '(m|acro . #|
|000010e0| 5b 28 63 6c 75 73 74 65 | 72 29 20 22 c0 09 c2 45 |[(cluste|r) "...E|
|000010f0| 87 22 20 5b 65 6c 74 20 | 63 6c 75 73 74 65 72 20 |." [elt |cluster |
|00001100| 31 5d 20 33 20 22 5c 0a | 52 65 74 75 72 6e 20 74 |1] 3 "\.|Return t|
|00001110| 68 65 20 70 72 69 6d 61 | 72 79 20 68 6f 73 74 6e |he prima|ry hostn|
|00001120| 61 6d 65 20 6f 66 20 61 | 20 43 4c 55 53 54 45 52 |ame of a| CLUSTER|
|00001130| 2e 22 5d 29 29 0a 28 64 | 65 66 61 6c 69 61 73 20 |."])).(d|efalias |
|00001140| 27 73 68 61 64 6f 77 2d | 63 6c 75 73 74 65 72 2d |'shadow-|cluster-|
|00001150| 72 65 67 65 78 70 20 27 | 28 6d 61 63 72 6f 20 2e |regexp '|(macro .|
|00001160| 20 23 5b 28 63 6c 75 73 | 74 65 72 29 20 22 c0 09 | #[(clus|ter) "..|
|00001170| c2 45 87 22 20 5b 65 6c | 74 20 63 6c 75 73 74 65 |.E." [el|t cluste|
|00001180| 72 20 32 5d 20 33 20 22 | 5c 0a 52 65 74 75 72 6e |r 2] 3 "|\.Return|
|00001190| 20 74 68 65 20 72 65 67 | 65 78 70 20 6d 61 74 63 | the reg|exp matc|
|000011a0| 68 69 6e 67 20 68 6f 73 | 74 73 20 69 6e 20 61 20 |hing hos|ts in a |
|000011b0| 43 4c 55 53 54 45 52 2e | 22 5d 29 29 0a 28 64 65 |CLUSTER.|"])).(de|
|000011c0| 66 61 6c 69 61 73 20 27 | 73 68 61 64 6f 77 2d 73 |falias '|shadow-s|
|000011d0| 65 74 2d 63 6c 75 73 74 | 65 72 20 23 5b 28 6e 61 |et-clust|er #[(na|
|000011e0| 6d 65 20 70 72 69 6d 61 | 72 79 20 72 65 67 65 78 |me prima|ry regex|
|000011f0| 70 29 20 22 c0 c1 5c 6e | 5c 22 1b c4 0d 0e 06 0e |p) "..\n|\"......|
|00001200| 07 23 0b 42 89 12 29 87 | 22 20 5b 73 68 61 64 6f |.#.B..).|" [shado|
|00001210| 77 2d 72 65 6d 6f 76 65 | 2d 69 66 20 23 5b 28 78 |w-remove|-if #[(x|
|00001220| 29 20 22 08 09 40 9a 87 | 22 20 5b 6e 61 6d 65 20 |) "..@..|" [name |
|00001230| 78 5d 20 32 5d 20 73 68 | 61 64 6f 77 2d 63 6c 75 |x] 2] sh|adow-clu|
|00001240| 73 74 65 72 73 20 72 65 | 73 74 20 73 68 61 64 6f |sters re|st shado|
|00001250| 77 2d 6d 61 6b 65 2d 63 | 6c 75 73 74 65 72 20 6e |w-make-c|luster n|
|00001260| 61 6d 65 20 70 72 69 6d | 61 72 79 20 72 65 67 65 |ame prim|ary rege|
|00001270| 78 70 5d 20 34 20 22 5c | 0a 50 75 74 20 63 6c 75 |xp] 4 "\|.Put clu|
|00001280| 73 74 65 72 20 4e 41 4d | 45 20 6f 6e 20 74 68 65 |ster NAM|E on the|
|00001290| 20 6c 69 73 74 20 6f 66 | 20 63 6c 75 73 74 65 72 | list of| cluster|
|000012a0| 73 2c 0a 72 65 70 6c 61 | 63 69 6e 67 20 6f 6c 64 |s,.repla|cing old|
|000012b0| 20 64 65 66 69 6e 69 74 | 69 6f 6e 20 69 66 20 61 | definit|ion if a|
|000012c0| 6e 79 2e 20 20 50 52 49 | 4d 41 52 59 20 61 6e 64 |ny. PRI|MARY and|
|000012d0| 20 52 45 47 45 58 50 20 | 61 72 65 20 74 68 65 0a | REGEXP |are the.|
|000012e0| 69 6e 66 6f 72 6d 61 74 | 69 6f 6e 20 64 65 66 69 |informat|ion defi|
|000012f0| 6e 69 6e 67 20 74 68 65 | 20 63 6c 75 73 74 65 72 |ning the| cluster|
|00001300| 2e 20 20 46 6f 72 20 69 | 6e 74 65 72 61 63 74 69 |. For i|nteracti|
|00001310| 76 65 20 75 73 65 2c 20 | 63 61 6c 6c 0a 73 68 61 |ve use, |call.sha|
|00001320| 64 6f 77 2d 64 65 66 69 | 6e 65 2d 63 6c 75 73 74 |dow-defi|ne-clust|
|00001330| 65 72 20 69 6e 73 74 65 | 61 64 2e 22 5d 29 0a 28 |er inste|ad."]).(|
|00001340| 64 65 66 61 6c 69 61 73 | 20 27 73 68 61 64 6f 77 |defalias| 'shadow|
|00001350| 2d 67 65 74 2d 63 6c 75 | 73 74 65 72 20 27 28 6d |-get-clu|ster '(m|
|00001360| 61 63 72 6f 20 2e 20 23 | 5b 28 6e 61 6d 65 29 20 |acro . #|[(name) |
|00001370| 22 c0 09 c2 45 87 22 20 | 5b 61 73 73 6f 63 20 6e |"...E." |[assoc n|
|00001380| 61 6d 65 20 73 68 61 64 | 6f 77 2d 63 6c 75 73 74 |ame shad|ow-clust|
|00001390| 65 72 73 5d 20 33 20 22 | 5c 0a 52 65 74 75 72 6e |ers] 3 "|\.Return|
|000013a0| 20 63 6c 75 73 74 65 72 | 20 6e 61 6d 65 64 20 4e | cluster| named N|
|000013b0| 41 4d 45 2c 20 6f 72 20 | 6e 69 6c 2e 22 5d 29 29 |AME, or |nil."]))|
|000013c0| 0a 28 64 65 66 61 6c 69 | 61 73 20 27 73 68 61 64 |.(defali|as 'shad|
|000013d0| 6f 77 2d 73 69 74 65 2d | 70 72 69 6d 61 72 79 20 |ow-site-|primary |
|000013e0| 23 5b 28 73 69 74 65 29 | 20 22 c0 09 5c 6e 5c 22 |#[(site)| "..\n\"|
|000013f0| 89 1b 83 0f 00 0b c4 9c | 82 10 00 09 29 87 22 20 |........|....)." |
|00001400| 5b 61 73 73 6f 63 20 73 | 69 74 65 20 73 68 61 64 |[assoc s|ite shad|
|00001410| 6f 77 2d 63 6c 75 73 74 | 65 72 73 20 63 20 31 5d |ow-clust|ers c 1]|
|00001420| 20 34 20 22 5c 0a 49 66 | 20 53 49 54 45 20 69 73 | 4 "\.If| SITE is|
|00001430| 20 61 20 63 6c 75 73 74 | 65 72 2c 20 72 65 74 75 | a clust|er, retu|
|00001440| 72 6e 20 70 72 69 6d 61 | 72 79 20 68 6f 73 74 2c |rn prima|ry host,|
|00001450| 20 6f 74 68 65 72 77 69 | 73 65 20 72 65 74 75 72 | otherwi|se retur|
|00001460| 6e 20 53 49 54 45 2e 22 | 5d 29 0a 28 64 65 66 61 |n SITE."|]).(defa|
|00001470| 6c 69 61 73 20 27 73 68 | 61 64 6f 77 2d 73 69 74 |lias 'sh|adow-sit|
|00001480| 65 2d 63 6c 75 73 74 65 | 72 20 23 5b 28 73 69 74 |e-cluste|r #[(sit|
|00001490| 65 29 20 22 c0 09 5c 6e | 5c 22 86 0b 00 c3 c4 5c |e) "..\n|\".....\|
|000014a0| 6e 5c 22 87 22 20 5b 61 | 73 73 6f 63 20 73 69 74 |n\"." [a|ssoc sit|
|000014b0| 65 20 73 68 61 64 6f 77 | 2d 63 6c 75 73 74 65 72 |e shadow|-cluster|
|000014c0| 73 20 73 68 61 64 6f 77 | 2d 66 69 6e 64 20 23 5b |s shadow|-find #[|
|000014d0| 28 78 29 20 22 c0 09 c2 | 9c 0b 5c 22 87 22 20 5b |(x) "...|..\"." [|
|000014e0| 73 74 72 69 6e 67 2d 6d | 61 74 63 68 20 78 20 32 |string-m|atch x 2|
|000014f0| 20 73 69 74 65 5d 20 33 | 5d 5d 20 33 20 22 5c 0a | site] 3|]] 3 "\.|
|00001500| 47 69 76 65 6e 20 61 20 | 53 49 54 45 20 28 68 6f |Given a |SITE (ho|
|00001510| 73 74 6e 61 6d 65 20 6f | 72 20 63 6c 75 73 74 65 |stname o|r cluste|
|00001520| 72 20 6e 61 6d 65 29 2c | 20 72 65 74 75 72 6e 20 |r name),| return |
|00001530| 74 68 65 20 63 6c 75 73 | 74 65 72 0a 74 68 61 74 |the clus|ter.that|
|00001540| 20 69 74 20 69 73 20 69 | 6e 2c 20 6f 72 20 6e 69 | it is i|n, or ni|
|00001550| 6c 2e 22 5d 29 0a 28 64 | 65 66 61 6c 69 61 73 20 |l."]).(d|efalias |
|00001560| 27 73 68 61 64 6f 77 2d | 72 65 61 64 2d 73 69 74 |'shadow-|read-sit|
|00001570| 65 20 23 5b 6e 69 6c 20 | 22 c0 c1 5c 6e 5c 22 89 |e #[nil |"..\n\".|
|00001580| 1b c4 9a 3f 85 0d 00 0b | 29 87 22 20 5b 63 6f 6d |...?....|)." [com|
|00001590| 70 6c 65 74 69 6e 67 2d | 72 65 61 64 20 22 48 6f |pleting-|read "Ho|
|000015a0| 73 74 20 6f 72 20 63 6c | 75 73 74 65 72 20 6e 61 |st or cl|uster na|
|000015b0| 6d 65 20 5b 52 45 54 20 | 77 68 65 6e 20 64 6f 6e |me [RET |when don|
|000015c0| 65 5d 3a 20 22 20 73 68 | 61 64 6f 77 2d 63 6c 75 |e]: " sh|adow-clu|
|000015d0| 73 74 65 72 73 20 61 6e | 73 20 22 22 5d 20 34 20 |sters an|s ""] 4 |
|000015e0| 22 5c 0a 52 65 61 64 20 | 61 20 63 6c 75 73 74 65 |"\.Read |a cluste|
|000015f0| 72 20 6e 61 6d 65 20 6f | 72 20 68 6f 73 74 6e 61 |r name o|r hostna|
|00001600| 6d 65 20 66 72 6f 6d 20 | 74 68 65 20 6d 69 6e 69 |me from |the mini|
|00001610| 62 75 66 66 65 72 2e 22 | 5d 29 0a 28 64 65 66 61 |buffer."|]).(defa|
|00001620| 6c 69 61 73 20 27 73 68 | 61 64 6f 77 2d 73 69 74 |lias 'sh|adow-sit|
|00001630| 65 2d 6d 61 74 63 68 20 | 23 5b 28 73 69 74 65 31 |e-match |#[(site1|
|00001640| 20 73 69 74 65 32 29 20 | 22 08 09 98 86 23 00 c2 | site2) |"....#..|
|00001650| 08 0b 5c 22 1c c5 09 21 | 1e 06 5c 66 83 1e 00 c7 |..\"...!|..\f....|
|00001660| 5c 66 c8 9c 0e 06 5c 22 | 82 5c 22 00 08 0e 06 98 |\f....\"|.\".....|
|00001670| 2a 87 22 20 5b 73 69 74 | 65 31 20 73 69 74 65 32 |*." [sit|e1 site2|
|00001680| 20 61 73 73 6f 63 20 73 | 68 61 64 6f 77 2d 63 6c | assoc s|hadow-cl|
|00001690| 75 73 74 65 72 73 20 63 | 6c 75 73 74 65 72 31 20 |usters c|luster1 |
|000016a0| 73 68 61 64 6f 77 2d 73 | 69 74 65 2d 70 72 69 6d |shadow-s|ite-prim|
|000016b0| 61 72 79 20 70 72 69 6d | 61 72 79 32 20 73 74 72 |ary prim|ary2 str|
|000016c0| 69 6e 67 2d 6d 61 74 63 | 68 20 32 5d 20 33 20 22 |ing-matc|h 2] 3 "|
|000016d0| 5c 0a 4e 6f 6e 6e 69 6c | 20 69 66 66 20 53 49 54 |\.Nonnil| iff SIT|
|000016e0| 45 31 20 69 73 20 6f 72 | 20 69 6e 63 6c 75 64 65 |E1 is or| include|
|000016f0| 73 20 53 49 54 45 32 2e | 20 20 0a 45 61 63 68 20 |s SITE2.| .Each |
|00001700| 6d 61 79 20 62 65 20 61 | 20 68 6f 73 74 20 6f 72 |may be a| host or|
|00001710| 20 63 6c 75 73 74 65 72 | 20 6e 61 6d 65 3b 20 69 | cluster| name; i|
|00001720| 66 20 74 68 65 79 20 61 | 72 65 20 63 6c 75 73 74 |f they a|re clust|
|00001730| 65 72 73 2c 20 72 65 67 | 65 78 70 20 6f 66 20 73 |ers, reg|exp of s|
|00001740| 69 74 65 31 20 77 69 6c | 6c 0a 62 65 20 6d 61 74 |ite1 wil|l.be mat|
|00001750| 63 68 65 64 20 61 67 61 | 69 6e 73 74 20 74 68 65 |ched aga|inst the|
|00001760| 20 70 72 69 6d 61 72 79 | 20 6f 66 20 73 69 74 65 | primary| of site|
|00001770| 32 2e 22 5d 29 0a 28 64 | 65 66 61 6c 69 61 73 20 |2."]).(d|efalias |
|00001780| 27 73 68 61 64 6f 77 2d | 67 65 74 2d 75 73 65 72 |'shadow-|get-user|
|00001790| 20 23 5b 28 73 69 74 65 | 29 20 22 c0 c1 5c 6e 21 | #[(site|) "..\n!|
|000017a0| 21 87 22 20 5b 61 6e 67 | 65 2d 66 74 70 2d 67 65 |!." [ang|e-ftp-ge|
|000017b0| 74 2d 75 73 65 72 20 73 | 68 61 64 6f 77 2d 73 69 |t-user s|hadow-si|
|000017c0| 74 65 2d 70 72 69 6d 61 | 72 79 20 73 69 74 65 5d |te-prima|ry site]|
|000017d0| 20 33 20 22 5c 0a 52 65 | 74 75 72 6e 73 20 74 68 | 3 "\.Re|turns th|
|000017e0| 65 20 64 65 66 61 75 6c | 74 20 75 73 65 72 6e 61 |e defaul|t userna|
|000017f0| 6d 65 20 66 6f 72 20 61 | 20 73 69 74 65 2e 22 5d |me for a| site."]|
|00001800| 29 0a 28 64 65 66 61 6c | 69 61 73 20 27 73 68 61 |).(defal|ias 'sha|
|00001810| 64 6f 77 2d 70 61 72 73 | 65 2d 66 75 6c 6c 70 61 |dow-pars|e-fullpa|
|00001820| 74 68 20 23 5b 28 66 75 | 6c 6c 70 61 74 68 29 20 |th #[(fu|llpath) |
|00001830| 22 08 3c 83 07 00 08 87 | c1 08 21 87 22 20 5b 66 |".<.....|..!." [f|
|00001840| 75 6c 6c 70 61 74 68 20 | 61 6e 67 65 2d 66 74 70 |ullpath |ange-ftp|
|00001850| 2d 66 74 70 2d 6e 61 6d | 65 5d 20 32 20 22 5c 0a |-ftp-nam|e] 2 "\.|
|00001860| 50 61 72 73 65 20 50 41 | 54 48 20 69 6e 74 6f 20 |Parse PA|TH into |
|00001870| 28 73 69 74 65 20 75 73 | 65 72 20 70 61 74 68 29 |(site us|er path)|
|00001880| 20 6c 69 73 74 2c 0a 6f | 72 20 6c 65 61 76 65 20 | list,.o|r leave |
|00001890| 69 74 20 61 6c 6f 6e 65 | 20 69 66 20 69 74 20 61 |it alone| if it a|
|000018a0| 6c 72 65 61 64 79 20 69 | 73 20 6f 6e 65 2e 20 20 |lready i|s one. |
|000018b0| 52 65 74 75 72 6e 73 20 | 6e 69 6c 20 69 66 20 74 |Returns |nil if t|
|000018c0| 68 65 20 61 72 67 75 6d | 65 6e 74 20 69 73 20 6e |he argum|ent is n|
|000018d0| 6f 74 20 61 0a 66 75 6c | 6c 20 61 6e 67 65 2d 66 |ot a.ful|l ange-f|
|000018e0| 74 70 20 70 61 74 68 6e | 61 6d 65 2e 22 5d 29 0a |tp pathn|ame."]).|
|000018f0| 28 64 65 66 61 6c 69 61 | 73 20 27 73 68 61 64 6f |(defalia|s 'shado|
|00001900| 77 2d 70 61 72 73 65 2d | 70 61 74 68 20 23 5b 28 |w-parse-|path #[(|
|00001910| 70 61 74 68 29 20 22 c0 | 09 21 86 0b 00 5c 6e c3 |path) ".|.!...\n.|
|00001920| 20 09 45 87 22 20 5b 73 | 68 61 64 6f 77 2d 70 61 | .E." [s|hadow-pa|
|00001930| 72 73 65 2d 66 75 6c 6c | 70 61 74 68 20 70 61 74 |rse-full|path pat|
|00001940| 68 20 73 68 61 64 6f 77 | 2d 73 79 73 74 65 6d 2d |h shadow|-system-|
|00001950| 6e 61 6d 65 20 75 73 65 | 72 2d 6c 6f 67 69 6e 2d |name use|r-login-|
|00001960| 6e 61 6d 65 5d 20 33 20 | 22 5c 0a 50 61 72 73 65 |name] 3 |"\.Parse|
|00001970| 20 61 6e 79 20 50 41 54 | 48 20 69 6e 74 6f 20 28 | any PAT|H into (|
|00001980| 73 69 74 65 20 75 73 65 | 72 20 70 61 74 68 29 20 |site use|r path) |
|00001990| 6c 69 73 74 2e 0a 41 72 | 67 75 6d 65 6e 74 20 63 |list..Ar|gument c|
|000019a0| 61 6e 20 62 65 20 61 20 | 73 69 6d 70 6c 65 20 70 |an be a |simple p|
|000019b0| 61 74 68 2c 20 66 75 6c | 6c 20 61 6e 67 65 2d 66 |ath, ful|l ange-f|
|000019c0| 74 70 20 70 61 74 68 2c | 20 6f 72 20 61 6c 72 65 |tp path,| or alre|
|000019d0| 61 64 79 20 61 20 68 75 | 70 20 6c 69 73 74 2e 22 |ady a hu|p list."|
|000019e0| 5d 29 0a 28 64 65 66 61 | 6c 69 61 73 20 27 73 68 |]).(defa|lias 'sh|
|000019f0| 61 64 6f 77 2d 6d 61 6b | 65 2d 66 75 6c 6c 70 61 |adow-mak|e-fullpa|
|00001a00| 74 68 20 23 5b 28 68 6f | 73 74 20 75 73 65 72 20 |th #[(ho|st user |
|00001a10| 70 61 74 68 29 20 22 c0 | 09 85 08 00 09 c2 50 0b |path) ".|......P.|
|00001a20| c4 0d b0 05 87 22 20 5b | 22 2f 22 20 75 73 65 72 |....." [|"/" user|
|00001a30| 20 22 40 22 20 68 6f 73 | 74 20 22 3a 22 20 70 61 | "@" hos|t ":" pa|
|00001a40| 74 68 5d 20 35 20 22 5c | 0a 4d 61 6b 65 20 61 6e |th] 5 "\|.Make an|
|00001a50| 20 61 6e 67 65 2d 66 74 | 70 20 73 74 79 6c 65 20 | ange-ft|p style |
|00001a60| 66 75 6c 6c 70 61 74 68 | 20 6f 75 74 20 6f 66 20 |fullpath| out of |
|00001a70| 48 4f 53 54 2c 20 55 53 | 45 52 20 28 6f 70 74 69 |HOST, US|ER (opti|
|00001a80| 6f 6e 61 6c 29 2c 20 61 | 6e 64 20 50 41 54 48 2e |onal), a|nd PATH.|
|00001a90| 0a 54 68 69 73 20 69 73 | 20 70 72 6f 62 61 62 6c |.This is| probabl|
|00001aa0| 79 20 6e 6f 74 20 61 73 | 20 67 65 6e 65 72 61 6c |y not as| general|
|00001ab0| 20 61 73 20 69 74 20 6f | 75 67 68 74 20 74 6f 20 | as it o|ught to |
|00001ac0| 62 65 2e 22 5d 29 0a 28 | 70 75 74 20 28 71 75 6f |be."]).(|put (quo|
|00001ad0| 74 65 20 73 68 61 64 6f | 77 2d 6d 61 6b 65 2d 66 |te shado|w-make-f|
|00001ae0| 75 6c 6c 70 61 74 68 29 | 20 28 71 75 6f 74 65 20 |ullpath)| (quote |
|00001af0| 62 79 74 65 2d 6f 70 74 | 69 6d 69 7a 65 72 29 20 |byte-opt|imizer) |
|00001b00| 28 71 75 6f 74 65 20 62 | 79 74 65 2d 63 6f 6d 70 |(quote b|yte-comp|
|00001b10| 69 6c 65 2d 69 6e 6c 69 | 6e 65 2d 65 78 70 61 6e |ile-inli|ne-expan|
|00001b20| 64 29 29 0a 28 64 65 66 | 61 6c 69 61 73 20 27 73 |d)).(def|alias 's|
|00001b30| 68 61 64 6f 77 2d 72 65 | 70 6c 61 63 65 2d 70 61 |hadow-re|place-pa|
|00001b40| 74 68 2d 63 6f 6d 70 6f | 6e 65 6e 74 20 23 5b 28 |th-compo|nent #[(|
|00001b50| 66 75 6c 6c 70 61 74 68 | 20 6e 65 77 70 61 74 68 |fullpath| newpath|
|00001b60| 29 20 22 c0 09 21 89 1a | 40 5c 6e 41 40 0b 1c 1d |) "..!..|@\nA@...|
|00001b70| 1e 06 c7 0d 85 16 00 0d | c8 50 0e 06 c9 5c 66 b0 |........|.P...\f.|
|00001b80| 05 2c 87 22 20 5b 73 68 | 61 64 6f 77 2d 70 61 72 |.,." [sh|adow-par|
|00001b90| 73 65 2d 66 75 6c 6c 70 | 61 74 68 20 66 75 6c 6c |se-fullp|ath full|
|00001ba0| 70 61 74 68 20 68 75 70 | 20 6e 65 77 70 61 74 68 |path hup| newpath|
|00001bb0| 20 70 61 74 68 20 75 73 | 65 72 20 68 6f 73 74 20 | path us|er host |
|00001bc0| 22 2f 22 20 22 40 22 20 | 22 3a 22 5d 20 36 20 22 |"/" "@" |":"] 6 "|
|00001bd0| 5c 0a 52 65 74 75 72 6e | 20 46 55 4c 4c 50 41 54 |\.Return| FULLPAT|
|00001be0| 48 20 77 69 74 68 20 74 | 68 65 20 70 61 74 68 6e |H with t|he pathn|
|00001bf0| 61 6d 65 20 63 6f 6d 70 | 6f 6e 65 6e 74 20 63 68 |ame comp|onent ch|
|00001c00| 61 6e 67 65 64 20 74 6f | 20 4e 45 57 50 41 54 48 |anged to| NEWPATH|
|00001c10| 2e 22 5d 29 0a 28 64 65 | 66 61 6c 69 61 73 20 27 |."]).(de|falias '|
|00001c20| 73 68 61 64 6f 77 2d 6c | 6f 63 61 6c 2d 66 69 6c |shadow-l|ocal-fil|
|00001c30| 65 20 23 5b 28 66 69 6c | 65 29 20 22 c0 09 21 89 |e #[(fil|e) "..!.|
|00001c40| 1a 84 5c 66 00 09 82 24 | 00 c3 5c 6e 40 5c 66 5c |..\f...$|..\n@\f\|
|00001c50| 22 83 23 00 5c 6e 41 40 | c5 20 98 83 23 00 c6 5c |".#.\nA@|. ..#..\|
|00001c60| 6e 38 82 24 00 c7 29 87 | 22 20 5b 73 68 61 64 6f |n8.$..).|" [shado|
|00001c70| 77 2d 70 61 72 73 65 2d | 66 75 6c 6c 70 61 74 68 |w-parse-|fullpath|
|00001c80| 20 66 69 6c 65 20 68 75 | 70 20 73 68 61 64 6f 77 | file hu|p shadow|
|00001c90| 2d 73 69 74 65 2d 6d 61 | 74 63 68 20 73 68 61 64 |-site-ma|tch shad|
|00001ca0| 6f 77 2d 73 79 73 74 65 | 6d 2d 6e 61 6d 65 20 75 |ow-syste|m-name u|
|00001cb0| 73 65 72 2d 6c 6f 67 69 | 6e 2d 6e 61 6d 65 20 32 |ser-logi|n-name 2|
|00001cc0| 20 6e 69 6c 5d 20 34 20 | 22 5c 0a 49 66 20 46 49 | nil] 4 |"\.If FI|
|00001cd0| 4c 45 4e 41 4d 45 20 69 | 73 20 61 74 20 74 68 69 |LENAME i|s at thi|
|00001ce0| 73 20 73 69 74 65 2c 0a | 72 65 6d 6f 76 65 20 2f |s site,.|remove /|
|00001cf0| 75 73 65 72 40 68 6f 73 | 74 20 70 61 72 74 2e 20 |user@hos|t part. |
|00001d00| 20 49 66 20 72 65 66 65 | 72 73 20 74 6f 20 61 20 | If refe|rs to a |
|00001d10| 64 69 66 66 65 72 65 6e | 74 20 73 79 73 74 65 6d |differen|t system|
|00001d20| 20 6f 72 20 61 20 64 69 | 66 66 65 72 65 6e 74 20 | or a di|fferent |
|00001d30| 75 73 65 72 20 6f 6e 0a | 74 68 69 73 20 73 79 73 |user on.|this sys|
|00001d40| 74 65 6d 2c 20 72 65 74 | 75 72 6e 20 6e 69 6c 2e |tem, ret|urn nil.|
|00001d50| 22 5d 29 0a 28 64 65 66 | 61 6c 69 61 73 20 27 73 |"]).(def|alias 's|
|00001d60| 68 61 64 6f 77 2d 65 78 | 70 61 6e 64 2d 63 6c 75 |hadow-ex|pand-clu|
|00001d70| 73 74 65 72 2d 69 6e 2d | 66 69 6c 65 2d 6e 61 6d |ster-in-|file-nam|
|00001d80| 65 20 23 5b 28 66 69 6c | 65 29 20 22 c0 09 21 c2 |e #[(fil|e) "..!.|
|00001d90| 1b 89 1c 84 0e 00 09 82 | 36 00 c5 5c 66 21 86 36 |........|6..\f!.6|
|00001da0| 00 c6 5c 66 40 21 5c 66 | 41 40 c7 5c 66 38 1e 08 |..\f@!\f|A@.\f8..|
|00001db0| 1e 09 1e 5c 6e cb 0e 09 | 85 2e 00 0e 09 cc 50 0e |...\n...|......P.|
|00001dc0| 5c 6e cd 0e 08 b0 05 2b | 2a 87 22 20 5b 73 68 61 |\n.....+|*." [sha|
|00001dd0| 64 6f 77 2d 70 61 72 73 | 65 2d 70 61 74 68 20 66 |dow-pars|e-path f|
|00001de0| 69 6c 65 20 6e 69 6c 20 | 63 6c 75 73 74 65 72 20 |ile nil |cluster |
|00001df0| 68 75 70 20 73 68 61 64 | 6f 77 2d 6c 6f 63 61 6c |hup shad|ow-local|
|00001e00| 2d 66 69 6c 65 20 73 68 | 61 64 6f 77 2d 73 69 74 |-file sh|adow-sit|
|00001e10| 65 2d 70 72 69 6d 61 72 | 79 20 32 20 70 61 74 68 |e-primar|y 2 path|
|00001e20| 20 75 73 65 72 20 68 6f | 73 74 20 22 2f 22 20 22 | user ho|st "/" "|
|00001e30| 40 22 20 22 3a 22 5d 20 | 36 20 22 5c 0a 49 66 20 |@" ":"] |6 "\.If |
|00001e40| 68 6f 73 74 6e 61 6d 65 | 20 70 61 72 74 20 6f 66 |hostname| part of|
|00001e50| 20 46 49 4c 45 20 69 73 | 20 61 20 63 6c 75 73 74 | FILE is| a clust|
|00001e60| 65 72 2c 20 65 78 70 61 | 6e 64 20 69 74 0a 69 6e |er, expa|nd it.in|
|00001e70| 74 6f 20 74 68 65 20 63 | 6c 75 73 74 65 72 27 73 |to the c|luster's|
|00001e80| 20 70 72 69 6d 61 72 79 | 20 68 6f 73 74 6e 61 6d | primary| hostnam|
|00001e90| 65 2e 20 20 57 69 6c 6c | 20 72 65 74 75 72 6e 20 |e. Will| return |
|00001ea0| 74 68 65 20 70 61 74 68 | 6e 61 6d 65 20 62 61 72 |the path|name bar|
|00001eb0| 65 20 69 66 20 69 74 20 | 69 73 0a 61 20 6c 6f 63 |e if it |is.a loc|
|00001ec0| 61 6c 20 66 69 6c 65 2e | 22 5d 29 0a 28 64 65 66 |al file.|"]).(def|
|00001ed0| 61 6c 69 61 73 20 27 73 | 68 61 64 6f 77 2d 65 78 |alias 's|hadow-ex|
|00001ee0| 70 61 6e 64 2d 66 69 6c | 65 2d 6e 61 6d 65 20 23 |pand-fil|e-name #|
|00001ef0| 5b 28 66 69 6c 65 20 26 | 6f 70 74 69 6f 6e 61 6c |[(file &|optional|
|00001f00| 20 64 65 66 61 75 6c 74 | 29 20 22 c0 c1 5c 6e 0b | default|) "..\n.|
|00001f10| 5c 22 21 87 22 20 5b 66 | 69 6c 65 2d 74 72 75 65 |\"!." [f|ile-true|
|00001f20| 6e 61 6d 65 20 65 78 70 | 61 6e 64 2d 66 69 6c 65 |name exp|and-file|
|00001f30| 2d 6e 61 6d 65 20 66 69 | 6c 65 20 64 65 66 61 75 |-name fi|le defau|
|00001f40| 6c 74 5d 20 34 20 22 5c | 0a 45 78 70 61 6e 64 20 |lt] 4 "\|.Expand |
|00001f50| 66 69 6c 65 20 6e 61 6d | 65 20 61 6e 64 20 67 65 |file nam|e and ge|
|00001f60| 74 20 66 69 6c 65 27 73 | 20 74 72 75 65 20 6e 61 |t file's| true na|
|00001f70| 6d 65 2e 22 5d 29 0a 28 | 64 65 66 61 6c 69 61 73 |me."]).(|defalias|
|00001f80| 20 27 73 68 61 64 6f 77 | 2d 63 6f 6e 74 72 61 63 | 'shadow|-contrac|
|00001f90| 74 2d 66 69 6c 65 2d 6e | 61 6d 65 20 23 5b 28 66 |t-file-n|ame #[(f|
|00001fa0| 69 6c 65 29 20 22 c0 09 | 21 1a c3 5c 6e 21 83 0e |ile) "..|!..\n!..|
|00001fb0| 00 5c 66 82 34 00 c5 c6 | c7 c8 5c 6e 40 5c 6e 41 |.\f.4...|..\n@\nA|
|00001fc0| 40 c9 1e 5c 6e 1e 0b 1e | 5c 66 cd 0e 0b 85 28 00 |@..\n...|\f....(.|
|00001fd0| 0e 0b ce 50 0e 5c 66 cf | 0e 5c 6e b0 05 2b 21 21 |...P.\f.|.\n..+!!|
|00001fe0| 38 21 1e 10 d1 0e 10 c6 | 5c 6e 38 5c 22 1e 12 d3 |8!......|\n8\"...|
|00001ff0| 5c 6e 40 21 89 1e 14 83 | 50 00 0e 14 d5 9c 82 52 |\n@!....|P......R|
|00002000| 00 5c 6e 40 5c 6e 41 40 | 0e 12 83 61 00 d6 0e 12 |.\n@\nA@|...a....|
|00002010| 50 82 64 00 c6 5c 6e 38 | 1e 5c 6e 1e 0b 1e 5c 66 |P.d..\n8|.\n...\f|
|00002020| cd 0e 0b 85 74 00 0e 0b | ce 50 0e 5c 66 cf 0e 5c |....t...|.P.\f..\|
|00002030| 6e b0 05 2e 07 87 22 20 | 5b 73 68 61 64 6f 77 2d |n....." |[shadow-|
|00002040| 70 61 72 73 65 2d 70 61 | 74 68 20 66 69 6c 65 20 |parse-pa|th file |
|00002050| 68 75 70 20 73 68 61 64 | 6f 77 2d 6c 6f 63 61 6c |hup shad|ow-local|
|00002060| 2d 66 69 6c 65 20 73 68 | 61 64 6f 77 2d 68 6f 6d |-file sh|adow-hom|
|00002070| 65 64 69 72 20 66 69 6c | 65 2d 6e 61 6d 65 2d 61 |edir fil|e-name-a|
|00002080| 73 2d 64 69 72 65 63 74 | 6f 72 79 20 32 20 73 68 |s-direct|ory 2 sh|
|00002090| 61 64 6f 77 2d 70 61 72 | 73 65 2d 66 75 6c 6c 70 |adow-par|se-fullp|
|000020a0| 61 74 68 20 65 78 70 61 | 6e 64 2d 66 69 6c 65 2d |ath expa|nd-file-|
|000020b0| 6e 61 6d 65 20 22 7e 22 | 20 70 61 74 68 20 75 73 |name "~"| path us|
|000020c0| 65 72 20 68 6f 73 74 20 | 22 2f 22 20 22 40 22 20 |er host |"/" "@" |
|000020d0| 22 3a 22 20 68 6f 6d 65 | 64 69 72 20 73 68 61 64 |":" home|dir shad|
|000020e0| 6f 77 2d 73 75 66 66 69 | 78 20 73 75 66 66 69 78 |ow-suffi|x suffix|
|000020f0| 20 73 68 61 64 6f 77 2d | 73 69 74 65 2d 63 6c 75 | shadow-|site-clu|
|00002100| 73 74 65 72 20 63 6c 75 | 73 74 65 72 20 30 20 22 |ster clu|ster 0 "|
|00002110| 7e 2f 22 5d 20 31 30 20 | 22 5c 0a 53 69 6d 70 6c |~/"] 10 |"\.Simpl|
|00002120| 69 66 79 20 46 49 4c 45 | 4e 41 4d 45 0a 62 79 20 |ify FILE|NAME.by |
|00002130| 72 65 70 6c 61 63 69 6e | 67 20 28 77 68 65 6e 20 |replacin|g (when |
|00002140| 70 6f 73 73 69 62 6c 65 | 29 20 68 6f 6d 65 20 64 |possible|) home d|
|00002150| 69 72 65 63 74 6f 72 79 | 20 77 69 74 68 20 7e 2c |irectory| with ~,|
|00002160| 20 61 6e 64 20 68 6f 73 | 74 6e 61 6d 65 20 77 69 | and hos|tname wi|
|00002170| 74 68 20 63 6c 75 73 74 | 65 72 0a 6e 61 6d 65 20 |th clust|er.name |
|00002180| 74 68 61 74 20 69 6e 63 | 6c 75 64 65 73 20 69 74 |that inc|ludes it|
|00002190| 2e 20 20 46 69 6c 65 6e | 61 6d 65 20 73 68 6f 75 |. Filen|ame shou|
|000021a0| 6c 64 20 62 65 20 61 62 | 73 6f 6c 75 74 65 20 61 |ld be ab|solute a|
|000021b0| 6e 64 20 74 72 75 65 2e | 22 5d 29 0a 28 64 65 66 |nd true.|"]).(def|
|000021c0| 61 6c 69 61 73 20 27 73 | 68 61 64 6f 77 2d 73 61 |alias 's|hadow-sa|
|000021d0| 6d 65 2d 73 69 74 65 20 | 23 5b 28 70 61 74 74 65 |me-site |#[(patte|
|000021e0| 72 6e 20 66 69 6c 65 29 | 20 22 c0 09 21 c2 0b 21 |rn file)| "..!..!|
|000021f0| 1c 1d c6 0d 40 5c 66 40 | 5c 22 85 1f 00 0d 41 40 |....@\f@|\"....A@|
|00002200| 3f 86 1f 00 0d 41 40 5c | 66 41 40 98 2a 87 22 20 |?....A@\|fA@.*." |
|00002210| 5b 73 68 61 64 6f 77 2d | 70 61 72 73 65 2d 66 75 |[shadow-|parse-fu|
|00002220| 6c 6c 70 61 74 68 20 70 | 61 74 74 65 72 6e 20 73 |llpath p|attern s|
|00002230| 68 61 64 6f 77 2d 70 61 | 72 73 65 2d 70 61 74 68 |hadow-pa|rse-path|
|00002240| 20 66 69 6c 65 20 66 69 | 6c 65 2d 73 75 70 20 70 | file fi|le-sup p|
|00002250| 61 74 74 65 72 6e 2d 73 | 75 70 20 73 68 61 64 6f |attern-s|up shado|
|00002260| 77 2d 73 69 74 65 2d 6d | 61 74 63 68 5d 20 33 20 |w-site-m|atch] 3 |
|00002270| 22 5c 0a 54 72 75 65 20 | 69 66 20 74 68 65 20 73 |"\.True |if the s|
|00002280| 69 74 65 20 6f 66 20 50 | 41 54 54 45 52 4e 20 61 |ite of P|ATTERN a|
|00002290| 6e 64 20 6f 66 20 46 49 | 4c 45 20 61 72 65 20 6f |nd of FI|LE are o|
|000022a0| 6e 20 74 68 65 20 73 61 | 6d 65 20 73 69 74 65 2e |n the sa|me site.|
|000022b0| 0a 49 66 20 75 73 65 72 | 6e 61 6d 65 73 20 61 72 |.If user|names ar|
|000022c0| 65 20 73 75 70 70 6c 69 | 65 64 2c 20 74 68 65 79 |e suppli|ed, they|
|000022d0| 20 6d 75 73 74 20 61 6c | 73 6f 20 6d 61 74 63 68 | must al|so match|
|000022e0| 20 65 78 61 63 74 6c 79 | 2e 20 20 50 41 54 54 45 | exactly|. PATTE|
|000022f0| 52 4e 20 61 6e 64 20 46 | 49 4c 45 20 6d 61 79 0a |RN and F|ILE may.|
|00002300| 62 65 20 6c 69 73 74 73 | 20 6f 66 20 68 6f 73 74 |be lists| of host|
|00002310| 2c 20 75 73 65 72 2c 20 | 70 61 74 68 2c 20 6f 72 |, user, |path, or|
|00002320| 20 61 6e 67 65 2d 66 74 | 70 20 70 61 74 68 6e 61 | ange-ft|p pathna|
|00002330| 6d 65 73 2e 20 20 46 49 | 4c 45 20 6d 61 79 20 61 |mes. FI|LE may a|
|00002340| 6c 73 6f 20 62 65 20 6a | 75 73 74 20 61 0a 6c 6f |lso be j|ust a.lo|
|00002350| 63 61 6c 20 66 69 6c 65 | 6e 61 6d 65 2e 22 5d 29 |cal file|name."])|
|00002360| 0a 28 64 65 66 61 6c 69 | 61 73 20 27 73 68 61 64 |.(defali|as 'shad|
|00002370| 6f 77 2d 66 69 6c 65 2d | 6d 61 74 63 68 20 23 5b |ow-file-|match #[|
|00002380| 28 70 61 74 74 65 72 6e | 20 66 69 6c 65 20 26 6f |(pattern| file &o|
|00002390| 70 74 69 6f 6e 61 6c 20 | 72 65 67 65 78 70 29 20 |ptional |regexp) |
|000023a0| 22 c0 09 21 1a c3 5c 66 | 21 1d c6 5c 6e 0d 5c 22 |"..!..\f|!..\n.\"|
|000023b0| 85 26 00 0e 07 83 1f 00 | c8 c9 5c 6e 38 c9 0d 38 |.&......|..\n8..8|
|000023c0| 5c 22 82 26 00 c9 5c 6e | 38 c9 0d 38 98 2a 87 22 |\".&..\n|8..8.*."|
|000023d0| 20 5b 73 68 61 64 6f 77 | 2d 70 61 72 73 65 2d 66 | [shadow|-parse-f|
|000023e0| 75 6c 6c 70 61 74 68 20 | 70 61 74 74 65 72 6e 20 |ullpath |pattern |
|000023f0| 70 61 74 74 65 72 6e 2d | 73 75 70 20 73 68 61 64 |pattern-|sup shad|
|00002400| 6f 77 2d 70 61 72 73 65 | 2d 70 61 74 68 20 66 69 |ow-parse|-path fi|
|00002410| 6c 65 20 66 69 6c 65 2d | 73 75 70 20 73 68 61 64 |le file-|sup shad|
|00002420| 6f 77 2d 73 61 6d 65 2d | 73 69 74 65 20 72 65 67 |ow-same-|site reg|
|00002430| 65 78 70 20 73 74 72 69 | 6e 67 2d 6d 61 74 63 68 |exp stri|ng-match|
|00002440| 20 32 5d 20 34 20 22 5c | 0a 52 65 74 75 72 6e 73 | 2] 4 "\|.Returns|
|00002450| 20 74 20 69 66 20 50 41 | 54 54 45 52 4e 20 6d 61 | t if PA|TTERN ma|
|00002460| 74 63 68 65 73 20 46 49 | 4c 45 2e 0a 49 66 20 52 |tches FI|LE..If R|
|00002470| 45 47 45 58 50 20 69 73 | 20 73 75 70 70 6c 69 65 |EGEXP is| supplie|
|00002480| 64 20 61 6e 64 20 6e 6f | 6e 6e 69 6c 2c 20 74 68 |d and no|nnil, th|
|00002490| 65 20 70 61 74 68 6e 61 | 6d 65 20 70 61 72 74 20 |e pathna|me part |
|000024a0| 6f 66 20 74 68 65 20 70 | 61 74 74 65 72 6e 20 69 |of the p|attern i|
|000024b0| 73 20 61 20 72 65 67 75 | 6c 61 72 0a 65 78 70 72 |s a regu|lar.expr|
|000024c0| 65 73 73 69 6f 6e 2c 20 | 6f 74 68 65 72 77 69 73 |ession, |otherwis|
|000024d0| 65 20 69 74 20 6d 75 73 | 74 20 6d 61 74 63 68 20 |e it mus|t match |
|000024e0| 65 78 61 63 74 6c 79 2e | 20 20 54 68 65 20 73 69 |exactly.| The si|
|000024f0| 74 65 73 20 61 6e 64 20 | 75 73 65 72 6e 61 6d 65 |tes and |username|
|00002500| 73 20 6d 75 73 74 0a 6d | 61 74 63 68 2d 2d 2d 73 |s must.m|atch---s|
|00002510| 65 65 20 73 68 61 64 6f | 77 2d 73 61 6d 65 2d 73 |ee shado|w-same-s|
|00002520| 69 74 65 2e 20 20 54 68 | 65 20 70 61 74 74 65 72 |ite. Th|e patter|
|00002530| 6e 20 6d 75 73 74 20 62 | 65 20 69 6e 20 66 75 6c |n must b|e in ful|
|00002540| 6c 20 61 6e 67 65 2d 66 | 74 70 20 66 6f 72 6d 61 |l ange-f|tp forma|
|00002550| 74 2c 20 62 75 74 0a 74 | 68 65 20 66 69 6c 65 20 |t, but.t|he file |
|00002560| 63 61 6e 20 62 65 20 61 | 6e 79 20 76 61 6c 69 64 |can be a|ny valid|
|00002570| 20 66 69 6c 65 6e 61 6d | 65 2e 20 20 54 68 69 73 | filenam|e. This|
|00002580| 20 66 75 6e 63 74 69 6f | 6e 20 64 6f 65 73 20 6e | functio|n does n|
|00002590| 6f 74 20 64 6f 20 61 6e | 79 20 66 69 6c 65 6e 61 |ot do an|y filena|
|000025a0| 6d 65 0a 65 78 70 61 6e | 73 69 6f 6e 20 6f 72 20 |me.expan|sion or |
|000025b0| 63 6f 6e 74 72 61 63 74 | 69 6f 6e 2c 20 79 6f 75 |contract|ion, you|
|000025c0| 20 6d 75 73 74 20 64 6f | 20 74 68 61 74 20 79 6f | must do| that yo|
|000025d0| 75 72 73 65 6c 66 20 66 | 69 72 73 74 2e 22 5d 29 |urself f|irst."])|
|000025e0| 0a 28 64 65 66 61 6c 69 | 61 73 20 27 73 68 61 64 |.(defali|as 'shad|
|000025f0| 6f 77 2d 64 65 66 69 6e | 65 2d 63 6c 75 73 74 65 |ow-defin|e-cluste|
|00002600| 72 20 23 5b 28 6e 61 6d | 65 29 20 22 c0 09 5c 6e |r #[(nam|e) "..\n|
|00002610| 5c 22 1b c4 c5 0b 83 11 | 00 0b c6 9c 82 12 00 09 |\"......|........|
|00002620| 5c 22 1e 07 c8 1e 09 ca | c4 cb 0b 83 25 00 0b cc |\"......|....%...|
|00002630| 9c 82 29 00 cd 0e 07 21 | 5c 22 89 16 09 0e 07 5c |..)....!|\".....\|
|00002640| 22 84 3e 00 ce cf 21 88 | d0 cc 21 88 82 18 00 0e |".>...!.|..!.....|
|00002650| 09 29 1e 11 d2 09 0e 07 | 0e 11 23 2b 87 22 20 5b |.)......|..#+." [|
|00002660| 61 73 73 6f 63 20 6e 61 | 6d 65 20 73 68 61 64 6f |assoc na|me shado|
|00002670| 77 2d 63 6c 75 73 74 65 | 72 73 20 6f 6c 64 20 72 |w-cluste|rs old r|
|00002680| 65 61 64 2d 73 74 72 69 | 6e 67 20 22 50 72 69 6d |ead-stri|ng "Prim|
|00002690| 61 72 79 20 68 6f 73 74 | 3a 20 22 20 31 20 70 72 |ary host|: " 1 pr|
|000026a0| 69 6d 61 72 79 20 6e 69 | 6c 20 74 72 79 2d 72 65 |imary ni|l try-re|
|000026b0| 67 65 78 70 20 73 74 72 | 69 6e 67 2d 6d 61 74 63 |gexp str|ing-matc|
|000026c0| 68 20 22 52 65 67 65 78 | 70 20 6d 61 74 63 68 69 |h "Regex|p matchi|
|000026d0| 6e 67 20 61 6c 6c 20 68 | 6f 73 74 20 6e 61 6d 65 |ng all h|ost name|
|000026e0| 73 3a 20 22 20 32 20 73 | 68 61 64 6f 77 2d 72 65 |s: " 2 s|hadow-re|
|000026f0| 67 65 78 70 2d 73 75 70 | 65 72 71 75 6f 74 65 20 |gexp-sup|erquote |
|00002700| 6d 65 73 73 61 67 65 20 | 22 52 65 67 65 78 70 20 |message |"Regexp |
|00002710| 64 6f 65 73 6e 27 74 20 | 69 6e 63 6c 75 64 65 20 |doesn't |include |
|00002720| 74 68 65 20 70 72 69 6d | 61 72 79 20 68 6f 73 74 |the prim|ary host|
|00002730| 21 22 20 73 69 74 2d 66 | 6f 72 20 72 65 67 65 78 |!" sit-f|or regex|
|00002740| 70 20 73 68 61 64 6f 77 | 2d 73 65 74 2d 63 6c 75 |p shadow|-set-clu|
|00002750| 73 74 65 72 5d 20 35 20 | 22 5c 0a 45 64 69 74 20 |ster] 5 |"\.Edit |
|00002760| 28 6f 72 20 63 72 65 61 | 74 65 29 20 74 68 65 20 |(or crea|te) the |
|00002770| 64 65 66 69 6e 69 74 69 | 6f 6e 20 6f 66 20 61 20 |definiti|on of a |
|00002780| 63 6c 75 73 74 65 72 2e | 0a 54 68 69 73 20 69 73 |cluster.|.This is|
|00002790| 20 61 20 67 72 6f 75 70 | 20 6f 66 20 68 6f 73 74 | a group| of host|
|000027a0| 73 20 74 68 61 74 20 73 | 68 61 72 65 20 64 69 72 |s that s|hare dir|
|000027b0| 65 63 74 6f 72 69 65 73 | 2c 20 73 6f 20 74 68 61 |ectories|, so tha|
|000027c0| 74 20 63 6f 70 79 69 6e | 67 20 74 6f 20 6f 72 20 |t copyin|g to or |
|000027d0| 66 72 6f 6d 0a 6f 6e 65 | 20 6f 66 20 74 68 65 6d |from.one| of them|
|000027e0| 20 69 73 20 73 75 66 66 | 69 63 69 65 6e 74 20 74 | is suff|icient t|
|000027f0| 6f 20 75 70 64 61 74 65 | 20 74 68 65 20 66 69 6c |o update| the fil|
|00002800| 65 20 6f 6e 20 61 6c 6c | 20 6f 66 20 74 68 65 6d |e on all| of them|
|00002810| 2e 20 20 43 6c 75 73 74 | 65 72 73 20 61 72 65 0a |. Clust|ers are.|
|00002820| 64 65 66 69 6e 65 64 20 | 62 79 20 61 20 6e 61 6d |defined |by a nam|
|00002830| 65 2c 20 74 68 65 20 6e | 65 74 77 6f 72 6b 20 61 |e, the n|etwork a|
|00002840| 64 64 72 65 73 73 20 6f | 66 20 61 20 70 72 69 6d |ddress o|f a prim|
|00002850| 61 72 79 20 68 6f 73 74 | 20 28 74 68 65 20 6f 6e |ary host| (the on|
|00002860| 65 20 77 65 20 63 6f 70 | 79 0a 66 69 6c 65 73 20 |e we cop|y.files |
|00002870| 74 6f 29 2c 20 61 6e 64 | 20 61 20 72 65 67 75 6c |to), and| a regul|
|00002880| 61 72 20 65 78 70 72 65 | 73 73 69 6f 6e 20 74 68 |ar expre|ssion th|
|00002890| 61 74 20 6d 61 74 63 68 | 65 73 20 74 68 65 20 68 |at match|es the h|
|000028a0| 6f 73 74 6e 61 6d 65 73 | 20 6f 66 20 61 6c 6c 20 |ostnames| of all |
|000028b0| 74 68 65 20 73 69 74 65 | 73 0a 69 6e 20 74 68 65 |the site|s.in the|
|000028c0| 20 63 6c 75 73 74 65 72 | 2e 22 20 28 6c 69 73 74 | cluster|." (list|
|000028d0| 20 28 63 6f 6d 70 6c 65 | 74 69 6e 67 2d 72 65 61 | (comple|ting-rea|
|000028e0| 64 20 22 43 6c 75 73 74 | 65 72 20 6e 61 6d 65 3a |d "Clust|er name:|
|000028f0| 20 22 20 73 68 61 64 6f | 77 2d 63 6c 75 73 74 65 | " shado|w-cluste|
|00002900| 72 73 20 6e 69 6c 20 6e | 69 6c 29 29 5d 29 0a 28 |rs nil n|il))]).(|
|00002910| 64 65 66 61 6c 69 61 73 | 20 27 73 68 61 64 6f 77 |defalias| 'shadow|
|00002920| 2d 64 65 66 69 6e 65 2d | 6c 69 74 65 72 61 6c 2d |-define-|literal-|
|00002930| 67 72 6f 75 70 20 23 5b | 6e 69 6c 20 22 c0 c1 c2 |group #[|nil "...|
|00002940| 20 21 21 1b c4 0b 38 1d | c6 1e 07 c6 1e 08 c6 1e | !!...8.|........|
|00002950| 09 ca 20 89 16 08 83 5d | 00 cb cc cd ce 0e 08 21 |.. ....]|.......!|
|00002960| 5c 22 21 16 07 cb cf 0d | 5c 22 15 0e 08 0e 07 d0 |\"!.....|\"......|
|00002970| 98 83 3c 00 ce 0e 08 21 | 82 3e 00 0e 07 0d 1d 1e |..<....!|.>......|
|00002980| 07 1e 11 d2 0e 07 85 4e | 00 0e 07 d3 50 0e 11 d4 |.......N|....P...|
|00002990| 0d b0 05 2b 0e 09 42 16 | 09 82 14 00 0e 09 0e 15 |...+..B.|........|
|000029a0| 42 16 15 2d d6 20 87 22 | 20 5b 73 68 61 64 6f 77 |B..-. ."| [shadow|
|000029b0| 2d 70 61 72 73 65 2d 66 | 75 6c 6c 70 61 74 68 20 |-parse-f|ullpath |
|000029c0| 73 68 61 64 6f 77 2d 63 | 6f 6e 74 72 61 63 74 2d |shadow-c|ontract-|
|000029d0| 66 69 6c 65 2d 6e 61 6d | 65 20 62 75 66 66 65 72 |file-nam|e buffer|
|000029e0| 2d 66 69 6c 65 2d 6e 61 | 6d 65 20 68 75 70 20 32 |-file-na|me hup 2|
|000029f0| 20 70 61 74 68 20 6e 69 | 6c 20 75 73 65 72 20 73 | path ni|l user s|
|00002a00| 69 74 65 20 67 72 6f 75 | 70 20 73 68 61 64 6f 77 |ite grou|p shadow|
|00002a10| 2d 72 65 61 64 2d 73 69 | 74 65 20 72 65 61 64 2d |-read-si|te read-|
|00002a20| 73 74 72 69 6e 67 20 66 | 6f 72 6d 61 74 20 22 55 |string f|ormat "U|
|00002a30| 73 65 72 6e 61 6d 65 20 | 5b 64 65 66 61 75 6c 74 |sername |[default|
|00002a40| 20 25 73 5d 3a 20 22 20 | 73 68 61 64 6f 77 2d 67 | %s]: " |shadow-g|
|00002a50| 65 74 2d 75 73 65 72 20 | 22 46 69 6c 65 6e 61 6d |et-user |"Filenam|
|00002a60| 65 3a 20 22 20 22 22 20 | 68 6f 73 74 20 22 2f 22 |e: " "" |host "/"|
|00002a70| 20 22 40 22 20 22 3a 22 | 20 73 68 61 64 6f 77 2d | "@" ":"| shadow-|
|00002a80| 6c 69 74 65 72 61 6c 2d | 67 72 6f 75 70 73 20 73 |literal-|groups s|
|00002a90| 68 61 64 6f 77 2d 77 72 | 69 74 65 2d 69 6e 66 6f |hadow-wr|ite-info|
|00002aa0| 2d 66 69 6c 65 5d 20 35 | 20 22 5c 0a 44 65 63 6c |-file] 5| "\.Decl|
|00002ab0| 61 72 65 20 61 20 73 69 | 6e 67 6c 65 20 66 69 6c |are a si|ngle fil|
|00002ac0| 65 20 74 6f 20 62 65 20 | 73 68 61 72 65 64 20 62 |e to be |shared b|
|00002ad0| 65 74 77 65 65 6e 20 73 | 69 74 65 73 2e 0a 49 74 |etween s|ites..It|
|00002ae0| 20 6d 61 79 20 68 61 76 | 65 20 64 69 66 66 65 72 | may hav|e differ|
|00002af0| 65 6e 74 20 66 69 6c 65 | 6e 61 6d 65 73 20 6f 6e |ent file|names on|
|00002b00| 20 65 61 63 68 20 73 69 | 74 65 2e 20 20 57 68 65 | each si|te. Whe|
|00002b10| 6e 20 74 68 69 73 20 66 | 69 6c 65 20 69 73 20 65 |n this f|ile is e|
|00002b20| 64 69 74 65 64 2c 20 74 | 68 65 0a 6e 65 77 20 76 |dited, t|he.new v|
|00002b30| 65 72 73 69 6f 6e 20 77 | 69 6c 6c 20 62 65 20 63 |ersion w|ill be c|
|00002b40| 6f 70 69 65 64 20 74 6f | 20 65 61 63 68 20 6f 66 |opied to| each of|
|00002b50| 20 74 68 65 20 6f 74 68 | 65 72 20 6c 6f 63 61 74 | the oth|er locat|
|00002b60| 69 6f 6e 73 2e 20 20 53 | 69 74 65 73 20 63 61 6e |ions. S|ites can|
|00002b70| 20 62 65 0a 73 70 65 63 | 69 66 69 63 20 68 6f 73 | be.spec|ific hos|
|00002b80| 74 6e 61 6d 65 73 2c 20 | 6f 72 20 6e 61 6d 65 73 |tnames, |or names|
|00002b90| 20 6f 66 20 63 6c 75 73 | 74 65 72 73 20 28 73 65 | of clus|ters (se|
|00002ba0| 65 20 73 68 61 64 6f 77 | 2d 64 65 66 69 6e 65 2d |e shadow|-define-|
|00002bb0| 63 6c 75 73 74 65 72 29 | 2e 22 20 6e 69 6c 5d 29 |cluster)|." nil])|
|00002bc0| 0a 28 64 65 66 61 6c 69 | 61 73 20 27 73 68 61 64 |.(defali|as 'shad|
|00002bd0| 6f 77 2d 64 65 66 69 6e | 65 2d 72 65 67 65 78 70 |ow-defin|e-regexp|
|00002be0| 2d 67 72 6f 75 70 20 23 | 5b 6e 69 6c 20 22 c0 c1 |-group #|[nil "..|
|00002bf0| c2 20 85 11 00 c3 c4 c5 | c6 c2 20 21 21 38 21 5c |. ......|.. !!8!\|
|00002c00| 22 c7 89 89 1e 08 1e 09 | 1e 5c 6e 1e 0b cc 20 89 |".......|.\n... .|
|00002c10| 16 5c 6e 83 3f 00 0e 5c | 6e 0e 09 42 16 09 c0 cd |.\n.?..\|n..B....|
|00002c20| ce 0e 5c 6e 5c 22 cf 0e | 5c 6e 21 5c 22 0e 08 42 |..\n\"..|\n!\"..B|
|00002c30| 16 08 82 1d 00 d0 0e 0b | 0e 09 0e 08 23 0e 11 42 |........|....#..B|
|00002c40| 16 11 d2 20 2c 87 22 20 | 5b 72 65 61 64 2d 73 74 |... ,." |[read-st|
|00002c50| 72 69 6e 67 20 22 46 69 | 6c 65 6e 61 6d 65 20 72 |ring "Fi|lename r|
|00002c60| 65 67 65 78 70 3a 20 22 | 20 62 75 66 66 65 72 2d |egexp: "| buffer-|
|00002c70| 66 69 6c 65 2d 6e 61 6d | 65 20 73 68 61 64 6f 77 |file-nam|e shadow|
|00002c80| 2d 72 65 67 65 78 70 2d | 73 75 70 65 72 71 75 6f |-regexp-|superquo|
|00002c90| 74 65 20 32 20 73 68 61 | 64 6f 77 2d 70 61 72 73 |te 2 sha|dow-pars|
|00002ca0| 65 2d 70 61 74 68 20 73 | 68 61 64 6f 77 2d 63 6f |e-path s|hadow-co|
|00002cb0| 6e 74 72 61 63 74 2d 66 | 69 6c 65 2d 6e 61 6d 65 |ntract-f|ile-name|
|00002cc0| 20 6e 69 6c 20 75 73 65 | 72 6e 61 6d 65 73 20 73 | nil use|rnames s|
|00002cd0| 69 74 65 73 20 73 69 74 | 65 20 72 65 67 65 78 70 |ites sit|e regexp|
|00002ce0| 20 73 68 61 64 6f 77 2d | 72 65 61 64 2d 73 69 74 | shadow-|read-sit|
|00002cf0| 65 20 66 6f 72 6d 61 74 | 20 22 55 73 65 72 6e 61 |e format| "Userna|
|00002d00| 6d 65 20 66 6f 72 20 25 | 73 3a 20 22 20 73 68 61 |me for %|s: " sha|
|00002d10| 64 6f 77 2d 67 65 74 2d | 75 73 65 72 20 73 68 61 |dow-get-|user sha|
|00002d20| 64 6f 77 2d 6d 61 6b 65 | 2d 67 72 6f 75 70 20 73 |dow-make|-group s|
|00002d30| 68 61 64 6f 77 2d 72 65 | 67 65 78 70 2d 67 72 6f |hadow-re|gexp-gro|
|00002d40| 75 70 73 20 73 68 61 64 | 6f 77 2d 77 72 69 74 65 |ups shad|ow-write|
|00002d50| 2d 69 6e 66 6f 2d 66 69 | 6c 65 5d 20 37 20 22 5c |-info-fi|le] 7 "\|
|00002d60| 0a 4d 61 6b 65 20 65 61 | 63 68 20 6f 66 20 61 20 |.Make ea|ch of a |
|00002d70| 67 72 6f 75 70 20 6f 66 | 20 66 69 6c 65 73 20 62 |group of| files b|
|00002d80| 65 20 73 68 61 72 65 64 | 20 62 65 74 77 65 65 6e |e shared| between|
|00002d90| 20 68 6f 73 74 73 2e 0a | 50 72 6f 6d 70 74 73 20 | hosts..|Prompts |
|00002da0| 66 6f 72 20 72 65 67 75 | 6c 61 72 20 65 78 70 72 |for regu|lar expr|
|00002db0| 65 73 73 69 6f 6e 3b 20 | 66 69 6c 65 73 20 6d 61 |ession; |files ma|
|00002dc0| 74 63 68 69 6e 67 20 74 | 68 69 73 20 61 72 65 20 |tching t|his are |
|00002dd0| 73 68 61 72 65 64 20 62 | 65 74 77 65 65 6e 20 61 |shared b|etween a|
|00002de0| 20 6c 69 73 74 0a 6f 66 | 20 73 69 74 65 73 2c 20 | list.of| sites, |
|00002df0| 77 68 69 63 68 20 61 72 | 65 20 61 6c 73 6f 20 70 |which ar|e also p|
|00002e00| 72 6f 6d 70 74 65 64 20 | 66 6f 72 2e 20 54 68 65 |rompted |for. The|
|00002e10| 20 66 69 6c 65 6e 61 6d | 65 73 20 6d 75 73 74 20 | filenam|es must |
|00002e20| 62 65 20 69 64 65 6e 74 | 69 63 61 6c 20 6f 6e 20 |be ident|ical on |
|00002e30| 61 6c 6c 0a 68 6f 73 74 | 73 20 28 69 66 20 74 68 |all.host|s (if th|
|00002e40| 65 79 20 61 72 65 6e 27 | 74 2c 20 75 73 65 20 73 |ey aren'|t, use s|
|00002e50| 68 61 64 6f 77 2d 64 65 | 66 69 6e 65 2d 67 72 6f |hadow-de|fine-gro|
|00002e60| 75 70 20 69 6e 73 74 65 | 61 64 20 6f 66 20 74 68 |up inste|ad of th|
|00002e70| 69 73 20 66 75 6e 63 74 | 69 6f 6e 29 2e 0a 45 61 |is funct|ion)..Ea|
|00002e80| 63 68 20 73 69 74 65 20 | 63 61 6e 20 62 65 20 65 |ch site |can be e|
|00002e90| 69 74 68 65 72 20 61 20 | 68 6f 73 74 6e 61 6d 65 |ither a |hostname|
|00002ea0| 20 6f 72 20 74 68 65 20 | 6e 61 6d 65 20 6f 66 20 | or the |name of |
|00002eb0| 61 20 63 6c 75 73 74 65 | 72 20 28 73 65 65 0a 73 |a cluste|r (see.s|
|00002ec0| 68 61 64 6f 77 2d 64 65 | 66 69 6e 65 2d 63 6c 75 |hadow-de|fine-clu|
|00002ed0| 73 74 65 72 29 2e 22 20 | 6e 69 6c 5d 29 0a 28 64 |ster)." |nil]).(d|
|00002ee0| 65 66 61 6c 69 61 73 20 | 27 73 68 61 64 6f 77 2d |efalias |'shadow-|
|00002ef0| 73 68 61 64 6f 77 73 20 | 23 5b 6e 69 6c 20 22 c0 |shadows |#[nil ".|
|00002f00| c1 c2 c3 c4 20 21 5c 22 | c5 5c 22 1e 06 c7 0e 06 |.... !\"|.\".....|
|00002f10| 47 c8 55 83 19 00 c9 82 | 1b 00 0e 06 21 29 87 22 |G.U.....|....!)."|
|00002f20| 20 5b 73 68 61 64 6f 77 | 2d 6a 6f 69 6e 20 6d 61 | [shadow|-join ma|
|00002f30| 70 63 61 72 20 63 64 72 | 20 73 68 61 64 6f 77 2d |pcar cdr| shadow-|
|00002f40| 73 68 61 64 6f 77 73 2d | 6f 66 20 62 75 66 66 65 |shadows-|of buffe|
|00002f50| 72 2d 66 69 6c 65 2d 6e | 61 6d 65 20 22 20 22 20 |r-file-n|ame " " |
|00002f60| 6d 73 67 20 6d 65 73 73 | 61 67 65 20 30 20 22 4e |msg mess|age 0 "N|
|00002f70| 6f 20 73 68 61 64 6f 77 | 73 2e 22 5d 20 35 20 22 |o shadow|s."] 5 "|
|00002f80| 5c 0a 49 6e 74 65 72 61 | 63 74 69 76 65 20 66 75 |\.Intera|ctive fu|
|00002f90| 6e 63 74 69 6f 6e 20 74 | 6f 20 64 69 73 70 6c 61 |nction t|o displa|
|00002fa0| 79 20 73 68 61 64 6f 77 | 73 20 6f 66 20 61 20 62 |y shadow|s of a b|
|00002fb0| 75 66 66 65 72 2e 22 20 | 6e 69 6c 5d 29 0a 28 64 |uffer." |nil]).(d|
|00002fc0| 65 66 61 6c 69 61 73 20 | 27 73 68 61 64 6f 77 2d |efalias |'shadow-|
|00002fd0| 63 6f 70 79 2d 66 69 6c | 65 73 20 23 5b 28 26 6f |copy-fil|es #[(&o|
|00002fe0| 70 74 69 6f 6e 61 6c 20 | 61 72 67 29 20 22 08 84 |ptional |arg) "..|
|00002ff0| 5c 66 00 74 83 5c 66 00 | c1 c2 21 87 8a c3 c4 c5 |\f.t.\f.|..!.....|
|00003000| 08 c6 24 88 c7 c8 21 29 | 87 22 20 5b 73 68 61 64 |..$...!)|." [shad|
|00003010| 6f 77 2d 66 69 6c 65 73 | 2d 74 6f 2d 63 6f 70 79 |ow-files|-to-copy|
|00003020| 20 6d 65 73 73 61 67 65 | 20 22 4e 6f 20 66 69 6c | message| "No fil|
|00003030| 65 73 20 6e 65 65 64 20 | 74 6f 20 62 65 20 73 68 |es need |to be sh|
|00003040| 61 64 6f 77 65 64 2e 22 | 20 6d 61 70 2d 79 2d 6f |adowed."| map-y-o|
|00003050| 72 2d 6e 2d 70 20 23 5b | 28 70 61 69 72 29 20 22 |r-n-p #[|(pair) "|
|00003060| 08 86 0d 00 09 86 0d 00 | c2 c3 5c 66 41 5c 22 87 |........|..\fA\".|
|00003070| 22 20 5b 61 72 67 20 73 | 68 61 64 6f 77 2d 6e 6f |" [arg s|hadow-no|
|00003080| 71 75 65 72 79 20 66 6f | 72 6d 61 74 20 22 43 6f |query fo|rmat "Co|
|00003090| 70 79 20 73 68 61 64 6f | 77 20 66 69 6c 65 20 25 |py shado|w file %|
|000030a0| 73 3f 20 22 20 70 61 69 | 72 5d 20 33 5d 20 73 68 |s? " pai|r] 3] sh|
|000030b0| 61 64 6f 77 2d 63 6f 70 | 79 2d 66 69 6c 65 20 28 |adow-cop|y-file (|
|000030c0| 22 73 68 61 64 6f 77 22 | 20 22 73 68 61 64 6f 77 |"shadow"| "shadow|
|000030d0| 73 22 20 22 63 6f 70 79 | 22 29 20 73 68 61 64 6f |s" "copy|") shado|
|000030e0| 77 2d 77 72 69 74 65 2d | 74 6f 64 6f 2d 66 69 6c |w-write-|todo-fil|
|000030f0| 65 20 74 5d 20 35 20 22 | 5c 0a 43 6f 70 79 20 61 |e t] 5 "|\.Copy a|
|00003100| 6c 6c 20 70 65 6e 64 69 | 6e 67 20 73 68 61 64 6f |ll pendi|ng shado|
|00003110| 77 20 66 69 6c 65 73 2e | 0a 57 69 74 68 20 70 72 |w files.|.With pr|
|00003120| 65 66 69 78 20 61 72 67 | 75 6d 65 6e 74 2c 20 63 |efix arg|ument, c|
|00003130| 6f 70 79 20 61 6c 6c 20 | 70 65 6e 64 69 6e 67 20 |opy all |pending |
|00003140| 66 69 6c 65 73 20 77 69 | 74 68 6f 75 74 20 71 75 |files wi|thout qu|
|00003150| 65 72 79 2e 0a 50 65 6e | 64 69 6e 67 20 63 6f 70 |ery..Pen|ding cop|
|00003160| 69 65 73 20 61 72 65 20 | 73 74 6f 72 65 64 20 69 |ies are |stored i|
|00003170| 6e 20 76 61 72 69 61 62 | 6c 65 20 73 68 61 64 6f |n variab|le shado|
|00003180| 77 2d 66 69 6c 65 73 2d | 74 6f 2d 63 6f 70 79 2c |w-files-|to-copy,|
|00003190| 20 61 6e 64 20 69 6e 0a | 73 68 61 64 6f 77 2d 74 | and in.|shadow-t|
|000031a0| 6f 64 6f 2d 66 69 6c 65 | 20 69 66 20 6e 65 63 65 |odo-file| if nece|
|000031b0| 73 73 61 72 79 2e 20 20 | 54 68 69 73 20 66 75 6e |ssary. |This fun|
|000031c0| 63 74 69 6f 6e 20 69 73 | 20 69 6e 76 6f 6b 65 64 |ction is| invoked|
|000031d0| 20 62 79 0a 73 68 61 64 | 6f 77 2d 73 61 76 65 2d | by.shad|ow-save-|
|000031e0| 62 75 66 66 65 72 73 2d | 6b 69 6c 6c 2d 65 6d 61 |buffers-|kill-ema|
|000031f0| 63 73 2c 20 73 6f 20 69 | 74 20 69 73 20 6e 6f 74 |cs, so i|t is not|
|00003200| 20 75 73 75 61 6c 6c 79 | 20 6e 65 63 65 73 73 61 | usually| necessa|
|00003210| 72 79 20 74 6f 0a 63 61 | 6c 6c 20 69 74 20 6d 61 |ry to.ca|ll it ma|
|00003220| 6e 75 61 6c 6c 79 2e 22 | 20 22 50 22 5d 29 0a 28 |nually."| "P"]).(|
|00003230| 64 65 66 61 6c 69 61 73 | 20 27 73 68 61 64 6f 77 |defalias| 'shadow|
|00003240| 2d 63 61 6e 63 65 6c 20 | 23 5b 6e 69 6c 20 22 c0 |-cancel |#[nil ".|
|00003250| c1 c2 0b c4 24 88 c5 c6 | c7 0b 47 5c 22 21 88 c8 |....$...|..G\"!..|
|00003260| 20 87 22 20 5b 6d 61 70 | 2d 79 2d 6f 72 2d 6e 2d | ." [map|-y-or-n-|
|00003270| 70 20 23 5b 28 70 61 69 | 72 29 20 22 c0 c1 5c 6e |p #[(pai|r) "..\n|
|00003280| 40 5c 6e 41 23 87 22 20 | 5b 66 6f 72 6d 61 74 20 |@\nA#." |[format |
|00003290| 22 43 61 6e 63 65 6c 20 | 63 6f 70 79 69 6e 67 20 |"Cancel |copying |
|000032a0| 25 73 20 74 6f 20 25 73 | 3f 20 22 20 70 61 69 72 |%s to %s|? " pair|
|000032b0| 5d 20 34 5d 20 23 5b 28 | 70 61 69 72 29 20 22 c0 |] 4] #[(|pair) ".|
|000032c0| 09 21 87 22 20 5b 73 68 | 61 64 6f 77 2d 72 65 6d |.!." [sh|adow-rem|
|000032d0| 6f 76 65 2d 66 72 6f 6d | 2d 74 6f 64 6f 20 70 61 |ove-from|-todo pa|
|000032e0| 69 72 5d 20 32 5d 20 73 | 68 61 64 6f 77 2d 66 69 |ir] 2] s|hadow-fi|
|000032f0| 6c 65 73 2d 74 6f 2d 63 | 6f 70 79 20 28 22 73 68 |les-to-c|opy ("sh|
|00003300| 61 64 6f 77 22 20 22 73 | 68 61 64 6f 77 73 22 20 |adow" "s|hadows" |
|00003310| 22 63 61 6e 63 65 6c 20 | 63 6f 70 79 22 29 20 6d |"cancel |copy") m|
|00003320| 65 73 73 61 67 65 20 66 | 6f 72 6d 61 74 20 22 54 |essage f|ormat "T|
|00003330| 68 65 72 65 20 61 72 65 | 20 25 64 20 73 68 61 64 |here are| %d shad|
|00003340| 6f 77 73 20 74 6f 20 62 | 65 20 75 70 64 61 74 65 |ows to b|e update|
|00003350| 64 2e 22 20 73 68 61 64 | 6f 77 2d 77 72 69 74 65 |d." shad|ow-write|
|00003360| 2d 74 6f 64 6f 2d 66 69 | 6c 65 5d 20 35 20 22 5c |-todo-fi|le] 5 "\|
|00003370| 0a 43 61 6e 63 65 6c 20 | 74 68 65 20 69 6e 73 74 |.Cancel |the inst|
|00003380| 72 75 63 74 69 6f 6e 20 | 74 6f 20 63 6f 70 79 20 |ruction |to copy |
|00003390| 73 6f 6d 65 20 66 69 6c | 65 73 2e 0a 50 72 6f 6d |some fil|es..Prom|
|000033a0| 70 74 73 20 66 6f 72 20 | 77 68 69 63 68 20 63 6f |pts for |which co|
|000033b0| 70 79 20 6f 70 65 72 61 | 74 69 6f 6e 73 20 74 6f |py opera|tions to|
|000033c0| 20 63 61 6e 63 65 6c 2e | 20 20 59 6f 75 20 77 69 | cancel.| You wi|
|000033d0| 6c 6c 20 6e 6f 74 20 62 | 65 20 61 73 6b 65 64 20 |ll not b|e asked |
|000033e0| 74 6f 20 63 6f 70 79 0a | 74 68 65 6d 20 61 67 61 |to copy.|them aga|
|000033f0| 69 6e 2c 20 75 6e 6c 65 | 73 73 20 79 6f 75 20 6d |in, unle|ss you m|
|00003400| 61 6b 65 20 6d 6f 72 65 | 20 63 68 61 6e 67 65 73 |ake more| changes|
|00003410| 20 74 6f 20 74 68 65 20 | 66 69 6c 65 73 2e 20 20 | to the |files. |
|00003420| 54 6f 20 63 61 6e 63 65 | 6c 20 61 20 73 68 61 64 |To cance|l a shad|
|00003430| 6f 77 0a 70 65 72 6d 61 | 6e 65 6e 74 6c 79 2c 20 |ow.perma|nently, |
|00003440| 72 65 6d 6f 76 65 20 74 | 68 65 20 67 72 6f 75 70 |remove t|he group|
|00003450| 20 66 72 6f 6d 20 73 68 | 61 64 6f 77 2d 6c 69 74 | from sh|adow-lit|
|00003460| 65 72 61 6c 2d 67 72 6f | 75 70 73 20 6f 72 0a 73 |eral-gro|ups or.s|
|00003470| 68 61 64 6f 77 2d 72 65 | 67 65 78 70 2d 67 72 6f |hadow-re|gexp-gro|
|00003480| 75 70 73 2e 22 20 6e 69 | 6c 5d 29 0a 28 64 65 66 |ups." ni|l]).(def|
|00003490| 61 6c 69 61 73 20 27 73 | 68 61 64 6f 77 2d 6d 61 |alias 's|hadow-ma|
|000034a0| 6b 65 2d 67 72 6f 75 70 | 20 23 5b 28 72 65 67 65 |ke-group| #[(rege|
|000034b0| 78 70 20 73 69 74 65 73 | 20 75 73 65 72 6e 61 6d |xp sites| usernam|
|000034c0| 65 73 29 20 22 08 85 5c | 22 00 08 40 09 40 5c 6e |es) "..\|"..@.@\n|
|000034d0| 1b 1c 1d c6 5c 66 85 14 | 00 5c 66 c7 50 0d c8 0b |....\f..|.\f.P...|
|000034e0| b0 05 2b c9 5c 6e 08 41 | 09 41 23 42 87 22 20 5b |..+.\n.A|.A#B." [|
|000034f0| 73 69 74 65 73 20 75 73 | 65 72 6e 61 6d 65 73 20 |sites us|ernames |
|00003500| 72 65 67 65 78 70 20 70 | 61 74 68 20 75 73 65 72 |regexp p|ath user|
|00003510| 20 68 6f 73 74 20 22 2f | 22 20 22 40 22 20 22 3a | host "/|" "@" ":|
|00003520| 22 20 73 68 61 64 6f 77 | 2d 6d 61 6b 65 2d 67 72 |" shadow|-make-gr|
|00003530| 6f 75 70 5d 20 35 20 22 | 5c 0a 4d 61 6b 65 73 20 |oup] 5 "|\.Makes |
|00003540| 61 20 64 65 73 63 72 69 | 70 74 69 6f 6e 20 6f 66 |a descri|ption of|
|00003550| 20 61 20 66 69 6c 65 20 | 67 72 6f 75 70 2d 2d 2d | a file |group---|
|00003560| 0a 61 63 74 75 61 6c 6c | 79 20 61 20 6c 69 73 74 |.actuall|y a list|
|00003570| 20 6f 66 20 72 65 67 65 | 78 70 20 61 6e 67 65 2d | of rege|xp ange-|
|00003580| 66 74 70 20 66 69 6c 65 | 20 6e 61 6d 65 73 2d 2d |ftp file| names--|
|00003590| 2d 66 72 6f 6d 20 52 45 | 47 45 58 50 20 28 6e 61 |-from RE|GEXP (na|
|000035a0| 6d 65 20 6f 66 20 66 69 | 6c 65 20 74 6f 0a 62 65 |me of fi|le to.be|
|000035b0| 20 73 68 61 64 6f 77 65 | 64 29 2c 20 6c 69 73 74 | shadowe|d), list|
|000035c0| 20 6f 66 20 53 49 54 45 | 53 2c 20 61 6e 64 20 63 | of SITE|S, and c|
|000035d0| 6f 72 72 65 73 70 6f 6e | 64 69 6e 67 20 6c 69 73 |orrespon|ding lis|
|000035e0| 74 20 6f 66 20 55 53 45 | 52 4e 41 4d 45 53 20 66 |t of USE|RNAMES f|
|000035f0| 6f 72 20 65 61 63 68 0a | 73 69 74 65 2e 22 5d 29 |or each.|site."])|
|00003600| 0a 28 64 65 66 61 6c 69 | 61 73 20 27 73 68 61 64 |.(defali|as 'shad|
|00003610| 6f 77 2d 63 6f 70 79 2d | 66 69 6c 65 20 23 5b 28 |ow-copy-|file #[(|
|00003620| 73 29 20 22 c0 c1 c2 0b | 40 21 21 21 86 39 00 c4 |s) "....|@!!!.9..|
|00003630| 0b 40 21 84 24 00 c5 c6 | c7 0b 40 5c 22 21 83 20 |.@!.$...|..@\"!. |
|00003640| 00 c8 0b 21 88 c9 82 39 | 00 0e 5c 6e cb 3d 84 35 |...!...9|..\n.=.5|
|00003650| 00 c5 c6 cc 0b 40 5c 22 | 21 85 39 00 cd 0b 40 21 |.....@\"|!.9...@!|
|00003660| 1e 0e cf 0b 41 21 1e 10 | 0e 0e 3f 3f 85 54 00 0e |....A!..|..??.T..|
|00003670| 0e 71 88 8c 7e 88 d1 d2 | d3 8f 29 2a 87 22 20 5b |.q..~...|..)*." [|
|00003680| 67 65 74 2d 66 69 6c 65 | 2d 62 75 66 66 65 72 20 |get-file|-buffer |
|00003690| 61 62 62 72 65 76 69 61 | 74 65 2d 66 69 6c 65 2d |abbrevia|te-file-|
|000036a0| 6e 61 6d 65 20 73 68 61 | 64 6f 77 2d 65 78 70 61 |name sha|dow-expa|
|000036b0| 6e 64 2d 66 69 6c 65 2d | 6e 61 6d 65 20 73 20 66 |nd-file-|name s f|
|000036c0| 69 6c 65 2d 72 65 61 64 | 61 62 6c 65 2d 70 20 79 |ile-read|able-p y|
|000036d0| 2d 6f 72 2d 6e 2d 70 20 | 66 6f 72 6d 61 74 20 22 |-or-n-p |format "|
|000036e0| 43 61 6e 6e 6f 74 20 66 | 69 6e 64 20 66 69 6c 65 |Cannot f|ind file|
|000036f0| 20 25 73 2d 2d 63 61 6e | 63 65 6c 20 63 6f 70 79 | %s--can|cel copy|
|00003700| 20 72 65 71 75 65 73 74 | 3f 22 20 73 68 61 64 6f | request|?" shado|
|00003710| 77 2d 72 65 6d 6f 76 65 | 2d 66 72 6f 6d 2d 74 6f |w-remove|-from-to|
|00003720| 64 6f 20 6e 69 6c 20 73 | 68 61 64 6f 77 2d 6e 6f |do nil s|hadow-no|
|00003730| 71 75 65 72 79 20 74 20 | 22 4e 6f 20 62 75 66 66 |query t |"No buff|
|00003740| 65 72 20 66 6f 72 20 25 | 73 20 2d 2d 20 75 70 64 |er for %|s -- upd|
|00003750| 61 74 65 20 73 68 61 64 | 6f 77 20 61 6e 79 77 61 |ate shad|ow anywa|
|00003760| 79 3f 22 20 66 69 6e 64 | 2d 66 69 6c 65 2d 6e 6f |y?" find|-file-no|
|00003770| 73 65 6c 65 63 74 20 62 | 75 66 66 65 72 20 73 68 |select b|uffer sh|
|00003780| 61 64 6f 77 2d 65 78 70 | 61 6e 64 2d 63 6c 75 73 |adow-exp|and-clus|
|00003790| 74 65 72 2d 69 6e 2d 66 | 69 6c 65 2d 6e 61 6d 65 |ter-in-f|ile-name|
|000037a0| 20 74 6f 20 69 20 28 62 | 79 74 65 2d 63 6f 64 65 | to i (b|yte-code|
|000037b0| 20 22 c0 65 64 09 23 88 | c2 0b 21 87 22 20 5b 77 | ".ed.#.|..!." [w|
|000037c0| 72 69 74 65 2d 72 65 67 | 69 6f 6e 20 74 6f 20 73 |rite-reg|ion to s|
|000037d0| 68 61 64 6f 77 2d 72 65 | 6d 6f 76 65 2d 66 72 6f |hadow-re|move-fro|
|000037e0| 6d 2d 74 6f 64 6f 20 73 | 5d 20 34 29 20 28 28 65 |m-todo s|] 4) ((e|
|000037f0| 72 72 6f 72 20 28 62 79 | 74 65 2d 63 6f 64 65 20 |rror (by|te-code |
|00003800| 22 c0 c1 c2 0b 41 5c 22 | 21 87 22 20 5b 6d 65 73 |"....A\"|!." [mes|
|00003810| 73 61 67 65 20 66 6f 72 | 6d 61 74 20 22 53 68 61 |sage for|mat "Sha|
|00003820| 64 6f 77 20 25 73 20 6e | 6f 74 20 75 70 64 61 74 |dow %s n|ot updat|
|00003830| 65 64 21 22 20 73 5d 20 | 34 29 29 29 5d 20 34 20 |ed!" s] |4)))] 4 |
|00003840| 22 5c 0a 43 6f 70 79 20 | 6f 6e 65 20 73 68 61 64 |"\.Copy |one shad|
|00003850| 6f 77 20 66 69 6c 65 2e | 22 5d 29 0a 28 64 65 66 |ow file.|"]).(def|
|00003860| 61 6c 69 61 73 20 27 73 | 68 61 64 6f 77 2d 73 68 |alias 's|hadow-sh|
|00003870| 61 64 6f 77 73 2d 6f 66 | 20 23 5b 28 66 69 6c 65 |adows-of| #[(file|
|00003880| 29 20 22 c0 09 5c 6e 5c | 22 4a 86 37 00 c3 c4 09 |) "..\n\|"J.7....|
|00003890| 21 86 10 00 09 0d 5c 22 | 1e 06 c7 0e 06 21 1e 08 |!.....\"|.....!..|
|000038a0| c9 ca cb cc 0e 08 0e 0d | ce 23 cc 0e 08 0e 0f d0 |........|.#......|
|000038b0| 23 5c 22 5c 22 1e 11 d2 | 09 5c 6e 5c 22 0e 11 4c |#\"\"...|.\n\"..L|
|000038c0| 2b 87 22 20 5b 69 6e 74 | 65 72 6e 2d 73 6f 66 74 |+." [int|ern-soft|
|000038d0| 20 66 69 6c 65 20 73 68 | 61 64 6f 77 2d 68 61 73 | file sh|adow-has|
|000038e0| 68 74 61 62 6c 65 20 73 | 68 61 64 6f 77 2d 65 78 |htable s|hadow-ex|
|000038f0| 70 61 6e 64 2d 66 69 6c | 65 2d 6e 61 6d 65 20 73 |pand-fil|e-name s|
|00003900| 68 61 64 6f 77 2d 6c 6f | 63 61 6c 2d 66 69 6c 65 |hadow-lo|cal-file|
|00003910| 20 73 68 61 64 6f 77 2d | 68 6f 6d 65 64 69 72 20 | shadow-|homedir |
|00003920| 61 62 73 6f 6c 75 74 65 | 2d 66 69 6c 65 20 73 68 |absolute|-file sh|
|00003930| 61 64 6f 77 2d 63 6f 6e | 74 72 61 63 74 2d 66 69 |adow-con|tract-fi|
|00003940| 6c 65 2d 6e 61 6d 65 20 | 63 61 6e 6f 6e 69 63 61 |le-name |canonica|
|00003950| 6c 2d 66 69 6c 65 20 6d | 61 70 63 61 72 20 23 5b |l-file m|apcar #[|
|00003960| 28 73 68 61 64 6f 77 29 | 20 22 08 09 42 87 22 20 |(shadow)| "..B." |
|00003970| 5b 61 62 73 6f 6c 75 74 | 65 2d 66 69 6c 65 20 73 |[absolut|e-file s|
|00003980| 68 61 64 6f 77 5d 20 32 | 5d 20 61 70 70 65 6e 64 |hadow] 2|] append|
|00003990| 20 73 68 61 64 6f 77 2d | 73 68 61 64 6f 77 73 2d | shadow-|shadows-|
|000039a0| 6f 66 2d 31 20 73 68 61 | 64 6f 77 2d 6c 69 74 65 |of-1 sha|dow-lite|
|000039b0| 72 61 6c 2d 67 72 6f 75 | 70 73 20 6e 69 6c 20 73 |ral-grou|ps nil s|
|000039c0| 68 61 64 6f 77 2d 72 65 | 67 65 78 70 2d 67 72 6f |hadow-re|gexp-gro|
|000039d0| 75 70 73 20 74 20 73 68 | 61 64 6f 77 73 20 69 6e |ups t sh|adows in|
|000039e0| 74 65 72 6e 5d 20 38 20 | 22 5c 0a 52 65 74 75 72 |tern] 8 |"\.Retur|
|000039f0| 6e 73 20 63 6f 70 79 20 | 6f 70 65 72 61 74 69 6f |ns copy |operatio|
|00003a00| 6e 73 20 6e 65 65 64 65 | 64 20 74 6f 20 75 70 64 |ns neede|d to upd|
|00003a10| 61 74 65 20 46 49 4c 45 | 2e 0a 46 69 6c 65 6e 61 |ate FILE|..Filena|
|00003a20| 6d 65 20 73 68 6f 75 6c | 64 20 68 61 76 65 20 63 |me shoul|d have c|
|00003a30| 6c 75 73 74 65 72 73 20 | 65 78 70 61 6e 64 65 64 |lusters |expanded|
|00003a40| 2c 20 62 75 74 20 6f 74 | 68 65 72 77 69 73 65 20 |, but ot|herwise |
|00003a50| 63 61 6e 20 68 61 76 65 | 20 61 6e 79 20 66 6f 72 |can have| any for|
|00003a60| 6d 61 74 2e 20 20 0a 52 | 65 74 75 72 6e 20 76 61 |mat. .R|eturn va|
|00003a70| 6c 75 65 20 69 73 20 61 | 20 6c 69 73 74 20 6f 66 |lue is a| list of|
|00003a80| 20 64 6f 74 74 65 64 20 | 70 61 69 72 73 20 6c 69 | dotted |pairs li|
|00003a90| 6b 65 20 28 66 72 6f 6d | 20 2e 20 74 6f 29 2c 20 |ke (from| . to), |
|00003aa0| 77 68 65 72 65 20 66 72 | 6f 6d 0a 61 6e 64 20 74 |where fr|om.and t|
|00003ab0| 6f 20 61 72 65 20 61 62 | 73 6f 6c 75 74 65 20 66 |o are ab|solute f|
|00003ac0| 69 6c 65 20 6e 61 6d 65 | 73 2e 22 5d 29 0a 28 64 |ile name|s."]).(d|
|00003ad0| 65 66 61 6c 69 61 73 20 | 27 73 68 61 64 6f 77 2d |efalias |'shadow-|
|00003ae0| 73 68 61 64 6f 77 73 2d | 6f 66 2d 31 20 23 5b 28 |shadows-|of-1 #[(|
|00003af0| 66 69 6c 65 20 67 72 6f | 75 70 73 20 72 65 67 65 |file gro|ups rege|
|00003b00| 78 70 29 20 22 08 85 36 | 00 c1 c2 08 40 5c 22 1b |xp) "..6|....@\".|
|00003b10| c4 0b 08 40 9a 83 16 00 | c5 82 2c 00 0e 06 83 2b |...@....|..,....+|
|00003b20| 00 c7 c8 0e 09 21 38 1e | 5c 6e cb cc 0b 5c 22 29 |.....!8.|\n...\")|
|00003b30| 82 2c 00 0b cd 0e 09 08 | 41 0e 06 23 5c 22 29 87 |.,......|A..#\").|
|00003b40| 22 20 5b 67 72 6f 75 70 | 73 20 73 68 61 64 6f 77 |" [group|s shadow|
|00003b50| 2d 72 65 6d 6f 76 65 2d | 69 66 20 23 5b 28 78 29 |-remove-|if #[(x)|
|00003b60| 20 22 c0 09 5c 6e 0b 23 | 87 22 20 5b 73 68 61 64 | "..\n.#|." [shad|
|00003b70| 6f 77 2d 66 69 6c 65 2d | 6d 61 74 63 68 20 78 20 |ow-file-|match x |
|00003b80| 66 69 6c 65 20 72 65 67 | 65 78 70 5d 20 34 5d 20 |file reg|exp] 4] |
|00003b90| 6e 6f 6e 6d 61 74 63 68 | 69 6e 67 20 61 70 70 65 |nonmatch|ing appe|
|00003ba0| 6e 64 20 6e 69 6c 20 72 | 65 67 65 78 70 20 32 20 |nd nil r|egexp 2 |
|00003bb0| 73 68 61 64 6f 77 2d 70 | 61 72 73 65 2d 66 75 6c |shadow-p|arse-ful|
|00003bc0| 6c 70 61 74 68 20 66 69 | 6c 65 20 72 65 61 6c 70 |lpath fi|le realp|
|00003bd0| 61 74 68 20 6d 61 70 63 | 61 72 20 23 5b 28 78 29 |ath mapc|ar #[(x)|
|00003be0| 20 22 c0 09 5c 6e 5c 22 | 87 22 20 5b 73 68 61 64 | "..\n\"|." [shad|
|00003bf0| 6f 77 2d 72 65 70 6c 61 | 63 65 2d 70 61 74 68 2d |ow-repla|ce-path-|
|00003c00| 63 6f 6d 70 6f 6e 65 6e | 74 20 78 20 72 65 61 6c |componen|t x real|
|00003c10| 70 61 74 68 5d 20 33 5d | 20 73 68 61 64 6f 77 2d |path] 3]| shadow-|
|00003c20| 73 68 61 64 6f 77 73 2d | 6f 66 2d 31 5d 20 36 20 |shadows-|of-1] 6 |
|00003c30| 22 5c 0a 52 65 74 75 72 | 6e 20 6c 69 73 74 20 6f |"\.Retur|n list o|
|00003c40| 66 20 46 49 4c 45 27 73 | 20 73 68 61 64 6f 77 73 |f FILE's| shadows|
|00003c50| 20 69 6e 20 47 52 4f 55 | 50 53 2c 20 0a 77 68 69 | in GROU|PS, .whi|
|00003c60| 63 68 20 61 72 65 20 63 | 6f 6e 73 69 64 65 72 65 |ch are c|onsidere|
|00003c70| 64 20 61 73 20 72 65 67 | 75 6c 61 72 20 65 78 70 |d as reg|ular exp|
|00003c80| 72 65 73 73 69 6f 6e 73 | 20 69 66 20 74 68 69 72 |ressions| if thir|
|00003c90| 64 20 61 72 67 20 52 45 | 47 45 58 50 20 69 73 20 |d arg RE|GEXP is |
|00003ca0| 74 72 75 65 2e 22 5d 29 | 0a 28 64 65 66 61 6c 69 |true."])|.(defali|
|00003cb0| 61 73 20 27 73 68 61 64 | 6f 77 2d 61 64 64 2d 74 |as 'shad|ow-add-t|
|00003cc0| 6f 2d 74 6f 64 6f 20 23 | 5b 6e 69 6c 20 22 c0 c1 |o-todo #|[nil "..|
|00003cd0| c2 70 21 21 21 89 1b 83 | 23 00 c4 0b 0d 5c 22 15 |.p!!!...|#....\".|
|00003ce0| 0e 06 84 20 00 c7 c8 c9 | 21 21 88 ca cb 21 88 cc |... ....|!!...!..|
|00003cf0| 20 88 29 cd 87 22 20 5b | 73 68 61 64 6f 77 2d 73 | .).." [|shadow-s|
|00003d00| 68 61 64 6f 77 73 2d 6f | 66 20 73 68 61 64 6f 77 |hadows-o|f shadow|
|00003d10| 2d 65 78 70 61 6e 64 2d | 66 69 6c 65 2d 6e 61 6d |-expand-|file-nam|
|00003d20| 65 20 62 75 66 66 65 72 | 2d 66 69 6c 65 2d 6e 61 |e buffer|-file-na|
|00003d30| 6d 65 20 73 68 61 64 6f | 77 73 20 73 68 61 64 6f |me shado|ws shado|
|00003d40| 77 2d 75 6e 69 6f 6e 20 | 73 68 61 64 6f 77 2d 66 |w-union |shadow-f|
|00003d50| 69 6c 65 73 2d 74 6f 2d | 63 6f 70 79 20 73 68 61 |iles-to-|copy sha|
|00003d60| 64 6f 77 2d 69 6e 68 69 | 62 69 74 2d 6d 65 73 73 |dow-inhi|bit-mess|
|00003d70| 61 67 65 20 6d 65 73 73 | 61 67 65 20 73 75 62 73 |age mess|age subs|
|00003d80| 74 69 74 75 74 65 2d 63 | 6f 6d 6d 61 6e 64 2d 6b |titute-c|ommand-k|
|00003d90| 65 79 73 20 22 55 73 65 | 20 5c 5c 5b 73 68 61 64 |eys "Use| \\[shad|
|00003da0| 6f 77 2d 63 6f 70 79 2d | 66 69 6c 65 73 5d 20 74 |ow-copy-|files] t|
|00003db0| 6f 20 75 70 64 61 74 65 | 20 73 68 61 64 6f 77 73 |o update| shadows|
|00003dc0| 2e 22 20 73 69 74 2d 66 | 6f 72 20 31 20 73 68 61 |." sit-f|or 1 sha|
|00003dd0| 64 6f 77 2d 77 72 69 74 | 65 2d 74 6f 64 6f 2d 66 |dow-writ|e-todo-f|
|00003de0| 69 6c 65 20 6e 69 6c 5d | 20 35 20 22 5c 0a 49 66 |ile nil]| 5 "\.If|
|00003df0| 20 63 75 72 72 65 6e 74 | 20 62 75 66 66 65 72 20 | current| buffer |
|00003e00| 68 61 73 20 73 68 61 64 | 6f 77 73 2c 20 61 64 64 |has shad|ows, add|
|00003e10| 20 74 68 65 6d 20 74 6f | 20 74 68 65 20 6c 69 73 | them to| the lis|
|00003e20| 74 0a 6f 66 20 66 69 6c | 65 73 20 6e 65 65 64 69 |t.of fil|es needi|
|00003e30| 6e 67 20 74 6f 20 62 65 | 20 63 6f 70 69 65 64 2e |ng to be| copied.|
|00003e40| 22 5d 29 0a 28 64 65 66 | 61 6c 69 61 73 20 27 73 |"]).(def|alias 's|
|00003e50| 68 61 64 6f 77 2d 72 65 | 6d 6f 76 65 2d 66 72 6f |hadow-re|move-fro|
|00003e60| 6d 2d 74 6f 64 6f 20 23 | 5b 28 70 61 69 72 29 20 |m-todo #|[(pair) |
|00003e70| 22 c0 c1 5c 6e 5c 22 89 | 12 87 22 20 5b 73 68 61 |"..\n\".|.." [sha|
|00003e80| 64 6f 77 2d 72 65 6d 6f | 76 65 2d 69 66 20 23 5b |dow-remo|ve-if #[|
|00003e90| 28 73 29 20 22 08 09 3d | 87 22 20 5b 73 20 70 61 |(s) "..=|." [s pa|
|00003ea0| 69 72 5d 20 32 5d 20 73 | 68 61 64 6f 77 2d 66 69 |ir] 2] s|hadow-fi|
|00003eb0| 6c 65 73 2d 74 6f 2d 63 | 6f 70 79 5d 20 33 20 22 |les-to-c|opy] 3 "|
|00003ec0| 5c 0a 52 65 6d 6f 76 65 | 20 50 41 49 52 20 66 72 |\.Remove| PAIR fr|
|00003ed0| 6f 6d 20 73 68 61 64 6f | 77 2d 66 69 6c 65 73 2d |om shado|w-files-|
|00003ee0| 74 6f 2d 63 6f 70 79 2e | 0a 50 41 49 52 20 6d 75 |to-copy.|.PAIR mu|
|00003ef0| 73 74 20 62 65 20 28 65 | 71 20 74 6f 29 20 6f 6e |st be (e|q to) on|
|00003f00| 65 20 6f 66 20 74 68 65 | 20 65 6c 65 6d 65 6e 74 |e of the| element|
|00003f10| 73 20 6f 66 20 74 68 61 | 74 20 6c 69 73 74 2e 22 |s of tha|t list."|
|00003f20| 5d 29 0a 28 64 65 66 61 | 6c 69 61 73 20 27 73 68 |]).(defa|lias 'sh|
|00003f30| 61 64 6f 77 2d 72 65 61 | 64 2d 66 69 6c 65 73 20 |adow-rea|d-files |
|00003f40| 23 5b 6e 69 6c 20 22 c0 | c1 21 83 21 00 c1 5c 6e |#[nil ".|.!.!..\n|
|00003f50| 21 3b 84 14 00 c1 0b 21 | 3b 83 21 00 c4 c5 21 88 |!;.....!|;.!...!.|
|00003f60| c6 20 88 c7 c8 21 88 c9 | 87 8a 5c 6e 83 4e 00 ca |. ...!..|..\n.N..|
|00003f70| 5c 6e 21 89 16 0b 71 88 | cc 20 84 4b 00 cd ce 20 |\n!...q.|. .K... |
|00003f80| 5c 6e 5c 22 83 4b 00 cf | 20 88 c4 d0 d1 ce 20 21 |\n\".K..| ..... !|
|00003f90| 40 5c 22 88 c7 d2 21 88 | d3 20 88 0b 83 7b 00 ca |@\"...!.|. ...{..|
|00003fa0| 0b 21 89 16 14 71 88 cc | 20 84 77 00 cd ce 20 0b |.!...q..| .w... .|
|00003fb0| 5c 22 83 77 00 cf 20 88 | c4 d0 d1 ce 20 21 40 5c |\".w.. .|.... !@\|
|00003fc0| 22 88 c7 d2 21 88 d3 c9 | 21 88 d5 20 88 29 d6 87 |"...!...|!.. .)..|
|00003fd0| 22 20 5b 66 62 6f 75 6e | 64 70 20 66 69 6c 65 2d |" [fboun|dp file-|
|00003fe0| 6c 6f 63 6b 65 64 2d 70 | 20 73 68 61 64 6f 77 2d |locked-p| shadow-|
|00003ff0| 69 6e 66 6f 2d 66 69 6c | 65 20 73 68 61 64 6f 77 |info-fil|e shadow|
|00004000| 2d 74 6f 64 6f 2d 66 69 | 6c 65 20 6d 65 73 73 61 |-todo-fi|le messa|
|00004010| 67 65 20 22 53 68 61 64 | 6f 77 66 69 6c 65 20 69 |ge "Shad|owfile i|
|00004020| 73 20 72 75 6e 6e 69 6e | 67 20 69 6e 20 61 6e 6f |s runnin|g in ano|
|00004030| 74 68 65 72 20 65 6d 61 | 63 73 3b 20 63 61 6e 27 |ther ema|cs; can'|
|00004040| 74 20 68 61 76 65 20 74 | 77 6f 2e 22 20 62 65 65 |t have t|wo." bee|
|00004050| 70 20 73 69 74 2d 66 6f | 72 20 33 20 6e 69 6c 20 |p sit-fo|r 3 nil |
|00004060| 66 69 6e 64 2d 66 69 6c | 65 2d 6e 6f 73 65 6c 65 |find-fil|e-nosele|
|00004070| 63 74 20 73 68 61 64 6f | 77 2d 69 6e 66 6f 2d 62 |ct shado|w-info-b|
|00004080| 75 66 66 65 72 20 62 75 | 66 66 65 72 2d 6d 6f 64 |uffer bu|ffer-mod|
|00004090| 69 66 69 65 64 2d 70 20 | 66 69 6c 65 2d 6e 65 77 |ified-p |file-new|
|000040a0| 65 72 2d 74 68 61 6e 2d | 66 69 6c 65 2d 70 20 6d |er-than-|file-p m|
|000040b0| 61 6b 65 2d 61 75 74 6f | 2d 73 61 76 65 2d 66 69 |ake-auto|-save-fi|
|000040c0| 6c 65 2d 6e 61 6d 65 20 | 65 72 61 73 65 2d 62 75 |le-name |erase-bu|
|000040d0| 66 66 65 72 20 22 44 61 | 74 61 20 72 65 63 6f 76 |ffer "Da|ta recov|
|000040e0| 65 72 65 64 20 66 72 6f | 6d 20 25 73 2e 22 20 69 |ered fro|m %s." i|
|000040f0| 6e 73 65 72 74 2d 66 69 | 6c 65 2d 63 6f 6e 74 65 |nsert-fi|le-conte|
|00004100| 6e 74 73 20 31 20 65 76 | 61 6c 2d 63 75 72 72 65 |nts 1 ev|al-curre|
|00004110| 6e 74 2d 62 75 66 66 65 | 72 20 73 68 61 64 6f 77 |nt-buffe|r shadow|
|00004120| 2d 74 6f 64 6f 2d 62 75 | 66 66 65 72 20 73 68 61 |-todo-bu|ffer sha|
|00004130| 64 6f 77 2d 69 6e 76 61 | 6c 69 64 61 74 65 2d 68 |dow-inva|lidate-h|
|00004140| 61 73 68 74 61 62 6c 65 | 20 74 5d 20 34 20 22 5c |ashtable| t] 4 "\|
|00004150| 0a 56 69 73 69 74 73 20 | 61 6e 64 20 6c 6f 61 64 |.Visits |and load|
|00004160| 73 20 73 68 61 64 6f 77 | 2d 69 6e 66 6f 2d 66 69 |s shadow|-info-fi|
|00004170| 6c 65 20 61 6e 64 20 73 | 68 61 64 6f 77 2d 74 6f |le and s|hadow-to|
|00004180| 64 6f 2d 66 69 6c 65 2c | 0a 74 68 75 73 20 72 65 |do-file,|.thus re|
|00004190| 73 74 6f 72 69 6e 67 20 | 73 68 61 64 6f 77 66 69 |storing |shadowfi|
|000041a0| 6c 65 27 73 20 73 74 61 | 74 65 20 66 72 6f 6d 20 |le's sta|te from |
|000041b0| 79 6f 75 72 20 6c 61 73 | 74 20 65 6d 61 63 73 20 |your las|t emacs |
|000041c0| 73 65 73 73 69 6f 6e 2e | 0a 52 65 74 75 72 6e 73 |session.|.Returns|
|000041d0| 20 74 20 75 6e 6c 65 73 | 73 20 66 69 6c 65 73 20 | t unles|s files |
|000041e0| 77 65 72 65 20 6c 6f 63 | 6b 65 64 3b 20 74 68 65 |were loc|ked; the|
|000041f0| 6e 20 72 65 74 75 72 6e | 73 20 6e 69 6c 2e 22 20 |n return|s nil." |
|00004200| 6e 69 6c 5d 29 0a 28 64 | 65 66 61 6c 69 61 73 20 |nil]).(d|efalias |
|00004210| 27 73 68 61 64 6f 77 2d | 77 72 69 74 65 2d 69 6e |'shadow-|write-in|
|00004220| 66 6f 2d 66 69 6c 65 20 | 23 5b 6e 69 6c 20 22 c0 |fo-file |#[nil ".|
|00004230| 20 88 09 85 23 00 8a 5c | 6e 84 10 00 c3 09 21 12 | ...#..\|n.....!.|
|00004240| 5c 6e 71 88 65 64 7c 88 | c4 c5 21 88 c4 c6 21 88 |\nq.ed|.|..!...!.|
|00004250| c4 c7 21 29 87 22 20 5b | 73 68 61 64 6f 77 2d 69 |..!)." [|shadow-i|
|00004260| 6e 76 61 6c 69 64 61 74 | 65 2d 68 61 73 68 74 61 |nvalidat|e-hashta|
|00004270| 62 6c 65 20 73 68 61 64 | 6f 77 2d 69 6e 66 6f 2d |ble shad|ow-info-|
|00004280| 66 69 6c 65 20 73 68 61 | 64 6f 77 2d 69 6e 66 6f |file sha|dow-info|
|00004290| 2d 62 75 66 66 65 72 20 | 66 69 6e 64 2d 66 69 6c |-buffer |find-fil|
|000042a0| 65 2d 6e 6f 73 65 6c 65 | 63 74 20 73 68 61 64 6f |e-nosele|ct shado|
|000042b0| 77 2d 69 6e 73 65 72 74 | 2d 76 61 72 20 73 68 61 |w-insert|-var sha|
|000042c0| 64 6f 77 2d 63 6c 75 73 | 74 65 72 73 20 73 68 61 |dow-clus|ters sha|
|000042d0| 64 6f 77 2d 6c 69 74 65 | 72 61 6c 2d 67 72 6f 75 |dow-lite|ral-grou|
|000042e0| 70 73 20 73 68 61 64 6f | 77 2d 72 65 67 65 78 70 |ps shado|w-regexp|
|000042f0| 2d 67 72 6f 75 70 73 5d | 20 32 20 22 5c 0a 57 72 |-groups]| 2 "\.Wr|
|00004300| 69 74 65 20 6f 75 74 20 | 69 6e 66 6f 72 6d 61 74 |ite out |informat|
|00004310| 69 6f 6e 20 74 6f 20 73 | 68 61 64 6f 77 2d 69 6e |ion to s|hadow-in|
|00004320| 66 6f 2d 66 69 6c 65 2e | 0a 41 6c 73 6f 20 63 6c |fo-file.|.Also cl|
|00004330| 65 61 72 73 20 73 68 61 | 64 6f 77 2d 68 61 73 68 |ears sha|dow-hash|
|00004340| 74 61 62 6c 65 2c 20 73 | 69 6e 63 65 20 77 68 65 |table, s|ince whe|
|00004350| 6e 20 74 68 65 72 65 20 | 61 72 65 20 6e 65 77 20 |n there |are new |
|00004360| 73 68 61 64 6f 77 73 20 | 64 65 66 69 6e 65 64 2c |shadows |defined,|
|00004370| 20 74 68 65 20 6f 6c 64 | 0a 68 61 73 68 74 61 62 | the old|.hashtab|
|00004380| 6c 65 20 69 6e 66 6f 20 | 69 73 20 69 6e 76 61 6c |le info |is inval|
|00004390| 69 64 2e 22 5d 29 0a 28 | 64 65 66 61 6c 69 61 73 |id."]).(|defalias|
|000043a0| 20 27 73 68 61 64 6f 77 | 2d 77 72 69 74 65 2d 74 | 'shadow|-write-t|
|000043b0| 6f 64 6f 2d 66 69 6c 65 | 20 23 5b 28 26 6f 70 74 |odo-file| #[(&opt|
|000043c0| 69 6f 6e 61 6c 20 73 61 | 76 65 29 20 22 8a 08 84 |ional sa|ve) "...|
|000043d0| 09 00 c1 5c 6e 21 10 08 | 71 88 65 64 7c 88 c3 c4 |...\n!..|q.ed|...|
|000043e0| 21 88 0d 85 1a 00 c6 20 | 29 87 22 20 5b 73 68 61 |!...... |)." [sha|
|000043f0| 64 6f 77 2d 74 6f 64 6f | 2d 62 75 66 66 65 72 20 |dow-todo|-buffer |
|00004400| 66 69 6e 64 2d 66 69 6c | 65 2d 6e 6f 73 65 6c 65 |find-fil|e-nosele|
|00004410| 63 74 20 73 68 61 64 6f | 77 2d 74 6f 64 6f 2d 66 |ct shado|w-todo-f|
|00004420| 69 6c 65 20 73 68 61 64 | 6f 77 2d 69 6e 73 65 72 |ile shad|ow-inser|
|00004430| 74 2d 76 61 72 20 73 68 | 61 64 6f 77 2d 66 69 6c |t-var sh|adow-fil|
|00004440| 65 73 2d 74 6f 2d 63 6f | 70 79 20 73 61 76 65 20 |es-to-co|py save |
|00004450| 73 68 61 64 6f 77 2d 73 | 61 76 65 2d 74 6f 64 6f |shadow-s|ave-todo|
|00004460| 2d 66 69 6c 65 5d 20 32 | 20 22 5c 0a 57 72 69 74 |-file] 2| "\.Writ|
|00004470| 65 20 6f 75 74 20 69 6e | 66 6f 72 6d 61 74 69 6f |e out in|formatio|
|00004480| 6e 20 74 6f 20 73 68 61 | 64 6f 77 2d 74 6f 64 6f |n to sha|dow-todo|
|00004490| 2d 66 69 6c 65 2e 20 20 | 0a 57 69 74 68 20 6e 6f |-file. |.With no|
|000044a0| 6e 6e 69 6c 20 61 72 67 | 75 6d 65 6e 74 20 61 6c |nnil arg|ument al|
|000044b0| 73 6f 20 73 61 76 65 73 | 20 74 68 65 20 62 75 66 |so saves| the buf|
|000044c0| 66 65 72 2e 22 5d 29 0a | 28 62 79 74 65 2d 63 6f |fer."]).|(byte-co|
|000044d0| 64 65 20 22 c0 c1 c2 5c | 22 88 c0 c3 c4 5c 22 87 |de "...\|"....\".|
|000044e0| 22 20 5b 64 65 66 61 6c | 69 61 73 20 73 68 61 64 |" [defal|ias shad|
|000044f0| 6f 77 2d 73 61 76 65 2d | 74 6f 64 6f 2d 66 69 6c |ow-save-|todo-fil|
|00004500| 65 20 23 5b 6e 69 6c 20 | 22 08 85 13 00 c1 08 21 |e #[nil |"......!|
|00004510| 85 13 00 8a 08 71 88 c2 | c3 c4 8f 29 87 22 20 5b |.....q..|...)." [|
|00004520| 73 68 61 64 6f 77 2d 74 | 6f 64 6f 2d 62 75 66 66 |shadow-t|odo-buff|
|00004530| 65 72 20 62 75 66 66 65 | 72 2d 6d 6f 64 69 66 69 |er buffe|r-modifi|
|00004540| 65 64 2d 70 20 6e 69 6c | 20 28 62 61 73 69 63 2d |ed-p nil| (basic-|
|00004550| 73 61 76 65 2d 62 75 66 | 66 65 72 29 20 28 28 65 |save-buf|fer) ((e|
|00004560| 72 72 6f 72 20 28 62 79 | 74 65 2d 63 6f 64 65 20 |rror (by|te-code |
|00004570| 22 c0 c1 21 88 c2 c3 21 | 87 22 20 5b 6d 65 73 73 |"..!...!|." [mess|
|00004580| 61 67 65 20 22 57 41 52 | 4e 49 4e 47 3a 20 43 61 |age "WAR|NING: Ca|
|00004590| 6e 27 74 20 73 61 76 65 | 20 73 68 61 64 6f 77 20 |n't save| shadow |
|000045a0| 74 6f 64 6f 20 66 69 6c | 65 3b 20 69 74 20 69 73 |todo fil|e; it is|
|000045b0| 20 6c 6f 63 6b 65 64 21 | 22 20 73 69 74 2d 66 6f | locked!|" sit-fo|
|000045c0| 72 20 31 5d 20 32 29 29 | 29 5d 20 33 5d 20 73 68 |r 1] 2))|)] 3] sh|
|000045d0| 61 64 6f 77 2d 69 6e 76 | 61 6c 69 64 61 74 65 2d |adow-inv|alidate-|
|000045e0| 68 61 73 68 74 61 62 6c | 65 20 23 5b 6e 69 6c 20 |hashtabl|e #[nil |
|000045f0| 22 c0 c1 c2 5c 22 89 13 | 87 22 20 5b 6d 61 6b 65 |"...\"..|." [make|
|00004600| 2d 76 65 63 74 6f 72 20 | 33 37 20 30 20 73 68 61 |-vector |37 0 sha|
|00004610| 64 6f 77 2d 68 61 73 68 | 74 61 62 6c 65 5d 20 33 |dow-hash|table] 3|
|00004620| 5d 5d 20 33 29 0a 28 64 | 65 66 61 6c 69 61 73 20 |]] 3).(d|efalias |
|00004630| 27 73 68 61 64 6f 77 2d | 69 6e 73 65 72 74 2d 76 |'shadow-|insert-v|
|00004640| 61 72 20 23 5b 28 76 61 | 72 69 61 62 6c 65 29 20 |ar #[(va|riable) |
|00004650| 22 70 18 c1 c2 0b 5c 22 | 63 88 c4 0b 21 3a 83 3b |"p....\"|c...!:.;|
|00004660| 00 c5 63 88 c6 c4 0b 21 | 40 21 88 c4 0b 21 41 89 |..c....!|@!...!A.|
|00004670| 1e 07 83 35 00 c8 63 88 | c6 0e 07 40 21 88 0e 07 |...5..c.|...@!...|
|00004680| 41 89 16 07 84 23 00 c9 | 63 29 82 46 00 ca 63 88 |A....#..|c).F..c.|
|00004690| c6 c4 0b 21 21 88 cb 63 | 29 87 22 20 5b 73 74 61 |...!!..c|)." [sta|
|000046a0| 6e 64 61 72 64 2d 6f 75 | 74 70 75 74 20 66 6f 72 |ndard-ou|tput for|
|000046b0| 6d 61 74 20 22 28 73 65 | 74 71 20 25 73 22 20 76 |mat "(se|tq %s" v|
|000046c0| 61 72 69 61 62 6c 65 20 | 65 76 61 6c 20 22 5c 6e |ariable |eval "\n|
|000046d0| 20 20 27 28 22 20 70 72 | 69 6e 31 20 72 65 73 74 | '(" pr|in1 rest|
|000046e0| 20 22 5c 6e 20 20 20 20 | 22 20 22 29 29 5c 6e 5c | "\n |" "))\n\|
|000046f0| 6e 22 20 22 20 22 20 22 | 29 5c 6e 5c 6e 22 5d 20 |n" " " "|)\n\n"] |
|00004700| 34 20 22 5c 0a 50 72 65 | 74 74 69 6c 79 20 69 6e |4 "\.Pre|ttily in|
|00004710| 73 65 72 74 20 61 20 73 | 65 74 71 20 63 6f 6d 6d |sert a s|etq comm|
|00004720| 61 6e 64 20 66 6f 72 20 | 56 41 52 49 41 42 4c 45 |and for |VARIABLE|
|00004730| 2e 0a 77 68 69 63 68 2c | 20 77 68 65 6e 20 6c 61 |..which,| when la|
|00004740| 74 65 72 20 65 76 61 6c | 75 61 74 65 64 2c 20 77 |ter eval|uated, w|
|00004750| 69 6c 6c 20 72 65 73 74 | 6f 72 65 20 69 74 20 74 |ill rest|ore it t|
|00004760| 6f 20 69 74 73 20 63 75 | 72 72 65 6e 74 20 73 65 |o its cu|rrent se|
|00004770| 74 74 69 6e 67 2e 0a 53 | 59 4d 42 4f 4c 20 6d 75 |tting..S|YMBOL mu|
|00004780| 73 74 20 62 65 20 74 68 | 65 20 6e 61 6d 65 20 6f |st be th|e name o|
|00004790| 66 20 61 20 76 61 72 69 | 61 62 6c 65 20 77 68 6f |f a vari|able who|
|000047a0| 73 65 20 76 61 6c 75 65 | 20 69 73 20 61 20 6c 69 |se value| is a li|
|000047b0| 73 74 2e 22 5d 29 0a 28 | 64 65 66 61 6c 69 61 73 |st."]).(|defalias|
|000047c0| 20 27 73 68 61 64 6f 77 | 2d 73 61 76 65 2d 62 75 | 'shadow|-save-bu|
|000047d0| 66 66 65 72 73 2d 6b 69 | 6c 6c 2d 65 6d 61 63 73 |ffers-ki|ll-emacs|
|000047e0| 20 23 5b 28 26 6f 70 74 | 69 6f 6e 61 6c 20 61 72 | #[(&opt|ional ar|
|000047f0| 67 29 20 22 c0 20 88 c1 | 5c 6e c3 5c 22 88 c4 20 |g) ". ..|\n.\".. |
|00004800| 88 c0 20 88 c3 c5 c6 c7 | 20 5c 22 3e 83 1e 00 c8 |.. .....| \">....|
|00004810| c9 21 85 69 00 ca cb 21 | 83 67 00 cb 20 cc 1e 0d |.!.i...!|.g.. ...|
|00004820| 89 1e 0e 83 5a 00 cf 0e | 0e 40 21 d0 3e 83 51 00 |....Z...|.@!.>.Q.|
|00004830| d1 0e 0e 40 21 1e 12 d1 | 0e 0e 40 0e 12 5c 22 88 |...@!...|..@..\".|
|00004840| 0e 12 29 83 51 00 c3 16 | 0d 0e 0e 41 89 16 0e 84 |..).Q...|...A....|
|00004850| 2f 00 0e 0d 3f 86 63 00 | c8 d3 21 2a 85 69 00 d4 |/...?.c.|..!*.i..|
|00004860| 20 87 22 20 5b 73 68 61 | 64 6f 77 2d 73 61 76 65 | ." [sha|dow-save|
|00004870| 2d 74 6f 64 6f 2d 66 69 | 6c 65 20 73 61 76 65 2d |-todo-fi|le save-|
|00004880| 73 6f 6d 65 2d 62 75 66 | 66 65 72 73 20 61 72 67 |some-buf|fers arg|
|00004890| 20 74 20 73 68 61 64 6f | 77 2d 63 6f 70 79 2d 66 | t shado|w-copy-f|
|000048a0| 69 6c 65 73 20 6d 61 70 | 63 61 72 20 23 5b 28 62 |iles map|car #[(b|
|000048b0| 75 66 29 20 22 c0 09 21 | 85 09 00 c2 09 21 87 22 |uf) "..!|.....!."|
|000048c0| 20 5b 62 75 66 66 65 72 | 2d 66 69 6c 65 2d 6e 61 | [buffer|-file-na|
|000048d0| 6d 65 20 62 75 66 20 62 | 75 66 66 65 72 2d 6d 6f |me buf b|uffer-mo|
|000048e0| 64 69 66 69 65 64 2d 70 | 5d 20 32 5d 20 62 75 66 |dified-p|] 2] buf|
|000048f0| 66 65 72 2d 6c 69 73 74 | 20 79 65 73 2d 6f 72 2d |fer-list| yes-or-|
|00004900| 6e 6f 2d 70 20 22 4d 6f | 64 69 66 69 65 64 20 62 |no-p "Mo|dified b|
|00004910| 75 66 66 65 72 73 20 65 | 78 69 73 74 3b 20 65 78 |uffers e|xist; ex|
|00004920| 69 74 20 61 6e 79 77 61 | 79 3f 20 22 20 66 62 6f |it anywa|y? " fbo|
|00004930| 75 6e 64 70 20 70 72 6f | 63 65 73 73 2d 6c 69 73 |undp pro|cess-lis|
|00004940| 74 20 6e 69 6c 20 61 63 | 74 69 76 65 20 70 72 6f |t nil ac|tive pro|
|00004950| 63 65 73 73 65 73 20 70 | 72 6f 63 65 73 73 2d 73 |cesses p|rocess-s|
|00004960| 74 61 74 75 73 20 28 72 | 75 6e 20 73 74 6f 70 20 |tatus (r|un stop |
|00004970| 6f 70 65 6e 29 20 70 72 | 6f 63 65 73 73 2d 6b 69 |open) pr|ocess-ki|
|00004980| 6c 6c 2d 77 69 74 68 6f | 75 74 2d 71 75 65 72 79 |ll-witho|ut-query|
|00004990| 20 76 61 6c 20 22 41 63 | 74 69 76 65 20 70 72 6f | val "Ac|tive pro|
|000049a0| 63 65 73 73 65 73 20 65 | 78 69 73 74 3b 20 6b 69 |cesses e|xist; ki|
|000049b0| 6c 6c 20 74 68 65 6d 20 | 61 6e 64 20 65 78 69 74 |ll them |and exit|
|000049c0| 20 61 6e 79 77 61 79 3f | 20 22 20 6b 69 6c 6c 2d | anyway?| " kill-|
|000049d0| 65 6d 61 63 73 5d 20 35 | 20 22 5c 0a 4f 66 66 65 |emacs] 5| "\.Offe|
|000049e0| 72 20 74 6f 20 73 61 76 | 65 20 65 61 63 68 20 62 |r to sav|e each b|
|000049f0| 75 66 66 65 72 20 61 6e | 64 20 63 6f 70 79 20 73 |uffer an|d copy s|
|00004a00| 68 61 64 6f 77 73 2c 20 | 74 68 65 6e 20 6b 69 6c |hadows, |then kil|
|00004a10| 6c 20 74 68 69 73 20 45 | 6d 61 63 73 20 70 72 6f |l this E|macs pro|
|00004a20| 63 65 73 73 2e 0a 57 69 | 74 68 20 70 72 65 66 69 |cess..Wi|th prefi|
|00004a30| 78 20 61 72 67 2c 20 73 | 69 6c 65 6e 74 6c 79 20 |x arg, s|ilently |
|00004a40| 73 61 76 65 20 61 6c 6c | 20 66 69 6c 65 2d 76 69 |save all| file-vi|
|00004a50| 73 69 74 69 6e 67 20 62 | 75 66 66 65 72 73 2c 20 |siting b|uffers, |
|00004a60| 74 68 65 6e 20 6b 69 6c | 6c 2e 0a 0a 45 78 74 65 |then kil|l...Exte|
|00004a70| 6e 64 65 64 20 62 79 20 | 73 68 61 64 6f 77 66 69 |nded by |shadowfi|
|00004a80| 6c 65 20 74 6f 20 61 75 | 74 6f 6d 61 74 69 63 61 |le to au|tomatica|
|00004a90| 6c 6c 79 20 73 61 76 65 | 20 60 73 68 61 64 6f 77 |lly save| `shadow|
|00004aa0| 2d 74 6f 64 6f 2d 66 69 | 6c 65 27 20 61 6e 64 0a |-todo-fi|le' and.|
|00004ab0| 6c 6f 6f 6b 20 66 6f 72 | 20 66 69 6c 65 73 20 74 |look for| files t|
|00004ac0| 68 61 74 20 68 61 76 65 | 20 62 65 65 6e 20 63 68 |hat have| been ch|
|00004ad0| 61 6e 67 65 64 20 61 6e | 64 20 6e 65 65 64 20 74 |anged an|d need t|
|00004ae0| 6f 20 62 65 20 63 6f 70 | 69 65 64 20 74 6f 20 6f |o be cop|ied to o|
|00004af0| 74 68 65 72 20 73 79 73 | 74 65 6d 73 2e 22 20 22 |ther sys|tems." "|
|00004b00| 50 22 5d 29 0a 28 62 79 | 74 65 2d 63 6f 64 65 20 |P"]).(by|te-code |
|00004b10| 22 c0 c1 c2 5c 22 88 0b | 83 11 00 c4 c5 c1 5c 22 |"...\"..|......\"|
|00004b20| 88 82 14 00 c1 20 88 c0 | 87 22 20 5b 64 65 66 61 |..... ..|." [defa|
|00004b30| 6c 69 61 73 20 73 68 61 | 64 6f 77 2d 69 6e 69 74 |lias sha|dow-init|
|00004b40| 69 61 6c 69 7a 65 20 23 | 5b 6e 69 6c 20 22 08 84 |ialize #|[nil "..|
|00004b50| 5c 6e 00 c1 c2 c3 21 21 | 10 5c 66 84 12 00 c2 c5 |\n....!!|.\f.....|
|00004b60| 21 14 0e 06 84 1c 00 c2 | c7 21 16 06 c8 20 84 2c |!.......|.!... .,|
|00004b70| 00 c9 ca 21 88 cb 20 88 | cc cd 21 87 0e 0e 84 41 |...!.. .|..!....A|
|00004b80| 00 cf d0 21 84 41 00 d0 | d1 4b 4d 88 d1 d2 4b 4d |...!.A..|.KM...KM|
|00004b90| 88 d3 d4 d5 5c 22 88 d6 | 0e 17 d8 d9 23 87 22 20 |....\"..|....#." |
|00004ba0| 5b 73 68 61 64 6f 77 2d | 68 6f 6d 65 64 69 72 20 |[shadow-|homedir |
|00004bb0| 66 69 6c 65 2d 6e 61 6d | 65 2d 61 73 2d 64 69 72 |file-nam|e-as-dir|
|00004bc0| 65 63 74 6f 72 79 20 73 | 68 61 64 6f 77 2d 65 78 |ectory s|hadow-ex|
|00004bd0| 70 61 6e 64 2d 66 69 6c | 65 2d 6e 61 6d 65 20 22 |pand-fil|e-name "|
|00004be0| 7e 22 20 73 68 61 64 6f | 77 2d 69 6e 66 6f 2d 66 |~" shado|w-info-f|
|00004bf0| 69 6c 65 20 22 7e 2f 2e | 73 68 61 64 6f 77 73 22 |ile "~/.|shadows"|
|00004c00| 20 73 68 61 64 6f 77 2d | 74 6f 64 6f 2d 66 69 6c | shadow-|todo-fil|
|00004c10| 65 20 22 7e 2f 2e 73 68 | 61 64 6f 77 5f 74 6f 64 |e "~/.sh|adow_tod|
|00004c20| 6f 22 20 73 68 61 64 6f | 77 2d 72 65 61 64 2d 66 |o" shado|w-read-f|
|00004c30| 69 6c 65 73 20 6d 65 73 | 73 61 67 65 20 22 53 68 |iles mes|sage "Sh|
|00004c40| 61 64 6f 77 66 69 6c 65 | 20 69 6e 66 6f 72 6d 61 |adowfile| informa|
|00004c50| 74 69 6f 6e 20 66 69 6c | 65 73 20 6e 6f 74 20 66 |tion fil|es not f|
|00004c60| 6f 75 6e 64 20 2d 20 61 | 62 6f 72 74 69 6e 67 22 |ound - a|borting"|
|00004c70| 20 62 65 65 70 20 73 69 | 74 2d 66 6f 72 20 33 20 | beep si|t-for 3 |
|00004c80| 73 68 61 64 6f 77 2d 69 | 6e 68 69 62 69 74 2d 6f |shadow-i|nhibit-o|
|00004c90| 76 65 72 6c 6f 61 64 20 | 66 62 6f 75 6e 64 70 20 |verload |fboundp |
|00004ca0| 73 68 61 64 6f 77 2d 6f | 72 69 67 2d 73 61 76 65 |shadow-o|rig-save|
|00004cb0| 2d 62 75 66 66 65 72 73 | 2d 6b 69 6c 6c 2d 65 6d |-buffers|-kill-em|
|00004cc0| 61 63 73 20 73 61 76 65 | 2d 62 75 66 66 65 72 73 |acs save|-buffers|
|00004cd0| 2d 6b 69 6c 6c 2d 65 6d | 61 63 73 20 73 68 61 64 |-kill-em|acs shad|
|00004ce0| 6f 77 2d 73 61 76 65 2d | 62 75 66 66 65 72 73 2d |ow-save-|buffers-|
|00004cf0| 6b 69 6c 6c 2d 65 6d 61 | 63 73 20 61 64 64 2d 68 |kill-ema|cs add-h|
|00004d00| 6f 6f 6b 20 77 72 69 74 | 65 2d 66 69 6c 65 2d 68 |ook writ|e-file-h|
|00004d10| 6f 6f 6b 73 20 73 68 61 | 64 6f 77 2d 61 64 64 2d |ooks sha|dow-add-|
|00004d20| 74 6f 2d 74 6f 64 6f 20 | 64 65 66 69 6e 65 2d 6b |to-todo |define-k|
|00004d30| 65 79 20 63 74 6c 2d 78 | 2d 34 2d 6d 61 70 20 22 |ey ctl-x|-4-map "|
|00004d40| 73 22 20 73 68 61 64 6f | 77 2d 63 6f 70 79 2d 66 |s" shado|w-copy-f|
|00004d50| 69 6c 65 73 5d 20 34 5d | 20 6e 6f 6e 69 6e 74 65 |iles] 4]| noninte|
|00004d60| 72 61 63 74 69 76 65 20 | 61 64 64 2d 68 6f 6f 6b |ractive |add-hook|
|00004d70| 20 61 66 74 65 72 2d 69 | 6e 69 74 2d 68 6f 6f 6b | after-i|nit-hook|
|00004d80| 5d 20 33 29 0a | |] 3). | |
+--------+-------------------------+-------------------------+--------+--------+