--- a/src/qtgui/rclmain_w.cpp
+++ b/src/qtgui/rclmain_w.cpp
@@ -1096,6 +1096,32 @@
url = string("file://") + fn;
}
+ // If using an actual file, check that it exists, and if it is
+ // compressed, we may need an uncompressed version
+ if (!fn.empty() && rclconfig->mimeViewerNeedsUncomp(doc.mimetype)) {
+ if (access(fn.c_str(), R_OK) != 0) {
+ QMessageBox::warning(0, "Recoll",
+ tr("Can't access file: ") +
+ QString::fromLocal8Bit(fn.c_str()));
+ return;
+ }
+ TempFile temp;
+ if (FileInterner::isCompressed(fn, rclconfig)) {
+ if (!FileInterner::maybeUncompressToTemp(temp, fn, rclconfig,
+ doc)) {
+ QMessageBox::warning(0, "Recoll",
+ tr("Can't uncompress file: ") +
+ QString::fromLocal8Bit(fn.c_str()));
+ return;
+ }
+ }
+ if (!temp.isNull()) {
+ m_tempfiles.push_back(temp);
+ fn = temp->filename();
+ url = string("file://") + fn;
+ }
+ }
+
// Substitute %xx inside prototype command
string efftime;
if (!doc.dmtime.empty() || !doc.fmtime.empty()) {
@@ -1134,6 +1160,7 @@
if (!istempfile)
historyEnterDoc(g_dynconf, doc.meta[Rcl::Doc::keyudi]);
+
// We should actually monitor these processes so that we can
// delete the temp files when they exit
LOGDEB(("Executing: [%s]\n", ncmd.c_str()));