diff data/fileio/FileSource.cpp @ 834:fcee7e040ab4

Merge
author Chris Cannam
date Tue, 30 Jul 2013 18:15:30 +0100
parents 3cc81dbc31bb 12aff5a181bc
children e802e550a1f2
line wrap: on
line diff
--- a/data/fileio/FileSource.cpp	Fri Jul 19 13:47:11 2013 +0100
+++ b/data/fileio/FileSource.cpp	Tue Jul 30 18:15:30 2013 +0100
@@ -72,6 +72,7 @@
 
 FileSource::FileSource(QString fileOrUrl, ProgressReporter *reporter,
                        QString preferredContentType) :
+    m_rawFileOrUrl(fileOrUrl),
     m_url(fileOrUrl, QUrl::StrictMode),
     m_localFile(0),
     m_reply(0),
@@ -112,6 +113,9 @@
         std::cerr << "FileSource::FileSource: Failed to open local file with URL \"" << m_url.toString() << "\"; trying again assuming filename was encoded" << std::endl;
 #endif
         m_url = QUrl::fromEncoded(fileOrUrl.toLatin1());
+#ifdef DEBUG_FILE_SOURCE
+        std::cerr << "FileSource::FileSource: URL is now \"" << m_url.toString() << "\"" << std::endl;
+#endif
         init();
     }
 
@@ -290,15 +294,20 @@
 #endif
         bool literal = false;
         m_localFilename = m_url.toLocalFile();
+
         if (m_localFilename == "") {
             // QUrl may have mishandled the scheme (e.g. in a DOS path)
-            m_localFilename = m_url.toString();
+            m_localFilename = m_rawFileOrUrl;
+#ifdef DEBUG_FILE_SOURCE
+            std::cerr << "FileSource::init: Trying literal local filename \""
+                      << m_localFilename << "\"" << std::endl;
+#endif
             literal = true;
         }
         m_localFilename = QFileInfo(m_localFilename).absoluteFilePath();
 
 #ifdef DEBUG_FILE_SOURCE
-        std::cerr << "FileSource::init: URL translates to local filename \""
+        std::cerr << "FileSource::init: URL translates to absolute filename \""
                   << m_localFilename << "\" (with literal=" << literal << ")"
                   << std::endl;
 #endif
@@ -314,7 +323,7 @@
 #endif
                 // Again, QUrl may have been mistreating us --
                 // e.g. dropping a part that looks like query data
-                m_localFilename = m_url.toString();
+                m_localFilename = m_rawFileOrUrl;
                 literal = true;
                 if (!QFileInfo(m_localFilename).exists()) {
                     m_lastStatus = 404;