Make Rockbox Utility error out if the zip file its going to install requires more space than left on the device. Calculation adds a safety space of 1MB so you need at least 1MB more free space than the extracted archive. This also catches differences due to the size calculation not taking cluster losses into account. Free disk space is also displayed in the sysinfo dialog. Fixes FS#9417.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19428 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Dominik Riebeling 2008-12-13 20:09:31 +00:00
parent b42f379fa3
commit bc7917daeb
6 changed files with 100 additions and 12 deletions

View file

@ -19,7 +19,7 @@
#include "installzip.h"
#include "rbunzip.h"
#include "utils.h"
ZipInstaller::ZipInstaller(QObject* parent): QObject(parent)
{
@ -148,6 +148,17 @@ void ZipInstaller::downloadDone(bool error)
return;
}
// check for free space. Make sure after installation will still be
// some room for operating (also includes calculation mistakes due to
// cluster sizes on the player).
if(filesystemFree(m_mountpoint) < (uz.totalSize() + 1000000)) {
m_dp->addItem(tr("Not enough disk space! Aborting."), LOGERROR);
m_dp->abort();
m_dp->setProgressMax(1);
m_dp->setProgressValue(1);
emit done(true);
return;
}
ec = uz.extractArchive(m_mountpoint);
// TODO: better handling of aborted unzip operation.
if(ec != UnZip::Ok) {