aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormitchell <70453897+667e-11@users.noreply.github.com>2014-01-03 20:55:04 -0500
committermitchell <70453897+667e-11@users.noreply.github.com>2014-01-03 20:55:04 -0500
commit61fa3e6da76fda9cb858eddf6d10b5127daec95d (patch)
tree7c34e1d0568883fdecc630f7ca8d7413dbe54380
parentf63802929891d226cbbbfa40d01c1306d58a6b29 (diff)
downloadtextadept-61fa3e6da76fda9cb858eddf6d10b5127daec95d.tar.gz
textadept-61fa3e6da76fda9cb858eddf6d10b5127daec95d.zip
Handle './' and '../' sequences in filepaths; core/file_io.lua
-rw-r--r--core/file_io.lua4
1 files changed, 4 insertions, 0 deletions
diff --git a/core/file_io.lua b/core/file_io.lua
index 857692c3..7c65fd1e 100644
--- a/core/file_io.lua
+++ b/core/file_io.lua
@@ -116,6 +116,10 @@ function io.open_file(filenames)
for i = 1, #filenames do
local filename = filenames[i]:gsub('^file://', '')
if WIN32 then filename = filename:gsub('/', '\\') end
+ filename = filename:gsub('%f[^/\\]%.[/\\]', '') -- clean up './'
+ while filename:find('[^/\\]+[/\\]%.%.[/\\]') do
+ filename = filename:gsub('[^/\\]+[/\\]%.%.[/\\]', '') -- clean up '../'
+ end
for i, buffer in ipairs(_BUFFERS) do
if filename == buffer.filename then view:goto_buffer(i) goto continue end
end