#include "outputparams.h"
#include "frontends/Alert.h"
-#include "support/FileInfo.h"
#include "support/filetools.h"
#include "support/lyxlib.h"
-#include "support/os.h"
+#include "support/package.h"
+
+#include <boost/filesystem/operations.hpp>
using lyx::support::AddName;
using lyx::support::bformat;
using lyx::support::MakeDisplayPath;
using lyx::support::OnlyFilename;
using lyx::support::OnlyPath;
+using lyx::support::package;
using lyx::support::prefixIs;
using std::find;
using std::string;
using std::vector;
+namespace fs = boost::filesystem;
namespace {
if (buffer.params().getLyXTextClass().isTeXClassAvailable())
v.push_back(BufferFormat(buffer));
v.push_back("text");
+ v.push_back("lyx");
return v;
}
/// ask the user what to do if a file already exists
int checkOverwrite(string const & filename)
{
- if (lyx::support::FileInfo(filename, true).exist()) {
+ if (fs::exists(filename)) {
string text = bformat(_("The file %1$s already exists.\n\n"
"Do you want to over-write that file?"),
MakeDisplayPath(filename));
// overwrite themselves. This check could be changed to
// boost::filesystem::equivalent(sourceFile, destFile) if export to
// other directories than the document directory is desired.
- if (!prefixIs(OnlyPath(sourceFile), lyx::support::os::getTmpDir()))
+ if (!prefixIs(OnlyPath(sourceFile), package().temp_dir()))
return ret;
if (!force) {
runparams.flavor = OutputParams::LATEX;
runparams.linelen = lyxrc.ascii_linelen;
vector<string> backends = Backends(*buffer);
- if (find(backends.begin(), backends.end(), format) == backends.end()) {
+ // FIXME: Without this test export to lyx13 would be through
+ // latex -> lyx -> lyx13, because the first backend below with a
+ // working conversion path is used. We should replace this test and
+ // the explicit loop below with a method
+ // getShortestPath(vector<string> const & from, string const & to)
+ // which returns the shortest path from one of the formats in 'from'
+ // to 'to'.
+ if (format == "lyx13x" && !converters.getPath("lyx", format).empty())
+ backend_format = "lyx";
+ else if (find(backends.begin(), backends.end(), format) == backends.end()) {
for (vector<string>::const_iterator it = backends.begin();
it != backends.end(); ++it) {
- Graph::EdgePath p =
- converters.getPath(*it, format);
+ Graph::EdgePath p = converters.getPath(*it, format);
if (!p.empty()) {
runparams.flavor = converters.getFlavor(p);
backend_format = *it;
// Ascii backend
if (backend_format == "text")
writeFileAscii(*buffer, filename, runparams);
+ // no backend
+ else if (backend_format == "lyx")
+ buffer->writeFile(filename);
// Linuxdoc backend
else if (buffer->isLinuxDoc()) {
runparams.nice = !put_in_tempdir;
else if (backend_format == format) {
runparams.nice = true;
buffer->makeLaTeXFile(filename, string(), runparams);
- } else if (contains(buffer->filePath(), ' ')) {
+ } else if (!lyxrc.tex_allows_spaces
+ && contains(buffer->filePath(), ' ')) {
Alert::error(_("File name error"),
_("The directory path to the document cannot contain spaces."));
return false;
}
if (status == CANCEL) {
buffer->message(_("Document export cancelled."));
- } else {
+ } else if (fs::exists(tmp_result_file)) {
// Finally copy the main file
status = copyFile(format, tmp_result_file,
result_file, result_file,
status == FORCE);
- buffer->message(bformat(_("Document exported as %1$s"
+ buffer->message(bformat(_("Document exported as %1$s "
"to file `%2$s'"),
formats.prettyName(format),
MakeDisplayPath(result_file)));
+ } else {
+ // This must be a dummy converter like fax (bug 1888)
+ buffer->message(bformat(_("Document exported as %1$s"),
+ formats.prettyName(format)));
}
}