Make best effort to encode to UTF-8. On failure log error and retain original.
This commit is contained in:
parent
d14b230b6c
commit
da2c57d3d3
|
@ -44,8 +44,19 @@ module Vagrant
|
||||||
# Re-generate strings to ensure common encoding
|
# Re-generate strings to ensure common encoding
|
||||||
@@logger.debug("Converting command and arguments to common UTF-8 encoding for exec.")
|
@@logger.debug("Converting command and arguments to common UTF-8 encoding for exec.")
|
||||||
@@logger.debug("Command: `#{command.inspect}` Args: `#{args.inspect}`")
|
@@logger.debug("Command: `#{command.inspect}` Args: `#{args.inspect}`")
|
||||||
command = "#{command}".force_encoding("UTF-8")
|
begin
|
||||||
args = args.map{|arg| "#{arg}".force_encoding("UTF-8") }
|
command = "#{command}".encode("UTF-8")
|
||||||
|
rescue Encoding::UndefinedConversionError => e
|
||||||
|
@@logger.warn("Failed to convert command - #{e.class}: #{e} (`#{command}`)")
|
||||||
|
end
|
||||||
|
args = args.map do |arg|
|
||||||
|
begin
|
||||||
|
"#{arg}".encode("UTF-8")
|
||||||
|
rescue Encoding::UndefinedConversionError => e
|
||||||
|
@@logger.warn("Failed to convert command argument - #{e.class}: #{e} (`#{arg}`)")
|
||||||
|
arg
|
||||||
|
end
|
||||||
|
end
|
||||||
@@logger.debug("Converted - Command: `#{command.inspect}` Args: `#{args.inspect}`")
|
@@logger.debug("Converted - Command: `#{command.inspect}` Args: `#{args.inspect}`")
|
||||||
end
|
end
|
||||||
Kernel.exec(command, *args)
|
Kernel.exec(command, *args)
|
||||||
|
|
Loading…
Reference in New Issue