10
20
30 :
40 :
50
60
70 DEFPROCf_init
80 d$=".":s$="/":IF(os%AND-24):d$="/":s$=".":IF(os%AND-32):d$="\"
90 ENDPROC
100 :
110 :
120
130
140 DEFFNfn_root(A$):LOCALA%,B%:IFLEFT$(A$,2)=d$+d$:=LEFT$(A$,INSTR(A$+d$,d$,3)-1)
150 A%=INSTR(A$,":",2):B%=INSTR(A$,d$,A%)AND(A%<>0):IFB%:A%=B%-1
160 IFA%:=LEFT$(A$,A%)
170 IFINSTR(":$%&^@\-",LEFT$(A$,1)):=LEFT$(A$,INSTR(A$+d$,d$)-1)
180 =""
190 :
200 :
210
220
230 DEFFNfn_leaf(A$):LOCALA%,B%:A%=INSTR(A$,":",2)
240 REPEATB%=A%:A%=INSTR(A$,d$,A%+1):UNTILA%=0:=MID$(A$,B%+1)
250 :
260 :
270
280
290 DEFFNfn_path(A$):LOCALA%,B%:A%=INSTR(A$,":",2)
300 REPEATB%=A%:A%=INSTR(A$,d$,A%+1):UNTILA%=0:=LEFT$(A$,B%)
310 :
320 :
330
340
350 DEFFNfn_ext(A$):IFINSTR(A$,s$)=0:=""
360 LOCAL A%:A%=LENA$+1:REPEATA%=A%-1:UNTILINSTR(":"+d$+s$,MID$(A$,A%,1))
370 IFMID$(A$,A%,1)=s$:=MID$(A$,A%) ELSE =""
380 :
390 :
400
410
420 DEFFNfn_noext(A$):IFINSTR(A$,s$)=0:=A$
430 LOCAL A%:A%=LENA$+1:REPEATA%=A%-1:UNTILINSTR(":"+s$+d$,MID$(A$,A%,1))
440 IFMID$(A$,A%,1)=s$:=LEFT$(A$,A%-1) ELSE =A$
450 :
460 :
470
480
490 DEFFNfn_fullpath(P$,A$)
500 IFINSTR("$%&^\-",LEFT$(A$,1)):IF(os%AND-24)=0:=A$
510 IFINSTR(A$,":")ORLEFT$(A$,1)=d$:=A$
520 =P$+LEFT$(d$,RIGHT$(P$,1)<>d$)+A$
530 :
540 :
550
560
570 DEFFNf_name(A$)
580 IF?(TOP-3)=0:LOCALA%,B%:REPEATB%=A%:A%=INSTR(A$,d$,A%+1):UNTILA%=0:IFINSTR(A$,".",B%)=0:A$=A$+"."
590 =A$
600 :
610 :