diff options
Diffstat (limited to 'libutil/src/dlqueue.cpp')
-rw-r--r-- | libutil/src/dlqueue.cpp | 39 |
1 files changed, 19 insertions, 20 deletions
diff --git a/libutil/src/dlqueue.cpp b/libutil/src/dlqueue.cpp index 7e4d47eb..9a080c17 100644 --- a/libutil/src/dlqueue.cpp +++ b/libutil/src/dlqueue.cpp @@ -17,6 +17,13 @@ JobPtr DownloadJob::create ( QUrl url, QString target_path, QString expected_md5 return JobPtr ( new DownloadJob ( url, target_path, expected_md5 ) ); } +bool DownloadJob::ensurePathExists(QString filenamepath) +{ + QFileInfo a ( filenamepath ); + QDir dir; + return (dir.mkpath ( a.path() )); +} + void DownloadJob::start() { m_manager.reset ( new QNetworkAccessManager() ); @@ -24,34 +31,26 @@ void DownloadJob::start() { QString filename = m_target_path; m_output_file.setFileName ( filename ); - // if there already is a file and md5 checking is in effect - if ( m_output_file.exists() && m_check_md5 ) + // if there already is a file and md5 checking is in effect and it can be opened + if ( m_check_md5 && m_output_file.exists() && m_output_file.open ( QIODevice::ReadOnly ) ) { - // and it can be opened - if ( m_output_file.open ( QIODevice::ReadOnly ) ) + // check the md5 against the expected one + QString hash = QCryptographicHash::hash ( m_output_file.readAll(), QCryptographicHash::Md5 ).toHex().constData(); + m_output_file.close(); + // skip this file if they match + if ( hash == m_expected_md5 ) { - // check the md5 against the expected one - QString hash = QCryptographicHash::hash ( m_output_file.readAll(), QCryptographicHash::Md5 ).toHex().constData(); - m_output_file.close(); - // skip this file if they match - if ( hash == m_expected_md5 ) - { - qDebug() << "Skipping " << m_url.toString() << ": md5 match."; - emit finish(); - return; - } + qDebug() << "Skipping " << m_url.toString() << ": md5 match."; + emit finish(); + return; } } - QFileInfo a ( filename ); - QDir dir; - if ( !dir.mkpath ( a.path() ) ) + if(!ensurePathExists(filename)) { - /* - * error when making the folder structure - */ emit fail(); return; } + if ( !m_output_file.open ( QIODevice::WriteOnly ) ) { /* |