+2005-04-17 Angus Leeming <leeming@lyx.org>
+
+ * GraphicsConverter.C (c-tor): quote conversion commands correctly.
+
2005-02-15 Angus Leeming <leeming@lyx.org>
* GraphicsLoader.C: s/struct/class/ in definition of
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"
// 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;
+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>
* Makefile.am (build_package): Solaris sed does not like
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;
}
}
argv.push_back(0);
// Debug output.
- vector<char *>::iterator ait = argv.begin();
- vector<char *>::iterator const aend = argv.end();
- lyxerr << "<command>\n";
- for (; ait != aend; ++ait)
- if (*ait)
- lyxerr << '\t'<< *ait << '\n';
- lyxerr << "</command>" << std::endl;
+ if (lyxerr.debugging(Debug::FILES)) {
+ vector<char *>::iterator ait = argv.begin();
+ vector<char *>::iterator const aend = argv.end();
+ lyxerr << "<command>\n\t" << line
+ << "\n\tInterpretted as:\n\n";
+ for (; ait != aend; ++ait)
+ if (*ait)
+ lyxerr << '\t'<< *ait << '\n';
+ lyxerr << "</command>" << std::endl;
+ }
#ifndef __EMX__
pid_t const cpid = ::fork();