From: Angus Leeming Date: Sun, 17 Apr 2005 18:41:14 +0000 (+0000) Subject: Quote graphics conversion commands correctly. X-Git-Tag: 1.6.10~14393 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=9d3de76fdfea6ade44a3790047734f176b4a08ee;p=features.git Quote graphics conversion commands correctly. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@9820 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/graphics/ChangeLog b/src/graphics/ChangeLog index 3e21eb833f..2d32fd615f 100644 --- a/src/graphics/ChangeLog +++ b/src/graphics/ChangeLog @@ -1,3 +1,7 @@ +2005-04-17 Angus Leeming + + * GraphicsConverter.C (c-tor): quote conversion commands correctly. + 2005-02-15 Angus Leeming * GraphicsLoader.C: s/struct/class/ in definition of diff --git a/src/graphics/GraphicsConverter.C b/src/graphics/GraphicsConverter.C index b55e3a7ddf..4d64661767 100644 --- a/src/graphics/GraphicsConverter.C +++ b/src/graphics/GraphicsConverter.C @@ -167,9 +167,12 @@ Converter::Impl::Impl(string const & from_file, string const & to_file_base, if (!success) { script_command_ = - "sh " + LibFileSearch("scripts", "convertDefault.sh") + - ' ' + from_format + ':' + from_file + ' ' + - to_format + ':' + to_file_; + "sh " + + QuoteName(LibFileSearch("scripts", "convertDefault.sh")) + + ' ' + + QuoteName(from_format + ':' + from_file) + + ' ' + + QuoteName(to_format + ':' + to_file_); lyxerr[Debug::GRAPHICS] << "\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 // list of forked processes. // Note: 'sh ' is absolutely essential, or execvp will fail. - script_command_ = "sh " + script_file_ + ' ' + - OnlyFilename(from_file) + ' ' + to_format; + script_command_ = "sh " + QuoteName(script_file_) + ' ' + + QuoteName(OnlyFilename(from_file)) + ' ' + + QuoteName(to_format); } // All is ready to go valid_process_ = true; diff --git a/src/support/ChangeLog b/src/support/ChangeLog index e38df86548..a4a27f6dc1 100644 --- a/src/support/ChangeLog +++ b/src/support/ChangeLog @@ -1,3 +1,10 @@ +2005-04-17 Angus Leeming + + * 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 * Makefile.am (build_package): Solaris sed does not like diff --git a/src/support/forkedcall.C b/src/support/forkedcall.C index 9f416959e7..d13f4dc3f0 100644 --- a/src/support/forkedcall.C +++ b/src/support/forkedcall.C @@ -282,11 +282,23 @@ int Forkedcall::generateChild() if (c == ' ') *it = '\0'; 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'; +#endif inside_quote = c; } } else if (c == inside_quote) { +#if defined (_WIN32) + *it = '"'; +#else *it = '\0'; +#endif inside_quote = 0; } } @@ -303,13 +315,16 @@ int Forkedcall::generateChild() argv.push_back(0); // Debug output. - vector::iterator ait = argv.begin(); - vector::iterator const aend = argv.end(); - lyxerr << "\n"; - for (; ait != aend; ++ait) - if (*ait) - lyxerr << '\t'<< *ait << '\n'; - lyxerr << "" << std::endl; + if (lyxerr.debugging(Debug::FILES)) { + vector::iterator ait = argv.begin(); + vector::iterator const aend = argv.end(); + lyxerr << "\n\t" << line + << "\n\tInterpretted as:\n\n"; + for (; ait != aend; ++ait) + if (*ait) + lyxerr << '\t'<< *ait << '\n'; + lyxerr << "" << std::endl; + } #ifndef __EMX__ pid_t const cpid = ::fork();