Software /
code /
prosody
Comparison
util/prosodyctl/shell.lua @ 13483:7b070909bd15
prosodyctl shell: Fix invocation with 3+ command arguments
The code correctly inserted the ',' when there was already a "%q" in the
format string, but then the next argument would fail to match because it
inserted ", %q" instead of "%q". The code now matches both, ensuring the
generated code will not produce a syntax error with multiple arguments.
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Wed, 24 Apr 2024 11:45:37 +0100 |
parent | 13398:4ba11c2b915a |
child | 13590:d66f30855822 |
comparison
equal
deleted
inserted
replaced
13482:4d697961546d | 13483:7b070909bd15 |
---|---|
81 if arg[2] then | 81 if arg[2] then |
82 local fmt = { "%s"; ":%s("; ")" }; | 82 local fmt = { "%s"; ":%s("; ")" }; |
83 for i = 3, #arg do | 83 for i = 3, #arg do |
84 if arg[i]:sub(1, 1) == ":" then | 84 if arg[i]:sub(1, 1) == ":" then |
85 table.insert(fmt, i, ")%s("); | 85 table.insert(fmt, i, ")%s("); |
86 elseif i > 3 and fmt[i - 1] == "%q" then | 86 elseif i > 3 and fmt[i - 1]:match("%%q$") then |
87 table.insert(fmt, i, ", %q"); | 87 table.insert(fmt, i, ", %q"); |
88 else | 88 else |
89 table.insert(fmt, i, "%q"); | 89 table.insert(fmt, i, "%q"); |
90 end | 90 end |
91 end | 91 end |