aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/lfs_ext.lua4
-rw-r--r--test/test.lua1
2 files changed, 4 insertions, 1 deletions
diff --git a/core/lfs_ext.lua b/core/lfs_ext.lua
index 59318da8..abf74dc0 100644
--- a/core/lfs_ext.lua
+++ b/core/lfs_ext.lua
@@ -124,7 +124,9 @@ end
function lfs.abspath(filename, prefix)
assert_type(filename, 'string', 1)
assert_type(prefix, 'string/nil', 2)
- if WIN32 then filename = filename:gsub('/', '\\') end
+ if WIN32 then
+ filename = filename:gsub('/', '\\'):gsub('^%l:[/\\]', string.upper)
+ end
if not filename:find(not WIN32 and '^/' or '^%a:[/\\]') and
not (WIN32 and filename:find('^\\\\')) then
if not prefix then prefix = lfs.currentdir() end
diff --git a/test/test.lua b/test/test.lua
index 7fc53b75..1d920f6e 100644
--- a/test/test.lua
+++ b/test/test.lua
@@ -729,6 +729,7 @@ function test_lfs_ext_abs_path()
assert_equal(lfs.abspath('.\\bar', 'C:\\foo'), 'C:\\foo\\bar')
assert_equal(lfs.abspath('..\\bar', 'C:\\foo'), 'C:\\bar')
assert_equal(lfs.abspath('C:\\bar', 'C:\\foo'), 'C:\\bar')
+ assert_equal(lfs.abspath('c:\\bar', 'c:\\foo'), 'C:\\bar')
assert_equal(lfs.abspath('..\\../.\\./baz', 'C:\\foo\\bar'), 'C:\\baz')
_G.WIN32 = win32 -- reset just in case