return;
}
item->checksum = checksum;
- if (!mover.copy(converted_file, item->cache_name)) {
+ if (!mover.copy(converted_file, item->cache_name,
+ onlyFilename(item->cache_name.absFilename()))) {
LYXERR(Debug::FILES, "Could not copy file " << orig_from << " to "
<< item->cache_name);
} else if (!item->cache_name.changePermission(0600)) {
} else {
CacheItem new_item(orig_from, to_format, timestamp,
orig_from.checksum());
- if (mover.copy(converted_file, new_item.cache_name)) {
+ if (mover.copy(converted_file, new_item.cache_name,
+ onlyFilename(new_item.cache_name.absFilename()))) {
if (!new_item.cache_name.changePermission(0600)) {
LYXERR(Debug::FILES, "Could not change file mode"
<< new_item.cache_name);
CacheItem * const item = pimpl_->find(orig_from, to_format);
LASSERT(item, /**/);
Mover const & mover = getMover(to_format);
- return mover.copy(item->cache_name, dest);
+ return mover.copy(item->cache_name, dest,
+ onlyFilename(dest.absFilename()));
}
} // namespace lyx
/** Copy file @c from to @c to.
* This version should be used to copy files from the original
- * location to the temporary directory, since @c to and @c latex
- * would be equal in this case.
+ * location to the temporary directory.
* \returns true if successful.
*/
bool
copy(support::FileName const & from, support::FileName const & to) const;
+ /** Copy file @c from to @c to.
+ * \see SpecialisedMover::SpecialisedMover() for an explanation of
+ * @c latex.
+ * This version should be used to copy files from the temporary
+ * directory to the export location, since @c to and @c latex may
+ * not be equal in this case.
+ * \returns true if successful.
+ * NOTE: Although this routine simply calls do_copy() and
+ * Mover::do_copy() does not itself make any use of the @c latex argument,
+ * SpecialisedMover overrides do_copy(), so SpecialisedMover::copy(), which
+ * is just Mover::copy(), calls SpecialisedMover::do_copy(), and the @c latex
+ * argument IS in that case used.
+ */
+ bool
+ copy(support::FileName const & from, support::FileName const & to,
+ std::string const & latex) const
+ {
+ return do_copy(from, to, latex);
+ }
+
/** Rename file @c from as @c to.
* This version should be used to move files from the original
- * location to the temporary directory, since @c to and @c latex
- * would be equal in this case.
+ * location to the temporary directory.
* \returns true if successful.
*/
bool
}
protected:
+ virtual bool
+ do_copy(support::FileName const & from, support::FileName const & to,
+ std::string const &) const;
+
virtual bool
do_rename(support::FileName const & from, support::FileName const & to,
std::string const &) const;
* For example, an Xfig .fig file can contain references to external
* picture files. If such a reference has a relative path, then the
* copied .fig file will require a transformation of the picture file
- * reference if it is to be found by Xfig.
+ * reference if it is to be found by Xfig.
+ *
+ * So, in this case, we need three arguments:
+ * (i) @c from the location of the file to be moved
+ * (ii) @c to the location to which it should be moved
+ * (iii) @c latex the identifier that should be used in the sort of
+ * transformation just mentioned.
*/
class SpecialisedMover : public Mover
{
* where $$s is a placeholder for the lyx support directory,
* $$i is a placeholder for the name of the file to be moved,
* $$o is a placeholder for the name of the file after moving,
- * $$l is a placeholder for the name of the file after moving,
- * suitable as argument to a latex include command. This is
- * either an absolute filename or relative to the master
- * document.
- * $$o and $$l can only differ if the file is copied from the
- * temporary directory to the export location. If it is copied
- * from the original location to the temporary directory, they
- * are the same, so $$l may be ommitted in this case.
+ * $$l is a placeholder for the latex argument, as explained above.
+ * $$o and $$l can only differ if the file is copied from the temporary
+ * directory to the export location. If it is copied from the original
+ * location to the temporary directory, they are the same, so $$l may be
+ * ignored in this case, as it is in the Mover baseclass.
*/
SpecialisedMover(std::string const & command)
: command_(command) {}