diff --git a/file.lua b/file.lua index 6c460a9..72c114a 100644 --- a/file.lua +++ b/file.lua @@ -180,3 +180,20 @@ function load_drawing_from_array(iter, a, i) end return i, drawing end + +function is_absolute_path(path) + local os_path_separator = package.config:sub(1,1) + if os_path_separator == '/' then + -- POSIX systems permit backslashes in filenames + return path:sub(1,1) == '/' + elseif os_path_separator == '\\' then + local f = path:sub(1,1) + return f == '/' or f == '\\' + else + error('What OS is this? LÖVE reports that the path separator is "'..os_path_separator..'"') + end +end + +function is_relative_path(path) + return not is_absolute_path(path) +end diff --git a/run.lua b/run.lua index 188269b..2dd159e 100644 --- a/run.lua +++ b/run.lua @@ -141,9 +141,8 @@ function run.settings() Settings.x, Settings.y, Settings.displayindex = love.window.getPosition() end local filename = Editor_state.filename - local os_path_separator = package.config:sub(1,1) - if filename:sub(1,1) ~= os_path_separator then - filename = love.filesystem.getWorkingDirectory()..os_path_separator..filename + if is_relative_path(filename) then + filename = love.filesystem.getWorkingDirectory()..'/'..filename -- '/' should work even on Windows end return { x=Settings.x, y=Settings.y, displayindex=Settings.displayindex, diff --git a/source.lua b/source.lua index fc2ff3c..1da4467 100644 --- a/source.lua +++ b/source.lua @@ -257,9 +257,8 @@ function source.settings() Settings.source.x, Settings.source.y, Settings.source.displayindex = love.window.getPosition() end local filename = Editor_state.filename - local os_path_separator = package.config:sub(1,1) - if filename:sub(1,1) ~= os_path_separator then - filename = love.filesystem.getWorkingDirectory()..os_path_separator..filename + if is_relative_path(filename) then + filename = love.filesystem.getWorkingDirectory()..'/'..filename -- '/' should work even on Windows end --? print('saving source settings', Settings.source.x, Settings.source.y, Settings.source.displayindex) return { diff --git a/source_file.lua b/source_file.lua index 6552667..8dd8832 100644 --- a/source_file.lua +++ b/source_file.lua @@ -199,3 +199,20 @@ function load_drawing_from_array(iter, a, i) end return i, drawing end + +function is_absolute_path(path) + local os_path_separator = package.config:sub(1,1) + if os_path_separator == '/' then + -- POSIX systems permit backslashes in filenames + return path:sub(1,1) == '/' + elseif os_path_separator == '\\' then + local f = path:sub(1,1) + return f == '/' or f == '\\' + else + error('What OS is this? LÖVE reports that the path separator is "'..os_path_separator..'"') + end +end + +function is_relative_path(path) + return not is_absolute_path(path) +end