<< "\n--------------------------------------\n");
// Output the script to file.
+ // FIXME THREAD
static int counter = 0;
script_file_ = FileName(onlyPath(to_file_base) + "lyxconvert" +
convert<string>(counter++) + ".py");
" sys.exit(1)\n\n";
// Delete the infile
- script << "unlinkNoThrow(infile)\n\n";
+ script << "if infile != outfile:\n"
+ " unlinkNoThrow(infile)\n\n";
+}
+
+
+static string const strip_digit(string const & format)
+{
+ // Strip trailing digits from format names e.g. "pdf6" -> "pdf"
+ return format.substr(0, format.find_last_not_of("0123456789") + 1);
}
string const & to_format,
ostream & script)
{
- LASSERT(from_format != to_format, /**/);
+ LASSERT(from_format != to_format, return);
LYXERR(Debug::GRAPHICS, "build_script ... ");
typedef Graph::EdgePath EdgePath;
// Create a temporary base file-name for all intermediate steps.
// Remember to remove the temp file because we only want the name...
+ // FIXME THREAD
static int counter = 0;
string const tmp = "gconvert" + convert<string>(counter++);
string const to_base = FileName::tempName(tmp).toFilesystemEncoding();
<< libScriptSearch("$$s/scripts/convertDefault.py",
quote_python) << ' ';
if (!from_format.empty())
- os << from_format << ':';
+ os << strip_digit(from_format) << ':';
// The extra " quotes around infile and outfile are needed
// because the filename may contain spaces and it is used
// as argument of os.system().
os << "' + '\"' + infile + '\"' + ' "
- << to_format << ":' + '\"' + outfile + '\"' + '";
+ << strip_digit(to_format) << ":' + '\"' + outfile + '\"' + '";
string const command = os.str();
LYXERR(Debug::GRAPHICS,
// Build the conversion command
string const infile = outfile;
string const infile_base = changeExtension(infile, string());
- outfile = addExtension(to_base, conv.To->extension());
+ outfile = conv.result_file.empty()
+ ? addExtension(to_base, conv.To->extension())
+ : addName(subst(conv.result_dir,
+ token_base, infile_base),
+ subst(conv.result_file,
+ token_base, onlyFileName(infile_base)));
+
+ // If two formats share the same extension we may get identical names
+ if (outfile == infile && conv.result_file.empty()) {
+ string const new_base = FileName::tempName(tmp).toFilesystemEncoding();
+ outfile = addExtension(new_base, conv.To->extension());
+ }
// Store these names in the python script
script << "infile = "