Mercurial > hg > svcore
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;