FileSystem

BlitzMax Forums/BlitzMax Programming/FileSystem

Sarge(Posted 2005) [#1]
Hi,

Why do all the file commands like RealPath ect convert \ to / for dir paths ?


Fabian.(Posted 2005) [#2]
I don't know why, but I think in "%BlitzMax%\mod\brl.mod\filesystem.mod\filesystem.bmx" should
Function FixPath( path$ Var,dirPath=False )
	If Not path Return
	path=path.Replace("\","/")
?Win32
	If path.length>=2 And path[1]=Asc(":")
		If path.length=2 Or path[2]<>Asc("/") path=path[..2]+"/"+path[2..]
	EndIf
?
	If dirPath path=StripSlash(path)
End Function

be changed to
Function FixPath( path$ Var,dirPath=False )
	If Not path Return
	path=path.Replace("\","/")
?Win32
	path=path.Replace("/","\")
	If path.length>=2 And path[1]=Asc(":")
		If path.length=2 Or path[2]<>Asc("/") path=path[..2]+"/"+path[2..]
	EndIf
?
	If dirPath path=StripSlash(path)
End Function

This would work.


Sarge(Posted 2005) [#3]
yup, i done a replace, thanks mate.


FlameDuck(Posted 2005) [#4]
Why do all the file commands like RealPath ect convert \ to / for dir paths ?
Because unlike certain other programs, BlitzMAX is POSIX compliant.


Fabian.(Posted 2005) [#5]
Sorry!
But my changes of FileSystem will not work correctly!
There should be changed more than only FixPath...
For example RealPath(...) will not work.
Better do this:
'First set FixPath(...) like it was before any changes:

Function FixPath( path$ Var,dirPath=False )
	If Not path Return
	path=path.Replace("\","/")
?Win32
	If path.length>=2 And path[1]=Asc(":")
		If path.length=2 Or path[2]<>Asc("/") path=path[..2]+"/"+path[2..]
	EndIf
?
	If dirPath path=StripSlash(path)
End Function

'Then write this function:

Function GetOSPath$ ( POSIXPath$ )
?Win32
  Return POSIXPath.Replace ( "/" , "\" )
?
  Return POSIXPath
EndFunction

'And replace each command like this:
Return path
'To:
Return GetOSPath ( path )

'For example change:

Function ExtractDir$( path$ )
	FixPath path
	Local i=path.FindLast("/")
	If i=-1 Or i=path.length-1 Return BAD_DIR
	path=path[..i]
	FixPath path
	Return path
End Function

'To:

Function ExtractDir$( path$ )
	FixPath path
	Local i=path.FindLast("/")
	If i=-1 Or i=path.length-1 Return BAD_DIR
	path=path[..i]
	FixPath path
	Return GetOSPath(path)
End Function