IMD 1.18: 18/11/2016 19:24:48 for:pro development utilities system tools series 1000807-01 2 of 3 1.0/L2 1982 1AYaHaIPPFCS Floppy Format #1  瞷H$ &'()*+, JKf6Y$E"#$% JKf6W$1 ! JKf6V$ JKf6T$0I   Jd<f6S$ Z   J^zsf6Of2yy$ JKf6M$ JKf6L$# JKf6K$E J^zf6J$V JKf6I$ J^zf6H$ JKf6G$ JKf6F$` JKf6E!0yxbghijklmnopqrstuvwxyz{|}~/><y /f$ JKf6D$d J^zf6C$ JKf6A$ JKf6@$ JKf6?$S JKf6>$D JKf6;$ JKf6:$ JKf68$? JKf67$3 JKf67$ JKf66$ J^zf65$ JKf63f2yy$ JKf60aI!aI!aI!A@! JaLf5Q$ JKf6t$ 0 JKf6s$}~ JKf6q$f{| JKf6pApzp:e#f6uf2yy$stuvw JKf6m$sqr J^zf6k$}op JKf6j$"mn J^zf6i$kl JKf6g$vLMNOPQRSTUV JKf6f$fJK JKf6b$i./012345678 JKf6_$ JKf6/$ JKf6.$^ JKf6-$ 4 J^zf6,$ J^ztf6*$ JKf6*$$ J^zsf6)$K JKf6($% JKf6'$? JKf6&$ JKf6%f2yy$C JKf6"f2~yy$ JKf6$d JKf6m&FGHIJKLMNO J2f2f5ˁm&<=>?@ABCDE J1f2f5ʁm@*+,-./01234 Jf2f5ȁm($%&'() Jf2 f5A#p:e"f5A@"p:e"%f6$ - J^zqf6$ J~Kf6$% Jw^zJf6$P Jv^zIf6$ Ju^zHf6$  JpKf6$ghijklmnopq Jo^zHf6$ $def JfKf6$$abc Je^zDf6$` JbKf6$]^_ JbKf6$J\ JaKf6$-[ J[Kf6$ WXYZ J[^zCf6AV-p:yyA`Up:e#f6m5FGHIJKLMNOP J>f2rf5m J/f2lf5ms Jdf5m28 JEf2If5m84 Jf2Ff5md JTf2Bf5m& JRf26f5߁m%H JLf23f5݁m% JJf20f5ہm6\ JAf2.f5فm*Twxyz{|}~ J<f2*f5ցmrstuv J:f2'f5ԁmjklmnopq J9f2&f5Ӂm-]^_`abcdefg J7f2$f5сm%STUVWXYZ[\ J5f2f5ρm dPQR J3f2f5 Jyy$ K ^{f6~$ K ^{f6|A@p:e# f6~$  K^zf6xA0p:e#f6x$ JKf6u...fusr__vol2__f...eucbPmane.f..dclearcctagsbexpandafold`gets_head^num]printenv\reset[stringsZulYunexpandXusersWwhoamiVyesUcompactTuncompactSccatRviRexRviewQtsetQn+l'B@1} I0C,g/+&'BI`{q?%Puw9(yKlN{179<)IL36O}5:ua2Y e$}ymdtjffmn?yǢ1 =#[uYK6b3>ҤP)O擥y PXϬ/Y?<()i e(޺( yG4'AhW%$}V];M*۔ hiL3TIN{o+etVqvLW[!WF  /y/0=YqEL1:{5^&;٪s:wD :`+oKd1vA1M qrd -)$ds1OEZ L[~{mZƠDP dC.9 1e7u޸LZ'ZE`:{5^!hxmVO>hDs%|weJ!K`p]dS {srG%# > ! <_8uu{I>$M7_| XPRY mM޷`2h7#J0lh9I(YMG E@LUݜ8aard7,xs[Q8AlL'nI`{?3DVA8xWOD)gId{sug}h5=&ugvY$zj=jAjA3 .&;K [CWM{E]/K-YMDIkM5贤^`C>PW5EHET?/8vB]`AZPCx   EM&qp$% +!ЉB+k#y;g9JRbwWK?e9ba;kIiL3ٔ8$7Fu`1Q,4 eV;FG۶!'{ZKYz;6_quމ?ㄢfD[j>qu X ^ԍ #P0uS 1QS_$ҤPEB;S!H|J&"ix5HۘA$ ѦS?JA{$*$E"A"+g di}">N{b\[3k▶oYyDl-5p{ Zްb O,?5uQv6z7hX2*s${Cgj&j %2=^]s%4r“U=O?u(MI:$M7_|+Z0  OjxS ɧSewJ u&'F@ѥ(-G'M7'n,%"}, $џqba6޲~!U | o6-nNi!^pkmۈ D m=x+L)}!5{eh,u`T/g#k^h+k$KzoGE&` cM=?]KBX; `=LrO? `lio*Y#[;UwE P+vZ E:P)jC@SA]nޒs`2KEo{Mc/ nS%.U*v-zW$¯l[Q8AlL'nI`{u\iӚRi}),?!2QmUt 5w3ס5(^e=UgF<@$wC=*#݈jMo2?IhoK<&$=RBb?'rFScj1qq:YCo>^ EP0uS܈ 8wsS'ʜI.w'L#(# Ql_K/M(}m9-r+p|A A{(3INws]#ZO1t3g9biep[(Av}`m~K#|&}McYp4cC GG(pjM-,KvKa/~s+<?kZ,b?c[&U/if M7C|$MBICӅx+U@gXGŜbg.i8 Kf&(i_pG, Qw -Tt_t%ڊZ!FI.4gWODc39(1Nq7RnPa/ZS9vAusXduDWOZMEdfXNQ,4X; ]r]rG?ìR:ot܄MY;;YoI vôP7UqO6w;NXSYLJ!OKff TUe:!,Ln|+=KgBA W0j[cзNK-Kh91$\}dWWIC@/089yqR0@J.55=0@5ubT_3V[p>Laj 0gʺTdt@~`lO56h=VR!E>73&HFb1#Zg*h =6wޱ>YI ˍ;HEV9ÈF|(m5 pPY{=(܈7EJ4#s8!4d,[i@&P+[b[!by'ȳHQ!^> joZy^jUhU^}`%XXnee{5=7(pv, qC11EhJMoI]KC]& ~]rP,w U'*Y}rI6&¹#T SW'R/s/|T6hqn8(A]*#IU X%. Ƕ*ba`)c+i}"= N{!^83 q(T_G'9tK?-9e1g;k?H /5O1qneeuU87({V۵>bLa Ml=G 4bCAAt&.M. s<|=\z_*B1:BU%}xSU&++ҎR?-#=jx}S 8_RiU`#PN31)v%c_4@%"~dTmXwrGJy~{iu]}6qwCIb}_*J36}&54 ub3vYLaj -;eiBU] o5$e'=^rOLBGADu|%;qo-%1-X~|'{g{lr}U>|q;"+In 9Fjܦ<'_ =uO,* Po  aiu(]N{!ZZKD."twDK} Su!O`\h)3 :553XizEk8p $w`FsEJ@(#)clear.c 4.1 (Berkeley) 10/1/80TERMpcclliTERMCAPTERM/etc/termcap/etc/termcapTermcap entry too long Bad termcap entry Infinite tc= loop Termcap entry too long E^^\\::n r t bf 5MS7) @(#) Fortune Operating System Development Utilities Version 1.0    pp_I5U,k7sgbnzK5,W~Pk$iPIU ,%"P^%gp$-&8xGPcI !,\q!` !V=_%D1w d 1MZ Iq-ӵ55?h\|+.Z>lhBul] ojs?&Suh-ur“U =L+u̾1'G M77a^8нY)>z/zyX~|EuƼks+73X Q WܵX1,~|qU9)R$DdXxo)*i["iNv!Z|93"[K~p}tbC[U@\] }qp&;5h,3$5, \q4 Fu Mkd -5X.:_5?d`E }A ->`Yj>9y<;԰,Cd>`?|CsG *"g}J8|&uK)#.M g#Y-RS ~pW/Ǿi'I`{yp >B1_zf™v9 ~:p[(m}`Oe~9r)u@㺀߮ >@Dqjo'9;%dTf=u`ePH.=ONFY-#LzzIkrCUEiղXlg{--TsW' D[H-+.uS:-lHiF7*qшD ߀,LSwOu"0Wh>l*EK J#*ݶJbG_3D:RcL'Ydo I̝1m_Iycuv ;4&w`:o>[ LCq(dp8;MO=2R}c[38h *rO?}ԋ OJC}\uvbi$0+bw^2 vkjxTS (fNIZŻKbϦ)MyW1L$\]{ u dW,hwq{ Vq(J1Nt}vW['WT>/9r-n'|nR`w5B*]p^-,)*%g߷b# Z>![cc^;l/1YI7% 1 l%AJv=,5/eAow-^sP&9 m{Wk s'T}qп* m@I21(8)1O7(c'1t[2'-g>,5]0EY mIópx)cHk P%`2=n1mQ_)I.!bH%R?(u@P[vLa Ml9͏Edt$*_xIrKZ(;&AGm`Nc r@FDSI[mT2Gi5gcY #E71Z8SHXOŜF`ItP#(7p EM&qp$% +!ЉB+k#y;g9RBwWK?e9ba;kSiL3ٔ} idK^7A$QCGEDj mo.";K~;(fvrC%%'LZ=kf1#_UA`ziCoM7E^s UDPf[>S DX/ʵF|a#zqiՂ_cBm~mEӱ9 RviEvWW \[W jiuIaGOFh_DP/YM({hKqN 1mq]P;0`ϡ%9c] O{HmS&'٥v(c5qSA$QlZEdt$*b\lNKYc3+Qڻ"]vޙfKU:IeCM7_| X~~Y ^}-s,&Exݬ'䀅+%m`i:BC w)MG~#'~sbm 09-'t.[9B [_EQ#EU'ȳA6Co!^;DP/YIFWwMbFX?9+BQYt GEL!5{e5u`'gk8"G-LPeh  Fji!C2f]og; /0ro/cȌRś!!3 U밐@i՜+Dw4|Rލy-2P3QwWy{vHw5I=j)&(Ni: !5)ɒ5[dT57q$ AD_~U}idPKKJkAlLU3JA"1rr&D4RxlP2-['_&1 \r}q5{7=uސoG'c}hs54Yh\ZbFkg>tM$Q ?ػEt:moX:.*;KSq@*=VR!Q 3$rγ;!BEgu?Ahf M79^qY#PT7[U~?ȢHX#7$.i۫F29e(ɘ y܈c6IA,%*Y9K$ d W.P} GJ7uF \kު0k3I!x WWDK1uҔ TL `o%}\ =PWY>@ c_z=GTLj-oN"2r-Q;h !rOmE!R18Y_'D7/&oYE>I Ӆ%K$7>]#jOk qAT5K(ur"eCd:xWtc  (IuF YUfNo!^;?kRfxBqdd%1M;kL\'1LRMO{HmS98>`j'Gu^ga@HjOLo52lZCL;'Oo=~ у-rESlh{'UGQYJC/E'1L^y["`7wE=| HXӬLJm,gTpCGAd|EM8ZfZdpd;&rC7NrƟM+.6A8 ^-YdaWPz7usXX+E-l.iF }Ol+U#,-q9!p$md7WPf;_{K+%u$dI0!U;#2VBOOd9bwސPc5O{HmS6A?:v@>@g$y`=jEdyjeG2..MMKM;gusvOE%'¢Γ_!jEv.t eC u뮟y7S( P/GQB9`i5gNլ Qp,{M?%"=azL,ܨoP i(nq( !g Yt 1BOOd9b_n^C$e)}d"R5S`_:uja=; T"DME{ ]I#_`;&3L%+ r³xFOAI[>y6 o*3A y5 BT͇xuCѠwJYn-$q e)dwb*o ] o/~&?=^pϒ;%0omU#lAUA5TA˚6EVa3s1i#P}yu0{K. )<"9ai 5Gzn ofKpM,)o9Kr(d X009Y8 5 J=0aGA`_DP/YB1qMx+=VbI|e\ [ (5\Hh\fcY\c] qJN=G }Motd}ڵL;"CskVbrloW?ʆ5Į.K0M匕ڌKuRgXAq,F$|i<IXKT_MIM,ktyqR|dQ,oPKKO+GAlL51 An)GS#HxRBGG'+mƻa9}1:0PqOWD] G55C!FuF-Q9vH.plKɢE`p&}Ð\`SKuG)=~V3%ru }hN'aus.o YVme$N+pS;W?s[/H|_,fbNx6Ͷ#1o,dKp7_ ,'m9.I4YA,] 0F mK'ȳeX!^6kifRBOD)o'Bc]j%@d\IL3ٔ} ` Uڛvfv ?EN42M@;\fsK+Ksk3CskVbrloWYS_YY4*98mbuE_j٧'ʚRF|`O5exP y ֦[?'ıJ%"k{!\ MCd;P%o+X4F Nsp~ TbS$QCZg jm =J.]K#p ;%=RM>%#,Q"Y2muSnx!ѯ=؏!NkҤV? Y V01BuS/|jS#5fKHCil5^( ~#LLU#}{(6,W  )MC**io a|!~<ژ}`[B2KX)\`Ao>޸o)I.!^ 5!&ubWkY?$ya=G'j  %\!K|c3& =^<[\¼WL/mS[;Ua6Iаk=5v$>#v m{PW[s ! 4 ` 99$DnyMc+L`:.! Oj^*WGE[_EP"ͶyiN~)vs_>$niWWI D)q{4W΁5u޼@ۡ)!l|`'55w&Uwkvf?&Lc$q/=)E.j*o2|.UKS;&i=VR!Q 31rΓEkVweZu잖WsIҶ b7YҤzeBrz/3gH&XlF ٜ%F y/lN ITT7!\$Xka5,wvnZQk $Gu 3 I A\]D.ΒW_'Li?%5Q 1iu޼%9(L]NOv50&eHz7hY>`a!cuEt moA..}&H;nrK/c pB#!b>c[;U&,-$U~ s!HzXApTF@ ]%(F y)7Pc, uC|4(,tʾWSqO9ecY P%ôh?%6Wd{UKL}`!R1PԎvLo4Y Fu jGjM?R.*M_?@o vrG%/rF7b1#Z}Li>AGmYvoڌ^Y 6WU~SxHڄX'g-59@&>f) V"|#ƟKҞ}{S$d aWZS7]+iW3*jZ "~yb1m>'ekl50Ψyo,4(TDZk3X.-As_^XH$^Nvš*{UU T?U{h M7_Ҥ[{gkwuS nrXOjfK|Hln;D{H)༞E:$%"}afPnK:,WA78ov+T$F #-0\On&иRjquP X) Qa]'UF@gLDX \\vh1k8"ۅi )E7j"o}]kSi$=rOjE) <{6ż`?Mm+EV/Y#g+3Ͳ#o,Pz'g;e 1Xz4lh9J((G'aP4 Abm%*9-rd,0  I JuF \k`ޢu] HVRb_i 7w7by;kLc%g?K5.ul sG *"Hp.d]f~HYfu0Q"r! M[Vböee+Ck´k0tuEPPxZY<"B!ْx qpRAe/Pc, A=$ K[9(utc  iuF ޅjN{b;_2D$xa?,9bQ_Ju @ۉiWR5O{HmS5HX zBF,7*ۅy1';WI bZG]dY; u "? r!DA굊A%A˚6EVa3)sg=\ۨ}=4H#?N.F@iNńogP#_ ,5{+TǝabW/6QTkc Gx]m*im%_7 Jb^2WI9K? =523;@^'ۂI5^a&[=:rOB{crŸFGM澀\\.-TWv?DG.t}IzRpwJ, ̖@[#`&uUM -N{,%"!mKtǛe8$M#>m;Q %P$cՌfbOd87dV*9$+{31]& ]`%grHF {5ƴmL^blrukjK`jM!.]Kl7_rZZ11Re-wI5((-;-==-X~|MpD/9&S|&`-#(&MoD'1|[ }?$0K:,zȖPkv[&yi^;l_3BqNRbxkNK6m!ku0T,iaS5n fPvpٓC=]$7 oA7:;UQDu QQgx_߻jŦ[;Ua8IGiҤg mr}Q,cp'H~AzRg6F4%e(چn{@+_c E.99%r"@WA7qu+;GJ7uF lN{ozDP/wWWIGn ?-Xf;k޵eG)I.LXO{H55&;مZtk8"LajCG dOM! ]S &AG=PW?kW^Uoz4Ѧ[;U0H,$.sM7_|ҷ{ #u 1}o/Y+c.wi-KffYA1&,'1,}wn*$ DWA7u[_E !uF *lN{ozDP/wWWIgn ?-XF;kޕeG)I.LXO{H55&;مZtk8"LajCG d_OM!> ] '--YGy$M1dyyYo\(;e#9x /9;v.#'K(G y&M+m+v<*dWA[W+{/ yFy9\\ۛsU#wHOqXXgb_W޿#o}h5\@ded8p6Lm _Ci1*jcoKu brC7%#]Uo?ɦWu[,`)bcYP=WQXF(L4(F! >`(Aq>Fln#PM%"}@$'.nJM QPK[r[bo:ESGV7_HLRHGJE?-b1]u޹@ێiL}`c%hUv$vLa o=iob>Mo";KS7dh1o6%#"i߬`MZW+#YEҤZ Y9%D<ÅW'3젉X3REd:nlNP* yILgY, L!sCdF,7!7ypfWO+UoYe[̍Oy˻ >WW PK\]m y|!H'kV.-,UntbmFԗmf> qۉ~(|k-o896]d|;h rO%u0j1!.>c[;Uw:%d՚6$bϜY AOuSgJ8"k {$n{%H 5RHƠY!.~_8WpEiim[pԤI!NyhHT)RLa{j s-3_;ްb%yaqulv>ϛv q[^=' b9MO;J]C+:\pE[[+y VŦe3/AN H1RbWKY)}_&ް)I}do181k8ۑH>fojk=;e*ln]!U:.kC&?=^|LajCsG OdtBmo~..cKw8&-=ZOa rÓAM*S Y-oռ7 ӯE[\ڌ=/[Shȷ`Zs/赜i˭`ݚXLD56789:;A5,f;3bk|}w{9rlD7 \7G  ,L)I [κ]$s$VW(Ŵoic=}u0^cY`e%8ꀴV>|LajCsG Od|NMI;"lo`#sZGu%gb> o_j_[= 5-m M7Ұ2MIǓHXsнd:1iK(VA}(OPN%"jiHC`A=[_$)&h[$IaU!N;_? HɶRbWW؅Kq{XL1mZ9(LRNG5^!D8Y7 Q5{uDdujMI)..ZKcg;&"rGo%>b6l1z[VI> M7<Ҵ^\caRP 䜧nrSzx\(7"j>Y`R`ȏ5@ ˊ0svf۩C=MTcO2ڸ YCM䜧n}8S{j`ҖJ#8ߏimE}Q2%yt? Wl; hf(ԤSZ.޲tH_~Rb:SvQS_@"1M!QimOO5&gdKe>leG <_qM;}]G ;d7bpEϢBr;±Y7BNu)jQK!Ӥ~"I Lu}S HJ8*E)2`( /bin/shsh-c ( x          $ 0 B R d p           . = L d q      %Error 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough corePermission deniedBad addressBlock device requiredMount device busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesNot a typewriterText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largePotential deadlockNo such minor device(null)@ O )N????@$@$d_pԦ;5C iC˛EX 7M&pE[_ lyk"B.M!ONu}~vH?v[]'B^yV-b[g|[7u0v[Y|h 5G luJ*oA]C\.ZZrM5Dzc2FkF_uAjQlE6ȵ^n#Xu0;Ch X :N a;O(%.Ew d&AK%!vrp,y,04[_cm{!Z_:.rb'VxD_e8n./'3:huf<8>h rj_8[;_z/%޶ M?<Ҭ~LAcT!(!qEYeFRG1%mwGҦVԊ?#PT0uuS.s9JFBi757N)]HP='Pq%(}wQ @F?Y9+$)Сy4n~MX>iЭ'Eg?-?V[}:޸.oU֋tzB+V,<μ11];U."2WKqc¦rG#>bl! ]$[ *? N S X w @(#)ctags.c 4.3 (B@$@$?@$@Y@ÈAׄCAy7FnM8O?ZwH01uOs:uv`u/SE[9ޤo@ǹAS &AG=pW?k#W^UoZ4Y= 1,Zm[mt_p >`q`5 w/) OӦ^#>Qm{PWerkeley) 11/24/80tags "'#()[]{}=-+%*/&|^~!<>;,.:?ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz0123456789,;Usage: ctags [-au] file ... mv %s OTAGS;fgrep -v ' %s ' OTAGS >%s;rm OTAGSawsort %s -o %srctags: too many functions to sort mainM%s$defineDuplicate function in file %s, line %d: %s Second entry ignored Duplicate function in files %s and %s: %s (Warning only) %s %s %c^\\%c %s %s %d %-16s%4d %-16s %s integerreallogicalcomplexcharacterdoubleprecisionfunctionsubroutineprogramprocedure@(#) Fortune Operating System Development Utilities Version 1.0   Unknown error:  H  EM&qp$% +!ЉB+k#y;g9BRbwWK?e9ba;kDiL3ٔ>w} xykRLA$qC{eD8jM@)= ]o0&\P=R*7o! j>qgUС+iԏ$DҤY6WuELxwKFk8A1=((Zu_#ɠ_ %")=$5,Wǐ6tO  J y`)N{bZ!A1 Do*bst޹@ۭ`L}`=R5C!KU,~V>`\q4 Fu đ%B M<jZks;6}u:;E/]!A¤Uo/[M6$^?EP:uEhH#_?i.w9rzY q__,?Mu9-w%W8wo~~ )$)s5<LG!9d؅?lWWUkv9ai;k?F)Uc3tc%`:_kp a? ED'KM=vc[32s|AExn!s%#_֓Us1e] շԏ$KŲ % pz7uEhĚ]x/E¼f˳Ep @O()vA1idM,o#W-OfdYntWYr5[_EGGvmi!^u]|\Wn lx%?'9j;ṷTOH.59>J1uP5okz?`La Ml"\Edt$*fZKW4;l WqL]v tB񾢯CUT/leȏ+hjŵ!UC6={w||ֺ/_`La$`F=EdJMo y_o wH;)|crG?ËX!j`_ulua5 m0v1)bp5^u7`EZso贰WKj_  'LCp*r$hC+"i),)V:+Ǒ Q::o}bA+y3653Β1L`W_ln5eU2_+R7Hh CFEDJ!{c.0oI/rOժpΌRѓT!;͆SutY:AqԏEF-\D #z}_Zup0{EZs< u6'F@()G'7'IO$%*!9-I'C *$M!rE/^椫&U +GuF ޅE _3 PNJn@x`9 H1RbWW؅Ke2sC 7V f_5;h{~$Y\|f Fu GA(HtjA%.&r%h >rO%uXƒHsYͦ[qlYMcBMҤR_Y'#\W0+y3H 6ۃ6F|Oj5 xPMAe; ? /I1[A^Wd=Z@ӡ)I.lvsh\ZcF>Yp! jojb.&]d|&AGyճìR2Uotj_ ~j/,%iر qǴ^y:p˦IuE_C'=$hc$qK=JEL mo."NK ; rKA/rU! G;6u9Ҷ b7YҤR~FWu3 @XBkF`n(5!qǁ7(0'}*RIM9-SDCt9d]xw[_n % φ E){!z_DRG[K?q9b=vuްL[)@.}55w&ywӬ>`LCqC1 GE hj7Mcu.@QcJ/S;%h=^~ϒ%O ~BU!s%(urE M7E^j9 kB@SutS/кaXp IFEib5O"-mI5*I4kdd!e.qDRzK|,{_\7 itYi~)P8qAxjD jVr~7#y2;6W!>. oٶh-slQvUN`3%5z|-$&|wۙ>lC3HYYYi׷;޶+]=Ś$  @z/x9s tJs2(FΖ%i7N qETeM(Ls?lw76?VoSE#YmTLI@ݩ&fao!Z  Rb*9X)O%YL.'R]!!fZd FEvH 1Rл(7j#o}deVe/of08SGqOY=A ] f" M7_| XF~Y >}S}$\tExZ ۫:}#zqKS#ޠkRʁWR$emix,Wr0e{q 8M,I% fnU!:;DP/YEWWK?-9L1 _J&ڨ@یiWcE5,0h\Z`2&>`c]0C=;e*EZao~]Kl[\m]% ]ƼA!j_yfYEɼmqҁJ Gb,]0=C4g /I%<.wM[()rnqAP_M}uaB dLWyPg;w' $Du?eN \p4D(yK-b v-@LjC5jp&UN~35sqpG$qrs d|@M_8,QcKS;irG?%#!!.?M_^%K2 k-1SEҤ~.] kG:=|gX/ȶbFiIX KpO(M'1b.r|D[9d^<[O  ӝ)yco }9'K?!&b3vt޶Ha55-5H&eMz7hYج>`|=yQDMxjM@8`lF S & ~ZZr7g0 p! 1JYUl[Ú>$M'YҨq< >^υWus @ X-gb.iF#Y}Ol+U#, LV5gv$9nXGPkWJSou'$H,!V_3jN&q9>1m>-]: ۡH (MREp Z`Ǐvn@H3C=EKH L+o]o0l!wQ8H9 <{*eD>OuY!Ah>ǜqY #Wz 8s'8d<"Jk*#&5D۔iYOfI6'!L%.58CdLWpg;GJ7uF \B`ޢu]DT;5vWZzi,q11m-]޼%,*}hK5U&^ /3\p>LgMCspGStd|ZM!8k3;=\@g~m_ U!j[jDyѶj0d7P*Ҥ}F#\\E,IH{/Y?=v.i 8 Kf&EM'1b.%Nd tq&y[ȳIV!^nz M,1}q[7`֭9'*}P_f_[ClK誀3VخLa(-=;dbc]s'h>[#]Z N=lL(KA5" -3ҏF v5 Pwj82@3KJ-i.w9 -#Yo_D'MWuA!x$v7Kba6 >kEgE.AX [˻ T8?Ogu>'p;rc~u {}U-YBscEZ!K`@%7H?~0rGQ%/NrփHiUYZ,\V X{M/1Ҡ~~ 3@=D3hwJk`@%f$چoqZ,dT5?qS$Cd]<7'GN~@v{3C[mΊY.mix| TV°(yKlFL]|&Fި`-'L/_%q}Xnp_ƂY>`t (=ET&}Ð`S]kOsr^@# RjI.QT%jչ M7$z|ZPz,w+;e {X/4u:1iF@Kf w1~ _qbK rjrAbkGizW{q eaL3$o"!RPHp6Rckmb."9"YE<0 Q7q9]g&ua{ktce qCs0A vm<~d<#;&A=^<?mR{kAZym Qe y7RenICSgR Q|ꈷwE' .˾FE5K p spec @(#) Fortune Operating System Development Utilities Version 1.0Unknown error: ++!|","4">"X"h""""""""###$#:#L#X#j#y#######$$$%$;$J$V$i$z$%Error 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough corePermission deniedBad addressBlock device requiredMount device busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesNot a typewrite&uJfS?O`  #91rju*%d?W/tkW  hadJ ~yV$VR^I=3NyS@!LO{e?"Au`1:/g\HLmh sG dtEbo=<.>rK|; srG%# > !<_8u:f&$M;>Ҭq< >HׅW;e 1XSuvw`i. w( [E %".4.3W.@[Pk6W  )ed  !FuׯJ`Mj¢bWO'Ck-1ͬ^M jjpSgJw+/D~bG>(3eO1p #Ko!kr(v3dCWntXaFuh{I.XuׯJ`kڢb7ưKuD*1q7|!\`99LR`ň <+w#.OfaqCN=M‘#MQc3\PuMP1 /%#.g;±4_u/ѹjv h~%L#ˠ嚧u8hB3(<"J}Ζ*_(pHn zβ39=S>-qlnvo08.4iu(%n{u3RkVg0AK%ƺ3cUޠujW55Z6"b_uV#;edtl]o2|M,˴{3;|%ngw7wjA[ OUVGDiIeWrް Y0!Hq<@5CظrText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largePotential deadlockNo such minor device(null)3@ O )N????@$@$@$@$?@$@Y@ÈAׄCAy7FnM8O?ZwH01uOs:   bS @3/|_fi:;S<4;S;ޠ`^ѷ9,da-2grKupJGnY(&M>JWR)pu,7>N,4,0 ;hD(3i-Y&#OdLa b=Ghԛj<f]G#&y[Trb _1=A/AMYa> -(MɊP:u7CX3|7M,f۝`im(FiI)\# .=s$)yx{X%)w/RN>!^8;D4Oe?9VCu&^h,Wf|5? uj1QuSAKgfa -G hJEOUt.$ sW K~ʙ9ˊRT jK<ٹ1EũYӬ0z+Ws&J^x\Aw-VCH;o?K$X xp5 o E\".Y+$/(s[WA A{[83dI!V _3kNoRj[gy?-Ūf1mq7RhbUY&Cj UmzNOh8p6Li _Cs0H*$M!C"f]kudBM}!OA“+Y ۥmY A@(#)expand.c 4.2 (Berkeley) 2/7/81rBad tab stoP EM&qp$% +!ЉB+k#y;g9բRbwWK?e9ba;kCiL3ٔ<[`&&΅'F7>\;J=' tjmo2B.*]GSh]&MG0mW%/b! S]gҾfԏOYpBpwW=| LkXó7J0f@G8)!}'1t[,}O$dF.tWPPg4  +UIYINw0Z!p#L֍u*-=5bI|vްoO}`m~mrFulPvqfS$qcPEdt8*]p,=K\Sh R9BrO?}1~Eb[Y7AWs IS`i=gY 6Euw'm X/޼F`ιZj{M*Gk E9-rv{],yGx0#{Mk5 ,TIL̘)niFXt $\Vrp+y\Kly'1m>f @ۡ)(}j5wN@&&`TV>`LavS"IUf"SM@)21ZdV;_q=^v%+ rCC7l!vY;I8 q>2mY =Rn 1}/Ec1d'oFkKf(AAW܈7E,I"}~.Qh[gMCWoL*41V "{kP_7.>R~WWI D?-XL6%_JuԜ@w_L3O{H{zn2_dgv\f$s\=GeGloB*]M#s %srG%# *MwkD>JXu[mC͵ $RŜqUY kх-P\gwwJY`i' H7v)"1s#_^,%"!z$O(s[<APkEC9L}"߆aN{4r[VgWKhqXLŀ1m;4 )#f}bb5#nj1Qz,4MrKjdt$*ef]K-\ hۘrνUũ. -ie)3U #plS5,jS97fkHB S()ȯMRbO^y,kW}w{~ .K:XPk[_Ge#FƩ$IaG!R`_3D1ۈ)HKqXXgb_|0gG;kd}h!5t2ځ kb\:*$T<|gc`&"''{okkY5M=^%3Dxmc/SXu̾]/ȻAM8&Y9/W=e y\s/z޺+`F&fA(ߘ&t,`S?UM[-elNlg mC1 GE $hMcu.i3KWS7z/wyG,hEuAÙg2:n7zY(GPujO^y,kW}wO$-e? X>y0i=AEB$nI(3N{oZVj|jx WWTBK?,TO1auҮO&ݡgLuM5p"u`1Q| L BYC=OlY Mo?IcKU`s|i=VYRErʓUr\}ա1 . M7_|+XQ$DP'us Lwެ!g|OcV5K# }ITůsg+_;~$lr,ԨG Pg[ xK9eIYhiL1Ng_3DL;*x "I'D)q{ۄ΅5E޼@ۡ%-LuMC55$ulj~>m,aT<ŤGiyj9bo=R'S+nYG~s]Og%# Ajtj&],¹*1[E$^qY PW\xS$HXBpQFk`;>( q?Hg-MJ%*P[$Hd9[_En19&ğINA^W"л(qDKp1mްoF"}`m~5;&j3> $}#CeJt"CjdS+nYG~s]Og%# U Ʉu.: ϳqҬ~<mjb|Sފ$'=$0vbNe3I(Eo+6 X%&9-vLT.X0 [_+)#,i!'YiZ!p3N֍u),?!`A]7R!Dp[\IL3ٔ<Qd&_`D>Դ>`|C=GQJaE{\g`x]2^nN0Rϋ%+BU#:N]}ذAh c7IJҪN?m{W? s$ P#G4i.w13G, qί@Ѯ -(L(mp&sv9/|k&Ls@yfT;DP/'*AWCyd+;eWe5u'a3Q}`%RFZKs&N-b7^f^`n_;[; ƛ"b@=."]#&¢_u:x5.=c-iȘ?90> P=S~'5zιo*H:;#CE))kxL 5cTC&Y/lnv7,:x҄ iI%̤)ަxz-$^'i ! ~juKumoYXDc=Ǻ\GM@)2<.BrWSuv>=^t% ]{!eou쓸E[ e< 1qY %BWZ,G<HEx8JXFE0Ai*5K<wC{ PI%&}wގ6Hd_|T3ir"0k[zot3· (F@\,ܬxWD)r1m-9<)IL3ٔ<} xE셔kP>PۍlqiEKZj$o.&]_y;&'¢8B'"r!x?MvU5iI&XABB 0:p=ǹu_|HE]{J-J5=2id5#{qEam74(HԔ9Hmbv;D8hXOEvPF[t +U[ȳb['!^kVRb(WD)o 3-ZcY}` e~X&u`zNPk8"YT (]٪QPdDfU_@N E [qXb %C Ǜ-s]KUAzo$,b ^/Hz,W9&5' XS'ƜI.w'Lה+( E$A '} nA%.*Ƕ*bal)c; iy"݆aNP-sr_2$nO-8K38NR1ZAmEb}`Oe~RZlbu΅Y>`cc|C ]&I. =bN$rdY;,^"Iar¾-!Vw{u:,ʹ#?Ř#9 4#\^Z>|HNX/Gſ bO''2((֍[I6%OgurjLn_9cj0C[QRnNuIN -K8;D2dW[xk&3;ްoG+c}l58&媜kv!,cT  G dt$*f<]aSq.h=SrLB/rʟS!I¦W>iI2 -1ҬuY >z}˦Iuc qMˬ''v<buK2(bK( {CMܧKqcۮ-%"}or;Bd'W`[_(&yuF ޅC~Go+Z_ PWV7ED?>&b`޵p)InLh@L5^a&`@Ok8bYLaj 4k)PKZk$o.&c,`WVos+<?kZ{ ۂV-Ou3)I^ M75s~Y 6;WuS|HX7H=FCM,-S(/U%"}1fv$WW7lQ(6NE^4w~Җ5@BX+bsCJu@ۡ) .L}a3\0'u`d:hkU[o|Laj )Q~m@hjw]k@h )rO}ŒRl8vӆIU`8MT/.+M6$~@ y0btSQ{|hX7- &e@OظG 9/ԈeYy'm{W&sHX㜯[bo.i(  uf'_t; }9)O(T y{S-Y qwk*o?-XLb-SsupQQ]\:5 &;jk8vLaMc=CE .oI~.*f"_a&[umcF*!ODڼxU.6j oA:Ҥ^X5#RӨZ| 1O->*K%L((GA1KW'Wq%#}9%E$ y,:~;A6k6pTY :i^Dr  eD?-Xoby]@).}fOqu52&`;;ikvR`!f1sHit"ko)̦"I#QaCfp=_~Ι?%#N͍*U#jZԻQ g GY #˦Iu oxݎ1J=FlO5`) qAi|'3%7 Lmb<ۭ~&BbS'WPkYߋSiu,ȳfYO!^sr r` eD?-XobyQ޼f+E~}XnU;=g:Dp>Laj'sunOeFZNAo.']'y??mc rqÁͤڊAj+E6 -Ҥ\ m{Wsx$q#[I.i' e( !!!!!!!""&"8"H"T"f"v""""""""###-#A#R#a#p########%Error 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough corePermission deniedBad addressBlock device requiredMount device busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesNot a typewriterText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult  io Abm%*Q9-rǝd[bE[K$; +Gy'fN{odGD<o,0.oLqn(QEd;j oZ]Ksy;d \6%#\“Mo!m1V[uNe/I"Oe[^ ]ӂTuW?u34nlJrh/7JŐc&5KI&(-M^,Dj.}iC.u 9/|k+U,y'zIc;q; HNRb}9_=H?-7 !qӊ"2`݁`.%_Ō0C5n3$52γ$xR_G$tNǽ..+k3;F\6c%#]xM'kٰ= ;e+M'kX0pPӧpUIIJQH܆/7J̐ S5D)tehZ\ = zEfm9-lv~^uܡs {_iiF* iNS4$٢c'|QP*bI|i!\b΃Lq%5wr}ˊ5%vf$,۝j'4>%dt Kin&\kCXO8% > rcTAHoBoAGz=i&Am| MY#\1usQh+S7$r@ie(Fj{ip3UXE _k9<1E4dW/P=U tk !g4&VNoRLyҨ~qsbU@۱!Lua*(R=Aubh~#YdD`4z$=Kdqb>+:K&9K5, RQ!e]}YI2 M:ҠV(R> +PWu @JQ?.@8F̐i4,Otoo largePotential deadlockNo such minor device(null)-|@ O )N????@$@$@$@$?@$@Y@ÈAׄCAy7FnM8O?ZwH01uOs:   Cs X@ѾlCްL\ YpbtVPo/=*lJ yiޡ58kG(T*Nr#>Inqs+@Kϻ >^ra}*d+3ca. yI @Dܨ"}-qsÔuW/;0E` $iF5Fynz1Z_5tWSqD}XLL*u֌I&*O5gde;rr-w9ulX*'5Fm<+YDy~-Z.,"mA2R]C_g]t&1GZ%#ەi?MpurIJm: #/WuE]l(z/˚V((2[ sp5o';{EH$h诃[W{)f3Jn.?' VrekCv3!e[uT7'ѡ) #}i%_Ų|uhz<,0>hlh AG dt$*fZr{#;h #rOurʙ!*I¦[o #9 O8=wc||ֺ'8d<"Jl'oFkKf(AI_'A ? /I1[A^Wdw9*EKP@(#)fold.c 4.1 (Berkeley) 10/1/80Bad number for fold r@(#) Fortune Operating System Development Utilities Version 1.0Unknown error: %h%h  EM&qp$% +!ЉB+k#y(&"6:*-$@3iL3ٔ1d'u`z74`Lan=T 8oMc.'r-S;&AGer3M]lUioj_tA],¹ ó<-&#@{/| wK֤Fſ2+9Kff 41M'1&N9%$ǝ<bWA7TQ#<^ #F0G.=[j HJ: E`Bf9Ջ(T y*JBp9%$ndTl,w WvPoWo iu'!Z;s3TV°VRlxWOD).mSfu4 ۡ+*}m"ʻ &u`>Fv,Y`La M ?9EL42MDYH,]K )'#7;+1-YYCo><^ #z=T^\STHc?#j,&@YDے7G{M§7,Lq r&Cd,i^Pc[_ )c'&NgN oDR7QEDk96jep[(H6}`O [&jȬid&|ೕ sG *"ncZ=CYs%9*/%# ;(.;#.;[mAMgY1E[^i$#RVAHJ<p!@\  EM&qp$% +!ЉB+k#y;g9ղRbwWK?e9ba;kBiL3ٔ?} lu7>qbE$q(mEJZj-oHQk5;&/oR_ # r°yϖM&kVEVIбe!w^? Lj|S5X/8vRY`iF $ q]5(#޼P].0%"Aas$*$M.W/};XieIJ #)K 2 ):rK?'!}q=o١#L3ي05B!*KX sv,4tcOCclucEdt$*feZU_R@; Wq=^<# 8E߻*.;[mACM??>PǑY #/ͽS;HFR!v*5KffAP_MS}s .Ƕ*ba)q1+K+a`h"IN{b;_9DP/YPGB)y?-1]'_b@ MLR\s**`&;5wkYq>aN$qce F**kM!``peDSQ^rG%%"6FU! K1h~;%G{u,S#< ;NS /YAӵ|`cz5pP(GA1 q9-rYqcF$qlKFEdtEbp`!A/slwRh=^<:?kZxۂ1uui++1EL mZ_~c|gHXF.@iZ8Y''o$w`K%/urjLbW P[WIiZmD.WWlk_-?51gG0XM}`O[d*duJymYLal:uG Ҥ]Ś>xSWD/B貄Fńf LYp_!ު]tzSRCiMJ:wk7r>I $n&?c:n;d^R D?-XonCZK^}`O {h;WvYLi _Cs0BXdxj!KLBc;h=vO?{~U!JE[,>I6 ydgY =p/˦|H{3-ùd. Fu( qM {QA "!x$DQn@1{qI EBaI83N{oZU%j|jx WWTBK?,TO1auҮO&ݡgLuM5p"u`1Q|[ L BYC=OlY Mo?IcKU`s|y=VYRErʓUrѦ\}աA . M7_|+XQ$DP'us Lwެ!g|Oc5K# }ITůsg+_;~$lr,ԨG Pg[ xK9eIYhiL1Ng_3DL;*x "I'D)q{/΅5E޼@ۡ%-LuMC55$ulj~>m,aT<ŤGiyj9bo=R'S+nYG~s]O%# AjtjV],¹w*1[E$^qY PW\HS$HXBpQFk`;>( q?Hg-MJ%*P[$Hd9[_En9&ğINA^W"л(qDKp1mްoFn}`m~5;&j3> $}#CeJt"CjdS+nYG~s]O%# U Ʉu.: ϳqҬ~<mjbSފ$'=$0vbNe3I(Eo+6 X%&9-vLT.X0 [_+)#,i!'YiZ!p3N}֍u),?!`A]7R!Dp[\IL3ٔ?Qd&_`t>Դ>`|C=GQJOaE{\g`x]1nN0Rϋ%+BU#:N]}ذAh c7IJҪN?m{'W? s$ P#G4i.w1GG#R,}wr#@(#)gets.c 4.2+ (Berkeley) 8/8/82@(#) Fortune Operating System Development Utilities Version 1.0  ,Xu[7?44֜h[&rC $RUv=J_^4y q(/M(:>`-:7H`;g9RbwWK?e9ba;k ( E$A '} nA%.*Ƕ*bW [S$; Ji߆INs0W#" ED?-X4;{Y$>p+LW_5@uak4qv4K$qOewEdtEbn\..WK}k3AExwrH#]Ś!hI¦쾙EW/4l=6qqY)Py? HfXq|ӊFOiF"ߜ'qn'1t[,S/O$d;|W:E Yi$iuOI)kt/1k\}LWWIAu89]iSg޾Y!MM} [55&h>a}j M2 dt$M@)Z|1rKY;+=^%/ rQ>ha7l[,`c9Ҭt|+7WZ=4H4XBO0K=O(. }ITžs U#bk|{ rjqWAwE?yw+Bio"{n:idE9WK-d^m4= ySw-YLaj1C G QdtM_)`]^S &A=^g; <;U4Uj_ , mԏ @}Ř$5 S0˦IuE_B٧+8FFOf7((- Re%"}9"$d Ws/-i[.1؊I`{V!u``ZO0Sz+7>la1m1&={%W]gj|5jt]-zE}h+e *e$KG(6jSio"]K0G7`+G>orK%'biP7=,TQIҶ-!Y@ ]kjx 49D$f@iZ[8_Y#PM)%"iK$d%`6z[_+, qIJINSD^ g:Rf"#aU{Z-Xy1cu֜0dÂIa}`%{gC; kU[ێCsG &jn]!`?z.&kC&?=^ۛ(굣*_ԩpW1M.T!9-.rzK,9_|S'H XZF|`q 5K#) q_#[AuTd5 o^pl}ۘj(jIn  D;xw_}~qs݂u!H)O@LW53TX8zE}her?ۉ ?sQE$}' wK[;fu E?k~l,5ʁYX:,¹/9Ҥ^a>m7sU>H[S۩{"ן:([# +THfTg_!u@ YO=pU/ws)u( d~mZƠDP4W[(WDdb01ewuް'w3a5Ru`Pk8" 4+Lm$q sG *"`Ji8|uKu;gwE# fR%hX4ܠMvdCP+B,~v 7Pӈ4SA2DݱSU,Fl;4n3qd=I2-K%`{Il`9,[?bPktce= i'rIqtJu3TLWWDK}<%uްL]{LquR9Zp&u`הW6>` uA='tiB]'*qKUfWl&o_5> :ms/l9Q[ylaK6o*7^ UDP6STuTS/TsW`@C{C="~N+%td]__PzRe"] !Dr¿Uqj{ue+?&k%;=q=V MgBpgs#hHs,趜ia`MXb]v i1ݾA?Pc, m~ .KbaEPk*EK J#ݶ&jG_3D8RRdK?"W1e5u.޿/^L7ΘY9r&u`k[>.lf=@hj߉ Hk!;֙>pr@+̌b!jVqN)]jQ/˽K!Ӥ~%I Luyu2 l'$"Ec,̹ۻ,CE_f#%SMz$9=O d8|WxVGE #\F k Ic9btÄs>5r>}6y(Qv?T!@u) 9^}i*6Z'5qQ$u@T,@%w_ťp&u[<F`\N1c4osjoNo}KI ?u]P²Ra/"C*]G?Bg?si#+h)?-|~|Cp=QSg+&+[(lרI 8Z!e0\pg#޸-J%>!G6{X,wM¯ iD]T&N{o+l#ޢWVx#,7,0f1oQN`DmkK5%&}aujfY\oC54 "*zEOJu.!]S3h5_rA;%&Q)!5vIZuڹʚ4hvڥ^ Y#ˠL_O4H\/N"[F Ph(5J(Hp_ȳ8 ,(L-Y v?I5n^r.m*Vq$rc34ϻ 8jVpg;U+xj Y+藈kYҖ0t)OWc53%ߥr0 劜1Qb>`ADqz;#@dja>.H "KAEP!ɕwPZA/[c]A]%$b#ҤN#Pz/zW?p p#LS;d(`([<xR-$F.,9KziiI(Ԥ]J.ޢ5=TrO <{7ɪ,Elqg']=7R. tZ,f=` e1e0 (. #.ܻkW{-2juǶT5ܷ+0E` auĊ31_7VDKmm=;.@iL3O{5Z6j:c[Nj/Cs0O,[iO6.&]my;d'0%#u:!/u잖 "a^Ҥsn'Y#}oz3W=C HTsjCz531ea3. ^lB195^&;uo$} ?=ڇEKZ:$o.&w,S@@]H0 nrʽUʼnqOʡ&k5%yCEM7_Ҭq< {M\)˦Iu ox3ZF;P!X:7˲7f1+3bk| @(#)head.c 4.1 (Berkeley) 10/1/80r==> %s <== %sBadly formed number @(#) Fortune Operating System Development Utilities Version 1.0Unknown error: %X%X&h EM&qp$% +!ЉB+k#y;g9RbwWK?e9ba;kAwiL3ٔ=} pIv>`La  qF/dtEB9` lCSn>=^<-_ 8E!j>qFS}[m-O%: +7[E)^v" PuS 1Y_wJ0JVye-`_,)E-07dE0)1.rl*$E/t1E[[+~ V¶ΊY.Qi;`Dժ+9?1m_J=@ۡ)k(}p]fc50&'ʇ:o̔v^lLaj#?L<-m0Sue=RrO;- r=/M[;Ux9uUCEM7_Ҥ#\m{PW;N s Jyk@Bi5KT s#BJq0%"9U!r"L:Pku_SnN[' IN{oZVWk1$Rb(z KwxbI|wo(E}`s35&Z\Yk8" 7lh yG dt$*gZwk#g;to[8R$1RB o_j_ }u(c6*1ҥ^ Y#P,1u3@XwPd@@}C=GEDYo=&M`; G>=^<*,G@\!qMY}'# M7iX8$Y ܘ7x+;WHN|'<Q `ʖrh5C( }iS#'C %yaI& t]@dX Pku_ .ծ LFI!Z89D`2bW_'WҀ~qsтu!DO@LWC5*eufj4>hLa$qcZTE 0DMDY ]I#4;8FM~=^Rs߿!#X]œ[1,YZ췜іi* MZvҨ^2)o,z'g;e 1XPLifܽ?E(JeO\g`x]S&G=R]a?k~Y!b1#^}o9jhIoM7_Ҥ[QkguSbpg8FEJ` qT'''Pq$9% $4rf^> V=k$`iwP<)N-K^9E4y2`xy(yK6a9baJ޲@۔cV55?&;5w0XOY~cfIkCs0MdKZE$o^.&s,>q;d> s]H%# >O! n[YWTf6EV#p5 aV0;NPz HX]_P!`ivh3G(ial deadlockNo such minor device(null)-p@ O )N????@$@$@$@$?@$@Y@ÈAׄCAy7FnM8O?ZwH01uOs:   ޴`{,|@LWc޳H[p Sްc!cL3ق?^huF1k8fnSᝁfXd>frR_1A\nqEZd chT!mRK?  )}pOlM'1,mLur NlCs0TdxjqE{\g`x]3R=VX!7o!֓X!GvAu :M;:^ YdCP|z7Sb{)'v<b|^i8 Kf&( i_pG, `CIndt$*s%2+fvKlC%r=^RvK]e!*IªUA+/. $+cIE9؍y#PSwEusc㎈?Ҽf`I(g#WH1)v%c_%"~dTmXwrGJy~{iu]}6qwC2UIb}_* J36}&54 ub3vYjLaj 6;eiBU] o2$e'=^rOLBGADu|%;qo-%1-X~|'{g{lr}U>|q;"+In 98&_MPIIE %*Y/O d$7PS3}KˆoI)q!RSDժ4jWVyN?-n1m סQ*}lIٙ7z=FsVmLyCo!CeD49r]dSu~ f1\O%#‹\!ovR]/M/1 yg#w?UP|Xp78d<"JbV:&5K(گ j +ia&N:!^ f-$b2 Áa.%'_UٍUNh,La"cEM` MoN8]K&9Gh%#ʋēb!.Y+[Y\AIeffM/1Ҡ y!SG[&57MmF@7׍8 qpe73cJԙ9frxmduӴW P[_o,I B:/G8sKT8x58M\kR5Ez'z޴`iT.mpCr5?&;5}pX>`[CqC1GEhMoC,]KTEPpEK1d_l-|CZA:IX[`>Y#P44S>wJEiK$_ cz}O,%D[9 T$&d,WPM[u 3 C=xyN{oL@D>r27y?-X.AU.`L]U&U_߉r?% ?s̩E$u' {KC&%=JZ!'MA0RU-f.iI&&SkҤRYz6GHX/ʲ6Fd|(k5KpPFjܦ<'_ uO,*bW WtqGa f%!RZFkRn#_yLd?-X-uҐ)I.uˍ,duh䍅vHDq#)N@Aj'.u6DZs#NRE #r“U]V@VW d MЀ8#\1 !g-Y}PH1%"ia6]@dXW P[q! *ĶE E()!pS&uyP2BW^yj%h1m_JZÌ@qW\U`}q5 uP<8[vE^p4louI:DrBMcu.C3IS73[^2 s]:=G'dtf!or ^y=%[vPoQ81ߊRaYUVT Ҷiԏ$S/rz/w9>t&Exf9MItJ#`Q6#Mm:H5Ǘ!xv?3;#=YM,$o[$Ί5a{i;` 1hxrhxWD) v1m!LmUag}`K vYu`zF[<^m,vi% 5 fH| =^<*erl AA_(%ee-9-X~|MpD9a4'HS: )9 :+YTܴf ۿWB&?_ ds,ԨEM P01[ oeu%yIn|AYd5VBrY-?-9֥Vo&|$/Ej}d_55Fu7vf*ך$ W, $@ .&},p;orW?ߩrEjWuro9Io)IL mXQ,s8}Hr:U̴8FũH2H#JLOhp}cg,%2k$ A]@dXU9!Pk[_n4yB5ViNkt_1s>r" E}_")I.u &u`YԄvYcOۉl=iE*jlowKSeEP%K%rG1@KU;бXh/'y'#[S&4S-ĹgU Ζ[ĉ0,wpgufz%Gm. 7H[_$)& KIqYD.}LWWIV;ybQ>uؐ /--s-15ZN1QkD!-qwI| 3 ޢ -VH>Do¦C!p E!z1cYBx/QVȘ տT!A=P=_1U>HEhZY<"h !e_F y/:7dm-$D4xLW/p[[Y@3^)NcpZ!p3G]xiK?,WuҸ @̍T.m}#}1gp6eud:o>[H.}l l*=E,z-'~}M srOu"$Crr1c_UGxYCocqҼ~ۅ.}lQTp mo8VҢfS^?klړU'Ū}[ZБAha `wAJY 2p=jxkS>X6F5@''5(ШYqp KJۏ/A+.^ dbaEPkE[Z&bKh/]f({?CUv}9,5|9Eޣ*'b;kLZ 9pR1ˍ5^&;wCLA$qCWmƛ(=q-Z>;scQ\&~Z^rF$Er’ FjϪt/.ɦ L|Ҭ~| #p;wCH8W<[lN#jq(Kj# R d`Fs{EJw`fKS|:¡?kV S Hs1J8F@$Oe 4K(ޔhee77gd `Nᤰy=Ga*ESo~a'?h=^<:?ku :%]/f7cY7lXCvG%SmMAEh |F`lۅn}/DjMBi.']f߬;n^:?)rU-``YXA+V) v>0(e#PUI JX\AwB-VEpG@ hi8)17c E.z$K5 PB1kTah[5n|^4؏DQ4Wy,?H9W Y3=R0nۡ@)Nb5v妀s%\cd${Cs0XHgZ>;scb./[rM o ĹUe,]x5qe6v󾲡gůU}UPJ`8SB5f1`J(u,%HW)yǝ.ad'sC`%+!sH v;de@اoPc{GGuFƆ N{b;_2kRvxyijKq11m.@I }`W5?&ZNPcYpٓC=2 dt$*gZњy{OS;&)/br%r“ZoEuN )Y&AA} ^BY NPzkg X`3Fiѐi([,L]YAh3.Tǂق9-r y`,WoF|#;$i] ž^>|2rQfW_=h?-wqxH7 >3v}r1m|>Za}`OŖ֥t`uokV%Lhv#͉HJ3u=] ou-R?)1rLDҶ]SVSk">$ 9ӥ}7ugts&Ț\j=J";F `Ǚh|N((8((())$)<)F)`)r))))))))***&*5*E*T*e*y*******+++%+6+I%Error 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough corePermission deniedBad addressBlock device requiredMount device busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesNot a typewriterText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largePotential deadlockNo such minor device(null)p- #7 H)2$.3W/^p?Wt$;JyiN{'Yd}7ahPalv@cymQB+L]gaS=Ύ9$>YlOfdQQEh@j}q#\Lњ][A-V(>-">kƛT1nOQ.7*3¨uQӥ7GS P\HpNV@2D؀.p#H,}y1,-Cdr,WXjlcqN{)_87 !ޢ W}#KQ&9bmaaL]Fšų^&U`u1F$ws4( dpj=P`Sݫ̣;tٞ<:uL> r_8&N]ؑ6EM7_Ҭ#5gBPzWusҦ|ֺJyoPN!t9( qo/'_M}}gv$&59keVW(yyoeD1 k1?-XobyUdmMb }[g7rj/&p@(#)num.c 4.1 (Berkeley) 10/1/80r%[^ ]%6d %s @(#) Fortune Operating System Development Utilities Version 1.0Unknown error: -,-, 5@?@$@Y@ÈAׄCAy7FnM8O?ZwH01uOs:   @ O )N????@$@$@$@$ްZ>|U|>_gVuSGJ | S>Xټ2UϚdNEE)C(&( yX_#;G! q^23DR$´?%9LWesF){P'm:%25Ǘf.&/,W6m | nxIBnss_T\WWDK3{ k1m>޺@(\}` e~U:6'z7hkr>POmE$wEdtf+o;8"3g, cqEo-YG6oa7"2=Y qO0SG Y<p/ʵ;QccS;*h=1rOBeyrŸF M1i2AkM9,'tA 0AjxdS Tu@"6 hAH'ClkTf#[MRUu!CS4a[9F=AEI($rd]$ FZrn*9* mزΑBy6]- @Kd:]iZ|*gii,3>,lh$qiZE. *o2|3rKSuvZl8ϧ v>_! ~qY]uGX/a4 cCIҤq.@'P^i&>wHi`%P#ߘ]G/A1ڒM,L]s=znt,1[SY $ЭBi(ukN]D4fg{1?-Xob>v @ӥ%O{5^!hq mWF_>`LmC5KEdvjOo]C5;Fs? $brhl! lmLY=Gԏ$I؉9 #@*SMZ< 1\;)]ҼFй`ub57(P qlJ %*9)S$ /d5(1P4g[U oaXIa{ ^g qWWI=O,a891iw޲H)dÂ*c55V31\ qGv='d|AM ."+S;d]v^H; NI n:ZGԏ$I s;,S쮟WɗSd/XRwJ4f, 'DݒfB qp1fKg/U#,}; $d=JEPk{rl[ m1&bNws]#WW'EOwy9>l!@Y3=R oۥLj55w&u@4,<j/Cs0AJoMEir7ZP|;eWq=NrO?ګil o_[;UGmX+o3Ҩn? [DQ_:XSݸX/O2V(N''5((A1i'y8%}.\$dzi,z_¯[U \$G'.IHq_3k VRb'Wd.9au*͒M? ud1Qz7Y{t [u9%dQ~o+qSh+\nMY|5ۙ JUouKuY:A6EM7_|Zxڦ`WuugH`F`'=s((֍+ 54(B&S9R$J [/΁P[[OXC+WfYbpϝDRgM'3Αc!HuJ,a-,5̮6>{c,0Na!`[zqCEd_roM@)=<.BZ[\ ;_qbj[%#1]UoYX: IԏB'1A#Pz'x9uEXΈpw*clqo?HYp5nDA,ƿ_/v-dA =o{q[ybBW9Y}xvm{qXXgb_qg/7f}h!5U6=4z7hYҘ>`t.n_edpJM=>##[&/s]Oo%#"M!0]vyVsI BQ$NaqnPSW=C숗HHC_FE`!%]`Z\7&K0PM-%"ia\H7  W/KOAlL!hi^_3_NxRr1i~qsbU[}qgP50 n m\)aj1`i=GE&qn]!`6.&kCCAs+rK?0VNlj_8[;x,ྺ 1ѡ;i5#X orόK8F@$NK4.5O(Q +@, }wY"jT.X0ƥ_ xK9e(yioeD1HfxyuK89buް@-, wq5^&E\1ky7,a$wc=EwD5"Ra.&]Z="*^9J#5 3-Ub9[;Uwr?v B_Ҥg i5#Sg+u G Jy Rc6'=1(ߜYcR1,k+=GIX h,W)Pi{'  (ϟInGGv t_3DRcNyk?,9b5Ol>\@ہ!.}hOYwe:?u`wūov\^BDM $C=@"\3(!n.SV_'¡pݬQӶl[7lA!I6VM7ĽGލy"PdSup, _81uA[?UB6/gYډ^'Y k7-Uh^~S: 0i.w1 e( q6ѫdk ڈ9!/rv738H7zp){Q&O$bު^\SrW)'.l]y{|&;1gY\cOPx ?=Edtoo\D`SrK|;R=V]a?k}vY!_[;UGX7eY^Ye7G;L8XRVSb(@["i1 YWgYmb~ -I2TLU9/$ -u%rN{#0k1F/E`{],1R@)IL36O}58uavz a$}=,Z]ZQa`sl=ZOaRrޓUotj_[= =/I6 {'#<R$N-|Z(O >_YW|O&s@%"^r&ÛbF!S~gM,uB7ŠINgmYDPW_'Wjm,5c=}u0^xZXF= g;htI[C1EfRbo= &ZdBx;_qnM!RrޓUotj_[= 1o4Io5gPJkURVu#|ֺ/_4fDe9K(`חHOqXXgb;Z@ڎc}ta5h\uh*kg>x7j!=_jd`EM@;]dSuen=FrOJk} <{%kgEo ^gPOW~X]{NޒF`%K8 ?/=/vh47%"Li-jnyD,ЧNPd)K ,ɱ M;%^_D~^I.+7yDk/yb2[ް!Q))dGşť`&(ud矾t,evEiJo\&E7K~k3 &s獗%#b*Mc,jCn$Sil5-P(]yId0R D&EX\Vx<' {%,M(01uOs:   uSTu .'߅P[9_f[&opgێr"Mv%c >`Mg_?*aZm=s_0DZc`}EKX)8k2}&(iEih47%"Mq-ayd_.~_0Ť+; Ƕf慹U!^$TdSbVDk?|kjq޿q'g0R6*K$ow$,X =GDtnM> wkS&]O0"R;m[;Uw=koM7k-H^45}^S캧RKSU"E&A},7()qnbUM% .}9$sDId@[U] pE[O)ifkJINgk_91D>A8r3_k_cT)3CsRgp@ˁGdy5o:uiH-un:LPM6"9 IDP٧pu[n/H+N0hϙ}o1J8ұ, wO @Ib5-|rfv$̔$٧hPe<[  6qvU.Fz!Rb~pD-$L*O5Ż֙E`_jY,)pCN$MOR`S{sh _PkVrU_8&N]ؑضEͿ"^M aBfxSIٌ/Y4 5 -=C )_41M q{'dA$B?,?ʇ@ $vfU!^4ibվ}Df8buӖ0PƏ)OWLqཿ55@uMzER3dO^NLJ$q Z)%gMorH}[?֘0G 5+b߽Ui1JKU2E mYq"̡YCJ}ԨHJ`8SB!(NI&5 ]P$ EM&qp$% +!ЉB+k#y;g9RbwWK?e9ba;kBiL3ٔ=#} |ulkP>bcbۉCs0@j"M@)=Z4]"2uG=^]so۞A={'dbjl'{` lISns獿3%#b"Mi`MZLGW 9&ŜqѹY kѪeSgXȈ!S;))u`1QO^hPkv#mSiSN{b;_9DP/YB*%~Dw$byqU֠`N7JYT 鼀V`La,w (ZQ@d|m¼ɦ}W3(o¦rG$1lcA!qYe~R]V.6h"-@(c5:P~3Hq<.w'L _+9/_gMu9%$<$1{q#X_,au;Ė)"rXv>.`a!tlqElj$7.&+[u =_rO? }.!4A¦[;[f6$be̜^ѹY #ˍW;F'H2X'J4i.wG(ߘ]G/A1 bq9-~nlr,WPg[S D 9e ts4Y<)RixQ{x?#y_JZҸ@ۏ)UL*`O%}\ =1QztL$h=3EOj\o?."]K{\-rK%(rƳx%aIiIݻr ]kBPuE7DBvNҸ&h8&וo yAGeMӎB"}O d=tWW$6a[S di}čI.S Yj~eWS,5d?#y_JZ)ULW¡6budgvYLi_sBqg@*$EOo`pmct&?=^p%%r»8G[hE[uY]Ir%M3:Ҩn? [DPus‰LZw!g|Oe5K#usr/binshl 5$Ҹ@۬c4;[0@SҎ?K'^'3>O{H5L&;مt2nqDM-ujC;k Q;MEms=S)C-YLajC6]G dpaGM!%]S0h&AG=Yy?kyUoc[;U,=;M7_|ҨU #[DžuX( 1S'/Y,MO.wi Kff:A1d'1,.}wg/ԉ*$' WA7[[_E uF BNN{oTDP/YWWIX@D?-X:;kޮK)I.LvO{H5L&;مtX( 1!S'/Y MO;()i&(Z#$ D EM&qp$% +!ЉB+k#y;g9:RbwWK?e9ba;kDiL3ٔ;} tqkR>lL`$qCa(jLaj >MKeƶH_OTZf=M"Sq `=^]sQrΓUoUC?l5Ahf b4IJҤ]#p}t&pаHX+U<"$jiBk+&uAPM,k4b$ aWy[_ aW!s E#N{ UsvV\1o}f]yxR-aQ_ykްA!.WL]\M1e`!u`Pk8" 44LaHlAG  oA҄^ YC ˍu ނ/?vF`-3el[3&qA_-&ļ_` }FO`߉Tb!W`W[_E yuF \AHަ; HRbW'O,v;3;kH shAo556ubNkRq+\A$qc[cEdtjn]o2.&]ckS;&,>bk%#"T@! j_A2 gqڈvGY 7U^<h ~sJ)n:bNCZ˾,GjA0<%"}5r$gt V~[_(K AuF ޅGRnB _3}6jWW'@[q99ª1m9-]0`^hl]}Hn:_jvH2LaH&-Ǖ$@BMO.&}ck9/ޢ–3R!1UYN q]+|+Pz+AE+bp/4(So:bNAKd1v14 1Pm}+$d,hP$DR՘>ydNwp~A*z"WWy[,`qY.Α1݊*)?ZQUlUzB]T YlOۉ(}Ǻ\ݹ qm 5žˆ8.@r R{Y4][i+xM39 yf#p˂,_YWc! JuF #aU)rZ!_;Ja WWI D)q{Ν5U^޼@ۡ)!f}b#550\D+8l!lيE`jc7u0drd|;&AG| vrM.[mW^MMc$>^1#Px+Zw 1eVO[bk.iF&/_(aOJ.o?*Ƕ*bas[W!{ Ds IFV!R_34x42bWQTKv#b1m;k?N+!,LHC55Z5.BFCH>nJlfB=Ond MMo;o#S3bAѯ%# <{&h`_uei6M?>ҪN?m{cWu‰HsNީ*:1iwn#G((\Oݒ!A,%O9!^DD=^<+ 8B!lAu아"1I M:9@`Y3lP~W4S$L XsF6F`I7CL((%ql7f'7,k7*> VdLWPfs2_Pau=/j!^83D1oVbYy?%=uWgu! ۡ!)}lg50So]כgLo4\ Fu jjjcE H\x;=3E3%0“]/]A[IeE}YҬt|i$#RSWuSd.X/J!kI`^&5O()HhWX_,M}!5 TyWǬ7e[+ i( i M`e6Vr`WVyk1v9+j7s_'}F}`5\0&u`WUhcvDr?ە ?sE$}'HocSp>¡pݿ >, _8uA[?UB6/gYډ^'Y k7-Ch^~S: 0i.w1e( q6ѫdk ڈ9!/rv737zp){Q&O$bުY\Sr)'.lLy{|&;1gYYcOPx ?=Edtoo\D`SrK|;R=V]a?kkvY!_[;UGX7eY^Ye7G;L8XRVSb(@["i1F){P'm:%25Ǘf.&/,W6m | nxIBnss_T\WWDK3{ k1m>޺@(Oj}` e~U:6'z7hkr>POmE$wEdtf+o;8"3g,_f[&opgێrҮMv%c=G6oa7"2=Y qO0SG Y<p/ʵ`bat$wEd$@6.&r,Sj[&w9=B' {EuE[h%ך4 |8$ٻY #=%]̢f?(zP<"JnF4'7(، qA/'I7PObm %9-rdrf^7[W$; J̍g MZV ?DџVWPK?_,Veu ݡ%@]l%5{^&;qw>Lm$qC)DfjMH]C4;*7=\rO?%3brp! jE5uJImM?1r'Y#1?uSg /&XD<[.wN )܈EW%._!\K:9Ea5BwǐPc +mOd$nU!V0dRjJ+?!6b3?uӜ7 ١!'LMHWr50&W\vѠ>hLmۏCKeKtMO{>##Y(QߌrUku䞖x]yI ´~R [CPx9uEM`8BмF`F4om(ClkTf#[MRUu!CS4a[9Mm=AEI($rd]$ FZrn*9* mزΑBy6]- @Kd:]iZ|*gii,3>,`{t [u9%dQ~o+qSh+\nMY|5ۙ JUo uKuY:A6EM7_|PTڦ`WuugH`F`'=ǣ((֍+ 54(B&S9R$J[/΁P[[OXC+WfYbpYDRgM'3Αc!HuJ,a-,5̮6>{c,0Na!`[zqCEd_roM@)=<.BZ[J ;_qbj[%#1]Uo YX: IԏT'1A#Pz'x9  _-Y/''2A B<9%znv>f5,uĖPc[[  +Gy'iNu1v\X H1NRbzػlƪfΑq-^[^[3>O{H{b_m< lfK=JED mo<j]dG;&/=Pbgm]!jαuV(ciXk}$^Y aE7%wyu[ԏHx']R!1`i7%NA y/lNELU!.v;J[bWAW1/&eIN{_?Dv7Uw ?-XLb_{g7G7d}h5rd@ul3vmLeCo%Udj`lN>u79[ w1REDt굊A%TA˚6EVasci P}W?MH 8F!+(Ni(YOzs8ǁ7(coPm}wQ" 7$1Ť+; ǖ[mfZmD.WWL{?-Xb(3U@݁~LOH}0 W'u`kUI>JaێCR?GGdtI[bL1`lE!cuhs+<:?kV BUoAy!q[; Py6EM7Aҧn. #Ig+u Q Jy Rc6'=1(ߜYcR1,k+7kIX=h,W)Pij  9WInGGv\@ہ!.}hOYwe:u`wūov\^BDM $C=@"\3(!n.SV_'¡pݬQӶl[7lA'!I6VM7Ľvލy"PdSup<`xJvn5`ιS Yp5nDA,ƿ_/v-d A =o{q[ybBW9g_}xvm{qXXgb_{g/7f}h!5U6=4z7hY>`t.n_edpJM=>##[&/s]O+%#"M!0]vyVsI BQ$NaqnPSW=C숗HHC_FE`!%]`Z\7&K0PM*%"ia\H7  W/KOAlL!hi^_3_NxRr1i~qsbUh'}qgP50 ]^g\)aj1`i=GE&Bon]!`#.&kCCAs+rK?0C2lj_8[;x, 1ѡ;i5#Nu orόK8F@$NK4.5O(ӒMWgYmb~ -I2TLU9/$ -u%rN{#0k11F/E`{],1R@)IL36O}58uavzLm_CQ)dtjMZRlfmb}FG_rsǣpB.nZymԏ}6 ob7:qEY BP;1~  X3[I.Q@C/q@1?M.Tmb!9-5r T%d7G$ -IwL E"!^vb(} KF]o],UА@ǡ)IL36O}54&SN=hiX v"l2 dx&L!K`pmDS+1rC?%"cAh-])Ixo2E%'&#\WѬ J 8ItFOE0Ad7˸]ion 1.0   Unknown error: ))%&p&x&&&&&&&' ''(':'J'\'h'~'''''''(((&(5(D(\(i((((((%Error 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough corePermission deniedBad addressBlock device requiredMount device busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInva$E41M'Pq%#S95.\$d:,Pk[_Gq#FĭINcppD1}LW_(WD) yz1m_;ްb ys5&S\؂v[̘>`Lnn=EgedM'_N;&PVr_?_r;cUԝŹ.+01G"^( )PǨw\H\s\oJ"EF}!=,7()qi^QM,Dm.}=S˔ WnysؚdNq(Šiay ^65qo}buyε3/uTQPOL}n UhgUf+k,<μ11 ]I.8=Mc./$uSZ֙&Y_9%+>  Q!KԜݹdŘ EY.z?w9uR&ځoJ<ŐZ 5,8()qinM,#(S>qlnv[oPk6[iʯBI~{94OBM}W'yl?$>+m3`WcO{HmS0 WNhkz5,$>pIgcetD:j3urʢ [&oq9[C# RƒzAjV_NIj7km2d' .p=U>><8PNX3] @(C))=>#'y͕%2Z'CZd5ok^DisY)xU1`[CUKT,^ε_Ju@ۑKyO{=0Au`j~#YdD`4x$=Mdwb>-:KC&9K>5.ră[fmLV<(i2 M8ҢV(R> +PWu @JQ?.F8Fΐi4,O) {E'wL܋B&9%zoyd,ѧ?pk+^)6=i^rFD>"7yEqX?c-;޴@).3ZŞtd:1L#>d!usDǔtj`S]SqcyrG7cR o_j_ {/+iy M77^"Y{WXiHrwJRo֕:Dr#(($ p. LdT5?}qr(3d1}+dG^Շ.nA|YD^ wP,< Qe eږ0PƏ)OW,]g_S&y#Li$y#@P4o<|N.h:nYG~Y\OzҟG/M依/CoA?ҏ^Ԋ>'#P1h ~/8v9F.w9 N (oKp"_J$b9/n?hXz +w(iṳ."m޶]dn(xwCv-31esU!DuQy'׼%%Ztbjsov,,tμH}~= eo2bkSu&AGs| "BB;! EuE[AhI gwIJҤ Y CZ#S 8D͞f1PN'oFkKf &_A1iڼR1,kt}qzn@W,ԗz?bi.ƪ4@򦊙NwmZm#4#Y@(#)strings.c 4.1 (Berkeley) 10/1/80Standard inputUsage: strings [ -a ] [ -o ] [ -# ] [ file ... ] r%7D %s @(#) Fortune Operating System Development Utilities Verslid argumentFile table overflowToo many open filesNot a typewriterText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largePotential deadlockNo such minor device(null)5@ O )N????@$@$@$@$?@$@Y@ÈAׄCAy7FnM8O?ZwH01uOs: 8HS;O _WuERΈpw*clqo?Hϝ^(1r_/\ъ qY`La($=GI(jOcZ>;Qcc+&tA1i bU E8sr&Ddh/f>c[;UwiC^ *P-7Z,[H8_\Fօ0A#ͺ_'K֠[M e-,b%sqH}1 W1&iKfIN{>_?*T.}LWWIR_-T14<ΠO(S`O9vS&Ύ3vǀEXPlODE=GE6SM@)=..1rKSh '&rO?ߌrΓY/j_~_T ԏTgŲʦ ܈03;N|XWY0LDM&&G((/M\'1t[4ƋR@hRKxkzPk[_$)&+VuF YS.{cF_D4bW4 TDKw@ 1n_J" @Wd悐[UR'셺kl@ C=EKHMo=qdsiG=^<- ~B!*PY]GXi)IԏC\#˧}qS!`wσ]YF|Osb5FA.j07_ ,mNqx$m4e4cC`E`iIF MN{ 'q"Bm-u8DwWƹ@ dNSp*pzDYduDOZ7EN8-#o"b[Yu?¢<Q rʓo-vK?]\/X+i9gY 6Euy\fpJȘ)lۋ:yhYC.8 4 EM&qp$% +!ЉB+k#y;g92RbwWK?e9ba;kPiL3ٔ,} | Irk^$qCh8xbQ_J@j֌@WM`O9qS t05k8"G20+snCGj*DTCo?n~+K@ rO?k~lU`([V;JGp- cҤUEts=~}_5tX/YJ5FNi' xx q''ܴe;5](mL}O md3|WqiSPkC{ +U&Ifq;9j@ )fu=6k Wq>ϊ.@ۡ)I.!qμIq58$lw[)Xb$qCs0I: M@;ZeJ>;F_q=^]sẃ#1\9CEPLUWw?s.Np#]ZfG@ >Z f)aTHdl/_#,7 ,2(EsB,+]\~'WmiFr' #.q3 1VVI[9^1mU`@'Z]:{5^!hl7k\⛝Laj 6 Roti MO{<6-GC\\&/=_`g" 8דo-kwINF% h_^'_ ~+W;HN|+]_۫p{ =ޱCd/oB&L C칥9mO(N_GPkq1[GFƟxIo,D4r 7W/)8KP9!p?=0POW\N}qU>&yVӔ>`@CC=Z#dth-Eo X|}-aS=< =\z_BVpFi:e (9Hǁ2zf0ݷMb}qź[9XKfkD|i@3df!NG*T D?-Xoby_@-+9aYb`1;WkvRt̠l1s i,4Z#̧4\ G[}-Yc4Xm!5[@{SY5#fAM ` X/BF$J9(8)1I,b#_ W%mv ݨi;_I)57ΊYisD1Wf'~Tkq11m1 @(AB}`O :o+>[q|$qcP+,zm'".&]C` n]B:?  BZ][=,[m_^ZJ+'19*Y Dx.Z,jDHJVl.CO2~z]ToWeʲc5t->I#BӅSW}Q̷;SD䚼V(Itn[#MOO1dV#ߘ]G/A1º9%SD9.Yn ߨA/5[_EGGdyf!NG6_;+WS'@==)̝1mYްb!S`-65lb%N!rΓX!wKi#I kI7ҤC#{S1?uS%#>Ѭ"H!CE`o@( "1,v'ıJz11$%,WA7qE}[]8ndsx ia{%^pD(y(K?-1a^%@߭kQ"S5&}M3t>lLA$=;k%dpJO.&]hA=^uު@ۡ!(L3q5h;>1Q=ofk=)E%jiՑN&=_d_? @m3댫:mio/P6UA:,%I6 젨&'>{|W7u=_'.胦]_@ j`eZ{(5Kǁ7(0'} RHt9-.NJ(d[9X7x;!V@3 Mb{!nVu/Bw;RbWW K?,VQu޹@icE5{e?)Yu`U;qc'=^~ϒ?%F\pU-jGuYhIkMsL9 UDP_[SHVXpJqqT'> MZwҨ^'e9 #P~TW8 h3;M8m׳Oi`_&q9r'U4:&19&$,opEkGGFƟxIo$D4bOWWK?/9W7uް@ہ`"}d 5;&EM}hov|LaMi9jdzz]'\&GKS@=3E3%=߻c.!.;[mAP紻M7;n\6P^/uS qi;S=$I.w'LG'F)3'}K$!{1g:$ z,,yW@FCG+i%̊0M\W#}OWWIW?!&b3vu^޸v_);}l$0h;>1Q=oYh]C=KodtB-_8zke=NrO3 pB A`_uY# Ab w^v'#\NK?}/t(<"Jy '7^(U^ E5.s'L, }wQ>`J aW[_$)&VI`{qs)To}eNyF?%9bA|o7nێ+jc?O{H &u`<iH^bcO q ?='EJt: %P.]R4q:']JrCM)6`ʓY!qKWu5=yQCEM7_Ҭq<g#=NHx*b8F1'DJKf_.I=~zʭRBE6,Wbfʶ{UP$*eUcrq>~bDP+^j3C]U')I.R^[5pX<v`]BwjۅL='KHrSMo]o0>Y}w)<~׋F qKA_zq$akϯkf8f L,Pw9R% @0ZbF56e6#((Gfڴ1\O,%"qCb nhs,7CAxi`P<:IN{b;^ HRbyWWDu\m_JZ@ێ+_L$`.9ZvVdEYq>hV$qmm)dvjuo=.H\UKS&AGmk #ܼRLj_l:AhIV c7AJv m{WuH u-gH<OiF2'qrc)f Ko}9Aaf$ hKW0m[S EB$eI8wN{op .RnqK?-[1au׹p~+wh?O{5 &;ZcFFZ|-$R;&S^\w% 2 =SN*jP[V$;,¹A} _^4x|#fAgl XB|Fſ2'D9fYڥ,/Pc,k#m~$Ƕ*bav iIPyi(kd 1 W_(WD) yn1m_;ދp)InLXN5^&E\1kS\LajCDudt$jMJU]ZS&AGsk=Q":! \M%cxy)CEM7_|G`ڦl#WuuuHX/36G5`I&n(( _O,%"}%7d5 Z 9!F=TiuIdA|wfD5هHP؍6>|Eh^f=SةJA΢=hv[0>`La(C=qPbJLoΦ]hcGD&AGeV crCơ֡[UYX!,Ahf ewIJ$~'7w |[/x.Jf@<ͅSoso= Obk|}wO$=ri;X}ϐPg; L=@3ȳf]!^G)MrLWS'@`*$i."nUD"S1o."c[3~s|n2:%'ތr1|Yʿ&x]Gԏ$^Ł##5Nw9us $Hs_ʚh&@''5(߅Y*§3b}wXr9XlQ%,5k[_+,*C1mu|NjbqsgRf2}j93Q_-\L^s`#g&;1vp$qy2WG$uo\S &A=^W?ku :%U =DL[ux+ :)M3}% Y#<͓WE=II.v0:bNk#W )A|'X'}ݐ.~$=C4@9   HF v{if8RnWV \K=^y31m%^qpؑ+O,5 8qJ#$dzEjz >`Nᤰy=Ga*E]o~a'?h=^<:?ku :%]/D5Mu%vI}5Ӹ IP/gR Q|ꈷwE' .˾uU@N!j$}V\N)]2 -ók5Y ΠnFXSU-f`if5ئYAg~M܋5 }-ZEʔuW7}pn iIJ)Nk!^y$UYbyD-E<"0me`ۡLg5fUee(lwpj(dtf=qoPC0}ʹONPJoh10lc,A7jqV<@N%im7"t( Y!Pu7^USɘ E ]S7d,5  (4CV#K_H!Ca/:KC&9K>5(rƃYfoLV<hI8M0"9I+pLWu@JQ?.D8FȐi4,O) }E%wL܋B&|9'fv$ʔ$٧h.Pc[WzmFvvyO{^d2dɘcW['MBXLdm;(}fNűų^&uh8Ya$uƬ o@R"c(֙oK?kV <]kD}Gu8iCEM7_|G`ڦp"WuugHXVUFּ6\57#oryInvalid argumentFile table overflowToo many open filesNot a typewriterText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largePotential deadlockNo such minor device(null)U@ O )N????@$@$@$@$?@$@Y@ÈAׄCAy7FnM8O?ZwH01uOs:Mi3y<u|@PSp0',9<*=^rNuI pBUn>M[;UTe5r q` qStw؛pLa1aޤGED#jM]=2Sfl )Dw%bg}wXrjǕm]W4s?JPk[S!{ ,^I.yQ_8 HVRb[B_tK?-9L0_Ju@ۏ)W+75_5t}h\Zgi.B^`L(d [E"u b@\..T K}k3* c=\rO%#0!b>c[;UwEWgбlb0|ҤPa jW|S  t8Hi`iɼQ(ӱ,CCA0/Pc,k0K CWLWɀZ_ yief.Nw!\?5D8rn71?-XobQYj@@N}`O =&ue`iid|LajC G Qdt~sM_)`]_kqF rE= M:jM[ lPIf6M1~) z N-Z:5NXZY?<PiFuX(GAk`3'1,1~ rjpUWAwD[_EG K$b!V&_3qNV>f'Vg{1?-X48Y$6|WL[\35&QJvYo$qC= EGjMO.&]hcw\lIpTͫ%+ j RM[}%E)#M49Fbswŝq,pS|eM(Kh2's,%#dXW,NYs[_EQ#L Iq$D>vq(yKmNa -'E;'n%R5\0&u`:_kV4hg edujmOGN&Cku`1E-R%#RkM_l3]{h _.^'_ą}y,{ kDmSe, 'D͒f` EM&qp$% +!ЉB+k#y;g9RbwWK?e9ba;kBiL3ٔ<{} `Udc%5fLmO٢EdtEmq=.*]o9TAE~=^]s;шr“Uo[ZA IȏS`d/Ҭ #8ojtS g`G?F<"$9g6i5Wb_$)P',%"}wY&$73tv}os0i=AjIJ fF_3kF}^upKF1mZDۈ L365@K?5F31q|NE$qhe;e*$M!\D'4SN hDs%|weJ!K`B)7H ?~0r_%+"rGrn1 _'Ax.IckM7_|+]w /EHԅW?50Q$ X)U+`Ɩ8>fߢ qp1bKg'[q% P9%$ba6 pFX))y' #+jdwsDA5z`l1a?z!Dunc,%$2~KWEcfۅK[k@!3(ߘ!n/@r=^R3 >, j_8[;:f\^ mP˅bZ>S5HX'8d<"$9t6i5>f(Gv"1IC%*9!@$'6L7IT= 0EQ{ĭɰi0"y>o}bD+yDl~)*]7__LquaSgQ6&yu2vl+Q$[S (dtnao%C]K|U&s]J%#"M wC=lT#I!KhҔ^ UEP=[74(Xyb6`''1(Y\W&K0'{%UB$N]<{GNSE{Y# uZKN{-s_|*b^0W\H?i9̊VmyR@) +}55i5&-`shkvH?lL$qC>ZGI(tj#o":K_`:0&>^O?)$rU-j?t.6o*ҤRkYq!<0SG mH?@J޼!`eo?3(YK[I2#5,1 x H@[_eckx?8kAY(TF'eofn3C]eR'(Z}`Oe~SvZU4zF_ƯE,4mγ#n)YeGm-@I3_j]*]x=ZrOHDx_.4W9E 0A 1Šr ӪD|xh/Y U`Δ:h5#(Gv"kL/U#,-{9!s$md,'Fi0k[Y8o^dIh IN{oLUD54JW[}L=7po1o 0@էOWl}`G5pF&uhsi6YS$qlZ3Edt$*i& :K3K&/^vO7 bەi>Mu(%QI> 128'#6Wu[яHEZ)FFP`–6h5OԨaQ U#bk|}wO$-u1Wz[_8newބgINwޱW""5Dg"C31f> !O'n5?媢>kfH!calCs0Or Mox9n.*lKx;5srK2%$a8! Iu/M* AuҮ^ Ye_WZ$X/_<"$jBV&5(֬iqCwJ(%*}9-B6dKW GTkQk !\}#g/Nw!Z?3DQRn7+~@k-~j^oܡ'n5?媢UTԅud>k$uCZKE MO;"bKYu/ª<ſmXY,jͪu'/# M79\HY L~|[uc J Xw)U:Z!fC#* WGyDiZ63_;ްby!qK#&EM}h;w6M*)$| ?uEJt2M8ZfZdZ;lWqCM<-rϓ],j_~B%K2 cM?Sh,\Yo,pz+w;e ޺wݬ?_$0i.wG(ToyLKS+%"!CfnU7ut~R}'P0kA;qbkI@yaWZ;_7DP/'*EWCyfuFfΕa.!Dli,}P%grHucؗ>Nۅrɗ*p3o%|2%fIJّb¢R!1>mk/lwIA]%$b#ҤNu#Pz/zW?p p#LS7$ JkItț#vx-$:zDOk)DGydN{bYkbDM+ bQ>u /a-s5UNPvHnLQ$ql)IMEJ$@.&[c,S;F>wpI=ێ^ ļy~I[;Ua$I,[cw9/x>(MEN=YحFZ/`T6!FiF;8 q3F'18,k+0IT,W)P[1&[$I!V_3DjҖRvWC/>'q=L1@Bsu¾nq'@] E55C6lb&{c,0NLqC1 SE =M"_SpWa\P%j;["jEɖ|u,)ivOoU=^?&A#/Ws; Hj|XF=OiF=)$1AP9%"i.N`lۅn}/DjMBi.']f߬;n^:?)rU-``YXA+V) v>0(e#PI JX\AwB-VEpG@ Y7c E.z$K5 PB1kTah[5n|^4؏DQ4Wy,?H9W Y3=R0nۡ@)Nb5v妀s%\cd${Cs0P$HgZ>;scb./[rM o ĹUe,]x5qe6v󾲡gůU}UPJ`8SB5f1`J(u,%HW)yǝ.ad'sC`%+!sH v;de@اoPc{GGuFƆ #-(\Ok.RnqKF1euT)k*}`Ywq8peuh`2m|r 2 dt$M@;`l@ u&A ^:7M"V! !OGSVwCmDҨ͖xW@(#)unexpand.c 4.1 (Berkeley) 10/1/80-ausage: unexpand [ -a ] file ... r%s@(#) Fortune Operating System Development Utilities Version 1.0Unknown error: - - dnUApv)0!lod,9`)LI1Nt(M6Od;9aq41'L] Kg]%n%=sVYH$q(mEj}#\L] wyS-Yy6EnҤ^zfWs|wZN`|ac4D+zgO:c]껤3˼&RJ?㮰.lcq Ku8oSVi⤮u uӂQuG8_s!ͺfJ3+F@;L3(Gc !,)!9=CIq.4;PJ;@FF h )jo3E>"wW&a*l+e$rCEM+ Eou.']S3hsrG7L> rc2!!!M[U/ѹ~M;1­B(b|#pub;ec{X. "S`5f54@ O )N????@$@$@$@$?@$@Y@ÈAׄCAy7FnM8O?ZwH01uOs:   Oy8)1b?64XH)[ߏokT/ _#~z1Jmd&\ǁ7(_,MY-r49CF:dWA7q^ ##Y(=^E%/aȓY!!ha7lA %TA˚6EVa ) suCrjB|S3X/e9J'oFkKff~ǖPֈ#0E,};f"%ls,GPku_S D@3ȳfC!^^:rZO0[tLd?-X2EްB[-L?$O7wIj UgzB_h8p7) Qe{uldvjME{Z=iSEC,]^0,$=r“Y-jtiI4{a7SER1?9"tPx9uEE0vpJ< `fiF%s(&sT"ѕ#5LU }I,z .*$ Y-YjN:MMd29`iZްb )S`MXR?&;ZFqgvN^zSHZX/ȶF`*IX !`D 0 EM&qp$% +!ЉB+k#y;g9RbwWK?e9ba;kA+iL3ٔ8?} lmdk^fLc$q%=KedpBM@)ZF]o1@)=^]sr¼Wyj_tu+}IԏlMA v5 PwWuE7DX<"+a1>f(GrfD/M, Od$iP<ȳfLw!^4erw.,K?-Nr;k?F'\IL3ٔ8? ul_Yt>`?t ?sɉE$m' roR;& 'rKW%#ŁhY[;UaI!*9Ҥq.x(vPu|i;XG`Laj : F**kM!``Fm7P ?~0rG%7>m! q YuF@i2YCO[^Y9#\Cs}ROڧ SE-f`I4m#)941M qrd )$md_.$10' iq@3iNsO 1V2pdDP?-X6w=&U޵H'R/%5̠6T3Fp>LaH){E*4jM ~ iS;h-=OBs?kcr̓U!3A;(.iCM1!Ҥ A)#`/uK!hXx@>tۄ(K((A^g',J"%}xrȦEba6 3GJuFƆ yN{ooDPoJjWR7EDi?-1fQ;+ްXӡ)It5G6ulsisvHv $qwHDuTv"-'U̦"I#QaCfp=_~Ι%#̌l!j5MZ@ԹQɴg1ǜ^ |#Euwn s-׉9(![ڷ j$E41M qrdSO$d_|W9c0i*EK J?y' faUUWZ!_;\֍ u9^1aeu޸o)I.ReXC5{^&;r&d$ye=E@<)I+r:QO5;#NZzLJmp0:m`A1GZіi i, 5&>TSqB,F2C*VjZ))\k%.+Pc,k;! @dMKzhʲ{q_,euy4c.p %lΙ[s&g}&9.c"Y||0h`H+lmsqgLdt$M!C KSR=N]a3 <{/buZA Ih[`_j^'_Bąy.U>qxHNXT%E@F4'53l qA/'_,MuS줃d8 Mvz[S+;!)h$b.ަ~2|Dkq4="av%"!@ uzkVƎ%P-rX ˊ/vnl%l}\dt$*aim.& noª]a?ZPƾqY?BzhmmcCM7_|+XVΚ,'.* B@FKD:F4e+e(PHI/, Y- .Kba6  pEvےia y4pZ!gB֍u*d_-̀}ER)I.p u`Ԁv>lT>zn'#\Z!K`Fm7P 7VrOQbrʵ;! ]=lA8SFeBkJ8'a mM;F^2޷p`hAB)FB([j_d7hgb7i̐#rju*$[!nz͐hks1 /eЉoi^ZmDP/_*k}1Qow ?ϒ^`^'3>O{H{Vn2Ghv>l,uf$'UZ%8 ko@N.] sVZCs?kV <{,ϙgE(c6*;Ҧ^`Y#ί_:rS 8wY/;MRF1:`Ft4#`AA{(},%"AWx$zK X,؇?_,zkKBYAlLu 3 I U BYD^1WnG}qQMu:L}`-c%W脫>Y`a$AEQYwE6 >fNs&~Z^r*o'_ ~BU!Nv[ylQJr MvҤRuYE#\WBySdQH?/ʵ.ްb~L}`'oU = hogX-$^i¦:! mM ]ƼA!j_yoY-dИ[c*3=҉J'u'7>>W's\X鈧+y!`-#fHՀCo#zIv?DG.87WrSE#Ym[(dkI@yaWZ;_7DP/'*HFWCyfuFfΕa.!L` d!! d'΅kaZ,40uл+Z7j3]__G[yލ c ]{!ej[;UwO M7>^v:PZ, HEx8JxFE0Ai*5w<E$qN-K%>!{.3|B76NPkk_r)F5 vUYd{^vDbWXx2km ΁7| 9!}/2US]u`k#?`>4^iod}-ԟ'`kN!| =^<;1PjYuVx/y*!yՀ DѸ.u7!u3snkHJrh/7JŐ_"5,L(&( x@8w!b ].łm $(4B0t#)>Ti*(}T1|K_< U@e㸽)5$&U-xav,VGsOoEDZ(_\.@KhB=^<:>|rƒ]fkLV<YhI?Hu'7dI.w'L)`%I}nR%*{%j$e1,zr6Pk{1$_yIN{ "|_2D36RcdDP?-1MyU^*JU5uhF<oY,cq4+uj>.c[}s|/5NR%! ~Es!/quV3oY1wF"^;(c9:@=|fNq-Z޻ S`eo=.(" qp__,M*TuM9-ar0횛suwotK  JiˆIaqG9Ϲ-~F1Wdފ胄1VsY7u^a#-cO{H &u`F35pLaj 0GʺTd|@Mg8u.*]K&MIE# z! VqW[uYW^K> MZwҨ^+61We=4$H3sJ4mi=K#0+aFwC%"}wY-lr,7pWt_ +D{^ _3DjVRnW_,K3z3Β޼@ˡ)+}l%7U&u /3G N4aCy=C@!K`Fm7\?r=prO?br;DuuAhI M79^qg>/0U>SѻHv|7G,f۝`i [{XgQP#7,)i9(n_Arnp ;$aC1#ndDj+!o }c[ss|t5-rK53:1YuxGQY C/!BQ¹Fm{CW&s'$n g77d8f2by `_5oǁ7(f- M SB P9-,B vh`aCE .AG.''!s;u!,À.n٤wly+IgM7E v #\Y|  vSʜbF.iFcK`8(!MoK a}9!E$C C=KL(2%eZ_/DP4oWODc8b1eUsu_%%L`qp5&`=iZ,al1e=&Ƨ(hOQ]G"?;X=^p?܀]!eA6xVc޶ M+]L _w9W>wHX;{J|+ZK`) Mm(0𦀲+Z|5mr$ u.XxqGhU ,T&dŠNwmZmDP}^xyxjK-L1}>uސ @ӻUL5{^dBu`PYNLm _CG pMo\g`x]6rnNBbB>%# Ti!1u"I Y1-\Nal<}Wu_SHu?RU`UL;(Dp qcF='KZK$3 .&w,d&QߕRij{F6YBN5w)8AiCkҤR'Yӻ?Ņ6XpdۘJX\/w8FJUL(@ÈAׄCAy7FnM8O?ZwH01uOs:    v.[;Mqc wR@|#|E";!\[_ o*u'$H,!V d2:[mԶ>h _3Xf3$qz 9-i=8Nr\M+5Kǁ7(0'} RHt9-.NJ(d[9E7x;!V@3 Mb{!nVu/Bw;RbWW K?,VQu޹@icE5{e?4u`U;qcMi'=^~ϒ?%F\pU-jGuThIkMsL9 UDP_[SHVXpJ~bDP+^j3C]U')I.Rr[5pX<vY`]Bwgd C#c=E6j qo2?*&kK_N_&[^rGU^rƼU GYu],Ef{?Ő1^؉9 #X>W]}QHXq|lFi' ,҄ q''(JG,%&!Y-z$mDduW/4C' /%!'YiZ!p3@֍WW-Hoa2p1i޼@_gL]Ny{ph\;38HvLiC GG(hjMo:H|KS;hrK{ #YY,j_uhWTic>ҪN?m{WuXHc?#j>6d+"N8>f(G{kL'U1L:bqxf$R?<,Wwp뤣!{GJ7uF \Mަ>:bOWWJ?+*1`_J=@ۏ)_LmM}q{e?"u`:'g6M+m$|CG jۅR='KHrSMo]o)>Y}w)<~׋F qKA_zq$akϯkf8f L,Pw9R% @0ZbF56e6#(oso= Obk|}wO$ Ia+/6s  +U(?nIjq;?9DP/Y]#1?-X45s?y.ްd' clO{HmS78>`j'iOEdNftd3:sye%s+<?kZvۂ=Mu3ECmU miҤq.y:PS(2w/J|Eh^f=SةJA΢=hv[>`La(C=ZbJLoΦ]hcG$&AGeb c0rCơ֡[UYX Ahf ewIJ$~'7w |[/x.Jf@ S!_ҧ_E"9*'N6P }kp8[+ i"3IrmZƠ HPRbI/DG?%uު@ۡ!(L3$5h;>1Q=rfk=)E%jiՑN&=_d_? @m3댫:mio/P6UA:9I6 젨&'>{|W7u=_'.胦]_@ j`eZ{()#41M q{SdS +$du,GGگ>$ diX<Ncp_DL:BO+?56m;uҌT }pb99rv^&u`%H.}l l*=E,z-'Z>;}cL;6ub_)m!VHiUYZ0\Vg !BQҼ~< ye#G=|](x8JFk0A#%(vx-$tV+FPo*/ 4UuFIN{!ZYg1PRb'E1oZ-Xy1iVn^hL3O{w\%;3VLWMCspGTdgZM!?]os[&%prN;%+6B{nA1my=IvgYjMk`gS7!w}7wZsa a$y=G,dxHMj]KSWnM \ :T!=3٤wly+.6j7n!7Re [ ¯jxfDS\*4诇Ⱦ< E`iD>f(G'A7O# YM%.|5mj$C,cOg?`hk]CUiL)T3KLޡYD>RbUׇK-29iuh0Tkq]b55^&;67cRN|cfqJ ꦷ"ܽ“lg]|u&A ^:7 "VŸ! jLOW?Tv.-7Y^.:\=RR,D X,[f&j?ȳf\!^ 0VVWgyjemDQEYse @.o59\wp&u`:4FvY $A$weDs m]#\L] wyS-Yіih a_^v'#=x9u|gJs$F.iF,ͫ}OD'Yq>%9$̔8,r NdIN4!^y_#D3R,w9EK^b@1mި`Q.'}h*OE1T񊘇:H˔v:! q=G%`NG_&M˻s!=^?Ɠ]o![N10MVؑ2Ah-31–$~u lpSW;|HN|蒜C`CtP,2( [D@2_K B29yD&LV0E[_\`F ge (վ{#27Sv˻^b@1mҾ-/50R6 UNF̗Gim$qsGԔ4k:8&]˻S˻F=QN%&h.Sbնy,-^ n ouVOC h&&MuʐϹ(02/A1i ]cC~}5$m 54bP{ iBIJvs)N{Az/.rbGx9Dh<9pL}nߚA[SeݚJ)H= 8& ~r_QF)$c!~;G?Q7M yҰ~| EPz o0XʌU_C|`r*5d1 (null)/etc/passwdv͏A1M q{Sd )$mdz,:\p[[Y ,y_)N{oLGc)0QJW]y-\z3f1eq7RZM:{5^!hq~7c\6M+g$}C=jEdyj=b N&]C5; o9^rO?kvn] AweWu_y/; ]v$^ލP|Wu}3"H7 ;N`F&o;((G} #@LU#}.r K<yGGkA  ەb!Z 3i4tW[iDCX#533quސ@`K7\&u`-E3\p>Laj 9D@HZWMoH]c3$&XXRϕ?gsܓE!f!a[wlE2 -5azU 6#eWu| 1BK9JҒ!*IFKff yAP:Q,KoI/.rTKba6J~k[_ kC& faU Z!_;^I0IM^q9>j1m>-]޸o)I.!g} 7Dž1Qg>`Dk3Z%KZE$o.&s,>q;d =Pk7o rA! X7): 1-Hn֖xW#`/uB x /~?v.7iJ, qI @I$5+y9/xgl_PoKSr hFo Y)!XYD5fvEkX)>m2}.'ߩ(+}eBŮ5ֺdov?Lc,pZFEpjMJ&',0;&^rKX%*>pB’UkL[ްi?X_Ң~(M|m`ҧx;eSJa+B(ڨn{9kd-[QJoysB0ws%s|xoܩGiJK %Tu5*I.eQn0);2~\2;Mi_l{6%mu!L`c%%5j27u,4N/Ozn';e~COf} %N@2InMwrһL"QAzQk4'SCy3|SZ<Ew<7@V?1u@ B}db1T*Klkv$ulj ,jb'`!Oxd =O=- rϻ8KhE[usIellM7>Z1Y |[u}5HEf8''FLi(KS4%vET䴲,)o`dm-z$û_dOW q̲P`  ccyx)Nsp$\ ~oTy^jEްB[L}`"S &u`\v`Le=C GG(pj--wcO&u:ϻ #r“UaA6o9jIo!EL mS^uyQJ `i̹2)#41M q|d$T.X0XF= GL<_ Nu1s\X H1vRb_'?.n1`Zްb!LMMO7qR&7{}v&g sG dtEvY=<.*ZKU;&5grC?%&kWQ4Sͦ[;%l6o1^ZY#b;3 H /޽Fş1ig5'Ki0(GPr,3b^}wXrjǕg+s?Pk[_-)AYO$baU!NY HRRbWW؅K?9>W3{ @,S` 90@uP,F%fP!qۉ~Wdtf#od]'7a=O vjQ_ KBx"EI&1CP>Ou|'H #Jxi~5#(GpL.'Pq%(~$Y@4:4W E[_EY# 0̤) mަS&\3yx2dO>A,{ԿQa |r&U#@}p_$6Fdg+vcf>p!ۉO%K;E7 m-^.2{/u&AGsq"BB;! AuYGԏ$MŁ# #p=w{Xs{wZ$f|Oi5xPY,%"95lwCt5d~Poi2LfZ!Z_7 q;TYw^mouҍ7Tkq!.W50&'̕oh>^pLy_ ?E7:3ot.6mcMH&A=^Rv$?0r!BtM[U՝\ICgM&!RY#PSMVHExZ起<۵`i+w )A1ݙMKkW9-<ǶbWAw^[_EC5Lu"$I"!VPf8RnCc?-8"]y2=iVMb8U7\ E}hdY̠HC? GWKpEM!B>1#sh>JE{q6ϻa% k{ %#"T@! j_A2 gqڈvGY 7U^<h ~sJ)n:bNCZ˾,GjA05%"}5r$g} V~[_(K QuF ޅGnB  _3}6jWW'@Rq991m9-]0`^hl]}Hn:_jvH2LaH&$Ǖ$@BMO.&}ck[9/ޢ–3R!1UN q]+| tPz+AE+bp/4(Y[:bNAKd1v1P 1Pm}+$d,hP$DR՘>ydNwp~A*z"WWy[,`qY.Α1݊*0@׏)?ZQUlUzB]T flOۉ(}Ǻ\ݹ qm 5žˆ8.@r R{Y>][Ú:$M7>*Y,Pӈ;NS_ XF4FOiF'$ q41M q|d^)$dTn,s4H0k;_Ёxt)_V?`KVl'sd29bPua_EQ?$55tf7F[zδXh$AOowEti(]'*qK_fV&bg5%#]ǜ!AƉ_GYG6oa7tދ#P[BS#D?Ϡwj5FF&A((GA1KW'Wq %#}9%E$ Wc[_  hi5J[ ;tsbW(Ŵoic=}u)c%8e%9Y$uCqV2 dt$u'm{;&QFrOmc1r§UQ!NY=]P oO:-[! UO*PS lwJdG %(7(YA1KW/[c, {3pM,Cd 7*[SGGJ7uF }Nsp6{3HpRcWCky /"q=@C3Q#og&yLs`La 94>Edt [un&\kC'\O?Dl> h^Ҳb#V"tS1ر 3[B~y |U}w)S즰g.XoGC|qb5%pP&QAѤV$S^=v73 oY Ivs&LN{@ERjWg@K_?- OuMVj}`gvR 7zV_{54P`,YJ=GDtnM> wkS&]O0"R;Y7BVuI2- +kY  tӧkPRVXx5i4 0p @ EM&qp$% +!ЉB+k#y;g9RbwWK?e9ba;kWiL3ٔ( uZ7?kdp03=Fy,ZKr".&]hcc ,l\=zO? ERA%M[U"DoI6 mN^ ygWup (o_JF@JhK(iYB:Ls,%"}T{D5Lv Pk{& iiu)ʆ)N{?AbRhtcӘK`9bD>70<%&R&y麀lv6HvLmc;w"RoOU],w]P=q~_5C#1BUi.C#Y쾵cѶo ?$ΗY #?g|IH2w[JncalCs0[dtZO.&]I#_`{f=fO$B! V>]u:Ahxi M79l^ YCP^UiZH cVnF2fi( {_a7h7M, f"$<Jp,بF )  n!zKp_3DL>rJwT[=^̝1mްoXT}`m~9\d3V<_$t=GGdtlA$0 .&KS]nY?%/0]ң!j>qDpіi$X !7ϲ^ Q/{YW*S1.h||FOY5KFDM iU8 ׋r(v/dW.AwbWP7 [֛_y 4Ah?JbbVW'yk-f<'mu.@Q(gl}or0B6 UNFE[fd!$aCw'#d`JsOv;k3yA/=^tL%3b}ٱ\\O_tuo#l/ҕFygilW + ~s' (EM&_K%"uJs,y<0 [\cmtI^w9W2yBo0SJ?*8<Vi_#eֱ`-L?I=Ńw.unf6a>CuK=CEdMgMI"UK4;&=^zN`B'rʓ]n!jIV`aۍYb=)\I$g`."]f߬;&"¾rN5> :U-m[yk.deAqҏ^>/01uuS􈁸 \o"=F Ɩ=8(A__#O,)[9!D8yi,71@FhyY^fr\Xd0ؖWUi-X?h9VeuO@.S`d59[w&u`3dY,ywCBEdt$*` !w"`+G>RH/crlko}K[1lQc׶}޶+36=ҤV>?OԯۧyU8N"R&=`Ǝ(2#q8LLIA@%(}9+ar,X7l!y,wB ;)]ԤInްVD1bpKF1m!.)I.!jMU5 $edzEYqQ$qnm۸ED oqo}MK`CG>brO;wPrz=lufT: sMIwwn& !%EH_` 1CuGrG -o%.&]hZS `P&brO%# Q>U!&{u4~!6)n_qҼ^ z#祪7?0S i8۬/53T&`i +(()8J^Is %"y^$DW(LfPk+;,iy!^}Jfa~rwgQk9񹛾1m1OU޳@ۡ)$kL}bj5yu`_>`o$uC=EI}z9o_|+R;]~rO?_s“U81N[wl+ie*79 _#BQUP h X=pJ-i.w1]H(&M~ '-%"}wY+v?Kba6nzW'W Z4ouB3IF!^7X8xrg0WK`9bcJ޿@iL `OfLOt&`oф)iv$qCo!CgD59]Zf]+S6PbrOm]Š1!AuFDI YEҤ~kPRWesX3VFp!WK`&x)1/ ~SB(}5n$ v'.3@ԨA>k1kTaD]TRN{o+  xy7*Kq11m>%] @ӥf%O SF7॔WvDs/|neZ!K`p]dSu~ Hs+<?ku :%]oD5]u~;%G{u,S#˦I@(#)yes.c 4.1 (Berkeley) 10/8/80%s y@(#) Fortune Operating System Development Utilities Version 1.0|(null)#@ O )N????@$@$@$@$?@$@Y@ÈAׄCAy7FnM8O?ZwH01uOs:   ^q3]W8tuPusέ&S(GfW  E"}T1Z{d.X0YPA7_ Aw-IyZ!Z 7WojOqÔ1m1-]X@)Tl}D55B0&UH,hfHvL$qC]Gj*5{Uo?Rv=_sŚyq=RBgm,r“aF`#s8%v >$^cm{W s K2[!/J<"JliBKX бn_qgMƂ9-rv;eJl,:\PA AlLu(ԢvlS!ZG_7Tq>װVBr7WO}K`9b!TYs* )I.!dO9H5I v{CPGU,5`m'M.&] S\-NbϽm“U8SNu8]TAhfR AJ^9 4s+Wus!`X/ʴDG)?-8bnYu EE,%O4Uw&B35FS`LkCQuڏmo=.6mKSh > rO?pbrU! V[Zu:Ahxi b AJ^ v5m{a[W~s HX׬.JFΖ@[KffcM" } {!dCW PaiIX<IN{bZ!Pxyxf83Ck#)I.!k8 |e%zHRkY>jO$qtG 4|;$@.&w,S =^<3 tB!1*M[ZБ,ʹ?M7E^"fcOPW?<&x/8vw9`iF5W8)U_# },es|CD W&0k[_GGiuFƆ r{iudRjk}D?!4]i91WޱLZ=? O0 = 7.7 +@We @Ji?.A8Fɐi4,,O)|E wLܳB&)" s_d܇W7oS^ nlxA$FZ_?#ݢ=WUx,7,3f1lްHQv`~}hGŞւuiuOkVala.#͈Ket}ý!`& s+rI>c>cIv_R,}( Y qSbأ HN/Y?<()i" e(޺, y;(%#AhQa,r$˃Adg;Ъ;,d_2y6e1#Dx>WWDo)99bA|b沲[+T 7喐qq{&;1k>|\hO$p/=EBZ.!oV. c'# n=u'M:n}M1l6Eu7Y"Ҥv.#YOPSWQxj 4S=^tr 0RUVWu:Ahxi -7AJ^,59 #03;NlX/Y-Ùgf{&((Œ qIRL,#=nd8m6 M JrE$$t$*ޢYdINCx2W`y ~6sU!5^%obq7\&u`37u,|N(od{j+@. wH[-]PRa v 8BR ?J=,d/H nET^'vp=TwsH?/Ek`i K(а(y18 ',<%9-IlDG(s4uPoK+TA,yu@s3I!^O qAdWWIR?-6@nްPXdl555B0&WH,i{fvL}DqC~D;j]'\&DKsk3yu=RBgm,r“SFVqM[!UJ,/-[m'J#CSu\X/<#+`̖(>f(GbH# ˀTm}+rjp93,MpxT m WG*IN{'_d~RbwP'Ĭh9-uް`DgL}lGedFu`T3VH$qc+@EbEo0 f]kr[&?rK "rtj͆"05h/I M+0^ tYCPv[usN(wXJ 3Ii(L'HYPr,k!I' zK ,xLPk[_$)&5uF YWnmZƠDPhC61eCtиJ 'V]:{5^!hh7c\6M+g$}C=jEdyj=b N&]C5; o9^rO?kln] AweWu_y/; ]v$^ލP|Wu}3"H7&;N<`F&o;((GeZ #@LU#}.r K<yGGkE?  ەb!Z 3i4tW[iDCX#533quސ@`K7\&u`-E3\p>Laj c@@HZWMoH]C4;&?3rC3 z7! jat9I?e b1m-[|I$kjxkhS J8/swa(iF6[.CךoM%*59- _$d=KwPPo H@mX 6IBER_3"}Dg/^m1c>=ްb~gS`55Xp&}Mj4>hLa$qz[E. M@)\*&COK{c3&$=3E3%'1d“]!lAsY5!*'M3:qI$kjxkhS JrOpFGB`iwo?G((iqI_"O^ybmkW×9-jVC,JW?RW  in?IN{!^Y}|bWS,5H{?-f1q7Rް`狩RgA%}Xh\Z`kgcO>lL C{C=E5W((i_\g`x]&V=^X3/:! I¦Ku-j9ze!B_Ҥ[Dk믽w SxZsI:N`'@`ƹ(< uE=cʧ3bΐwX$*$nJlo i}(!^>sD>VyTk?-"1lP&@Dc>Wt(0%z^R{7vY3;GӲqB{2<ֶcW~1;ލ'%#1PCĀ:1 u0x,Ie)D~R'#73'HS: d 1^i({mݿv] NY~¦_  ""Bv*YUBT9%iKo1k-Pq<#\ ;$WH^sF4͔+(GPl 5,B"}I)qz$v3IhfvWh o+W @))q(y4p4fN:xRfsyxX-L1{^"@߁Oa53\@&u`zR]X Lyer(DZ98|p{T}oºRa ߕ2“E`.1cwl5_]QIe)"7E^ tY |6PW*S(E|]cwJ-f2NۚwN(!8 \#\s %"yg&> `Laj'CuEvHj$o.&]kS&EP=VO?W'rUDAuT/M"+AM'1$Y !RpSz-uR/xݪʅF@-aH(QOo&K0PM1%"aHlr,W +3 4Du 3INsc]^d8re'1?-X4,Y$>p+LWOU!D&̙Lk4 4?~Lq$qC GG(kMc8t.'=;y<&b%#]Uo [Vrb1 GM7_|+Cڸ v /PWvz 8('8d<"J~X&5K$f( sw, ~bm%*é9-/rt.xf_ 6Pkt]S +GuF օW^;2k\1ۈ1HKuv#`ViSsoR}`Oe~XZdqhfc<> ,u$}C1+"dxjM.' k xhA=^<7 :Y/j_yTi3*3Ȳ.S#fg+u aкhϬ/Ý`I&n(( ʢ_O,%"}%Hd5 Z 9!F?iuIdA|wfD5هHP؍6>|Eh^f=SةJA΢=hv[>`La(C=sbJLoΦ]hcG &AGeZ c@rCơ֡[UYX#Ahf ewIJ$~'7w |[/x.Jf@>yS!_ҧ_E"9*'N/kp8[+ i"3IrmY HPuު@ۡ!(L35h;>1Q=kqfk=)E%jiՑN&=_d_? @m3댫:mio/P6UA:(%I6 젨&'>{|W7u=_'.胦]_@ j`eZ{(5Kǁ7(0'} RHt9-.NJ(d[9A7x;!V@3 Mb{!nVu/Bw;RbWW K?,VQu޹@icE5{e?0u`U;qcMi'=^~ϒ?%F\pU-jGuThIkMsL9 UDP_[SHVXpJ`*$i."nUD"S1o."c[3~s|n2:%'ތr1|Yʿ&x]Gԏ$TSŁ##5Nw9us $Hs_ʚh&@''5/(߅Y*§3b}wXr9XlR%,5k[_+,*C21uNjbqsgRf1!Gu93Q_-\L^sM#g&;1vp49$qy2WdBZM!~]ks[&/pTO>%/ ~CM!Y Yuy4C-Y0%[!Cz,(u_}H2SJcKZ¾:f6EV;}Ҽ^xW#˅J5xdX/1vF|`}5DرY D oB,oU) $dx,W"P%{1IK<q:ʰVIo^]>RjWwjKM9 uްD[Qi}HOU9Ż&֙E`_C? qC\4Gs6M{k]* dPZ8ȕ;$RżW 1KuA: Iv[`b%Y uuSK~.l7L!E>؛,_.I=~zʭRBE6,Wbfʶ{UP$*eUcrq>~bDP+^j3C]U')I.RZ[5pX<;v`]BwjۅVV='KHrSMo]o->Y}w)<~׋F qKA_zq$akϯkf8f L,Pw9R% @0ZbF56e6#(2iO5.Q's$%+.VrEOyR凿ȧ0;[ i#o:ʰIw^tWJrex0e >6rҾ?|OōŜֺeO_Cg,(qC͈e6pS-!lQM+S;K]lhZr£Ufj1VtN%iM>²Ap}MZ 1u;S5dl`%E?DeL:!{ D6t?pkKpU)6F0"v I{!W?zdᨻUk?=L\] @ˡ5M9ib[20B트zb_%4,NLa"F=)&&\K-oHjo+w}_=Rs`QYY mSʖY7:P?;N@ ']*E`i%uC]G/A1Zp9-ri OInު9Ƞiz&RfWW*K?-;E31lYse) +^}@O9vSXz^>`CWc]4/\d|j-{2ޭ ;o¦bG5> :Cz1 uShIXk׽_1Ҭ^gůuǔSg(EH2D̚NIZطI گoadBM fa~!T~jUpe}W[-^jUd@^M9lfOqqJ㊈:_jZ6fCG/aODsk32R=+[aRH >\Rc;A.EݗjrE [k"2'YSu7SfP;/Y?<"}$!e_*@ EM&qp$% +!ЉB+k#y;g9RbwWK?e9ba;kPiL3ٔ# mZ7?kdp*)=Fy,ZKH>.&]hcc (l\=zO? CV{!M[U$@UI6 mN^ yaWup iCJF@JRK(SUBLu,%"}T}D5vv Pk{& Siu)ʆN{GbRhtcɴKf9b^2+a0<%9RJu-)>[lq1 G)H*}2|.8M9_&@ XrG?m ;޿BYusKi+7;^%C¯WU<&x/8vl?`iF>$ qǁO17Jԕ}9+ar#cy,gw{[_ffrcZNw;sD1x{WyD)n1mY3E޺rOV*O5U rRZ脫Ffl!$} ?ЗEG:mo H&#{N<s]_#%# *M{iG&ms 7)kM7>t𖴦7P,S?.E/YVO'Q(/Qo7h'B,,C"Y-DK5u$I@CCG+i3{!^]Fqi)Rb9(y)u9aHuҳKP^}`KgY50&:o>[7>`LqDqCXtj`7ڢ\W\&/n+H# RxBIu5G6 o-7:^Y #\G~D мc:`ΖuK*qF } /bm%*9-+2|as,7Mx& 'hSlo P4W_(WD)g63;UKQGu\jl6:KnHx^Y #sWUibDHy3&~F}K6@/u `L_o50t/DzF_(>`l1C=GfTdtjna6.&lCKSU=RrO%'r¢!.2u5.7 mN͈^ xu#Q}kUib`H cVnF2fi( {_a7h7M, `$<$Fqr7kY .U3r.[s42bJEg\jVmq֮@ߡ-%+4%ne`:7(;[fMa$q%qGEhkLotrK9R;&AGex g rGvM[?iV!I6XmNT^ #p;=CHX?wJy5 pP}Zf _cƢx䮉x~v7 Я0i[P<ȳbD!^4GyQĴkT^1m'z޴bhT\m}q5p&ZY&`vLaj /GN3k|oN&] N+nYG~잗ϕ?s DU/jK[uPcI1 ۨYҨyI#/}YS 1eN׬#J-.w1=K$q such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough corePermission deniedBad addressBlock device requiredMount device busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesNot a typewriterText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largePotential deadlockNo such minor device(null)x\@ O )N????@$@$@$@$?@$@Y@ÈAׄCAy7FnM8O?ZwH01uOs:   6P Su{=Ǭ@3im8ShEz5ڊg6:+ZƠ׾5LA48})n[,U%"}wQ2$x$Pk[_EY#M݆ $OA^l?3D> uDIY-1uHu޼pOWL}`3R5֮&`_C/w>lLa&$=)E*͕ ]orvmK`s|&PNR?kbە͆u:$I6$=Ā^ kPjbS `X/@, މj_8[;U-IeuYҤL.  ^ǣW,S h/NEo`iK(QSm]#=}4%"mq$D4vW}}Siy#yiHED_3d\>RnQK4yb0/޽@ۣUa5\d&s.kV'>b}$qC*ED joj]kragBrO#g[UxKQOuW)Gi)gqY #Ez,=Ǭ85tXJ4fEN85 )_(7_ ,'=9,@d,)N+;lI%wpX46"̨*9f'Ι<_#oL}`%] U 4c>`_e蛀 =M;s;s‚_?_ rU!jmus5ivYokN%0^ك9 2p=޼XQ|'t7J-d+DODJ(ue? qP7bm "i9-r9DdKW IX4F #-7:D4yO,KNr1m+Xm^-3>O{H{n2_hvMLa&$ҤOiE~:9Z[ 1eN#J&+h7eߘ yS?'5n@*s jfzndu,W7c[S  doyiZmDP}LWGOHd?-X(u޸`,+}mME{R&;Ok8bLgMCspGd\d|ZM!k3;=\@g~m_ U!j[_LyѶj0d7P*Ҥ}s#\AE,IH{/Y?=v.i8 Kf&((ROMI'^,}wr܉Tb!W.R`W[_E %q8 cN{ xyK&9aSs֮ \IL3ٔ#w} |IkP,@r-$p ;=RM>%# QM&MuSnx!ѯ=؏!}gҤV? Y V01B/|jS#5fKHCil5^ШQ!" b! Lبa"&p+; }f 9 !Zprs)>;ijpUp[^*dzv]Naeq]pzB_Fc7v,<Nz';jKZ"b=<Z{];&pr["{?[;UaIeAAM?vŲ.Y 2}Sz;u4 8XS: 8f5`*%M\KԖS9;d5bPo] iI*V޻>)wyT ĴxCǪ ε:#T ^'NqS5QuUNTzhEVH_, EM jio1."KS[a+P=O  " B!VwM[]L V%I2(ҠwXAq>PWu4l&S7d@Bk1J()$14U+M,[r$>O,W,fPk[]k5H+wȳX!^eDjRbEkyK19jU -As-YLuCǢ(5jO OU] S\&/;ޕϤ%#"R!@qMKU5zie GM3;Ҽ> #p}w9uT (qJ<@5Cظ)p&#Oyb1m>'ekl50Ψyo,4(TDZk3X.-As_^XH$^Nvš*[UUg?U{h M7_ҤDv'#/#;SHqFj`F&9C( &_A1#!+Mbk|}wO$2?$Pg -Ӳh ]]B|%rl_K_xO*W\g_JZ @ۡ)k @}pKrR;7{FzXfC1;#jA=u". M && ~^rHr¼iO)`MZYW!]*CHd ]P#} sQ9HTu}dJAehB(߄gY}PIt%"io ,(X{x<[o [!dy Zsp4w/DR9DGX-v~1yR@L}`ڧR5Au,shkvH>L9$qCNZGI(tjAnv.&][,S7NOuI6$b4:ҤNNˍu 1XNuRfB`;h7bš)vp_(M'1b3znlr,WPg[R ySboh A(!S;?)@1L`?@pn1i?֝&$\53\XX u`TE>hLa%i@MOjb9.&] o(2&ZZrB9U" RU%b>`Ue8]TAhf M79$^rdpWPF;=d.X/g2F;b 9k( }pm#o],+%"yknǶ*ba)c; iy"݆ A)w!R_^FڭWVT&K_-fƎ0!qY@q^ca%}5n%=PvLDqC-nVKt"SM!J9:#S`; SbrOC%+0r›x!gJ6Iț ZhY /l4WS$*X/;JϳE`F@Kff e QsM,-}9 )J0?d,EiPkl +U BIf;ytDxRf?gyLK}5JjUW5+LV,5n%=PvLa[h>v EjM.U+S]CskV؊rloWYS_%K M58HaY#P0YSMf s#'gGC˦_ux<"/<ˁk@$|uiթ'd\/_:9O(?K#YP_8M(~_%1&$Ǜa9J(Ft'g6}xZS 1e|c;J-k۱k0Bf<#))qsHeI8!k\0H| ^xOeZ G nNP5d?=dV*9Dd]bΙ;k?c)Xn}POh\J+&Lk$qvjGjK?".&r_cS;i/s]O%#Ȍ"Me!juyG1$b#ҤF #P&5(+L/ WҽN t!Io+%jx˯K8'1(m9-=hǝbWA7F-4[ o!n\knRrxyuK9b;uޤh^M9TRda5f\F[`U=_{V۵>PLqw n+B dkeO;]G#=;aEP=O )1>M.B㾙m1k]VQH&AU|3 ^w:p=m H%@/8vF|6K5 xP%,'1|[!mr a %/ ~CM!Y Yuy4C-Y0%[!Cz,(u_}H2SJaLa f=UJt"SMcu.]G$5;f"ºE 'rF'qoV3oY1wF"^;(c9:@SG [<8hxH # zF7|S,v-">'YBpz'@sg(EH̀!lI<#bq&Fe}p&IK,%*uO,ȉ*ba)tq;AefIaUqZ!_;SҖ WW@K_;TL GsuSg T.疡( h;>1cYp< sG Tt"tMO{4< 6cK# n=u'M:f].;%s: File name must end with ".C" File name too long -- %s rw%s: File is packed. Use unpack. Not a compacted file. Unable to uncompact %s %s uncompacted to %s Unsuccessful uncompact of standard input to standard output. @(#) Fortune Operating System Development Utilities Version 1.0Unknown error: esÞ_'18,kt}qz.B%nXeM#=)CVAfJEoetVqrLuy#yK?-8v]mY7iV,5 N5]Yw;3 d2 a$qGaGG(Ktl$@1.&c,cWb|=R>Jk} o>uۉA)øEdtnkk.]+k?<^ROc c,jpV[EYٹjOM7p"nj Nw1s djxZi`DZXeֈ[?^,%,? aRIAD5KȰ9~ ū+U d{B5y4N{-h_:q@3-W7C؀+1}`ICU}u`-o#v,$|γ_C'Ļ+}=o"A}ߣ:^ROfeLvUVomyeIAAqҴ^ CJ\nES \oJ"cV@i2pBضaqN,e#e}wYv/Fz*XW P{f)_DI;tv߻\82TWWg#{ Q&9bm܅Ql-}H*O5puozk3$5,$NLqcPIpL4jM%H$]k;B&†R!qg31RU'h]5 oI"!q aAA0˅OusXSȿ%2C ejj<j<- ----. .$...H.Z.l.|........///-/</M/a/u////////0 001%Error 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough corePermission deniedBad addressBlock device requiredMount device busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesNot a typewriterText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemT 9 EM&qp$% +!ЉB+k#y;g9:RcwWK?e9ba;kEiL3ٔ/} TdfIYW>`L` gY{Ed|DME{Z0άymM¬0! 'r°y Lsgu[m,iC" >L^ WuEEe8_KF.w9MIb_=?AP_a_MfTu^!66۸˨d5ZW6{Di5P<ȳfaot ={#Ǩj$@z.'r,Sh 6rNu rüihMZ;Uwi4{~SEv^1v #P%Ȕwσ3F.w9]w/ q@1iؔ35, Au$*$E ~PjxS\hQ3CIOOA^5D5[{K3qy1ms@)`l}b94v6U5:k>[ttL`؅)fta{oN&|Sp &Uo¤ !E# F8!zI[uf2#M6>~MqY#T0z%jSu3 [o-]b ` lɩ0MQ!>Mu8E[IeAv8VY#u|53!X.8v=a`iw(oo many linksBroken pipeArgument too largeResult too largePotential deadlockNo such minor device(null)rP@ O )N????@$@$@$@$?@$@Y@ÈAׄCAy7FnM8O?ZwH01uOs:   sf\7S sb>]$qC7T_sh½ht+fȳn!^Z!p1V aFKq9:_1l"3-]n@ڡ(0@N{ek4ua'g?\ؑ =)'|aM%lt]d3@&AGbȗ%" <{ڲud9 Q?A]AI4S`M6_|+ {0}Ϫ1gS5/X.YDN# (gOOӘ&utc&Pqbm^M 9,)2|:KW +[^$)G֕#  NzoD? H1LRbWpKq9;Xz1l[s-]&!mLYܺcNP(ZlxⲀjVEL`MgFZ>%pji!i.'p2\wSB;rüQj_ylWEM61bgY;3DcWSl4 #-.Y҃*NF'1Kff@Ll`"Lnmg9,x0d[9á$,iqX< #>Z!p0o8 ;1?,X4Y$&D_LY\5d&Vg4>a$pCpF8@o }p o<)=]AJ%" 0{,L\7kxtI+ACBҾ^t6P kJ23nK=i|05xP) 41M qd -)?$s,WNcsx#=AEB$eI8NzoZ HRbWVMBd?-XaLaj'Cw0i4duIjM1羀K|;&/Ǎ篳J%",!4bLA˚7EVa^Y 7WuEh{.YjEAf4c(K@%,%"}%$/ldnzy!QCit3JNy)N\8nxa kqh1m[[ҳ%J',1wXdb1Qk?2+a$_-=/GI(tjAo5.&]i,4?z11c%#"ە͆]ThI6 }Aҭ^'U> #\W7y-H?/ʵ檍$pC jM8@.*] |\h rOurFGQbX+A5ǝIȏm{ĜqQY iB9P1!5qx.]32yO'(|QRt |gtL6$:WA7q٣N{H{Fh\u`<k8"jX=G dt$*$g2".&Suhϖ ur»ickMZ]LMI7/k ]^ vgw.ũWH:K74F@٣c(j{N&=4f69,B$ú,h!Pj&mqϸh n2I F _2d2%*RcWVz?,6%֑k0Ӂ=/LٿEAe0uavp-Cs0GBHfm9M%ltV.]\ Õw'BE%",!wmAu_h%6$^Im{(W7ogpE *?<"Jh'"u9(m'qM,[%vhs,ttqPj&Q  E(g!{wbH&%*RcWW*K?-Xbx)w?F7hHh 5>&;5Xj<⴦t+yC1WEdtf*o";˴\4q/&,-1ٗG 0&‚UAj[ـ⊐[)7$b0mҤqDxu|ŦܝX/ȶ;FlN\K*;ڨ|^dSM,)}9or)Ck'Y)h\<_ . ﺭo E){!4RDؖ;UiGK1p9^j uްb'˱`O{H9\Y@&u`:vYVu$p#Z{hjM!J ]|3h BrOuZrnsAk>q ˙nAh M7_|~"Y 0x+;/ϟH|3J<"C4Kfff)eR4g_Y,}%Od X0\<3 } uܥIX2!__2DRWV(@9gi;k?_(7}`m~v&7店Wa>aLaj G *b;ioPN&]dYGs*Y%# <{lL[;Uwf4,3l_b2>ҥq.%PӈZS즰gtX*G<"H&F&((GX>M wyr%"}w.w0K[97#0k[_E/MInIN{oLxDP/qWWI~|?,\@by1ᆬ[R_gLR\OIZ{exo=u`sh5vpmA ^=u+dtf*oxZ7xt\; oArN?kU~Uoo[ZsI6EV6yҤ QC S 1e/YN3b`iFK (GȠF[LM 'Abm9-r(d X0Wv.:ipPq nAh +3[E. #y/u 2uK<"JGXiF/M qA1& vML,kxsjL{bax!E 7fΛ N{bZ!KnqxEk1s1lޱ`k.}a #V53a&庚Wů>aLaj G JtIUM!\)sKSu +=_<:= ~ll!y}]ZU(,1sM7_|+p" 9 #/j+qRSBX8NF8A' (߰(b'1 Tl 9-.NB"dba6(2tZG+liz&)NzbZ!#\cMo yD)-_}juҔ0T`}aO{eMu`/gvHg8$pKɢIEdtE$m92N.&Z,T;&AG 31=}ux5zQ6ĥb ծ^$w9 #SueS5.wX/Ya .wFyKff(A8fHVKd%#}wKz`,;h6aW wbktBNzt;D>Hojxx-=9bI|Uޱ`d=[O{H{euu`zB5F4calCs0rdtf+o\:)KShl*Z^ݙ2rkAj_[A+5I6EVANҥ^ #iuEn2w3K="JΝh5obL&t_[?'1t[}w.N#dL 'vPkS7nit'ȳ2=!^Z!#A}gWV(ExB28bޠ@ێ-(L3ي{e?vuaq3[ߝq^jQ$qro'G #K$^.&ZdL; WqY?k FL;гzC[?+"Ik>AT^i6U Wt4 1/!B`iFr[ p@0!5,kJ{$vk-VIa~[p Hc4RbWW؅DK3=A1meްL[)@.e5w&yԬkH΢L$q4Z+dJj{":K_`f&ȎO? ~яMT]ThIMQ 9 UDPtӥyzHC>?y.RF'ef!(%TnqAs(s,%"-^-r(du[9Pkql uÊN !^83DR7WĤb?U97Vms@X`LqO59\&u`"kz>,asO3>E Mcu.\QcsS;h=^~ϒ?%] H߻Ώ.-.;[mAKҤ !Ds$TPHx/ʵ4F.wGAq      !"#$%&'()*+,-./0123456789:;<=>?@ABCDE) 41M q %"9%C,[9hPkWl io)Nz!_tD\"I'E)q{1m6uҸ [)(~~5{eHu`1j8"bۍCG KZKbo` lSqA\=_]sgBr“Uo7Z7v,¹)?L mͶ*WXS H{ . 3`֒4J$3, p8 %#}qs aU$p ?ZͣEdvf7okI,]K5&M͛J%"rÓTktgؾ,¹#Nq7^>lP;N<#X/Y<"E)i;5NGM£7,"$AduSPPg5 Gds΋[iZ!9= [J1MlD)-_p{1ޱF[iN.mpL55Vw&yYlnW>a v='hM Moft$]d|F&AGm7oڍ!k͆ɵxIԏlskXF1Ya5˅yZ4 g\8HF.w9.j)941M q^|QK !hWE& h o I(aVlb[]dl8 awu@y$L3قFY5?h\ujk.>+u${CA,j$7u.&]Y\̝=^~ϓ% ]! M-cxI6$;D^1#P-3DQXp^F.w1{KffF|T_MkL(ktV$.rWE[^lhLo9I s $qhWVyD)ops>=ޱbTeLMY?e=yh+qp$p ?mKEdt$*i\L]Suhϖ uC#rlcf2CSu_EIkOm?T8 [/lPWS0HV_XCFC+cc(iq@_L_<7Lbm@hE!9-m2n.sfWEܖc[_ {WnOI!_ q qxk©,K?-X1'|ޱ` CW 55D!r\h@jj""q㜇$pCi0>$|j*{?hy&AGe?)9G :L[;UAAI6AomJ'e mM;F"pH|XVz`(FƯ42N qCA018 %#}w{s 0R!k_:I7EVҥ k RPj0ʀShc=wF<"J$MZ# ]G/@1nܠ,kYJhr,WPK[_nKu3lIY p_3qF4vxDdq1mt%]!O$az}aO{HU6F&&Ø$ivpbam5OlE6 ao@kNƆK[dΙ'.e%" !qvuxrfIlEM[$9}Y C7ëw;N#XSY@h`XBgJfzۙ.O_ "9-rjL]@ zPkt_S +U tIjqZƠ HPaRcWWI/D)u5cVi[J(@ځ`R}aNHVƯ&7٪$?v\'c='*$M!\DK;dirN>gZu{W!kS&A˚7EVa#w'#v%ZS 18M*F8A'DɒfO pA1IɔaY,o[u-snyӯu\xMo N} )t/2k\dD)qsb5-uް)I.H5{e?9 u`:'g>`La($=E5**($!`.']S(Ra=_Q>ۀRotHL[;WsI>$M7_| XyY mM;F"HwσHF'`iɒ(i p@\Q(޺%#9,Oj^*$[ֵn~Âd  . N6I.{c^_kyRbWWI,?,&i#U1'LR\H@n-PԂ >`|Xt= h,X<=.H( KSu~z=^ɳ9%#*OA j_GT?$C/C|Ҥ!2d˦IuE_V٧+=FD'G()CA 43LfC(u9,B*$:,W GPi7 /TtJʬs!_l01JRc'uhwx^mbA|랊0`}(L3يa\0nZ`1QCElk珺Vj.1tKSy`rN'%"0:W!k_Au%I7!m]8^M #vj蛑qf+SgK7fwIM3)v@:<Ɔ,[e+ GGP_1D8F #-^_3?DCx=-%8W{guްb)Å6}a5{^&;6k`$p~oje; c/w'3+%"uU]!w}ZkY0$+;YBjʜSkZcS+JI.w'L딜3T5uF'eg6hYQ.rl*$MW)\,WlInah*EBhFsj_:#TWw Uro?$LΒyL'P}N³SU&̜洫kYq:l=$q[]e#Nߍ>onM&Zd;d>Wq=^< Q>T!`OuxIOm?v8Y#sҒ 0!H2w-J<"JJNiBLS(GYfB^?W,)7h^;fb$ t=%sq4[~JI )ck #)]Jt)Pd9K?,\@hyV+ޱo|5N{HeS&Z\ԿҋF>at [Ed M%{XH{K\As0诏%#*MR!SvQ{uml6$^tPkSWJ6/(iFĽ*vH@\``'7gp/ $E4h6ifŧI{ )Jcx tNz$hVV00YEdq1U61mS-]o١)I.!qw5pKʰjF q:='t3g|]dY>N]N* r“Uo7嚗9Ah M7_ҥk#jőuwT`F|8A5H#i p@_l_,;L~TǢ-j$ǝ<[9bg=WC " gOIb'vDọyE }T 1l;kci}`J9\0&u`<Ȏ@$C="bJof:Ks;& ~^r?k ;m3LKU؀y!1Eҥ kK/GPWu5 Xk.K0?.w;cA0((G?6p_dZcML "Q$v X0[\< ( y^)N{b;_9DP/YÚwP+yDO 30QmwPppGg+N}F&zOkt*ee$ Fvo*ͺGiyo ;;S rNA-ȰL[;UAhf AJ-@RxW#˅=Ǭ$tt|φF=FHOf()CIIɔ/E,69,=vhǝq[9bg=[^X)ANzoZj|n( WV'TYTb1r,@ڡ(.*hN`\hL&k"p%]VchjM!P] o3pe%=^rOC7XrÓU=uAE[+5IC;qY m{#Wy|ֺJys\i5J Fx5zwfZ$GO=pErpgtc$;iuF օcNz'tD8ЄU g}[nuwey޲65[L7ΐ6S nUk8"G<z&)燕%|jQ;ZFIFZͬ;n_qs:ks%#_"MsiT1@ZV,Ahz bAJAFAY kjC\S8/8vCۙ`'PO()C)IɟGY,o[u9snyfvwh~Pg[^()SO #mH_2DP/|zWV48cN^ (5 \vh1Uvp6L`H?! E m .']c G>=^04Y#ûZ< 1).C󐼪3.iF={(:+5Jop|sTf|K[9)w  TO̍g)F|^!8-o5txx,?,9bqFVޱ`kL^vY@&Z\M~v4nL`$u`AE*Eo^vO#u&AGs둽0VUi!k7q'[i [gҮ|?PxuEx?<[.w1Ab)- }T/Qc, {ir(d{,*[9Wl i/o6iaGGP_3DP/Yr>'jx-9j9bI|Uޱp3cR`N{HeS`v5(_WՇ>`Laj FLOÁņ]hps޴&G_X> rWS7CSuFjG".7V^tXOlPotSʴ4J47ڮo_e(kME29,.rlzKx,ټ_[^mٶu'ȳOn'!^GQ>jVpq7W/Ĵ?93VmvQ0w,#glNi?p q\={'djM!JI]xf3&E[B>orTkxfY[;UArAI +e1uY D;xZ 1ef/Y8x(iF(GάAn4PIbm 639-MvXa[bWA7ɵu M"&~BAT_2qVV|bWW(EKX9i?Uްbt{;67?g\pd#=u*EGoZFv] oZ brNk 8[j>qufE0 M62 (ˍ;qH.]3$lwio G(GVBR1,k+IحX,W)  Ncλ  uJp H؊Rb9_BK?-Xp= uޱc"(oI55qua\V>aba`KR EDy@WDS 1V74F|:5#Qny]APO%#Di$*$M W/֍ G+id)u!Tp HbYRbxU_ŪQ8aa;k?ס('.d-:.jUIopV=eduISb.&] oLCskVWrloWYZ?>M6[ aϵ:GWucŠ`wFBFѼ0A4J&(P's,%e_?$2:,WitcqϐhuF ޅlnU^_;DP5bWW DKu ^1l1޼u(ڶ}`m~5?h\\'~+.L`j -Ǖ$jb P.&] oe s:`C%"0"MA!j_A]IλS`qŵRǧLUxustK<.w QKffƞpO(M&1b'>ds7*Pj[^-)4Mbc;iZ!c7{-:D)%_}QOX+uҐ o۾.%aSVh\̊k8"wLaj (*(Eo\&B K`c3 i8%rOE-`rüiGM[;Uw5,6B>L^/E7z,A5 1%:An`(X (}"ш\׃ E,mf~$ u/63l 1SEp=YA@FǖhvaUcZ!xER-׭3[_J*@)Mfts5U8ۖet7~$X\tBe Fu jj7XyH2:]J#'?Ռ:HrüUik_PuuGQY6C/M7_|+f30;|}H|pL *F&'6()$pT#(b|T!~NN;xW`€֯ CA Jyfi _3kNWWI܏6+eTkar;`^і9Poj$O.'sTA¢]amvP@rqDY GԏC{ bpS hE]7Ybe@Jظ()*R,'1t[<5T$:t,ٲ s Kdo  iV_2H}%*RcwndaLK?,hV+ޱk⟳vA:{5^!hmB4>aL`H FGI( j}U\. ]gKS;(&L'>RRlA}LZUٶAh)6 M63@6j 6KDcW!sS`Ȋ:S(e:bOٛˈN]AP_3{M}9-rjLD5LȒu<_EBI<NzoZ &rW[yEoukOj1aUO)I..^sRfJ3[[pKBZG h#Kb\I KSq h;rO?kRTkxlY[;UV+ Ҷe$M6_|+'=ijpSWZQ%gJ- 5U@io5eܘ],HS?g}, /uV$4,WA7q7Itq$GE'Vn;n;p#DP/Y&FWW(EKX9aiZޱbog&;5 k8"fJ>,a] ?·doE+}$E][V.&QU5;&AG#^; EOrʓT=ml2=lA:ԜIж[`]0wdv <*PSy4ď;HH.$O`iF^ ;nUe'-, Fmtr$z4r0,gMܯ>c[^9,Amu3H!_sD>Vj(yjKNy | o%=59\>&u`ΫkH>LO$qCPZGI("jMcu\.x]+5qh MYrNE}^UQ~ˉ[=,[mo]?6m ^^1:$P-s ROXW]J-kl`1N qIɔ , 9fP$< ,WA7q7I[_$)GW$ަx_3YF)RcWWID vcΛqӥްbNOv55^!FRƀ3vp3C%wG Jt#+ё-;ٗh=_A?ƓT }Aq'Gefo[8XYi7QCWZ5ƠxwJ<XIG@ƷH; x7h&3/6(E΍9 onKba6\Rc CbcpHxp.cLc Ph6 1equްL[\/璏}q5@ uiOф`L`j Fw,ӓANrY;Y"տìR:otHL[;_i>+Ҥq.4YPx+;Sv HF=F'F@E((G'I_ /,g[UznT[9cc GF]!_ZmDP/˼8wlӑ8cQ9@ڡ(!jNvuaQk8"w$ w\n='.` A3 t.&:KSh rO<}])!8A–Ix]MQ)78/euҥ}Ԋ#PT0uUS.#X=-ùdki;K )&_=c'Pqbm#!9-|v[9np[_$)G)d3fZ!?9 LbWWID?;>eVY3=R o۾.%HR-R neegL(~Op@O=i#,I'".&Zd; Wq "c %E1o{+fKA:M7EV-9 #Z>̠g`֖Fſ2%%#SS]G/@1nnV}+$ d3,s^kfl AY3untM[-;clM6_|+˶'tIm{GwW s&[w.Yӧ*Ni' .3t q4''dC*%"}wY\Db:WA7q{۟ No fNzoDdG,q9>]1ly%] `*`RgK5V@ U 7YWvHnCMlZjj?Xf:K|&AGm]iTDVL%c:s /ԏ$.yI 7!jxS8x(8I="J6IZؿCjwRiqSc'Pqbm"8!9-ar|Ee:A vPj[C$)wgN[!^;2=C'%E)Y'c6?(I.!%{eX˳Aua'g?cpCULjs k[S@I =^]s"sPryk>t+ ԏ$.yI&PjBSJ{Ů=i|*f4HxP _M * %"is9r(d _0륭.t[$ J.yQ_'XAqwPDGX'\b=wu`ղ}`Lq{e?ua/gwYtY+}5C1OEdt$*g ="]o&EZRC?)rGjSu,rVɫb >^ sM$7[uSp. XpDHF.w1}5Eb)&M)'%#A^#~$*$MYWA77[^$)G{uN!^r_;DP/ba{xd?I9b>ޱboR`K?5@&;٪k8"ȧ|L` M ?B-GEdtosoSuhϖ un$r“UoXpu씄sUI6EVWX-[N?>~}wWZ,6HJ7aLajltQG 4*%`sS@E=^]s"Pr‰yj_[[o%`6zG |J?@d oj!_ _2D:;qja911m<]ܰ@ہGe}h5`@?YCl,s - hldJ+oX6-IS&]ub\%mR![^[7ynAhm IJ2Y #\wKuE\|XS#= "ߦҖ'Jff&v,lS?^_ 0%#)9)sjL99~X]tfCFHhtF օa|]~nؖWV&Ltq^jY1lCs-]ޱb=scRcN{HeS`ꅲ^:ujX=9 xt"DMGi4n.7KS5w.=_rDmX2>,L"7cՏ73SM7>\# kBPuE7X.:3/ďM!qA>F'8&*|9-r rNE# 0Q!j_"\n&q.6$b4CQY#W{H, ?.|lIo9 \,ͯF-/0gL,)2_+s@$Y@DW >\ }7u L@ڡ((c55?h\škg>t$pleF cZ;Uwh ceC!לqCQY#5PWE4 HJ08d2pi K( C__#?Nz=r L`j ФWʺTdu@-M4r sв qвNba6*\4Q i +U%VI.yp HmRc}9WqXLU1l7;< UE"}aOquaY3>ac] s=F 4WBd]K5;&G=_rM ,Lg$,¹~M7_|&[GPz1y=c覰g XGŜ!Z`Ζ8K*_ڨqALd'sKe"9ar$K X0PP[- nayB NzV .P0Cxdi8cA| [7L^U5&O5jYqA9a$p ?eEdtf=Mog,H&]3< 5rO?kRە>M5uxM[ . M7_|+~N v5k/j/~SEN>/8vNRۙ`F&Pԩ(nw!"M6`_$ v?Da4dzuW Nm faG\ʜ_2DP/'*WGyFd?,&_JZ@@ڡ)k)}lRUj zRKl8p7l=SEduE$Q..'c,]csIf%# <{ -_8?uAd[3-BJIkҥvn1s#PqkQl(WH~σ-FiFıc&vq[?&1t[|jT.NȉdLd sPk[_&e'"Itqgk؞Ŭd8ei;k?g^#9emN}q5C ٙ3>qc$qCuEVo!K`};=_0F"rÓTcJu[,`15b4Y#xoۙSl73mK<[.w1## p@5њ漸^\%#o^1IK,WA78%k[S &d_uF ޅai^\Xo H1eRbxW_{99LA1l;kL5ۡ=*7d5?h\^.YBL` M ?ȱGE.:b[.'] oNAEkb]Zus%" <{Tj>quAh M7_|09? S7S7IWx.YjEH2i;((G_I ')8!qCIzK,WrPgt]$Al4}'IN{_?x6bL[OOKQ}qb=vtްL[9LqG45@tiPԂ~u>`c]|K}=G Ңp.|X}qhޒ!`=J您y@\h&`7L,kS`!O$dYntW}35[^EGIN{o;=Km}^YuKqsF-u!\-O@LU3l&Q\ vpFO(["ErjM=l]K5;l2rNC'5!u?-IOhĵy]77 SkH #8H޼FQ0AhMnwjIK&_tma9,K G, ~Pk SCi} n@I}GV_05DUxD)-9cTY3oۡ)I.RC55ZA(=ҹs>`peh e j}!CfH]dSuvVP@87M~bBGb1#YEA/ضkB_ҥ[kkuSbreK=`Vi5J M`A7-5#bmBx9-r(d[9~^=@tiu3,I)iksD1o[tw yx?Z9bI|: ,/NSЌ&Z\x7vfa5ۍe?qEduB*b.'ZdƜ;l_qJrNB3 <{qkC4_t:Ah6 YAJ sMͻ}r| YYJ<"EGjI oJf)#/Ɛ'_qLAj}"@0d? rG PJ?&> Id񂭤_2DT5j2yx+Y9c1!Lj\IL3ٔ/} `q<aH7<'vC1 Edtf*o":KS7q5 AUIж[`b4wqC)YBEuE餕3.Yk*NF&'1~((GY&3PMh%#(Y.NC(d_LxhPk[_EQ#$5u'ȳ@n'!^;EGo}fΟxS+\kb"0@ڡ(M*lˏv'? {k8"HcزCqCG:[Kw$@6.'ic,?q@Ex<$8"Co r!_Z%іi6 -bxW#˅?iS-H2?l;K=i|&4xPnux5~&J|T?dWJ'o5[^EG_6}!_{Onض>RcWV/=< 8]mZBۡ(7n&媜:9Bh4RB]$p ZFj*8orv-K;SD[': zF.LbR8Gy6Yob > ^ >uWE{HJF`5Kff)-o=E%#zY;f|$6$97i[URbi`[> jVH_2\:f"I'E)q{焵΅5AV2p@ڡ(#aׯ5{edDu`_\ſ1HvV=FtCco.&}aN@^:?kT }q,.īb0>q Y#Z/quS ghޜie`il( q@[ܟKgLg2&9,Dhr,[9>Pk[l ; !}(_3DTƚWV7@Rqp?1mwpp(?}`m~SuuCj%p|r%uluIu*Eok~7K3y6 ^:Ͻ$ ~BU! 8)FoѬO !'`> i0kSxZ<1ʻ.%s(Nih5:&qA7hM =wa9,fnRT%xGN Й]oN 9IA^yqDѪ5\AxEuT) z1l!(7nvle%惘avpW -z{<H&]h_S jw²^˻Jk} <{ߟMu[mAh: B_ҥ[kWkuu5HɦX.=6@O`i.I7> pǁO1uUvDVJ$,]]@ vPj [Am6}tJK~i&W8W}K\8byY3E[(I.!}"&ІB>a,CCwmdu **=$]dYD!]P? r!I`Kur f\& M6_| gЪ19#P- T\6m'Y=tٛ[XGA9{gKqcr,7wTxW[dAl4|L&00Ii$evVVNRcO,w&-muӔ&hh5ww&;ٽ<X>aCm=E"KMEo` |[&=^)`Y#nui()Gv_M, Jz .*$|`W5[^EG4IO!_ZmDP/˼yDdq81m;-]޼o!(L3ي@53U X8J>aLaj'Cs06j!K`};w'Bi%"uC!v`iuAsfaI6EV~bҥ^t;Pw.ww{3*=F.w1pm>f)Gv43LnC&9,sœ-[9%MR)~i P< d%lZ!F/*4WVMJN?-981uT(L3قB5B MRg>a&CnEEduIS$ud~.&]dY;^s*%#rUg!.1c.;[mAK7i 1mx^ v0m{3WZ) s3HJd= ##c(o9CM Jb}O$d?tWiНAo.)tO9I.ARZ!p1эWVxjL^Wo[uTqMQ}`N1֘'eu`PUv&nﳹu sF *"MJ6n*"K31g>%2l4CytmuzrZWOҥMϘgP;N#X/Y8N` x4j_ pA1_q6M,kSJ!O$d[9tW 5[^EGLCIN{oL,D1ob$y= 8[WyuޱoK}ae~{e^;ua1jrN7 {w=kP墺u= kM7Jĕ^{m{0Wup iHwKdF8A&>f(AA1ioȜ 5 81f ,]6kPjt_ Ji )N{oL3Kpe(  8b;;k^'(p{&;65Qccm,m܅CG <;!K`}7h3=RrO>_pvE!k71'xj{b M62<ҥ g?u:H?.]3qP!ھ_(A@1i R ,1f ,]ba6kKk'L'83$!_; 1.o}b'xz1l>=pp(}aJe~d&?⚭w<YsG hdu$*]rR#{! FuB]7~C,O!Lv?."C/ݶYr 9g=a v7OlPٜزE pT̐'PqnsIl|O{dW;5Pj[l 4Pufa{i~*"WV7@V999by;k?ғ^9/5w,ua:7(DȮvi )0.}o=.I1K|y=_<*50%o!Y[ClA1Iejmd!-2 y5CQT{[1Q=EJLaMl= EdtEb\..K|~=^]sQ2rY!VΏgu: =ԏ ;ЖSm{f Wu D1?+~>6iFO]G/@1n!9-r*k8"HZc]CI=G aj'ou^GaBjIo ZM|Dh ArO}u>UA!|Q`OusIԏmґҥk#ϼS([`UJFE0A#oC}#QwnM[LfCO9,aBKW'@W G i۫tB FnNzr'^!%4W_yD)gzw|6!(Tcd5R?ua1Q#t ܅Cw0CPR^MO,rJ ;'h=_86?+sġGiAY[yl!)7AV*/UҤq.5G#*jSJwCrFB8Ai8 :&qA7hM  "`q1fK,]dWPokf h@s̳%!_^9;Qo5xx,Sc9[scuޱb~/cnF55^!~j.KokYoR.L` H ?JEhQM|bjM\0y@h ArN?ku <{DLbD,¹xM6S❻n7YpBӅd?i(!H?.ğ" 1J&)aC2+#Lbk||wO$ު?d,5[^EGO mBZ_2د5FxR9;c1m;kLۡ%L^a{dh\;dk8\${$='*$Co`p] 3]&/=V ὿53 :UobSU_A˚7EVa^ڍY#Pwne1I+KkxF|5>f))QHd.%"sr , _8?uA[1B7-iK9>v^ pE汵ES<' X J!lN\FK$_( AdfUM-B"| OԎEdba<+j7k[_$)&P f.{:Z!^?yWN=d 9i>ƣ@(}`e~w1uajp9N4aC=@#dulmL&6r,YB;&AGeR?  rÓUooZ[A:qIإS`-qS$>Y 62WuEhԺ .a,EtC1 GE߈j oPK6]dY0'*?k ;]mv'Yylٰ+Ev M7E^4 UEnPO[D .$O*,;K$X WA/`0&5Kޚ|TKbкT,7M<_+ /Pf3^s' RccyQLZׂ<ϙ_J;Gn@^IfS55ܫd@u`>r>`|=)(**o$!`.']S&?^:?k QktSͦWZ¾[mW^6+:AoM7_| 4Ym jbS޾$.36E`n3ܯHOp_M,?{0s$z{\,[>!Pkm@i7&dN&!^;9]؎G+?q9^WEuްb)NOL3يRZ&;م:6vmL`Cul[F Edt$*+@4E;ۃk=^aj'CFu^OkdxF*ѓd_:{U`5NR3%"ʌRœu!vˠUi& I1҄^ C =S<|ֺJyk߹TNR4CbqQnih/e&U4n29,!\D,9zd,Wahz{1)9eu@s #l~:RcWVMVwy2y8uҾT= *}tN%}X6[`z7h%t+=ExEldJ*o!]Ka)G?-Kkm tBXk]N8]TM* cwӜGRY iB^0 #Z8_XFE0A#nўN3EX_MkL4ktqqr[p/%w G(6kK-=X/=,M:Fis=s%" üi kMe]Ahd °9C‰tVq=C H!}JYQ!)9`(GȠoAj_jM}|TO<Ñ<:KW3l7 $Pȳfi!^:D1RBTE,}v;b;k?ס)(l}>5C&;5kp}Cs0"pjaAN6\Y\̝1\O2%#EkS>JyuAM[haI6h+Ҥԋ+;#Pz09|LH{.YjE2i5#`(&Mg' T%.|9-qC'W5[^EGINwp~y i83;-=ްdL}`NduaWv>aj 2=ܚ%duj(k]rl3JS7 >;uQRHT]S{Ҁ+P!Ee[d#,#=!\ GaXp+CAiuOJIN{s_3$RxEdwyqb޼@/L}`=Rw4uakvM^L`#i@MtlmQҐ]G#5;%?^rOE"S>M%]uM[-imM69 v5m{[We sEuVqpF@ d pKguLӫE}wY (s[A~ PjEC'*jIF|_2DT̾Q'~^K7=6yF1lsUސ@ہ.gL{5jyhkvg?ۍ ?s]E$u'H]cSB5ubS?m <{ڢj ruxp6/)6Gi1gAY:Eu}dw7Ji' C)#=;~{dmܭN$us|fqoֵs0i&L ZN{oDm"TZqgIMGY)Ƭ`Al>7R0PƎ)OW54W5\Z6z7h[Ʌ+aș  j?H&?=h [&Z^*%:Bh]N8]T/M4ޱ8 YV3ﮧS襓<hȺZs/I:`o5#8A+ 'y<^q!2Ct,ةi\~lA,|f@si({!\ 1VV[x\Ku9bQ_Jx@_t1{e^;uazJ1>L\f$m=E. Eo2I<]M#s&YE?# r1jYvξ/ZCo ;EҦN?LUz&>wP>F@X8)_"O^y,kW|wO$}WDW'  UvEIN{o^x HyRb Bo?-Xx]u݂ -ӡ}aQ|h\objp9N4aC=R#p߷@9ZW;l_qw'W3+%"ĭ!j_[VĶk8 MX财^c 0OS/2XGE `0wHT p7i/ C |9$lxh(,bPk[_Ei c =/^aGF~_2 HVmRcW=-?,29_h@gmtR{e?ua:/g>dLenEZ"dpEM!B:#S@eRrN@YғU=uAE[Iԏ%ҤRY6#͇'uEbJ/oPF`Ɩ8J`O qA''M M,)i9,fbK5,WA7q%k[_EG|t%ަZ!F/j4kOEcHh1mQ@'L[\35Y\*vNL`"cƁUdwjm ..K[A=^]s.Pr¹yj_[<zIɺ1mM7E^4 UDP<[FS/8vMGۙ`F&P()&MDM -3L%D=m$,WA7qp7[_$)&P6)VB%!^~>`q\,u8p^Wcuްb'*C_v*zu`1QVxCsCǁ%+}sB]lJ S7;@=^`LCqC1 GEhkMoI&;%gf99Q3Y GRRtwB'K_K,&6! (EW)&Mu'z%0wY6$+oJk Hh d汑br]#Tظ_GK6W!}u7nۡcn֞55^!~jU=F4Kffi6K ;dLK,s~fxhW/iX<ȳ/>!^rDP/V&WjyP,?-9<7[uTLq55Aub:xhvNY`Laj ?Z9}Et $2".&]+Su F&rN/crU=uAM[I:2G[0'}Y#wic^3H75K[TNF@Kffp?)&ıI}O)ݩd[9tWJ=I I JкAkyeFV]_3|זQ,*?.UB1e?ϡ)(sc5H&;n$pzmME y#\LZ>;&A=^Z]@ڑgn}l5?FqPW>YL`jȜDHC F**gM!``}7D /~-CrCm\“]kwxY:AmԏE-\D#~=g.=gJj4K`A=lObk||wO$ީd|,W7[_$)G )To+F_2DPyDK?-X-_;ޱbIyaq[ njUVL` `K,E JA.'~$,$;&,=_mɃ]!I‰bv 7$K@^ #Z/"uS 1,S7ʜI.w'L(~b qoP_nMbuwX$v7*%dW%~`~[^  *i MI@InGFVϼ_2d~#Rc7[/9R{p=1c.\%'v.y{lh\;dk82Li$pc[eEDH o\g`x]bnNF>_b;! 8A  !]v˚$^ #>x,S 1. .Y!@߱ qU''He\%#qǶ*baPPPk[V oat8~B^_2kVVؕ1Eywyuӌ L3>N{H{Fn2Ohv>lv}heT&}Ð\`S=K u G)=^VsC%"qrÓT}"ux'$7A+=ҥk >PWVh HX<7G6F2Ni8#(g)5, 7Q!.$<t,ٳ$$zuҊin|^ kJWW'EBJ?-6";B޼@D'l Qr0Euh-hcYY ?PEdto~ao.$}7`;&,>>%+!L98Ah M7_ҥq+4ZP%͆|ֺJyF&9`i' o# bk||wO$zd,W,w/ʍGJ/ydӯd_;DҪ4dmx 7?-X_(I. 5^!<$socv,72*ێy1AWduYTc\LZ>;mA :7 MXE/l[m1{.%yCEM6_|̐ڦ `W[>SH7D u:'F@E()G'7++U#, zY?ǀD Xe)-΋kGGFIN{oSD4fwygsK?m93;kv}avR&; j<ƈԳ M ?E**2$!`.'s`sk& s砳W%# *MT=ñu씸M[i>Aw^4?>P͆7;|~H|.Y+@ɖ(>f)GvaL&QtA9%~$*$EXW,IGs P*GF #-\Oj>ҪRjx+0t"1ls=ޱp!Uf[H?T_3Vp>L`j ФW>E|j]_\&9Kc3h ArN ku:]/k;4s\x5Io~R=R5RU5( ʶ=@N'oFkJff~ǖPֈ#0EEw9-O ;d|WxG~[o *i@3 On;W#xZV5fwPg{~qs-u!L)}`#g"hUn>`Bw=;k*$M!\DQMKS;A=^~7%* A_Z;U !Vi>%*;[Bҥk wC[S DX7M5FE,i5OHR q/'_MkL,kt|@[dGXA Kiw # T_2 Pôl_%TcXuްb)NOL3قS8ZUg8J>aj'Ou^FaBk1odr,Y;mw'*3+%"Z!vKu_Ghԏ$>1YP-g*XGŘ!iF[?(EP_MkL(ktap$65J"E%ੋ5[^EG[6IG!_~궣D"}ӁFC(D4]_\&}K3c3 ,arO?kRl/_Z;U ![a7/}%jY=#u|1Ƀ=8J<[.w9#))_IHc %.9%:$4.,9Ť&TT$GI,NzoZ &bܪfbcxc¡-9^suްbLWo5 n%PF~v q$=' Muyo.m;s+<>kZb;#vCo>E^6z/}y;e1X-4lH! K`(Gܚ I0I_@bސwX$v;*5dW%;e+ 4P fNzoD{D,"֕[3^k1msސ@aQ@%q{^&;6Evcq>hi$pcZtEjm ..KYYs+<>kZk51gtfԏ _#\W5 ^X/Yf=D'oFkJff$ q@z-R1,k+!K$@_da9[_EQ#qF #-\O`0RcW_)WEX3-c2@IL^NYU8 u腺1Q[tc] v?=F 4M%ltHcksn=:%#0]b!k_yAhf IJ䎀hU 7WuE/w.F|8AD5d1v1e8'1, |Ƕ*baPPk  JUNzoZkRcWWIvqXXgc_ @D!L3ق{^&;6v>aCy=i"jio2|LmK9<YrN>oZ֓TkA[IeEc?B#^*Y /E7Wk5(oXzFFF+h7#]G/@1n"(9%s 1Q=Ejq~=FaN?odr,Y;m1K*7%) <{RWk[4U_mh׀7EV^79>#\$u|Ҧ#X/O="JBAbL&b[? SMbk||wO$ddW?>$huO6IN!^ptت0RcxWOE)эen1myR@١((c]s55^!vj1j8"c]$qK=F <òbct=;\S=&޷Jk} <{SMoumi6EVb 1ܞ^ {MpO˦IuE_VwXI#KE =`Y#n!k(~ÀT'%L, 9/$4[9G &b}uF ޅc_3kFGJRcWVI߈Y3\b[s'ϡ)I.!wVB -1Q,4Nj/Cs0vJoMKiX@2},;o6rO #r“To%[;Ug Ah/ M="9k^i#VFbuEhE|ZY="#c5 (ޜQnWIUd#mM E$z9-.N dba6橋5[^EGO mBF_3DP/Vȶ:3MqTU1l!-]g@ڎ)OWL3قR?fuaPԂI>aLal=FEdt$*ʋ`}ڃ18;@l=_8;_÷;c4;'&Ú>$M6_|+ޖxW#˅=Ǭ<5dTW2X/3vF:1i.I7 ps"OMbmgy9-1a|,]ba62~c_ P1+w=ϲdNzc'[cad"DK?,9f;k?է^ORdG5\@ X:&j8"Gx*mn ?QEr2M!=Zx] oh rO}̌$cU!jW56(IM6SݎY#/ԾuE݄w J||4g7_,kLTu}s~"^dsd]@ ~BPjtcS i'.Ixqx`~}^xQsE)oqb1B~u7Z[)(c}jN{HeSj zzS48p7m uFa.1*oZ ;h WqZrO>orT=q;uAM[aI`y$htX<;LDؖxk)RKw&+muTLLIȼ\\vh1Uvp6La Ml=)EduZ]ַ\&ƿKS@*=ZrOC+ rA_Z;U G}ش7kM67؃Y#zjuEfXR/V=eSv(4JjEKp'1t[Bms$ú,iʵ7K  JЙwgM yzZ!p3*WVj w2byZ Qhu-aR}\ =1QĹt!mn#%wFBM=l\¾2Kc^:>k!0l2=L[ZA/IԏS`ccҥ}^PLKWu|5|X/YlNy4o((AA1i?5,sͦba6< GlG *k\tt%ܶZ!F/4W\Wq99c1m1-]pp\IL3ٔ/&[N5oY|>`l!|mيT*$Co`pyctS brN>oZ0QkSaZZЎꎈ U6EV7ҥ~k쥴PhkWV |HkAK=fՍz!@߄nbP,%"`_+avfO~Z1`6zG @J?@d mjb_2D0VrexTkX+;b1ޱF[iLupHR5^!~jPc vfL` %SE. )oXI*wK#\do|J##rÓSkmVvu=u% U6EV7Ҧji#r/SVusŰ0ΈrAKE&`FJg K`)G'7+̰q, }qrjL͉%E {icQ[4d =Nq!okVVخm}a8byw'm0 5wc3C50^e=[Ҩ>aL` ?WEWM@)"<.'#]Y">̦>;.Kop\\/I-Zc@IyEP UP| h' nnv;P 4@{X(&M/0 Ocm}wQN|,yGN0?GJ7tF \Dކ2cυ1vsky9K?,0^Au޺pOOWLO45 e=}hkwc2!o%CT)D(jm7!ҾKS nY[F1 ,lLvU2uy+7E^YtYPQ7u3`+Ui9 `iF8 q@P䝰&Otd\-$ûaW,Ԏctckhr' #(_3#Txk({ K?-X uޱs'g/,]fQU} A~kv>g$pZF. }oXID,|& s簃CY%# >i!OjLbZx U6EV˺Ҩ^ pCWu| wYJPj;]!)[6ĭ/laGZ̈́_2D1o1yDl)Rb1lZǡ((c`;K5} h\Z`.kgO>lJw= F**K$!`.']cynYF #wrüUik_yf }k^ #p}Z/uS DZ.8vn%`'DPf)G)ɒed7-$×<yK%LJ6c UFy3/!_Z!p1эoyY8RۤuްbGgc`N{HeSa98J>aj'l~Edt$*=.P]KY^*$]<5!jI¦[;UaIXhM2ږSm{f Wԉ_~S?FJAc 1(ޞlA7hI7uGbmCp9-p@*$&lW_c h<vn(F!OENKup1Vi]7!\|[\IL3ٔ/} `Q`hj\♚c]C[݆=u*EooX~;KS&4=_I6= >, _8?uC[?Bd6JM62 ݳ5?Y#j#=S HJ*f`#cQ1/(FooQ7 "9-rjLDo!Pj{qk e 6,_!^~>ʲHMaK_9{ep[(}`m~fQwh\7uk:uØjX=; Xp"DMK):|.}KU`;'pT%+ r³{AYYX5Se&M;;±>p>U_esE]|,f۳(N☛ ]8)1ǁ7(e z}9-gdv?&3x~vW Qkm[!e(4(k( roΉx}8j6< !U9@)/F5}}~h\.I4>aci(ՕoMmS.ٌ$Qg&yPrK3 1:UoY[[,`1fY #v/VU>S8H pF !I=_u&/7;Vgdҥvn iP;]stRޱb_IMY5^!~jzOYJt>ac]|C=jPjy?dtm  ;9} L]O?m <{LfM[ZБiI;mY>Ŝ4^ /BPWF5pHSNI.w'L딜/ @A7%#mm lv#LΛW)mvG[ql QiW KE?^'w'mM;F"޵|r|sAK4h! i+LgiqAPIEbmK9,rd MǐPcO bIPyT޲Z!Iժ W,yôNWrY3=RoIV}a e~=*b'煷M^rl!c-/6( wіrlrKYS;h rNu̍!1*Yg4f7EV=-|'tI#/;"zAHN|-|6;ePog/ > @YmD5 9ʾ{RPǖx(y4\6>dj!Ḃ'rhY\)3CUY(I.!d%r05V4ߓ(Tz==C&= $e/^ >kC z1 f=lX]VY޵la-dfxW#˅=Ǭ H~AFc``#P7D)/TL&1fT_GsjL!~BPjtqSG,E$ޢ_2kF}^xkxaK?,XQ>ZС @ڡ((@s5[&u`1Q\cO${l=Ttjb`l{7zMZV?1D-VLExP^1l}@+wn?57\0*u`shgzt*eW#M(jMg?t.%=;` y<¢V!Jk} <{ߙꝎgIc qM5ҥvn1PqkQlx^3Hx']Z=kF#J(QTeZ'ˆ%"}O+d_tWVipE<}ˑG+k/$!N_2kFoRrxj-LV+_J*G @ڎ*_L3قM ?&;5ث<ȝqd$pleF q9;>1m1-]3@ϒ`Lae{edYua'ggvNL`j 5;ehh&}Ð\`S=KSu&AGw'3+%""! M-c(M=[9:=Y 639WuE=JpF.w'DfO pp1Kg&U19-s |Ӕ,W+Жw i"FiNF^pk؜Edq1WZ1l[s-],ղL3ق5^!eﴅL vtLajlYEjb7.&] o@El=^<Ӂ rļAk_P[mMv6EV[Ҡq> {MɯdS 1 #l7M(!EF&'5/()&M?'%2}5gf$z&:9@,wW.fPjq^ n&oY$GVҐ_2dx⒇xEhP8bQ_J+0@ۑW:}aO}15^!~jzEL vf<`Bu]jjb?`l׽owRhs<:l%"1z rl.=GEdt$*a+.& |[& bEq7%" ]M[4[ Lҥk#kjᖋu j(7O|`i,J㘑~&[?DL,)[hE9,2Jgu:x ҄!$) 'd?DW]yDd91c7 oan%m55?h\E.lL>aL` H ?mEW2eod:S6u:ϷE! awLou:6EV[qmY#\kz| ȈX/YC3`#o9W(ަ)nu90;LfC. 9,qsBC8W^VPj m2boNspp H ~RbWwlqXXgc_ g/U?ȼ}aN}&;5pVH0tpi[a@rEduLbֿۆ.'Z;_q*ġ8׫Um4;'&)ê6C8M?;ޱ>Y3#\^0uD>!?JI_zS)G,l %"aBK[9,[^EQ#Y'Iahy~o}qx?,9[)auޱo|7'}aN{H &u`PUvfLc$qCs0ߘdtE$|g2N.&r,Su~B1Z>a׀< !j_ZZAܨ IS`ҥ=\Ҩȃ$hZ/Fd2`'oFkJff~4t&_tm>9,KB@dWKВCG0mȫ GJ7tF \D60{Dv(K?-Xxu&)I.c4$O{HeS&Z\n*v\=GTKMjo\l+K`k3 i.rO?kRT xj`guv\\/ԏkSҥq.5NPuEpllXVpD|Fy 6Jb @5P#K,}w ꐉdrrW;ҥq+Pˍ;qHPb_=b籼J4N`|Z;IW IoXkl3KY]=T8!B5u%9!hvG[;UwOdlM6[Y#7w.Ń0//FY&9`iK_ _M Vm%#}wYzK`,WDPk[_Eic1B(kkJ;!Vj'%X-\-waҾ@Z(/]S5?FrWXpLa M ?/ME6Z2I&9`CnYG~=^r%b&{! jIups7I6EV1ҥk-#jjS0g|*X/_="J3aL` ljj?=+I4KSu~xª_+ "Aliok__The$M7_|+)h v5m{CW; srH|s{~F'E( pd!M,kurjzܔ,VoW )i P<9IFD_2cx4CyD)g6ec{wb I)(i5HuasvZXrc]BW,=G 1Q=Eh =Feͷoo,+H yKSh r|rNx}3]!k5􅉴\w`/)7V+1Eҥz㘹:T˦IuE_VwXj'K 0U`֖4KffіR7v$L@%#wssjǕC]W,X~Pj[^-i-֑  )opkͺRbWVI?-X9Rޱc"(oz553a&Х$vj$pCu{EJm >_`jw+~ªnOJk} <{ߙ'IV\aJҥznPl?WucŠɡHTs=I۵>`i|7y( 1fLO^d0s:,پuh0k[^Alnt[sv_!_ipbزjWVU|?,&W)s Rޱp{cR`55^!vjMфI cn$sܫIdtE${2N.&iw,S nY '>rNLYY:AeԏE-@D#xo3Sn2W-J=bѫ"ec=J+7(GcP5!bm %9-aft.$s`+j6kI{ +GI8 ZX̨_3R ^"I'E)q{焵Ι1ER0@˧}av&e=yh+7tCS_RE2M;3]KC[nYG~=_`bm C@yYSl.Sj Y6EV-PnxW#˅=Ǭ5HDPX/1vF5`!t'7BV qAT Ez%*}9!@Dě@x/ž )9VpQ:ZbUNt_;_xvrewQֹ2Ƭ04ycTY3>oq7c] N{HeS^\tc'煻Oфf='tj_!K`}7D>NrN?m 8]͙k!t]Ⱦ%G>)c6Eҥk#jپu_H>.K!`''2a(/YA1iآ/_ca9,s-x,A 9iwԊZ^_3 FoΉx;^c?7@ӡ`L7Rpl\h:BptCw0cT t box.'r ;&AG3%#!ET8iۥk_h*IoM6!d4v PuEk3ZFl42O) ra4A+#L,.K cdba6AJ~GJ/xJi{`rRcWW!EjKu1\eu/մhL3قRZ u؅JYqp$qCuUENt"S]_> +sĬY^RJPRlsNL6=,"TGy''P+5~@CuWucŠɡd w|,f.w9FzZ<@PM,k(y`/d:CB+I Z%|hikLbp(ysK3F1m>˟@ۡ)I.!]8+D޻WWIB?,X1^!AA&@ڌiOW|}l5g\XXn$GrW9IV L`ͱp#-EjM\m9@s|}uB]%XU`n:,aq&+I6VM6t9. i0k7x'aLn+,J )9Hǁ&07=t$|?!2̬Eyt_GGFIo(TD:ҪR`xEcQ%1lQ!(M*4w&▹̄f34eC_ ,z}Y fbb` i<]0%LA1Do?j#I$IhY00=`swWPj8'X*+͸j_ܦ3o]Bw;+!2Ct7dQ8/SPjIO+TAmL2{!A$kqVV(UGG'9w$+)bsSv/5_96eU!<3r?ۑ ?s]E$q'yKS;&'"=%" Vi9LZ7U_D,¹M7_|^>=EpH:SXpJ=l⹗2 BaJb ۏA1'1n*|gt*$:WRg@hqX< #>Z!p7V VKayEiY-0ګuޱoғض}am~v3u`1QV|X)=Ft $oÄv.&]{dhrN?m <{a8!^H[X]/ҶM6 dp"n;! Ou.kIlM6Ʋt[#PӾ?iQ2H>!][,MlmG/. jM7oH&#{S nXZοH[`rFqvL5!.yy#׀$Γ jɿEU}wXI>=K@[:OFʔYmL^Aj%#$c,x2Pc[[8AlL'PTIN{^_?#l(axx~֓8wQyY3=RޱROWI556%98J>aj'Ozu^FcLHMo yK;&)p%+NrγRSguy]&7AV*7M_^uEzw.8su}`FJffYI3JԛD8?$y }Y0 $Z^hvX<3 =!_5.WV7@"Ƣ,p7"1m;k?'(M.+NS4A?窸PjYq$pM-& $@A.'r,]~L]O>kz$;Mb7KY]QUԏ$i\W=gJs=v;GrF&n; ( > q@PŌM%#iI,}=} t6X4؏ qHQki}8pyS ސ@HLMY Yܬ*tpk?dl [xj}=f] of9/953' Cak]]n{tiCo*mB/Z|t?;lPj0=S/ ="J0i5I2!) Q,"<bq.rzK,WrPg+$)_( On;W#oS`#ex ilĻp!s=*'H'l%[XX&5;7)>`L`n%#u 6]_f%;*m=_ηBvM-c\Q9"7D ^BӅ}9_H?(_="J. Z5)rPK,k.u *$|W^pm{ۖA,ys@sT;\k\Yj2rTkw^q'TO^}`]e~|XX:o>[ls]:G dt$*ȴ_K4qh MYm rN}3N o_k_ 2(;lM6[|<`SWuU|I&Xw*4i.w9[ǼcjX)&Mx":b7%*|O{d$>tqf&ee4``]G/@1nܠ,k}) v=bKW~7w[I ,c}n.Ng!^48= H~Rb7)yd9i[(I.侔5&F|'vvjX=; X"DMIi6nWKyy>&?Ǎ ٻC+rüWA k_%G ӥ ;>ŁV^# kBPuE/JX=FP''5(YI}Aɹq,%)F$.f0PϳS  LINF^|DЯkxDhl?,pLQYsu^OLR\M 5^!Mkz"Y^*oECEVj$7.&]ho_&Z~#)Z%rß,FkEWxA1Y@IzIoM?90^? 0nGW[< wg@K="0i' צ p/'M ,|ҹ=hǝy[9bg=[^AotB 4jNz1g\D-V/xK?,5c1&4@ڎE}aN{e\ua/g8J>aLaj'Cw0k$d|EM@)\*KCk3Ε=^p%ΌrlG8L.;[mAK ;ҤmM;F"޷|`hsVB:FEpG@^j)&HM `:=! Oj^*$[ֵn~`o[  .y ݄YN!^s HVmrRcz_l?,X|n2[jl}j %zJO8p7 Q};AhjM_,Zґme; G>=^~>%!_kowCOuxs)7Y}]2^ pE֖7x+Z,SHJ`<=`F@JfffpAdM&1bD9-p$lC,]*Xw"~@{t_C JNzoZjvj|LWVMNq9>1m>ްbdzRSN:{5^!hm Z_8>aL` ms;EjMRlǚ]4&rNI#A>z!qMXyWRu.7A+7]_Y #/ͽ+;}uH\|q@;Fi` J8fA[=N7nH79,R$y`dL9WyKJd Dn1KLsRbW`y{Y!2by;k7._fpU!7(k8"Gb$ GM^jM! RZ_KSB&u:Ϧ @۔j̉]ud[m=Љ0C.Dq >߅W=C$HX|_h2HL7(ޜn38L Md0}1a ,]XW7c$GBhX< y{,ᳺVئux~֑8c{vl |W@%'5{^&;6c>lO$}=WiJMi2RƊeԳS nYRìR:otHLY;]oJ ҥz.cЯǐS_$]{jF` Jge* y@%.q{bnm%,{ 9jy$Z!NF07dhHxRn0Ii{?%r[J@`ひ}aR5Iul_g5 r#exoWjd|EM!BǼ]GS^@@=RRa/5Uq!jYSZ¾[m_^eALYwҥ ilQwWu_RH 7|B.FKD(;tg1e!Z@P0L, ļmtr$ûa9,W%:Pjtcd iuF ޅ.k ;8sD1o "WxV?-X푇U!O@`L}`O{HmSw&Z\Ivqf;$pC0>lj.']xZSоdrN=)Z'rß,F kL]F[m<% M6"mjbS ޺J3Ғ=ib Di' X pAT'Pqbm%%9-O,|z*^,٨eA:[_/)'e̍I GXF?3!L7WEFK8q9?]1l~%]`)k+}`5{nl&=HvqXh%$q ?]7Ef Mtj=;|yoZ֓TkxnEW7B:AhfJ AJ9 #\?w~Hk@K8 u:'F@E()G'7A6'Pq%(|wQH(X9u_,$n ,i(!\Z!p4* WVx8ց8k u(I.侒 ua5At!CeC{ndzjM!BN]dY; *%"rÓToUO?l[m!ѥԏIHIJ[AS;N#X/YhlcSŢDrJӝ0 fd%c[\G>uB]/0^¹Un[zޫi!Rqivm1䎐{l7W's'f X|BnFc i8 Ij[qF#gt$=!t6C=-,/^pm[^ )Ƕt8JmZƠ HPaRcWWI/EXscs"ޱ@ة=L}b L5^!5hD-$v2L`A%~jb'` lQSu =_]s^ r q_8?uA [1B>%M;=벲t BpQUPRH؊7 vEKh[+ Ւ>f)Gv&Kζv)2lbWd[bWA7ɵu JШu N{o^Ty|⨫)W1?,X4_Ju4@ۡ(4Wז15Evdeb1j8"ەi /GEduBkკ.']ow;߁=_86η Bەʕ?MMuuG$%-71˜_8?77es҉h.E<a x.(!{nIS5#7,w}C$vdPY& I@kJj$ V.&] 3Ogp r MZW,M61޴ Y#+Z< /SXVG;F|4j)GȠExM `S,k/sn9ۈ<9[_EQ#KeB3 ([#bQW'y-X \)ccqf7Nyn?G55CXb=Q4>a'=Fj*ͿمoXv]_-S+nb^:>o^U=lѦ[UБ' Ahf N^ pX/WFR(E@u]= ٦iBLC)CMW %#|kTRFӖ+.EkK$&LuF Yɯ Nzk'sktRbxE(lE)_-|юګu!OLM`Nw9&u0㺖&Ҁ16>aL`v#֋>2jI `ZLx;lh2rNB) <{{k<4Y<_h7(M6 z#xuEpNXFD`Dchc(- .C6^_%#q}<$6dWA7WG[^Alo c&INz g9ʗwkLMTQm;kֿc<55?h\d&9>a$pF y ;9HoPk}7Kqh hrO ug AiYnLZ;Uwi7;-sR i0kzzWu~5uSr8i.w9li px!&O|a^尉&:W`R1,\yiڱi02!K5u^1lV堈jM_,Zҙi4<&?u} #r£lygLu=, x?., b7YҤ:#ju3B= "Ѩi( l:&d@1#%i M,ЉO Vd_tWxi JuZȳ!^d?3DP/ֹ0WMõ~?m9[Wa uӖp[.)L{}\A:_Kv`L`"cƁFMi M|\ZKSx ĦZrN>kUkVզuC]Ahf/ b3/| sMnV오HSX/Y `iJr? pǁ7(-=kLbm %.9-t` d p+׮X:ȉ-t&*៖2ԝ? p@M Qd6}1f.YE,]x Я9GbhhmI^d83 H1atRbyW_DqN1l!U!OB[.iLy355DOhkr6H>L`"ce=>j5`QLS;I=_Bv ]¼Urk_t;TC-d$'[tHܔp=̧BZ!Fb"iiFK/!n{@s>?5,)[59,OBdo[^+, s/̦!_g1vRcWVMB?-XsuӜ㿍^IMcF55 n%D:h&gv lCs0J*Cl_v 7-?.8Gە`Ex]E%s m%v-t>##PվuEZ]7/8vF|O4%{1RfG&54J̈|wa~jbL>(dZKG F**k$!`.']SE&s'%# &{M.;[mAKeK E^ u`W=cfsX'7d5N4j{di4e7L,|.\̩d[,o>W8=[AFoN=w;OnINzcXv7qgLJ,E OM;Ҡm0Y#ǪʄS 1`ΗJF.w9 Qb_{m&3"d%#1p(y`9d%Cu+G+i'oJ0sՔwy/Rƀ8RmQ|$)(,&}>NS2&;ٯ2a<qe$q ?e/E.D5`rLc?^: uE# ]!^8M"-cDuԿhiG DvŴ4% >PmsDž_| tKi`'P2I()&M\ ا'g9-O cd6|+ ^Pj[^IlK^ fJZ!p3g؃1EMiEG)?,d&k o+j}a!S5R!F巤4vp͑#CCdu$*p = ]3fZ.8_? rUoOYou5/7Aw>';DI=zG9=|NN䪮Z?FȖ/%ۘE}KcPI,%"|wQ-੖rfWTPj{ mA,yu@s #F| $"}fW yE)ofO;k?_š)I.cbN{HmSB&;yv2*i$#CEbW(od_0Sq@=_869+ A,ɏ8LZZБI7EVҥ#cloWZ[gXU3wJ<"|p4$ N(GȃO M,o[{%rjz,WE7 \hI@I}GV_1w5>RcQgyD)3=81mUޱm^uGL^Nw{H&;5/|Xɯ=~#xj]).']I#_`;C&;O> Ο͍M:ΑuAhfs -7IJ4Y6NCWuE tw^.H0l֎4MO((AA1i&Ptbm*B9-O,|z*^,٨]Ar[^#iK.ٶu.vI!_{OjRrx,.9:bA|ox-c5N{HeSCj&ZYԺvqf8m$qC[4*HjM\rwS;&EZV>nT8[&l[m_^r-7Ĝ8[Y #j#ISkt=▮~F"+cc():@|ڴ&Pt̖|wގNdRLWE7?  М53N ><1 HV[Rb7]_DGXage?yR@iL}`R5h\2ul2*$ZC R3M],Z$b3V&?uM-ƒB( @GtpJwkFOu⤏q \/B/Wy4'H?qJ!WI, 'DKf)Gv1 C, 9,$@3Lv~E[S';ZFI% d汃{b"dŽ K36>1mqn.ۡ) +}A5o5&M`shkvH>L_$qCZ%duGaMEN&]_`&=O?k @L[%c6aѠ96 #b ҄^ {Mz%yu_{HMTG+K!`1#z)$ p[њcoLL|sTfrꤿaK?<,7rGoDA &\tF ޅgEA^S#V*W%y,F?^93VmyR@(*RRO$&h\Zd.?>`L`"cƁEM~ M@)\jKYg^"?obx>[k14ܟGm%1M7E$^xY &2W;SAH\ 0Ced4m ر,%8W7&5J|sY"MntWx v^U\D-VxE)/y3CZ LO51uasv@q%=FGCo ]3w=_+%TZUiI7YV3=ҥq.tܘPSGZ< 1ˋ;]=f!@i pm=-,"G,ksyM]AdYS9Pk !|ht(ʖJiYdZrxkagK?,6@rY3=R o2Q.-6R neep7(j$"󱁰$p$wG t-nssx;&M=w%"8GM-c*sEs ANvҥ^#cҖF(WHc X.2@٣}5(ޘnwy &qOj|TKbHz,0E l iL= oINzks{DLڟxD)g+c_JBH@ۡ( }acSh\f_gYɮ٤y ? El:MOln&KSuvOìR~otHL[;[mEQP1ضl}q96^ VPwneh>%ZY="!7_> pIU%^,%#}ҿ) $zK ,yWy[^EY#kB3 E4Nw!_d9se؄5ZWVMQ-׹8Q)uӸ [9'n5N3q&}p$vq^$p%w G(hjqo.'-)w;*7iJ=_rO%/~R$G=LOArEI7+70˜^YDjWS(J\n!Epo@`( {RJ{(.!-= !`gz-V QY+ V ɂM`J%b[@ l,VSOj;Ch5Aq(ݠAHTy1 3H"q@{{ra2:H%cG|9sGghKj *YOYP:" ;Rvo Q*v8%ՐCq. HNa_4YiQ7j1Sg|wJ-ugW`k(2k():C@K'Pqbm% 9,rCdPAWMX[^Ili큶t;wrn}i ; D1oRa/xDlu)b]"vDޱ$+c55w&媜:p,aIpzFWKvb'@\"KS@l]^&e rL[-c[mETl*+ҥk#ӿ'HE48/Y<ߣ9iʖM: p'f'79,B*$]+ >Pjq_[ Jׄ.N{o DW.EK_-[u 'ۡ(.|}16U E>7hR*>alC; WEduz f]KC߇u:Ͽ#"rðG HLJuAG)7/S-7F!Y!7G.= HHT<[9iʖ%M4A1T'5 "4}9,S4cdfa1CH hph #7sw8<WVEC(?-F19yR@) *}ȗH&yzF^1?l,aO?áEHj n'3X;h BrOѿ}3,“T=quxM[)&,M6"X )CĸnɔDS'>)D=b'æ9C(8)1OM 4LCU$.[9NtMkG+nẘFN _2DP/VK[`$xK׹8pT}_JZDz@Wf25y2` I1j8"ۅg ,Ed|@M!Xe},`+ G>rN/crToZ A:I6S`b0>ҥ@ DwE:S1g?Ki!ٕ`eo+w(> prGg%#s%hǝi[9bg=q1%e@3 On;W#x>Rc`oE)gki#CY2=SZ+wf? {e^;uazF1X>hlcFC(D4O.&}-S=<ٳ=\z_C+SrTGqOY[[,`1^>#pj S8TGKޅ!}=`ρ4O9]G/@1nM%#69,! A aWdsf7[_E` J#mݶbjG%ZҤ_2D:jWVzN?,6|_J.@ۡgcRb0K55^!vj\*ipCI~jb'\4KYk3=_Q=; <{ځk27 *=oҧRk1Yae6 x.Zp1e2#J&`i8 ݘ&qf_S?M,ЙS$(s[ A~ PjEC50Lu 6IG!_{bRcWV#=֑8[̕}u0,Od`t{'%]ub~n#w>p'=FfQdu_m.'~##|;&AGbuc%# <{ڒ kS(Gy$OgvEҥ}t#PusXDXopJ6 i4]K(/xf:[%#}wYC7LW+2Wh !I({kޯ[_ HxrRc0MM+?,X(!pOW(.[,8A?+jz"Y(as/E"S=>@ =_<<ToSi7;W":z}y7?X_! {`iJK/. _ԧ*,g[ЕDT]@u.Pj{Y,ɐ]2YM_3$9FvrdWV%@pĮ_0%kWL0P!}aSYd&ZY\Xyvf$ps]-E"SM +.KAs}ߛN Hl]8L=,WXtЙ,5;ӍɈvz0>3hJ/B:+|n42_? pp)c&\,՟ա$Ct;dW]7Wf F}K i.}g1ZRcJgw9mҐ o8b%Ov&;5nP-Y`L`n%!>΍jMc;tYckS; ~rN/c(ywoZUE&1;^>PuEZOh8JuF8A&4Kff=]t`'1 F|9*orß_jG6c_ )(if9Inh!&ůWVDl1VmAޱ )?c55= ԅR3|Laj G(.ioH,K;&"®͟> 5>yQ!k_6-УO?ĐݡY#HSg87K䀮4Kff)9HǁɒA,'1|[̸Yks$ unXW/wG &ɶt(J!_;D>h[xWD)n1mH#N(r^}`!m~R&ym4wqYf$pCKU&A"+C2K`s|larNQB rȼi#DMI7K[m-#}: OQq/Z|?PyC4gqEJ`k h5JeEK&1|[^D.v$*$EW/~s$i5P<3nw!_; DP/YpExPwCmuTN1L^NuaW<>am$pCE)tjndn.'WKS73'}%" <{l&-L[=,A:!I[`ҥ-"0x.;H3Hw|Ka+`.4C(? p@1U^M%#@f,نpMx# &LuF ޅ.(kJb|.axE)s!%1l>=ޱpޓoOsPp4U!{7ikpCVMo“fmd ; G>=_Bv'@ѕĠ9LKU9]U 7EV=ҥl+̟ €%; a'Yi_`'X?()ȏ@PN>%"Da$a:NPjkiD]TNo+F_2!PWV-x?!9bQ9u2$@ڡ(!hҠe55ZAt~b%vXbL`n$yM* JoZ2]G#1;=XBt=ks!"qMYMPude<ҥsk'#/ͽ+;}uH|J/k۵|F5J+fd',,kks9q%؎C 4΋[iZ!p3 Ax2Q4>cq@ޱJ}aMwV5?h\u.kg&>l sF *"MJ8nKSrN>_0{!k51u~/tAZwӵ_D DȘ    G-YoS^Q%#|l!`$vXWA72ln(ȳfU!_8D\/oQ!xER;-c{wޱ /LN6vrD,>[# LDq/wFu,7-Z5aCnYG~u@\‚&rÁE@Y̻mGQI7!?aҥCkk`bsUP~X 3ABZABJy4du()s>I /!,o_1IK:]W>$iuO IN{oL+>}^ՅKmTN'`1l H޴@HLmN}q?&;53N5.t Cy=T%"SmݿZ>6rcSu~=_Q>5vUi!V>KZu:AhI M79J^'emM;F"޷pxs-KVhJ+=J/'@1#+M,6|"2d ,W,Cckf$hu@s #_3D|Rc.a KqT1m]-]!H`[\IL3ٔ/} DdfI셺[v>aL` g!OEdu$*cBlC&]40&,=_+ɯ-r“Uo+[?lImt^ DeaaS1A]="1diFWF̅? @PcxT7o-.rp*$BtI/6lIhP<Ip8Ϡ3:wE`I>99be U[\M9lhN5pIu`*_EY4hÌL`c#DDZ=}͎s@L lL?qREM.()M61ʷ1P%ƀ p4{ .ğ1Z!J(ݚrCM&1b9-$fd!W{E`rhIFMNz "2䳣evqP,?,hݡJUL@d}`ڷUN0==|;P>acf bCs0.d MO,ƾ},SlJrN>uZT! Z?ٜyS<Ҥ^/kB@H7OG-K<[.wF)JYP/*':%.|ͼzKGL,7WWGpx Gg cnK8Tz@P{W@_/6?bAM;k?'gOJA:{5^!hm J:|>ah]fC=Fc@ od:3r; h=:rO>k V qhL[[{I5lM6$ #\u|H@XO74FU`F&'6(ߘ&vrLt%#|{C a[d:y?Gk )۫Z #-} Jk7WKD8$1l5O@'j*55hp&;٫N\=h>`4 cCs0duo.)ud3]G5;*\s=_rL/̉ :To!=]a: 6EVלqeY`SuU|I%/_<"!8&_K"S;0&Av$*$M1Eh{ &LtF օhN{o;,?D}^xP§E)n1mSޱ.v qh&;53Uul>aLDqsr}EKt"S$@.&,Yg[(%" {Sk5"\R`ji7vmet^ ɰbߪxucŠɣwJJށ@ۡ)(cjN{H 8&u`T_3Jp>L`j ФW{EdujM,ZrcSuv;ps+<>kZۂOu1!% M6_|+˶#ӧUR껉w8=J<|O; 4rpP? pA7h3I,/aod xG[^EY#t:ˏl}'Yͳc1wD)-ݪh{;kk,L3ق5? ܳ\oj8"GL`n.F|M%lt.]x_n;/V/%" QG>^3'uAE[ I1IHM7>^`Y#索WSX1跰F/K<"+̖Ւ>f> pQ_&K0PM%"$z,GL,WWl*EK J#mݶJf,_2D:RckxEm;1lQ OMNJ`N{H="`1QiJYJBW=#Itj]mZ.-rcSu~->O?orxFz1_Z[m_^7+}'U {MjxSI .Y?=`i[)!(G XSM 0|wQ hs, E:Pk{SoNyJ!nINzcg$oWWI?-91\uҾT@XD5Nv`5}qt+o9C"Zjb`lUb:>#Ln1SqKOu]deb Sbd^v %bPӈ;SءH{.ku;`Jo?s(: p@=Fd輰KL%#x{IzK,WrGPg GFYsy!_dD/ЏWVR®+{+bI|ʜ`;(L^K5^!~jlP/vfLj$ Z-Eh Mou>nj]{ a"=_r6%" ]R k_;A&:mI7Ydǐ24vP% 1 /Y󊳩l4>[bY!I}M +-g|wYv:K7ǪQ%=MA жtΏ .Nzr;DP/֏[#$xK׹8UoaU#'ۡ(I.bLt65Aʅ1Q$+>c*oluF 4ZGbC`lUSh Z|rO}'rüUik!t9' Pr _'1e Ɉ#\uaŠȎr?RcxER;-c{wޱ /L?v&7ٵx%vvc$puHvgTM_o0f1#|y.-=^<3I ] L-cATA˚7EVa^0Y;7lgWSkqgqŲ<.w'L# '_MPM _転ޡ9-rjLyn_WZ`4louI_.dtf*o5& c-g[HEEyqN yH$? p8,G%#Yss` dyGB~kx 58htF hNkkd97q~a[yeOKip?fΗ 7|ޱ L7aR{eu`'gn4Ht q=G'du$*|Y!>rLZ?UXi&cv8^_#@*SuS D$Xs/YE%]`F&n;>(nS@1_P#M< "#9,Il<9Y~[mP+GI' #rJ)T`q9>@1m_J-]@ۡ(k/O{e`u`'gkt>L`j n|[E q%H&]G$4;&y[^r2j <{ic-qMZWqe&qҥn+ͼ>}Sg.=(eȺwF8AF4ɒ' p/'QM*D_!6$,W7k[^Aldus!_D83D.lWV5@d  t1ls=,)g}Y55pv&yNv9: >a>$yG ~e->N2c\cs|./ZXrLLv5*UC!YQ'Gطko:DB%̞ k0kc.=X 4d+F(a (uM(oZ6@na2,dmh-rj#_27k8_A3YXIy93V+D}Άu!O6E/5H7EdqUc$p m"& w$'A.&o,|yr=^<) YKU׶iM6Ʋ5_7uwHwσFGj=`oX(ޜ)1} Pc,ks" ]WA7qW=iAAFYtIaGq_3-1ؖEMmݡ}uҾT;cC5?&;5jp*ancGI(ZjL?":KS7ojb.'+l; hڸrN?kiATL[;UwOĘ07)Y 7WuEֺwjaLi$:={jjM!B[&xM\;&,=_2GYrCu6e Zv^ sMo[nS/hય:F@!8'#fC#@O&\PM%#nql]>8GOGkʧ ;TpcV[~i ^k1oW -^b>Ζppq7\] }q{e?)u`kvӚ2N*e$z~ 'MItm$n.']4 &/]X> )UoZ;UIO .9 pDw.!g XVwR9F؆4IO(G^.&=4d>9,$<ba6E[_EQ#q`"ȳf!_DԆxU-<ŪQ8ra= o4Uf-NX֌&?㲹jݜ* /71d%O}r8@5oV*7C1S">jMcbH"c+S|r gV%" ::LZF(A,jI7EVb )U҄^ C5]@4xh-J*+@kOYAVI-ԺC"!x Hp1f0[_EQ#Hh E){!JD~5bWW DK_-艀=GI.(I.侒 uazOX>hxYl=!OEduE$.8.&id,W`wRhs<:l%"1<)>BL_?~e+Ahf;: IJSm{f W_|FNw p@1i UM,%po_sjL9{c7xpytM$ Jφ #aGJҤ_2DP/YxR+yd8a~Poގ)L3ي[>h\tkYq+l=$qce F**M!``}7d 32rN> _0R}!j7q'uVlmذM6SJ& Y ȿ?{yuE]zq\*:u`I#h3(<$1U\F&W m*79,p(ndf0ǹdp8CC*id_.ON^r HtRc0M+?!9rC;k?V #ML.C_9~z&ucv˔>alX|=G<&kMO,ǒ\-3GCls}%" 8BG ??vRh)m \ M=[8YCx/zD~ݺJ\ O'uy(؁@5ћ'1L4 >͠D]@dX Pk S J no[; DP/Y(yK_-Nʓ& gg}aVh&yl0$>`@Dc=-E* u o1ltwKSujw.–NJk} <{SMOu]IJC.b7BEҥn+ %|ֺJy/ݹ\24J Q@%(%#qCfIfW/s;[_EKwe_ _2D\ӽFWWIf;y3>?C($kL._53d&"ܚv,8|L`n$9F.ڃ#*o}] U\&AG^K ) `JCqC1 GEhkMoI&]5$* =~rOC# 8UȱIu@FuzQ{]qњ$+pSWpe*` }K<@Y* p/'jduJޜ}warԾzp,gMPjt_C 4Pѷ {\]r#OD?,XGq͏)lRe35C&;5│Y>a|=~(⍘jb'#S nX;ߗ%"R۔ij̦Z;Uw,{o0D̒0YCz_ꪳSIH7K|[6iF5KffQǁ_,OLfT}_#J$!.PLWEG7}c 8hnI)}k qo4pxDu?V;k0 )a }[Y5ݠ!@PsQjL`CpF.f =t0.,]k`޴-1C3%"'rF LHCz//gλAAv^0Ym{6=W|g%KR|5MpP}i 1dXLIbmB•k9,fn.F.J8PgKO+FAlL &8%.FV0kx*}&RcWVI 1ەij?M[;Uwh#YbYEr!)#/uEs]_JJbnӯ3FD18 %#}w{sn9碡 PjS&b{ #ls$nI {KXoySKgLYedˊ5 vN]:LiqC猇u*EGo8PvQ+5;F]x=w~ZC! OWGj_(?EW.%4mM7_|+ء9 #s,Sn&EkGK=ebġ~Je(9 p@P_@LfT}_) D^Od,)iͬ0%[^8>ht+`ȳ!_sDP/V`sRKY+\cStА o5;.%6qubbzBYF3R5&g sF *"MJ6nKS JrN57 :Uo5Q?l_o ؏ _ҥq.kjxhS2?)K&}`!!K`AU5v^%#h^)OB dsfXWA7G1  +ULOINzodыD}eWVITu8vZW[seO@+LqS55v=7(WB>`L`j XdžZ/ q]#\LZ>;aA9Z:>_0T!.4MurAs YvӴ^)lmWu3溦>.]6*w2(I: p@5ћ5=m|wQwK:FRWE7[^+,it( A@\Xo! H1$RcxkWK9;~1l;kLc%~i5w{vTn%ErPevqn;$pC0.j*o#OcG>=_t/]ݑ!AOuY:AmԏEҤD pilyWyi4HY.YE)e?`Y#Jo((A@1iPB'1bV.wX$v?*?UE!PjkfihQ@sg)ޡ_3qFo}bx*qsł-u!LG)R}hs5rua{Yv4Hv D} ?vPUEKt2M!J}pau&AGs۲XiTExM[-c[mW^e!B_ҥ[ PlgWuED{.YjE6Ct(((G뺶-4LSB *R$$<4,w9C`E`rhuFzt!_lݡ=ޱpCR`5{@h\;d38$y=@"duZ-1"+!K`s|& ~㽿53 :ToBY[[,`1c9Ҭp< pDȼx4S(hHԼi`y (u`_(GЛI0&_qLң |+29ts,٨F=^<[8B*rVL$e%}CEM6_|̐ڦ pӵWS HJ\ U` *JJ8ǁ7(/LTm_)gD ,sX>] 6{GGFIN{op HfRc _83;1s=޸j(M N9H5֤@1Q=QHX4lD+=UJt"S*%!K[@Y:?kKkk_>&rCIdu :0^X?#\UWp5K-(i IwO&qOS?ybmkWG9,jV',JqbX*Pj[^/i'[Ii$2kVVo}d'x<w&-dm;k?ғ+cno55^!~jU<5O>a|uC[luIu*Eok~K! &u7B֧ri4OurI6E}? ^f 7WuEhx%Xb ٜ@2G p8'1L9,lb5e/7;!!UoN|UYN!^^u3yGPRc.`q-K(q=BQo_JZҭ@P_}a]UZXXl\MWB>acXf֋=F +Mo=.N(]KSu~|V=_!6-5~:Gk"g9V)*O;Ę144Y7n1=/_<"Ji;_(AǁO1IԵ|wQV]A{;W&lJhnIN{oXv6"r0EliT:hLC=,T/9ҶYqYl?W<0Q XI_=@ۅc!%b`dp_(M&1be%N ܉d Pk[^/i'$Y4؏_>Rngn K-^QmSUX'*}l?f_3 >pٓ F @j3bOU } Y L?m1l:z*Z*/֖WJOm11'{IbpusR(hn<|5Kff p@Yؚ$L,o[%ҿKbSz,/T6k+aM{i&IBGLҤ_2eo1dxD k 1l!U)I.!ں+s5C!*\C$vqZ2 O$p=~#duj+)2 ?13L>&ZG ߽3]4!SI`gus )6EV/$ )2L˦IuE_V٧7aFNi"Lr= pl7hGp3L-@*9,1KGbQdd7N~P[kAl4|'!IBBy_H#ت0]lG8[VuޱbJI+7us56&Tn7؄Fq`$q#eG*hڕlou.*QڴS;@†7%"1t“T-f0CΑsI6EV/>1Y#sտuEĠVX.U3=#A, 'DfO pp1ֈ-=E,% KKKD8OdJW7u[^A8cIpHNz1g "#"cBS-JbjM-lPkKSqA=_Bv @۔ɥ̖bZW U7EV=q2Y#\;e1X-Rf`#9VGٰZ3FH18 %#}w{.\fzdF,__Pk=o $Gt fNzk'rDT҇ 7Qw'F;-fybI|޳LHf3i55^!h::1Uv, p6plC;D۠jMKi"6:c;H G>uB] #_|rBq#_Z8E}%fM66 v5m{FWE sH*2<9J7[fNIZ9Y)-3F18 %#!w{=l׉L3ÐxW# ht,67!_#ˮ1WM}J?,:p?E(M+Na45h\jӖ.Nl ? ETM2qo=f]{ hnX=ݛ/b:CUk_'Gvn}9;H^ k`UQesw=KEL[`n1HfAT_:KLnsB,|wYx]@ʇ:.p+CAm6{dii ؏TRiO0Ǣ1-=6xblw0@С("v7O=zOWY>`Lj4_ Fu j*jM".*Ccs> ]=Ubam][!A'uui&w=^9Gbӥ=C Hhij=`GXAbX)9HǁD-LhjRBk,W?>kf$xhg@so[n:\M#pVWo}bƯx}=8ySS޻@ґa}aO}1{e?yu`)/g^>dDwC=Fu,M\@8KYɡ rEdF%!&rÓ^1/YZ۶\hu~ -7w#_H2Y ;jy(S$X=e\N4Jjf)` 7udT5?}qu,Q Pj[^(C)c5ij/#!_HRcWVM8?,&->Z1@ڡ)I.!N} \j|VS!$p ?ZSEduZ]U\&KYc3xo E#̌Rœ*!wKIuGm]huf qҥn+ͱBr8SHs.Yp!@%#1S;lgKqW À%#Y%w79d;W%Wc @c Pδl?,2EIuӔ"'`}avRh\Zr&qY|)y$pC/"*E%oyK@h ArN?ku 8{%k[yԾ: 蜭W M6_|+.#ciWZ,3悃H7TaK="$9vi5>f)Gv/LC89,.Kf\dbaE6Pk[^8hF #-^_35B=x} 78cj޼@ۡ(Eh{=;6F7?j^hL$qC{EddjME)4n.7KS?rG%#BГT8&mxII%lM66 nхn8xα=8J<[.w9EYUAfgKB^O^B%#V $8ɪ>`x$ifP(WwP-9DGXy08yR@[#M+7uH=v&Eu`:okLg*%wDIэj .'m,\;@}]h>k $ ˛wsusbI>EM6[ᔐIE^Muc(4>V7,FM!8'Jg?-)e mC8y9,gbSzKf(,W!Pj[^;,Ln_I)o \Xo!t1WVIbYs\m8{vW4`gL7q5Z@慻5EM2+i$.C1YE*E>5o@kvKSih rNE+ rãl8LYoS . M6!dލoPwW=|0ghX.Y #`Ω(2| pS''FKpgdT52| !aԺ ,WA7G7GJ7tF \Dަ4 ׂ})Ee_i!puҐ &1Rg5H&Eu`1QmqlY$phPG;e(*$M!\D4[c;|͛:>#Lo1jYZE88 f7EV=ҥΫ 1#`*Wqhr.Y#`iFt5EP_MkL0ktұqrނcgfCs0du$*- O".Ccs>]zrNIm ە>MsOuE[ 27EVBҥSDPz/zDuu@-ƕ s/Y󊳢9F`'hC(KNKp&1|[v,|wOkZ߿dL`6jG LJ?@d oj_2 \8xj. Kt"1l7s=ޠ@HL7ټs5Z!@ѺTU)_Yl>all|kzkLjLZ>:rcSu~j] >oZ~l9Lb=,Q,u 1=^H6̚PɗHS1ϭxJbf`h2o5#&c_[?L, 9d<$D<uJ6gp PjC 5ΊYi`rst~:RcxWOd?,X_JZҍ@_(N}aN}t Z`]vEnd! [","$@w\.'d,N]TԲrN?mR@Lu%c x, 'ub M6_|+ i0ku.琼xhvx~:F(R4_ q''dL,/and yGk  Ji INzs'F#0yaE{w[mu(I.!(Aq5?h\uj者.,j/Cs0v,KkS.']o{;&=^TsC%!'rÓY/bYwL .6AiN^>GuPU}w]PSfZsӒ!+3I(3_׶nqoLb4MJ>vusjL7Fe(i raA7h,l%#onKW'FRW GC C۫c5.Ns4wsD8x"U'~KX!)Y3=RXnP,5Ѐ6Z`FgY q=AjJb` lgoFFMf9C(9p p@1_PL, 9 d<$D<yJ67mpf{f#Uhu!rGGx`-Rc`mJl8bBtur^&-(a@% q{^&;6C)$pC;Ejp-P.']YS;l BrNB# 8{U9iou,rGy)M6|JY{jWuEܺJv=pF+h7K: R7hn_0L,շ|s9:WA7q#%&k Y! #rtz K_88cQ!X5@DOWL{\}\ =Pтҿ/]p>aLa=/du$*b V.'] ohnY?¢_y 018lN CuuEh/aO v^>pPe>7H3.Y#ձB3I#f s(ޜn{@ule&_tm199,I]@W7/KBkAlL'DIy),axEkm>SޱbT3nMrH50d Qk׼tcc%Cs0 9M%ltfwK;&?u #!Hr>M7+uxE[?es b7Yҥ~+]kbSǖ;|yyH|yJ=v"F'5JffP5'm|s9q:WA7qۘG,)ҕΊYa{i~{؟1MmDK&1lk7._sNȥ]F[`,ektH>L$q?[+EduJ$M..'Ga'gh;l c,rNB$rÓTIu?-UowΓ7AYC~SR tS$;F@3( '_MSL_#3LbmC(.9-D*$[9+Υ4Q)$n3Č%[r_! 1.wPEV0,cA| 7|=}1w &}Yl̵t*+Cw0du *+#! Yg$\PLb%cW\;TC-"7D^)YR?i{H>dCK :}`#to1(͸AP&1|[R=k.uncD Pj[ft8ʠV;0)Db[d]8baZ@q7_gOp5^!Fj8"GMPLsnZ#eT` FZ2"y`= ^uB\Ϳv <{߻e.-.;[mAKi 1ҥ^ u`Wu}d xqK {`hh5Jff]RF"LUM J,Bmpn&yt?bxߛC.i ~n|c H1Rcgng'$`K ^$1lr=hHlNgu5? uc1Qlcfۍ ?E:"}Krh SrNmu GBġSZu,iбlkb0~ҥ+{#juuZ/_x|/*e(+IKffƟps\M&1b%`dy?Gk C\_G.Ny-'2_2TxzRc.O#Kqp?j1m7IJ+T}aN{H9f&ua㼖Bk8"hl$3=G'tZjof]K_`\&1a%#Jg!#_ZlA]~{Iv[`!МqY m{W=a݅K|P''5{())_p3 _c:}?R$W|7dŤ&UbI̤/(C޸^ ? HxRcxTi]D)gq3!CY3=R o %#o5fPpmΝ9,d3 7u,(_DqC;Ez]'(@KNGI ¢* M1_s.IYUA8se mw $}}ɊS/ --gK|ϟ(( l_Fo_nMLu!sRC|!fa1s[^HBAu슊N!^83HqpRb`yDGX-Pb's@\`LqO59\&u`{1Sr?M ?s]E$m' {KS;&%=V8.C+ hA!fqB-;>AA-}-\s|YSWhfeȚ 4|=]Ż2 8>eݘ y ,eS?,d 9%r$m4j,9m~Et]k5G+n$=VTr;p1DP/Y)y*%L35c1]q3V%'n)Wy20 U1j8"۝g =gEd|@MO;<21Y;߱M~KE!1ox-wm_suyGԏ$*Ł# Щ3ǐ?-H$?Sd|O85pP:\N&K0PMK%"aKHpduJ̨F>$niP<`jmZƠDPdC& 1e?u޾@ˁ.J..疡S( h;>?7V}N@{4E( :$a4?S\jH-r`VW t'/t.>ۛmj&6 {BY4knA̝OuX vwݬ[e)H' b["\(QM_Lǣ}uO,z*^,WA%"ZT8iZ AԏE-PD#z}y92{$(Χ 8JuF|8A(4`Hg}4*%=V* i̐#Ojudxbw9GYz;{I WǶy(V~k;DP/YWVI\ >[^նt 0N{oZ!.|L"I'E)q{焵Ι?u@ӡ(:PNȅua%v|LC=wf oGI KS nYZg]O7%" <{j_ܩ4_S/z{s M6[sPSHsDK,f۳(N''58W(Dzb脹*ՖU)% AL0J/K6lj=mqh87IM' y, @<}:EDj '2f '%F-yI R%Qb(}&A5|D> JqCN*$t ;zg.H/)6TSO;r?IVF~UHo`8,u|n;B %R҉2~b0 @%aWdd =o-AgJN'io|PKF[ACU_CVKK0C K&'#6nppi5f؋ cNV:<3m6*=eyc j('M\M$ikl OQ5|&W˯ĦZEW cuTtEh4w.{]ji2Ob:7DW"ˢe!E>|:Mё`j'_8C1bl7}L%g%~S|*w,/(Y" sq5/Z߻Xj#o՗UM^WM\Acr$e wX#扑9 8>yp w kg:'@9q_^*yR >-n4.OLb9C y@[f< .5[tT `kL>Tq1M5Et?vqf]C3"6;U{U7rEG}q8܌wɆ^9M%UW-nJddt[6|P:/|g{iax$+H*1JqK2#Xre8ZB!Z`)cl#(.\Pbf`\E)]i}QQpe}FtOON2}OB$%;`I;&A~h)0Hg$u2̞yfiRn+1{vit,u6Wru3<&m!}#\^1gu:_鰧.`G-ʹg2CeJ(dCz_,cL>uqBvnvW=G5y ,&+kEI\fq\Yp "z+go/8τyyR@L}`R5*epP`La($=DTd=jLo":K_`;l&<O?) rһ!"YXA"Gz*dl>FQYCuSz胧S -V(Ni()Qp_# sb Ӏd1eK\gM.LFwrϖ i nxIk93;;x7Ykۦ]e[4<&5^*۳H%U5=uabʼn`|߼z;hdMa7Hk>&[D?_1rŌ }.[XA")9 `K+-[Qq#P}" 8Nst@țG] A~QAӂ'S;,Q[bhhWtH@/Պ3/:gph$| '*T{zwd;; wrtU,^NwKGE1Қ@Eil}L!o&#4_NzOGxr jLZlFh5rpXkKS'O;  @=\f.j>u(P̈́`/lB~8Cx7}cY)Gp6;~'u fhcxWg&[:ɚj(P8Z`a Ǒ`ߑF$HQGlCiPczP jNJw5ct.X@U(;<[M?d:K7{= $?pdk^J |. /.\*N?+T13u=܄h/v*\g8R5`vmR\h _#U#Y@EX_s\pWB4k1)phg{*9/ B6`>P'l3 p "dkap1bM~`tdP>zUv6{'b=Jv8Y>뒪)2f53 \VwQ-Ob }XA1BS3dg6PN50xzLP-ףy:fX!lvV&m|wf)Jkz? . Cu h)}OP5O R)B05j E5@pb`8.TwO(*@#tQ8~ucac{CY7zN oIa*{ 9q6|uP6l`z &ndpQQ*8K() s\/&K0'{͢T%!jgC,*XwX{CmA,tu@s/Nw04ucd}8ro?1?,X4Y$2`ML[\!5 &_p+aۍ?Eff Mct.}IC@nYG~o\O2r“FM[ylQHK MvҤR Y'/BPÅWy4:H?\Fk`iz5(ϻc*,&1|[R}9$0Kba6|k$hX<:Iax;Z!p5ֹVWgyEQPՆ3- ?|'-L]NOtK>Ăೝ - h8=LHc[`s|e]PZJ8?)rƓU-nDoA_zEh/_ v Dʘgw.h.7s<{O'IG(ބY+v[ ,%"}SDmdG,xoGm $TvGȳf !_82b0Wn ?-1/yR@)(c}pN{HeS੻hӡ>`@CC=:'"dtf*og2.P KI'[e/¢ ὿53 :nGk>q[m_^7+٪-D~ޖxW#˅=Ǭ 5hLWX'=$i`ho58AQ_'Pq%(|wQBvdW P[.Le(IN{b;_9DP/YÚ[B)ypK/8Dy1P޲H˱<`n5O1q\thb:o>[ *$sC1#dxE$@.'s,C[nYG~0]O%3*MGvuzI~GM6!dލ:PwWY< hs8MCLF0Ay#h#c=(Lq { ŕM =C%FW-Bt ,2`㔋Jk['(9a >nA`%!r}2d+*f<:u"궤^q$!|5k8g|&}8f=hܜ/8rV< 6lmMxG'pQ3'Pu, TZy'Nq*C)nm}t[k:xvTogm6*=3ynj('M\MhGwb }0ZW?JbP-GstLZ!y{|^I/?S;&AGs둽ˌR"ckEБ,I7EViXtR Y i7{0s^Sg?[K|k2'$&_@1i?5mw9%$z4,WGo K dm@.Ic;q^6"n xE)o7- ?|O,ݡgLW{t5?nq`ҍcH>aLai=U-EM!J= #f;8ڙN-Nm\“U-xGSv.Iɻmmq[$^ Y FӅx+Z,SSbHwHL`caq ?VE:X$c'?9]?}v.w!0$>$ڍ=/,Uy H:4/GZ?_D>H@rBaY,L?%6Wc#Ew=Lέ<`O*l}CEg|5Zb=olYpS (dtno%Z>3[cc;./[rM$1R o_k_ 2u(ccM6_|+ؒsI37!wyA.l?'7$=TB q$ʦ)ouTXI=bސwX$v?*?UG>ҕ #\qB0 n1C_;" ww9dlK,8wWv+uލLaULRN} %8J>aj'{u^OodxJ-GE4n."K`+G>ubTEmەi?M[ykَQij Av ^?Q#R W?w.J^so>NBi*5K nA3FH'18,k+Ie[9,~gydkFi \r W_'Vx=b;koO5% u`1Q,4 L` M ?UP_E.2b5=.]KSuv¢]a>kAUHYU¾z/* -99-Xs|qY#PS gX7GK|6'=E(ޘQqcHq18%"|9-s Ct0%(e }U=/l:Azw9=SD35A>o9C`[_E` J?y' faUUWZ!_;֍ u9^1aeu޸o(I.RlC5{^&;67>w$pCF .p %lΙ[s&g}&9.c"Y||0h`H+lm˕sqgLdt$M!\D4[y :rNLE1prDq/Ku%K TYSQҪ^U#75Wuq_5. XU휅F``iɼM() lKA,}9A!~$ (s[ WA '!}"݆ A)}!R_^LRb'a+?+1`>ڰ@ۡ(I.!lG5v&ud5EF>b\LC = hjMDUN]KS@@=YzvH%"0.!!k_FhI0{M71Zv$#@>;|sUHF4mP`ed# EogM )A*'O{9!R$mVdLW/~@{[  VI"NzoZ &~bW[yHa?-n1au@ס%xLuM-5U`gdbt,Sv1,7>kcgXpyuIU,"$@.'saSd[&u?m <{ڲl[ͦu=IJ ډ^Y 7AWeSHXJbFki5K(/ 7dT%,}qsjV>,z0k[]8od?IN{!^d95bWW(EO!8"i^&ѡ%`G5w[FYg_kgLe= IU,"$@.'saS>w rDI%'aȓY!!/qMSUŽj($vFT-)u=.l3KYu\">khl o5$GQI6C/M6_|+'v'#/jWxSjX#-i.w1]JƴIp_,M&1bzn.0KW7g *hP<Nw 0r_;DRnW_,K`$pCOjdu$*a.&Suhϖ |w%/>ly.1#?|AMz-f:CM?>ҥ#P˦Iu+cqˬ.'v<P Fu[L)GڒR=,|wrT[bW?+[i;) Ju+yNzoD.WWYY{qXXyHQt;@Ձ.]{,U\πhFpLaQCs0v.ڕo o"]KpV&ʮrNgURā>6L U(QI7 omwҨ~/l7WSh 8KB=@"i'Jffl'qET3'}K%{{r$huO6INFT_$ni8⨣71?,X4?~.ޱj955~'5 H&u`?,4j/Cs0v,kgOl..]{S9ph)G0]GQohsn#+io0o:kGs#G3e)]8!jαun JIk҉R#?qO[hl5H ~`!(Ni K(ڮdAHm-Mbm 'O9,tN~UyGTw_ %K.u:IN{-r_DR5^[gYMKmx^uҐ o0(-R}X&q੺K>`Da -G h8mG ":K=9&~Z^r#% ~BU!$ɦurEN M7E^GԍY#P0u_| H붎YKJ҄!lNZW({(Af<@M/B"}5fZ$lhr,[9PkZil AƆ E)!&f?3 qVW3y,?B9V+u0'ѡQ#\ESZ@?䅊k27u,4(cbD# ?WCEHt:Mc~2.,=;wMPo4KTo!f>5MvA5]Y5>~L^ Eh{csҋ'E ]S7$RKI@–%u%jYp_M&1,ԸV|wst*$WA7[^E tF NzoYDP/WVIL?,Xk;k޺ݯ(I.LN{H5Ѝ&;مj8"ƣL`jCF ddM!R]S&AG=M;>kﶓTo9Z;U,!M6_|Ҽf #gu Έ1Ň.Y .wiAJff6@1&1,V|wSt*$WA7[^E tF /NzoGDP/WVIl?,XK;kޚݯ(I.LN{H5&;مj8"L`jCF dDc'.I#{`&/잝s*M^UkEо[-쵚$;M6_<ҤNJi5imSWUSȉH%'v=bVi8 Kf cA܉ҦIkW)9,<ǶbWAwK[^EGW6u#!_yb RcWV#pu8^WEuް@[}a5&V´q7v$ym!ojMg8u.%ww+[&Y%ƒta=.Kv/ CjWpS D1XË*Լf`ΈJ @1iW %#ލdΔD  ~PjsS,$eILX.niҭXdyVrrWVyk?,6+Œ Hs^$h['L}`pEUg:egH3$pceduj pE2."aoMXh ArN ku :] o9ZV .K}7]+ꖴ|Pz7AE+ l`XB-FiFķY!Tle-,%"T,:ںɛa|v9-|jqIo($e;kV*}L'sDl?,Xu# ^*ahd5d fE3RRtr!w#rome 0%;jH$ͬs JrK>kHA!.< %`,]ie'Yò^"'ygqlDUY=/ X-kۨC}e?(A5.` /M(L-awn.mJ=oC{&+ma #_3 3ֲx0Si_l6WR=}C]޿/kR/a! U<Uk8g4P$ (}A\d_~oYa2<. cW& pr+? <{ڍjͲuܾ: Iԏ1#Pz#w9;|DH|JR[`Ζ(E, p/''kf$ǀI \K:,WA783[O CTnO{)N^5rA.M`g* 7~h>Zޱb~լsL}`y{&;1Q=Eh]C=Gc,j=[hoI18lTLɷqAYB:sֱ M'1-\4 H}WžSp"@1Sd "%!#Sq/3b}wXsjǕC]W,x?Pg h[X<ȳIw!_>DjRb7AEjci1bSoвJ\'ZM:{5^&ZN1Qp>Laj'sunOeBZNo$y=:տ> o_{X{|}#}W}/tmpIPLPPPQPP LIbpNHSHH HU/bin/shtags /usr/lib/tagsdumbP}}}|}}}}}}}}}}}~~~~|f~~!|y~&|~)~2~6~A~F~M~V~Y~`~f~m~t ~x]G/@1n9%)$ ddyGGkC Z+Tc['iN2 Tgi\kq99n~1lC]%]@sLquS75@Yux,|fv$uS=U"S2~fOKC`;n]H:v:ەi>MGuE[o%s X{M/1Ҡ~~ 3@=D3hw3Kk`%d1vA1M'7, S-)s$ hy,U9GPko_ԉm4jw@<ڬkg]Fpi)-WV K=31m>QҐ o3.-Yy0hu|1k8\cO$pl=iEKZjbo\..WKS@hs<:%#]A/z>cWZ¾:,Eʦ[M/ŜL mQ,cH~ϾzF[K`i[7(i4 p/\75nzI&9==$dWǐ hNc0"wyvPh=˝1mqR.DQPL*(=Š 'U`k#`L`E>]֬d|OngKEy]ZRH$^C]Z "7f^cӻ˅WXR)xzxpZ5k1`J(u8HQ&Cp- DܭJ|Xbry,ЧoFPd;h.'d_2_LR~Ek?=̞_mq|a@ڑ)l*4Ń U`b`Lnp_hȕq-Nb]K>PF=]т6J3%" U}!*MVeÔ5К?-~ҫy qlJӪԨuExEzÅdf8"=Uhy$5EWl/ltɤɈɐɰɸɴ$,(4ɼLP\`dˌ 8D\`pɠɬɮ@B@&4ɼLP\`dˌ  %Jq/x#?X @(#)bcopy.c 6.1 10/18/80TERMCAPTERM/etc/termcap/etc/termcapTermcap entry too long Bad termcap entry Infinite tc= loop Termcap entry too long E^^\\::n r t bf fHsɀ8g.YsDyۉV/Ѡ+{_J.iFrv IzA4_<^1:̨'WT>{ε9uެ uxaL]cvQ@=U=3V8$ac^opBjEYAN=#?Dk&=oj+M R_!.GYa II_ ^iY.ˍuh X'-=N aCu V=Oǔtjon&\k#˽]N3Lc:otl1MV;%/йC }6"g YS SbX HNY?R `;Z1fVA'18,ktus!\H CdW/5[^EG{6iv"!_ynPRjz.E](KTs1l<.a@ځGca',&Xz^k[,(>a4lmuIGI(jMct. f߬C*o=urOBbc=bEӅ,j7 ƽYq-\NI UQw}sHTt dR& :i=ر/+ IE,5*`jIlJ5ZWy6[ +ca/iq3DQ5LWzy8-Ƭ~΍q&_ްo,L3ي _2 :ok>[JgDq1%R=;Dqg+?T1K`X#=^zIB*]omvl ojXk5$~'ӒpSu7C?/ͽF!*`td9#(!OOPS5MS7) @(#) Fortune Operating System Development Utilities Version 1.0   /dev//dev/ttyr%s 0(null)@ O )N????@$@$@$@$?@$@Y@ÈAׄCAy7FnM8O?ZwH01uOs:uiGS5"@Y+;SM র6"X/Yiޯ&4Kff՘&q\ж$GgՎP>aXnLE$qۈ q/lLM, A.$*$D!xEGRtc$&iu'ȳfeC!^\kj2RbWW(Exex/9b7xrްo7V}`m~v*kv5,4>dc]Dks=G PSz/w9uQ|HHX]Sw?R!H)(c jO{H7`4{VR2>\kX='w MXhK] u0r“Uo KO?l: GdCM7_| bBV b,^q=~5d.X/Y]*N@[KffP'fmu9-CK[9I ʾ<|+GuF ޅiB^_3ds(x}Ddwx&bA|z fm`y}`IR5? EM1Q\-tc]BgC=GjKqZM!Z]5&EG[TG[?o D, zMNEȻl+[е7U 6W'3eŶ8#p4 2CI8(AA56K}sf`K%, ͂Pk{R@Ǚ['vN{o^uOk1ȋRb(|8Kuz1m>ްo7LR\s5h\Zef]-$cO qleG @b@"z.&Zdy;l 8JrOBr³XG)/uZ8,E!b >^v PjC S/w''F8A'ѱ(- EM&qp$% +!ЉB+k#y;g9RbwWK?e9ba;k^OiL3ٔk} 0dfISv >`LaMe=CEdtNeo.&]o =^<8BU=>$uM[,¹{M7>^cm{늙We>:qk3A,lFk&i5c($)E_IW %.U9)g~$6$G94aXk \Ƕy(݊c({!sF\"ToPbCy+?-Db]wb0BhN`O9qStw䰚c<,7*NDqC1j#zj]=,IcKGu[loZrrN*w pB!M['a-/6 -7%9ޱ\.YW#Ccup gZm/7hsq#1eN }A#/,bm "˗9-+2tD,W"[_!ii+㕉 kI{{!^4?D>*x} p?!6ni1Zҍ@ӎ)L3ي U:ؖf<:2JvHY$L[$q[:D Mo=P." SB]n1:%#XQ!)IsU/)Aܶ<$>0Y /B7Wy4LIH?!mJ Epo@(8)1I YMbmmwi9-!&|u]M r,k7OrnQ_.,^0X<> &+m6)Nr!^pk.ۈ-Ddq#)1m[]-] )M.+HxOyu`PvLo$qCKudtEbo".&Zdy;l 8 rOquux& UeYEqY #Z[u|'H/_-V(NF&'5((GPsT_,M`:} Oj^*$[ BnzGpo  (bifU(}XkyoRjZy\Bp11m>s@ۡ)I.!po9|)u`1Q{aH.fL~$qC= GEdt@W_rfs]G|]RL=^<( <{߻/c.1.;[mAnb1E^Y U>{HxAژF  xR,)\U_Ɯ / Ti̐#OjuYdbwoPPcKO AlL' Iny^_; xvopyD?-6$u`xZ}`O9H5KA1Q5xqpk$qzs;k"Pj"%=.4hKSh "rO?ߌrlo_[;U2NGmؑ /M?>ҤqiE~;+ES 1U '8d<"Jm4i' 2 q'' Pqbm9-O|d:LGW #iuO6IJ{!^] H1RbWW؅DK*xbI|Rp 5wo35(^e=Qc\YTDs(T&}Ð\`SzyKuG)=N\a7MZAAv_WFS]]A#И#8 4 aB0S;NXSY<LJi [_H qA1i'5X<%ꖽqr(dz фWP5% uۊN!^83DzR1IMlHk?!NLmB]u@ӡ)I.!hZ}X&sMMf>`Cqc ݌Ub"S8of]I#4;tX1M%#2“U-j>ۋ/6YV-7'i.9Y #y;uE!D]{pViF'qί@#,,)2_/eӵZpfWhv[_Ao1yI'6IN{oDI֭,?-5bQ[J@\@ۥaL7Y[5?h\Z.Xbej: dtE$@ .&w,4&Eu0[r“Uo K_riIdb q^ {M]Z,]wJ ]X*nѳEpܹ@[( GQ:5dmq}wQ+.:ӴfG>T C,T oIN{b\n+DP/Y]0QMDa'"Α4kuTg5Hu`35sqpk$qvs8GFGMp#NDF ƦR!C)3bEZw]?Bsm< ϶1ҭR ? aB0~'zWRhܲW]R!͛6Ith[(ױ( K/~1,L%CS6md5$6W io E)Q!dS#VRW y,?%6W7C]gB@)kl}ˆ5$=&X~JŘ+Q$Kvw')"hdk*o5H]G#]doƮ_w5Rk*[uxAhf~ IJ9M0#SKu0SA.w)&galDIS=!gdtlmY!<6}-C;;ߗ %#RQ*aL'kx/IO{4|RygbpQWPeZ  JA8VF`+od1*a'R1(% `ުIl`,E\ 7C 5:AVG\O.jVV4W['*a5`MR)I.Z0\@u`Uw4>`M{Cq - hldJ*orKvu`R%m vBU!1Xv=,YiI6$b0ҤG/~W9eqNq-Z)!(Ni (iso,dKp7_ J:% W58SB$K[9IKBkAlL'ȚIny^9y~Rb[.h+DKSe-bTY3Nz0[|] O}1\0 Pvn\XDgwv= (DE oAv3$s$wRh=^<:?ku :%U =DL_u}QT-o2 UD%v Ya<WEgIINhNw|м:1 ( p@0' "}wQ:d5Z;E ! ) JuF }N{ b0_2(TRdqyCDK{?u0EjT,}X&`e;h5vYLaj'sunOadxL}-  #sn|03iyVBrQOK/=6yb3wu޸` l@52`4u-F3$52γ$vhP3P&dgi-Z|N}ʹ[`H& ~_ 3rqDv_AۊT/de.+Ck-P~<ލ.PCwW5D|ֺJy0cDM%(iq_I'Pq%&/9%O d$987kI$;ZN|!^>=3tֶ-RdWI{ K?_1qu@S/'L6`O oE>a>n<`K-c]BUVZ"orTBMk`;&=ZmE b{ic*CƝȮ5GQI89!%>I!7W75XeE]S[qJ<@ ۗ`BeF yP_MսM,ktus!Jd>Pk[)e%'EnGJ;_?D1oc)Aky*=53;k}h׵5Hh\ul@W.YLaj 3Gj*[@go\vSKh #rOa} Laj PNJo@N$;a/~s+<?ku]U=DeDuіih a_^1YWPx9uE7opXZY<"GT!w([J qIPM UKo9.\zd2l,9_F=k;;  ING^;w/iDer1mG= o܉ L55l`\3F,,c]Bp=jDHj?=ѐ]o]Gs]MO%#"M{La͊A>%51mcM7_|+yjy m{W7 sfP_/Y?<"GT!%_F a5,,Oyk4hWo>`La MlG @--@.]GS8]&[^rNR%brVM%c$)< CIҤ^?#jfu0SH27=J"Tw9dTKYͦ8{x1e̘@(@55thPƂ>Ȧ>`ft u Cjq!C*f]aSF'"rN%#b߽UiV=,sGD%M7B^(ԍy#PS0uNS.кZsU/ i z" uLԋdJE>JUe8]TAhfJ c7ҤtZP9TWu}4HD8'7d u&'F@()G'7)+O`,'9+p$Ǭ|,W7% f*iq#yN{#s_$\r^}yd?#y_JZ@ۡ)k)}l"R5FT=h3Fp>Laj ʺTdt@-\\fsx{Kc3&=^ɶ1X o_j_ Rv/,%i M;!Ҥ\]X #X>W;H|!g|ONb5pPesBw/P`,k~-fr,TWM#R EB$nI(3N{oZx &zbWUyHa?->Ev+t?)ER|~_55 &wZ~@z>a,cTpo 0IKH L+o]o8l!=O?o rjUo65[Z^iI2Ai-5a.v'#\R} D1XS !=EtXI Ji IADd87q~}bqTK-Fb{Sg޾Y!MM} [55&h>a}j M2 doZ!U]ZSp&?=^fW(f#&M Tp!aY-Cv ti/ݧPk{+F ,$ztcns!Z( ropy-^jH]ްc=GQ\vh1v,,p6|lC)ElYjboZGI,] oe/ c]Uo;]Զ.{l`{9ꎍY ´z'XW7|ExS5$d k2I4͏+6Jg"I•;*lc=5TW/7_kGGuFƆi \r W_'Vx=b;kgAcfE`!5@?}f,e`gr?ۅCsGe^{}o\R.7].Sv;=^rKJBUoAC[ux!<,v 1ѡ ImPtU,w/Y F.-Z5#];D/ /"/%/(/,/0/6/:/>/B/F /K /P /U /Z /_/d0 0P Bd @@05075110134134.515020030060012001800240048009600extaextbNot a terminal dialupplugboardBad flag -TERMunknownunknownTERM = () Cannot open termcap file Type unknoQRSTwn bskbbcbsosbsdCdNdBdFdTUCLCEPOPNLHDptpcisifSHELLcshset noglob; export TERMCAP TERM; setenv TERM ; TERM=; Terminal type is setenv TERMCAP 'TERMCAP=''; unset noglob; '; EraseKill is set to control-delete x Cannot open unknown/etc/ttytyperunknownsddialupspplugboardunknown\040\042\047Too few args: Unexpected arg: usage: tset [-] [-hrsuIQS] [-eC] [-kC] [-m [ident][test speed]:type] [type] @(#) Fortune Operating System Development Utilities Version 1.0TERMCAPTERM/etc/termcap/etc/termcapTermcap entry too long Bad termcap entry Infinite tc= loop Termcap entry too long E^^\\::n r t bf 5MS7)    /dev/@<@<(G@OM;Oq,k}D<*dW?[_& 4UuFJ d.NfbZsD.WW*D)q{1Α|uްLu!oRnY5qF_d>`a11cu!EdtlmP] &[XrC3 "t! j͉[]XY,ʹ!1L #z/uy 1 rϬ/Y?l.wi" Kff-#MA1)'1,}wz<*$WA7zW[_E .UuF cN{ouDP/x^WWIKa?-XrQ;kޡj)I.LW\O{H5:&;مUk8"\LajCG dc@M! ]S&AG=DXs?kXUov;q[;U?,(!M7_|һt. #z/u1y 1,rϬ/Yl.wi>" Kff #MA1)'1,}wZ<*$WA7zW[_E .UuF &cN{ouDP/x^WWIka?-XRQ =5ތ`7.R`O/4huU0e'g dzLQMCspGhdfZM!]{SuE&"J=^$qC10GE Y3KO.&c#S|d><^=^<O5Z!`5qz5ԏ$`[ԍy=쥁0UspQ\?7Z=FE@i( ;#4DxrِgASu3y<_N\&,S,1\v{SmCdgYnyI Fp>`5rо:> ?~54$pkʏRb(z8K ^u.TH BC 1 4/1/81 .SH NAME bc \- arbitrary-precision arithmetic language .SH SYNOPSIS .B bc [ .B \-c ] [ .B \-l ] [ file ... ] .SH DESCRIPTION .I Bc is an interactive processor for a language which resembles C but provides unlimited precision arithmetic. It takes input from any files given, then reads the standard input. The .B \-l argument stands for the name of an arbitrary precision math library. The syntax for .I bc programs is as follows; L means letter a-z, E means expression, S means statement. .HP 6 Comments .br are enclosed in /* and */. .HP 6 Names .br simple variables: L .br array elements: L [ E ] .br The words `ibase', `obase', and `scale' .HP 6 Other operands .br arbitrarily long numbers with optional sign and decimal point. .br ( E ) .br sqrt ( E ) .br length ( E ) number of significant decimal digits .br scale ( E ) number of digits right of decimal point .br L ( E , ... , E ) .HP 6 Operators .br + \- * / % ^ (% is remainder; ^ is power) .br ++ \-\- (prefix and postfix; apply to P.f..Oman1man8man5man7names) .br == <= >= != < > .br = += \-= *= /= %= ^= .br .HP 6 Statements .br E .br { S ; ... ; S } .br if ( E ) S .br while ( E ) S .br for ( E ; E ; E ) S .br null statement .br break .br quit .HP 6 Function definitions .br define L ( L ,..., L ) { .br auto L, ... , L .br S; ... S .br return ( E ) .br } .HP 6 Functions in .B \-l math library .br s(x) sine .br c(x) cosine .br e(x) exponential .br l(x) log .br a(x) arctangent .br j(n,x) Bessel function .PP .DT All function arguments are passed by value. .PP The value of a statement that is an expression is printed unless the main operator is an assignment. Either semicolons or newlines may separate statements. Assignment to .I scale influences the number of digits to be retained on arithmetic operations in the manner of .IR dc (1). Assignments to .I ibase or .I obase set the input and output number radix respectively. .PP The same letter may be used as an array, a function, and a simple variable simultaneously. All variables are global to the prO.P..Nbc.1Mcal.1Lclear.1Kcol.1Jcomm.1Icompact.1Hcrypt.1Gcsh.1Fctags.1Edc.1Ddel.1Cdiff.1Bdiff3.1Aex.1@expand.1?file.1find.1=fold.1format.1;gets.1:grep.19head.18ln.17man.16mesg.15nohup.14nroff.13nice.12num.11od.10printenv.1uconf.1.reset.1-sed.1,split.1+strings.1*su.1)sum.1(tabs.1'tail.1&tar.1%time.1$touch.1#tr.1"tset.1!tsort.1 ul.1uniq.1users.1vi.1wc.1which.1whoami.1yes.1chowngrp.1chlog.1mail.1admin.1bdiff.1cdc.1comb.1delta.1#ogram. `Auto' variables are pushed down during function calls. When using arrays as function arguments or defining them as automatic variables empty square brackets must follow the array name. .PP For example .PP .nf scale = 20 define e(x){ auto a, b, c, i, s a = 1 b = 1 s = 1 for(i=1; 1==1; i++){ a = a*x b = b*i c = a/b if(c == 0) return(s) s = s+c } } .PP .fi defines a function to compute an approximate value of the exponential function and .PP .nf for(i=1; i<=10; i++) e(i) .fi .PP prints approximate values of the exponential function of the first ten integers. .PP .I Bc is actually a preprocessor for .IR dc (1), which it invokes automatically, unless the .B \-c (compile only) option is present. In this case the .I dc input is sent to the standard output instead. .SH FILES .ta \w'/usr/lib/lib.b 'u /usr/lib/lib.b mathematical library .br dc(1) desk calculator proper .SH "SEE ALSO" dc(1) .br L. L. Cherry and R. Morris, .I BC \- An arbitrary precision desk-calculator language .SH BUGS No &&, \.TH CLEAR 1 2/24/79 .UC .SH NAME clear \- clear terminal screen .SH SYNOPSIS .B clear .SH DESCRIPTION .I Clear clears your screen if this is possible. It looks in the environment for the terminal type and then in .I /etc/termcap to figure out how to clear the screen. .SH FILES /etc/termcap terminal capability data base .SH BUGS (or\|\(or, or ! operators. .br .I For statement must have all three E's. .br .I Quit is interpreted when read, not when executed. .TH COL 1 .SH NAME col \- filter reverse line feeds .SH SYNOPSIS .B col [\|\-bfx\|] .SH DESCRIPTION .I Col reads the standard input and writes the standard output. It performs the line overlays implied by reverse line feeds (ESC-7 in ASCII) and by forward and reverse half line feeds (ESC-9 and ESC-8). .I Col is particularly useful for filtering multicolumn output made with the `.rt' command of .I nroff and output resulting from use of the .IR tbl (1) preprocessor. .PP Although .I col accepts half line motions in its input, it normally does not emit them on output. Instead, text that would appear between lines is moved to the next lower full line boundary. This treatment can be suppressed by the .B \-f (fine) option; in this case the output from .I col may contain forward half line feeds (ESC-9), but will still never contain either kind of reverse line motion. .PP If the .B \-b option is given, .I col assumes that the output device in use is not capable of backspacing. In this case, if several characters are t.TH CAL 1 .SH NAME cal \- print calendar .SH SYNOPSIS .B cal [ month ] year .SH DESCRIPTION .I Cal prints a calendar for the specified year. If a month is also specified, a calendar just for that month is printed. .I Year can be between 1 and 9999. The .I month is a number between 1 and 12. The calendar produced is that for England and her colonies. .PP Try September 1752. .SH BUGS The year is always considered to start in January even though this is historically naive. .br Beware that `cal 78' refers to the early Christian era, not the 20th century. $o appear in the same place, only the last one read will be taken. .PP The control characters SO (ASCII code 017), and SI (016) are assumed to start and end text in an alternate character set. The character set (primary or alternate) associated with each printing character read is remembered; on output, SO and SI characters are generated where necessary to maintain the correct treatment of each character. .PP .I Col normally converts white space to tabs to shorten printing time. If the .B \-x option is given, this conversion is suppressed. .PP All control characters are removed from the input except space, backspace, tab, return, newline, ESC (033) followed by one of 7, 8, 9, SI, SO, and VT (013). This last character is an alternate form of full reverse line feed, for compatibility with some other hardware conventions. All other non-printing characters are ignored. .SH "SEE ALSO" troff(1), tbl(1), greek(1) .SH BUGS Can't back up more than 128 lines. .br No more than 800 characters, including backspaces, on a l.TH COMPACT 1 .UC 4 .SH NAME compact, uncompact, ccat \- compress and uncompress files, and cat them .SH SYNOPSIS .B compact [ name ... ] .br .B uncompact [ name ... ] .br .B ccat [ file ... ] .SH DESCRIPTION .I Compact compresses the named files using an adaptive Huffman code. If no file names are given, then the standard input is compacted to the standard output. .I Compact operates as an on-line algorithm. Each time a byte is read, it is encoded immediately according to the current prefix code. This code is an optimal Huffman code for the set of frequencies seen so far. It is unnecessary to prepend a decoding tree to the compressed file since the encoder and the decoder start in the same state and stay synchronized. Furthermore, .I compact and .I uncompact can operate as filters. In particular, .sp ... | compact | uncompact | ... .br .sp operates as a (very slow) no-op. .PP When an argument .I file is given, it is compacted and the resulting file is placed in .I file.C; .I file is unlinked. The first twoine.  bytes of the compacted file code the fact that the file is compacted. This code is used to prohibit recompaction. .PP The amount of compression to be expected depends on the type of file being compressed. Typical values of compression are: Text (38%), Pascal Source (43%), C Source (36%) and Binary (19%). These values are the percentages of file bytes reduced. .PP .I Uncompact restores the original file from a file compressed by .I compact. If no file names are given, then the standard input is uncompacted to the standard output. .PP .I Ccat cats the original file from a file compressed by .I compact, without uncompressing the file. .SH RESTRICTION The last segment of the filename must contain fewer than thirteen characters to allow space for the appended '.C'. .SH FILES .ta 1i *.C compacted file created by compact, removed by uncompact .SH "SEE ALSO" Gallager, Robert G., "Variations on a Theme of Huffman", .I "I.E.E.E. Transactions on Information Theory," vol. IT-24, no. 6, November 1978, pp. 668 - 674. .SH.TH COMM 1 .SH NAME comm \- select or reject lines common to two sorted files .SH SYNOPSIS .B comm [ .B \- [ .B 123 ] ] file1 file2 .SH DESCRIPTION .I Comm reads .I file1 and .I file2, which should be ordered in ASCII collating sequence, and produces a three column output: lines only in .I file1; lines only in .I file2; and lines in both files. The filename `\-' means the standard input. .PP Flags 1, 2, or 3 suppress printing of the corresponding column. Thus .B comm .B \-12 prints only the lines common to the two files; .B comm .B \-23 prints only lines in the first file but not in the second; .B comm .B \-123 is a no-op. .PP .SH "SEE ALSO" cmp(1), diff(1), uniq(1) $ AUTHOR Colin L. Mc Master .SH BUGS ity for any particular purpose. Accordingly, Bell Telephone Laboratories assumes no responsibility for their use by the recipient. Further, Bell Laboratories assumes no obligation to furnish any assistance of any kind whatsoever, or to furnish any additional information or documentation. .TH CRYPT 1 .SH NAME crypt \- encode/decode .SH SYNOPSIS .B crypt [ password ] .SH DESCRIPTION .I Crypt reads from the standard input and writes on the standard output. The .I password is a key that selects a particular transformation. If no .I password is given, .I crypt demands a key from the terminal and turns off printing while the key is being typed in. .I Crypt encrypts and decrypts with the same key: .PP crypt key cypher .br crypt key ' `(' `)' form separate words. If doubled in `&&', `|\|\||', `<<' or `>>' these pairs form single words. These parser metacharacters may be made part of other words, or prevented their special meaning, by preceding them with `\e'. A newline preceded by a `\e' is equivalent to a blank. .PP In addition strings enclosed in matched pairs of quotations, `\*(aa', `\*(ga' or `"', form parts of a word; metacharacters in these strings, including blanks and tabs, do not form separate words. These quotations have semantics to be described subsequently. Within pairs of `\' or `"' characters a newline preceded by a `\e' gives a true newline character. .PP When the shell's input is not a terminal, the character `#' introduces a comment which continues to the end of the input line. It is prevented this special meands are saved on the history list, the size of which is controlled by the .I history variable. The previous command is always retained. Commands are numbered sequentially from 1. .PP For definiteness, consider the following output from the history command: .PP .DT .br \09 write michael .br 10 ex write.c .br 11 cat oldwrite.c .br 12 diff *write.c .PP The commands are shown with their event numbers. It is not usually necessary to use event numbers, but the current event number can be made part of the .I prompt by placing an `!' in the prompt string. .PP With the current event 13 we can refer to previous events by event number `!11', relatively as in `!\-2' (referring to the same event), by a prefix of a command word as in `!d' for event 12 or `!w' for event 9, or by a string contained in a word in the command as in `!?mic?' also referring to event 9. These forms, without further modification, simply reintroduce the words of the specified events, each separated by a single blank. As a special case `!!' reing when preceded by `\e' and in quotations using `\`', `\'', and `"'. .PP .B Commands .PP A simple command is a sequence of words, the first of which specifies the command to be executed. A simple command or a sequence of simple commands separated by `|' characters forms a pipeline. The output of each command in a pipeline is connected to the input of the next. Sequences of pipelines may be separated by `;', and are then executed sequentially. A sequence of pipelines may be executed without waiting for it to terminate by following it with an `&'. Such a sequence is automatically prevented from being terminated by a hangup signal; the .I nohup command need not be used. .PP Any of the above may be placed in `(' `)' to form a simple command (which may be a component of a pipeline, etc.) It is also possible to separate pipelines with `|\|\||' or `&&' indicating, as in the C language, that the second is to be executed only if the first fails or succeeds respectively. (See .I Expressions.) .PP .B Substitutions .PPfers to the previous command; thus `!!' alone is essentially a .I redo. .PP To select words from an event we can follow the event specification by a `:' and a designator for the desired words. The words of a input line are numbered from 0, the first (usually command) word being 0, the second word (first argument) being 1, etc. The basic word designators are: .PP .DT .nf 0 first (command) word \fIn\fR \fIn\fR\|'th argument \*(ua first argument, i.e. `1' $ last argument % word matched by (immediately preceding) ?\fIs\fR\|? search \fIx\fR\|\-\fIy\fR range of words \-\fIy\fR abbreviates `0\-\fIy\fR\|' * abbreviates `\*(ua\-$', or nothing if only 1 word in event \fIx\fR\|* abbreviates `\fIx\fR\|\-$' \fIx\fR\|\- like `\fIx\fR\|*' but omitting word `$' .fi .PP The `:' separating the event specification from the word designator can be omitted if the argument selector begins with a `\*(ua', `$', `*' `\-' or `%'. After the optional word designator can be placed a sequence of modifiers, each preceded by a `:' We now describe the various transformations the shell performs on the input in the order in which they occur. .PP .B "History substitutions" .PP History substitutions can be used to reintroduce sequences of words from previous commands, possibly performing modifications on these words. Thus history substitutions provide a generalization of a .I redo function. .PP History substitutions begin with the character `!' and may begin .B anywhere in the input stream if a history substitution is not already in progress. This `!' may be preceded by an `\e' to prevent its special meaning; a `!' is passed unchanged when it is followed by a blank, tab, newline, `=' or `('. History substitutions also occur when an input line begins with `\*(ua'. This special abbreviation will be described later. .PP Any input line which contains history substitution is echoed on the terminal before it is executed as it could have been typed without history substitution. .PP Commands input from the terminal which consist of one or more wor%. The following modifiers are defined: .DT .PP .nf h Remove a trailing pathname component, leaving the head. r Remove a trailing `.xxx' component, leaving the root name. s/\fIl\fR\|/\fIr\fR\|/ Substitute \fIl\fR for \fIr\fR t Remove all leading pathname components, leaving the tail. & Repeat the previous substitution. g Apply the change globally, prefixing the above, e.g. `g&'. p Print the new command but do not execute it. q Quote the substituted words, preventing further substitutions. x Like q, but break into words at blanks, tabs and newlines. .fi .PP Unless preceded by a `g' the modification is applied only to the first modifiable word. In any case it is an error for no word to be applicable. .PP The left hand side of substitutions are not regular expressions in the sense of the editors, but rather strings. Any character may be used as the delimiter in place of `/'; a `\e' quotes the delimiter into the .IR l "" and .IR r "" strings. The character `&' in the right hand side is replaced s checked to see if it has an alias. If it does, then the text which is the alias for that command is reread with the history mechanism available as though that command were the previous input line. The resulting words replace the command and argument list. If no reference is made to the history list, then the argument list is left unchanged. .PP Thus if the alias for `ls' is `ls \-l' the command `ls /usr' would map to `ls \-l /usr', the argument list here being undisturbed. Similarly if the alias for `lookup' was `grep !\*(ua /etc/passwd' then `lookup bill' would map to `grep bill /etc/passwd'. .PP If an alias is found, the word transformation of the input text is performed and the aliasing process begins again on the reformed input line. Looping is prevented if the first word of the new text is the same as the old by flagging it to prevent further aliasing. Other loops are detected and cause an error. .PP Note that the mechanism allows aliases to introduce parser metasyntax. Thus we can `alias print \'pr \eby the text from the left. A `\e' quotes `&' also. A null .IR l "" uses the previous string either from a .IR l "" or from a contextual scan string .IR s "" in `!?\fIs\fR\|?'. The trailing delimiter in the substitution may be omitted if a newline follows immediately as may the trailing `?' in a contextual scan. .PP A history reference may be given without an event specification, e.g. `!$'. In this case the reference is to the previous command unless a previous history reference occurred on the same line in which case this form repeats the previous reference. Thus `!?foo?\*(ua !$' gives the first and last arguments from the command matching `?foo?'. .PP A special abbreviation of a history reference occurs when the first non-blank character of an input line is a `\*(ua'. This is equivalent to `!:s\*(ua' providing a convenient shorthand for substitutions on the text of the previous line. Thus `\*(ualb\*(ualib' fixes the spelling of `lib' in the previous command. Finally, a history substitution may be surroundedrstuvwxyz{|}~ with `{' and `}' if necessary to insulate it from the characters which follow. Thus, after `ls \-ld ~paul' we might do `!{l}a' to do `ls \-ld ~paula', while `!la' would look for a command starting `la'. .PP .if n .ul \fBQuotations\ with\ \'\ and\ "\fR .PP The quotation of strings by `\'' and `"' can be used to prevent all or some of the remaining substitutions. Strings enclosed in `\'' are prevented any further interpretation. Strings enclosed in `"' are yet variable and command expanded as described below. .PP In both cases the resulting text becomes (all or part of) a single word; only in one special case (see .I "Command Substitition" below) does a `"' quoted string yield parts of more than one word; `\' quoted strings never do. .PP .B "Alias substitution" .PP The shell maintains a list of aliases which can be established, displayed and modified by the .I alias and .I unalias commands. After a command line is scanned, it is parsed into distinct commands and the first word of each command, left-to-right, i&!* \||\| lpr\'' to make a command which .I pr's its arguments to the line printer. .PP .B "Variable substitution" .PP The shell maintains a set of variables, each of which has as value a list of zero or more words. Some of these variables are set by the shell or referred to by it. For instance, the .I argv variable is an image of the shell's argument list, and words of this variable's value are referred to in special ways. .PP The values of variables may be displayed and changed by using the .I set and .I unset commands. Of the variables referred to by the shell a number are toggles; the shell does not care what their value is, only whether they are set or not. For instance, the .I verbose variable is a toggle which causes command input to be echoed. The setting of this variable results from the .B \-v command line option. .PP Other operations treat variables numerically. The `@' command permits numeric calculations to be performed and the result assigned to a variable. Variable values are, however, always retor] .br .ns .HP 5 ${name[selector]} .br May be used to select only some of the words from the value of .I name. The selector is subjected to `$' substitution and may consist of a single number or two numbers separated by a `\-'. The first word of a variables value is numbered `1'. If the first number of a range is omitted it defaults to `1'. If the last member of a range is omitted it defaults to `$#name'. The selector `*' selects all words. It is not an error for a range to be empty if the second argument is omitted or in range. .HP 5 $#name .br .ns .HP 5 ${#name} .br Gives the number of words in the variable. This is useful for later use in a `[selector]'. .HP 5 $0 .br Substitutes the name of the file from which command input is being read. An error occurs if the name is not known. .HP 5 $number .br .ns .HP 5 ${number} .br Equivalent to `$argv[number]'. .HP 5 $* .br Equivalent to `$argv[*]'. .PP The modifiers `:h', `:t', `:r', `:q' and `:x' may be applied to the substitutions above as may `:gh', `:gt' and presented as (zero or more) strings. For the purposes of numeric operations, the null string is considered to be zero, and the second and subsequent words of multiword values are ignored. .PP After the input line is aliased and parsed, and before each command is executed, variable substitution is performed keyed by `$' characters. This expansion can be prevented by preceding the `$' with a `\e' except within `"'s where it .B always occurs, and within `\'s where it .B never occurs. Strings quoted by `\*(ga' are interpreted later (see .I "Command substitution" below) so `$' substitution does not occur there until later, if at all. A `$' is passed unchanged if followed by a blank, tab, or end-of-line. .PP Input/output redirections are recognized before variable expansion, and are variable expanded separately. Otherwise, the command name and entire argument list are expanded together. It is thus possible for the first (command) word to this point to generate more than one word, the first of which becomes the comm`:gr'. If braces `{' '}' appear in the command form then the modifiers must appear within the braces. .B "The current implementation allows only one `:' modifier on each `$' expansion." .PP The following substitutions may not be modified with `:' modifiers. .HP 5 $?name .br .ns .HP 5 ${?name} .br Substitutes the string `1' if name is set, `0' if it is not. .HP 5 $?0 .br Substitutes `1' if the current input filename is know, `0' if it is not. .HP 5 $$ .br Substitute the (decimal) process number of the (parent) shell. .PP .B "Command and filename substitution" .PP The remaining substitutions, command and filename substitution, are applied selectively to the arguments of builtin commands. This means that portions of expressions which are not evaluated are not subjected to these expansions. For commands which are not internal to the shell, the command name is substituted separately from the argument list. This occurs very late, after input-output redirection is performed, and in a child of the main shell. .PP .Band name, and the rest of which become arguments. .PP Unless enclosed in `"' or given the `:q' modifier the results of variable substitution may eventually be command and filename substituted. Within `"' a variable whose value consists of multiple words expands to a (portion of) a single word, with the words of the variables value separated by blanks. When the `:q' modifier is applied to a substitution the variable will expand to multiple words with each word separated by a blank and quoted to prevent later command or filename substitution. .PP The following metasequences are provided for introducing variable values into the shell input. Except as noted, it is an error to reference a variable which is not set. .HP 5 $name .br .ns .HP 5 ${name} .br Are replaced by the words of the value of variable .I name, each separated by a blank. Braces insulate .I name from following characters which would otherwise be part of it. Shell variables have names consisting of up to 20 letters and underscores. .HP 5 $name[selec& "Command substitution" .PP Command substitution is indicated by a command enclosed in `\*(ga'. The output from such a command is normally broken into separate words at blanks, tabs and newlines, with null words being discarded, this text then replacing the original string. Within `"'s, only newlines force new words; blanks and tabs are preserved. .PP In any case, the single final newline does not force a new word. Note that it is thus possible for a command substitution to yield only part of a word, even if the command outputs a complete line. .PP .B "Filename substitution" .PP If a word contains any of the characters `*', `?', `[' or `{' or begins with the character `~', then that word is a candidate for filename substitution, also known as `globbing'. This word is then regarded as a pattern, and replaced with an alphabetically sorted list of file names which match the pattern. In a list of words specifying filename substitution it is an error for no pattern to match an existing file name, but it is not reqtandard input. .HP 5 << word .br Read the shell input up to a line which is identical to .I word. .I Word is not subjected to variable, filename or command substitution, and each input line is compared to .I word before any substitutions are done on this input line. Unless a quoting `\e', `"', `\*(aa' or `\*(ga' appears in .I word variable and command substitution is performed on the intervening lines, allowing `\e' to quote `$', `\e' and `\*(ga'. Commands which are substituted have all blanks, tabs, and newlines preserved, except for the final newline which is dropped. The resultant text is placed in an anonymous temporary file which is given to the command as standard input. .HP 5 > name .br .ns .HP 5 >! name .br .ns .HP 5 >& name .br .ns .HP 5 >&! name .br The file .I name is used as standard output. If the file does not exist then it is created; if the file exists, its is truncated, its previous contents being lost. .IP If the variable .I noclobber is set, then the file must not exist or be a character spuired for each pattern to match. Only the metacharacters `*', `?' and `[' imply pattern matching, the characters `~' and `{' being more akin to abbreviations. .PP In matching filenames, the character `.' at the beginning of a filename or immediately following a `/', as well as the character `/' must be matched explicitly. The character `*' matches any string of characters, including the null string. The character `?' matches any single character. The sequence `[...]' matches any one of the characters enclosed. Within `[...]', a pair of characters separated by `\-' matches any character lexically between the two. .PP The character `~' at the beginning of a filename is used to refer to home directories. Standing alone, i.e. `~' it expands to the invokers home directory as reflected in the value of the variable .I home. When followed by a name consisting of letters, digits and `\-' characters the shell searches for a user with that name and substitutes their home directory; thus `~ken' might expand to `/usr/kenecial file (e.g. a terminal or `/dev/null') or an error results. This helps prevent accidental destruction of files. In this case the `!' forms can be used and suppress this check. .IP The forms involving `&' route the diagnostic output into the specified file as well as the standard output. .I Name is expanded in the same way as `<' input filenames are. .HP 5 >> name .br .ns .HP 5 >>& name .br .ns .HP 5 >>! name .br .ns .HP 5 >>&! name .br Uses file .I name as standard output like `>' but places output at the end of the file. If the variable .I noclobber is set, then it is an error for the file not to exist unless one of the `!' forms is given. Otherwise similar to `>'. .PP If a command is run detached (followed by `&') then the default standard input for the command is the empty file `/dev/null'. Otherwise the command receives the environment in which the shell was invoked as modified by the input-output parameters and the presence of the command in a pipeline. Thus, unlike some previous shells, commands ru' and `~ken/chmach' to `/usr/ken/chmach'. If the character `~' is followed by a character other than a letter or `/' or appears not at the beginning of a word, it is left undisturbed. .PP The metanotation `a{b,c,d}e' is a shorthand for `abe ace ade'. Left to right order is preserved, with results of matches being sorted separately at a low level to preserve this order. This construct may be nested. Thus `~source/s1/{oldls,ls}.c' expands to `/usr/source/s1/oldls.c /usr/source/s1/ls.c' whether or not these files exist without any chance of error if the home directory for `source' is `/usr/source'. Similarly `../{memo,*box}' might expand to `../memo ../box ../mbox'. (Note that `memo' was not sorted with the results of matching `*box'.) As a special case `{', `}' and `{}' are passed undisturbed. .PP .B Input/output .PP The standard input and standard output of a command may be redirected with the following syntax: .HP 5 < name .br Open file .I name (which is first variable, command and filename expanded) as the s'n from a file of shell commands have no access to the text of the commands by default; rather they receive the original standard input of the shell. The `<<' mechanism should be used to present inline data. This permits shell command scripts to function as components of pipelines and allows the shell to block read its input. .PP Diagnostic output may be directed through a pipe with the standard output. Simply use the form `|\|&' rather than just `|'. .PP .B Expressions .PP A number of the builtin commands (to be described subsequently) take expressions, in which the operators are similar to those of C, with the same precedence. These expressions appear in the .I @, .I exit, .I if, and .I while commands. The following operators are available: .DT .PP |\|\|| && | \*(ua & == != <= >= < > << >> + \- * / % ! ~ ( ) .PP Here the precedence increases to the right, `==' and `!=', `<=' `>=' `<' and `>', `<<' and `>>', `+' and `\-', `*' `/' and `%' being, in groups, at the same level. The `==' and fer to accomplish the rereading implied by the loop. (To the extent that this allows, backward goto's will succeed on non-seekable inputs.) .PP .B "Builtin commands" .PP Builtin commands are executed within the shell. If a builtin command occurs as any component of a pipeline except the last then it is executed in a subshell. .HP 5 .B alias .br .ns .HP 5 .BR alias " name" .br .ns .HP 5 .BR alias " name wordlist" .br The first form prints all aliases. The second form prints the alias for name. The final form assigns the specified .I wordlist as the alias of .I name; .I wordlist is command and filename substituted. .I Name is not allowed to be .I alias or .I unalias .HP 5 .B alloc .br Shows the amount of dynamic core in use, broken down into used and free core, and address of the last location in the heap. With an argument shows each used and free block on the internal dynamic memory chain indicating its address, size, and whether it is used or free. This is a debugging command and may not work in production`!=' operators compare their arguments as strings, all others operate on numbers. Strings which begin with `0' are considered octal numbers. Null or missing arguments are considered `0'. The result of all expressions are strings, which represent decimal numbers. It is important to note that no two components of an expression can appear in the same word; except when adjacent to components of expressions which are syntactically significant to the parser (`&' `|' `<' `>' `(' `)') they should be surrounded by spaces. .PP Also available in expressions as primitive operands are command executions enclosed in `{' and `}' and file enquiries of the form `\-\fIl\fR name' where .I l is one of: .PP .DT .nf r read access w write access x execute access e existence o ownership z zero size f plain file d directory .fi .PP The specified name is command and filename expanded and then tested to see if it has the specified relationship to the real user. If the file does not exist or is inaccessible then all enquiries  versions of the shell; it requires a modified version of the system memory allocator. .HP 5 .B break .br Causes execution to resume after the .I end of the nearest enclosing .I forall or .I while. The remaining commands on the current line are executed. Multi-level breaks are thus possible by writing them all on one line. .HP 5 .B breaksw .br Causes a break from a .I switch, resuming after the .I endsw. .HP 5 .BR case " label:" .br A label in a .I switch statement as discussed below. .HP 5 .B cd .br .ns .HP 5 .BR cd " name" .br .ns .HP 5 .B chdir .br .ns .HP 5 .BR chdir " name" .br Change the shells working directory to directory .I name. If no argument is given then change to the home directory of the user. .HP 5 .B continue .br Continue execution of the nearest enclosing .I while or .I foreach. The rest of the commands on the current line are executed. .HP 5 .B default: .br Labels the default case in a .I switch statement. The default should come after all .I case labels. .HP 5 .BR echo " wordlist" .return false, i.e. `0'. Command executions succeed, returning true, i.e. `1', if the command exits with status 0, otherwise they fail, returning false, i.e. `0'. If more detailed status information is required then the command should be executed outside of an expression and the variable .I status examined. .PP .B "Control flow" .PP The shell contains a number of commands which can be used to regulate the flow of control in command files (shell scripts) and (in limited but useful ways) from terminal input. These commands all operate by forcing the shell to reread or skip in its input and, due to the implementation, restrict the placement of some of the commands. .PP The .I foreach, .I switch, and .I while statements, as well as the .I if\-then\-else form of the .I if statement require that the major keywords appear in a single simple command on an input line as shown below. .PP If the shell's input is not seekable, the shell buffers up input whenever a loop is being read and performs seeks in this internal buf'br The specified words are written to the shells standard output. A `\ec' causes the echo to complete without printing a newline, akin to the `\ec' in .IR nroff (1). A `\en' in wordlist causes a newline to be printed. Otherwise the words are echoed, separated by spaces. .HP 5 .B else .br .ns .HP 5 .B end .br .ns .HP 5 .B endif .br .ns .HP 5 .B endsw .br See the description of the .I foreach, .I if, .I switch, and .I while statements below. .HP 5 .BR exec " command" .br The specified command is executed in place of the current shell. .HP 5 .B exit .br .ns .HP 5 .BR exit (expr) .br The shell exits either with the value of the .I status variable (first form) or with the value of the specified .I expr (second form). .HP 5 .BR foreach " name (wordlist)" .br .ns .HP 5 \ ... .br .ns .HP 5 .B end .br The variable .I name is successively set to each member of .I wordlist and the sequence of commands between this command and the matching .I end are executed. (Both .I foreach and .I end must appear alone on se commands to the second else are executed, etc. Any number of .I else-if pairs are possible; only one .I endif is needed. The .I else part is likewise optional. (The words .I else and .I endif must appear at the beginning of input lines; the .I if must appear alone on its input line or after an .I else.) .HP 5 .B login .br Terminate a login shell, replacing it with an instance of .B /bin/login. This is one way to log off, included for compatibility with .B /bin/sh. .HP 5 .B logout .br Terminate a login shell. Especially useful if .I ignoreeof is set. .HP 5 .B nice .br .ns .HP 5 .BR nice " \+number" .br .ns .HP 5 .BR nice " command" .br .ns .HP 5 .BR nice " \+number command" .br The first form sets the .I nice for this shell to 4. The second form sets the .I nice to the given number. The final two forms run command at priority 4 and .I number respectively. The super-user may specify negative niceness by using `nice \-number ...'. Command is always executed in a sub-shell, and the restrictions place on commeparate lines.) .IP The builtin command .I continue may be used to continue the loop prematurely and the builtin command .I break to terminate it prematurely. When this command is read from the terminal, the loop is read up once prompting with `?' before any statements in the loop are executed. If you make a mistake typing in a loop at the terminal you can rub it out. .HP 5 .BR glob " wordlist" .br Like .I echo but no `\e' escapes are recognized and words are delimited by null characters in the output. Useful for programs which wish to use the shell to filename expand a list of words. .HP 5 .BR goto " word" .br The specified .I word is filename and command expanded to yield a string of the form `label'. The shell rewinds its input as much as possible and searches for a line of the form `label:' possibly preceded by blanks or tabs. Execution continues after the specified line. .HP 5 .BR hashstat .br Print a statistics line indicating how effective the internal hash table has been at locating commands (and avoiands in simple .I if statements apply. .HP 5 .B nohup .br .ns .HP 5 .B "nohup command" .br The first form can be used in shell scripts to cause hangups to be ignored for the remainder of the script. The second form causes the specified command to be run with hangups ignored. On the Computer Center systems at UC Berkeley, this also .I submits the process. Unless the shell is running detached, .I nohup has no effect. All processes detached with ``&'' are automatically .I nohup'ed. (Thus, .I nohup is not really needed.) .HP 5 .B onintr .br .ns .HP 5 .BR onintr " \-" .br .ns .HP 5 .BR onintr " label" .br Control the action of the shell on interrupts. The first form restores the default action of the shell on interrupts which is to terminate shell scripts or to return to the terminal command input level. The second form `onintr \-' causes all interrupts to be ignored. The final form causes the shell to execute a `goto label' when an interrupt is received or a child process terminates because it was interrupding .I exec's). An .I exec is attempted for each component of the .I path where the hash function indicates a possible hit, and in each component which does not begin with a ``/''. .HP 5 .B history .br Displays the history event list. .HP 5 .BR if " (expr) command" .br If the specified expression evaluates true, then the single .I command with arguments is executed. Variable substitution on .IR command "" happens early, at the same time it does for the rest of the .I if command. .I Command must be a simple command, not a pipeline, a command list, or a parenthesized command list. Input/output redirection occurs even if .I expr is false, when command is .B not executed (this is a bug). .HP 5 .BR if " (expr) " "then" .br .ns .HP 5 \ ... .br .ns .HP 5 .BR else " " "if\fR (expr2) \fBthen" .br .ns .HP 5 \ ... .br .ns .HP 5 .B else .br .ns .HP 5 \ ... .br .ns .HP 5 .B endif .br If the specified .IR expr "" is true then the commands to the first .I else are executed; else if .IR expr2 "" is true then th(ted. .IP In any case, if the shell is running detached and interrupts are being ignored, all forms of .I onintr have no meaning and interrupts continue to be ignored by the shell and all invoked commands. .HP 5 .BR rehash .br Causes the internal hash table of the contents of the directories in the .I path variable to be recomputed. This is needed if new commands are added to directories in the .I path while you are logged in. This should only be necessary if you add commands to one of your own directories, or if a systems programmer changes the contents of one of the system directories. .HP 5 .BR repeat " count command" .br The specified .I command which is subject to the same restrictions as the .I command in the one line .I if statement above, is executed .I count times. I/O redirections occurs exactly once, even if .I count is 0. .HP 5 .B set .br .ns .HP 5 .BR set " name" .br .ns .HP 5 .BR set " name=word" .br .ns .HP 5 .BR set " name[index]=word" .br .ns .HP 5 .BR set " name=(wordlist)" .br The first egins after the default label. Each case label and the default label must appear at the beginning of a line. The command .I breaksw causes execution to continue after the .I endsw. Otherwise control may fall through case labels and default labels as in C. If no label matches and there is no default, execution continues after the .I endsw. .HP 5 .B time .br .ns .HP 5 .BR time " command" .br With no argument, a summary of time used by this shell and its children is printed. If arguments are given the specified simple command is timed and a time summary as described under the .I time variable is printed. If necessary, an extra shell is created to print the time statistic when the command completes. .HP 5 .B umask .br .ns .HP 5 .BR umask " value" .br The file creation mask is displayed (first form) or set to the specified value (second form). The mask is given in octal. Common values for the mask are 002 giving all access to the group and read and execute access to others or 022 giving all access except no wrform of the command shows the value of all shell variables. Variables which have other than a single word as value print as a parenthesized word list. The second form sets .I name to the null string. The third form sets .I name to the single .I word. The fourth form sets the .I index'th component of name to word; this component must already exist. The final form sets .I name to the list of words in .I wordlist. In all cases the value is command and filename expanded. .IP These arguments may be repeated to set multiple values in a single set command. Note however, that variable expansion happens for all arguments before any setting occurs. .HP 5 .BR setenv " name value" .br (Version 7 systems only.) Sets the value of environment variable .I name to be .I value, a single string. Useful environment variables are `TERM' the type of your terminal and `SHELL' the shell you are using. .HP 5 .B shift .br .ns .HP 5 .BR shift " variable" .br The members of .I argv are shifted to the left, discarding .I argv[1]. It is ite access for users in the group or others. .HP 5 .BR unalias " pattern" .br All aliases whose names match the specified pattern are discarded. Thus all aliases are removed by `unalias *'. It is not an error for nothing to be .I unaliased. .HP 5 .BR unhash .br Use of the internal hash table to speed location of executed programs is disabled. .HP 5 .BR unset " pattern" .br All variables whose names match the specified pattern are removed. Thus all variables are removed by `unset *'; this has noticeably distasteful side-effects. It is not an error for nothing to be .I unset. .HP 5 .B wait .br All child processes are waited for. It the shell is interactive, then an interrupt can disrupt the wait, at which time the shell prints names and process numbers of all children known to be outstanding. .HP 5 .BR while " (expr)" .br .ns .HP 5 \ ... .br .ns .HP 5 .B end .br While the specified expression evaluates non-zero, the commands between the .I while and the matching end are evaluated. .I Break and .I continue an error for .I argv not to be set or to have less than one word as value. The second form performs the same function on the specified variable. .HP 5 .BR source " name" .br The shell reads commands from .I name. .I Source commands may be nested; if they are nested too deeply the shell may run out of file descriptors. An error in a .I source at any level terminates all nested .I source commands. Input during .I source commands is .B never placed on the history list. .HP 5 .BR switch " (string)" .br .ns .HP 5 .BR case " str1:" .br .ns .HP 5 \ ... .br .ns .HP 5 \ .B breaksw .br .ns .HP 5 \&... .br .ns .HP 5 .B default: .br .ns .HP 5 \ ... .br .ns .HP 5 \ .B breaksw .br .ns .HP 5 .B endsw .br Each case label is successively matched, against the specified .I string which is first command and filename expanded. The file metacharacters `*', `?' and `[...]' may be used in the case labels, which are variable expanded. If none of the labels match before a `default' label is found, then the execution b(may be used to terminate or continue the loop prematurely. (The .I while and .I end must appear alone on their input lines.) Prompting occurs here the first time through the loop as for the .I foreach statement if the input is a terminal. .HP 5 .B "@" .br .ns .HP 5 .BR "@" " name = expr" .br .ns .HP 5 .BR "@" " name[index] = expr" .br The first form prints the values of all the shell variables. The second form sets the specified .I name to the value of .I expr. If the expression contains `<', `>', `&' or `|' then at least this part of the expression must be placed within `(' `)'. The third form assigns the value of .I expr to the .I index'th argument of .I name. Both .I name and its .I index'th component must already exist. .IP The operators `*=', `+=', etc are available as in C. The space separating the name from the assignment operator is optional. Spaces are, however, mandatory in separating components of .I expr which would otherwise be single words. .IP Special postfix `++' and `\-\-' operators incremenng interval, in seconds, than the default, which is 10 minutes. .IP If multiple mail files are specified, then the shell says `New mail in .IR name ' when there is mail in the file .I name. .TP 15 .B noclobber \c As described in the section on .I Input/output, restrictions are placed on output redirection to insure that files are not accidentally destroyed, and that `>>' redirections refer to existing files. .TP 15 .B noglob \c If set, filename expansion is inhibited. This is most useful in shell scripts which are not dealing with filenames, or after a list of filenames has been obtained and further expansions are not desirable. .TP 15 .B nonomatch \c If set, it is not an error for a filename expansion to not match any existing files; rather the primitive pattern is returned. It is still an error for the primitive pattern to be malformed, i.e. `echo [' still gives an error. .TP 15 .B path \c Each word of the path variable specifies a directory in which commands are to be sought for execution. A null word spect and decrement .I name respectively, i.e. `@ i++'. .PP .B "Pre-defined variables" .PP The following variables have special meaning to the shell. Of these, .I argv, .I child, .I home, .I path, .I prompt, .I shell and .I status are always set by the shell. Except for .I child and .I status this setting occurs only at initialization; these variables will not then be modified unless this is done explicitly by the user. .TP 15 .B argv \c Set to the arguments to the shell, it is from this variable that positional parameters are substituted, i.e. `$1' is replaced by `$argv[1]', etc. .TP 15 .B child The process number printed when the last command was forked with `&'. This variable is .I unset when this process terminates. .TP 15 .B echo \c Set when the .B \-x command line option is given. Causes each command and its arguments to be echoed just before it is executed. For non-builtin commands all expansions occur before echoing. Builtin commands are echoed before command and filename substitution, since these substiifies the current directory. If there is no .I path variable then only full path names will execute. The usual search path is `.', `/bin' and `/usr/bin', but this may vary from system to system. For the super-user the default search path is `/etc', `/bin' and `/usr/bin'. A shell which is given neither the .B \-c nor the .B \-t option will normally hash the contents of the directories in the .I path variable after reading .I \&.cshrc, and each time the .I path variable is reset. If new commands are added to these directories while the shell is active, it may be necessary to give the .I rehash or the commands may not be found. .TP 15 .B prompt \c The string which is printed before each command is read from an interactive terminal input. If a `!' appears in the string it will be replaced by the current event number unless a preceding `\e' is given. Default is `% ', or `# ' for the super-user. .TP 15 .B shell \c The file in which the shell resides. This is used in forking shells to interpret files which have exetutions are then done selectively. .TP 15 .B history \c Can be given a numeric value to control the size of the history list. Any command which has been referenced in this many events will not be discarded. Too large values of .I history may run the shell out of memory. The last executed command is always saved on the history list. .TP 15 .B home \c The home directory of the invoker, initialized from the environment. The filename expansion of `\fB~\fR' refers to this variable. .TP 15 .B ignoreeof \c If set the shell ignores end-of-file from input devices which are terminals. This prevents shells from accidentally being killed by control-D's. .TP 15 .B mail \c The files where the shell checks for mail. This is done after each command completion which will result in a prompt, if a specified interval has elapsed. The shell says `You have new mail.' if the file exists with an access time not greater than its modify time. .IP If the first word of the value of .I mail is numeric it specifies a different mail checki)cute bits set, but which are not executable by the system. (See the description of .I "Non-builtin Command Execution" below.) Initialized to the (system-dependent) home of the shell. .TP 15 .B status \c The status returned by the last command. If it terminated abnormally, then 0200 is added to the status. Builtin commands which fail return exit status `1', all other builtin commands set status `0'. .TP 15 .B time \c Controls automatic timing of commands. If set, then any command which takes more than this many cpu seconds will cause a line giving user, system, and real times and a utilization percentage which is the ratio of user plus system times to real time to be printed when it terminates. .TP 15 .B verbose \c Set by the .B \-v command line option, causes the words of each command to be printed after history substitution. .PP .B "Non-builtin command execution" .PP When a command to be executed is found to not be a builtin command the shell attempts to execute the command via .IR exec (2). Each word in thtatus. .TP 5 .B \-f \c The shell will start faster, because it will neither search for nor execute commands from the file `\&.cshrc' in the invokers home directory. .TP 5 .B \-i \c The shell is interactive and prompts for its top-level input, even if it appears to not be a terminal. Shells are interactive without this option if their inputs and outputs are terminals. .TP 5 .B \-n \c Commands are parsed, but not executed. This may aid in syntactic checking of shell scripts. .TP 5 .B \-s \c Command input is taken from the standard input. .TP 5 .B \-t \c A single line of input is read and executed. A `\e' may be used to escape the newline at the end of this line and continue onto another line. .TP 5 .B \-v \c Causes the .I verbose variable to be set, with the effect that command input is echoed after history substitution. .TP 5 .B \-x \c Causes the .I echo variable to be set, so that commands are echoed immediately before execution. .TP 5 .B \-V \c Causes the .I verbose variable to be set even before `\e variable .I path names a directory from which the shell will attempt to execute the command. If it is given neither a .B \-c nor a .B \-t option, the shell will hash the names in these directories into an internal table so that it will only try an .I exec in a directory if there is a possibility that the command resides there. This greatly speeds command location when a large number of directories are present in the search path. If this mechanism has been turned off (via .I unhash), or if the shell was given a .B \-c or .B \-t argument, and in any case for each directory component of .I path which does not begin with a ``/'', the shell concatenates with the given command name to form a path name of a file which it then attempts to execute. .PP Parenthesized commands are always executed in a subshell. Thus `(cd ; pwd) ; pwd' prints the .I home directory; leaving you where you were (printing this after the home directory), while `cd ; pwd' leaves you in the .I home directory. Parenthesized commands are most o&.cshrc' is executed. .TP 5 .B \-X \c Is to .B \-x as .B \-V is to .B \-v. .PP After processing of flag arguments if arguments remain but none of the .B \-c, .B \-i, .B \-s, or .B \-t options was given the first argument is taken as the name of a file of commands to be executed. The shell opens this file, and saves its name for possible resubstitution by `$0'. Since many systems use either the standard version 6 or version 7 shells whose shell scripts are not compatible with this shell, the shell will execute such a `standard' shell if the first character of a script is not a `#', i.e. if the script does not start with a comment. Remaining arguments initialize the variable .I argv. .PP .B "Signal handling" .PP The shell normally ignores .I quit signals. The .I interrupt and .I quit signals are ignored for an invoked command if the command is followed by `&'; otherwise the signals have the values which the shell inherited from its parent. The shells handling of interrupts can be controlled by .I onintr. Loginften used to prevent .I chdir from affecting the current shell. .PP If the file has execute permissions but is not an executable binary to the system, then it is assumed to be a file containing shell commands an a new shell is spawned to read it. .PP If there is an .I alias for .I shell then the words of the alias will be prepended to the argument list to form the shell command. The first word of the .I alias should be the full path name of the shell (e.g. `$shell'). Note that this is a special, late occurring, case of .I alias substitution, and only allows words to be prepended to the argument list without modification. .PP .B "Argument list processing" .PP If argument 0 to the shell is `\-' then this is a login shell. The flag arguments are interpreted as follows: .TP 5 .B \-c \c Commands are read from the (single) following argument which must be present. Any remaining arguments are placed in .I argv. .TP 5 .B \-e \c The shell exits if any invoked command terminates abnormally or yields a non-zero exit s) shells catch the .I terminate signal; otherwise this signal is passed on to children from the state in the shell's parent. In no case are interrupts allowed when a login shell is reading the file `\&.logout'. .SH AUTHOR William Joy .SH FILES .ta 1.75i .nf ~/.cshrc Read at beginning of execution by each shell. ~/.login Read by login shell, after `.cshrc' at login. ~/.logout Read by login shell, at logout. /bin/sh Standard shell, for shell scripts not starting with a `#'. /tmp/sh* Temporary file for `<<'. /dev/null Source of empty file. /etc/passwd Source of home directories for `~name'. .fi .SH LIMITATIONS Words can be no longer that 1024 characters. The number of characters in an argument varies from system to system. Early version 6 systems typically have 512 character limits while later version 6 and version 7 systems have 5120 character limits. The number of arguments to a command which involves filename expansion is limited to 1/6'th the number of characters allowed in an argument list. Also command subs.TH CTAGS 1 4/1/81 .UC 4 .SH NAME ctags \- create a tags file .SH SYNOPSIS .B ctags [ .B \-u ] [ .B \-v ] [ .B \-w ] [ .B \-x ] name ... .SH DESCRIPTION .I Ctags makes a tags file for .IR ex (1) from the specified C, Pascal and Fortran sources. A tags file gives the locations of specified objects (in this case functions) in a group of files. Each line of the tags file contains the function name, the file in which it is defined, and a scanning pattern used to find the function definition. These are given in separate fields on the line, separated by blanks or tabs. Using the .I tags file, .I ex can quickly find these function definitions. .PP If the .B \-x flag is given, .I ctags produces a list of function names, the line number and file name on which each is defined, as well as the text of that line and prints this on the standard output. This is a simple index which can be printed out as an off-line readable function index. .PP If the .B \-v flag is given, an index of the form expected by .IR vgrind (1) titutions may substitute no more characters than are allowed in an argument list. .PP To detect looping, the shell restricts the number of .I alias substititutions on a single line to 20. .SH "SEE ALSO" access(2), exec(2), fork(2), pipe(2), signal(2), umask(2), wait(2), a.out(5), environ(5), `An introduction to the C shell' .SH BUGS Control structure should be parsed rather than being recognized as built-in commands. This would allow control commands to be placed anywhere, to be combined with `|', and to be used with `&' and `;' metasyntax. .PP Commands within loops, prompted for by `?', are not placed in the .I history list. .PP It should be possible to use the `:' modifiers on the output of command substitutions. All and more than one `:' modifier should be allowed on `$' substitutions. .PP Some commands should not touch .I status or it may be so transient as to be almost useless. Oring in 0200 to .I status on abnormal termination is a kludge. .PP In order to be able to recover from failing .I exec commandis produced on the standard output. This listing contains the function name, file name, and page number (assuming 64 line pages). Since the output will be sorted into lexicographic order, it may be desired to run the output through .BR "sort \-f" . Sample use: .nf ctags \-v files | sort \-f > index vgrind \-x index .fi .PP Files whose name ends in .B \.c or .B \.h are assumed to be C source files and are searched for C routine and macro definitions. Others are first examined to see if they contain any Pascal or Fortran routine definitions; if not, they are processed again looking for C definitions. .PP Other options are: .TP 5 .B \-w suppressing warning diagnostics. .TP 5 .B \-u causing the specified files to be .I updated in tags, that is, all references to them are deleted, and the new values are appended to the file. (Beware: this option is implemented in a way which is rather slow; it is usually faster to simply rebuild the .I tags file.) .PP The tag .I main is treated specially in C programs. The tag s on version 6 systems, the new command inherits several open files other than the normal standard input and output and diagnostic output. If the input and output are redirected and the new command does not close these files, some files may be held open unnecessarily. *formed is created by prepending .I M to the name of the file, with a trailing .c removed, if any, and leading pathname components also removed. This makes use of .I ctags practical in directories with more than one program. .SH FILES .DT tags output tags file .SH SEE ALSO ex(1), vi(1) .SH AUTHOR Ken Arnold; FORTRAN added by Jim Kleckner; Bill Joy added Pascal and .B \-x, replacing .I cxref. .SH BUGS Recognition of \fBfunctions\fR, \fBsubroutines\fR and \fBprocedures\fR for FORTRAN and Pascal is done is a very simpleminded way. No attempt is made to deal with block structure; if you have two Pascal procedures in different blocks with the same name you lose. .PP The method of deciding whether to look for C or Pascal and FORTRAN functions is a hack. f dc commands. .TP .B X replaces the number on the top of the stack with its scale factor. .TP .B "[ ... ]" puts the bracketed ascii string onto the top of the stack. .HP 6 .I "x =x" .br The top two elements of the stack are popped and compared. Register .I x is executed if they obey the stated relation. .TP .B v replaces the top element on the stack by its square root. Any existing fractional part of the argument is taken into account, but otherwise the scale factor is ignored. .TP .B ! interprets the rest of the line as a UNIX command. .TP .B c All values on the stack are popped. .TP .B i The top value on the stack is popped and used as the number radix for further input. .B I pushes the input base on the top of the stack. .TP .B o The top value on the stack is popped and used as the number radix for further output. .TP .SM .B O pushes the output base on the top of the stack. .TP .B k the top of the stack is popped, and that value is used as a non-negative scale factor: the appropriate number.TH DC 1 .SH NAME dc \- desk calculator .SH SYNOPSIS .B dc [ file ] .SH DESCRIPTION .I Dc is an arbitrary precision arithmetic package. Ordinarily it operates on decimal integers, but one may specify an input base, output base, and a number of fractional digits to be maintained. The overall structure of .I dc is a stacking (reverse Polish) calculator. If an argument is given, input is taken from that file until its end, then from the standard input. The following constructions are recognized: .HP 6 number .br The value of the number is pushed on the stack. A number is an unbroken string of the digits 0-9. It may be preceded by an underscore _ to input a negative number. Numbers may contain decimal points. .HP 6 + \- / * % ^ .br The top two values on the stack are added (+), subtracted (\-), multiplied (*), divided (/), remaindered (%), or exponentiated (^). The two entries are popped off the stack; the result is pushed on the stack in their place. Any fractional part of an exponent is ignored. .TP .BI s  of places are printed on output, and maintained during multiplication, division, and exponentiation. The interaction of scale factor, input base, and output base will be reasonable if all are changed together. .TP .B z The stack level is pushed onto the stack. .TP .SM .B Z replaces the number on the top of the stack with its length. .TP .B ? A line of input is taken from the input source (usually the terminal) and executed. .TP .B "; :" are used by .I bc for array operations. .PP An example which prints the first ten values of n! is .nf .PP .in +3 [la1+dsa*pla10>y]sy .br 0sa1 .br lyx .fi .SH "SEE ALSO" bc(1), which is a preprocessor for .I dc providing infix notation and a C-like syntax which implements functions and reasonable control structures for programs. .SH DIAGNOSTICS `x is unimplemented' where x is an octal number. .br `stack empty' for not enough elements on the stack to do what was asked. .br `Out of space' when the free list is exhausted (too many digits). .br `Out of headers' for too many nux The top of the stack is popped and stored into a register named .I x, where .I x may be any character. If the .B s is capitalized, .I x is treated as a stack and the value is pushed on it. .TP .BI l x The value in register .I x is pushed on the stack. The register .I x is not altered. All registers start with zero value. If the .B l is capitalized, register .I x is treated as a stack and its top value is popped onto the main stack. .TP .B d The top value on the stack is duplicated. .TP .B p The top value on the stack is printed. The top value remains unchanged. .B P interprets the top of the stack as an ascii string, removes it, and prints it. .TP .B f All values on the stack and in registers are printed. .TP .B q exits the program. If executing a string, the recursion level is popped by two. If .B q is capitalized, the top value on the stack is popped and the string execution level is popped by that value. .TP .B x treats the top element of the stack as a character string and executes it as a string o*mbers being kept around. .br `Out of pushdown' for too many items on the stack. .br `Nesting Depth' for too many levels of nested execution. mon subdirectories encountered. Special files are not read with this option; if their major and minor device numbers are the same they are considered to be equivalent. .TP .B \-s causes .I diff to report files which are the same, which are otherwise not mentioned. .TP .B \-q causes .I diff to omit reporting the actual differences between ascii files, and instead merely mention that there is a difference. .TP .B \-t causes .I diff to print a tab after the '<' or '>' in a difference list, instead of the normal space. .TP .B \-L causes .I diff, in the case of diffing two directories, to unlink dir2////file and link dir1////file to it if the two files are identical. .TP .B \-d causes .I diff to compare files beginning with '.'. Ordinarily such files are skipped. Even with this option, "." and ".." are skipped. .TP .B \-Sstring starts a directory .I diff in the middle beginning with file .I name. .PP When run with one or more file arguments against a directory, (the " diff file [...] dir2 " format), .I diff b.TH DEL 1 .SH NAME del \- delete files with confirmation .SH SYNOPSIS .B del file ... .SH DESCRIPTION .I Del echoes back its file arguments, one per line, and then prompts the user with "Delete?", to which the user must respond with .I yes or .IR no . All of the files are then deleted. Skipped files are so noted. .SH "SEE ALSO" rm(1) ehaves essentially as with the two directory option by constructing a "pseudo directory" from the named arguments. Unfortunately, the named files must be from the same directory. .I Dir2 may be a different directory from that which the files are in, of course. .PP The -r (recursive) flag is disallowed with this option. The -Sstring option is not supported, and all explicitly listed "." files are compared. .PP When run on regular files, and when comparing text files which differ during directory comparison, .I diff tells what lines must be changed in the files to bring them into agreement. Except in rare circumstances, .I diff finds a smallest sufficient set of file differences. If neither .I file1 nor .I file2 is a directory, then either may be given as `\-', in which case the standard input is used. If .I file1 is a directory, then a file in that directory whose file-name is the same as the file-name of .I file2 is used (and vice versa). .PP There are several options for output format; the default output f.TH DIFF 1 .UC 4 .SH NAME diff \- differential file and directory comparator .SH SYNOPSIS .B diff [ .B \-Sstring ] [ .B \-l ] [ .B \-r ] [ .B \-s ] [ .B \-q ][ .B \-L ] [ .B \-t ] [ \fB\-cefhj\fR ] [ .B \-b ] dir1 dir2 .br .B diff [ \fB\-cefhj ] [ \fB\-b\fR ] file1 file2 .br .B diff [ .BI \-D string ] [ .B \-b ] file1 file2 .br .B diff [ .B \-L ] [ .B \-l ] [ .B \-s ] [ \fB\-cefj\fR ] [ .B \-b ] file [ ... ] dir2 .SH DESCRIPTION If both arguments are directories, .I diff sorts the contents of the directories by name, and then runs the regular file .I diff algorithm (described below) on text files which are different. Binary files which differ, common subdirectories, and files which appear in only one directory are listed. Options when comparing directories are: .TP .B \-l long output format; each text file .I diff is piped through .IR pr (1) to paginate it, other differences are remembered and summarized after all text file differences are reported. .TP .B \-r causes application of .I diff recursively to com+ormat contains lines of these forms: .IP "" 5 .I n1 a .I n3,n4 .br .I n1,n2 d .I n3 .br .I n1,n2 c .I n3,n4 .PP These lines resemble .I ed commands to convert .I file1 into .IR file2 . The numbers after the letters pertain to .IR file2 . In fact, by exchanging `a' for `d' and reading backward one may ascertain equally how to convert .I file2 into .IR file1 . As in .I ed, identical pairs where .I n1 = .I n2 or .I n3 = .I n4 are abbreviated as a single number. .PP Following each of these lines come all the lines that are affected in the first file flagged by `<', then all the lines that are affected in the second file flagged by `>'. .PP Except for .B \-b, which may be given with any of the others, the following options are mutually exclusive: .TP 9 .B \-e producing a script of .I "a, c" and .I d commands for the editor .I ed, which will recreate .I file2 from .IR file1 . In connection with .BR \-e , the following shell program may help maintain multiple versions of a file. Only an ancestral file ($1) and a 1 for some, 2 for trouble. .SH BUGS Editing scripts produced under the .BR \-e " or" .BR \-f " option are naive about" creating lines consisting of a single `\fB.\fR'. .PP When comparing directories with the .B \-b option specified, .I diff first compares the files ala .I cmp, and then decides to run the .I diff algorithm if they are not equal. This may cause a small amount of spurious output if the files then turn out to be identical because the only differences are insignificant blank string differences. .PP In the multi-file arguments vs. directory mode ("diff file [...] dir2"): .IP "" 5 The algorithm for determining that multi-file arguments all come from the same directory is naive: "./foo" and "foo" are not considered to be equal. .PP .IP "" 5 The -Sstring flag is silently ignored. .PP  chain of version-to-version .I ed scripts ($2,$3,...) made by .I diff need be on hand. A `latest version' appears on the standard output. .IP \ \ \ \ \ \ \ \ (shift; cat $*; echo \'1,$p\') \(bv ed \- $1 .IP Extra commands are added to the output when comparing directories with .B \-e, so that the result is a .IR sh (1) script for converting text files which are common to the two directories from their state in .I dir1 to their state in .I dir2. .TP 9 .B \-f produces a script similar to that of .B \-e, not useful with .I ed, and in the opposite order. .TP 9 .B \-c produces a diff with lines of context. The default is to present 3 lines of context and may be changed, e.g to 10, by .BR \-c10 \&. With .B \-c the output format is modified slightly: the output beginning with identification of the files involved and their creation dates and then each change is separated by a line with a dozen *'s. The lines removed from .I file1 are marked with `\(mi'; those added to .I file2 are marked `+'. Lines which are chang.TH DIFF3 1 .SH NAME diff3 \- 3-way differential file comparison .SH SYNOPSIS .B diff3 [ .B \-ex3 ] file1 file2 file3 .SH DESCRIPTION .I Diff3 compares three versions of a file, and publishes disagreeing ranges of text flagged with these codes: .TP 16 ==== all three files differ .TP 16 ====1 .IR file1 " is different" .TP 16 ====2 .IR file2 " is different" .TP 16 ====3 .IR file3 " is different" .PP The type of change suffered in converting a given range of a given file to some other is indicated in one of these ways: .TP 16 .IB f " : " n1 " a" Text is to be appended after line number .I n1 in file .I f, where .I f = 1, 2, or 3. .TP 16 .IB f " : " n1 " , " n2 " c" Text is to be changed in the range line .I n1 to line .IR n2 . If .I n1 = .I n2, the range may be abbreviated to .IR n1 . .PP The original contents of the range follows immediately after a .B c indication. When the contents of two files are identical, the contents of the lower-numbered file is suppressed. .PP Under the .B \-e option, .I diff3 publised from one file to the other are marked in both files with `!'. .TP 9 .B \-h does a fast, half-hearted job. It works only when changed stretches are short and well separated, but does work on files of unlimited length. .TP .B \-Dstring causes .I diff to create a merged version of .I file1 and .I file2 on the standard output, with C preprocessor controls included so that a compilation of the result without defining \fIstring\fR is equivalent to compiling .I file1, while defining .I string will yield .I file2. .TP .B \-b causes trailing blanks (spaces and tabs) to be ignored, and other strings of blanks to compare equal. .TP .B \-j causes a "joint" listing of the input files. Lines common to both files are indicated by an initial '|' character in the output; '<' and '>' characters begin lines unique to one of the input files, as usual. .SH FILES /tmp/d????? .br /usr/lib/diffh for .B \-h .br /usr/bin/pr .SH "SEE ALSO" cmp(1), cc(1), comm(1), ed(1), diff3(1) .SH DIAGNOSTICS Exit status is 0 for no differences,+hes a script for the editor .I ed that will incorporate into .I file1 all changes between .I file2 and .I file3, .IR i.e . the changes that normally would be flagged ==== and ====3. Option .B \-x (\fB\-3\fR) produces a script to incorporate only changes flagged ==== (====3). The following command will apply the resulting script to `file1'. .PP .ti 16n (cat script; echo \'1,$p\') \(bv ed \- file1 .SH FILES /tmp/d3????? .br /usr/lib/diff3 .SH "SEE ALSO" diff(1) .SH BUGS Text lines that consist of a single `.' will defeat .B \-e. emporary .br /tmp/Rx\fInnnnn\fR named buffer temporary .br /usr/preserve preservation directory .SH SEE ALSO awk(1), ed(1), grep(1), sed(1), grep(1), vi(1), termcap(5), environ(5) .SH AUTHOR Originally written by William Joy .br Mark Horton has maintained the editor since version 2.7, adding macros, support for many unusual terminals, and other features such as word abbreviation mode. .SH BUGS The .I undo command causes all marks to be lost on lines changed and then restored if the marked lines were changed. .PP .I Undo never clears the buffer modified condition. .PP The .I z command prints a number of logical rather than physical lines. More than a screen full of output may result if long lines are present. .PP File input/output errors don't print a name if the command line \fB`\-'\fR option is used. .PP There is no easy way to do a single scan ignoring case. .PP The editor does not warn if text is placed in named buffers and not used before exiting the editor. .PP Null characters are discarded in input .TH EX 1 8/26/80 .UC 4 .SH NAME ex, edit \- text editor .SH SYNOPSIS .B ex [ .B \- ] [ .B \-v ] [ .B \-t tag ] [ .B \-r ] [ \fB\+\fIcommand\fR ] [ .B \-l ] name ... .br .B edit [ ex options ] .SH DESCRIPTION .I Ex is the root of a family of editors: .I edit, .I ex and .I vi. .I Ex is a superset of .I ed, with the most notable extension being a display editing facility. Display based editing is the focus of .I vi. .PP If you have not used .I ed, or are a casual user, you will find that the editor .I edit is convenient for you. It avoids some of the complexities of .I ex used mostly by systems programmers and persons very familiar with .I ed. .PP If you have a \s-2CRT\s0 terminal, you may wish to use a display based editor; in this case see .IR vi (1), which is a command which focuses on the display editing portion of .I ex. .SH DOCUMENTATION The document .I "Edit: A tutorial" provides a comprehensive introduction to .I edit assuming no previous knowledge of computers or the \s-2UNIX\s0 system. .PP The .I "Ex files, and cannot appear in resultant files. Reference Manual \- Version 3.5" is a comprehensive and complete manual for the command mode features of .I ex, but you cannot learn to use the editor by reading it. For an introduction to more advanced forms of editing using the command mode of .I ex see the editing documents written by Brian Kernighan for the editor .I ed; the material in the introductory and advanced documents works also with .I ex. .PP .I "An Introduction to Display Editing with Vi" introduces the display editor .I vi and provides reference material on .I vi. All of these documents can be found in volume 2c of the Programmer's Manual. In addition, the .I "Vi Quick Reference" card summarizes the commands of .I vi in a useful, functional way, and is useful with the .I Introduction. .SH FILES .DT /usr/lib/ex?.?strings error messages .br /usr/lib/ex?.?recover recover command .br /usr/lib/ex?.?preserve preserve command .br /etc/termcap describes capabilities of terminals .br ~/.exrc editor startup file .br /tmp/Ex\fInnnnn\fR editor t,.TH EXPAND 1 .UC 4 .SH NAME expand, unexpand \- expand tabs to spaces, and vice versa .SH SYNOPSIS .B expand [ \-tabstop ] [ \-tab1,tab2,...,tabn ] [ file ... ] .br .B unexpand [ .B \-a ] [ file ... ] .SH DESCRIPTION .I Expand processes the named files or the standard input writing the standard output with tabs changed into blanks. Backspace characters are preserved into the output and decrement the column count for tab calculations. .I Expand is useful for pre-processing character files (before sorting, looking at specific columns, etc.) that contain tabs. .PP If a single .I tabstop argument is given then tabs are set .I tabstop spaces apart instead of the default 8. If multiple tabstops are given then the tabs are set at those specific columns. .PP .I Unexpand puts tabs back into the data from the standard input or the named files and writes the result on the standard output. By default only leading blanks and tabs are reconverted to maximal strings of tabs. If the .B \-a option is given, then tabs are ins.TH FIND 1 .SH NAME find \- find files .SH SYNOPSIS .B find pathname-list expression .SH DESCRIPTION .I Find recursively descends the directory hierarchy for each pathname in the .I pathname-list (i.e., one or more pathnames) seeking files that match a boolean .I expression written in the primaries given below. In the descriptions, the argument .I n is used as a decimal integer where .I +n means more than .I n, .I \-n means less than .I n and .I n means exactly .IR n . .TP 10n .BR \-name " filename" True if the .I filename argument matches the current file name. Normal Shell argument syntax may be used if escaped (watch out for `[', `?' and `*'). .TP .BR \-perm " onum" True if the file permission flags exactly match the octal number .I onum (see .IR chmod (1)). If .I onum is prefixed by a minus sign, more flag bits (017777, see .IR stat (2)) become significant and the flags are compared: .IR (flags&onum)==onum . .TP .BR \-type " c" True if the type of the file is .I c, where .I c is .B "b, c, d" or .B f erted whenever they would compress the resultant file by replacing two or more characters. .SH BUGS for block special file, character special file, directory or plain file. .TP .BR \-links " n" True if the file has .I n links. .TP .BR \-user " uname" True if the file belongs to the user .I uname (login name or numeric user ID). .TP .BR \-group " gname" True if the file belongs to group .I gname (group name or numeric group ID). .TP .BR \-size " n" True if the file is .I n blocks long (512 bytes per block). .TP .BR \-inum " n" True if the file has inode number .I n. .TP .BR \-atime " n" True if the file has been accessed in .I n days. .TP .BR \-mtime " n" True if the file has been modified in .I n days. .TP .BR \-exec " command" True if the executed command returns a zero value as exit status. The end of the command must be punctuated by an escaped semicolon. A command argument `{}' is replaced by the current pathname. .TP .BR \-ok " command" Like .B \-exec except that the generated command is written on the standard output, then the standard input is read and the command executed only upon response .BR y . .TH FILE 1 .SH NAME file \- determine file type .SH SYNOPSIS .B file file ... .SH DESCRIPTION .I File performs a series of tests on each argument in an attempt to classify it. If an argument appears to be ascii, .I file examines the first 512 bytes and tries to guess its language. .SH BUGS It often makes mistakes. In particular it often suggests that command files are C programs. .PP Does not recognize Pascal or LISP. ,.TP .B \-print Always true; causes the current pathname to be printed. .TP .BR \-newer " file" True if the current file has been modified more recently than the argument .I file. .PP The primaries may be combined using the following operators (in order of decreasing precedence): .TP 4 1) A parenthesized group of primaries and operators (parentheses are special to the Shell and must be escaped). .TP 4 2) The negation of a primary (`!' is the unary .I not operator). .TP 4 3) Concatenation of primaries (the .I and operation is implied by the juxtaposition of two primaries). .TP 4 4) Alternation of primaries .RB "(`" \-o "' is the" .I or operator). .SH EXAMPLE To remove all files named `a.out' or `*.o' that have not been accessed for a week: .IP "" .2i find / \\( \-name a.out \-o \-name '*.o' \\) \-atime +7 \-exec rm {} \\; .SH FILES /etc/passwd .br /etc/group .SH "SEE ALSO" sh(1), test(1), filsys(5) .SH BUGS The syntax is painful. hoose, type the appropriate number (or function key) and press or . The choice will print at the bottom of the screen, to confirm the choice. Type or again. The menus allow 4 different kinds of choice: toggle, numerical, textual, and command. A toggle simply contains a finite number of choices, and one can roll through them by typing the space bar. A number is just that, a nonnegative integer which is typed in. Textual input is also typed in, but is not limited to numerical input. A command is either another menu, or explained by its name. The CANCEL/DEL key can be typed at any time during input, and will make it as if you had not made the most recent menu choice. .pp The first menu merely has three choices, .nf 1. Disk operations Read, write, or format disk. 2. Edit disk information Edit some disk paramaters. 3. More disk information Edit more disk paramaters. 4. Quit Go back to calling program, probably some shell. .bp The \fIDisk operations\fR menu .TH FOLD 1 2/24/79 .UC .SH NAME fold \- fold long lines for finite width output device .SH SYNOPSIS .B fold [ \-width ] [ file ... ] .SH DESCRIPTION .I Fold is a filter which will fold the contents of the specified files, or the standard input if no files are specified, breaking the lines to have maximum width .I width. The default for .I width is 80. .I Width should be a multiple of 8 if tabs are present, or the tabs should be expanded using .IR expand (1) before coming to .I fold. .SH SEE\ ALSO expand(1) .SH BUGS If underlining is present it may be messed up by folding. contains these choices: .nf 1. Get conf block from : \*Ztext\fR This is the name of a UNIX normal or special file. 2. Place conf block to : \*Ztext\fR Normal or special file. 3. Boot file from : \*Ztext\fR Normal file. 4. Boot file to : \*Ztext\fR Special file. 5. Format device : \*Ztext\fR Special file. 6. Build file system on : \*Ztext\fR Special file. 7. Read configuration block \*Zcommand\fR Read configuration block into buffer from file specified in choice 1. 8. Write configuration block \*Zcommand\fR Write configuration block from buffer onto file specified in choice 2. 9. Place boot file on disk \*Zcommand\fR Write boot file (any standalone program) specified in choice 3 onto special file specified in choice 4. 10. Format disk \*Zcommand\fR Format special file named in choice 5 using configuration block in buffer. 11. Analyze disk surface \*Zcommand\fR Write data, then read it back on every block of the disk specified in choice 5. This sh.ds Z \h'|5i'\fI .ds Y \h'|6.5i'\fI .TH FORMAT 1 "Fortune Systems" .SH NAME format \- menu-oriented disk formatter .SH SYNOPSIS .I format - .br .I format -l .br .nf \fIformat [-l] [-disk] [-c conffile] [-t track -h head] device\fR .fi .SH DESCRIPTION .I Format is a menu-driven disk formatter. It contains commands for formatting disks, reading and writing disk configuration blocks, placing a level 1 boot program on a disk, and building a file system appropriate to a disk partition. .SH "USER GUIDE" .I Format device .br formats an entire device. .PP .I "Format -t number -h number device" formats a particular track on the device. The "\fI-c conffile\fR" option uses a configuration block from "\fIconffile\fR" instead of the one already on the device. .PP .I "Format -l" gives a list of available disk models, while .PP .I "Format -" runs interactively, and contains a number of .I menus. All menus have a line at the bottom marked "Select Operation". Above, there are a list of choices, each marked by a number. To c-ould be done after formatting a disk, otherwise an imperfection will cause data to be lost, because the imperfection will be discovered when data is read, not when it is written. 12. Make file system \*Zcommand\fR Call /etc/mkfs on special file named in choice 6 using partition size, interleave factor, and cylinder size gleaned from config block already on that device. .fi .bp The \fIEdit disk information\fR menu contains three choices: .in +1i Note: .br These first two sub-menus edit fields in the disk configuration block, and are all set to their proper defaults when a new disk type is chosen in choice 1 of the \fIDisk operations menu\fR. Normally, you should not have to change anything in either sub-menu. .in 0 .nf 1. Disk parameters Bytes per sector : \*Ztoggle\fR Sectors per track : \*Znumber\fR Number of heads : \*Znumber\fR Number of cylinders : \*Znumber\fR Write reduce : \*Znumber\fR Write precompensation : \*Znumber\fR Drive attributes : called \fIdiskinfo\fR and should be either in /etc or in the current directory. .SH "SEE ALSO" mkconf(1), rdconf(1), intro(4), disk(5), diskinfo(5) .br /usr/include/sys/diskconf.h .SH FILES /etc/diskinfo .br \./diskinfo .SH AUTHORS Arthur L. Aronson .br Lance C. Norskog  \*Znumber\fR Software interlace : \*Znumber\fR Hardware interlace : \*Znumber\fR System interlace : \*Znumber\fR Disk id : \*Ztext\fR This is a short name or description for identification purposes only. 2. Partition layout \*Z\fRSize \*Y\fROffset 0 \*Znumber\fR \*Ynumber\fR 1 \*Znumber\fR \*Ynumber\fR 2 \*Znumber\fR \*Ynumber\fR 3 \*Znumber\fR \*Ynumber\fR 4 \*Znumber\fR \*Ynumber\fR 5 \*Znumber\fR \*Ynumber\fR 6 \*Znumber\fR \*Ynumber\fR 7 \*Znumber\fR \*Ynumber\fR Disk blocks left: 3. Set disk type : \*Ztoggle\fR This choice merely rolls through the list of disk models found in the \fIdiskinfo\fR file. Generally all you need to do is find the model disk that you have in this list, then go back to the disk operations menu. The normal parameters and partitions are automatically calculated. .bp .fi The \fIDisk parameters\fR menu displays various items pertaining to the physical characteristics of a particular make and mo.TH GETS 1 deprecated .UC 4 .SH NAME gets \- get a string from standard input .SH SYNOPSIS .B gets [ default ] .SH DESCRIPTION .B N.B.: This command was introduced for use in \fI.login\fR scripts when the facilities of the .IR tset (1) command were not totally adequate in setting the terminal type. This is no longer true, and .I gets should no longer be needed. To boot, a construct ``$<'' is available in .IR csh (1) now which has the functionality of .IR gets: .IP \fBset a=$<\fR .br \fBif ($a == '') set a=default .LP replaces .IP \fBset a=`gets default`\fR .LP Users of .IR sh (1) should use its .I read command rather than .I gets. .PP .I Gets can be used with .IR csh (1) to read a string from the standard input. If a .I default is given it is used if just return is typed, or if an error occurs. The resultant string (either the default or as read from the standard input is written to the standard output. If no .I default is given and an error occurs, .I gets exits with exit status 1. .SH "SEE ALSO" csh (1) .Sdel disk. The first seven should not be changed. The three interlace fields, however are related to performance and can be altered experimentally. The software interlace field should always be one. The hardware interlace field should be two for floppy and winchester disks. The system interlace field should be three. .PP The \fIPartitions\FR menu displays the table of disk partitions. A partition is a contiguous section of the disk, denoted by the starting and ending block number. There are 8 partitions, number 0 through 7. These may overlap, or be separate. If the size is 0, the partition is not considered to exist. Not all partitions need be defined. For more information, see \fIdisk(5)\fR and \fIdiskinfo(5)\fR. .PP The \fIMore disk information\fR menu page allows you to edit the boot program layout, (similar to the partition layout), and also the bad block map. These should only be changed if you are very confident. .I Format uses a database of disk model numbers and their characteristics. This file is -H BUGS .I Gets is obsolete.  [ ^ | ( ) and \\ in the .I expression as they are also meaningful to the Shell. It is safest to enclose the entire .I expression argument in single quotes \' \'. .PP .I Fgrep searches for lines that contain one of the (newline-separated) .I strings. .PP .I Egrep accepts extended regular expressions. In the following description `character' excludes newline: .IP A \e followed by a single character other than newline matches that character. .IP The character ^ ($) matches the beginning (end) of a line. .IP A .B . matches any character. .IP A single character not otherwise endowed with special meaning matches that character. .IP A string enclosed in brackets [\|] matches any single character from the string. Ranges of ASCII character codes may be abbreviated as in `a\-z0\-9'. A ] may occur only as the first character of the string. A literal \- must be placed where it can't be mistaken as a range indicator. .IP A regular expression followed by * (+, ?) matches a sequence of 0 or more (1 or more, 0 or 1) matche.TH GREP 1 8/11/80 .UC 4 .SH NAME grep, egrep, fgrep \- search a file for a pattern .SH SYNOPSIS .B grep [ option ] ... expression [ file ] ... .LP .B egrep [ option ] ... [ expression ] [ file ] ... .PP .B fgrep [ option ] ... [ strings ] [ file ] .SH DESCRIPTION Commands of the .I grep family search the input .I files (standard input default) for lines matching a pattern. Normally, each line found is copied to the standard output. .I Grep patterns are limited regular expressions in the style of .IR ex (1); it uses a compact nondeterministic algorithm. .I Egrep patterns are full regular expressions; it uses a fast deterministic algorithm that sometimes needs exponential space. .I Fgrep patterns are fixed strings; it is fast and compact. The following options are recognized. .TP .B \-v All lines but those matching are printed. .TP .B \-x (Exact) only lines matched in their entirety are printed .RI ( fgrep only). .TP .B \-c Only a count of matching lines is printed. .TP .B \-l The names of files with matchings of the regular expression. .IP Two regular expressions concatenated match a match of the first followed by a match of the second. .IP Two regular expressions separated by | or newline match either a match for the first or a match for the second. .IP A regular expression enclosed in parentheses matches a match for the regular expression. .LP The order of precedence of operators at the same parenthesis level is [\|] then *+? then concatenation then | and newline. .SH "SEE ALSO" ex(1), sed(1), sh(1) .SH DIAGNOSTICS Exit status is 0 if any matches are found, 1 if none, 2 for syntax errors or inaccessible files. .SH BUGS Ideally there should be only one .I grep, but we don't know a single algorithm that spans a wide enough range of space-time tradeoffs. .PP Lines are limited to 256 characters; longer lines are truncated.  lines are listed (once) separated by newlines. .TP .B \-n Each line is preceded by its relative line number in the file. .TP .B \-b Each line is preceded by the block number on which it was found. This is sometimes useful in locating disk block numbers by context. .TP .B \-i The case of letters is ignored in making comparisons. (E.g. upper and lower case are considered identical.) (\fIgrep\fR\| and \fIfgrep\fR only) .TP .B \-s Silent mode. Nothing is printed (except error messages). This is useful for checking the error status. .TP .B \-w The expression is searched for as a word (as if surrounded by `\e<' and `\e>', see .IR ex (1).) (\fIgrep\fR\| only) .TP .BI \-e " expression" Same as a simple .I expression argument, but useful when the .I expression begins with a \-. .TP .BI \-f " file" The regular expression .RI ( egrep ) or string list .RI ( fgrep ) is taken from the .I file. .PP In all cases the file name is shown if there is more than one input file. Care should be taken when using the characters $ *..TH HEAD 1 2/24/79 .UC .SH NAME head \- give first few lines .SH SYNOPSIS .B head [ .BR \- count ] [ file ... ] .SH DESCRIPTION This filter gives the first .I count lines of each of the specified files, or of the standard input. If .I count is omitted it defaults to 10. .SH SEE\ ALSO tail(1) .TH MAN 1 .SH NAME man \- print out the manual .SH SYNOPSIS .br .B man [ section ] title ... .SH DESCRIPTION .I Man is a shell program which provides on-line access to sections of the printed manual. If a section specifier is given, .I man looks in that section of the manual for the given .I titles. .I Section is an Arabic section number, i.e. 3. If .I section is omitted, .I man searches all sections of the manual and prints the sections it finds, if any. .PP .I Man pipes its output through .IR more (1) to stop after each page on the screen. Hit a space to continue, a control-D to scroll 11 more lines when the output stops. .IR More (1) is smart enough not to ask for terminal input if the output of .IR man has been redirected to a file. .SH FILES /usr/man/man?/* .SH SEE\ ALSO more(1) .SH BUGS .TH LN 1 11/16/79 .UC 4 .SH NAME ln \- make links .SH SYNOPSIS .B ln name1 [ name2 ] .br .B ln name ... directory .SH DESCRIPTION A link is a directory entry referring to a file; the same file (together with its size, all its protection information, etc.) may have several links to it. There is no way to distinguish a link to a file from its original directory entry; any changes in the file are effective independently of the name by which the file is known. .PP Given one or two arguments, .I ln creates a link to an existing file .IR name1 . If .I name2 is given, the link has that name; .I name2 may also be a directory in which to place the link; otherwise it is placed in the current directory. If only the directory is specified, the link will be made with its name the same as the last component of .IR name1 . .PP Given more than two arguments, .I ln makes links to all the named files in the named directory. The links made will have the same name as the files being linked to. .PP It is forbidden to link to a di.TH MESG 1 .SH NAME mesg \- permit or deny messages .SH SYNOPSIS .B mesg [ .B n ] [ .B y ] .SH DESCRIPTION .I Mesg with argument .B n forbids messages via .IR write (1) by revoking non-user write permission on the user's terminal. .I Mesg with argument .B y reinstates permission. All by itself, .I mesg reports the current state without changing it. .SH FILES /dev/tty* .SH "SEE ALSO" write(1) .SH DIAGNOSTICS Exit status is 0 if messages are receivable, 1 if not, 2 on error. rectory or to link across file systems. .SH "SEE ALSO" rm(1), cp(1), mv(1) ..TH NOHUP 1 .SH NAME nohup \- run a command immune to hangups and kills .SH SYNOPSIS .B nohup command [ arguments ] .SH DESCRIPTION .I Nohup\^ executes .I command\^ with hangups and kills ignored. By "kills ignored", it is meant that the command .IR kill (1) without a signal number argument will be ineffective when applied to a .IR nohup 'd process. If output is not re-directed by the user, it will be sent to .BR nohup.out . To kill a process that has been .IR nohup 'd use a signal number argument of 9 with .IR kill (1). (E.g., 'kill \-9 21111' would kill process 21111.) .SH "SEE ALSO" nice(1), signal(2), kill(1). .SH BUGS Works as described with the Bourne shell; somewhat differently with the C shell. ation tables .br /tmp/ta* temporary file .br /usr/lib/tmac/tmac.* standard macro files .br /usr/lib/term/* terminal driving tables for .I nroff .br .SH "SEE ALSO" J. F. Ossanna, .I Nroff/Troff user's manual .br B. W. Kernighan, .I A TROFF Tutorial .br eqn(1), tbl(1), ms(7), me(7), man(7), soelim(1), col(1) .TH NROFF 1 .SH NAME nroff \- text formatting .SH SYNOPSIS .B nroff [ option ] ... [ file ] ... .SH DESCRIPTION .I Nroff formats text in the named .I files for printing on typewriter-like devices. Their capabilities are described in the .I Nroff/Troff user's manual. .PP If no .I file argument is present, the standard input is read. An argument consisting of a single minus .RB ( \- ) is taken to be a file name corresponding to the standard input. The options, which may appear in any order so long as they appear before the files, are: .TP "\w'\f3\-m\f1name 'u" .BI \-o list Print only pages whose page numbers appear in the comma-separated .I list of numbers and ranges. A range .IB N \- M means pages .I N through .IR M ; an initial .I \-N means from the beginning to page .IR N ; and a final .IR N \- means from .I N to the end. .TP .BI \-n N Number first generated page .IR N . .TP .BI \-s N Stop every .I N pages. .I Nroff will halt prior to every .I N pages (default .IR N =1) to allow paper loading or changing, .TH NICE 1 .UC 4 .SH NAME nice, nohup \- run a command at low priority (\fIsh\fR only) .SH SYNOPSIS .B nice [ .BI \- number ] command [ arguments ] .PP .B nohup command [ arguments ] .SH DESCRIPTION .I Nice executes .I command with low scheduling priority. If the .I number argument is present, the priority is incremented (higher numbers mean lower priorities) by that amount up to a limit of 20. The default .I number is 10. .PP The super-user may run commands with priority higher than normal by using a negative priority, e.g. `\-\-10'. .PP .I Nohup executes .I command immune to hangup and terminate signals from the controlling terminal. The priority is incremented by 5. .I Nohup should be invoked from the shell with `&' in order to prevent it from responding to interrupts by or stealing the input from the next person who logs in on the same terminal. The syntax of nice is also different. .SH FILES nohup.out standard output and standard error file under .I nohup .SH "SEE ALSO" csh(1), nice(2), renice(8) .SH Dand will resume upon receipt of a newline. .TP .BI \-m name Prepend the macro file .BI /usr/lib/tmac/tmac. name to the input .IR files . .TP .BI \-r aN Set register .I a (one-character) to .IR N . .TP .B \-i Read standard input after the input files are exhausted. .TP .B \-q Invoke the simultaneous input-output mode of the .B rd request. .br .bd I .TP .BI \-T name Prepare output for specified terminal. Known .I names are .B 37 for the (default) Teletype Corporation Model 37 terminal, .B tn300 for the GE TermiNet\ 300 (or any terminal without half-line capability), .B 300S for the \s-1DASI\s+1-300S, .B 300 for the \s-1DASI\s+1-300, and .B 450 for the \s-1DASI\s+1-450 (Diablo Hyterm). .TP .B \-e Produce equally-spaced words in adjusted lines, using full terminal resolution. .TP .B \-h Use output tabs during horizontal spacing to speed output and reduce output character count. Tab settings are assumed to be every 8 nominal character widths. .SH FILES .ta \w'/usr/lib/tmac/tmac.* 'u /usr/lib/suftab suffix hyphen/IAGNOSTICS .I Nice returns the exit status of the subject command. .SH BUGS .I Nice and .I nohup are particular to .IR sh (1). If you use .IR csh (1), then commands executed with ``&'' are automatically immune to hangup signals while in the background. There is a builtin command .I nohup which provides immunity from terminate, but it does not redirect output to .I nohup.out. .PP .I Nice is built into .IR csh (1) with a slightly different syntax than described here. The form ``nice +10'' nices to positive nice, and ``nice \-10'' can be used by the super-user to give a process more of the processor. gument is specified, the standard input is used. .PP The offset argument specifies the offset in the file where dumping is to commence. This argument is normally interpreted as octal bytes. If `\fB.\fR' is appended, the offset is interpreted in decimal. If `\fBb\fR' is appended, the offset is interpreted in blocks of 512 bytes. If the file argument is omitted, the offset argument must be preceded .RB ` + '. .PP Dumping continues until end-of-file. .SH "SEE ALSO" adb(1) .TH NUM 1 .UC 4 .SH NAME num \- number lines .SH SYNOPSIS .B num [ file ... ] .SH DESCRIPTION The lines in the specified files, or the standard input, are copied to the standard output preceded by line numbers. Tabs remain aligned in the output as the lines are printed preceded by the number blank padded to six digits and then 2 spaces. .PP .I Num is actually just the .B \-n option of the .IR cat (1) command. .SH SEE\ ALSO cat(1), pr(1) .TH PRINTENV 1 2/24/79 .UC .SH NAME printenv \- print out the environment .SH SYNOPSIS .B printenv [ name ] .SH DESCRIPTION .I Printenv prints out the values of the variables in the environment. If a .I name is specified, only its value is printed. .PP If a .I name is specified and it is not defined in the environment, .I printenv returns exit status 1, else it returns status 0. .SH SEE ALSO sh(1), environ(5), csh(1) .SH BUGS .TH OD 1 4/1/81 .UC 4 .SH NAME od \- octal dump .SH SYNOPSIS .B od [ .B \-abcdoxDOXw ] [ file ] [ [ .B + ]offset[ .BR ". " "][" \fBb\fR ] ] .SH DESCRIPTION .I Od dumps .I file in one or more formats as selected by the first argument. If the first argument is missing, .B \-o is default. The meanings of the format argument characters are: .TP 3 .B b Interpret bytes in octal. .TP 3 .B c Interpret bytes in ASCII. Certain non-graphic characters appear as C escapes: null=\e0, backspace=\eb, formfeed=\ef, newline=\en, return=\er, tab=\et; others appear as 3-digit octal numbers. .TP 3 .B d Interpret shorts (16 bit words) in decimal. .TP 3 .B o Interpret shorts (16 bit words) in octal. .TP 3 .B w Produce wide (132 column) output. .TP 3 .B x Interpret shorts (16 bit words) in hex. .TP 3 .B D Interpret longs (32 bit words) in decimal. .TP 3 .B O Interpret longs (32 bit words) in octal. .TP 3 .B X Interpret longs (32 bit words) in hex. .PP The .I file argument specifies which file is to be dumped. If no file ar/.TH UCONF 1 .SH NAME uconf \- change system parameters .SH SYNOPSIS .B uconf .SH DESCRIPTION The uconf program calls up a menu to allow you to use the 32:16 with various peripheral devices. The menu consists of fields and values for the fields. Upon entry to the program the current value of the fields as stored in the EAROM is displayed. Certain of the fields have possible values that can be cycled through by pushing the space bar. Others require the data to be manually entered; for these entries, the space bar will either have no effect or enter a space character in the field. Certain of the fields also have associated with them "Used/Total" information. Depending on the release of the operating system in use, it can be garbaged. In any case, that information is not crucial, so it can be ignored. The information in some of the fields may also be in overstrike mode. See the description of "Set params auto?" for what this means. .SH "Field Definitions" .I Power up action: decide what the machid also under UNIX until they are changed. TTY00 can be set to a speed other than 2400 baud if that port is to be used for talking to other than the Fortune integral terminal. .I Console location: You may want to run a standard CRT terminal or even a printing terminal as the console. This item allows you to use tty00 or tty01 for this purpose. Typically, you would figure out an appropriate speed for the terminal, and plug it into tty01. Alternately, if the integral CRT were to fail, it is possible to connect a regu- lar CRT to the keyboard port using a special cable, and use it as the console. .I Timezone: This allows you to tell the UNIX timekeeping system about your timezone. The timezones that are shown are ones for the U.S. A future UNIX utility will allow you to set your exact timezone if the 'OTHER' field is selected. .I Daylight savings: This field allows you to tell the UNIX time-keeping system whether or not daylight savings EVER applies in your area. It automatne will do when you turn it on. Currently it can boot from the "Boot Dev- ice", show the menu, or act as a terminal, with another com- puter connected to the db-25 on the back of the 32:16. .I Boot Device: Decide which peripheral to boot from. The 32:16 can boot from the keyboard port, the back port, any of the 5 I/O slots which contain a peripheral card, floppy disk drive "Boot drive #" or the integral CRT. Booting from the hardware peripherals consists of using data supplied by the hardware. Booting from a serial line requires another computer at the other end of the line. (The current data format is simple Intel hexadecimal - this will change). Booting from the CRT gets you a prompt, and you type which device and file name that you wish to run. .I Boot drive #: Most of the disk drive peripherals can have more than one drive attached to them, and the drives would have unique numbers, starting from 0. This sets which actual drive on a particular type of device. .I Boot Progically knows WHEN it does, IF it does. .I Line frequency: If you are in America, this will be 60 hertz; for almost the rest of the world, 50. Please note that when you change from one to the other, the screen size will change. This annoying effect is easily adjusted by FORTUNE FE's. Now we come to the really interesting part of the menu. The remaining fields allow you to change how well UNIX per- forms with various types of use. Note: if you are confused by this, change the "Set params auto?" field to YES. It will automatically calculate generally acceptable values to use for the fields that are displayed in overstrike mode when the "Set params auto?" field is set to YES. .I Number buffers: Unix performs disk-handling through intermediate in and out boxes called buffers. The more file-handling (disk activity) occurs, the more that the buffers are used. If you are performing much activity on a certain few disk files, for instance a data-base, increasing the buffer quantitram: This specifies one of eight boot programs to use. .I Boot file: This is the file name in a UNIX file system to be booted. It must contain a device name prefix; e.g., .br .ti +5 hd02/unix .br is an acceptable entry here. Using more than 16 characaters total may get you in trouble. .br .I Flex drive #1, #2, #3, #4: This allows you to tell UNIX which makes and models of floppy disk drives are connected to the various floppy disk channels. .I Root device: This specifies the root file system. .I Swap device: This specifies the device on which to swap. .I "TTY00 port speed & TTY01 port speed:" The Fortune keyboard port (tty00) and the DB-25 port (tty01) on the back of the momboard are RS-232C serial lines. These can operate at various speeds. The Fortune keyboard should be at 2400 baud. The back port can be used for various purposes and the speed may be set up for whatever it is used for. These are default speeds only. They are in effect whenever the MomROM is running, an0y can have a marked improvement. .I Number inodes: There is an in-core inode required for every ACTIVE file, and the number of inodes limits the number of active files. These in-core structures are also another kind of buffer cache. If you are dealing with many files, increasing the number of in-core inodes can also have an effect on performance. These should also be increased if the 'out of inodes' message ever appears on the console. .I Number files: There is a file structure in core for every OPEN file. The number of file structures limits the total number of files that can be open at one time. Having more of them will not help performance. But not having enough of them could make it so you can't get anything done. Increase this number if the 'out of files' message ever appears on the console. .I Number texts: Each sharable UNIX process uses up a text entry. Use this entry to adjust the parameter. .I Number clists: A clist is to serial ports as buffers are to disk es away when the computer is turned off (known as volatile memory), and another one whose contents is permanent (non-volatile). The configuration menu allows you to save your changes in the non-volatile one. F1 (function key 1), labeled "STORE", puts your changes in non-volatile memory, so that whenever you turn the system off and on, the changes will stay in effect. There is an important problem here: Every time that you STORE your changes with F1 into non-volatile memory, the EAROM is hurt. The "EAROM has been changed # times" line at the bottom is a record of this. After the EAROM has been changed around 1000 times, it can go bad. When this happens, the "Faulty configuration, call your dealer" message will appear flashing at the bottom of the screen, and you should take its advice. F2, labeled "READ", throws away any changes you may have done (if you have not done a "STORE"), and re-reads what was there when you last powered up (or last did a "STORE"). This is u files. Increasing these to large amounts is only useful when running the 32:16 with much I/O activity to printers, networks, or terminals other than the integral CRT. Having more of them will sometimes allow a program like the print spooler to output a whole file and then exit, letting the operating system handle sending things to the printer. .I Number processes: Every program that runs is a process. Many programs, to work effectively, use 2 or more processes. Each process uses up system resources, and too many can overrun UNIX and kill it. If you get the "try again" message from the shell, it means you need room for more processes. .I Max process size: The largest amount of memory (the most critical system resource) that a process can use up. The number you enter is in K bytes. .I Set params auto? If this is set to YES, UNIX will decide for you the parameters that are displayed in overstrike mode when this field is set to YES. It does a pretty good job; you should onlseful if you made a change and didn't really mean to. F3, labeled "EXIT", quits the program. It doesn't do an automatic "STORE", so if you like the changes you have made, don't just "EXIT"; "STORE" first. y need to alter these fields if you use your UNIX system in an odd way. It bases its estimation of the over-strike fields on the total memory on your system and on your estimate of the number of users that will be using the system. If this field is set to YES, the values of the fields will be displayed in overstrike mode, meaning that those values will be ignored and the automatically calculated parameters used instead. .I Appx. # of users: This is a guess as to how many users you will have using your 32:16 This number is useful to UNIX in "Set params auto?" Note that if you want to just increase everything proportionately, but aren't really increasing the number of users on the system, you can still just make this number larger. .I "Saving your changes, or what does that bottom line mean?" The settings in the configuration menu are stored in a special kind of computer memory called an EAROM (electri- cally alterable read-only memory). This memory has two lev- els: one whose contents go0.TH RESET 1 .UC 4 .SH NAME reset \- reset the teletype bits to a sensible state .SH SYNOPSIS .B reset .SH DESCRIPTION .I Reset sets the terminal to cooked mode, turns off cbreak and raw modes, turns on nl, and restores special characters that are undefined to their default values. .PP This is most useful after a program dies leaving a terminal in a funny state; you have to type ``reset'' to get it to work then to the shell, as often doesn't work; often none of this will echo. .PP It isn't a bad idea to follow .I reset with .IR tset (1) .SH SEE ALSO stty(1), tset(1) .SH BUGS Doesn't set tabs properly; it can't intuit personal choices for interrupt and line kill characters, so it leaves these the old UNIX standards ^? (delete) for interrupt and @ for line kill. .PP It could well be argued that the shell should be responsible for insuring that the terminal remains in a sane state; this would eliminate the need for this program. ntheses. .PP An argument denoted .I text consists of one or more lines, all but the last of which end with `\e' to hide the newline. Backslashes in text are treated like backslashes in the replacement string of an `s' command, and may be used to protect initial blanks and tabs against the stripping that is done on every script line. .PP An argument denoted .I rfile or .I wfile must terminate the command line and must be preceded by exactly one blank. Each .I wfile is created before processing begins. There can be at most 10 distinct .I wfile arguments. .TP (1)\|a\e .br .ns .TP .I text .br Append. Place .I text on the output before reading the next input line. .TP .RI (2)\|b " label" Branch to the `:' command bearing the .IR label . If .I label is empty, branch to the end of the script. .TP (2)\|c\e .br .ns .TP .I text .br Change. Delete the pattern space. With 0 or 1 address or at the end of a 2-address range, place .I text on the output. Start the next cycle. .TP (2)\|d Delete the pattern space. Start the ne.TH SED 1 .SH NAME sed \- stream editor .SH SYNOPSIS .B sed [ .B \-n ] [ .B \-e script ] [ .B \-f sfile ] [ file ] ... .SH DESCRIPTION .I Sed copies the named .I files (standard input default) to the standard output, edited according to a script of commands. The .B \-f option causes the script to be taken from file .IR sfile ; these options accumulate. If there is just one .B \-e option and no .BR \-f 's, the flag .B \-e may be omitted. The .B \-n option suppresses the default output. .PP A script consists of editing commands, one per line, of the following form: .IP [address [, address] ] function [arguments] .PP In normal operation .I sed cyclically copies a line of input into a .I pattern space (unless there is something left after a `D' command), applies in sequence all commands whose .I addresses select that pattern space, and at the end of the script copies the pattern space to the standard output (except under .BR \-n ) and deletes the pattern space. .PP An .I address is either a decimal number that cxt cycle. .TP (2)\|D Delete the initial segment of the pattern space through the first newline. Start the next cycle. .TP (2)\|g Replace the contents of the pattern space by the contents of the hold space. .TP (2)\|G Append the contents of the hold space to the pattern space. .TP (2)\|h Replace the contents of the hold space by the contents of the pattern space. .TP (2)\|H Append the contents of the pattern space to the hold space. .TP (1)\|i\e .br .ns .TP .I text .br Insert. Place .I text on the standard output. .TP (2)\|n Copy the pattern space to the standard output. Replace the pattern space with the next line of input. .TP (2)\|N Append the next line of input to the pattern space with an embedded newline. (The current line number changes.) .TP (2)\|p Print. Copy the pattern space to the standard output. .TP (2)\|P Copy the initial segment of the pattern space through the first newline to the standard output. .TP (1)\|q Quit. Branch to the end of the script. Do not start a new cycle. .TP .RI (2)\|r " rfiounts input lines cumulatively across files, a `$' that addresses the last line of input, or a context address, `/regular expression/', in the style of .IR ed (1) modified thus: .IP The escape sequence `\en' matches a newline embedded in the pattern space. .PP A command line with no addresses selects every pattern space. .PP A command line with one address selects each pattern space that matches the address. .PP A command line with two addresses selects the inclusive range from the first pattern space that matches the first address through the next pattern space that matches the second. (If the second address is a number less than or equal to the line number first selected, only one line is selected.) Thereafter the process is repeated, looking again for the first address. .PP Editing commands can be applied only to non-selected pattern spaces by use of the negation function `!' (below). .PP In the following list of functions the maximum number of permissible addresses for each function is indicated in pare1le" Read the contents of .IR rfile . Place them on the output before reading the next input line. .TP .RI (2)\|s /regular\ expression/replacement/flags Substitute the .I replacement string for instances of the .I regular expression in the pattern space. Any character may be used instead of `/'. For a fuller description see .IR ed (1). .I Flags is zero or more of .RS .TP g Global. Substitute for all nonoverlapping instances of the .I regular expression rather than just the first one. .TP p Print the pattern space if a replacement was made. .TP .RI w " wfile" Write. Append the pattern space to .I wfile if a replacement was made. .RE .TP .RI (2)\|t " label" Test. Branch to the `:' command bearing the .I label if any substitutions have been made since the most recent reading of an input line or execution of a `t'. If .I label is empty, branch to the end of the script. .TP .RI (2)\|w " wfile" Write. Append the pattern space to .IR wfile . .TP .RI (2)\|x Exchange the contents of the pattern and hold spaces. .TP .R.TH STRINGS 1 2/24/79 .UC .SH NAME strings \- find the printable strings in a object, or other binary, file .SH SYNOPSIS .B strings [ .B \- ] [ .B \-o ] [ \fB\-\fInumber\fR ] file ... .SH DESCRIPTION .I Strings looks for ascii strings in a binary file. A string is any sequence of 4 or more printing characters ending with a newline or a null. Unless the .B \- flag is given, .I strings only looks in the initialized data space of object files. If the .B \-o flag is given, then each string is preceded by its offset in the file (in octal). If the \fB\-\fInumber\fR flag is given then number is used as the minimum string length rather than 4. .PP .I Strings is useful for identifying random object files and many other things. .SH "SEE ALSO" od(1) .SH BUGS The algorithm for identifying strings is extremely primitive I (2)\|y /string1/string2/ Transform. Replace all occurrences of characters in .I string1 with the corresponding character in .I string2. The lengths of .I string1 and .I string2 must be equal. .TP .RI (2)! " function" Don't. Apply the .I function (or group, if .I function is `{') only to lines .I not selected by the address(es). .TP .RI (0)\|: " label" This command does nothing; it bears a .I label for `b' and `t' commands to branch to. .TP (1)\|= Place the current line number on the standard output as a line. .TP (2)\|{ Execute the following commands through a matching `}' only when the pattern space is selected. .TP (0)\| An empty command is ignored. .SH SEE ALSO ed(1), grep(1), awk(1), lex(1) .TH SU 1 11/16/79 .UC .SH NAME su \- substitute user id temporarily .SH SYNOPSIS .B su [ userid ] .SH DESCRIPTION .I Su demands the password of the specified .I userid, and if it is given, changes to that .I userid and invokes the Shell .IR sh (1) without changing the current directory. The user environment is unchanged except for HOME and SHELL, which are taken from the password file for the user being substituted (see .IR environ (5)). The new user ID stays in force until the Shell exits. .PP If no .I userid is specified, `root' is assumed. To remind the super-user of his responsibilities, the Shell substitutes `#' for its usual prompt. .SH "SEE ALSO" sh(1) .SH BUGS Local administrative rules cause restrictions to be placed on who can .I su to `root', even with the root password. These rules vary from site to site. .TH SPLIT 1 .SH NAME split \- split a file into pieces .SH SYNOPSIS .B split [ .B \-\fIn ] [ file [ name ] ] .SH DESCRIPTION .I Split reads .I file and writes it in .IR n -line pieces (default 1000), as many as necessary, onto a set of output files. The name of the first output file is .I name with .B aa appended, and so on lexicographically. If no output name is given, .B x is default. .PP If no input file is given, or if .B \- is given in its stead, then the standard input file is used. 1.TH SUM 1 .SH NAME sum \- sum and count blocks in a file .SH SYNOPSIS .B sum file .SH DESCRIPTION .I Sum calculates and prints a 16-bit checksum for the named file, and also prints the number of blocks in the file. It is typically used to look for bad spots, or to validate a file communicated over some transmission line. .SH "SEE ALSO" wc(1) .SH DIAGNOSTICS `Read error' is indistinuishable from end of file on most devices; check the block count. inds of anomalous behavior may happen with character special files. .TH TABS 1 .SH NAME tabs \- set terminal tabs .SH SYNOPSIS .B tabs [ .B \-n ] [ terminal ] .SH DESCRIPTION .I Tabs sets the tabs on a variety of terminals. Various terminal names given in .IR term (7) are recognized; the default is, however, suitable for most 300 baud terminals. If the .B \-n flag is present then the left margin is not indented as is normal. .SH SEE ALSO stty(1), term(7) .SH BUGS It's much better to use .IR tset (1). .TH TAR 1 .UC 4 .SH NAME tar \- tape archiver .SH SYNOPSIS .B tar [ key ] [ name ... ] .SH DESCRIPTION .PP .I Tar saves and restores files on magtape. Its actions are controlled by the .I key argument. The .I key is a string of characters containing at most one function letter and possibly one or more function modifiers. Other arguments to the command are file or directory names specifying which files are to be dumped or restored. In all cases, appearance of a directory name refers to the files and (recursively) subdirectories of that directory. .PP The function portion of the key is specified by one of the following letters: .TP 8 .B r The named files are written on the end of the tape. The .B c function implies this. .TP 8 .B x The named files are extracted from the tape. If the named file matches a directory whose contents had been written onto the tape, this directory is (recursively) extracted. The owner, modification time, and mode are restored (if possible). If no file argument is given, the entire .TH TAIL 1 .UC 4 .SH NAME tail \- deliver the last part of a file .SH SYNOPSIS .B tail .if t [ \(+-number[\fBlbc\fR][\fBfr\fR] ] .if n +_number[lbc___][r_f_] [ file ] .SH DESCRIPTION .I Tail copies the named file to the standard output beginning at a designated place. If no file is named, the standard input is used. .PP Copying begins at distance .I +number from the beginning, or .I \-number from the end of the input. .I Number is counted in units of lines, blocks or characters, according to the appended option .B l, .B b or .B c. When no units are specified, counting is by lines. .PP Specifying .B r causes tail to print lines from the end of the file in reverse order. The default for .B r is to print the entire file this way. Specifying .B f causes .I tail to not quit at end of file, but rather wait and try to read repeatedly in hopes that the file will grow. .SH "SEE ALSO" dd(1) .SH BUGS Tails relative to the end of the file are treasured up in a buffer, and thus are limited in length. .PP Various k2content of the tape is extracted. Note that if multiple entries specifying the same file are on the tape, the last one overwrites all earlier. .TP 8 .B X Like x, plus: takes the next argument as the root of a directory tree for comparison. For each file to be extracted, if it is identical to a file in the corresponding position in the comparison tree, the new file is linked to that file. Otherwise, it is extracted as a separate new file as usual. .TP 8 .B t The names of the specified files are listed each time they occur on the tape. If no file argument is given, all of the names on the tape are listed. .TP 8 .B u The named files are added to the tape if either they are not already there or have been modified since last put on the tape. .TP 8 .B c Create a new tape; writing begins on the beginning of the tape instead of after the last file. This command implies .B r. .TP 8 .B C Compare files on tape against existing files. For each specified file, print a line with a key character followed by the file nraw magnetic tape archives (See .B f above). The block size is determined automatically when reading tapes (key letters `x' and `t'). .TP 10 .B l tells .I tar to complain if it cannot resolve all of the links to the files dumped. If this is not specified, no error messages are printed. .TP 10 .B m tells .I tar to not restore the modification times. The mod time will be the time of extraction. .TP 10 .B e tells .I tar to continue reading past tape errors. .PP Previous restrictions dealing with .IR tar 's inability to properly handle blocked archives have been lifted. .PP .SH FILES /dev/tar -- must be a device .br /tmp/tar* .SH DIAGNOSTICS Complaints about bad key characters and tape read/write errors. .br Complaints if enough memory is not available to hold the link tables. .SH BUGS There is no way to ask for the .IR n -th occurrence of a file. .br Tape errors are handled ungracefully. .br It would be nice if when tar bombs, it would print the last operation in progress, even if verbose is not set. .br The .B ame. .nf L linked to an earlier file on the tape ? can't read the disk file, so can't compare > disk file doesn't exist = files compare ! files don't compare .fi .TP 8 .B o On output, tar normally places information specifying owner and modes of directories in the archive. Former versions of tar, when encountering this information will give error message of the form .br "/: cannot create". .br This option will suppress the directory information. .TP 8 .B p This option says to restore files to their original modes, ignoring the present umask(2). Setuid and sticky information will also be restored to the super-user. .PP The following characters may be used in addition to the letter which selects the function desired. .TP 10 .B 0,...,7 This modifier selects a magtape drive on which the tape is mounted. (The default is drive 0 at 1600 bpi, which is normally /dev/rmt8.) .TP 10 .B v Normally .I tar does its work silently. The .B v (verbose) option causes it to type the name of each fu option can be slow. .br The current limit on file name length is 100 characters. ile it treats preceded by the function letter. With the .B t function, .B v gives more information about the tape entries than just the name. .TP 10 .B n With .BR x , .BR X , or .BR C , work only on files which are new, i.e. which don't already exist. .TP 10 .B w causes .I tar to print the action to be taken followed by file name, then wait for user confirmation. If a word beginning with `y' is given, the action is performed. Any other input means don't do it. .TP 10 .B f causes .I tar to use the next argument as the name of the archive instead of /dev/tar. If the name of the file is `\-', tar writes to standard output or reads from standard input, whichever is appropriate. Thus, .I tar can be used as the head or tail of a filter chain .I Tar can also be used to move hierarchies with the command .ce 1 cd fromdir; tar cf - . | (cd todir; tar xf -) .TP 10 .B b causes .I tar to use the next argument as the blocking factor for tape records. The default is 20 (the maximum). This option should only be used with 2.TH TIME 1 .UC 4 .SH NAME time \- time a command .SH SYNOPSIS .B time command .SH DESCRIPTION The given command is executed; after it is complete, .I time prints the elapsed time during the command, the time spent in the system, and the time spent in execution of the command. Times are reported in seconds. .PP On a PDP-11, the execution time can depend on what kind of memory the program happens to land in; the user time in MOS is often half what it is in core. .PP The times are printed on the diagnostic output stream. .PP .I Time is built in to .I csh(1), using a different output format. .SH BUGS Elapsed time is accurate to the second, while the CPU times are measured to the 60th second. Thus the sum of the CPU times can be up to a second larger than the elapsed time. .PP .I Time is a built-in command to .IR csh (1), with a much different syntax. This command is available as ``/bin/time'' to .I csh users. `\e' followed by any other character stands for that character. .PP The following example creates a list of all the words in `file1' one per line in `file2', where a word is taken to be a maximal string of alphabetics. The second string is quoted to protect `\e' from the Shell. 012 is the ASCII code for newline. .IP tr \-cs A\-Za\-z \'\e012\' file2 .SH "SEE ALSO" ed(1), ascii(7), expand(1) .SH BUGS Won't handle ASCII NUL in .I string1 or .I string2; always deletes NUL from input. .TH TOUCH 1 .SH NAME touch \- update date last modified of a file .SH SYNOPSIS .B touch [ .B \-c ] file ... .SH DESCRIPTION .I Touch attempts to set the modified date of each .I file. This is done by reading a character from the file and writing it back. .PP If a .I file does not exist, an attempt will be made to create it unless the .B \-c option is specified. .SH SEE\ ALSO utime(2) .TH TSET 1 4/1/81 .UC 4 .SH NAME tset \- set terminal modes .SH SYNOPSIS .B tset [ options ] [ .B \-m [\fIident\fP][\fItest .IR baudrate ]:\fItype \&... ] [ type ] .SH DESCRIPTION .I Tset causes terminal dependent processing such as setting erase and kill characters, setting or resetting delays, and the like. It first determines the .I type of terminal involved, names for which are specified by the .I /etc/termcap data base, and then does necessary initializations and mode settings. In the case where no argument types are specified, .I tset simply reads the terminal type out of the environment variable TERM and re-initializes the terminal. The rest of this manual concerns itself with type initialization, done typically once at login, and options used at initialization time to determine the terminal type and set up terminal modes. .PP When used in a startup script .I \&.profile (for .IR sh (1) users) or .I \&.login (for .IR csh (1) users) it is desirable to give information about the types of terminal usually.TH TR 1 .SH NAME tr \- translate characters .SH SYNOPSIS .B tr [ .B \-cds ] [ string1 [ string2 ] ] .SH DESCRIPTION .I Tr copies the standard input to the standard output with substitution or deletion of selected characters. Input characters found in .I string1 are mapped into the corresponding characters of .IR string2 . When .I string2 is short it is padded to the length of .I string1 by duplicating its last character. Any combination of the options .B \-cds may be used: .B \-c complements the set of characters in .I string1 with respect to the universe of characters whose ASCII codes are 01 through 0377 octal; .B \-d deletes all input characters in .I string1; .B \-s squeezes all strings of repeated output characters that are in .I string2 to single characters. .PP In either string the notation .IB a \- b means a range of characters from .I a to .I b in increasing ASCII order. The character `\e' followed by 1, 2 or 3 octal digits stands for the character whose ASCII code is given by those digits. A 3 used on terminals which are not hardwired. These ports are initially identified as being .I dialup or .I plugboard or .I arpanet etc. To specify what terminal type is usually used on these ports .B \-m is followed by the appropriate port type identifier, an optional baud-rate specification, and the terminal type to be used if the mapping conditions are satisfied. If more than one mapping is specified, the first applicable mapping prevails. A missing type identifier matches all identifiers. .PP Baud rates are specified as with .IR stty (1), and are compared with the speed of the diagnostic output (which is almost always the control terminal). The baud rate test may be any combination of: .B >, .B =, .B <, .B @, and .B !; .B @ is a synonym for .B = and .B ! inverts the sense of the test. To avoid problems with metacharacters, it is best to place the entire argument to .B \-m within ``\''' characters; users of .IR csh (1) must also put a ``\e'' before any ``!'' used here. .PP Thus .IP tset \-m \'dialup>300:adeasons); ^U is the preferred setting. No kill processing is done if .B \-k is not specified. .TP .B \-I supresses outputting terminal initialization strings. .TP .B \-Q supresses printing the ``Erase set to'' and ``Kill set to'' messages. .TP .B \-S Outputs the strings to be assigned to TERM and TERMCAP in the environment rather than commands for a shell. .SH FILES .DT /etc/ttytype terminal id to type map database .br /etc/termcap terminal capability database .SH SEE\ ALSO csh(1), setenv(1), sh(1), stty(1), environ(5), ttytype(5), termcap(5) .SH AUTHOR Eric Allman .SH BUGS Should be merged with .IR stty (1). .SH NOTES For compatibility with earlier versions of .I tset a number of flags are accepted whose use is discouraged: .TP 10 \fB\-d\fR type equivalent to .B \-m dialup:type .TP 10 \fB\-p\fR type equivalent to .B \-m plugboard:type .TP 10 \fB\-a\fR type equivalent to .B \-m arpanet:type .TP 10 \fB\-E\fR c Sets the erase character to .I c only if the terminal can backspace. .TP 10 \fB\-\fR prints the termim3a\' \-m dialup:dw2 \-m \'plugboard:?adm3a\' .LP causes the terminal type to be set to an .I adm3a if the port in use is a dialup at a speed greater than 300 baud; to a .I dw2 if the port is (otherwise) a dialup (i.e. at 300 baud or less). If the .I type above begins with a question mark, the user is asked if s/he really wants that type. A null response means to use that type; otherwise, another type can be entered which will be used instead. Thus, in this case, the user will be queried on a plugboard port as to whether they are using an .I adm3a. For other ports the port type will be taken from the /etc/ttytype file or a final, default .I type option may be given on the command line not preceded by a .B \-m. .PP It is often desirable to return the terminal type, as specified by the .B \-m options, and information about the terminal to a shell's environment. This can be done using the .B \-s option; using the Bourne shell, .IR sh (1): .IP eval \`tset \-s \fIoptions...\fR\` .LP or using the C shell, .IRnal type on the standard output .TP 10 \fB\-r\fR prints the terminal type on the diagnostic output.  csh (1): .IP set noglob; eval \`tset \-s \fIoptions...\fR\` .PP These commands cause .I tset to generate as output a sequence of shell commands which place the variables TERM and TERMCAP in the environment; see .IR environ (5). .PP Once the terminal type is known, .I tset engages in terminal mode setting. This normally involves sending an initialization sequence to the terminal and setting the single character erase (and optionally the line-kill (full line erase)) characters. .PP On terminals that can backspace but not overstrike (such as a \s-2CRT\s0), and when the erase character is the default erase character (`#' on standard systems), the erase character is changed to a Control-H (backspace). .PP The options are: .TP .B \-e set the erase character to be the named character .I c on all terminals, the default being the backspace character on the terminal, usually ^H. .TP .B \-k is similar to .B \-e but for the line kill character rather than the erase character; .I c defaults to ^X (for purely historical r3.TH TSORT 1 .SH NAME tsort \- topological sort .SH SYNOPSIS .B tsort [ file ] .SH DESCRIPTION .I Tsort produces on the standard output a totally ordered list of items consistent with a partial ordering of items mentioned in the input .IR file . If no .I file is specified, the standard input is understood. .PP The input consists of pairs of items (nonempty strings) separated by blanks. Pairs of different items indicate ordering. Pairs of identical items indicate presence, but not ordering. .SH "SEE ALSO" lorder(1) .SH DIAGNOSTICS Odd data: there is an odd number of fields in the input file. .SH BUGS Uses a quadratic algorithm; not worth fixing for the typical use of ordering a library archive file. .TH UNIQ 1 .SH NAME uniq \- report repeated lines in a file .SH SYNOPSIS .B uniq [ .B \-udc [ .BR + n ] [ .BR \- n ] ] [ input [ output ] ] .SH DESCRIPTION .I Uniq reads the input file comparing adjacent lines. In the normal case, the second and succeeding copies of repeated lines are removed; the remainder is written on the output file. Note that repeated lines must be adjacent in order to be found; see .IR sort (1). If the .B \-u flag is used, just the lines that are not repeated in the original file are output. The .B \-d option specifies that one copy of just the repeated lines is to be written. The normal mode output is the union of the .B \-u and .B \-d mode outputs. .PP The .B \-c option supersedes .B \-u and .B \-d and generates an output report in default style but with each line preceded by a count of the number of times it occurred. .PP The .I n arguments specify skipping an initial portion of each line in the comparison: .TP 8 .BI \- n The first .IR n fields together with any blanks before each.TH UL 1 .UC 4 .SH NAME ul \- do underlining .SH SYNOPSIS .B ul [ .B \-i ] [ .B \-t .I terminal ] [ .I name \&... ] .SH DESCRIPTION .I Ul reads the named files (or standard input if none are given) and translates occurances of underscores to the sequence which indicates underlining for the terminal in use, as specified by the environment variable TERM. The .B \-t option overrides the terminal kind specified in the environment. The file .I /etc/termcap is read to determine the appropriate sequences for underlining. If the terminal is incapable of underlining, but is capable of a standout mode then that is used instead. If the terminal can overstrike, or handles underlining automatically, .I ul degenerates to .IR cat (1). If the terminal cannot underline, underlining is ignored. .PP The .B \-i option causes .I ul to indicate underlining onto by a separate line containing appropriate dashes `\-'; this is useful when you want to look at the underlining which is present in an .I nroff output stream on a crt-termin are ignored. A field is defined as a string of non-space, non-tab characters separated by tabs and spaces from its neighbors. .TP 8 .BI + n The first .IR n characters are ignored. Fields are skipped before characters. .PP .SH "SEE ALSO" sort(1), comm(1) al. .SH "SEE ALSO" man(1), nroff(1), colcrt(1) .SH AUTHOR Mark Horton wrote .IR ul . The .B \-i option was originally a option of the editor .IR ex (1), then an .I iul command. .SH BUGS .I Nroff usually outputs a series of backspaces and underlines intermixed with the text to indicate underlining. No attempt is made to optimize the backward motion. 4.TH USERS 1 .UC .SH NAME users \- compact list of users who are on the system .SH SYNOPSIS .B users .SH DESCRIPTION .I Users lists the login names of the users currently on the system in a compact, one-line format. .SH FILES /etc/utmp .SH SEE ALSO finger(1), who(1) .SH BUGS .TH WC 1 .UC 4 .SH NAME wc \- word count .SH SYNOPSIS .B wc [ .B \-lwcpt ] [ .BI \-b baud ] [ .BI \-s pagesize ] [ .B \-u ] [ .B \-v ] [ name ... ] .SH DESCRIPTION .I Wc counts lines, words and characters, and optionally pages and the print time, in the named files, or in the standard input if no name appears. A word is a maximal string of characters delimited by spaces, tabs or newlines. .PP If an argument beginning with one of ``lwcpt'' is present, the specified counts (lines, words, characters, pages, or time) are selected by the letters .BR l , .BR w , .BR c , .BR p , or .BR t . The default is .B \-lwc unless .B \-v is specified. .PP The .B \-b option asks that the time be figured at the specified baud rate instead of the default 300 baud. .PP The .B \-s option specifies that pages are .I pagesize lines long instead of the default 66. .PP The .B \-u options asks that the time printed be based on uucp transmission time, about 90% as fast as normal. .PP The .B \-v option asks for a verbose output format, w.TH VI 1 12/2/79 .UC .SH NAME vi \- screen oriented (visual) display editor based on ex .SH SYNOPSIS .B vi [ .B \-t tag ] [ .B \-r ] [ \fB+\fR\fIcommand\fR ] [ .B \-l ] [ \fB\-w\fIn\fR ] name ... .SH DESCRIPTION .I Vi (visual) is a display oriented text editor based on .IR ex (1). .I Ex and .I vi run the same code; it is possible to get to the command mode of .I ex from within .I vi and vice-versa. .PP The .I "Vi Quick Reference" card and the .I "Introduction to Display Editing with Vi" provide full details on using .I vi. .SH FILES See .IR ex (1). .SH SEE ALSO ex (1), edit (1), ``Vi Quick Reference'' card, ``An Introduction to Display Editing with Vi''. .SH AUTHOR William Joy .br Mark Horton added macros to \fIvisual\fR mode and is maintaining version 3 .SH BUGS Software tabs using \fB^T\fR work only immediately after the .I autoindent. .PP Left and right shifts on intelligent terminals don't make use of insert and delete character operations in the terminal. .PP The .I wrapmargin option can be fooled since ith headers and including pages and time by default. .SH BUGS The times given do not take into account variable factors such as system load; delays due to tab expansion or tty driver delays, which can be a factor with cu; or uucp delays such as mail headers, auxillary protocol files, or the time taken to initially connect to another site. it looks at output columns when blanks are typed. If a long word passes through the margin and onto the next line without a break, then the line won't be broken. .PP Insert/delete within a line can be slow if tabs are present on intelligent terminals, since the terminals need help in doing this correctly. .PP Saving text on deletes in the named buffers is somewhat inefficient. .PP The .I source command does not work when executed as \fB:source\fR; there is no way to use the \fB:append\fR, \fB:change\fR, and \fB:insert\fR commands, since it is not possible to give more than one line of input to a \fB:\fR escape. To use these on a \fB:global\fR you must \fBQ\fR to \fIex\fR command mode, execute them, and then reenter the screen editor with .I vi or .I open. 4.TH WHICH 1 10/10/79 .UC .SH NAME which \- locate a program file including aliases and paths (\fIcsh\fR only) .SH SYNOPSIS .B which [ name ] ... .SH DESCRIPTION .I Which takes a list of names and looks for the files which would be executed had these names been given as commands. Each argument is expanded if it is aliased, and searched for along the user's path. Both aliases and path are taken from the user's \&.cshrc file. .SH FILES .ta 1i ~/\&.cshrc source of aliases and path values .SH DIAGNOSTICS A diagnostic is given for names which are aliased to more than a single word, or if an executable file with the argument name was not found in the path. .SH BUGS Only aliases and paths from ~/\&.cshrc are used, importing from the current environment is not attempted. Must be executed by a csh, since only csh's know about aliases. .TH chowngrp 1 "Fortune Systems" .SH NAME chowngrp \- change owner and group .SH SYNOPSIS chowngrp [-r] [-g] user/uid/- group/gid/- file ... .SH DESCRIPTION .I Chowngrp changes both the owner and group identification of files. .sp The -r flag causes .I chowngrp to recursively act on all the files in the subdirectories of its .I file arguments. .sp The -g flag causes .I chowngrp to require that the user specified be a valid member of the group specified, and that any numerically specified group or user id to be valid on the current system. .sp User or group id's of "-" cause .I chowngrp to not change the respective user or group id. .SH SEE ALSO chown(1) .TH WHOAMI 1 2/24/79 .UC .SH NAME whoami \- print effective current user id .SH SYNOPSIS .B whoami .SH DESCRIPTION .I Whoami prints who you are. It works even if you are su'd, while `who am i' does not since it uses /etc/utmp. .SH FILES .DT /etc/passwd Name data base .SH "SEE ALSO" who (1) .TH chlog 1 "Fortune Systems" .SH NAME chlog \- change UNIX error logging format .SH SYNOPSIS chlog [unix] [default] [debug hexnumber] [decimal decimal] .SH DESCRIPTION .I Chlog changes the style in which UNIX prints internal error messages. .I Chlog unix switches to the standard unix style of error message, while .I chlog default prints them in the default style of error numbers. .I chlog debug hexnumber controls how hardware fault messages are printed. Chlog uses the elog(2) system call. .I chlog decimal decimal does a direct elog() system call. .SH EXAMPLES .I chlog unix performs elog(LOGTYPE, LUNIX). .I chlog default performs elog(LOGTYPE, LDEFLT), .I chlog debug 50f3 performs elog(DBGLVL, 0x50f3). .I chlog 2 40 performs elog(2,40), which instructs the kernel to do a sync(2) every 40 seconds. .br Exerpted from /usr/include/sys/err.h: .nf /* * Used in the elog() system call to determine error logging type * See sys4.c */ #define LOGTYPE 0 /* set the 'logtype' variable */ #define DBGLVL 1 /.TH YES 1 .UC 4 .SH NAME yes \- be repetitively affirmative .SH SYNOPSIS .B yes [ .B expletive ] .SH DESCRIPTION .B Yes repeatedly outputs \*(lqy\*(rq, or if .B expletive is given, that is output repeatedly. Termination is by rubout. .SH BUGS Boring. 5* set the 'debug' variable */ #define KUPDATE 2 /* enable kernel update()s, setting 'kupdate' */ #define KNOUPDATE 3 /* disable update()s from kernel */ #define LDEFLT 0 /* default error logging */ #define LUNIX 1 /* make it more like normal UNIX logging */ .fi .SH FILES /usr/include/sys/err.h .br /usr/include/sys/types.h .SH SEE ALSO elog(2) .SH BUGS Running this program to find out what an error was is not very useful after the horse is out of the barn. ck lock for mail directory .br dead.letter unmailable text .br .SH "SEE ALSO" write(1) .SH BUGS Race conditions sometimes result in a failure to remove a lock file. .PP Normally anybody can read your mail, unless it is sent by .IR xsend (1). An installation can overcome this by making .I mail a set-user-id command that owns the mail directory. .TH BINMAIL 1 11/16/79 .SH NAME mail \- send or receive mail among users .SH SYNOPSIS .B mail [ .B + ] [ .B \-i ] [ person ] ... .br .B mail .B "[ + ]" [ .B \-i ] .B \-f file .LP .SH DESCRIPTION .PP .I Mail with no argument prints a user's mail, message-by-message, in last-in, first-out order; the optional argument .B + causes first-in, first-out order. For each message, it reads a line from the standard input to direct disposition of the message. .TP newline Go on to next message. .TP d Delete message and go on to the next. .TP p Print message again. .TP \- Go back to previous message. .TP .RI "s [" " file " "] ..." Save the message in the named .I files (`mbox' default). .TP .RI "w [" " file " "] ..." Save the message, without a header, in the named .I files (`mbox' default). .TP .RI "m [" " person " "] ..." Mail the message to the named .I persons (yourself is default). .TP EOT (control-D) Put unexamined mail back in the mailbox and stop. .TP q Same as EOT. .TP .RI ! command Escape to the Shell to do .IR c.tr ~ .nr f 0 .bd S B 3 .de SP .if n .ul \%[\fB\-\\$1\fR\\c .if n .ul 0 \\$2\\$3 .. .de SF .if n .ul \%[\fB\-\\$1\fR] .if n .ul 0 .. .de ZZ \fB.\|.\|.\fR .. .de AR .if \\nf \{ \ . RE . nr f 0 \} .PP .RS 5 .TP 15 \fB\-\\$1\\fR \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 .nr f 1 .. .de C1 .if \\nf \{ \ . RE . nr f 0 \} .PP .RS 5 .TP 15 \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 .nr f 1 .. .de A1 .if \\nf \{ \ . RE . nr f 0 \} .PP .RS 5 .TP 15 \fB\-\\$1\fR[\fI\\$2\fR] \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 .nr f 1 .. .de A2 .if \\nf \{ \ . RE . nr f 0 \} .PP .RS 5 .TP 15 \fB\-\\$1\fI\\$2\fR \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 .nr f 1 .. .de FI .PP .TP 30 \\$1 \\$2 .i0 .. .ds F) \fI\s-1FILES\s+1\fR .ds W) \fI\s-1WARNINGS\s+1\fR .ds X) \fI\s-1EXAMPLES\s+1\fR .ds T) \fI\s-1TABLE\s+1\fR .ds K) \fI\s-1DATA KEYWORDS\s+1\fR .ds D) \fI\s-1DDDDD\s+1\fR .ds M) \fI\s-1MR\s+1\fR .ds R) \fI\s-1RELEASE NUMBER\s+1\fR .ds S) \s-1SCCS\s+1 .ds I) \s-1SID\s+1 .de F1 .if \\nf \{ \ . RE . nr f 0 \} .ommand . .TP * Print a command summary. .PP .PP An interrupt normally causes termination of the command; the mail file is unchanged. The optional argument .B \(mii causes .I mail to continue after interrupts. .PP When .I persons are named, .I mail takes the standard input up to an end-of-file (or a line with just `.') and adds it to each .I person's `mail' file. The message is preceded by the sender's name and a postmark. Lines that look like postmarks are prepended with `>'. A .I person is usually a user name recognized by .IR login (1). To denote a recipient on a remote system, prefix .I person by the system name and exclamation mark. .PP The .B \-f option causes the named file, e.g. `mbox', to be printed as if it were the mail file. .PP When a user logs in he is informed of the presence of mail. .SH FILES .ta \w'/usr/spool/mail/*.lock 'u /etc/passwd to identify sender and locate persons .br .li /usr/spool/mail/* incoming mail for user * .br mbox saved mail .br /tmp/ma* temp file .br /usr/spool/mail/*.lo5PP .RS 13 .TP 7 \fB\\$1\fI\\$2\fR \\$3 .nr f 1 .. .de F2 .if \\nf \{ \ . RE . nr f 0 \} .PP .RS 13 .TP 7 \fB\\$1[\fI\\$2\fR] \\$3 .nr f 1 .. .TH ADMIN 1 .SH NAME admin \- create and administer \s-1SCCS\s0 files .SH SYNOPSIS .B admin .SF n .SP i \%[name] ] .SP r rel ] .SP t \%[name] ] .if n .br .SP f flag\%[flag-val] ] .ZZ .SP d flag\%[flag-val] ] .ZZ .if n .br .SP a login ] .ZZ .SP e login ] .ZZ .SP m \%[mrlist] ] .SP y \%[comment] ] .SF h .SF z files .SH DESCRIPTION .I Admin\^ is used to create new \*(S) files and change parameters of existing ones. Arguments to .I admin\c\^ , which may appear in any order, consist of keyletter arguments, which begin with \fB\-\fR, and named files (note that \*(S) file names must begin with the characters \fBs.\fR). If a named file doesn't exist, it is created, and its parameters are initialized according to the specified keyletter arguments. Parameters not initialized by a keyletter argument are assigned a default value. If a named file does exist, parameters correspoptive text file name must also be supplied. In the case of existing \*(S) files: (1) a .B \-t keyletter without a file name causes removal of descriptive text (if any) currently in the \*(S) file, and (2) a .B \-t keyletter with a file name causes text (if any) in the named file to replace the descriptive text (if any) currently in the \*(S) file. .A2 f flag This keyletter specifies a \fIflag\fR, and, possibly, a value for the \fIflag\fR, to be placed in the \*(S) file. Several .B f keyletters may be supplied on a single .I admin\^ command line. The allowable \fIflag\fRs and their values are: .F1 b \& Allows use of the .B \-b keyletter on a .IR get (1) command to create branch deltas. .F1 c ceil The highest release (i.e., ``ceiling''), a number less than or equal to 9999, which may be retrieved by a .IR get (1) command for editing. The default value for an unspecified .B c flag is 9999. .F1 f floor The lowest release (i.e., ``floor''), a number greater than 0 but less than 9999, which may be retrieved by a .Inding to specified keyletter arguments are changed, and other parameters are left as is. .PP If a directory is named, .I admin\^ behaves as though each file in the directory were specified as a named file, except that non-\*(S) files (last component of the path name does not begin with \fBs.\fR) and unreadable files are silently ignored. If a name of \fB\-\fR is given, the standard input is read; each line of the standard input is taken to be the name of an \*(S) file to be processed. Again, non-\*(S) files and unreadable files are silently ignored. .PP The keyletter arguments are as follows. Each is explained as though only one named file is to be processed since the effects of the arguments apply independently to each named file. .AR n This keyletter indicates that a new \*(S) file is to be created. .A1 i name The \fIname\fR of a file from which the text for a new \*(S) file is to be taken. The text constitutes the first delta of the file (see .B \-r keyletter for delta numbering scheme). If the .B i keyletR get (1) command for editing. The default value for an unspecified .B f flag is 1. .F1 d \s-1SID\s0 The default delta number (\*(I)) to be used by a .IR get (1) command. .F1 i \& Causes the "No id keywords (ge6)" message issued by .IR get (1) or .IR delta (1) to be treated as a fatal error. In the absence of this flag, the message is only a warning. The message is issued if no \*(S) identification keywords (see .IR get (1)) are found in the text retrieved or stored in the \*(S) file. .F1 j \& Allows concurrent .IR get (1) commands for editing on the same \*(I) of an \*(S) file. This allows multiple concurrent updates to the same version of the \*(S) file. .F1 l list A \fIlist\fR of releases to which deltas can no longer be made .RB ( "get \-e" against one of these ``locked'' releases fails). The \fIlist\fR has the following syntax: .F1 \& \& ::= \(or , .br ~::= \*(R) \(or \fBa\fR .F1 \& \& The character \fBa\fR in the \fIlist\fR is equivalent to specifying .I "all releaseter is used, but the file name is omitted, the text is obtained by reading the standard input until an end-of-file is encountered. If this keyletter is omitted, then the \*(S) file is created empty. Only one \*(S) file may be created by an .I admin\^ command on which the .B i keyletter is supplied. Using a single .I admin\^ to create two or more \*(S) files require that they be created empty (no .B \-i keyletter). Note that the .B \-i keyletter implies the .B \-n keyletter. .A2 r rel The .I rel\c\^ ease into which the initial delta is inserted. This keyletter may be used only if the .B \-i keyletter is also used. If the .B \-r keyletter is not used, the initial delta is inserted into release 1. The level of the initial delta is always 1 (by default initial deltas are named 1.1). .A1 t name The \fIname\fR of a file from which descriptive text for the \*(S) file is to be taken. If the .B \-t keyletter is used and .I admin\^ is creating a new \*(S) file (the .B \-n and/or .B \-i keyletters also used), the descri6s\^" for the named \*(S) file. .F1 n \& Causes .IR delta (1) to create a ``null'' delta in each of those releases (if any) being skipped when a delta is made in a .I new\^ release (e.g., in making delta 5.1 after delta 2.7, releases 3 and 4 are skipped). These null deltas serve as ``anchor points'' so that branch deltas may later be created from them. The absence of this flag causes skipped releases to be non-existent in the \*(S) file preventing branch deltas from being created from them in the future. .F1 q text User definable text substituted for all occurrences of the Fortune Library Source keyword in \*(S) file text retrieved by .IR get (1). .F1 m mod \fIMod\|\fRule name of the \*(S) file substituted for all occurrences of the admin.1 keyword in \*(S) file text retrieved by .IR get (1). If the .B m flag is not specified, the value assigned is the name of the \*(S) file with the leading \fBs.\fR removed. .F1 t type \fIType\fR of module in the \*(S) file substituted for all occurrences of Fortune Library Sin\^ .sp \n(PDu The .B \-y keyletter is valid only if the .B \-i and/or .B \-n keyletters are specified (i.e., a new \*(S) file is being created). .A1 m mrlist The list of Modification Requests (\*(M)) numbers is inserted into the \*(S) file as the reason for creating the initial delta in a manner identical to .IR delta (1). The .B v flag must be set and the \*(M) numbers are validated if the .B v flag has a value (the name of an \*(M) number validation program). Diagnostics will occur if the .B v flag is not set or \*(M) validation fails. .AR h Causes .I admin\^ to check the structure of the \*(S) file (see .I sccsfile\c\^ (5)), and to compare a newly computed check-sum (the sum of all the characters in the \*(S) file except those in the first line) with the check-sum that is stored in the first line of the \*(S) file. Appropriate error diagnostics are produced. .C1 \& This keyletter inhibits writing on the file, so that it nullifies the effect of any other keyletters supplied, and is, therefore, only meaniource keyword in \*(S) file text retrieved by .IR get (1). .F2 v pgm Causes .IR delta (1) to prompt for Modification Request (\*(M)) numbers as the reason for creating a delta. The optional value specifies the name of an \*(M) number validity checking program (see .IR delta (1)). (If this flag is set when creating an .SM SCCS file, the .B m keyletter must also be used even if its value is null). .A2 d flag Causes removal (deletion) of the specified \fIflag\fR from an \*(S) file. The .B \-d keyletter may be specified only when processing existing \*(S) files. Several .B \-d keyletters may be supplied on a single .I admin\^ command. See the .B \-f keyletter for allowable \fIflag\fR names. .F1 l list A \fIlist\fR of releases to be ``unlocked''. See the .B \-f keyletter for a description of the .B l flag and the syntax of a \fIlist\fR. .A2 a login A \fIlogin\fR name, or numerical \s-1UNIX\s+1 group \s-1ID\s+1, to be added to the list of users which may make deltas (changes) to the \*(S) file. A group \s-1ID\s+1 is equivalent to specifying all \fIlogin\fR names common to that group \s-1ID\s+1. Several .B a keyletters may be used on a single .I admin\^ command line. As many \fIlogin\fRs, or numerical group \s-1ID\s+1s, as desired may be on the list simultaneously. If the list of users is empty, then anyone may add deltas. .A2 e login A \fIlogin\fR name, or numerical group \s-1ID\s+1, to be erased from the list of users allowed to make deltas (changes) to the \*(S) file. Specifying a group \s-1ID\s+1 is equivalent to specifying all \fIlogin\fR names common to that group \s-1ID\s+1. Several .B e keyletters may be used on a single .I admin\^ command line. .A1 y comment The .I comment\^ text is inserted into the \*(S) file as a comment for the initial delta in a manner identical to that of .IR delta (1). Omission of the \fB\-y\fR keyletter results in a default comment line being inserted in the form: .sp \n(PDu date and time created .IR \s-1YY\s+1 / \s-1MM\s+1 / \s-1DD\s+1 .IR \s-1HH\s+1 : \s-1MM\s+1 : \s-1SS\s+1 by .I log6ngful when processing existing files. .AR z The \*(S) file check-sum is recomputed and stored in the first line of the \*(S) file (see .BR \-h , above). .C1 \& Note that use of this keyletter on a truly corrupted file may prevent future detection of the corruption. .i0 .SH FILES The last component of all \*(S) file names must be of the form \fBs.\fP\fIfile-name\fP. New \*(S) files are given mode 444 (see .IR chmod (1)). Write permission in the pertinent directory is, of course, required to create a file. All writing done by .I admin\^ is to a temporary x-file, called \fBx.\fP\fIfile-name\fP, (see .IR get (1)), created with mode 444 if the .I admin\^ command is creating a new \*(S) file, or with the same mode as the \*(S) file if it exists. After successful execution of .I admin\c\^ , the \*(S) file is removed (if it exists), and the x-file is renamed with the name of the \*(S) file. This ensures that changes are made to the \*(S) file only if no errors occurred. .PP It is recommended that directories containi.TH BDIFF 1 .SH NAME bdiff \- big diff .SH SYNOPSIS .B bdiff file1 file2 [n] .RB [ \-s ] .SH DESCRIPTION .I Bdiff\^ is used in a manner analogous to .IR diff (1) to find which lines must be changed in two files to bring them into agreement. Its purpose is to allow processing of files which are too large for .IR diff . .I Bdiff\^ ignores lines common to the beginning of both files, splits the remainder of each file into .IR n -line segments, and invokes .I diff\^ upon corresponding segments. The value of .I n\^ is 3500 by default. If the optional third argument is given, and it is numeric, it is used as the value for .IR n . This is useful in those cases in which 3500-line segments are too large for .IR diff , causing it to fail. If .I file1\^ .RI ( file2 ) is \fB\-\fR, the standard input is read. The optional .B \-s (silent) argument specifies that no diagnostics are to be printed by .I bdiff\^ (note, however, that this does not suppress possible exclamations by .IR diff . If both optional arguments are specing \*(S) files be mode 755 and that \*(S) files themselves be mode 444. The mode of the directories allows only the owner to modify \*(S) files contained in the directories. The mode of the \*(S) files prevents any modification at all except by \*(S) commands. .PP If it should be necessary to patch an \*(S) file for any reason, the mode may be changed to 644 by the owner allowing use of .IR ed (1). .I "Care must be taken!\^" The edited file should .I always\^ be processed by an .B admin .B \-h to check for corruption followed by an .B admin .B \-z to generate a proper check-sum. Another .B admin .B \-h is recommended to ensure the \*(S) file is valid. .PP .I Admin\^ also makes use of a transient lock file (called \fBz.\fP\fIfile-name\fP), which is used to prevent simultaneous updates to the \*(S) file by different users. See .IR get (1) for further information. .SH "SEE ALSO" delta(1), ed(1), get(1), help(1), prs(1), what(1), sccsfile(5). .br .I "Source Code Control System User's Guide\^" by L. E. Bonanni andfied, they must appear in the order indicated above. .PP The output of .I bdiff\^ is exactly that of .IR diff , with line numbers adjusted to account for the segmenting of the files (that is, to make it look as if the files had been processed whole). Note that because of the segmenting of the files, .I bdiff\^ does not necessarily find a smallest sufficient set of file differences. .SH FILES /tmp/bd????? .SH "SEE ALSO" diff(1). .SH DIAGNOSTICS Use .IR help (1) for explanations.  C. A. Salemi. .SH DIAGNOSTICS Use .IR help (1) for explanations. .tr ~~ 7.tr ~ .nr f 0 .de SP .if n .ul \%[\fB\-\\$1\fR\\c .if n .ul 0 \\$2\\$3 .. .de SF .if n .ul \%[\fB\-\\$1\fR] .if n .ul 0 .. .de ZZ .hc ^ \fB^...\fR .hc .. .de AR .if \\nf \{ \ . RE . nr f 0 \} .PP .RS 5 .TP 15 \fB\-\\$1\\fR \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 .nr f 1 .. .de C1 .if \\nf \{ \ . RE . nr f 0 \} .PP .RS 5 .TP 15 \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 .nr f 1 .. .de A1 .if \\nf \{ \ . RE . nr f 0 \} .PP .RS 5 .TP 15 \fB\-\\$1\fR[\fI\\$2\^\fR] \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 .nr f 1 .. .de A2 .if \\nf \{ \ . RE . nr f 0 \} .PP .RS 5 .TP 15 \fB\-\\$1\fR\fI\\$2\^\fR \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 .nr f 1 .. .de FI .PP .TP 30 \\$1 \\$2 .i0 .. .ds F) \fB\s-1FILES\s+1\fR .ds W) \fI\s-1WARNINGS\s+1\^\fR .ds X) \fI\s-1EXAMPLES\s+1\^\fR .ds T) \fB\s-1TABLE\s+1\fR .ds K) \fB\s-1DATA KEYWORDS\s+1\fR .ds D) \fB\s-1DDDDD\s+1\fR .ds M) \fB\s-1MR\s+1\fR .ds R) \fB\s-1RELEASE NUMBER\s+1\fR .ds S) \s-1SCCS\s+1 .ds I) \fI\s-1SID\s+1\fR .de F1 .if \\nf \{ \ . RE . nr f 0 nd preceded by a comment line stating that they were deleted. .C1 \& If .B \-m is not used and the standard input is a terminal, the prompt .B \s-1MR\s+1s? is issued on the standard output before the standard input is read; if the standard input is not a terminal, no prompt is issued. The \fB\s-1MR\s+1s?\fR prompt always precedes the \fBcomments?\fR prompt (see .B \-y keyletter). .C1 \& \*(M)s in a list are separated by blanks and/or tab characters. An unescaped new-line character terminates the \*(M) list. .C1 \& Note that if the .B v flag has a value (see .IR admin (1)), it is taken to be the name of a program (or shell procedure) which validates the correctness of the \*(M) numbers. If a non-zero exit status is returned from the \*(M) number validation program, .I cdc\^ terminates and the delta commentary remains unchanged. .A1 y comment Arbitrary text used to replace the \fIcomment\^\fR(s) already existing for the delta specified by the .B \-r keyletter. The previous comments are kept and preceded by a co\} .PP .RS 13 .TP 7 \fB\\$1\fR\fI\\$2\^\fR \\$3 .nr f 1 .. .de F2 .if \\nf \{ \ . RE . nr f 0 \} .PP .RS 13 .TP 7 \fB\\$1\fR[\fI\\$2\^\fR] \\$3 .nr f 1 .. .TH CDC 1 .SH NAME cdc \- change the delta commentary of an \s-1SCCS\s+1 delta .SH SYNOPSIS .B cdc \fB\-r\fR\c .SM SID .SP m [mrlist]] .SP y [comment]] files .SH DESCRIPTION .I Cdc\^ changes the .IR "delta commentary" , for the \*(I) specified by the .B \-r keyletter, of each named \*(S) file. .PP .I "Delta commentary\^" is defined to be the Modification Request (\*(M)) and comment information normally specified via the .IR delta (1) command .RB ( \-m and .B \-y keyletters). .PP If a directory is named, .I cdc\^ behaves as though each file in the directory were specified as a named file, except that non-\*(S) files (last component of the path name does not begin with \fBs.\fR) and unreadable files are silently ignored. If a name of .B \- is given, the standard input is read (see \%\*(W)); each line of the standard input is taken to be the name of an \mment line stating that they were changed. A null \fIcomment\^\fR has no effect. .C1 \& If .B \-y is not specified and the standard input is a terminal, the prompt \fBcomments?\fR is issued on the standard output before the standard input is read; if the standard input is not a terminal, no prompt is issued. An unescaped new-line character terminates the \fIcomment\^\fR text. .i0 .PP The exact permissions necessary to modify the \*(S) file are documented in the .IR "Source Code Control System User's Guide" . Simply stated, they are either (1) if you made the delta, you can change its delta commentary; or (2) if you own the file and directory you can modify the delta commentary. .SH EXAMPLES .RS 5n cdc \-r1\fB.\fP6 \-m"bl78-12345 !bl77-54321 bl79-00001" \-ytrouble s\fB.\fPfile .RE .PP adds bl78-12345 and bl79-00001 to the \*(M) list, removes bl77-54321 from the \*(M) list, and adds the comment \fBtrouble\fR to delta 1\fB.\fR6 of s\fB.\fRfile. .PP .RS 5n cdc \-r1\fB.\fR6 s\fB.\fRfile .br \s-1MR\s+1s? !bl77-5432*(S) file to be processed. .PP Arguments to .IR cdc , which may appear in any order, consist of .I keyletter\^ arguments, and file names. .PP All the described .I keyletter\^ arguments apply independently to each named file: .A2 r \s-1SID\s+1 Used to specify the .IR S \s-1CCS\s+1 .IR ID entification (\*(I)) string of a delta for which the delta commentary is to be changed. .A1 m mrlist If the \*(S) file has the .B v flag set (see .IR admin (1)) then a list of \*(M) numbers to be added and/or deleted in the delta commentary of the \*(I) specified by the .B \-r keyletter .I may\^ be supplied. A null \*(M) list has no effect. .C1 \& \*(M) entries are added to the list of \*(M)s in the same manner as that of .IR delta (1). In order to delete an \*(M), precede the \*(M) number with the character \fB!\fR (see \*(X)). If the \*(M) to be deleted is currently in the list of \*(M)s, it is removed and changed into a ``comment'' line. A list of all deleted \*(M)s is placed in the comment section of the delta commentary a71 bl78-12345 bl79-00001 .br comments? trouble .RE .PP does the same thing. .DT .SH WARNINGS If \*(S) file names are supplied to the .I cdc\^ command via the standard input (\fB\-\fR on the command line), then the .B \-m and .B \-y keyletters must also be used. .SH FILES .PD 0 .TP 10 x-file (see .IR delta (1)) .TP z-file (see .IR delta (1)) .PD .SH SEE ALSO admin(1), delta(1), get(1), help(1), prs(1), sccsfile(5). .br .I "Source Code Control System User's Guide\^" by L. E. Bonanni and C. A. Salemi. .SH DIAGNOSTICS Use .IR help (1) for explanations. .tr ~~ amed file. .A2 p \s-1SID\s+1 The .IR S "\s-1CCS\s+1 " ID entification string (\s-1SID\s+1) of the oldest delta to be preserved. All older deltas are discarded in the reconstructed file. .A2 c list A .I list\^ (see .IR get (1) for the syntax of a \fIlist\fR) of deltas to be preserved. All other deltas are discarded. .AR o For each .B get \-e generated, this argument causes the reconstructed file to be accessed at the release of the delta to be created, otherwise the reconstructed file would be accessed at the most recent ancestor. Use of the .B \-o keyletter may decrease the size of the reconstructed \s-1SCCS\s+1 file. It may also alter the shape of the delta tree of the original file. .AR s This argument causes .I comb\^ to generate a shell procedure which, when run, will produce a report giving, for each file: the file name, size (in blocks) after combining, original size (also in blocks), and percentage change computed by: .br .ce 1 \%100~\fB\(**\fR~(original~\-~combined)~/~original .br It is recommended t.tr ~ .nr f 0 .bd S B 3 .de SP .if n .ul \%[\fB\-\\$1\fR\\c .if n .ul 0 \\$2\\$3 .. .de SF .if n .ul \%[\fB\-\\$1\fR] .if n .ul 0 .. .de ZZ .hc ^ \fB^...\fR .hc .. .de AR .if \\nf \{ \ . RE . nr f 0 \} .PP .TP 8 \fB\-\\$1\\fR \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 .nr f 1 .. .de C1 .if \\nf \{ \ . RE . nr f 0 \} .PP .RS 5 .TP 8 \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 .nr f 1 .. .de A1 .if \\nf \{ \ . RE . nr f 0 \} .PP .RS 5 .TP 8 \fB\-\\$1\fR[\fI\\$2\fR] \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 .nr f 1 .. .de A2 .if \\nf \{ \ . RE . nr f 0 \} .PP .TP 8 \fB\-\\$1\fI\\$2\fR \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 .nr f 1 .. .de FI .PP .TP 30 \\$1 \\$2 .i0 .. .de F1 .if \\nf \{ \ . RE . nr f 0 \} .PP .RS 13 .TP 7 \fB\\$1\fI\\$2\fR \\$3 .nr f 1 .. .de F2 .if \\nf \{ \ . RE . nr f 0 \} .PP .RS 13 .TP 7 \fB\\$1[\fI\\$2\fR] \\$3 .nr f 1 .. .TH COMB 1 .SH NAME comb \- combine \s-1SCCS\s+1 deltas .SH SYNOPSIS .B comb .SF o .SF s .SP p sid ] .SP c list] files .SH DESCRIPTION .I Comb\^ gehat before any \s-1SCCS\s+1 files are actually combined, one should use this option to determine exactly how much space is saved by the combining process. .PP If no keyletter arguments are specified, .I comb\^ will preserve only leaf deltas and the minimal number of ancestors needed to preserve the tree. .SH FILES .PD 0 .TP 14 .RB s . \s-1COMB\s+1 The name of the reconstructed \s-1SCCS\s+1 file. .RE .TP 14 comb????? Temporary. .PD .SH "SEE ALSO" admin(1), delta(1), get(1), help(1), prs(1), sccsfile(5). .br .I "Source Code Control System User's Guide\^" by L. E. Bonanni and C. A. Salemi. .SH DIAGNOSTICS Use .IR help (1) for explanations. .SH BUGS .I Comb\^ may rearrange the shape of the tree of deltas. It may not save any space; in fact, it is possible for the reconstructed file to actually be larger than the original. .tr ~~ nerates a shell procedure (see .IR sh (1)) which, when run, will reconstruct the given \s-1SCCS\s+1 files. The reconstructed files will, hopefully, be smaller than the original files. The arguments may be specified in any order, but all keyletter arguments apply to all named \s-1SCCS\s+1 files. If a directory is named, .I comb\^ behaves as though each file in the directory were specified as a named file, except that non-\s-1SCCS\s+1 files (last component of the path name does not begin with \fBs.\fR) and unreadable files are silently ignored. If a name of \fB\-\fR is given, the standard input is read; each line of the standard input is taken to be the name of an \s-1SCCS\s+1 file to be processed; non-\s-1SCCS\s+1 files and unreadable files are silently ignored. .PP The generated shell procedure is written on the standard output. .PP The keyletter arguments are as follows. Each is explained as though only one named file is to be processed, but the effects of any keyletter argument apply independently to each n8.tr ~ .if n .ds D " -- .if t .ds D _ .nr f 0 .bd S B 3 .de SP .if n .ul \%[\fB\-\\$1\fR\\c .if n .ul 0 \\$2\\$3 .. .de SF .if n .ul \%[\fB\-\\$1\fR] .if n .ul 0 .. .de AR .if \\nf \{ \ . RE . nr f 0 \} .PP .RS 5 .TP 15 \fB\-\\$1\\fR \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 .nr f 1 .. .de C1 .if \\nf \{ \ . RE . nr f 0 \} .PP .RS 5 .TP 15 \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 .nr f 1 .. .de A1 .if \\nf \{ \ . RE . nr f 0 \} .PP .RS 5 .TP 15 \fB\-\\$1\fR[\fI\\$2\fR] \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 .nr f 1 .. .de A2 .if \\nf \{ \ . RE . nr f 0 \} .PP .RS 5 .TP 15 \fB\-\\$1\fI\\$2\fR \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 .nr f 1 .. .de FI .PP .TP 30 \\$1 \\$2 .i0 .. .ds F) \fI\s-1FILES\s+1\fR .ds W) \fI\s-1WARNINGS\s+1\fR .ds X) \fI\s-1EXAMPLES\s+1\fR .ds T) \fI\s-1TABLE\s+1\fR .ds K) \fI\s-1DATA KEYWORDS\s+1\fR .ds D) \fI\s-1DDDDD\s+1\fR .ds M) \fB\s-1MR\s+1\fR .ds R) \fI\s-1RELEASE NUMBER\s+1\fR .ds S) \s-1SCCS\s+1 .ds I) \s-1SID\s+1 .de F1 .if \\nf \{ \ . RE . nr -file\^ (normally removed at completion of delta processing). .A2 g list Specifies a \fIlist\fR (see .IR get (1) for the definition of \fIlist\fR) of deltas which are to be .I ignored\^ when the file is accessed at the change level (\*(I)) created by this delta. .A1 m mrlist If the \*(S) file has the .B v flag set (see .IR admin (1)) then a Modification Request (\*(M)) number \fImust\fR be supplied as the reason for creating the new delta. .C1 \& If .B \-m is not used and the standard input is a terminal, the prompt .SM .B MR\*Ss? is issued on the standard output before the standard input is read; if the standard input is not a terminal, no prompt is issued. The .SM .B MR\*Ss? prompt always precedes the .B comments? prompt (see .B \-y keyletter). .PP .C1 \& \*(M)s in a list are separated by blanks and/or tab characters. An unescaped new-line character terminates the \*(M) list. .C1 \& Note that if the .B v flag has a value (see .IR admin (1)), it is taken to be the name of a program (or shell procedure) whichf 0 \} .PP .RS 13 .TP 7 \fB\\$1\fI\\$2\fR \\$3 .nr f 1 .. .de F2 .if \\nf \{ \ . RE . nr f 0 \} .PP .RS 13 .TP 7 \fB\\$1[\fI\\$2\fR] \\$3 .nr f 1 .. .if t .ds )S \\| .TH DELTA 1 .SH NAME delta \- make a delta (change) to an \s-1SCCS\s+1 file .SH SYNOPSIS .B delta .SP r SID ] .SF s .SF n .SP g list] .SP m \%[mrlist] ] .SP y \%[comment] ] .SF p files .SH DESCRIPTION .I Delta\^ is used to permanently introduce into the named \*(S) file changes that were made to the file retrieved by .IR get (1) (called the .IR g-file , or generated file). .PP .I Delta\^ makes a delta to each named \*(S) file. If a directory is named, .I delta\^ behaves as though each file in the directory were specified as a named file, except that non-\*(S) files (last component of the path name does not begin with \fBs.\fR) and unreadable files are silently ignored. If a name of \fB\-\fR is given, the standard input is read (see \*(W)); each line of the standard input is taken to be the name of an \*(S) file to be processed. .PP .I Delta will validate the correctness of the \*(M) numbers. If a non-zero exit status is returned from \*(M) number validation program, .I delta\^ terminates (it is assumed that the \*(M) numbers were not all valid). .A1 y comment Arbitrary text used to describe the reason for making the delta. A null string is considered a valid \fIcomment\fR. .C1 \& If .B \-y is not specified and the standard input is a terminal, the prompt .B comments? is issued on the standard output before the standard input is read; if the standard input is not a terminal, no prompt is issued. An unescaped new-line character terminates the comment text. .AR p Causes .I delta\^ to print (on the standard output) the \*(S) file differences before and after the delta is applied in a .IR diff (1) format. .RE .SH FILES All files of the form .IR ?- file are explained in the \fISource Code Control System User's Guide\fP. The naming convention for these files is also described there. .PP .PD 0 .TP "\w`/usr/bin/bdiff\ \ \ `u" g-file Existed before the e\^ may issue prompts on the standard output depending upon certain keyletters specified and flags (see .IR admin (1)) that may be present in the \*(S) file (see .B \-m and .B \-y keyletters below). .PP Keyletter arguments apply independently to each named file. .A2 r SID Uniquely identifies which delta is to be made to the \*(S) file. The use of this keyletter is necessary only if two or more outstanding .IR get s for editing .RB ( "get \-e" ) on the same \*(S) file were done by the same person (login name). The \*(I) value specified with the .B \-r keyletter can be either the \*(I) specified on the .I get\^ command line or the \*(I) to be made as reported by the .I get\^ command (see .IR get (1)). A diagnostic results if the specified \*(I) is ambiguous, or, if necessary and omitted on the command line. .AR s Suppresses the issue, on the standard output, of the created delta's \*(I), as well as the number of lines inserted, deleted and unchanged in the \*(S) file. .AR n Specifies retention of the edited .I g8xecution of .IR delta ; removed after completion of .IR delta . .TP p-file Existed before the execution of .IR delta ; may exist after completion of .IR delta . .TP q-file Created during the execution of .IR delta ; removed after completion of .IR delta . .TP x-file Created during the execution of .IR delta ; renamed to \*(S) file after completion of .IR delta . .TP z-file Created during the execution of .IR delta ; removed during the execution of .IR delta . .TP d-file Created during the execution of .IR delta ; removed after completion of .IR delta . .TP /usr/bin/bdiff Program to compute differences between the ``gotten'' file and the .IR g-file . .PD .SH WARNINGS Lines beginning with an \s-1\fBSOH\fP ASCII\s+1 character (binary 001) cannot be placed in the \*(S) file unless the .SM .B SOH is escaped. This character has special meaning to \*(S) (see .I sccsfile\c\^ (5)) and will cause an error. .PP A .I get\^ of many \*(S) files, followed by a .I delta\^ of those files, should be avoided when the .I get\^ g.ds f. get.1.t '\" t .tr ~ .nr f 0 .de SP .if n .ul \%[\fB\-\\$1\fR\\c .if n .ul 0 \\$2\\$3 .. .de SF .if n .ul \%[\fB\-\\$1\fR] .if n .ul 0 .. .ds M) \fB\s-1MR\s+1\fR .ds R) \fB\s-1RELEASE NUMBER\s+1\fR .ds S) \s-1SCCS\s+1 .ds I) \s-1SID\s+1 .TH GET 1 .SH NAME get \- get a version of an \s-1SCCS\s+1 file .SH SYNOPSIS .B get .SP r SID ] .SP c cutoff ] .SP i list ] .SP x list ] .SP a seq-no. ] .SF k .SF e .if n .ul [\-l[p]] .if n .ul 0 .SF p .SF m .SF n .SF s .SF b .SF g .SF t file .B ".\|.\|." .SH DESCRIPTION .I Get\^ generates an \s-1ASCII\s+1 text file from each named \*(S) file according to the specifications given by its keyletter arguments, which begin with \fB\-\fR. The arguments may be specified in any order, but all keyletter arguments apply to all named \*(S) files. If a directory is named, .I get\^ behaves as though each file in the directory were specified as a named file, except that non-\*(S) files (last component of the path name does not begin with .BR s. ) and unreadable files are silentlyenerates a large amount of data. Instead, multiple .I "get/delta\^" sequences should be used. .PP If the standard input (\fB\-\fR) is specified on the .I delta\^ command line, the .B \-m (if necessary) and .B \-y keyletters .I must\^ also be present. Omission of these keyletters causes an error to occur. .SH "SEE ALSO" admin(1), bdiff(1), get(1), help(1), prs(1), sccsfile(5). .br .I "Source Code Control System User's Guide\^" by L. E. Bonanni and C. A. Salemi. .SH DIAGNOSTICS Use .IR help (1) for explanations. .tr ~~  ignored. If a name of \fB\-\fR is given, the standard input is read; each line of the standard input is taken to be the name of an \*(S) file to be processed. Again, non-\*(S) files and unreadable files are silently ignored. .PP The generated text is normally written into a file called the .I g-file\^ whose name is derived from the \*(S) file name by simply removing the leading .BR s. ; (see also \fI\s-1FILES\s+1\fP\^, below). .PP Each of the keyletter arguments is explained below as though only one \*(S) file is to be processed, but the effects of any keyletter argument applies independently to each named file. .TP "\w'\fB\-a\fIseq-no.\fR~~'u" .BI \-r SID\^ The .IR S "\s-1CCS\s+1 " ID entification string (\*(I)) of the version (delta) of an \*(S) file to be retrieved. Table~1 below shows, for the most useful cases, what version of an \*(S) file is retrieved (as well as the \*(I) of the version to be eventually created by .IR delta (1) if the .B \-e keyletter is also used), as a function of the \*(I) specifiget.1help.1prs.1 rmdel.1 sact.1 sccsdiff.1 unget.1 val.1what.19ed. .TP .BI \-c cutoff\^ \fICutoff\fR date-time, in the form: .IP \s-1YY[MM[DD[HH[MM[SS]]]]]\s+1 .IP No changes (deltas) to the \*(S) file which were created after the specified \fIcutoff\fR date-time are included in the generated \s-1ASCII\s+1 text file. Units omitted from the date-time default to their maximum possible values; that is, .B \-c7502 is equivalent to .BR \-c750228235959 . Any number of non-numeric characters may separate the various 2 digit pieces of the \fIcutoff\fR date-time. This feature allows one to specify a \fIcutoff\fR date in the form: \&"\fB\-c77/2/2 9:22:25\fP". Note that this implies that one may use the 82/11/29 and 20:07:43 identification keywords (see below) for nested .I gets\^ within, say the input to a .IR send (1C) command: .tr ~~ .IP ~!get "\-c82/11/29 20:07:43" s.file .br .tr ~ .TP .B \-e Indicates that the .I get\^ is for the purpose of editing or making a change (delta) to the \*(S) file via a subsequent use of .IR delta (1). The .B \-e keyletter used in a .I get\^ f-file\^ is not created; the delta summary is written on the standard output instead. See \fI\s-1FILES\s+1\fP for the format of the .IR l-file . .TP .B \-p Causes the text retrieved from the \*(S) file to be written on the standard output. No .I g-file\^ is created. All output which normally goes to the standard output goes to file descriptor 2 instead, unless the .B \-s keyletter is used, in which case it disappears. .TP .B \-s Suppresses all output normally written on the standard output. However, fatal error messages (which always go to file descriptor 2) remain unaffected. .TP .B \-m Causes each text line retrieved from the \*(S) file to be preceded by the \*(I) of the delta that inserted the text line in the \*(S) file. The format is: \*(I), followed by a horizontal tab, followed by the text line. .TP .B \-n Causes each generated text line to be preceded with the get.1 identification keyword value (see below). The format is: get.1 value, followed by a horizontal tab, followed by the text line. When both tor a particular version (\*(I)) of the \*(S) file prevents further .I get\c\^ s for editing on the same \*(I) until .I delta\^ is executed or the .B j (joint edit) flag is set in the \*(S) file (see .IR admin (1)). Concurrent use of .B "get \-e" for different \*(I)s is always allowed. .IP If the .I g-file\^ generated by .I get\^ with an .B \-e keyletter is accidentally ruined in the process of editing it, it may be regenerated by re-executing the .I get\^ command with the .B \-k keyletter in place of the \fB\-e\fP keyletter. .IP .SM SCCS file protection specified via the ceiling, floor, and authorized user list stored in the \*(S) file (see .IR admin (1)) are enforced when the .B \-e keyletter is used. .TP .B \-b Used with the .B \-e keyletter to indicate that the new delta should have an \*(I) in a new branch as shown in Table~1. This keyletter is ignored if the .B b flag is not present in the file (see .IR admin (1)) or if the retrieved .I delta\^ is not a leaf .IR delta . (A leaf .I delta\^ is one that hashe .B \-m and .B \-n keyletters are used, the format is: get.1 value, followed by a horizontal tab, followed by the .B \-m keyletter generated format. .TP .B \-g Suppresses the actual retrieval of text from the \*(S) file. It is primarily used to generate an .IR l-file , or to verify the existence of a particular \*(I). .TP .B \-t Used to access the most recently created (``top'') delta in a given release (e.g., .BR \-r1 ), or release and level (e.g., .BR \-r1.2 ). .TP .BI \-a "seq-no." The delta sequence number of the \*(S) file delta (version) to be retrieved (see .I sccsfile\c\^ (5)). This keyletter is used by the .IR comb (1) command; it is not a generally useful keyletter, and users should not use it. If both the .B \-r and .B \-a keyletters are specified, the .B \-a keyletter is used. Care should be taken when using the .B \-a keyletter in conjunction with the .B \-e keyletter, as the \*(I) of the delta to be created may not be what one expects. The .B \-r keyletter can be used with the .B \-a and .B \- no successors on the \*(S) file tree.) .br Note: A branch .I delta\^ may always be created from a non-leaf .IR delta . .TP .BI \-i list\^ A \fIlist\fR of deltas to be included (forced to be applied) in the creation of the generated file. The \fIlist\fR has the following syntax: .IP ::= \(or , .br ::= \*(I) \(or \*(I) \- \*(I) .IP \*(I), the \*(S) Identification of a delta, may be in any form shown in the ``\*(I) Specified'' column of Table~1. Partial \*(I)s are interpreted as shown in the ``\*(I) Retrieved'' column of Table~1. .TP .BI \-x list\^ A \fIlist\fR of deltas to be excluded (forced not to be applied) in the creation of the generated file. See the .B \-i keyletter for the \fIlist\fR format. .TP .B \-k Suppresses replacement of identification keywords (see below) in the retrieved text by their value. The .B \-k keyletter is implied by the .B \-e keyletter. .TP .BR \-l [ p ] Causes a delta summary to be written into an .IR l-file . If .B \-lp is used then an .I l9e keyletters to control the naming of the \*(I) of the delta to be created. .i0 .PP For each file processed, .I get\^ responds (on the standard output) with the \*(I) being accessed and with the number of lines retrieved from the \*(S) file. .PP If the .B \-e keyletter is used, the \*(I) of the delta to be made appears after the \*(I) accessed and before the number of lines generated. If there is more than one named file or if a directory or standard input is named, each file name is printed (preceded by a new-line) before it is processed. If the .B \-i keyletter is used included deltas are listed following the notation ``Included''; if the .B \-x keyletter is used, excluded deltas are listed following the notation ``Excluded''. .ne 10v .PP .in 0 .TS .if \n+(b.=1 .nr d. \n(.c-\n(c.-1 .de 35 .ps \n(.s .vs \n(.vu .in \n(.iu .if \n(.u .fi .if \n(.j .ad .if \n(.j=0 .na .. .nf .nr #~ 0 .if n .nr #~ 0.6n .ds #d .d .if \(ts\n(.z\(ts\(ts .ds #d nl .fc .nr 33 \n(.s .rm 80 81 82 83 84 .nr 80 0 .nr 38 \w\s-1SID\s+1* .9:;<=>?@ABCDEFGHIif \n(80<\n(38 .nr 80 \n(38 .nr 38 \wSpecified .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \wnone\(dd .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \wnone\(dd .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \wR .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \wR .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \wR .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \wR .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \wR .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \wR .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \wR.L .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \wR.L .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \wR.L .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \wR.L.B .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \wR.L.B .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \wR.L.B.S .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \wR.L.B.S .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \wR.L.B.S .if \n(80<\n(38 .nr 80 \n(38 .80 .rm 80 .nr 81 0 .nr 38 \w\fB\-b\fP Keyletter .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wUsed\(dg .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wno .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wyes .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wnoR < mR and .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \wR does \fInot\fP exist .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \wTrunk succ.# .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \win release > R .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \wand R exists .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \wNo trunk succ. .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \wNo trunk succ. .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \wTrunk succ. .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \win release \(>= R .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \wNo branch succ. .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \wNo branch succ. .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \wNo branch succ. .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \wNo branch succ. .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \wBranch succ. .if \n(82<\n(38 .nr 82 \n(38 .82 .rm 82 .nr 83 0 .nr 38 \w\s-1SID\s+1 .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wRetrieved .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wmR.mL .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wmR.mL .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wmR.mL .if \n(83<\n(38 .nr 83 \n(38 .n .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wno .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wyes .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wyes .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \w\- .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \w\- .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wno .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wyes .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \w\- .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wno .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wyes .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wno .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wyes .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \w\- .if \n(81<\n(38 .nr 81 \n(38 .81 .rm 81 .nr 82 0 .nr 38 \wOther .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \wConditions .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \wR defaults to mR .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \wR defaults to mR .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \wR > mR .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \wR = mR .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \wR > mR .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \wR = mR .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w:r 38 \wmR.mL .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wmR.mL .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wmR.mL .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \whR.mL** .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wR.mL .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wR.L .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wR.L .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wR.L .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wR.L.B.mS .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wR.L.B.mS .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wR.L.B.S .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wR.L.B.S .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wR.L.B.S .if \n(83<\n(38 .nr 83 \n(38 .83 .rm 83 .nr 84 0 .nr 38 \w\s-1SID\s+1 of Delta .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wto be Created .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wmR.(mL\^+1) .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wmR.mL.(mB\^+1).1 .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wR.1*** .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wmR.(mL\^+1) .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wmR.mL.(mB\^+1).1 .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wmR.mL.(mB\^o\h'|\n(42u'R defaults to mR\h'|\n(43u'mR.mL\h'|\n(44u'mR.(mL\^+1) \h'|0'\s\n(33\l'|\n(TWu\(ru'\s0 .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'none\(dd\h'|\n(41u'yes\h'|\n(42u'R defaults to mR\h'|\n(43u'mR.mL\h'|\n(44u'mR.mL.(mB\^+1).1 .sp 1.5p \h'|0'\s\n(33\l'|\n(TWu\(ru'\s0 .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'R\h'|\n(41u'no\h'|\n(42u'R > mR\h'|\n(43u'mR.mL\h'|\n(44u'R.1*** \h'|0'\s\n(33\l'|\n(TWu\(ru'\s0 .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'R\h'|\n(41u'no\h'|\n(42u'R = mR\h'|\n(43u'mR.mL\h'|\n(44u'mR.(mL\^+1) \h'|0'\s\n(33\l'|\n(TWu\(ru'\s0 .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'R\h'|\n(41u'yes\h'|\n(42u'R > mR\h'|\n(43u'mR.mL\h'|\n(44u'mR.mL.(mB\^+1).1 \h'|0'\s\n(33\l'|\n(TWu\(ru'\s0 .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'R\h'|\n(41u'yes\h'|\n(+1).1 .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \whR.mL.(mB\^+1).1 .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wR.mL.(mB\^+1).1 .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wR.(L\^+1) .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wR.L.(mB\^+1).1 .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wR.L.(mB\^+1).1 .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wR.L.B.(mS\^+1) .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wR.L.(mB\^+1).1 .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wR.L.B.(S\^+1) .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wR.L.(mB\^+1).1 .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wR.L.(mB\^+1).1 .if \n(84<\n(38 .nr 84 \n(38 .84 .rm 84 .nr 38 \wTABLE 1. Determination of \s-1SCCS\s+1 Identification String-\n(80-\n(81-\n(82-\n(83-\n(84 .if \n(38>0 .nr 38 \n(38/4 .if \n(38<0 .nr 38 0 .nr 81 +\n(38 .nr 82 +\n(38 .nr 83 +\n(38 .nr 84 +\n(38 .nr 38 0+\n(80+\n(81+\n(82+\n(83+\n(84 .nr 38 \n(.l-\n(38 .nr 38 \n(38/4 .if \n(38<0 .nr 38 0 .nr 79 0 .nr 40 \n(79+(0*\n(38) .nr 80 +\n(40 .nr 41 \n(80+(1*\n(38) .nr 81 +\n(41 .nr 42 \n(81+(1*\n(38) .nr 82 +\n(42 .nr 43 \n(42u'R = mR\h'|\n(43u'mR.mL\h'|\n(44u'mR.mL.(mB\^+1).1 \h'|0'\s\n(33\l'|\n(TWu\(ru'\s0 .nr #^ \n(\*(#du .nr #- \n(#^ .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\h'|\n(41u'\h'|\n(42u'R < mR and\h'|\n(43u'\h'|\n(44u' .nr ^a \n(#^u .nr ^b \n(#^u .nr ^d \n(#^u .nr ^e \n(#^u .nr #^ \n(\*(#du .nr #- \n(#^ .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\v'-(\n(\*(#du-\n(^au-((\n(#-u-\n(^au)/2u)'R\h'|\n(41u'\-\v'(\n(\*(#du-\n(^bu-((\n(#-u-\n(^bu)/2u)'\h'|\n(42u'R does \fInot\fP exist\h'|\n(43u'\v'-(\n(\*(#du-\n(^du-((\n(#-u-\n(^du)/2u)'hR.mL**\h'|\n(44u'hR.mL.(mB\^+1).1\v'(\n(\*(#du-\n(^eu-((\n(#-u-\n(^eu)/2u)' \h'|0'\s\n(33\l'|\n(TWu\(ru'\s0 .nr #^ \n(\*(#du .nr #- \n(#^ .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\h'|\n(41u'\h'|\n(42u'Trunk succ.#\h'|\n(43u'\h'|\n(44u' .nr ^a \n(#^u .nr ^b \n(#^u .nr ^d \n(#^u .nr ^e \n(#^u .nr #^ \n(\*(#du .nr #- \n(#^ .ta \n(80u \n(82+(1*\n(38) .nr 83 +\n(43 .nr 44 \n(83+(1*\n(38) .nr 84 +\n(44 .nr TW \n(84 .if t .if (\n(TW+\n(.o)>7.65i .tm Table at line 451 file get.1.t is too wide - \n(TW units .nr #I \n(.i .in +(\n(.lu-\n(TWu-\n(.iu)/2u .fc   .nr #T 0-1 .nr #a 0-1 .eo .de T# .ds #d .d .if \(ts\n(.z\(ts\(ts .ds #d nl .mk ## .nr ## -1v .ls 1 .ls .. .ec .ta \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'TABLE 1. Determination of \s-1SCCS\s+1 Identification String .sp 1.5p \h'|0'\s\n(33\l'|\n(TWu\(ru'\s0 .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\s-1SID\s+1*\h'|\n(41u'\fB\-b\fP Keyletter\h'|\n(42u'Other\h'|\n(43u'\s-1SID\s+1\h'|\n(44u'\s-1SID\s+1 of Delta .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'Specified\h'|\n(41u'Used\(dg\h'|\n(42u'Conditions\h'|\n(43u'Retrieved\h'|\n(44u'to be Created .sp 1.5p \h'|0'\s\n(33\l'|\n(TWu\(ru'\s0 .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'none\(dd\h'|\n(41u'n:81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\v'-(\n(\*(#du-\n(^au-((\n(#-u-\n(^au)/2u)'R\h'|\n(41u'\-\v'(\n(\*(#du-\n(^bu-((\n(#-u-\n(^bu)/2u)'\h'|\n(42u'in release > R\h'|\n(43u'\v'-(\n(\*(#du-\n(^du-((\n(#-u-\n(^du)/2u)'R.mL\h'|\n(44u'R.mL.(mB\^+1).1\v'(\n(\*(#du-\n(^eu-((\n(#-u-\n(^eu)/2u)' .nr #^ \n(\*(#du .nr #- \n(#^ .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\h'|\n(41u'\h'|\n(42u'\h'|\n(43u'\h'|\n(44u' .nr ^a \n(#^u .nr ^b \n(#^u .nr ^d \n(#^u .nr ^e \n(#^u .nr #^ \n(\*(#du .nr #- \n(#^ .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\v'-(\n(\*(#du-\n(^au-((\n(#-u-\n(^au)/2u)'\h'|\n(41u'\v'(\n(\*(#du-\n(^bu-((\n(#-u-\n(^bu)/2u)'\h'|\n(42u'and R exists\h'|\n(43u'\v'-(\n(\*(#du-\n(^du-((\n(#-u-\n(^du)/2u)'\h'|\n(44u'\v'(\n(\*(#du-\n(^eu-((\n(#-u-\n(^eu)/2u)' .sp 1.5p \h'|0'\s\n(33\l'|\n(TWu\(ru'\s0 .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'R.LWu\(ru'\s0 .fc .nr T. 1 .T# 1 .in \n(#Iu .35 .TE .if \n-(b.=0 .nr c. \n(.c-\n(d.-55 .in \n(INu .PP .PD 0 .TP "\w@***\ \ \ @u" * ``R'', ``L'', ``B'', and ``S'' are the ``release'', ``level'', ``branch'', and ``sequence'' components of the \s-1SID\s+1, respectively; ``m'' means ``maximum''. Thus, for example, ``R.mL'' means ``the maximum level number within release R''; ``R.L.(mB+1).1'' means ``the first sequence number on the .I new branch (i.e., maximum branch number plus one) of level L within release R''. Note that if the \s-1SID\s+1 specified is of the form ``R.L'', ``R.L.B'', or ``R.L.B.S'', each of the specified components .I must exist. .TP ** ``hR'' is the highest .I existing release that is lower than the specified, .IR nonexistent , release\ R. .TP *** This is used to force creation of the .I first delta in a .I new release. .TP # Successor. .TP \(dg The .B \-b keyletter is effective only if the .B b flag (see .IR admin\^ (1)) is present in the file. An entry of \fB\-\fR means ``irrelevant''. .TP \(d\h'|\n(41u'no\h'|\n(42u'No trunk succ.\h'|\n(43u'R.L\h'|\n(44u'R.(L\^+1) \h'|0'\s\n(33\l'|\n(TWu\(ru'\s0 .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'R.L\h'|\n(41u'yes\h'|\n(42u'No trunk succ.\h'|\n(43u'R.L\h'|\n(44u'R.L.(mB\^+1).1 \h'|0'\s\n(33\l'|\n(TWu\(ru'\s0 .nr #^ \n(\*(#du .nr #- \n(#^ .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\h'|\n(41u'\h'|\n(42u'Trunk succ.\h'|\n(43u'\h'|\n(44u' .nr ^a \n(#^u .nr ^b \n(#^u .nr ^d \n(#^u .nr ^e \n(#^u .nr #^ \n(\*(#du .nr #- \n(#^ .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\v'-(\n(\*(#du-\n(^au-((\n(#-u-\n(^au)/2u)'R.L\h'|\n(41u'\-\v'(\n(\*(#du-\n(^bu-((\n(#-u-\n(^bu)/2u)'\h'|\n(42u'in release \(>= R\h'|\n(43u'\v'-(\n(\*(#du-\n(^du-((\n(#-u-\n(^du)/2u)'R.L\h'|\n(44u'R.L.(mB\^+1).1\v'(\n(\*(#du-\n(^eu-((\n(#-u-\n(^eu)/2u)' .sp 1.5p \h'|0'\s\n(33\l'|\n(TWu\(ru'\s0 .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \nd This case applies if the .B d (default \s-1SID\s+1) flag is .I not present in the file. If the .B d flag .I is present in the file, then the \s-1SID\s+1 obtained from the .B d flag is interpreted as if it had been specified on the command line. Thus, one of the other cases in this table applies. .PD .SH IDENTIFICATION KEYWORDS Identifying information is inserted into the text retrieved from the \*(S) file by replacing .I "identification keywords\^" with their value wherever they occur. The following keywords may be used in the text stored in an \*(S) file: .br .ne 5v .PP .PD 0 .TP "\w'Keyword~~~'u" .I Keyword .I Value .TP .B get.1 Module name: either the value of the .B m flag in the file (see .IR admin (1)), or if absent, the name of the \*(S) file with the leading .B s. removed. .TP .B 1.1 \*(S) identification (\*(I)) (1.1.0.0) of the retrieved text. .TP .B 1 Release. .TP .B 1 Level. .TP .B 0 Branch. .TP .B 0 Sequence. .TP .B 82/12/01 Current date (\s-1YY/MM/DD\s+1). .TP .B 12/1/82 Current date (\s-1MM/DD(.f .nr 35 1m \&\h'|\n(40u'R.L.B\h'|\n(41u'no\h'|\n(42u'No branch succ.\h'|\n(43u'R.L.B.mS\h'|\n(44u'R.L.B.(mS\^+1) \h'|0'\s\n(33\l'|\n(TWu\(ru'\s0 .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'R.L.B\h'|\n(41u'yes\h'|\n(42u'No branch succ.\h'|\n(43u'R.L.B.mS\h'|\n(44u'R.L.(mB\^+1).1 .sp 1.5p \h'|0'\s\n(33\l'|\n(TWu\(ru'\s0 .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'R.L.B.S\h'|\n(41u'no\h'|\n(42u'No branch succ.\h'|\n(43u'R.L.B.S\h'|\n(44u'R.L.B.(S\^+1) \h'|0'\s\n(33\l'|\n(TWu\(ru'\s0 .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'R.L.B.S\h'|\n(41u'yes\h'|\n(42u'No branch succ.\h'|\n(43u'R.L.B.S\h'|\n(44u'R.L.(mB\^+1).1 \h'|0'\s\n(33\l'|\n(TWu\(ru'\s0 .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'R.L.B.S\h'|\n(41u'\-\h'|\n(42u'Branch succ.\h'|\n(43u'R.L.B.S\h'|\n(44u'R.L.(mB\^+1).1 .sp 1.5p \h'|0'\s\n(33\l'|\n(T;/YY\s+1). .TP .B 12:42:51 Current time (\s-1HH:MM:SS\s+1). .TP .B 82/11/29 Date newest applied delta was created (\s-1YY/MM/DD\s+1). .TP .B 11/29/82 Date newest applied delta was created (\s-1MM/DD/YY\s+1). .TP .B 20:07:43 Time newest applied delta was created (\s-1HH:MM:SS\s+1). .TP .B Fortune Library Source Module type: value of the .B t flag in the \*(S) file (see .IR admin (1)). .TP .B /w/qa/library/src/cmd/duflop/usr/man/man1/s.get.1 \*(S) file name. .TP .B /w/qa/library/src/cmd/duflop/usr/man/man1/s.get.1 Fully qualified \*(S) file name. .TP .B Fortune Library Source The value of the .B q flag in the file (see .IR admin (1)). .TP .B 964 Current line number. This keyword is intended for identifying messages output by the program such as ``this shouldn't have happened'' type errors. It is .I not\^ intended to be used on every line to provide sequence numbers. .TP .B @(#) The 4-character string \fB@(#)\fR recognizable by .IR what (1). .TP .B @(#)get.1 1.1 A shorthand notation for constructing .IR what (1) +a. A code indicating a ``special'' reason why the delta was or was not applied: .RS 10 ``I'': Included. .br ``X'': Excluded. .br ``C'': Cut off (by a .B \-c keyletter). .RE .TP \n+a. Blank. .TP \n+a. \*(S) identification (\*(I)). .TP \n+a. Tab character. .TP \n+a. Date and time (in the form \s-1YY/MM/DD~HH:MM:SS\s+1) of creation. .TP \n+a. Blank. .TP \n+a. Login name of person who created \fIdelta\fP. .PD .RE .IP The comments and \*(M) data follow on subsequent lines, indented one horizontal tab character. A blank line terminates each entry. .PP The .I p-file\^ is used to pass information resulting from a .I get\^ with an .B \-e keyletter along to .IR delta . Its contents are also used to prevent a subsequent execution of .I get\^ with an .B \-e keyletter for the same \*(I) until .I delta\^ is executed or the joint edit flag, .BR j , (see .IR admin (1)) is set in the \*(S) file. The .I p-file\^ is created in the directory containing the \*(S) file and the effective user must have write permission in that dirstrings for \s-1UNIX\s+1 program files. @(#)get.1 1.1~=~@(#)get.11.1 .TP .B @(#)Fortune Library Source get.1 1.1@(#) Another shorthand notation for constructing .IR what (1) strings for non-\s-1UNIX\s+1 program files. @(#)Fortune Library Source get.1 1.1@(#)~=~@(#)Fortune Library Source~get.1~1.1@(#) .PD .SH FILES Several auxiliary files may be created by .IR get , These files are known generically as the .IR g-file , .IR l-file , .IR p-file , and .IR z-file . The letter before the hyphen is called the tag. An auxiliary file name is formed from the \*(S) file name: the last component of all \*(S) file names must be of the form \fBs.\fP\fImodule-name\fP, the auxiliary files are named by replacing the leading \fBs\fR with the tag. The .I g-file\^ is an exception to this scheme: the .I g-file\^ is named by removing the .B s. prefix. For example, .BR s.xyz.c , the auxiliary file names would be .BR xyz.c , .BR l.xyz.c , .BR p.xyz.c , and .BR z.xyz.c , respectively. .PP The .IR g-file , which contaiectory. Its mode is 644 and it is owned by the effective user. The format of the .I p-file\^ is: the gotten \*(I), followed by a blank, followed by the \*(I) that the new delta will have when it is made, followed by a blank, followed by the login name of the real user, followed by a blank, followed by the date-time the .I get\^ was executed, followed by a blank and the .B \-i keyletter argument if it was present, followed by a blank and the .B \-x keyletter argument if it was present, followed by a new-line. There can be an arbitrary number of lines in the .I p-file\^ at any time; no two lines can have the same new delta \*(I). .PP The .I z-file\^ serves as a .I lock-out\^ mechanism against simultaneous updates. Its contents are the binary (2 bytes) process \s-1ID\s+1 of the command (i.e., .I get\c\^ ) that created it. The .I z-file\^ is created in the directory containing the \*(S) file for the duration of .IR get . The same protection restrictions as those for the .I p-file\^ apply for the .IR z-file . Thens the generated text, is created in the current directory (unless the .B \-p keyletter is used). A .I g-file\^ is created in all cases, whether or not any lines of text were generated by the .IR get . It is owned by the real user. If the .B \-k keyletter is used or implied its mode is 644; otherwise its mode is 444. Only the real user need have write permission in the current directory. .PP The .I l-file\^ contains a table showing which deltas were applied in generating the retrieved text. The .I l-file\^ is created in the current directory if the .B \-l keyletter is used; its mode is 444 and it is owned by the real user. Only the real user need have write permission in the current directory. .PP Lines in the .I l-file\^ have the following format: .PP .PD 0 .RS .nr a 0 1 .af a a .TP \n+a. A blank character if the delta was applied; .br \fB\(**\fR otherwise. .TP \n+a. A blank character if the delta was applied or wasn't applied and ignored; .br \fB\(**\fR if the delta wasn't applied and wasn't ignored. .TP \n; .I z-file\^ is created mode 444. .SH "SEE ALSO" admin(1), delta(1), help(1), prs(1), what(1), sccsfile(5). .br .I "Source Code Control System User's Guide\^" by L. E. Bonanni and C. A. Salemi. .SH DIAGNOSTICS Use .IR help (1) for explanations. .SH BUGS If the effective user has write permission (either explicitly or implicitly) in the directory containing the \*(S) files, but the real user doesn't, then only one file may be named when the .B \-e keyletter is used. .tr ~~ .ds f. prs.1.t '\" t .tr ~ .nr f 0 .bd S B 3 .de SP .if n .ul \%[\f3\-\\$1\fP\\c .if n .ul 0 \\$2\\$3 .. .de SF .if n .ul \%[\f3\-\\$1\fP] .if n .ul 0 .. .de ZZ .hc ^ \f3^.\^.\^.\fP .hc .. .de AR .if \\nf \{ \ . RE . nr f 0 \} .PP .RS 5 .TP 15 \f3\-\\$1\\fP \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 .nr f 1 .. .de C1 .if \\nf \{ \ . RE . nr f 0 \} .PP .RS 5 .TP 15 \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 .nr f 1 .. .de A1 .if \\nf \{ \ . RE . nr f 0 \} .PP .RS 5 .TP 15 \f3\-\\$1\fP[\f2\\$2\^\fP] \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 .nr f 1 .. .de A2 .if \\nf \{ \ . RE . nr f 0 \} .PP .RS 5 .TP 15 \f3\-\\$1\fP\f2\\$2\^\fP \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 .nr f 1 .. .de FI .PP .TP 30 \\$1 \\$2 .i0 .. .ds S) \s-1SCCS\s+1 .ds I) \s-1SID\s+1 .de F1 .if \\nf \{ \ . RE . nr f 0 \} .PP .RS 13 .TP 7 \f3\\$1\fP\f2\\$2\^\fP \\$3 .nr f 1 .. .de F2 .if \\nf \{ \ . RE . nr f 0 \} .PP .RS 13 .TP 7 \f3\\$1\fP[\f2\\$2\\^fP] \\$3 .nr f 1 .. .if t .ds )S \\| .TH PRS 1 .SH NAME prs \- print.TH HELP 1 .SH NAME help \- ask for help .SH SYNOPSIS .B help [\^args\^] .SH DESCRIPTION .I Help\^ finds information to explain a message from a command or explain the use of a command. Zero or more arguments may be supplied. If no arguments are given, .I help\^ will prompt for one. .PP The arguments may be either message numbers (which normally appear in parentheses following messages) or command names, of one of the following types: .PP .RE .RS 10 .TP 10 type 1 Begins with non-numerics, ends in numerics. The non-numeric prefix is usually an abbreviation for the program or set of routines which produced the message (e.g., \fBge6\fP, for message 6 from the .I get\^ command). .PP .RE .RS 10 .TP 10 type 2 Does not contain numerics (as a command, such as .BR get ) .PP .RE .RS 10 .TP 10 type 3 Is all numeric (e.g., \fB212\fP) .RE .PP The response of the program will be the explanatory information related to the argument, if there is any. .PP When all else fails, try ``help stuck''. .SH FILES .PP .TP 20 /usr/li an \s-1SCCS\s+1 file .SH SYNOPSIS .B prs .SP d [dataspec]] .SP r [\s-1SID\s+1]] .SF e .SF l .SF a files .SH DESCRIPTION .I Prs\^ prints, on the standard output, parts or all of an \*(S) file (see .IR sccsfile (5)) in a user supplied format. If a directory is named, .I prs\^ behaves as though each file in the directory were specified as a named file, except that non-\*(S) files (last component of the path name does not begin with \f3s.\fP), and unreadable files are silently ignored. If a name of \f3\-\fP is given, the standard input is read; each line of the standard input is taken to be the name of an \*(S) file or directory to be processed; non-\*(S) files and unreadable files are silently ignored. .PP Arguments to .IR prs , which may appear in any order, consist of .I keyletter\^ arguments, and file names. .PP All the described .I keyletter\^ arguments apply independently to each named file: .A1 d dataspec Used to specify the output data specification. The .I dataspec\^ is a string consisting of \*(S) fileb/help directory containing files of message text. .SH DIAGNOSTICS Use .IR help (1) for explanations. < .I "data keywords\^" (see .IR "\s-1DATA KEYWORDS\s+1" ) interspersed with optional user supplied text. .A1 r \s-1SID\s+1 Used to specify the .IR S "\s-1CCS\s+1 " ID entification (\*(I)) string of a delta for which information is desired. If no \*(I) is specified, the \*(I) of the most recently created delta is assumed. .AR e Requests information for all deltas created .I earlier\^ than and including the delta designated via the .B \-r keyletter. .AR l Requests information for all deltas created .I later\^ than and including the delta designated via the .B \-r keyletter. .AR a Requests printing of information for both removed, i.e., delta type = .IR R , (see .IR rmdel (1)) and existing, i.e., delta type = .IR D , deltas. If the .B \-a keyletter is not specified, information for existing deltas only is provided. .PP .i0 .SH "DATA KEYWORDS" Data keywords specify which parts of an \*(S) file are to be retrieved and output. All parts of an \*(S) file (see .IR sccsfile (5)) have an associated data keyword. There ifP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPP\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPDS\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPDP\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPDI\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPDn\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPDx\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPDg\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPMR\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPC\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPUN\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPFL\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPY\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPMF\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPMP\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPKF\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPBF\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPJ\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPLK\f3:\fPs no limit on the number of times a data keyword may appear in a .IR dataspec . .PP The information printed by .I prs\^ consists of: (1) the user supplied text; and (2) appropriate values (extracted from the \*(S) file) substituted for the recognized data keywords in the order of appearance in the \f2dataspec\^\fP. The format of a data keyword value is either .I Simple\^ (S), in which keyword substitution is direct, or .I "Multi-line\^" (M), in which keyword substitution is followed by a carriage return. .PP User supplied text is any text other than recognized data keywords. A tab is specified by \f3\et\fP and carriage return/new-line is specified by \f3\en\fP. .bp .in 0 .if t .ps -1 .if t .vs -1p .TS .if \n+(b.=1 .nr d. \n(.c-\n(c.-1 .de 35 .ps \n(.s .vs \n(.vu .in \n(.iu .if \n(.u .fi .if \n(.j .ad .if \n(.j=0 .na .. .nf .nr #~ 0 .if n .nr #~ 0.6n .ds #d .d .if \(ts\n(.z\(ts\(ts .ds #d nl .fc .nr 33 \n(.s .rm 80 81 82 83 84 .nr 80 0 .nr 38 \w\f2Keyword\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPDt .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPQ\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPM\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPFB\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPCB\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPDs\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPND\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPFD\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPBD\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPGB\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPW\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPA\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPZ\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPF\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPPN\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .80 .rm 80 .nr 81 0 .nr 38 \w\f2Data Item\fP .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wDelta information .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wDelta line statistics  .if \n(81<\n(38 .nr 81 \n(38 .nr \f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPDL\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPLi\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPLd\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPLu\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPDT\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPI\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPR\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPL\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPB\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPS\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPD\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPDy\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPDm\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPDd\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPT\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPTh\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPTm\f3:\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f3:\fPTs\f3:\<38 \wLines inserted by Delta .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wLines deleted by Delta .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wLines unchanged by Delta .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wDelta type .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wSCCS ID string (SID) .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wRelease number .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wLevel number .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wBranch number .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wSequence number .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wDate Delta created .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wYear Delta created .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wMonth Delta created .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wDay Delta created .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wTime Delta created .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wHour Delta created .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wMinutes Delta created .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wSeconds Delta created .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wProgrammer who creWXYZ[\]^_`abcdefghijated Delta .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wDelta sequence number .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wPredecessor Delta seq-no.  .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wSeq-no. of deltas incl., excl., ignored .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wDeltas included (seq #) .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wDeltas excluded (seq #) .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wDeltas ignored (seq #) .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wMR numbers for delta .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wComments for delta .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wUser names .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wFlag list .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wModule type flag .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wMR validation flag .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wMR validation pgm name .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wKeyword error/warning flag .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wBranch flag .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wJoint edit flag .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \ \n(81<\n(38 .nr 81 \n(38 .81 .rm 81 .nr 38 20mn .if \n(81<\n(38 .nr 81 \n(38 .nr 82 0 .nr 38 \w\f2File Section\fP .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \wDelta Table .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38wLocked releases .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wUser defined keyword .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wModule name .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wFloor boundary .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wCeiling boundary .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wDefault SID .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wNull delta flag .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wFile descriptive text .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wBody .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wGotten body .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wA form of \f2what\^\fP(1) string .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wA form of \f2what\^\fP(1) string .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \w\f2what\^\fP(1) string delimiter .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wSCCS file name .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \wSCCS file path name .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \w* \f3:\fPDt\f3:\fP~=~\f3:\fPDT\f3:\fP~\f3:\fPI\f3:\fP~\f3:\fPD\f3:\fP~\f3:\fPT\f3:\fP~\f3:\fPP\f3:\fP~\f3:\fPDS\f3:\fP~\f3:\fPDP\f3:\fP .if= .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \wUser Names .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \wFlags .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \wComments .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \wBody .if \n(8t .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wtext .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \w\f2yes\^\fP~or~\f2no\^\fP .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wtext .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \w\f2yes\^\fP~or~\f2no\^\fP .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \w\f2yes\^\fP~or~\f2no\^\fP .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \w\f2yes\^\fP~or~\f2no\^\fP .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \w\f3:\fPR\f3:\fP\|\f3.\^.\^.\fP .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wtext .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wtext .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \w\f3:\fPR\f3:\fP .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \w\f3:\fPR\f3:\fP .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \w\f3:\fPI\f3:\fP .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \w\f2yes\^\fP~or~\f2no\^\fP .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wtext .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wtext .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wtext .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \w\f3:\fPZ\f3:\fP\f3:\fPM\f3:\fP\et\f3:\fPI\f3:\fP .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \w\f3:\fPZ\2<\n(38 .nr 82 \n(38 .nr 38 \w" .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \wN/A .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \wN/A .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \wN/A .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \wN/A .if \n(82<\n(38 .nr 82 \n(38 .nr 38 \wN/A .if \n(82<\n(38 .nr 82 \n(38 .82 .rm 82 .nr 83 0 .nr 38 \w\f2Value\fP .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wSee below* .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \w\f3:\fPLi\f3:\fP/\f3:\fPLd\f3:\fP/\f3:\fPLu\f3:\fP .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wnnnnn .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wnnnnn .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wnnnnn .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \w\f2D\^\fP~or~\f2R\^\fP .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \w\f3:\fPR\f3:.:\fPL\f3:.:\fPB\f3:.:\fPS\f3:\fP .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wnnnn .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wnnnn .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wnnnn .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wnnnn .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \w\f3:\fPDy\f3:\fP/\f3:\fPDm\f3:\fP/\f3:\fPDd\f3:\fPf3:\fP\f3:\fPY\f3:\fP~\f3:\fPM\f3:\fP~\f3:\fPI\f3:\fP\f3:\fPZ\f3:\fP .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \w@(#) .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wtext .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wtext .if \n(83<\n(38 .nr 83 \n(38 .83 .rm 83 .nr 84 0 .nr 38 \w\f2Fmt\fP .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wnn .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wnn .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wnn .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \w\f3:\fPTh\f3:\fP\f3:\fP:Tm\f3:\fP\f3:\fP:Ts\f3:\fP .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wnn .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wnn .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wnn .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wlogname .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wnnnn .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wnnnn .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \w\f3:\fPDn\f3:\fP/\f3:\fPDx\f3:\fP/\f3:\fPDg\f3:\fP .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \w\f3:\fPDS\f3:\fP~\f3:\fPDS\f3:\fP\|\f3.\^.\^.\fP .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \w\f3:\fPDS\f3:\fP~\f3:\fPDS\f3:\fP\|\f3.\^.\^.\fP .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \w\f3:\fPDS\f3:\fP~\f3:\fPDS\f3:\fP\|\f3.\^.\^.\fP .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wtext .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wtext .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wtext .if \n(83<\n(38 .nr 83 \n(38 .nr 38 \wtex= \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wM .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wM .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wM .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wM .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(8442u'"\h'|\n(43u'nnnnn\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPLd\f3:\fP\h'|\n(41u'Lines deleted by Delta\h'|\n(42u'"\h'|\n(43u'nnnnn\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPLu\f3:\fP\h'|\n(41u'Lines unchanged by Delta\h'|\n(42u'"\h'|\n(43u'nnnnn\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPDT\f3:\fP\h'|\n(41u'Delta type\h'|\n(42u'"\h'|\n(43u'\f2D\^\fP~or~\f2R\^\fP\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPI\f3:\fP\h'|\n(41u'SCCS ID string (SID)\h'|\n(42u'"\h'|\n(43u'\f3:\fPR\f3:.:\fPL\f3:.:\fPB\f3:.:\fPS\f3:\fP\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPR\f3:\fP\h'|\n(41u'Release number\h'|\n(42u'"\h'|\n(43u'nnnn\h'|\n(44u'S .ta \n(80u \n(81u \<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wM .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wM .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wM .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .nr 38 \wS .if \n(84<\n(38 .nr 84 \n(38 .84 .rm 84 .nr 38 \w\s+1TABLE 1.\| SCCS Files Data Keywords\s-1-\n(80-\n(81-\n(82-\n(83-\n(84 .if \n(38>0 .nr 38 \n(38/4 .if \n(38<0 .nr 38 0 .nr 81 +\n(38 .nr 82 +\n(38 .nr 83 +\n(38 .nr 84 +\n(38 .nr 38 0+\n(80+\n(81+\n(82+\n(83+\n(84 .nr 38 \n(.l-\n(38 .nr 38 \n(38/8 .if \n(38<0 .nr 38 0 .nr 79 0 .nr 40 \n(79+(0*\n(38) .nr 80 +\n(40 .nr 41 \n(80+(3*\n(38) .nr 81 +\n(41 .nr 42 \n(81+(3*\n(38) .nr 82 +\n(42 .nr 43 \n(82+(1*\n(38) .nr 83 +\n(43 .nr 44 \n(83+(1*\n(38) .nr 84 +\n(44 .nr TW \n(84 .if t .if (\n(TW+\n(.o)>7.65i .tm Table at line 278 file prs.1.t is too wide - \n(TW units .nr #I \n(.i .in +(\n(.lu-\n(TWu-\n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPL\f3:\fP\h'|\n(41u'Level number\h'|\n(42u'"\h'|\n(43u'nnnn\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPB\f3:\fP\h'|\n(41u'Branch number\h'|\n(42u'"\h'|\n(43u'nnnn\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPS\f3:\fP\h'|\n(41u'Sequence number\h'|\n(42u'"\h'|\n(43u'nnnn\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPD\f3:\fP\h'|\n(41u'Date Delta created\h'|\n(42u'"\h'|\n(43u'\f3:\fPDy\f3:\fP/\f3:\fPDm\f3:\fP/\f3:\fPDd\f3:\fP\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPDy\f3:\fP\h'|\n(41u'Year Delta created\h'|\n(42u'"\h'|\n(43u'nn\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPDm\f3:\fP\h'|\n(41u'Month Deln(.iu)/2u .fc   .nr #T 0-1 .nr #a 0-1 .eo .de T# .ds #d .d .if \(ts\n(.z\(ts\(ts .ds #d nl .mk ## .nr ## -1v .ls 1 .ls .. .ec .ta \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\s+1TABLE 1.\| SCCS Files Data Keywords\s-1 .sp 1.5p .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f2Keyword\f\n(31\h'|\n(41u'\f2Data Item\f\n(31\h'|\n(42u'\f2File Section\f\n(31\h'|\n(43u'\f2Value\f\n(31\h'|\n(44u'\f2Fmt\f\n(31 .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPDt\f3:\fP\h'|\n(41u'Delta information\h'|\n(42u'Delta Table\h'|\n(43u'See below*\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPDL\f3:\fP\h'|\n(41u'Delta line statistics \h'|\n(42u'"\h'|\n(43u'\f3:\fPLi\f3:\fP/\f3:\fPLd\f3:\fP/\f3:\fPLu\f3:\fP\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPLi\f3:\fP\h'|\n(41u'Lines inserted by Delta\h'|\n(>ta created\h'|\n(42u'"\h'|\n(43u'nn\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPDd\f3:\fP\h'|\n(41u'Day Delta created\h'|\n(42u'"\h'|\n(43u'nn\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPT\f3:\fP\h'|\n(41u'Time Delta created\h'|\n(42u'"\h'|\n(43u'\f3:\fPTh\f3:\fP\f3:\fP:Tm\f3:\fP\f3:\fP:Ts\f3:\fP\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPTh\f3:\fP\h'|\n(41u'Hour Delta created\h'|\n(42u'"\h'|\n(43u'nn\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPTm\f3:\fP\h'|\n(41u'Minutes Delta created\h'|\n(42u'"\h'|\n(43u'nn\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPTs\f3:\fP\h'|\n(41u'Seconds Delta created\h'|\n(42u'"\h'|\n(43u'nn\h'|\n(44u'S .ta \n(80u \n(81u \nu \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPFL\f3:\fP\h'|\n(41u'Flag list\h'|\n(42u'Flags\h'|\n(43u'text\h'|\n(44u'M .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPY\f3:\fP\h'|\n(41u'Module type flag\h'|\n(42u'"\h'|\n(43u'text\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPMF\f3:\fP\h'|\n(41u'MR validation flag\h'|\n(42u'"\h'|\n(43u'\f2yes\^\fP~or~\f2no\^\fP\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPMP\f3:\fP\h'|\n(41u'MR validation pgm name\h'|\n(42u'"\h'|\n(43u'text\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPKF\f3:\fP\h'|\n(41u'Keyword error/warning flag\h'|\n(42u'"\h'|\n(43u'\f2yes\^\fP~or~\f2no\^\fP\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPBF\f3:\fP\h'|\n(41u'(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPP\f3:\fP\h'|\n(41u'Programmer who created Delta\h'|\n(42u'"\h'|\n(43u'logname\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPDS\f3:\fP\h'|\n(41u'Delta sequence number\h'|\n(42u'"\h'|\n(43u'nnnn\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPDP\f3:\fP\h'|\n(41u'Predecessor Delta seq-no. \h'|\n(42u'"\h'|\n(43u'nnnn\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPDI\f3:\fP\h'|\n(41u'Seq-no. of deltas incl., excl., ignored\h'|\n(42u'"\h'|\n(43u'\f3:\fPDn\f3:\fP/\f3:\fPDx\f3:\fP/\f3:\fPDg\f3:\fP\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPDn\f3:\fP\h'|\n(41u'Deltas included (seq #)\h'|\n(42u'"\h'|\n(43u'\f3:\fPDS\f3:\fP~\f3:\fPDS\f3:\fP\|\f3.\^.\^.\fP\h'|\n(44u'S .ta \Branch flag\h'|\n(42u'"\h'|\n(43u'\f2yes\^\fP~or~\f2no\^\fP\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPJ\f3:\fP\h'|\n(41u'Joint edit flag\h'|\n(42u'"\h'|\n(43u'\f2yes\^\fP~or~\f2no\^\fP\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPLK\f3:\fP\h'|\n(41u'Locked releases\h'|\n(42u'"\h'|\n(43u'\f3:\fPR\f3:\fP\|\f3.\^.\^.\fP\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPQ\f3:\fP\h'|\n(41u'User defined keyword\h'|\n(42u'"\h'|\n(43u'text\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPM\f3:\fP\h'|\n(41u'Module name\h'|\n(42u'"\h'|\n(43u'text\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPFB\f3:\fP\h'|\n(41u'Floor boundary\h'|\n(42u'"\h'|\n(43u'\f3:\fPR\f3:\fP\h'|\n(44u'Sn(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPDx\f3:\fP\h'|\n(41u'Deltas excluded (seq #)\h'|\n(42u'"\h'|\n(43u'\f3:\fPDS\f3:\fP~\f3:\fPDS\f3:\fP\|\f3.\^.\^.\fP\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPDg\f3:\fP\h'|\n(41u'Deltas ignored (seq #)\h'|\n(42u'"\h'|\n(43u'\f3:\fPDS\f3:\fP~\f3:\fPDS\f3:\fP\|\f3.\^.\^.\fP\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPMR\f3:\fP\h'|\n(41u'MR numbers for delta\h'|\n(42u'"\h'|\n(43u'text\h'|\n(44u'M .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPC\f3:\fP\h'|\n(41u'Comments for delta\h'|\n(42u'"\h'|\n(43u'text\h'|\n(44u'M .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPUN\f3:\fP\h'|\n(41u'User names\h'|\n(42u'User Names\h'|\n(43u'text\h'|\n(44u'M .ta \n(80u \n(81u \n(82u \n(83> .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPCB\f3:\fP\h'|\n(41u'Ceiling boundary\h'|\n(42u'"\h'|\n(43u'\f3:\fPR\f3:\fP\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPDs\f3:\fP\h'|\n(41u'Default SID\h'|\n(42u'"\h'|\n(43u'\f3:\fPI\f3:\fP\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPND\f3:\fP\h'|\n(41u'Null delta flag\h'|\n(42u'"\h'|\n(43u'\f2yes\^\fP~or~\f2no\^\fP\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPFD\f3:\fP\h'|\n(41u'File descriptive text\h'|\n(42u'Comments\h'|\n(43u'text\h'|\n(44u'M .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPBD\f3:\fP\h'|\n(41u'Body\h'|\n(42u'Body\h'|\n(43u'text\h'|\n(44u'M .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPGB\f3:\f2special case:\^\fP .IP prs s\f3.\fPfile .PP may produce on the standard output: .PP .RS .nf D 1\f3.\fP1 77/12/1 00\f3:\fP00\f3:\fP00 cas 1 000000/00000/00000 \s-1MR\s+1s\f3:\fP bl78-12345 bl79-54321 \s-1COMMENTS\s+1\f3:\fP this is the comment line for s\f3.\fPfile initial delta .fi .RE .PP for each delta table entry of the ``D'' type. The only keyletter argument allowed to be used with the .I "special case\^" is the .B \-a keyletter. .PP .SH FILES .RE .TP 10 /tmp/pr????? .i0 .SH "SEE ALSO" admin(1), delta(1), get(1), help(1), sccsfile(5). .br .I "Source Code Control System User's Guide\^" by L. E. Bonanni and C. A. Salemi. .SH DIAGNOSTICS Use .IR help (1) for explanations. .tr ~~ fP\h'|\n(41u'Gotten body\h'|\n(42u'"\h'|\n(43u'text\h'|\n(44u'M .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPW\f3:\fP\h'|\n(41u'A form of \f2what\^\fP(1) string\h'|\n(42u'N/A\h'|\n(43u'\f3:\fPZ\f3:\fP\f3:\fPM\f3:\fP\et\f3:\fPI\f3:\fP\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPA\f3:\fP\h'|\n(41u'A form of \f2what\^\fP(1) string\h'|\n(42u'N/A\h'|\n(43u'\f3:\fPZ\f3:\fP\f3:\fPY\f3:\fP~\f3:\fPM\f3:\fP~\f3:\fPI\f3:\fP\f3:\fPZ\f3:\fP\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPZ\f3:\fP\h'|\n(41u'\f2what\^\fP(1) string delimiter\h'|\n(42u'N/A\h'|\n(43u'@(#)\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3:\fPF\f3:\fP\h'|\n(41u'SCCS file name\h'|\n(42u'N/A\h'|\n(43u'text\h'|\n(44u'S .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \.TH RMDEL 1 .SH NAME rmdel \- remove a delta from an \s-1SCCS\s+1 file .SH SYNOPSIS .B rmdel .if n .ul \fB\-r\fR\c .if n .ul 0 \s-1SID\s0 files .SH DESCRIPTION .I Rmdel\^ removes the delta specified by the .SM \fISID\fP from each named \s-1SCCS\s+1 file. The delta to be removed must be the newest (most recent) delta in its branch in the delta chain of each named \s-1SCCS\s+1 file. In addition, the \*(I) specified must .I not\^ be that of a version being edited for the purpose of making a delta (i. e., if a .I p-file\^ (see .IR get (1)) exists for the named \s-1SCCS\s+1 file, the \*(I) specified must .I not\^ appear in any entry of the .I p-file\c\^ ). .PP If a directory is named, .I rmdel\^ behaves as though each file in the directory were specified as a named file, except that non-\s-1SCCS\s+1 files (last component of the path name does not begin with \fBs.\fR) and unreadable files are silently ignored. If a name of \fB\-\fR is given, the standard input is read; each line of the standard input is taken to be&\h'|\n(40u'\f3:\fPPN\f3:\fP\h'|\n(41u'SCCS file path name\h'|\n(42u'N/A\h'|\n(43u'text\h'|\n(44u'S .sp .5v .ta \n(80u \n(81u \n(82u \n(83u \n(84u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\h'|\n(41u'* \f3:\fPDt\f3:\fP~=~\f3:\fPDT\f3:\fP~\f3:\fPI\f3:\fP~\f3:\fPD\f3:\fP~\f3:\fPT\f3:\fP~\f3:\fPP\f3:\fP~\f3:\fPDS\f3:\fP~\f3:\fPDP\f3:\fP\h'|\n(42u'\h'|\n(43u'\h'|\n(44u' .fc .nr T. 1 .T# 1 .in \n(#Iu .35 .TE .if \n-(b.=0 .nr c. \n(.c-\n(d.-61 .bp .if t .ps +1 .if t .vs +1p .SH EXAMPLES .IP prs \-d"Users and/or user \s-1ID\s+1s for \f3:\fPF\f3:\fP are\f3:\fP\en\f3:\fP\s-1UN\s+1\f3:\fP" s\f3.\fPfile .PP may produce on the standard output: .PP .RS .nf Users and/or user \s-1ID\s+1s for s\f3.\fPfile are\f3:\fP xyz 131 abc .fi .RE .IP prs \-d"Newest delta for pgm \f3:\fPM\f3:\fP\f3:\fP \f3:\fPI\f3:\fP Created \f3:\fPD\f3:\fP By \f3:\fPP\f3:\fP" \-r s\f3.\fPfile .PP may produce on the standard output: .IP Newest delta for pgm main\f3.\fPc\f3:\fP 3\f3.\fP7 Created 77/12/1 By cas .PP As a \? the name of an \s-1SCCS\s+1 file to be processed; non-\s-1SCCS\s+1 files and unreadable files are silently ignored. .PP The exact permissions necessary to remove a delta are documented in the .IR "Source Code Control System User's Guide" . Simply stated, they are either (1) if you make a delta you can remove it; or (2) if you own the file and directory you can remove a delta. .SH FILES .PD 0 .TP 10 x-file (see .IR delta (1)) .TP 10 z-file (see .IR delta (1)) .PD .SH "SEE ALSO" delta(1), get(1), help(1), prs(1), sccsfile(5). .br .I "Source Code Control System User's Guide\^" by L. E. Bonanni and C. A. Salemi. .br .SH DIAGNOSTICS Use .IR help (1) for explanations. .TH SCCSDIFF 1 .SH NAME sccsdiff \- compare two versions of an \s-1SCCS\s+1 file .SH SYNOPSIS .B sccsdiff .BR \-r \s-1SID\s+1\&1 .BR \-r \s-1SID\s+1\&2 .RB [ \-p ] .RB [ \-s n] files .SH DESCRIPTION .I Sccsdiff\^ compares two versions of an .SM SCCS file and generates the differences between the two versions. Any number of .SM SCCS files may be specified, but arguments apply to all files. .RS 5 .TP 12 .BI \-r \s-1SID\s+1?\^ .IR \s-1SID\s+11 \ and \ \s-1SID\s+12 \ specify the deltas of an .SM SCCS file that are to be compared. Versions are passed to .IR bdiff (1) in the order given. .TP 12 .B \-p pipe output for each file through .IR pr (1). .TP 12 .BI \-s n\^ \fIn\fP is the file segment size that .I bdiff\^ will pass to .IR diff (1). This is useful when .I diff\^ fails due to a high system load. .SH FILES .TP "\w'/tmp/get?????\ \ 'u" /tmp/get????? Temporary files .SH "SEE ALSO" bdiff(1), get(1), help(1), pr(1). .br .IR "Source Code Control System User's Guide" by L. E. Bonanni and C. A. Salemi. .SH DIAGNOSTIC.TH SACT 1 .SH NAME sact \- print current \s-1SCCS\s+1 file editing activity .SH SYNOPSIS .B sact files .SH DESCRIPTION .I Sact\^ informs the user of any impending deltas to a named .SM SCCS file. This situation occurs when .IR get (1) with the .B \-e option has been previously executed without a subsequent execution of .IR delta (1). If a directory is named on the command line, .I sact\^ behaves as though each file in the directory were specified as a named file, except that non-\s-1SCCS\s+1 files and unreadable files are silently ignored. If a name of .B \- is given, the standard input is read with each line being taken as the name of an .SM SCCS file to be processed. .P The output for each named file consists of five fields separated by spaces. .RS 5 .TP 12 Field 1 specifies the .SM SID of a delta that currently exists in the .SM SCCS file to which changes will be made to make the new delta. .TP 12 Field 2 specifies the .SM SID for the new delta to be created. .TP 12 Field 3 contains the logname of the useS .PD 0 .TP 25 .RI `` file ": No differences''" If the two versions are the same. .PP Use .IR help (1) for explanations. .PD r who will make the delta (i.e. executed a .I get\^ for editing). .TP 12 Field 4 contains the date that .B "get \-e" was executed. .TP 12 Field 5 contains the time that .B "get \-e" was executed. .SH "SEE ALSO" delta(1), get(1), unget(1). .SH DIAGNOSTICS Use .IR help (1) for explanations. ?.TH UNGET 1 .SH NAME unget \- undo a previous get of an \s-1SCCS\s+1 file .SH SYNOPSIS .B unget .RB [ \-r \s-1SID\s+1] .RB [ \-s ] .RB [ \-n ] files .SH DESCRIPTION Unget undoes the effect of a .B "get \-e" done prior to creating the intended new delta. If a directory is named, .I unget\^ behaves as though each file in the directory were specified as a named file, except that non-\s-1SCCS\s+1 files and unreadable files are silently ignored. If a name of .B \- is given, the standard input is read with each line being taken as the name of an .SM SCCS file to be processed. .P Keyletter arguments apply independently to each named file. .RS 5 .TP 12 .BI \-r \s-1SID\s+1\^ Uniquely identifies which delta is no longer intended. (This would have been specified by .I get\^ as the ``new delta''). The use of this keyletter is necessary only if two or more outstanding .IR get s for editing on the same .SM SCCS file were done by the same person (login name). A diagnostic results if the specified .I \s-1SID\s+1\^ is ambiguo.RS 13 .TP 7 \fB\\$1\fI\\$2\fR \\$3 .nr f 1 .. .de F2 .if \\nf \{ \ . RE . nr f 0 \} .PP .RS 13 .TP 7 \fB\\$1[\fI\\$2\fR] \\$3 .nr f 1 .. .if t .ds )S \\| .TH VAL 1 .SH NAME val \- validate \s-1SCCS\s0 file .SH SYNOPSIS \fBval \-\fR .br .B val .SF s .SP r \s-1SID\s0 ] .SP m name ] .SP y type ] files .SH DESCRIPTION .I Val\^ determines if the specified .I file\^ is an \*(S) file meeting the characteristics specified by the optional argument list. Arguments to .I val\^ may appear in any order. The arguments consist of keyletter arguments, which begin with a \fB\-\fR, and named files. .PP .I Val\^ has a special argument, \fB\-\fR, which causes reading of the standard input until an end-of-file condition is detected. Each line read is independently processed as if it were a command line argument list. .PP .I Val\^ generates diagnostic messages on the standard output for each command line and file processed and also returns a single 8\fB-\fRbit code upon exit as described below. .PP The keyletter arguments aus, or if it is necessary and omitted on the command line. .TP 12 .B \-s Suppresses the printout, on the standard output, of the intended delta's .IR \s-1SID\s+1 . .TP 12 .B \-n Causes the retention of the gotten file which would normally be removed from the current directory. .SH "SEE ALSO" delta(1), get(1), sact(1). .SH DIAGNOSTICS Use .IR help (1) for explanations. re defined as follows. The effects of any keyletter argument apply independently to each named file on the command line. .AR s The presence of this argument silences the diagnostic message normally generated on the standard output for any error that is detected while processing each named file on a given command line. .A2 r \s-1SID\s0 The argument value \*(I) .RI ( S \s-1CCS\s+1 " ID" entification String) is an \*(S) delta number. A check is made to determine if the \*(I) is ambiguous (e. g., .B \*-r\c 1 is ambiguous because it physically does not exist but implies 1.1, 1.2, etc. which may exist) or invalid (e. g., .B \*-r\c 1.0 or .B \*-r\c 1.1.0 are invalid because neither case can exist as a valid delta number). If the \*(I) is valid and not ambiguous, a check is made to determine if it actually exists. .A2 m name The argument value .I name\^ is compared with the \*(S) val.1 keyword in .IR file . .A2 y type The argument value .I type\^ is compared with the \*(S) Fortune Library Source keyword in .IR file ..nr f 0 .bd S B 3 .de SP .if n .ul \%[\fB\-\\$1\fR\\c .if n .ul 0 \\$2\\$3 .. .de SF .if n .ul \%[\fB\-\\$1\fR] .if n .ul 0 .. .de ZZ .hc ^ \fB^...\fR .hc .. .de AR .if \\nf \{ \ . RE . nr f 0 \} .PP .RS 5 .TP 15 \fB\-\\$1\\fR \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 .nr f 1 .. .de C1 .if \\nf \{ \ . RE . nr f 0 \} .PP .RS 5 .TP 15 \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 .nr f 1 .. .de A1 .if \\nf \{ \ . RE . nr f 0 \} .PP .RS 5 .TP 15 \fB\-\\$1\fR[\fI\\$2\fR] \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 .nr f 1 .. .de A2 .if \\nf \{ \ . RE . nr f 0 \} .PP .RS 5 .TP 15 \fB\-\\$1\fI\\$2\fR \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 .nr f 1 .. .de FI .PP .TP 30 \\$1 \\$2 .i0 .. .ds F) \fB\s-1FILES\s0\fR .ds W) \fB\s-1WARNINGS\s0\fR .ds X) \fB\s-1EXAMPLES\s0\fR .ds T) \fB\s-1TABLE\s0\fR .ds K) \fB\s-1DATA KEYWORDS\s0\fR .ds D) \fB\s-1DDDDD\s0\fR .ds M) \fB\s-1MR\s0\fR .ds R) \fB\s-1RELEASE NUMBER\s0\fR .ds S) \s-1SCCS\s0 .ds I) \fI\s-1SID\s0\fR .de F1 .if \\nf \{ \ . RE . nr f 0 \} .PP @ .RE .PP The 8\fB-\fRbit code returned by .I val\^ is a disjunction of the possible errors, i.\ e., can be interpreted as a bit string where (moving from left to right) set bits are interpreted as follows: .nf .PP .RS bit 0 = missing file argument; bit 1 = unknown or duplicate keyletter argument; bit 2 = corrupted \*(S) file; bit 3 = can't open file or file not \*(S); bit 4 = \*(I) is invalid or ambiguous; bit 5 = \*(I) does not exist; bit 6 = Fortune Library Source, \fB\-y\fR mismatch; bit 7 = val.1, \fB\-m\fR mismatch; .RE .fi .PP Note that .I val\^ can process two or more files on a given command line and in turn can process multiple command lines (when reading the standard input). In these cases an aggregate code is returned \- a logical \fB\s-1OR\s0\fR of the codes generated for each command line and file processed. .SH "SEE ALSO" admin(1), delta(1), get(1), prs(1). .SH DIAGNOSTICS Use .IR help (1) for explanations. .SH BUGS .I Val\^ can process up to 50 files on a single command line. Any number above 51). .SH DIAGNOSTICS Use .IR help (1) for explanations. .SH BUGS It's possible that an unintended occurrence of the pattern .B @(#) could be found just by chance, but this causes no harm in nearly all cases. .tr ~~ 0 will produce a .B core dump. .P..clri.8dcheck.8icheck.8makekey.8ncheck.8.tr ~" .TH WHAT 1 .SH NAME what \- identify \s-1SCCS\s+1 files .SH SYNOPSIS .B what files .SH DESCRIPTION .I What\^ searches the given files for all occurrences of the pattern that .IR get (1) substitutes for @(#) (this is \fB@(#)\fR at this printing) and prints out what follows until the first .BR ~ , .BR > , new-line, .BR \e , or null character. For example, if the C program in file \fBf.c\fR contains .PP .RS 5 char ident[] = "\|@(#)identification information\|"; .RE .PP and \fBf.c\fR is compiled to yield \fBf.o\fR and \fBa.out\fR, then the command .PP .RS 5 what\| .RB f . c\| .RB f . o\| .RB a . out .RE .PP will print .PP .RS 5 .TP 8 f\fB.\fRc: .br identification information .TP 8 f\fB.\fRo: .br identification information .TP 8 a\fB.\fRout: .br identification information .RE .PP .I What\^ is intended to be used in conjunction with the \*(S) command .IR get (1), which automatically inserts identifying information, but it can also be used where the information is inserted manually. .SH SEE ALSO get(1), help(@.TH CLRI 8 .UC 4 .SH NAME clri \- clear i-node .SH SYNOPSIS .B /etc/clri filesystem i-number ... .SH DESCRIPTION .B N.B.: .I Clri is obsoleted for normal file system repair work by .IR fsck (8). .PP .I Clri writes zeros on the i-nodes with the decimal .I i-numbers on the .I filesystem. After .I clri, any blocks in the affected file will show up as `missing' in an .IR icheck (1) of the .I filesystem. .PP Read and write permission is required on the specified file system device. The i-node becomes allocatable. .PP The primary purpose of this routine is to remove a file which for some reason appears in no directory. If it is used to zap an i-node which does appear in a directory, care should be taken to track down the entry and remove it. Otherwise, when the i-node is reallocated to some new file, the old entry will still point to that file. At that point removing the old entry will destroy the new file. The new entry will again point to an unallocated i-node, so the whole cycle is likely to be repeated again ant facts are reported. Allocated files which have 0 link-count and no entries are also listed. The only dangerous situation occurs when there are more entries than links; if entries are removed, so the link-count drops to 0, the remaining entries point to thin air. They should be removed. When there are more links than entries, or there is an allocated file with neither links nor entries, some disk space may be lost but the situation will not degenerate. .SH BUGS Since .I dcheck is inherently two-pass in nature, extraneous diagnostics may be produced if applied to active file systems. .PP .I Dcheck is obsoleted by .I fsck and remains for historical reasons. nd again. .SH "SEE ALSO" icheck(8) .SH BUGS If the file is open, .I clri is likely to be ineffective. .TH ICHECK 8 .UC 4 .SH NAME icheck \- file system storage consistency check .SH SYNOPSIS .B /etc/icheck [ .B \-s ] [ .B \-b numbers ] [ filesystem ] .SH DESCRIPTION .B N.B.: .I Icheck is obsoleted for normal consistency checking by .IR fsck (8). .PP .I Icheck examines a file system, builds a bit map of used blocks, and compares this bit map against the free list maintained on the file system. If the file system is not specified, a set of default file systems is checked. The normal output of .I icheck includes a report of .IP "" The total number of files and the numbers of regular, directory, block special and character special files. .IP "" The total number of blocks in use and the numbers of single-, double-, and triple-indirect blocks and directory blocks. .IP "" The number of free blocks. .IP "" The number of blocks missing; i.e. not in any file nor in the free list. .PP The .B \-s option causes .I icheck to ignore the actual free list and reconstruct a new one by rewriting the super-block of the file s.TH DCHECK 8 .UC 4 .SH NAME dcheck \- file system directory consistency check .SH SYNOPSIS .B /etc/dcheck [ .B \-i numbers ] [ filesystem ] .SH DESCRIPTION .B N.B.: .I Dcheck is obsoleted for normal consistency checking by .IR fsck (8). .PP .I Dcheck reads the directories in a file system and compares the link-count in each i-node with the number of directory entries by which it is referenced. If the file system is not specified, a set of default file systems is checked. .PP The .B \-i flag is followed by a list of i-numbers; when one of those i-numbers turns up in a directory, the number, the i-number of the directory, and the name of the entry are reported. .PP The program is fastest if the raw version of the special file is used, since the i-list is read in large chunks. .SH FILES Default file systems vary with installation. .SH "SEE ALSO" fsck(8), icheck(8), filsys(5), clri(8), ncheck(8) .SH DIAGNOSTICS When a file turns up for which the link-count and the number of directory entries disagree, the relevaAystem. The file system should be dismounted while this is done; if this is not possible (for example if the root file system has to be salvaged) care should be taken that the system is quiescent and that it is rebooted immediately afterwards so that the old, bad in-core copy of the super-block will not continue to be used. Notice also that the words in the super-block which indicate the size of the free list and of the i-list are believed. If the super-block has been curdled these words will have to be patched. The .B \-s option causes the normal output reports to be suppressed. .PP Following the .B \-b option is a list of block numbers; whenever any of the named blocks turns up in a file, a diagnostic is produced. .PP .I Icheck is faster if the raw version of the special file is used, since it reads the i-list many blocks at a time. .SH FILES Default file systems vary with installation. .SH "SEE ALSO" fsck(8), dcheck(8), ncheck(8), filsys(5), clri(8) .SH DIAGNOSTICS For duplicate blocks and bad blocks (whichof Standards DES algorithm, but modified in 4096 different ways. Using the input key as key, a constant string is fed into the machine and recirculated a number of times. The 64 bits that come out are distributed into the 66 useful key bits in the result. .PP .I Makekey is intended for programs that perform encryption (e.g. .I ed and .IR crypt (1)). Usually its input and output will be pipes. .SH SEE ALSO crypt(1), ed(1)  lie outside the file system) .I icheck announces the difficulty, the i-number, and the kind of block involved. If a read error is encountered, the block number of the bad block is printed and .I icheck considers it to contain 0. `Bad freeblock' means that a block number outside the available space was encountered in the free list. `\fIn\fR dups in free' means that .IR n "" blocks were found in the free list which duplicate blocks either in some file or in the earlier part of the free list. .SH BUGS Since .I icheck is inherently two-pass in nature, extraneous diagnostics may be produced if applied to active file systems. .PP It believes even preposterous super-blocks and consequently can get core images. .PP The system should be fixed so that the reboot after fixing the root file system is not necessary. .TH NCHECK 1M .SH NAME ncheck \- generate names from i-numbers .SH SYNOPSIS .B ncheck [ .B \-i numbers ] [ .B \-a ] [ .B \-s ] [ filesystem ] .SH DESCRIPTION .I Ncheck with no argument generates a pathname vs. i-number list of all files on a set of default file systems. Names of directory files are followed by `/\fB.\fR'. The .B \-i option reduces the report to only those files whose i-numbers follow. The .B \-a option allows printing of the names .RB ` . ' and .RB ` .. ', which are ordinarily suppressed. suppressed. The .B \-s option reduces the report to special files and files with set-user-ID mode; it is intended to discover concealed violations of security policy. .PP A file system may be specified. .PP The report is in no useful order, and probably should be sorted. .SH "SEE ALSO" dcheck(1), icheck(1), sort(1) .SH DIAGNOSTICS When the filesystem structure is improper, `??' denotes the `parent' of a parentless file and a pathname beginning with `...' denotes a loop. .TH MAKEKEY 8 .SH NAME makekey \- generate encryption key .SH SYNOPSIS .B /usr/lib/makekey .SH DESCRIPTION .I Makekey improves the usefulness of encryption schemes depending on a key by increasing the amount of time required to search the key space. It reads 10 bytes from its standard input, and writes 13 bytes on its standard output. The output depends on the input in a way intended to be difficult to compute (i.e. to require a substantial fraction of a second). .PP The first eight input bytes (the .IR "input key" ) can be arbitrary ASCII characters. The last two (the .IR salt ) are best chosen from the set of digits, upper- and lower-case letters, and `.' and `/'. The salt characters are repeated as the first two characters of the output. The remaining 11 output characters are chosen from the same set as the salt and constitute the .I "output key." .PP The transformation performed is essentially the following: the salt is used to select one of 4096 cryptographic machines all based on the National Bureau A.P..sccsfile.5er. .sp 1 .nf .ta \w'#define 'u +\w'FSTABARG(p) 'u \w'#define 'u+\w'char\ \ 'u+\w'fs_spec[FSNMLG]; 'u #define FSTAB "/etc/fstab" #define FSNMLG 16 #define FSTABFMT "%16s:%16s:%2s:%d:%d\en" #define FSTABARG(p) (p)\->fs_spec, (p)\->fs_file, \e (p)\->fs_type, &(p)\->fs_freq, &(p)\->fs_passno #define FSTABNARGS 5 #define FSTAB_RW "rw" /* read write device */ #define FSTAB_RO "ro" /* read only device */ #define FSTAB_SW "sw" /* swap device */ #define FSTAB_XX "xx" /* ignore totally */ .ta \w'#define 'u +\w'char\ \ 'u +\w'fs_spec[FSNMLG]; 'u struct fstab { char fs_spec[FSNMLG]; /* block special device name */ char fs_file[FSNMLG]; /* file system path prefix */ char fs_type[3]; /* rw,ro,sw or xx */ int fs_freq; /* dump frequency, in days */ int fs_passno; /* pass number on parallel dump */ }; .fi .PP The proper way to read records from .I /etc/fstab is to use the routines getfsent(), getfsspec() or getfsfile(). .SH FILES /etc/fstab .SH SEE ALSO getfsent(3) .TH FSTAB 5 "Berkeley 4.1 Standard Distribution" .UC 4 .SH NAME fstab \- static information about the filesystems .SH SYNOPSIS .B #include .SH DESCRIPTION The file .I /etc/fstab contains descriptive information about the various file systems. .I /etc/fstab is only .I read by programs, and not written; it is the duty of the system administrator to properly create and maintain this file. .PP These programs use .I /etc/fstab: .I dump, .I mount, .I umount, .I swapon, .I fsck and .I df. The order of records in .I /etc/fstab is important, for both .I fsck, .I mount, and .I umount sequentially iterate through .I /etc/fstab doing their thing. .PP The special file name is the .B block special file name, and not the character special file name. If a program needs the character special file name, the program must create it by appending a ``r'' after the last ``/'' in the special file name. .PP If .I fs_type is ``rw'' or ``ro'' then the file system whose name is given in the .I fs_file field is normally moun.P..me.7ms.7ted read-write or read-only on the specified special file. The .I fs_freq field is used for these file systems by the .IR dump (8) command to determine which file systems need to be dumped. The .I fs_passno field is used by the .IR fsck (8) program to determine the order in which file system checks are done at reboot time. The root file system should be specified with a .I fs_passno of 1, and other file systems should have larger numbers. File systems within a drive should have distinct numbers, but file systems on different drives can be checked on the same pass to utilize parallelism available in the hardware. .PP If .I fs_type is ``sw'' then the special file is made avaiable as a piece of swap space by the .IR swapon (8) command at the end of the system reboot procedure. The fields other than .I fs_spec and .I fs_type are not used in this case. .PP .I Fs_type may be specified as ``xx'' to cause an entry to be ignored. This is useful to show disk partitions which are currently not used but will be used latB.hc % .TH ME 7 11/16/79 .UC .SH NAME me \- macros for formatting papers .SH SYNOPSIS .B "nroff \-me" [ options ] file ... .br .B "troff \-me" [ options ] file ... .SH DESCRIPTION This package of .I nroff and .I troff macro definitions provides a canned formatting facility for tech%nical papers in various formats. When producing 2-column output on a terminal, filter the output through .IR col (1). .PP The macro requests are defined below. Many .I nroff and .I troff requests are unsafe in conjunction with this package, however these requests may be used with impunity after the first .pp: .nf .IP .ta \w'.sz +n 'u \&.bp begin new page \&.br break output line here \&.sp n insert n spacing lines \&.ls n (line spacing) n=1 single, n=2 double space \&.na no alignment of right margin \&.ce n center next n lines \&.ul n underline next n lines \&.sz +n add n to point size .fi .PP Output of the .I eqn, .I neqn, .I refer, and .IR tbl (1) preprocessors for equations and tables is acceptable as input. .SH FILES /usr/lut. .I A is the Author's name(s), .I N is the total number of pages. Must be given before the first initialization. .ti0 \&.b \fIx\fR no no Print .I x in boldface; if no argument switch to boldface. .ti 0 \&.ba \fI+n\fR 0 yes Augments the base indent by .I n. This indent is used to set the indent on regular text (like paragraphs). .ti0 \&.bc no yes Begin new column .ti0 \&.bi \fIx\fR no no Print .I x in bold italics (nofill only) .ti0 \&.bx \fIx\fR no no Print \fIx\fR in a box (nofill only). .ti 0 \&.ef \fI\'x\'y\'z\'\fR \'\'\'\' no Set even footer to x y z .ti 0 \&.eh \fI\'x\'y\'z\'\fR \'\'\'\' no Set even header to x y z .ti 0 \&.fo \fI\'x\'y\'z\'\fR \'\'\'\' no Set footer to x y z .ti 0 \&.hx - no Supress headers and footers on next page. .ti0 \&.he \fI\'x\'y\'z\'\fR \'\'\'\' no Set header to x y z .ti0 \&.hl - yes Draw a horizontal line .ti0 \&.i \fIx\fR no no Italicize .I x; if .I x missing, italic text follows. .ti0 \&.ip \fIx y\fR no yes Start indented paragraph, with hanging tag .IR x . Indentib/tmac/tmac.e .br /usr/lib/me/* .SH "SEE ALSO" eqn(1), troff(1), refer(1), tbl(1) .br \-me Reference Manual, Eric P. Allman .br Writing Papers with Nroff Using \-me .tr &. .SH REQUESTS In the following list, \*(lqinitialization\*(rq refers to the first .pp, .lp, .ip, .np, .sh, or .uh macro. This list is incomplete; see .I "The \-me Reference Manual" for interesting details. .PP .ta \w'.eh \'x\'y\'z\' 'u +\w'Initial 'u +\w'Cause 'u .br .di x \ka .br .di .in \nau .ti0 Request Initial Cause Explanation .ti0 Value Break .br .in \nau .ti0 \&.(c - yes Begin centered block .ti0 \&.(d - no Begin delayed text .ti0 \&.(f - no Begin footnote .ti0 \&.(l - yes Begin list .ti0 \&.(q - yes Begin major quote .ti0 \&.(x \fIx\fR - no Begin indexed item in index .I x .ti0 \&.(z - no Begin floating keep .ti0 \&.)c - yes End centered block .ti0 \&.)d - yes End delayed text .ti0 \&.)f - yes End footnote .ti0 \&.)l - yes End list .ti0 \&.)q - yes End major quote .ti0 \&.)x - yes End index item .ti0 \&.)z - yes End floating kation is .I y ens (default 5). .ti0 \&.lp yes yes Start left-blocked paragraph. .ti 0 \&.lo - no Read in a file of local macros of the form .BI \&.* x. Must be given before initialization. .ti0 \&.np 1 yes Start numbered paragraph. .ti 0 \&.of \fI\'x\'y\'z\'\fR \'\'\'\' no Set odd footer to x y z .ti 0 \&.oh \fI\'x\'y\'z\'\fR \'\'\'\' no Set odd header to x y z .ti 0 \&.pd - yes Print delayed text. .ti0 \&.pp no yes Begin paragraph. First line indented. .ti0 \&.r yes no Roman text follows. .ti 0 \&.re - no Reset tabs to default values. .ti 0 \&.sc no no Read in a file of special characters and diacritical marks. Must be given before initialization. .ti0 \&.sh \fIn x\fR - yes Section head follows, font automatically bold. .I n is level of section, .I x is title of section. .ti 0 \&.sk no no Leave the next page blank. Only one page is remembered ahead. .ti 0 \&.sz \fI+n\fR 10p no Augment the point size by .I n points. .ti 0 \&.th no no Produce the paper in thesis format. Must be given before initialization.eep .ti 0 \&.++ \fIm H\fR - no Define paper section. .I m defines the part of the paper, and can be .B C (chapter), .B A (appendix), .B P (preliminary, e.g., abstract, table of contents, etc.), .B B (bibliography), .B RC (chapters renumbered from page one each chapter), or .B RA (appendix renumbered from page one). .ti 0 \&.+c \fIT\fR - yes Begin chapter (or appendix, etc., as set by .++). .I T is the chapter title. .ti0 \&.1c 1 yes One column format on a new page. .ti0 \&.2c 1 yes Two column format. .ti0 \&.EN - yes Space after equation produced by .I eqn or .IR neqn . .ti0 \&.EQ \fIx y\fR - yes Precede equation; break out and add space. Equation number is .IR y . The optional argument \fIx\fR may be .I I to indent equation (default), .I L to left-adjust the equation, or .I C to center the equation. .ti0 \&.TE - yes End table. .ti0 \&.TH - yes End heading section of table. .ti0 \&.TS \fIx\fR - yes Begin table; if \fIx\fR is .I H table has repeated heading. .ti 0 \&.ac \fIA N\fR - no Set up for ACM style outpB .ti 0 \&.tp no yes Begin title page. .ti0 \&.u \fIx\fR - no Underline argument (even in \fItroff\fR). (Nofill only). .ti0 \&.uh - yes Like .sh but unnumbered. .ti0 \&.xp \fIx\fR - no Print index .I x. f text pages, other pages, total pages, figures, tables, references. .ti0 .li .CT no yes Print `Copies to' and enter no-fill mode. .ti0 .li .DA \fIx\fR nroff no `Date line' at bottom of page is .IR x . Default is today. .ti0 .li .DE - yes End displayed text. Implies .KE. .ti0 .li .DS \fIx\fR no yes Start of displayed text, to appear verbatim line-by-line. .IR x "=I for indented display (default)," .IR x "=L for left-justified on the page," .IR x "=C for centered," .IR x "=B for make left-justified block, then center whole block." Implies .KS. .ti0 .li .EG no - Print document in BTL format for `Engineer's Notes.' Must be first. .ti0 .li .EN - yes Space after equation produced by .I eqn or .IR neqn . .ti0 .li .EQ \fIx y\fR - yes Precede equation; break out and add space. Equation number is .IR y . The optional argument \fIx\fR may be .I I to indent equation (default), .I L to left-adjust the equation, or .I C to center the equation. .ti0 .li .FE - yes End footnote. .ti0 .li .FS no no Start footnote. The note w.hc % .TH MS 7 .SH NAME ms \- macros for formatting manuscripts .SH SYNOPSIS .B "nroff \-ms" [ options ] file ... .br .B "troff \-ms" [ options ] file ... .SH DESCRIPTION This package of .I nroff and .I troff macro definitions provides a canned formatting .li facility for tech%nical papers in various formats. When producing 2-column output on a terminal, filter the output through .IR col (1). .PP The macro requests are defined below. Many .I nroff and .I troff requests are unsafe in conjunction with this package, however these requests may be used with impunity after the first .PP: .IP .ta \w'.sp n 'u .li .bp begin new page .nf .li .br break output line here .li .sp n insert n spacing lines .li .ls n (line spacing) n=1 single, n=2 double space .li .na no alignment of right margin .fi .PP Output of the .I eqn, .I neqn, .I refer, and .IR tbl (1) preprocessors for equations and tables is acceptable as input. .SH FILES /usr/lib/tmac/tmac.s .SH "SEE ALSO" eqn(1), troff(1), refer(1), tbl(1) .tr &. .SH REQUESTill be moved to the bottom of the page. .ti0 .li .HO - no `Bell Laboratories, Holmdel, New Jersey 07733'. .ti0 .li .I \fIx\fR no no Italicize \fIx\fR; if \fIx\fR missing, italic text follows. .ti0 .li .IH no no `Bell Laboratories, Naperville, Illinois 60540' .ti0 .li .IM no no Print document in BTL format for an internal memorandum. Must be first. .ti0 .li .IP \fIx y\fR no yes Start indented paragraph, with hanging tag .IR x . Indentation is .IR y "" ens (default 5). .ti0 .li .KE - yes End keep. Put kept text on next page if not enough room. .ti0 .li .KF no yes Start floating keep. If the kept text must be moved to the next page, float later text back to this page. .ti0 .li .KS no yes Start keeping following text. .ti0 .li .LG no no Make letters larger. .ti0 .li .LP yes yes Start left-blocked paragraph. .ti0 .li .MF - - Print document in BTL format for `Memorandum for File.' Must be first. .ti0 .li .MH - no `Bell Laboratories, Murray Hill, New Jersey 07974'. .ti0 .li .MR - - Print document in BTL format forS .ta \w'..ND \fIdate\fR 'u +\w'Initial 'u +\w'Cause 'u .br .di x \ka .br .di .in \nau .ti0 Request Initial Cause Explanation .ti0 Value Break .br .in \nau .ti0 .li .1C yes yes One column format on a new page. .ti0 .li .2C no yes Two column format. .ti0 .li .AB no yes Begin abstract. .ti0 .li .AE - yes End abstract. .ti0 .li .AI no yes Author's institution follows. Suppressed in TM. .ti0 .li .AT no yes Print `Attached' and turn off line filling. .ti0 .li .AU \fIx y\fR no yes Author's name follows. .IR x " is location and " "y\fR is" extension, ignored except in TM. .ti0 .li .B \fIx\fR no no Print \fIx\fR in boldface; if no argument switch to boldface. .ti 0 .li .B1 no yes Begin text to be enclosed in a box. .ti0 .li .B2 no yes End text to be boxed & print it. .ti0 .li .BT date no Bottom title, automatically invoked at foot of page. May be redefined. .ti0 .li .BX \fIx\fR no no Print \fIx\fR in a box. .ti0 .li .CS \fIx...\fR - yes Cover sheet info if TM format, suppressed otherwise. Arguments are number oC `Memorandum for Record.' Must be first. .ti0 .li .ND \fIdate\fR troff no Use date supplied (if any) only in special BTL format positions; omit from page footer. .ti0 .li .NH \fIn\fR - yes Same as .SH, with section number supplied automatically. Numbers are multilevel, like 1.2.3, where .IR n "" tells what level is wanted (default is 1). .ti0 .li .NL yes no Make letters normal size. .ti0 .li .OK - yes `Other keywords' for TM cover sheet follow. .ti0 .li .PP no yes Begin paragraph. First line indented. .ti0 .li .PT pg # - Page title, automatically invoked at top of page. May be redefined. .ti0 .li .PY - no `Bell Laboratories, Piscataway, New Jersey 08854' .ti0 .li .QE - yes End quoted (indented and shorter) material. .ti0 .li .QP - yes Begin single paragraph which is indented and shorter. .ti0 .li .QS - yes Begin quoted (indented and shorter) material. .ti0 .li .R yes no Roman text follows. .ti0 .li .RE - yes End relative indent level. .ti0 .li .RP no - Cover sheet and first page for released paper. Must prec DEVELOPMENT UTILITIES vol 2 of 3 Release Version: 1.0 FSC #1000807-01 rev 1 Production Release: 22 Dec 82 Upgraded Thu Apr 12 17:23:47 EST 1984 ede other requests. .ti0 .li .RS - yes Start level of relative indentation. Following .IP's are measured from current indentation. .ti0 .li .SG \fIx\fR no yes Insert signature(s) of author(s), ignored except in TM. .IR x " is the reference line (initials of author and typist)." .ti0 .li .SH - yes Section head follows, font automatically bold. .ti0 .li .SM no no Make letters smaller. .ti0 .li .TA \fIx\fR... 5... no Set tabs in ens. Default is 5 10 15 ... .ti0 .li .TE - yes End table. .ti0 .li .TH - yes End heading section of table. .ti0 .li .TL no yes Title follows. .ti0 .li .TM \fIx\fR... no - Print document in BTL technical memorandum format. Arguments are TM number, (quoted list of) case number(s), and file number. Must precede other requests. .ti0 .li .TR \fIx\fR - - Print in BTL technical report format; report number is \fIx\fR. Must be first. .ti0 .li .TS \fIx\fR - yes Begin table; if \fIx\fR is .I H table has repeated heading. .ti0 .li .UL \fIx\fR - no Underline argument (even in troff). .ti0 .li .UX -X'ۡ) +},O9qR*eụt;_?>a a(q(G2]cI޴ kUA^YaBEg no `UNIX'; first time used, add footnote `UNIX is a trademark of Bell Laboratories.' .ti0 .li .WH - no `Bell Laboratories, Whippany, New Jersey 07981'. .tr && CT y{v qoo,<Np>Laj'Cs0i^*jSo\Lv]Cs0",z' +}uKDDEEF2FGGHHIIJJK2     KLLMMNNOO