diff options
author | Thijs Schreijer <thijs@thijsschreijer.nl> | 2013-11-11 14:29:13 +0100 |
---|---|---|
committer | Thijs Schreijer <thijs@thijsschreijer.nl> | 2013-11-11 14:29:13 +0100 |
commit | 42999790aa9737d82c1fcda4f68d4f095a64389d (patch) | |
tree | 4c1a54fbe3d09afa9238fcb2defb679f9919bc29 | |
parent | 7bd1a6549d1f2118838e0ee513f163d025af2a20 (diff) | |
download | luarocks-42999790aa9737d82c1fcda4f68d4f095a64389d.tar.gz luarocks-42999790aa9737d82c1fcda4f68d4f095a64389d.tar.bz2 luarocks-42999790aa9737d82c1fcda4f68d4f095a64389d.zip |
fixed issue with double quoted arguments
-rw-r--r-- | install.bat | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/install.bat b/install.bat index 2d102f7c..3c7d1093 100644 --- a/install.bat +++ b/install.bat | |||
@@ -372,20 +372,34 @@ local with_arg = { -- options followed by an argument, others are flags | |||
372 | ["/BIN"] = true, | 372 | ["/BIN"] = true, |
373 | ["/LIB"] = true, | 373 | ["/LIB"] = true, |
374 | } | 374 | } |
375 | -- reconstruct argument values with spaces | 375 | -- reconstruct argument values with spaces and double quotes |
376 | if #arg > 1 then | 376 | -- this will be damaged by the batch construction at the start of this file |
377 | for i = #arg - 1, 1, -1 do | 377 | if #arg > 0 then |
378 | if (arg[i]:sub(1,1) ~= "/") and (arg[i+1]:sub(1,1) ~= "/") then | 378 | farg = table.concat(arg, " ") .. " " |
379 | arg[i] = arg[i].." "..arg[i+1] | 379 | arg = {} |
380 | table.remove(arg, i+1) | 380 | farg = farg:gsub('%"', "") |
381 | local i = 0 | ||
382 | while #farg>0 do | ||
383 | i = i + 1 | ||
384 | if (farg:sub(1,1) ~= "/") and ((arg[i-1] or ""):sub(1,1) ~= "/") then | ||
385 | i = i - 1 -- continued previous arg | ||
386 | if i == 0 then i = 1 end | ||
387 | end | ||
388 | if arg[i] then | ||
389 | arg[i] = arg[i] .. " " | ||
390 | else | ||
391 | arg[i] = "" | ||
381 | end | 392 | end |
393 | local v,r = farg:match("^(.-)%s(.*)$") | ||
394 | arg[i], farg = arg[i]..v, r | ||
395 | while farg:sub(1,1) == " " do farg = farg:sub(2,-1) end -- remove prefix spaces | ||
382 | end | 396 | end |
383 | end | 397 | end |
384 | 398 | ||
385 | local i = 1 | 399 | local i = 1 |
386 | while i <= #arg do | 400 | while i <= #arg do |
387 | local opt = arg[i] | 401 | local opt = arg[i] |
388 | if with_arg[opt] then | 402 | if with_arg[opt:upper()] then |
389 | local value = arg[i + 1] | 403 | local value = arg[i + 1] |
390 | if not value then | 404 | if not value then |
391 | die("Missing value for option "..opt) | 405 | die("Missing value for option "..opt) |