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:
parent
83d210493d
commit
e359202aa1
1 changed files with 17 additions and 12 deletions
|
|
@ -225,8 +225,11 @@ bool BootloaderInstallBase::setOfFile(QString of, QStringList blfile)
|
|||
// strip any path, we don't know the structure in the zip
|
||||
QString f = QFileInfo(blfile.at(i)).fileName();
|
||||
qDebug() << "[BootloaderInstallBase] searching archive for" << f;
|
||||
int index = contents.indexOf(f); // FIXME: support files in folders
|
||||
if(index >= 0) {
|
||||
// contents.indexOf() works case sensitive. Since the filename
|
||||
// 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;
|
||||
emit logItem(tr("Extracting firmware %1 from archive")
|
||||
.arg(f), LOGINFO);
|
||||
|
|
@ -234,11 +237,13 @@ bool BootloaderInstallBase::setOfFile(QString of, QStringList blfile)
|
|||
m_tempof.open();
|
||||
m_offile = m_tempof.fileName();
|
||||
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);
|
||||
found = false;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!found) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue