1
0
Fork 0
forked from len0rd/rockbox

Fix bootloader zip extraction filename case sensitivity.

When searching for the bootloader file in a zip archive the filename in the
archive might use a different casing than the one we're looking after. Make the
search case-insensitive to not fail to find the file in this case.

Change-Id: I05ffc67421e67fae045eabb7851cd99a3757b6d7
This commit is contained in:
Dominik Riebeling 2012-06-23 11:53:02 +02:00
parent 83d210493d
commit e359202aa1

View file

@ -225,8 +225,11 @@ bool BootloaderInstallBase::setOfFile(QString of, QStringList blfile)
// strip any path, we don't know the structure in the zip // strip any path, we don't know the structure in the zip
QString f = QFileInfo(blfile.at(i)).fileName(); QString f = QFileInfo(blfile.at(i)).fileName();
qDebug() << "[BootloaderInstallBase] searching archive for" << f; qDebug() << "[BootloaderInstallBase] searching archive for" << f;
int index = contents.indexOf(f); // FIXME: support files in folders // contents.indexOf() works case sensitive. Since the filename
if(index >= 0) { // casing is unknown (and might change) do this manually.
// FIXME: support files in folders
for(int j = 0; j < contents.size(); ++j) {
if(contents.at(j).compare(f, Qt::CaseInsensitive) == 0) {
found = true; found = true;
emit logItem(tr("Extracting firmware %1 from archive") emit logItem(tr("Extracting firmware %1 from archive")
.arg(f), LOGINFO); .arg(f), LOGINFO);
@ -234,11 +237,13 @@ bool BootloaderInstallBase::setOfFile(QString of, QStringList blfile)
m_tempof.open(); m_tempof.open();
m_offile = m_tempof.fileName(); m_offile = m_tempof.fileName();
m_tempof.close(); m_tempof.close();
if(!z.extractArchive(m_offile, contents.at(index))) { if(!z.extractArchive(m_offile, contents.at(j))) {
emit logItem(tr("Error extracting firmware from archive"), LOGERROR); emit logItem(tr("Error extracting firmware from archive"), LOGERROR);
found = false; found = false;
break; break;
} }
break;
}
} }
} }
if(!found) { if(!found) {