]> git.lyx.org Git - lyx.git/blobdiff - src/ConverterCache.cpp
* src/LyXRC.{cpp,h}:
[lyx.git] / src / ConverterCache.cpp
index 16e0c7f747273eea1ddf89a673d42a037fd195a2..611bf63e33198dad30895c821c8ed8ee59fad5b5 100644 (file)
@@ -135,7 +135,7 @@ void ConverterCache::Impl::readIndex()
                CacheItem item(orig_from_name, to_format, timestamp, checksum);
 
                // Don't cache files that do not exist anymore
-               if (!fs::exists(orig_from_name.toFilesystemEncoding())) {
+               if (!orig_from_name.exists()) {
                        LYXERR(Debug::FILES) << "Not caching file `"
                                << orig_from << "' (does not exist anymore)."
                                << std::endl;
@@ -146,7 +146,7 @@ void ConverterCache::Impl::readIndex()
                // Don't add items that are not in the cache anymore
                // This can happen if two instances of LyX are running
                // at the same time and update the index file independantly.
-               if (!fs::exists(item.cache_name.toFilesystemEncoding())) {
+               if (!item.cache_name.exists()) {
                        LYXERR(Debug::FILES) << "Not caching file `"
                                << orig_from
                                << "' (cached copy does not exist anymore)."
@@ -155,8 +155,8 @@ void ConverterCache::Impl::readIndex()
                }
 
                // Delete the cached file if it is too old
-               if (difftime(now, fs::last_write_time(item.cache_name.toFilesystemEncoding())) >
-                   lyxrc.converter_cache_maxage) {
+               if (difftime(now, item.cache_name.lastModified())
+                               > lyxrc.converter_cache_maxage) {
                        LYXERR(Debug::FILES) << "Not caching file `"
                                << orig_from << "' (too old)." << std::endl;
                        support::unlink(item.cache_name);
@@ -228,7 +228,7 @@ void ConverterCache::init()
        // We do this here and not in the constructor because package() gets
        // initialized after all static variables.
        cache_dir = FileName(addName(support::package().user_support().absFilename(), "cache"));
-       if (!fs::exists(cache_dir.toFilesystemEncoding()))
+       if (!cache_dir.exists())
                if (support::mkdir(cache_dir, 0700) != 0) {
                        lyxerr << "Could not create cache directory `"
                               << cache_dir << "'." << std::endl;
@@ -261,10 +261,19 @@ void ConverterCache::add(FileName const & orig_from, string const & to_format,
                             << ' ' << 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);
 
-       time_t const timestamp = fs::last_write_time(orig_from.toFilesystemEncoding());
+       time_t const timestamp = orig_from.lastModified();
        Mover const & mover = getMover(to_format);
        if (item) {
                LYXERR(Debug::FILES) << "ConverterCache::add(" << orig_from << "):\n"
@@ -286,15 +295,18 @@ void ConverterCache::add(FileName const & orig_from, string const & to_format,
                        }
                        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;
+               }
        } 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 =
@@ -418,10 +430,22 @@ bool ConverterCache::copy(FileName const & orig_from, string const & to_format,
        LYXERR(Debug::FILES) << BOOST_CURRENT_FUNCTION << ' ' << orig_from
                             << ' ' << 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