X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FFormat.cpp;h=a6727a2d8128a8c67e670912ad559b0d66b901f8;hb=c57d04908f9746a3923c36c0f41e1e23c6043550;hp=a4882f6c63792185738ee40a80f91d7e06a47b27;hpb=dfd6afb7409fac345a26d5b16d967d3f4c5f7fa1;p=lyx.git diff --git a/src/Format.cpp b/src/Format.cpp index a4882f6c63..a6727a2d81 100644 --- a/src/Format.cpp +++ b/src/Format.cpp @@ -337,6 +337,9 @@ string guessFormatFromContents(FileName const & fn) // autodetect pdf format for graphics inclusion format = "pdf6"; + else if (contains(str, " EMF")) + format = "emf"; + else if (contains(str, "PNG")) format = "png"; @@ -679,6 +682,28 @@ bool Formats::view(Buffer const & buffer, FileName const & filename, string command = format->viewer(); + // Escape backslashes if not already in double or single quotes. + // We cannot simply quote the whole command as there may be arguments. + if (contains(command, '\\')) { + bool inquote1 = false; + bool inquote2 = false; + string::iterator cit = command.begin(); + for (; cit != command.end(); ++cit) { + switch (*cit) { + case '"': + inquote1 = !inquote1; + break; + case '\'': + inquote2 = !inquote2; + break; + case '\\': + if (!inquote1 && !inquote2) + cit = ++command.insert(cit, '\\'); + break; + } + } + } + if (format_name == "dvi" && !lyxrc.view_dvi_paper_option.empty()) { string paper_size = buffer.params().paperSizeName(BufferParams::XDVI);