BasePath$="D:\MyProjectFolder\Gfx\_examples"
ink $ff0000
print BasePath$
ink -1
print ""
print GetAbsolutePathToFile(BasePath$, "Stuff.txt")
print GetAbsolutePathToFile(BasePath$, "subfolder/Stuff.txt")
print GetAbsolutePathToFile(BasePath$, "../Stuff.txt")
print GetAbsolutePathToFile(BasePath$, "../../Stuff.txt")
print GetAbsolutePathToFile(BasePath$, "subfolder/../../Stuff.txt")
Sync
waitkey
Function GetAbsolutePathToFile(BasePath$, Filename$)
BasePath$=replace$(BasePath$,"/","\")
Filename$=replace$(Filename$,"/","\")
Filename$=trim$(Filename$)
BasePath$=trimright$(BasePath$,"\")+"\"
local Device$=GetDevicename$(Filename$)
if len(Device$)=0
// if the Filename is relative, we'll try and
// build an absolute path from BASE to this Filename
local Path$=GetFolderName$(Filename$)
FileName$=BasePath$+Filename$
// Check for "..\" in path
if instring(Path$,"..\")
Dim FolderChunks$(50)
local Count=splittoarray(filename$,"\",FolderChunks$())
local lp,s$
local Output=0
for lp =0 to count-1
s$=FolderChunks$(lp)
if s$<>".."
if output>=0 then FolderChunks$(Output)=s$
Output++
else
output--
endif
next
// Put it back together
Filename$=""
for lp =0 to output-1
Filename$+=FolderChunks$(lp)
if lp<output-1 then Filename$+="\"
next
endif
endif
EndFunction Filename$