ô > FileTest : fn$="fn_root":õ:òtest(fn$) (Qñ'"1: fn_root 2: fn_leaf 3: fn_path 4: fn_ext 5: fn_noext 6: fn_name "; 2õA$=¾:ý§"0123456",A$) <çA$="1":fn$="fn_root" FçA$="2":fn$="fn_leaf" PçA$="3":fn$="fn_path" ZçA$="4":fn$="fn_ext" dçA$="5":fn$="fn_noext" nçA$="6":fn$="fn_name" x ýA$="0":à ‚: ŒÝòtest(fn$) –Û:os%=1:òtest_hdr  &òtest_fn("$.JGH.Docs/1.index/htm") ª$òtest_fn("-NET-:System.Library") ´òtest_fn(":0.$.HELLO") ¾òtest_fn("$") Èòtest_fn("net:Hello") Òòtest_fn("%.BLib.File") Ü òtest_fn("adfs:%.BLib.File") æòtest_fn("lanman:^.User") ð'òtest_fn("adfs::a5000.$.temp.data") ú: ñ:os%=32:òtest_hdr òtest_fn("A:LETTER.TXT") òtest_fn("A:\LETTER.TXT") "#òtest_fn("C:\VER.1\LETTER.TXT") ,$òtest_fn("\\SERVER\DOCS\LETTER") 6òtest_fn(":RAM:Z88FILE") @: Jñ:os%=8:òtest_hdr Tòtest_fn("a.out") ^òtest_fn("/etc/passwd") hòtest_fn("../man/man0") ròtest_fn(".rcinit") |: †ñ:os%=31:òtest_hdr òtest_fn("BBCBASIC.PRG") šòtest_fn("DATAFILE") ¤òtest_fn("A:BBCBASIC.COM") ®òtest_fn("S:/PROGS/JSW") ¸: Âá Ì: Ö~Ýòtest_hdr:òf_init:ñ"os%=";os%;‰(2+(os%>9))À"d:",(os%€63)>23)À":d",(os%€40)=0)Àd$+"dir"+d$,os%<23 „ os%>31)"name"s$"ext":á à7Ýòtest_fn(A$):ñfn$;" ";A$;Š40); ("FN"+fn$+"(A$)"):á ê: ô"ô > BLib.File 1.00 J.G.Harston þ+ô Platform-independant filing functions : : 5ô PROCf_init - initialise filing-system variables &5ô ----------------------------------------------- 0 Ýòf_init :6d$=".":s$="/":ços%€40:d$="/":s$=".":ços%€32:d$="\" Dá N: X: b,ô FNfn_root(path$) - return root of path l,ô -------------------------------------- v;ݤfn_root(A$):êA%,B%:çÀA$,2)=d$+d$:=ÀA$,§A$+d$,d$,3)-1) €3A%=§A$,":",2):B%=§A$,d$,A%)€(A%<>0):çB%:A%=B%-1 ŠçA%:=ÀA$,A%) ”+ç§":$%&^@\-",ÀA$,1)):=ÀA$,§A$+d$,d$)-1) ž="" ¨: ²: ¼)ô FNfn_leaf(path$) - returns leafname Æ)ô ----------------------------------- Ð&ݤfn_leaf(A$):êA%,B%:A%=§A$,":",2) Ú+õB%=A%:A%=§A$,d$,A%+1):ýA%=0:=ÁA$,B%+1) ä: î: ø)ô FNfn_path(path$) - returns pathname )ô -----------------------------------  &ݤfn_path(A$):êA%,B%:A%=§A$,":",2) )õB%=A%:A%=§A$,d$,A%+1):ýA%=0:=ÀA$,B%)  : *: 44ô FNfn_ext(path$) - returns leafname's extension >4ô ---------------------------------------------- Hݤfn_ext(A$):ç§A$,s$)=0:="" R1ê A%:A%=©A$+1:õA%=A%-1:ý§":"+d$+s$,ÁA$,A%,1)) \ çÁA$,A%,1)=s$:=ÁA$,A%) ‹ ="" f: p: z8ô FNfn_noext(path$) - returns path with no extension „8ô -------------------------------------------------- Ž!ݤfn_noext(A$):ç§A$,s$)=0:=A$ ˜1ê A%:A%=©A$+1:õA%=A%-1:ý§":"+s$+d$,ÁA$,A%,1)) ¢"çÁA$,A%,1)=s$:=ÀA$,A%-1) ‹ =A$ ¬: ¶: À=ô FNfn_fullpath(path$, file$) - return full absolute path Ê=ô ------------------------------------------------------- Ôݤfn_fullpath(P$,A$) Þ&ç§"$%&^\-",ÀA$,1)):ç(os%€40)=0:=A$ èç§A$,":")„ÀA$,1)=d$:=A$ ò=P$+Àd$,ÂP$,1)<>d$)+A$ ü: : 9ô PROCf_gbpb() - multiple get-bytes or put-bytes call 9ô --------------------------------------------------- $%Ýòf_gbpb(A%,chn%,addr%,num%,ptr%) .@?X%=chn%:X%!1=addr%:X%!5=num%:X%!9=ptr%:ç(os%€32)=0:Ö&FFD1:á 8çA%=1„A%=3:Ï#?X%=X%!9 B5õ:çA%=1„A%=2:Õ#?X%,?X%!1 ‹ çA%=3„A%=4:?X%!1=š#?X% L5X%!1=X%!1+1:X%!5=X%!5-1:ý(Å#?X% € A%>2)„ X%!5<1:á V: `: j-ô FNfs - get current filing system number t-ô --------------------------------------- ~,ݤfs:ç(os%€32)=0:êA%,Y%,E%:=(º&FFDA)€&FF ˆ=29 ’: œ: ¦Dô PROCf_cdir(dir$) - create a directory only if it doesn't exist °Dô -------------------------------------------------------------- ºÝòf_cdir(A$) Ä,ç(os%€40):A$="mkdir "+A$ ‹ A$="cdir "+A$ Î ç £ Œ Ø ÿA$:á âÍ ìê …:î … ê:á öÿA$ á  : : Fô FNfn_name(path$) - ensure no extension if no extension specified (Fô ---------------------------------------------------------------- 2ݤfn_name(A$)