!Backup!BackaL: `aD>3!Help / where is the current level and is the current date. The Obey file "Restore" in the application directory contains some sample instructions for restoring directories from a tar backup. See the comments in that file. It sets the current directory to a subdirectory of the application directory called "Work". The Tar and Compress executables should be installed somewhere on your Run$Path or you can create aliases for them with commands like: Set Alias$Tar Run .Tar %%*0 This program is Copyright 1992 Denis Howe and may be distributed freely provided nothing is charged for it and this copyright notice is retained. Please let me know if you receive a copy of this program. Tar on the Archimedes is Copyright 1991 Frank Lancaster. Denis Howe 48 Anson Rd, London NW2 3UU +44 (81) 450 9448 !Run Run .!RunImage !RunImage L#? Dp ; > !RunImage for !Backup Copyright Denis Howe 1992 6 You may copy this program freely as long as this 5 notice is retained and you don't charge for it.  ? 0.00 16-Sep-1991 Written by Denis Howe 6 1.01 13-Feb-1992 Fixed poll loop OpenWindow call + 1.02 01-Jun-1992 Added Root$ variable ? 1.03 20-Dec-1992 Set list filetype to text. Specify file > sys for archive. Add ArcDev$ variable.   Error0 2Root$="adfs::4.$" : Directory to back up RootLen%=(Root$)+2 9ArcDev$="adfs::0.$" : Where to write the back-up.   Templates file: LevelWH%=99 !prev_date_ih = 0 : indirect prev_level_ih = 1 !this_date_ih = 2 : indirect this_level_ih = 3 ok_ih = 4  TaskName$="Backup" buflen%=512:datelen%=50 ( buf% buflen%, ind% 100, indend% -1 = date% datelen%, prevdate% 5, now% 5, Hex% 17, Caret% 24 $Hex%="0123456789ABCDEF" LF=10:CR=13:ESC=27 2ș "OS_SWINumberFromString",,"OS_GBPB" GBPB% Kș "OS_SWINumberFromString",,"OS_ConvertStandardDateAndTime" DateStr%  !"Dir$=VarVal("Obey$Dir") + "." ">Dates$=Dir$+"Dates" : Dates of previous backups #4List$=Dir$+"List" : Files to backup $9Record$=Dir$+"Record" : New date file record %DLabelLeaf$="!!!Label" : First file to backup (leafname) &4Label$=Root$+"."+LabelLeaf$ : Label file path 'Templates$=Dir$+"Templates" ( )Level$="?" *4?now%=3:ș "OS_Word",14,now% : Get current time + ,3ș "Wimp_Initialise", 200, &4B534154, TaskName$ - Error .0 Exists(List$) Exists(Label$) Existing / GetLevel 0ȕ 18 ș "Wimp_Poll", 1<<0 3<<4 3<<1, buf% reason% 2 Ȏ reason% 3$ 2:ș "Wimp_OpenWindow",,buf% 4( 3:Quit : Close window => abort 5 6: Click 64 buf%!12=LevelWH% buf%!16=ok_ih GotLevel 7 8: Key 8 Ȏ buf%!24 9 CR:GotLevel : ESC:Quit ;& :ș "Wimp_ProcessKey",buf%!24 < =" 17,18,19: buf%!16=0 Quit > ? @ A B Exists(F$) C F%:F%=(F$) D F%>0 #F% E =F%>0 F G H1 Existing : Use existing list and label I K%,F%:F%=(Label$) J K4 Read level from last char of 2nd line of label Lz$=#F% : skip 1st line MLevel$=¾#F%) N #F% O : P-!buf%=0:$(buf%+4)="Use existing list?"+0 Q5ș "Wimp_ReportError",buf%,%10011,TaskName$ ,K% R Ȏ K% S$ 0:Quit : No button click T 1:Write : OK U : 2 = Cancel returns V W X Y GetLevel Z F% [5Level$="":GetRec(Level$, prevdate%) : Uses buf% \&ș "Wimp_OpenTemplate",,Templates$ ]$date%="level" ^Iș "Wimp_LoadTemplate",,buf%+4,ind%,indend%,-1,date%,0 ,,ind%,,,,F% _ș "Wimp_CloseTemplate" `# F%=0 0,"Template not found" a Level$="" b Level$="0" c. $(buf%!(4+88+32*prev_date_ih+20))="None" d* $(buf%+4+88+32*prev_level_ih+20)="-" e f8 $(buf%!(4+88+32*prev_date_ih+20))=Date(prevdate%) g- $(buf%+4+88+32*prev_level_ih+20)=Level$ h i1$(buf%!(4+88+32*this_date_ih+20))=Date(now%) j+$(buf%+4+88+32*this_level_ih+20)=Level$ kbuf%!28=-1 l-ș "Wimp_CreateWindow",,buf%+4 LevelWH% mbuf%!0=LevelWH% nș "Wimp_OpenWindow",,buf% o&ș "Wimp_GetCaretPosition",,Caret% pDș "Wimp_SetCaretPosition",LevelWH%,this_level_ih,,,-1,(Level$) q r s t GotLevel u1buf%!0=LevelWH%:ș "Wimp_GetWindowInfo",,buf% v+Level$=$(buf%+4+88+32*this_level_ih+20) wGetRec(Level$, prevdate%) xMakeRec(Level$) y MkLabel z MkList { Write | } ~  MkLabel Label% Label%=(Label$)  #Label%,"Dump "+Root$  #Label%,"Level "+Level$ ' #Label%,"From "+Date(prevdate%) " #Label%,"To "+Date(now%) #Label%    MkList List%  %ș "Wimp_CommandWindow",TaskName$ 26: ' "Creating list for level ";Level$ 2 "From ";Date(prevdate%)'"To ";Date(now%) List%=(List$)  #List%:Error . #List%,".c" : Create archive ( #List%,".z" : Compress 2 #List%,".M" : Multi-disk archive 2 #List%,".v" : List files written 5 #List%,"-C" : Root of files in list  #List%,Root$ 3 Level$="0" #List%, "*" Dir(Root$, List%)  #List%  "Settype "+List$+" Text"     MakeRec(Level$) ? Make a record for current backup to append to dates file. F%,I% F%=(Record$)  #F%, Level$: #F%, " " $ read CMOS clock to 5 byte buf.  I%=4 0 -1  #F%,Hex((now%?I%)>>4)  #F%,Hex((now%?I%))   #F%," "+Date(now%) #F%     GetRec( Level$, TP%) D Read dates file. Each line contains the Level (char "0".."9") L followed by a space followed by the time as 10 hex digits. Set 5 byte K time pointed to by TP% & Level$ to time and level of last backup at < 6 Level$. If Level$="" return last backup if any.   F%,I%,L$ !TP%=0:TP%?4=0 F%=(Dates$) F%  ȕ #F%  L$= #F% / #F%<>" " #0: 0,"Bad dates file" 4 I%=4 0 -1:buf%?I%=("&"+#F%+#F%):  comment$=#F% 7 Level$="" L$-1    After(t1%,t2%) = t1% & t2% point to 5 byte unsigned datestamps, lsb 1st. F t1% points to the file datestamp, t2% to the previous dump date. I To always backup unstamped files -> IF t1%?4=0 AND !t1%=0 THEN=TRUE I%:I%=4 #ȕ I%>0 t1%?I%=t2%?I%:I%-=1: =t1%?I%>t2%?I%   . Dir(D$,List%) : D$ has no trailing "." F$,G$,P%,Offset%:Offset%=0 ȕ GetEntry(D$,Offset%) ) P%=buf%+29:ȕ ?P%>32:P%+=1::?P%=13  F$=D$+"."+$(buf%+29) ! PRINT F$;" type ";buf%!16  Ȏ buf%!16  1 : file - check date & After(buf%+24, prevdate%) 0 G$=F$,RootLen%) : Strip "adfs::4.$." $ G$;50,);Date(buf%+24)  #List%, G$  . 2 : recurse on directory (reuses buf)  Dir(F$, List%)   > 0,"Unknown object type: "+(buf%!16)+" for <"+F$+">"         Task(Cmd$)   Next%,Free%  +ș "Wimp_SlotSize",-1,-1 ,Next%,Free%  5ș "Wimp_SlotSize",-1,Next%+Free% : Set next -ș "Wimp_StartTask",Cmd$+70-(Cmd$)," ") Gș "Wimp_SlotSize",-1,Next% : Restore old next slot size "=VarVal("Sys$ReturnCode")="0"   6 VarVal(VarName$) : Variable name without "< >"  L% 8ș "XOS_ReadVarVal",VarName$,buf%,buflen%,0,3 ,,L%  L%<0 L%=0 buf%?L%=13  =$buf%    Today  P% Eș "OS_ConvertDateAndTime",now%,buf%,buflen%,"%DY%MN%YR"+0 ,P%  ?P%=CR  =$buf%   ! " Wipe(Spec$, Confirm%) # Flags$ $ % Confirm% &6 Errors to cmd window, request confirm, verbose '! $buf%="Other files on disk" (" ș "Wimp_CommandWindow",buf% ) Flags$="CV" * +, Flags$="~C~V" : no confirm or verbose , - Don't display errors . / "Wipe "+Spec$+" "+Flags$ 0 1 2 3 Error0 4 $;" @ "+ 5Ș 6 7 8 Error 9%buf%!0=:$(buf%+4)=$+" ("+Þ+")" :*ș "Wimp_ReportError",buf%,1,TaskName$ ; =&108C2 Quit < = > ? Quit @ș "Wimp_CloseTemplate" A& Restore the caret if we have it. B$ș "Wimp_GetCaretPosition",,buf% Ch !buf%=LevelWH% ș "Wimp_SetCaretPosition",Caret%!0,Caret%!4,Caret%!8,Caret%!12,Caret%!16,Caret%!20 Dș "Wimp_CloseDown" E !Sprites L#Dp  D!backup, ~wwww 箪zꪪz zzwzzzzzzzzzzzz xzzwpzzzwzzzzzzUzwzzy UzwwwyZzwwwywwwwwzwwwwwwwywwwywwww zwwzwwCompress OL$ODqy c,@ QSK @0S\ekfU89es[:b-[ v[xam if[ ]1]...^=ś2ģ'̈ߞ}h|ܬx p܂yhihXc~D/nR8zVre D"ss3a$e}XA~֗obQ@taczM-Vb̘dVd[9HFbociEX{l~}Z-/coJ$eY K4<{zuo8x`&4={z3v֏8`ڈvbiv:tamrd4<yu[((X`J@I]ޏ=vbciw de1i*: 3yh }~?!=ib8}|2l*!vbaa3h x,iffu1c 3 gr2}nݐ2nb.z}(~n8< HG"w"Of`/##B)fHAwo]!k}FO!)"ϻP̷x"uOefH<w8,~l܋.kRxqT܋o^bv nCg Dk x3 h2gH؄GzZEyB:nv{{yyڏy gt-ܔBx~'d%ey'ږ_%_tsixd od ;swy3o ot Ao 3% ?)! 54nettrZ(|wB {9Վq[yn.x_ިl?"Z.}L$ExxX4y[ީ#9>1xv nR h}pbz҂_'ux[ީg9<n3\bߎnXb퍈YJ4ެ#<{zusx`%4#<{z uax`΁e~؟ц4MeP~οnoCs:mj*p*A[@EX|].jDG()qKjˏܗ~ڋe\ vxXod% htdtd#ylno nacd 3Ũ=^KY B04XxwL=V|w7b4<Ś1vT4l ?{\@1{%{`@w>U@Fd,?wg}% ~dH|HwehH}xElہ}`|`~^(?@P @y)zH0"" r Ȍ u&HueLw4xk'%D;3D@[ ;M֎Ў%$d/+LT Uux||Uql 7dd4T|=bț^φKƒ~yݔ!\^Dyru&,|S9_4ј<1x`3lxdU߻rz*rd(+ny!~}Md<LJ:snoSTIB#% = =ϛO>Kl@ ()(9[)=jϛL K(4}i@A~jBDi%ID( u-D,)ŘGhԎ2D}dM,hF*{Lh~nu)qTeM`yuhqqne Tl&B" &'`Pk#!RB&B&>&Q`T W;m{Z JLy UybG{F*հs~}׈sLyf9e߅]K QgjTu;oj+ jUj%)M() E(1ڋ)M+ ()b(Ԁ@) ()y :(;j4uu;ojĪ,G OO-@-?B-BD-:̩CP O,`, @, ?,(D)0/=,mqma6To-[aCfCfCflT@Amhq'1m_Xn0VP<QwHxXw~ Xqơh$p=-(Da! d]T08(HVX ؙ)̕ق ƈĈ]X U,@l@%֜ڞJ`SYaZ\ދTii|UiDN)TviiiD>)ϠTii~`iˆL - <Ï%bb<+Pv tsG,ёb<+Pv t]F,r4޷lwֳbуb<+Pv s޵;,ofv__fta=śM"'̛%ch:}v߅Ƞc,dA m#i+i-ijpbtIdݕ꣰1`A0> &wϑP}q cd.Bnd+Iݕ ꣰19|ۑ cqpl}dL~i jhvo@jgm_UecH]EiGMebXKebd)ed&Dee&Bef&po\dei&ndo&souix ebydα1zB*D]~]؀ς}:v>܋B.:}v-ށe;}vsBc-cα1b倀죰1@|udξ?Ϸ&_v?5}DwEz~*]]:}vՄD.޿<%w׿~^Gk؁ςނ;}vsçD-b쌰α1}W{ab8LX0α1}W{ɝc8o3x0α1{2 0cmN飰1}0{,ɒ飰1}䙀,/bα1@ &@`"}9 w iF0i\|P⣰1>ׅ;?> QH݀GdoTdͼrpf_?=LϚK s(in*=L?Ŝ݉ <&箷6irps_?=TvK,2|n{زC@ް&B~ ɮ l l`+gDr ezese#dA~l T,hA}WT  lw,<| cFط<eEWf[SQ` }|FbB (Vh W g?pa,XTAa `  z=Jx "h|ޟ༺ڷ;Pl@cFi0iDDrdpMx: = ~wwwI >d=GRT=s;-|Z?RuN$DkI=?(Xt^޾Q@Ήފ*"~UDDLP!8bDPފ*);;G&eXt|p^&_ ly+-T"jK+ "K T"DkϹo%;6X ? Kp#Xt4FʚUD-@P HRڿ'P d糩j;;GMޒjt ً̯cNM|ٿ'ޒHxGwޒjpd}'gtXWPq(\Aq D 0f`JtJ*ugن X=M'e$^7uT׆1jD xWpXd2Poͪa eCU=Dwqgwu^<ޒZrkj>2qc W?nlD{"1v pXkd0L>Td&ʚ=ϛPɐ* \P$ټj@_= ̛ܧ̅"̠[,@- k<ff!Sbfaj1v &ȑًZR|;;̀;͏ʒ;E/ * VI< "ofl2(e2r 3)kcoŪft4od3e:c9&V=" U"U껞D\œ(,# U XVU!>(3VًQbw~k =ϛP*ًwˣ4 ϱ:_edel1alz#=ϛNυ`үv3Ţt:&P=:O,ut!jt:t Cub O/I r f4ekiltoc__'a'=ϛO}̧;W)jl|_i3ef8 pbH T|`lf<|{TxDl5K t} vWtt g4pW.\/Ғ̈́HdQvߍ;7=7x^PP Jt~;J/Z; J/t:g:0TgtgJwJ;LJ~ Tsv$7h ; zx^yA]ڙZ:MTdH*p> aW}va=%tZC \ѫR0کd4.dG.s>˱vύ;7=@h z0C@0 {S ݩZ:s:dZsC-OBY=ś&!̲uڋx+D@yd;Dlw5H b0-l<}6d8" J[I IUP"a(Q$f7Fixe_T.t=ϛLKM<ȅގy /, ۈ ۾x^+twaBiO.U=ś|*ww!FKu|kd_Aft4Tnr#=^?Ŝ9)"̸מ͂~ކ:%u|xmM[|bG pka!~:ӆu%|ًG +`8ח̂~ކ:%uG{&r"~A'~i#jח̂~ކ:%u{hAuAD҂ D`ז"ł~ކ:%uG{hm,yNz|c4t  , !ilay{bh Pܸ ހݾu ofc3worran_yN=ψK<-=$&~FnL4\ʈ4iFK뵟 /r Bea=^K"̟)d݈,@A?΂~ކ:%u0={xmM[eb)A >aC~:ӆu%"{ً.@@n`Ǖ!, L M\xAuGp3x,~:ӆu%zًAMAA]~eDEyҞmؕ̂~ކ:%uzـ2j~:ӆu%zً` m\؁Sł~ކ:%uAzPh{nπVjGp )Cyً++߿'$@Ad~HIA徖Vg |{u7F<kx.!D:ٵǻ肋,Hdz肋Hn?!yșcu,twܰPα ߍǁ%tP oa=ś3.'̹#؞͂~ކ:%uzmM[|b) 5GD-~:ӆu%yًi@MmxًZD\oam_g?=^K#̷i꣰ p~ކ:%uMy|bFG-~:ӆu%yً@]M+U+Md[dT5xًZG[v}o?a`=śd34A|dC b vbϗftς~ކ:%uhoyxb[tx~}:Pv ]yȶwًQ|bo,d 4*&X3p36F u3rDDeQD08< ZcqvlmL{ovehfYi_d[&C]EiGiXicdepo]ginosyouixi~o:ӆu%xً% l`tQwؾb|voϘpPP` dD|~:ӆu%xًMb@oߖEDM+@-'t?=_vbP=_݌6bhٰPα utP s =_ݎ =KًEb=y =_ݏ5 -5bh~B^&deA| YU! c޴cA]˅]m+UdJ=Oً$qM&۾toQsn*fc=L?Ŝ# }ssi??=LK m5i*sc=O?ŜD-d @w~ً~mزGE(wwx@n4hT_67cYSSTTcGTD ~e~-oiR $C@y"\T>~ݶd+-+t:@c^`gfj=|TdTM*s~tTs% @ B*qt~tGGu~TBubet`=ś&A!̓ cf!0Gw!e%W0/oo QvG|ۋ{=Tf'!bE QO|Z]/0oAlff_=ϛUKb}Z^Z5xY6gʭ*Y@~d(ހkde:ydE4P=ś ŀnmًaN% @lf__js=ϛZȜK ̧Ycnqp*< &}Pn&uf,W.Rn__k)~݀@yc mz+*z e"n+ n=!m ~RZ=[ۋSj%& nP0{Zz{ GgEy۸KE.ʯ,_n?l=ϛ\KYf˅Og~Ow'n ,6ɟfm)˿fǀiVWw*)n_k"+gʃ .\ ~m'M̀[ӆn%~jًe@y݀@we%W*)ހn[jrR-?ًfe2@y݀n@xO^eb؀%W)*nZރ$^{^,)^! @ OO{܋{=_h'(N])*n'@QfV)QׂnUnZn2bl_=ϛP KMwb~}jdsf $=ϛ[K~,3b{|Bjgxً&٘̕xNUszW6 vFPG-)Z`a "UaRA 7y*{~;~7$Mmt.$o.&p#p"oerf!=ϛ`ϘK!&ؗ#riwimyv0Ymցbfobt9g>yۋM |ZSq{SP"~{ Rـ~4wDo= gq -dzkF,d_8=ϛXDKn B c^͡e Uv2T_lOs_ne(gԓ=ϛX&K ̈g}][p  T >f !,h]\wldGclmTL[Tdt$_#=ϛ]K!&̣4 ւQ  ~ܴlZOUjPU$KIPX>(yY#yyBe0 yKyy4e(X"=x&e n/ :td&_t=ϛZϞKDҗAc}ѓlTTTTLT >LLߏT ƀNl0g#0*f}lTDžXү:*TZ)RXndLy Ka ndylCTKۂݖD;qdm 0B _c!Q"FFn |`x/ CsK~lFyFm !RIVXDLUUXEqLe-oCgquڂeZK |}Mv@ 2Gv%?^xWC^U\D6`48?VAfC+{;n_:U=ś\4Td}5k i vփuHً}u5xb:nz3^z3^[dLT_=ϛ_πK!ʔ*k]qwF F [m)PmuPBA m۲Pؔo/޻ DF@Moen@~;?gbN|@o GO)?Ad?M z8{ oMt`=ś p v9D $jpX ~o&k&bցw`@ҁۋkZMod`=ś .̘2[f?,lHST~EI]TS< yoiiA5xٕߐ6KݔYo$$Kp ¶ۃozx6AuԂ*$ jwt@f܋˾k-*݋ovr $=ϛMςK jpD UimX=C,lo E .& ًee)[plh&๠VtKl emvng=ϛUBKP׺q^)PPNr+,ρxPSkde*=ϛP(KOr}[m}jcUm4#U$U0$U-2!-ho'#U#iUm%U!>R~vZВSj?oCnr_d2l\s]3 =ϛYذK~f|PL:Tq)0T4LC0Tqء*Y闁ǟ}pqpR_D9_=śd-2DBCA I4&Ӆ bte mc @X㿾{``_d_xd@ E$]~G-F}}8þur- (\}:/9n0U1<~i1LwjA"eb aB1-Pv> ~4c AMr&nR/A/M2F4MU1P~^2Rx~2t+Kt$ o"ejPaz+4$dm,JG]\i ~"\]Gza]FDGbo pþh-څX|oq Zu]#ب z]O7y&e-VbScbދ l\\WbSc@{?U|𻋐ݗ T\}|닐ݾ\S AdB~'nacet4f %2r O/I1tcerpdwOyGv!nD{)D-GyneœdѠnlPr{`\lnf z fʂm+~Odq:uq el1;$Rb`E(ƪGD ᕜyeu=oOlo3r O/aNee 4%go# ph#q%%˓kk_w3'`=ś,'UC~? `` _`K_(b8 p% )=#bVt"soP At#ed9-i mp2O][A1`_DjyV;`a!Uci47=B`$y|Z(^{Y^ (k 7G 5>yk nAťdS8R%Z1[?:d%grA  >- [-Mbً-zZ:{[merahs1rij3ڰԪns:4ofy?Ӛٰ;ˉue$p{Ce}̾%|Odr3 ̾}+Ԫs&rc9$cu m3p*;+-eod*=ϛM K-eTiflt:lt nui08.%esa__tres=ϛYK=Yߋl3t8raCnf,:&4sl3%i#sP=św::-ww:":-wٴ߷U,yjNr 4=" EQ3m3a;D :rG+ES3 s2nC 5npr3GISE(-N2llg3mun s ot reblangi!ar ro1("rJnrred!dh% )o1ssa s aicoassem!-rrep=ϛPϒK)N|"P4v >4;;ELE7l?oDA U O0DFM oDԧ<DD6TU=MhKýUToFˬKݗ6B8@!.$<Q%[, U/(.<[ԿA08t؏B.@_8!$U %\,յ(/<.պ0tB8@!.$4Q%U, U/(.<[ҿ͈0ˏtlo6ʨ=GC<6e6e0OMM mDJا<D1A6LVWKTVWGko,m6KM8ُBH_,d_% U$Uµ7+/<#0tB8Hd ,U$%$U7#/+<[#]M0k8t؏BH_,d_% U$U#U7+/<#0faf?`Tπہ܈+쿂܀'ɭA>TUֈԈۏ׏яۏۄրtLj׽?DAJ~dxA1ƕAVS4yWI3ODc=ϛN|K ڏiz(Ą=&ϓu߄҈ltHtO|t_tODt<՞Vrs+u#V),20=.Ut˶ȼ q V?@dJu  D,<՞Vrs+u#Vz,20=.Ut˶ȼ qV?@dJuy !r<,VwLs+M04.ۊ<岽U6S2Q Ud?@T=LK= u~=iϛLK=iuL=śԌ=i uL=ś<==iϛLKkp)˲du=iϛOԪKqk)du=jϛLK:B̌~݌? =_)u=iϛOϬKC;?= juT=ś \`9lRr_ys~!Q>-H0Uh6^Ȁa ƅ*(f(DiE\hU UcJm轈<@;ߝw >&L$d6̬ޭ~~Pû Dg ڴ{]~gwg99~Lw~-o J~|Z7@ kଯ$P  f50| @@$d(m,m0mQmb(`$Kn#a'\1ȗώh֞d}2wtd=T̛[ . {V4#4aX UK2K#cޣ,*ootxTI_`VI0?9cI0?0I 80 I;.X |6|-8IN80 I;(pX<6<,8pN9I J0IeӰ/0TKG ""-0wwE>/e2PQ;e-zLxAs~Uqrn+XL wa†pD8c`xFv8c`WZ)E<;\)5J) A)J4;A)J; yKLx4l6udG:4@pZ0Ȝ"4:UG/e}8TVG`AXa|R)4(ɻ*TCq~(ɷ!=nT((pAvJpyKzdDCL[B%ջǨT.ieD5{TTT 9=\x'xf#gbox9AlVu8Լ(͌Phmbh'#W 5eh9Al~ܰ?Լ`hJ5 xg:# e(o1lA+AhP}v 6EL & " &dfUXR,#(vmv̇@ڜJE,)@Q4mRT-d+-P q0Aj#$0f@ y~Ew+ދ򸟴+wYs^?",ܧ{qJ!UJE@IQ,Y Xw2Tva U+TZz K X'ׅbu!KNwoٯ5#bTbTbTbTbT bTbT ~}|{zyxw DTɰ,⻉抻{-Tˬ#Z1ɫ$bbbbb bb ~}|{zyxw &DT°,_𛺆⻉抻{-:M:T3CVgnD8vtpu0LA}"HV`!JY2@QLYC1QSAٱ&3%= J@@@AA@JMMMssMN!ؙؙMaV$nnnnC.2_! { !"$ 3,0+*)(1?>=<8=TSNLJIA@]aUZ3srmlh~}|{tFY~ADкAY UQkBGT:XAWRQPAe`3yvqpon[SDA|jD*!@" !"!     $  J_]aq]\^b^]h2\2*^<]`,\|Tیlo  ԛkkϾ z\m_C|`>@ $g_o_N{ȯ8N6?@*пh*J\]^T            nnIc  \n3 k||c*clkodF >,kxSП?xl|q*@*]^T       >"   2 s889 Fݜ\\\\\\\Q d 7ZaI18x@+^T %%#ʍ"AH@@CD,. TB I_ {to]? ˾9쭋qe`^$Bi c di-Ƕ- `U- ^%IfP^q! Dj ԡleb` V  S_v{!a _+$]^^[2cS ]߻/O0(^W  >C)\kT   l_0oSD=;: _~    )OL0 \ \ϯOи\\`] ^`t{ll tkl\}zί?ll•GϬ  \^  \v\\\\\\~   |llja! (w``3 \\`*\p^]*]*]*]J_ ]D\^I]*]+c  ]^A],])_J_ kkd*ck kkkkk_ht k k l|k| 0+\kk|pl)\`b\``c)㯮`' :g:Jav?2c6df lϯP/\X Z߳P \e]Q\\^ kll g"^ll^l"kk{h"^ޱ Aߌ|g\tf`Nl{kkpjx k  |zk`" _¾>  ( ``^ &>  A9_d."4 *J`o_]]~k   2" \d\^^p]!\f`g_g_ dbklkk|l| _;\_\^e_;\? ]jmall@Pй l|l|p|llllЌlв/",k4"\\"a_`:B*d&\l*\К|dg@.lO\kl{pB2{k\lk\TRBkdlklkokllZ]Lkk@*kkk>k\\k"k6l?kk܌kklkll\\kl\llk~^y\k{~||kk."kkN\DGl~gklll^cl Pl|_ ̶/O l0ð k("֯ , 8?*J]]Z*"\  +_h_*]]Z   H \y\] *lõ\*J\]^dT] d       /]|u^P 4^p>a8b0/\h7]]k%!lSall/l lo`` ol kPq@ho  4 )E .\ ^`6^b\Ys \a\]\c];ccbHPv*g]?J_0]\9( `P]?M]]st:*%]^/`(u*^b^c*\J] ^ _P^^:_K8{xqCBeyt]< 'E?jo\ #@]#gp 8:**^ f^_ag}]e\]]0J]]^ x]@Zᮏf v;a*\**\^d \\^`c]g|y=X # u   o# \yV ]_<g^E\]l5r\]?]^^\]]_\] \_F&!߮^Zb^:m¯@a@Ob̳,2clFѬhۮlɮ>n m\PTrpeonˮc`ndc߮sfmujp|P__{״\߰T!̯ d6i߮  mOu4`]&\]E\cC^]Eo^٧5 i\_nXw`C ]^\] d\\\] b\_]K \ \\\A]7f\`_d]^] ]Ԯ%~ faѮ%c o7^\^E]Ic\] _\]C^ta]c|-B\cK^]\\T\s^b]^_V \`__E^\\L]` P]Pa\H ]]aaqL_f\]S^]^]]`^]]R]fDgiIr le| @'^y#enhxwB 3"]_\u]h_f Sg$ gss]m\d_JlJgbJmήXWAJvP\ 0mmЯ2خ  "u  ̮by`\kJk@aUϨ$[ڮl]d^\pl]]]@Jab`hbEʯ sbɒ7]"}_]]@|y]]`@cp0*l3Hԅ U\[ݯ$" \ (fn^ d _o@*\*:]_\p\\*\]\`\\p]]\Z]`b`0\^P\\]fo>Y[*)J*]@]]] ;)\Y\\_1\Z\&*]]]]]]]]]_]~ F\xT _(] ^`\]. l?\           k**&::ym1gp \b\bpaP] ^ \]^\%\&>\\_ ]L\]!b`b_o4/*aZ]\^\]\x;(+]Q\\i\)]3\ ]Ab\^]_P]go@   \`*: ]^]Z\\p\\i\w:*]\`]nK  ;J\`] ):cd1pc_]^|]l \]]]]\\\^]^ mdc ] `?] \\p\\n^o] {p ]  ] _9\\Y\\l`9^P #Q]]g^3] ib^^pba*kP\:]b~`a]~d\^aZ\*J_     ")7 bb\`*e`]xtZn\*\:**\\J:*\p**\`:J:\\p\\ **Y+(]\`\  \***:*J]\*\J*\\**:** (\bH*\Z\pZ\,( H* (]:** (\*\`***ZZJ**1r9f \_P:\\p\^;9;^O;\*^`\*\] \]YJ^B7\9*Mg*_\^\__\] ^`]`/b a]*a Cbg]]\]]^'\ F_^]] ])]^_ :__i^^_a :{/} icdh m G \ b(\qrlV]c  q     ]ڮ  k\^ik~]h_\`:\`\^g\p\p:\j`Z_]w\]]gk\lllapflllpa^`Q /2aǮoley?,O? @ JoV` q P@ 0[) QQ T 00K00Q\Q00Q00\Q00T  @PMo@U H Z5`z0 SzASzzD@ zzzzL&2 SzQ0(SzzT0(P0( zzzz\0(] `I ]ʽ|Hrcc 3.10 Restore oL#oDpDir .Work | Tar will overwrite something in File$Path with the same name as an | extracted file. Unset File$Path | Replace FILES below with patterns matching directories you wish to | restore. They will be restored below the Work directory with the | pathname they had relative to $. Tar can't extract single files, only | directories. TAr xvf :0.* FILES Tarore L$Dq' :  SK @0S{'[717( ]oA19-vѶhHϗƨKX{ LyHxx lׄypx| d!(/ Oh(vP(P $njSBhJP $ni3!`hbKh Lԇr\Wv6zx ޷sĂ nNamYU % :rY_tbHE;hl ƧKpS%~όr1Pa2io?0P0mPaGP~)?͂r @ym*nraW`s%" :gniu"d.h@ŨKqp۾xU^h@ŨKn ר;xU^@hTtsU^h@ϿŨK&%u[hHϳŨKܻߌsk(bv% 3 hCϟŨKHѷkifI{ɀ` kY:Egmc]-[AAJp 3SIL[ EVIa[ ]TCL-[ ]11eliRe0:C.B c :sdna11a 3w1en aA/٪111rneppa ld3ntCf11/t1* 1:8istnecXa na<v*111 x 1yJa mon1O9 b :sno1anikcc=gdCSqKLB 1 mlCaeb 21 >.sety11NKEL e1mixa eOuChoMJesu oAX_:aAl D1 CRA  HI3rw/da1hn:morf 1IHCRA eldnam( EV-a=111 i i&1JrsAz dna srbv ore1n( skAFOE ylla1.L[ l1]TSI daeyJa~*11 RID C c1JogL4o:1 RID E 111 '.' 1 UXCieh4obs3Dr1'g F 111I o: 0 edgtlum(1emulov eof-E & s rN41- M 111mU;J i3u gnivi!111Od of ksa tmifnn'JIrw ro1war 1c Q 111 qSDtlaideA fi srucco rod , tpmaF:1o S 111paws snohw ni1htap !111T9pa s}t dednepmoi3=ah- CSIR11 SFN U 111X1_Je"JA onSm:tHsjD.iI111Zoc 14U trD'Z.'ehw 'Z-'cartnjelP tt esacod wtu49otrufFofnih.noirNiw I 1 on ekatopser1tilib1ad ro1sol e7tad se'ud aAwtEd'Q3@>~zQ }yQIJ$]QnoIJ 6Z-Ԍ>d.Qsmoced1ss!IJ > 1% < "2% tނ// ق//0y: /4KxP -}x PPw hCx0 Y׷ ht7 m h+xqnxs1xn Jo h(hh^YwY y evic|:;eo 'f'1Y]d'zCc ,goteg t'naoomem !Yo >4nc|:d \) "Y :erc y1radn nt\Jhn:ɲo d- % > 1% <2y f Cxn `'0pq yf cmH&&؀ &!ˆ&&&/"UB"P\v4Pvɔ vLmvv8g9l8g9i!ai&!ˀV:[k,Pc%QKhhl/Q9aChôۂ}͙ԡ _hQϧK;ôrF㠌=~l ؼ_Dc_OM;hlçKr`s Ȼ8Ǻh7h$rȻFw4 Dy|!F= f} 6ؼpں茼ǻ׺Ԍb .::\%@hnôuq ^Qh`ô_/f.n4y4G-/po lV !~/H4 Gϻ}[6{$Fq ɉ4?踟;VC˻nucThô۶ԵH]>Uohs Ynetr3 &2#$m 'oudj@ ~(:h@ N]pG AĀ HGE撹1޶ʼ^d*%tTh´}޾ٵ/rh긟@_H$ H  H ~`AU@-H H$ H$     $~˹E1Z":{Lx H_.E"⅀<H  _︟@8X@x/[#P<{^̛Xb r Hހy Hި y Pٺ؆<~u/}ǻp5ۥ*Khd4}ۻ뤈 %ȸnO퓿P폿Q틿%퇿O탿PQvp-mͷ Qa@hd{(Duہұ^h@K?~ wuqҡ^Wh, (ѱ/𸾂 H] m/ <@DUT ΦԚ d Ȇט3m4E6u#S (෥dU7r p7rCjh\Kq˒عVۼˣߌV`_O%# em!bhT=K m HOO00 r!K@ǢZ ˂TѸ LNiuuѸ iׇp,YdKY ?yrter  Hhpm}h~ Hyh0!T}P$~/[Dy/[ÐYH,熑$((G>5hCϧjqEIhCk؉Cl_HhP_v˶u~$ yٰH vnش`/Y'otce 6c yrA=! dr! *1hTϧ;sHj`PaAݸˢP *SpsPb3tn44%## cs!A-cmؼ 4ظڌYzeh cpxe redaeɼOC그{݌ A]uYucDneuqfo( ec)s*~ޱpG-d/Kh*E}$3xEڷaVYdjJ\tcepL{G"H H, H xaYêt:cneuqes hCKz, 'nZ_Kh07t)H2xPdvCn0 P $msidm0 oY( HP y H y Hn:ҘS)=hTϯKH ,9:wDV 埑6x H< z HT z{˯nȯh)Niwٜ nލ - nލ * nލ -8n~ H 瑔ݣֆI}?HYd :d no ata d% r eb lliw̹!netY_tb(n nލ *X x Hޠy~̓H|}mޔUhW f0h;ČiSnѽ:}!@h't:jґ Ҁ ^k`)$xB$`^@hP(t:j))k)tUxB `^@h t HD}[HL x H;)H04ƦxHP~Hm}^N)Ch$,̾t(z~H}zzߌ"xp}_Yirw e1Kh}4}6~ԧ$HǁY,sǧ}Ka@jh̒Kqݼ^H y rٙ!hOyKHg ce)fpuy;y [HbEgXxusUKbThVzb /[ހ3Rب\0 vhθ M>ﴠ U >۷gH E - ҂ :¾҂,QH kPm(n*!狞Ψ*[+dYe da~YoGeC eziMY= ez iPXHO -HDJH碆H;hlཧK@q|1 hYi@UuLjsؼ ޶ W`8Qh½[vH~ H ۷ì͂)x}ǞFgwI㠙' y /]۷8d@UZYYfni Zukwwd HS؎ Vܸbڴ̂h'/I~}7%IѷdpD,"Y>ZmLeiColo#ԍp (.:xCg}Ŷ87x H HxAE5Ea.ն{cCQֶ1,wkZѹ(wvgnLǟ̉ H(| A H޺pgЈ*%tL*H gJ{{̓ 2r3u ضef[dI H޺E~n}Ol[:r6A%=۷ϫCd ׷dīYZK0и9hta|3`nҫNjH  He㠊 ⷔGRH={ WųދH ⷠR[u⳹`$Aq%s%.D,=B9AlbE Z"Fru WH +.hۂW A#6DԲ@{Q K/P|Pn؟FLEX" c݌n/%bٜ pM]UH H H ָB :B҂+Q˷H ׷`4 ߌ7qdl3%GaK"%"˷ʷP طAw {PC 1{% b% 3 ,ssͪiKjjż$ԾMd C{򤇍 ]QCA H [prMvطoZYe$Jmoc t1tMdܴ { Hk۷ڌYdi GJa tod toeQepmuTV:hl b=8H~ |I\x0iԎՈ 0 k!y Go .fXñ en5϶_< [Ȼ.lo43"~:޼&mϼCyĐ|m ׄ(0,w$n}RFzfʕ$ט mFjBּ (ט@p - n?ԟ͂>ԈdKhλ\<~--ǞdEP|ddfŶ"P| ldƻT|tdfTXw֌|Θ "0z PnuTZP'd1%/ {l7% Ou%"ک `PfMҩӌ1a s%TM;hlKG?,xGcƈΗ>7SӪԈF -0 o!j m1d Ęآ z -ǂ沚׌ ި !ٹ[CF}fHx P (ޏۋ $*oݪsw۸rF HdpLHh &H H `n@8VH4 6Nny`r7 c%%Qh_)GDٶ.ph pG &rzZcu]ζ Wmc -GVrFmchTϧ;`s|0H~ AEaθxk ؇ -Pk`4~(/(澾!Gdi'y"  [iҏX 4 ҏ? A޸wp dUba$cc GYtonn-\ jgP∌Uu HPd踻u˸"ָ`jx:Mew7.l% ,x@t/yb d1O %%d2%( IJ)desͪW Hۥ,=ܻCی}rZYPLEH !Je3J ror黇ۂTCks,G|W,k ]ן"!8{ Ɋ!y1Ȉ@r  zA&P\ηd/2hKϧ":?d̼T<.+҈ 1 ">~! ڶԧYs fo tnepQ e@Do  Ҕs: v(Hh턹00_v $SEf.P@d&xdb q`/lKdKw`K!hKOh,fH,0Wv DX} ؜ݔDULM P]gokޗ 0!X0T!+  =PW'1@YuH\XZw\Y{LYxl^d^w`^~bhQ#Ko`\1Wd7%.^L%dP'TW@WX4~0LWA6 kO ќp™$le~|hf`fwchQK:u:jȋt+WB}KMԤ ,_cQhи: ;ds+`HF`ѣA} n H]_,8 cOH!XNL < toHhϘH^\/wXlxXnPw\~dL{Y8`Z~M` ь:9sfdaA e 0IcyQ!hTϧ:C?md[d/-HD茾mUv}~|3NJYU elbanu  neptѪۮ=]E4B /m/{H< Gڞ)ℐ2iVIP\x ޸M-xoֶ\ ޸AlpI ˴_߻x -1u۶ %޸)Tqm}\՝Y ѣ c:Btacot* Y:tu4dl uaf ! Y:clve:gundTdm!hOϿK PpK۠Hٙ o$֜}& ވr/./G"مbrTh풷  ؔ߂݂Z9 ޷ n ʶ}ʷo Եط n ϸͲQdIhCϧ:A?ly('Gtqa boa bo an5~n.ouFU  pU` 1 v@x_Li2'[}W`  m_od_b&ԚhLϹ֨Kqq5/Ɂl`zm :)q޶ӸɻZ،a&Ԛhvȓ֨K񆽍 ظrxawq ؜~!Cbniwer!hDw֨Kݶ/ظ'p/*hEg֨Km tesf_p/Bh[Z، }^at$hDI֨KmEؕf-@ն@ _ elithC/֨Km<֔ +xf-X{|ጏ Sn_ Nb+wPDkoxk[k ye eUTSU9] !#P\!,;! 8wALS q6ǖXMkFbQ- kK|w6<m}88" Vo[U UU^"a(,~$f7Fixe_!+ni_th@ըKǯȌڜDs/X ,O܌l"/ h  xeta^+Ihմ|0!F _`m__bil_AwodthQϋըK,}v$<*2& }l #P  A pPia8h@_ըK+n&n } !}vid!hFKըKl˭ϴ  le_OFh:մl _id_ft1ya3iT%ըKo˵:9rTgd e2GdUGXeofi ~>bp$|f3 o|k (W/pi0ko'dbu#x&'o$ ^/$ ~_00/ s%|xg0]Ȃ9/# 4ty T PE^l-W - ϵpqIddU.0ʀf+ &:f )ɜwRX/Hj.P v[a:ް[ްi s׬  f0)ɜwRX/Hj.P 4Ε<,>&RX/Hj޾:P RX/Hj޽l9P v[a:ް[ްiXȡ,XR/ݫHjCP -ryXR/ݼ[޼k*Ѹ (֬ .wRX/Hj|ޮ.P dfv__ftWhl%hpP nj ǻnЀm4 m#i+i-ipkRmݍ$ `At0C&fklbP}> G &m.5nm Rݍ$Vpbfl G&&>p ldLi ihjo@igm6UecQ3EfdbGMebXKebd)ed&Dee&Bef&p~o2dei&Sdn&do&stouix ebmd΀$PH5 7tL(ɭtPp n jMйP 5pP nj ǻ< uepP n j)|P 5c΀$倀l$3Jim~ζ2}混E# j2Q7U8HL tt(pP nj ǻ7P wPp ޷zkȠ uPp މnj |ۻ7P ˌ΀$KpINɚXW^BA980 ΀$KpINɘ^dXWcba9810 ΀$IC 6lmD$K̙6I,NɌ:d0$K̙N,@Ɓ,d΀${@& @{`q ɍk+bF6Nw|sJU$M񴌽 32 뷶ʻή^Qqf0d!mirpf_13i@ԨK g^ftn_@3i<*ְT^irps_13iHϟԨK,B|ǚwث63ް*5~ֹ wkXP/ݹ˒V@jm` +rWpsv_A PhpԴ˼oȋ5wp+4~޻ּXP/ݼVPjmb6iL C!sv yrarb R/0n8 [#]0991!c*h@7ԨKlϮn^cǫ:tin@h(ԄX^cǫ: g;hDԨK<&wVU ^cv_? @hԄ[|^UemithRӨKJݜJzmm0B)_r!Q~CF4ع56XLl/?C|#FmFm !n7"!d4XQXUb5X4RXe؆P`me*hDѨK rٙܨ_ c_m#$_(_#(_# @h}o $_#'_#)_#"b۶qn Ԍ qɒ$syS_oCnr_dB_bil_sysiRhNϕѨKfPX:Tq0T4XT.vLY֐ɣ Ȼa)_c9UhtѴm<7564?ˠy.h(:& ~3 ^{``gdgxm38$(~P-O}Uur - `[59nA`07!:& H]r&n\H5M 2V~:Mb  1^^~u8\l8h/A~h)Gh"(jnwn/4)d:,@P(\i"\(Pnwޙ(ͼOMP.^ $p񚻾 ޹kdh -X$|^ ޹Ud !qiuO^ بyO\ n-yQ =)>ͻ#d - kk"W =)~>@"b{2bĻݏ bd}󡄍뒙ݶdK4m5~'nac{e%t+4F 's%r O/I1Ț%pdw\Xv!]MEM-PnVm] IPN[nf fjPssimrdr gni1uq el1XR$ҷ`(ǎD )܌nusnud6p -)])pc"rBO A h?pR^n/$?!)^m? M!mD}Hq !?!1|&!iR_lanAHhdȸ0ض l`#<ԍ=Ϩ{ hZ TiB a*:pt![OƄHdQj\A==Eh^PP smSh Sg"xg S"h?*?0!*h*SkS kSg܆!Aj=\Y A h^mpN]_x?M!mͫ< =Ϩ{ aZ[T-zK% قqCBUήR0':!m;AϨ{ˀj\A==@Y0C@ ,oS řq?b?_mxxrts f*Nh д񻲕l/a'@8akH]jPo zic@i@ic;ci,ZB^¾TC4GpFFiϭpPo ziHH &AGʤcoP ziƶPo zicixTć` QoP ziƶAHP;,p Gp  // ޸m314nr>?^d4 nii}|WoD< WMA_g\[>Wg\>wJX2üyGCdBEHu퀁BH΀ۺdg*hWϻ%oP ziŶ :xWpⰍ)vMbܭJPo ziGWBTy:϶M]\q)dam_gT3iʹ{Z΀poP ziŶxWvPbܪPo ziGWĘҁ/=/TQP [q)dfnavxhVύͨKmzHK 5dr.E !).heoP ziGŶh! .öo۔P Pnj 5Ŷ𻶳[ضx Šmd*aB8"W3t\3\3J0*aMd<}/EDlqaoLmhjoBK"f[6k3dKldE&GdX&codieiydp&g3ki[dbLoddbm{dds&du&dx&dPo ziĸ%`Zö[ ފxdpDPH΀M`ъz}Po ziWض dxGMdG ն+2~'h1蓿Pֶvh1߶ὑH߾ݎCH΀西h1߶~1w 軶EK׈1ۖmh1߶5՗ <^mKG"m~;M ZH- ]! M>>HU9]/mQ~:"1軶$Oh W ޶ٶhdo7!wQf^8%3i@̨Kg^} s @3i^ms^S9%3iC˨K DY32.hUW `S~2}pHpW W@ g׶ yߙ}[} <[Xhhw$fx@?cT퓠/H\ +S<!B'f}JY!yͩpښl&e#hUlˇhh w ܒY+E)P: @qFJ iVk?D2( wt l׶QGwMLN*%~ܸfDMLP!DPMLN*)A;G5ewt_^&u pRr/-W"{N/ "N W"MDRҚrdo,;6X] F Wp'wt:כ?”mPMGP Qҷ P TT nsA;P MPܒal˯׶yXW ٷ <ܒH  xP2ܒbpm}xO6gXdPq7\M00 -P`M" tM "DPUwDM(n}$lSW!7ۭ%U$ DwVD w}_-dedښa!eCcIhRw`@~e^ ےq ԑS`iM2qr W?nlRz4"u1j~ p-`m w0MLVN*k>!m!hD6 0) \ Zٙ_x l&Uhׅ k ̽[eGp k!<fIf≛S≑i 1ַ ָظ,;¶q݊ȻĖ@Aә;),;@`/fњj8F QַZ < |㲑dliaf col(|e2r:)kcodf:>de:xc 9!Jh" U'"U* U!!Un(,# U gdU!E+Vض ۻІ`v hDς |)׶ ˛' v:_`del1etalvhBόP޳ Ą&td: xŪ!Dh@, u_t: ub O/I r reff1ekil8oc__"selahC}@W)_lwaoc_1ued8pRH!|P[#WKl!|!!!k! Mkkߠ! #ƀl&0gHŅ~0[. ou ! Ȍ@~:. !q)@>d ~ܴ$mI[a~ [+)mA;9kx72<,yL{r|Y DdM D x˴00D<b*+LkhTŭ+]*<˰pTݣ6 >4^.$<Q%U, Uz.[x- k>ɔ^.4_8$U [,Uz.ռ x->4^.$4Q%U, Uz.[]xX dXxW7<'y0;{qxqx |YMM Dhx˵ 0101A^<_,Z_% U$U#Uz+# xʔ><^Z ,U%$U+#z[#]x] k>^<_,Z_% U$U#Uz+# xeidAhegaA)Dhpď- ")̞Hػ'%8RG^0lm !P MA$e Vf2!0lko[+p:A~ʈR! W<fU2!02`}d}! A!߂쯭! B#;ǜbEb! F!<0bhnis!EhȨK0 뿁J'Fh}l}@܋_`D9BH : OD @pB_? >)tցX!ݏ߀!!ݏCCȔ8D׽dxAoƕJyyVS4A@WCcg1Bh0|%UHUޏB}}^PPODQ^A^hnatEh0Nˏ7%@܋_G;z ?mG1߁ڏ!A!C@p(ܔHXu~5\@\/@s@"Axmm~ds`쉶ltm|lkvmw~O~{B~m!lmݓcxmcsctcvw{!VrT}\m*/ d||\a MuRw! -HUr1nyS \~@ŗ((B ˷[UvS.\≟U@轈a/12hmȤɰ|~wǷZ&\ @یk-\-\ ' L~"bS|r U Ɇ$ɼk׸ ^<\ހY|/ 麀"Ӡ Ǘ <:-X!!>!`;د$|;>0:qja-C$ ;w,ɲm:ja$?C;x1Ϯm@ "$e,!f1 P a*5cl] @| Q$Zs@Qh(,֪0`$n#b(\T[؝ mݺ%gm!w hl# >U44b riˌUc#6d,8=!?*\k#`=@3#=q=# ċPߣ=# u߃|Y|P Plq=߳=# pu߃h|ȓm#8wu0z(>S*$8lƊvX@g!Th@|@!| ?18?$txd?-V(z̷@ ]N0pW}C]!z(0aVQou(uwh?Dꤌ B3CXU ]!ͷǨ>_K0!#2!l!x GeXx5#qVxGt{ͤNhan͋h5hfKp X~#@hG~`t{S >AHFg *ZG#(9f55o D^@l "n br 4J@(R, grGkܕ闷SЙ3,"4oΙ !-P 0d5w0&aaJ^#G`  u/-5b",h̃ݱSŒR!r ,@g` q&~#2bgcQ~b}/-  ihXQC o!pHlwod,:;#KEEEE EErE㺂|;||;||;||;|"y!8[ca Z YUg28 J!\]Nd11$KKKKK KKrK㺂|;||;||;||;|"ykb!8]𥠪[ca Z YUg28 J]?!BaVhPEDp8{g<{t|3΋L|Vd׾*/j\߇k\- dhw0yw┨kDݣ((l!j- "x"(D" t" E"))))"""@0"P3nj`!o f׎QfBiˍgO4SaAQz$Wwc*z|5nU.u4?TtDQ"\ۂavŝP\0cYY5Z1u{9^B'>@XOł!v0!V`A/QLYJY21QSA@qm l=%=-6" )0\\@@AAAAA@\\\\lll11l x!l_!}}}}@^! !$&#"! 1/.-,+*)(XW?>=<8BTSNLJIA@a_^]UZsrmlkjih~}|{tnAÿ Q QBOKHG^XiWRQPAgfe`}yvqponsAD@ &   \^]aq{E\]\^bW^\]Dhd2\\22^<]]_L_af `@̂ϗ%6>ȋ+ kkϾ Я>$ko ?@:пh*J\]^T     % nnڌ Gk||c*clko>,kЮpxl|q*@*J\]^T        D9)ðFq .a_]b I kdTi򮺵E]h 7ZaI1ta,%#ʍ"A@,<ڌH@@CD ,)E#+ IE{VuoADڜ< ^RBA^bT񦁨/YO*g_``? a? bTۮR߱S ]?O^%*SCI^Df EhR8DjR ԡdneb SlFE h Y_vf   2cS ]/߻0O0(^W    )\_   ~Al_0o~   _   @D`` L0 l0| \\`] i\]k{l tkl]ί?ll•GϬ  \^ \v\\\\\\~    |llj3 ]\pb`*]*a ]D\^IB]*]+]a cc  kk  c*c k kk{k_ht kk fa|l?\lk|plP)\`b\``cg`)㯮`'\a :g:Jav?2c6_f /m\"g_HA Z \c_Q\` 1k9џl "^al^lkk{hl"^A.kyhAߌ|g\tk%l{ \|Bg5 _P\g5`\Tgpjx  k       |jl} _¾>       ``^ $ >   9_d%S"4 M*J`o__~k*    2e^_(f]_(fU]_ (g_lkkkk|l| _;_\^e_;\? ]jrl@Pй l|l|pllЌl/,k]Z6]p]$ffإ@.lO\x\\klklkp{klRk\hkNklkokl`]L\jk l_@Nk\xkxkl\\k"k6kl_Rkxkk"{kFklkV*k\`kl\\`knlk{]j^i4&&k""{|\_|pllllЯ0 \d\\  P l|` ̶/\N ,ð("֯ 3 8?*J]]Z*J_@\  +_h_*]]Z   G \y\] *l\*J\]^dTd      +- k]|:\F  ^\jpg^>\]Q\.)!   lol/l wp` o kPq@  4  9  \W\  dq)@|jokaAd\\\ `h**]?cp\) `P]?@^ ]st:*(k``(r:*]b`^^_a` _^={xqC=y讘eyF_ha~\]#gp::**qg| ]]_@_a)J]]]]x]ZМv`:*\**\^hP`c]}g|(^X      ow\yGq e_<\g^E\]_hBaf%b]b\Y\]\^\]`&^Zjb]^:m¯@a]dzlK̳]ͬ^jkAm=j` m\rnޮSlrp~9:C nlߧ.а l߻T!ɫ}$n:NR~(.2i߲xX]&\O]\MaSa \b]Oae_nXbj=^\] e\\]baK  \O\ \\e]M`\ _d_] ]Ԯ/k\S]\]E\O]Ic*] ^\X\K ]ta]g`쮞|!Bl‹I\c9^^\\T \`Og]^_]]^N`\`lxi7l \O\La P--zC]_D\\S_aL ^tM_ ]_gb\]  ^]`^^] _\]I]D9fc-jxl(^#-Znh% 3"]_*\q]^,f_٠ ~`m\dlc_JlJgbJmή `8ĮU   u by`\kJk@}vޮUϮkl]\Ul]]]O*@J`nET sbɒ7 z`@^]]aD03H,*\[ݯ$" \ (fc"g]`\.go@ *\*:\]*^]\p^ ^@\\p]]\Z]`f\^P\]]fo> Y[* )J*]@]]]]^ _1\Z\ &*]]]]]_]_]~ F5WT_ ]cd]. l?\            k**::oPfm1gp J,aob] ^ \]^\\*a ]L\]!ho4\^ ]]`]^\q]Q\\i\(]0\ ]Af0]_@&ho@   \p*:]]*:\Z\\`\\p\]Z] \`]nK  ; :J] ):cd<pf]^|]l \]]\]]]]^]^ mk ]`?]]]^o]  :{@  ]  ] _9^`A^P #Q]]g^3] \`0o^]p]g*\] \]@c0*h_]0a]~e aZ\*J_   7 $i J**d`Pn\*\:**\\J*\p:\\\] **Y+(]\`\  \*    '*J]\:\Z\\**\\*\] ( ( (* (]:** (\*  *8***ZZJ1|X\J*\__;9;^O+\**^]\^]\_YJ^@ 7\9*h@їg*f] ^`]`_h*J^] ]]]@] ^aPj]]^'\ F_^^_^_9_i^ ba :{/} il(`h G \ _uulVh]]c    q    ½a@^k\J_`g]]0j_P]|\pa`ol0(?,O? @ JoV` q P@ 0[) QQ T 00K00Q\Q00Q00\Q00T  @PMo@U H Z5`z0 SzASzzD@ zzzzL&2 SzQ0(SzzT0(P0( zzzz\0(] `I ]ʽ|Hrcc 3.10 TarDoc DL$J DDqDate: Wed, 8 May 91 10:43:18 +0200 From: Frank Lancaster In-Reply-To: Denis Howe's message of Mon, 6 May 91 14:23:58 BST <22342.9105061323@asun4> Subject: Problems with tar Hi! I don't know why the latest tar package hasn't been posted to comp.binaries.acorn yet, but here's the latest documentation. (Try putting -C dirname in the file name section of the tarlist file. It might work, I haven't tried it yet.) BFN, Frank Lancaster --------------------------------------------------------------- tar - tape archive, version 1.1f, written for the Archimedes by Frank Lancaster, 22-Apr-1991 Bug reports and comments may be sent as e-mail to: fl@tools.uucp Paper Mail: Frank Lancaster Tools GmbH Kessenicher Str. 108 W-5300 Bonn 1 Federal Republic of Germany This programme is public domain. You may copy it freely, provided you do not charge ANYTHING for its distribution. Table of Contents ----------------- 1. Introduction 2. Installation 3. Usage 4. Normal Files As Archives 5. Hard Disc Backup 6. Compression 7. The List File 8. UNIX Compatibility 9. Raw disc dumping 10. History 1. Introduction --------------- This version of tar is derived from the UNIX tar utility. Its main use is as a hard disk backup programme. It also comes in very handy when transferring files from or to UNIX. The name "tape archive" is misleading but historical. On the Archimedes archives are ordinary files on any file-system (adfs, scsi, dosfs, etc.). Multiple disc archives are supported, now also as ordinary files. Disk archives in ADFS D/E/L or MS-DOS (double-sided, 9 sectors) format dumped to raw disks are supported. 2. Installation --------------- If you have clib version 3.66, you can use the tar_clib and compr_clib versions of tar and compress. Before using the programme set the system variable "tar$scrap" to the name of a temporary scrap file which should only be used by tar, for example "adfs::4.$.tmp.scrap". The leaf name must not be longer than 8 characters, another 2 ("-Z") are added if compression is used. This file will only be used if compression is enabled. If compression is used tar requires the compress programme (included in this distribution), which handles compression and decompression. Normally this should be accessable via the system variable Run$Path, but you can customize the compression and decompression commands with the two system variables tar$compress and tar$decompress (see below "compression"). The system variable tar$filetype is used as file type for tar files. If it is not set, file type FFD (data) is used. 3. Usage -------- The programme should be called from the command line interpreter as it requires parameters. tar [-]Commands[Options] ARCHIVE [LIST] [BLKS] [LEN] [-C DIR] file1 file2 .. Commands: c create a new archive r append files to end of archive t list the contents of an archive x extract files from an archive Options: b BLKS blocking factor BLKS (block size = BLKS x 512 bytes) e LENGTH maximum length of extension to use in UNIX file names f ARCHIVE read/write archive from file ARCHIVE (mandatory) i ignore checksum errors and blocks of zeros (normally EOF) l [LIST] read list of files from file LIST or !tarlist as default m don't extract file modified time p convert '!' in RISC OS names to '.' in UNIX names s swap extension in filename v verbosely list what files we process w ask for confirmation z run files through compress B reblock as we read C DIR change to directory DIR E '.' in UNIX names will be converted to '_' F format disk in drive 0 (multiple volumes & E-format only) M use multiple volume archiving O do not prompt for confimation when formating or overwriting disks Q quit immediately if error occurs, do not prompt for action S swap extensions in whole path T file types appended to names as with RISC-OS NFS U UNIX archive (no Archimedes extensions) Z convert UNIX '.Z' to '-Z' when extracting You must specify an archive file on the command line with the 'f' option. The path names of the archived files are stored as specified on the command line. Using the 'v' (verbose) option will list the path names stored as the archive is created. Normally you shouldn't specify the absolute path names, as you may want to extract the files to an other directory. 4. Normal Files As Archives --------------------------- Here the use of tar is identical to the UNIX usage. The file name of an archive must always be supplied with the 'f' option. To create an archive use the 'c' option: tar cvf myarc file1 file2 file3 This will create an archive 'myarc' in the current directory which contains the files 'file1', 'file2' and 'file3'. I always recommend using the 'v' option with every command, this gives more information on what is happening. You can use path names with the archives and files specified: tar cvf adfs::4.tmp.myarc adfs::5.file1 adfs::4.src.file2 To list the contents of an archive use the 't' command: tar tvf myarc To extract files from an archive use the 'x' command: tar xvf myarc This command will extract all files in the archive. If you only want certain files, you can specify them after the archive name: tar xvf myarc file1 file2 5. Hard disc backup ------------------- This actually isn't very different from normal archiving. The main difference is that archive files are of course written to floppy discs and that they can be split across several discs. The command: tar cvMf :0.backup :4.* will backup all files on the hard disk :4 onto floppy disk :0 in the file 'backup'. If the archive requires more than one floppy disc, you will be prompted for more discs, which will contain further files also called 'backup'. They contain a header which supplies identification of the disc number so that 'tar' will be able to determine the disc sequence when extracting. It would be better to go to the root directory of the hard disc and to use the following command: tar cvMf :0.backup * This will store the path names without the drive name, so you could extract them onto a different hard disk. The command: tar tvf :0.backup will list the contents of an archive on floppy disc :0. If the archive was split across several discs, tar will prompt for further discs when finished listing one. The command: tar xvf :0.backup will extract all files on floppy disc :0 in the file 'backup'. If the file, which is being extracted, already exists, tar will overwrite it without any warning. 6. Compression -------------- With the 'z' option files can be compressed before being written to an archive. For compression the standard UNIX utility compress is used, also supplied with the tar programme. The system variable tar$scrap is used for temporary storage. If you are backing up a complete hard disc and have enough memory you should use a RAM disc for the scrap file, and the compress programme should also be copied onto the RAM disc. You can use different programmes for compression and decompression if you set the tar$compress and tar$decompress system variables. The default settings are: tar$compress compress < %1 > %2 tar$decompress compress -d < %1 > %2 Most compression programmes add a suffix to the compressed file. The UNIX compress programme adds '-Z'. If a compression programme that you want to use, uses a different suffix, you can set the system variable 'tar$compress$extension'. When writing a file 'TresImp' to an archive the compress command will expand to: compress < TresImp > Scrap-Z The %1 parameter is substituted with the file name and %2 is substituted with the scrap file name. The decompress command, when extracting the file, will expand to: compress -d < Scrap-Z > TresImp So if you have a compression programme 'squash' and a decompression program 'expand', which take two parameters and don't use I/O redirection, set the variables to: tar$compress squash %1 %2 tar$decompress expand %1 %2 You can also specify absolute paths in these variables, e.g. when the compression programme is on the RAM disc: tar$compress ram:$.compress < %1 > %2 tar$decompress ram:$.compress -d < %1 > %2 Compressed files are automatically detected when extracting. A verbose listing of the archive also shows the compression percentage. NOTE: The 'z' option is intended for hard disc backups, so that they can be compressed while being created. If you are created a normal archive file which will not be split, it is more efficient to compress the tar archive after it has been created. To do this, use the compress programme: tar cvf myarc files... compress myarc You will have to decompress the archive before extracting file form it. 7. The List File ---------------- The command: tar l tarlist will read file names and options from the file 'tarlist' instead of the command line, if any file names are given they will be ignored, options on the command line are overridden by options specified in the 'tarlist' file. The 'tarlist' file may contain empty lines, which are ignored, lines with one file name, and lines starting with a period followed by one command or option or a blank and a comment. For example: . tar archive definition file (this is a comment, note blank after the period) .c create command (stuff after .c is ignored) .v verbose option (stuff after .v is ignored) .f :0.backup (archive file name) .z compress option ( " ) .b 400 blocking factor (stuff after 400 is ignored) . file names follow !Boot Apps.* Games.* This example file can be found in the distributed tar archive. If no list file name is given on the command line '!tarlist' will be used as default. 8. UNIX Compatibility --------------------- Another main use of the tar programme is as a file transfer programme between UNIX and RISC OS. Archives created with the 'U' option can be processed by UNIX tar programmes. The UNIX file system doesn't know anything about file types, so these will be lost when using the 'U' option. File permissions and date stamps are converted to UNIX format (this is always done, even if the 'U' option is not used, but tar will save the original RISC OS date stamps also if 'U' is not used. UNIX tar programmes which ignore extra information in the tar header will be able to process non-UNIX archives). The RISC OS version of tar detects UNIX tar archives and converts file names to adfs. The 's' option can be used to swap the extension of a file: RISC OS ---> UNIX: c.test ---> test.c UNIX ---> RISC OS: test.c ---> c.test When converting from RISC OS to UNIX, tar will only regard directories as a file name extension if the directory name is shorter than the maximum file name extension length. This is 3 by default, but can be set with the 'e' option. The 'Z' option converts the UNIX '.Z' suffix to a '-Z' suffix as used by the compress programme ( test.c.Z -> c.test-Z ). The 'p' option can be used when creating a UNIX archive to translate a '!' at the beginning of a file name to '.'. NOTE: UNIX tar archives do not support multiple disc archives! They also do not support date stamps which are less than 1-Jan-1970. 9. Raw disc dumping ------------------- To transfer files directly via floppy disc to a UNIX machine, you will have to create a UNIX archive which is dumped on a raw disc, i.d. a disc that is formatted but which will not contain a directory structure. The most common disc format is the MS-DOS format (2 sides, 80 tracks, 9 sectors per track). To create a raw disc archive use the special archive name 'floppy:'. Supply the drive number after the colon. For example: tar cvf floppy:0 files... will create a raw disc archive in drive 0 on a E/D-format disc. tar cvf floppy:0M files... will create a raw disc archive in MS-DOS format. Disc should be formatted before dumping an archive on them. On a UNIX machine a typical command to extract an archive from floppy disc could be: tar xvf /dev/rfd0 10. History ----------- 1.1f - 'Q' option added: non-interactive mode - 'T' option added: file type handling like RISC-OS NFS 1.1e - "-C" can now also be used when extracting 1.1d - 'M' option re-introduced, must be used for multiple disc archiving - raw disc dumping now should be chosen with 'f' option and 'floppy:' archive name - prompt for confirmation when using raw disc archives, 'O' option disables confirmation - improved 'i' option, better defective archive handling - when creating UNIX archives, directory to file extension swapping will only occur if 's' option is used - 'p' option introduced, enables '!' to '.' translation - 'F' option introduced, formats floppy in drive 0 to E-format, intended for hard-disc backup - new system variable tar$compress$extension enables further configuring of the compression programme used. 1.1a - first release to 'comp.sys.acorn' Now I can feel what international means... (A tip of the magical hat to all Rush fans) - multiple disc archiving changed, now consistent with normal use; archives on multiple floppy discs are now ordinary files and are split into several files on different discs; main problem was writing a filing-system independent free-space routine (not all filing systems are FileCore based!) - tar$filetype introduced; when set use value as FileType for tar files, maybe Acorn could supply a tar file type; this would be mandatory for a desktop version - dangerous bug with tar$scrap set to directory removed; used to delete directory recursively, now produces error message - bug when extracting directories 'bad file name' removed - tar$scrap now only has to be set when using compression 1.0o - RISC OS to UNIX file name conversion introduced directory names may be converted to extensions, '!' to '.', '/' to '_' - new list file default '!tarlist' - compress now called with I/O redirection, saves disk space and I/O access time 1.0n - UNIX/RISC-OS time conversion rewritten: FP eliminated, minor deviations corrected, over-/underflow check - FSVars module no longer required 1.0l-m - system variable for compression scrap file tar$scrap - system variables for compression and decompression commands tar$compress, tar$decompress 1.0h-i - fixed more bugs with 's' option and introduced 'Z' option 1.0g - fixed bug with 's' option 1.0f - the 'r' option is now implemented - the 'L' type discs are now implemented - the 'M' option was dropped, multiple disk archives are now default expect if writing a UNIX archive, or 'O' option is used - new 'l' option introduced, files and options can now be specified in a LIST file - tar now prompts for 'discs' not 'volumes' 1.0e - first release into the public domain in 'eunet.micro.acorn' --------------------------------------------------------------------- tar [1.1o] (7-Nov-91) --------------------- tar: usage: tar [-]cmd[opt] ARCHIVE [LIST] [BLKS] [-C DIR] file1 file2 ... Commands: c create a new archive r append files to end of archive t list the contents of an archive x extract files from an archive Options: b BLKS blocking factor BLKS (block size = BLKS x 512 bytes) e LENGTH maximum length of extension to use in UNIX file names f ARCHIVE read/write archive from file ARCHIVE (mandatory) i ignore checksum errors and zero blocks (normally EOF) l [LIST] read list of files from file LIST or !tarlist as default m do not extract file modified time p convert '!' in RISC OS names to '.' in UNIX names s swap extension in filename (see documentation) v verbosely list what files we process w ask for confirmation z run files through compress B re-block as we read C DIR change to directory DIR E '.' in UNIX names will be converted to '_' F format disc in drive 0 (multiple volumes & E-format only) M use multiple volume archiving O do not ask for confimation to format or write raw discs Q quit immediately if error occurs, do not prompt for action S swap extensions in whole path T file types appended to names as with RISC-OS NFS U UNIX archive mode (no Archimedes extensions) Z convert UNIX '.Z' to '-Z' when extracting Please read the documentation file for further information. I will take no responsibility for damage or loss of data due to the use of this programme. tar [1.1o] (7-Nov-91) on the Archimedes by Frank Lancaster, Copyright (C) 1991. This programme is public domain. You may not charge anything for it. Templates L#Dp,level leisunt& =!Backup d> e 6=xDt=`9 ntitled> 8=Ǎx=9 x=OK titled> 4(1:|9Level led> 6Ht9Level led> 6123:59:59 31-Dec-1999 23:59:59 31-Dec-1999 This backup: Previous backup: WorkWorkL= `D@3