aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHisham <hisham@gobolinux.org>2016-10-28 12:10:46 -0200
committerHisham <hisham@gobolinux.org>2016-10-28 12:10:46 -0200
commit825e722029fbc93976c2d882dd21f444f9bffda0 (patch)
treee406e578987989d547db1710215af701bf644546 /src
parent17f71ed0e37122d24d8df53e276bbb190c12fb69 (diff)
parent825f903a29df24b912e77e48d8b59e43e3a72029 (diff)
downloadluarocks-825e722029fbc93976c2d882dd21f444f9bffda0.tar.gz
luarocks-825e722029fbc93976c2d882dd21f444f9bffda0.tar.bz2
luarocks-825e722029fbc93976c2d882dd21f444f9bffda0.zip
Merge branch 'master' into luarocks-3
Diffstat (limited to 'src')
-rw-r--r--src/luarocks/fs/lua.lua11
-rw-r--r--src/luarocks/fs/unix.lua9
-rw-r--r--src/luarocks/fs/win32.lua30
3 files changed, 18 insertions, 32 deletions
diff --git a/src/luarocks/fs/lua.lua b/src/luarocks/fs/lua.lua
index 770da2b7..e4c6ca05 100644
--- a/src/luarocks/fs/lua.lua
+++ b/src/luarocks/fs/lua.lua
@@ -30,17 +30,6 @@ local dir_stack = {}
30 30
31local dir_separator = "/" 31local dir_separator = "/"
32 32
33--- Quote argument for shell processing.
34-- Adds single quotes and escapes.
35-- @param arg string: Unquoted argument.
36-- @return string: Quoted argument.
37function fs_lua.Q(arg)
38 assert(type(arg) == "string")
39
40 -- FIXME Unix-specific
41 return "'" .. arg:gsub("'", "'\\''") .. "'"
42end
43
44--- Test is file/dir is writable. 33--- Test is file/dir is writable.
45-- Warning: testing if a file/dir is writable does not guarantee 34-- Warning: testing if a file/dir is writable does not guarantee
46-- that it will remain writable and therefore it is no replacement 35-- that it will remain writable and therefore it is no replacement
diff --git a/src/luarocks/fs/unix.lua b/src/luarocks/fs/unix.lua
index df9d256d..aca64ac0 100644
--- a/src/luarocks/fs/unix.lua
+++ b/src/luarocks/fs/unix.lua
@@ -22,6 +22,15 @@ function unix.quiet_stderr(cmd)
22 return cmd.." 2> /dev/null" 22 return cmd.." 2> /dev/null"
23end 23end
24 24
25--- Quote argument for shell processing.
26-- Adds single quotes and escapes.
27-- @param arg string: Unquoted argument.
28-- @return string: Quoted argument.
29function unix.Q(arg)
30 assert(type(arg) == "string")
31 return "'" .. arg:gsub("'", "'\\''") .. "'"
32end
33
25--- Return an absolute pathname from a potentially relative one. 34--- Return an absolute pathname from a potentially relative one.
26-- @param pathname string: pathname to convert. 35-- @param pathname string: pathname to convert.
27-- @param relative_to string or nil: path to prepend when making 36-- @param relative_to string or nil: path to prepend when making
diff --git a/src/luarocks/fs/win32.lua b/src/luarocks/fs/win32.lua
index 9ce95986..2216d2fa 100644
--- a/src/luarocks/fs/win32.lua
+++ b/src/luarocks/fs/win32.lua
@@ -35,19 +35,6 @@ end
35 35
36local drive_letter = "[%.a-zA-Z]?:?[\\/]" 36local drive_letter = "[%.a-zA-Z]?:?[\\/]"
37 37
38local win_escape_chars = {
39 ["%"] = "%%",
40 ['"'] = '\\"',
41}
42
43local function q_escaper(bs, q)
44 return ("\\"):rep(2*#bs-1) .. (q or "\\")
45end
46
47local function p_escaper(bs)
48 return bs .. bs .. '"%"'
49end
50
51--- Quote argument for shell processing. Fixes paths on Windows. 38--- Quote argument for shell processing. Fixes paths on Windows.
52-- Adds double quotes and escapes. 39-- Adds double quotes and escapes.
53-- @param arg string: Unquoted argument. 40-- @param arg string: Unquoted argument.
@@ -61,11 +48,11 @@ function win32.Q(arg)
61 if arg == "\\" then 48 if arg == "\\" then
62 return '\\' -- CHDIR needs special handling for root dir 49 return '\\' -- CHDIR needs special handling for root dir
63 end 50 end
64 -- URLs and anything else 51 -- URLs and anything else
65 arg = arg:gsub('(\\+)(")', q_escaper) 52 arg = arg:gsub('\\(\\*)"', '\\%1%1"')
66 arg = arg:gsub('(\\+)$', q_escaper) 53 arg = arg:gsub('\\+$', '%0%0')
67 arg = arg:gsub('"', win_escape_chars) 54 arg = arg:gsub('"', '\\"')
68 arg = arg:gsub('(\\*)%%', p_escaper) 55 arg = arg:gsub('(\\*)%%', '%1%1"%%"')
69 return '"' .. arg .. '"' 56 return '"' .. arg .. '"'
70end 57end
71 58
@@ -83,9 +70,10 @@ function win32.Qb(arg)
83 return '\\' -- CHDIR needs special handling for root dir 70 return '\\' -- CHDIR needs special handling for root dir
84 end 71 end
85 -- URLs and anything else 72 -- URLs and anything else
86 arg = arg:gsub('(\\+)(")', q_escaper) 73 arg = arg:gsub('\\(\\*)"', '\\%1%1"')
87 arg = arg:gsub('(\\+)$', q_escaper) 74 arg = arg:gsub('\\+$', '%0%0')
88 arg = arg:gsub('[%%"]', win_escape_chars) 75 arg = arg:gsub('"', '\\"')
76 arg = arg:gsub('%%', '%%%%')
89 return '"' .. arg .. '"' 77 return '"' .. arg .. '"'
90end 78end
91 79