X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fexporter.C;h=c79f001ea2a69bc1216bf7a1599ba39aca8a5181;hb=d1f2a9c0000f0ad038425900b001c16a56c72afa;hp=bf270b5ba7be84af449f5d8b83e1ee1fdf92ec42;hpb=e978fa42e38be22e9312be963ba6512fcd4b45ef;p=lyx.git diff --git a/src/exporter.C b/src/exporter.C index bf270b5ba7..c79f001ea2 100644 --- a/src/exporter.C +++ b/src/exporter.C @@ -25,14 +25,16 @@ #include "format.h" #include "gettext.h" #include "lyxrc.h" +#include "mover.h" #include "output_plaintext.h" #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 using lyx::support::AddName; using lyx::support::bformat; @@ -42,12 +44,14 @@ using lyx::support::MakeAbsPath; 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 { @@ -64,7 +68,7 @@ vector const Backends(Buffer const & buffer) /// 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)); @@ -92,8 +96,9 @@ enum CopyStatus { * overwriting files anymore. * - CANCEL if the export should be cancelled */ -CopyStatus copyFile(string const & sourceFile, string const & destFile, - bool force) +CopyStatus copyFile(string const & format, + string const & sourceFile, string const & destFile, + string const & latexFile, bool force) { CopyStatus ret = force ? FORCE : SUCCESS; @@ -101,7 +106,7 @@ CopyStatus copyFile(string const & sourceFile, string const & destFile, // 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) { @@ -117,7 +122,8 @@ CopyStatus copyFile(string const & sourceFile, string const & destFile, } } - if (!lyx::support::copy(sourceFile, destFile)) + Mover const & mover = movers(format); + if (!mover.copy(sourceFile, destFile, latexFile)) Alert::error(_("Couldn't copy file"), bformat(_("Copying %1$s to %2$s failed."), MakeDisplayPath(sourceFile), @@ -203,15 +209,19 @@ bool Exporter::Export(Buffer * buffer, string const & format, string const dest = OnlyPath(result_file); CopyStatus status = SUCCESS; for (vector::const_iterator it = files.begin(); - it != files.end() && status != CANCEL; ++it) - status = copyFile(it->sourceName, + it != files.end() && status != CANCEL; ++it) { + string const fmt = + formats.getFormatFromFile(it->sourceName); + status = copyFile(fmt, it->sourceName, MakeAbsPath(it->exportName, dest), - status == FORCE); + it->exportName, status == FORCE); + } if (status == CANCEL) { buffer->message(_("Document export cancelled.")); } else { // Finally copy the main file - status = copyFile(tmp_result_file, result_file, + status = copyFile(format, tmp_result_file, + result_file, result_file, status == FORCE); buffer->message(bformat(_("Document exported as %1$s" "to file `%2$s'"),