Make sure we only use unquote on quoted lines in lineinfile when needed
This commit is contained in:
parent
6c9371ea90
commit
3f052ead3a
1 changed files with 13 additions and 5 deletions
|
@ -363,14 +363,22 @@ def main():
|
|||
if ins_bef is None and ins_aft is None:
|
||||
ins_aft = 'EOF'
|
||||
|
||||
line = params['line']
|
||||
|
||||
# The safe_eval call will remove some quoting, but not others,
|
||||
# so we need to know if we should specifically unquote it.
|
||||
should_unquote = not is_quoted(line)
|
||||
|
||||
# Replace escape sequences like '\n' while being sure
|
||||
# not to replace octal escape sequences (\ooo) since they
|
||||
# match the backref syntax
|
||||
# match the backref syntax.
|
||||
if backrefs:
|
||||
line = re.sub(r'(\\[0-9]{1,3})', r'\\\1', params['line'])
|
||||
else:
|
||||
line = params['line']
|
||||
line = unquote(module.safe_eval(pipes.quote(line)))
|
||||
line = re.sub(r'(\\[0-9]{1,3})', r'\\\1', line)
|
||||
line = module.safe_eval(pipes.quote(line))
|
||||
|
||||
# Now remove quotes around the string, if needed
|
||||
if should_unquote:
|
||||
line = unquote(line)
|
||||
|
||||
present(module, dest, params['regexp'], line,
|
||||
ins_aft, ins_bef, create, backup, backrefs)
|
||||
|
|
Loading…
Reference in a new issue