& > BLib.Filename 1.02 25-Jan-2011 A Convert between BBC, DOS/Windows and UNIX/ZIP/URL filenames K!Keep FNfn_frombbc(), FNfn_tobbc(), FNfn_unixtodos(), FNfn_dostounix() (: 2: <- Swap between BBC and Unix/Zip filenames F- --------------------------------------- P*ݤfn_zip(B$):B%:A$="_ #?./$<^>&+@=%;" Z' A%=1 B$:B%=A$,B$,A%,1),2)-1 d1 B%>:B$=B$,A%-1)+A$,(B%1)+1,1)+B$,A%+1) n :=B$ x: 5ݤfn_bbctodos(A$):A%,B%,H%:H%=32::fn_frombbc() 5ݤfn_bbctounix(A$):A%,B%,H%:H%=8::fn_frombbc() %ݤfn_frombbc(A$):A%,B%,H%:H%=os% A$=""(H%-24)=0:=A$ LA$,1)=":":A%=A$+".","."):A$=A$,2,A%-2)+":"+A$,A%-(A$,A%+1,1)="$")) A%=0::A%=A%+1:B%=A$,A%,1) 7B%=35B%=63:A$=A$,A%-1)+(B%28)+A$,A%+1) : # ? 7B%=61B%=64:A$=A$,A%-1)+(B%125)+A$,A%+1): = @ 7B%=36B%=60:A$=A$,A%-1)+(B%24)+A$,A%+1) : < $ 7B%=62B%=94:A$=A$,A%-1)+(B%96)+A$,A%+1) : > ^ =B%="$":(H%-24)=8:A$=A$,A%-1)+"/"+A$,A%+1-(A%<>A$)) ;B%="$":(H%-32):A$=A$,A%-1)+"\"+A$,A%+1-(A%<>A$)) 'B%="@":A$=A$,A%-1)+"."+A$,A%+1) 0B%="^":A$=A$,A%-1)+".."+A$,A%+1):A%=A%+1 'B%="/":A$=A$,A%-1)+"."+A$,A%+1) 3B%=".":(H%-24)=8:A$=A$,A%-1)+"/"+A$,A%+1) "1B%=".":(H%-32):A$=A$,A%-1)+"\"+A$,A%+1) ,1B%="\":(H%-32):A$=A$,A%-1)+"/"+A$,A%+1) 6: IFB%=ASC"&":A$=LEFT$(A$,A%-1)+"%HOME%"+MID$(A$,A%+1) @A%>A$:=A$ J: TZݤfn_fromunix(A$):(os%-24)=8:=A$ (os%-24)=0:=fn_unixtobbc(A$)::fn_dostounix() ^Vݤfn_fromdos(A$):(os%-32):=A$ (os%-24)=0:=fn_dostobbc(A$)::fn_dostounix() hXݤfn_tounix(A$):(os%-24)=8:=A$ (os%-24)=0:=fn_bbctounix(A$)::fn_dostounix() rTݤfn_todos(A$):(os%-32):=A$ (os%-24)=0:=fn_bbctodos(A$)::fn_dostounix() |(ݤfn_unixtodos(A$)::fn_dostounix() ݤfn_dostounix(A$) A$,"/")+A$,"\")=0:=A$ Z A%,B%:A%=0::A%=A%+1:B%=A$,A%,1):B%="/"B%="\":A$=A$,A%-1)+(B%115)+A$,A%+1) A%>=A$:=A$ : 3ݤfn_dostobbc(A$):A%,B%,H%:H%=32::fn_tobbc() 3ݤfn_unixtobbc(A$):A%,B%,H%:H%=8::fn_tobbc() #ݤfn_tobbc(A$):A%,B%,H%:H%=os% A$=""(H%-24)=0:=A$ A$="/":(H%-24)=8:="$" A$="\":(H%-32):="$"  A%=0::A%=A%+1:B%=A$,A%,1) 6B%=35B%=63:A$=A$,A%-1)+(B%28)+A$,A%+1): # ? ;A$,A%,2)="..":A$=A$,A%-1)+"^"+A$,A%+2):A%=A%-1:B%=0 &A$,A%)=".":A$=A$,A%-1)+"@":B%=0 ?A$,A%,2)="./":(H%-24)=8:A$=A$,A%-1)+"@"+A$,A%+1):B%=0 &=A$,A%,2)=".\":(H%-32):A$=A$,A%-1)+"@"+A$,A%+1):B%=0 0G IFMID$(A$,A%,6)="%HOME%":A$=LEFT$(A$,A%-1)+"&"+MID$(A$,A%+6):B%=0 :'B%=".":A$=A$,A%-1)+"/"+A$,A%+1) D1B%="\":(H%-32):A$=A$,A%-1)+"."+A$,A%+1) N1B%="/":(H%-32):A$=A$,A%-1)+"\"+A$,A%+1) X3B%="/":(H%-24)=8:A$=A$,A%-1)+"."+A$,A%+1) b4B%=":":A$=":"+A$,A%-1)+".$"+A$,A%+1):A%=A%+2 lA%>A$:=A$ v: