mirror of https://github.com/nmlgc/ReC98.git
[Build] Rules: Properly split TLINK response file `echo` commands
Completes P0283, funded by [Anonymous].
This commit is contained in:
parent
816f3a083a
commit
b86a2b1119
|
@ -125,7 +125,7 @@ end
|
||||||
---@param line string
|
---@param line string
|
||||||
---@param sub_bytes number | nil Subtracted from 1023.
|
---@param sub_bytes number | nil Subtracted from 1023.
|
||||||
---@param sub_args number | nil Subtracted from 64.
|
---@param sub_args number | nil Subtracted from 64.
|
||||||
---@return fun(): string | nil it Iterator over the split lines.
|
---@return fun(): string | nil,boolean it Iterator over the split lines, plus an indicator of whether the current string is the final one
|
||||||
local function split_batch_line_for_win9x(line, sub_bytes, sub_args)
|
local function split_batch_line_for_win9x(line, sub_bytes, sub_args)
|
||||||
local max_bytes = (1023 - ((sub_bytes and sub_bytes) or 0))
|
local max_bytes = (1023 - ((sub_bytes and sub_bytes) or 0))
|
||||||
local max_args = (64 - ((sub_args and sub_args) or 0))
|
local max_args = (64 - ((sub_args and sub_args) or 0))
|
||||||
|
@ -178,7 +178,7 @@ local function split_batch_line_for_win9x(line, sub_bytes, sub_args)
|
||||||
|
|
||||||
return function ()
|
return function ()
|
||||||
if (#line == 0) then
|
if (#line == 0) then
|
||||||
return nil
|
return nil, true
|
||||||
end
|
end
|
||||||
|
|
||||||
local chunk
|
local chunk
|
||||||
|
@ -188,7 +188,7 @@ local function split_batch_line_for_win9x(line, sub_bytes, sub_args)
|
||||||
chunk = cut(line:sub(0, max_bytes))
|
chunk = cut(line:sub(0, max_bytes))
|
||||||
end
|
end
|
||||||
line = line:sub(chunk:len() + 1):match("%s*(.*)%s*$")
|
line = line:sub(chunk:len() + 1):match("%s*(.*)%s*$")
|
||||||
return chunk
|
return chunk, (#line == 0)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -234,9 +234,19 @@ $ @echo off
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Adding 2 to leave room for the longer `>>` redirector
|
-- Adding 2 to leave room for the longer `>>` redirector
|
||||||
for chunk in split_batch_line_for_win9x(
|
for chunk, final in split_batch_line_for_win9x(
|
||||||
args, (ECHO:len() + 1 + fn:len() + 2), 1
|
args, (ECHO:len() + 1 + fn:len() + 2), 1
|
||||||
) do
|
) do
|
||||||
|
-- TLINK response files need some separate massaging when split
|
||||||
|
-- into multiple lines.
|
||||||
|
if (rsp_ext == "l") then
|
||||||
|
if chunk:sub(-1) == "," then
|
||||||
|
chunk = chunk:sub(0, (chunk:len() - 1))
|
||||||
|
elseif not final then
|
||||||
|
chunk = (chunk .. "+")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
print(string.format("$ %s %s%s%s", ECHO, chunk, redirector, fn))
|
print(string.format("$ %s %s%s%s", ECHO, chunk, redirector, fn))
|
||||||
redirector = ">>"
|
redirector = ">>"
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue