public:
CacheItem() {}
CacheItem(FileName const & orig_from, string const & to_format,
- time_t t, unsigned long c)
+ time_t t, unsigned long c)
: timestamp(t), checksum(c)
{
std::ostringstream os;
<< '-' << to_format;
cache_name = FileName(addName(cache_dir.absFilename(), os.str()));
LYXERR(Debug::FILES) << "Add file cache item " << orig_from
- << ' ' << to_format << ' ' << cache_name
- << ' ' << timestamp << ' ' << checksum
- << '.' << std::endl;
+ << ' ' << to_format << ' ' << cache_name
+ << ' ' << timestamp << ' ' << checksum
+ << '.' << std::endl;
}
~CacheItem() {}
FileName cache_name;
converted_file.empty())
return;
LYXERR(Debug::FILES) << BOOST_CURRENT_FUNCTION << ' ' << orig_from
- << ' ' << to_format << ' ' << converted_file
- << std::endl;
+ << ' ' << to_format << ' ' << converted_file
+ << std::endl;
+
+ // FIXME: Should not hardcode this (see bug 3819 for details)
+ if (to_format == "pstex") {
+ FileName const converted_eps(support::changeExtension(converted_file.absFilename(), "eps"));
+ add(orig_from, "eps", converted_eps);
+ } else if (to_format == "pdftex") {
+ FileName const converted_pdf(support::changeExtension(converted_file.absFilename(), "pdf"));
+ add(orig_from, "pdf", converted_pdf);
+ }
// Is the file in the cache already?
CacheItem * item = pimpl_->find(orig_from, to_format);
Mover const & mover = getMover(to_format);
if (item) {
LYXERR(Debug::FILES) << "ConverterCache::add(" << orig_from << "):\n"
- "The file is already in the cache."
- << std::endl;
+ "The file is already in the cache."
+ << std::endl;
// First test for timestamp
if (timestamp == item->timestamp) {
LYXERR(Debug::FILES) << "Same timestamp."
- << std::endl;
+ << std::endl;
return;
} else {
// Maybe the contents is still the same?
unsigned long const checksum = support::sum(orig_from);
if (checksum == item->checksum) {
LYXERR(Debug::FILES) << "Same checksum."
- << std::endl;
+ << std::endl;
return;
}
item->checksum = checksum;
}
- if (!mover.copy(converted_file, item->cache_name, 0600))
+ if (!mover.copy(converted_file, item->cache_name,
+ support::onlyFilename(item->cache_name.absFilename()), 0600))
LYXERR(Debug::FILES) << "ConverterCache::add("
- << orig_from << "):\n"
- "Could not copy file."
- << std::endl;
+ << orig_from << "):\n"
+ "Could not copy file."
+ << std::endl;
} else {
CacheItem new_item(orig_from, to_format, timestamp,
support::sum(orig_from));
- if (mover.copy(converted_file, new_item.cache_name, 0600)) {
+ if (mover.copy(converted_file, new_item.cache_name,
+ support::onlyFilename(new_item.cache_name.absFilename()), 0600)) {
FormatCache & format_cache = pimpl_->cache[orig_from];
if (format_cache.from_format.empty())
format_cache.from_format =
format_cache.cache[to_format] = new_item;
} else
LYXERR(Debug::FILES) << "ConverterCache::add("
- << orig_from << "):\n"
- "Could not copy file."
- << std::endl;
+ << orig_from << "):\n"
+ "Could not copy file."
+ << std::endl;
}
}
if (!lyxrc.use_converter_cache || orig_from.empty())
return;
LYXERR(Debug::FILES) << BOOST_CURRENT_FUNCTION << ' ' << orig_from
- << ' ' << to_format << std::endl;
+ << ' ' << to_format << std::endl;
CacheType::iterator const it1 = pimpl_->cache.find(orig_from);
if (it1 == pimpl_->cache.end())
if (!lyxrc.use_converter_cache || orig_from.empty())
return false;
LYXERR(Debug::FILES) << BOOST_CURRENT_FUNCTION << ' ' << orig_from
- << ' ' << to_format << std::endl;
+ << ' ' << to_format << std::endl;
CacheItem * const item = pimpl_->find(orig_from, to_format);
if (!item) {
string const & to_format) const
{
LYXERR(Debug::FILES) << BOOST_CURRENT_FUNCTION << ' ' << orig_from
- << ' ' << to_format << std::endl;
+ << ' ' << to_format << std::endl;
CacheItem * const item = pimpl_->find(orig_from, to_format);
BOOST_ASSERT(item);
if (!lyxrc.use_converter_cache || orig_from.empty() || dest.empty())
return false;
LYXERR(Debug::FILES) << BOOST_CURRENT_FUNCTION << ' ' << orig_from
- << ' ' << to_format << ' ' << dest << std::endl;
+ << ' ' << to_format << ' ' << dest << std::endl;
+
+ // FIXME: Should not hardcode this (see bug 3819 for details)
+ if (to_format == "pstex") {
+ FileName const dest_eps(support::changeExtension(dest.absFilename(), "eps"));
+ if (!copy(orig_from, "eps", dest_eps))
+ return false;
+ } else if (to_format == "pdftex") {
+ FileName const dest_pdf(support::changeExtension(dest.absFilename(), "pdf"));
+ if (!copy(orig_from, "pdf", dest_pdf))
+ return false;
+ }
CacheItem * const item = pimpl_->find(orig_from, to_format);
BOOST_ASSERT(item);
Mover const & mover = getMover(to_format);
- return mover.copy(item->cache_name, dest);
+ return mover.copy(item->cache_name, dest,
+ support::onlyFilename(dest.absFilename()));
}
} // namespace lyx