Quote graphics conversion commands correctly.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@9820 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Angus Leeming 2005-04-17 18:41:14 +00:00
parent f724b28cd9
commit 9d3de76fdf
4 changed files with 42 additions and 12 deletions

View File

@ -1,3 +1,7 @@
2005-04-17 Angus Leeming <leeming@lyx.org>
* GraphicsConverter.C (c-tor): quote conversion commands correctly.
2005-02-15 Angus Leeming <leeming@lyx.org> 2005-02-15 Angus Leeming <leeming@lyx.org>
* GraphicsLoader.C: s/struct/class/ in definition of * GraphicsLoader.C: s/struct/class/ in definition of

View File

@ -167,9 +167,12 @@ Converter::Impl::Impl(string const & from_file, string const & to_file_base,
if (!success) { if (!success) {
script_command_ = script_command_ =
"sh " + LibFileSearch("scripts", "convertDefault.sh") + "sh " +
' ' + from_format + ':' + from_file + ' ' + QuoteName(LibFileSearch("scripts", "convertDefault.sh")) +
to_format + ':' + to_file_; ' ' +
QuoteName(from_format + ':' + from_file) +
' ' +
QuoteName(to_format + ':' + to_file_);
lyxerr[Debug::GRAPHICS] lyxerr[Debug::GRAPHICS]
<< "\tNo converter defined! I use convertDefault.sh\n\t" << "\tNo converter defined! I use convertDefault.sh\n\t"
@ -203,8 +206,9 @@ Converter::Impl::Impl(string const & from_file, string const & to_file_base,
// We create a dummy command for ease of understanding of the // We create a dummy command for ease of understanding of the
// list of forked processes. // list of forked processes.
// Note: 'sh ' is absolutely essential, or execvp will fail. // Note: 'sh ' is absolutely essential, or execvp will fail.
script_command_ = "sh " + script_file_ + ' ' + script_command_ = "sh " + QuoteName(script_file_) + ' ' +
OnlyFilename(from_file) + ' ' + to_format; QuoteName(OnlyFilename(from_file)) + ' ' +
QuoteName(to_format);
} }
// All is ready to go // All is ready to go
valid_process_ = true; valid_process_ = true;

View File

@ -1,3 +1,10 @@
2005-04-17 Angus Leeming <leeming@lyx.org>
* forkedcall.C (generateChild): do not strip quotes from args on
Windows.
Wrap lyxerr output inside an if (lyxerr.debugging(Debug::FILES))
block.
2005-03-23 Angus Leeming <leeming@lyx.org> 2005-03-23 Angus Leeming <leeming@lyx.org>
* Makefile.am (build_package): Solaris sed does not like * Makefile.am (build_package): Solaris sed does not like

View File

@ -282,11 +282,23 @@ int Forkedcall::generateChild()
if (c == ' ') if (c == ' ')
*it = '\0'; *it = '\0';
else if (c == '\'' || c == '"') { else if (c == '\'' || c == '"') {
#if defined (_WIN32)
// How perverse!
// spawnvp *requires* the quotes or it will
// split the arg at the internal whitespace!
// Make shure the quote is a DOS-style one.
*it = '"';
#else
*it = '\0'; *it = '\0';
#endif
inside_quote = c; inside_quote = c;
} }
} else if (c == inside_quote) { } else if (c == inside_quote) {
#if defined (_WIN32)
*it = '"';
#else
*it = '\0'; *it = '\0';
#endif
inside_quote = 0; inside_quote = 0;
} }
} }
@ -303,13 +315,16 @@ int Forkedcall::generateChild()
argv.push_back(0); argv.push_back(0);
// Debug output. // Debug output.
if (lyxerr.debugging(Debug::FILES)) {
vector<char *>::iterator ait = argv.begin(); vector<char *>::iterator ait = argv.begin();
vector<char *>::iterator const aend = argv.end(); vector<char *>::iterator const aend = argv.end();
lyxerr << "<command>\n"; lyxerr << "<command>\n\t" << line
<< "\n\tInterpretted as:\n\n";
for (; ait != aend; ++ait) for (; ait != aend; ++ait)
if (*ait) if (*ait)
lyxerr << '\t'<< *ait << '\n'; lyxerr << '\t'<< *ait << '\n';
lyxerr << "</command>" << std::endl; lyxerr << "</command>" << std::endl;
}
#ifndef __EMX__ #ifndef __EMX__
pid_t const cpid = ::fork(); pid_t const cpid = ::fork();