2014-05-03 19:21:03 +08:00
|
|
|
/* uefiextract.cpp
|
|
|
|
|
|
|
|
Copyright (c) 2014, Nikolaj Schlej. All rights reserved.
|
|
|
|
This program and the accompanying materials
|
|
|
|
are licensed and made available under the terms and conditions of the BSD License
|
|
|
|
which accompanies this distribution. The full text of the license may be found at
|
|
|
|
http://opensource.org/licenses/bsd-license.php
|
|
|
|
|
|
|
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
|
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "uefiextract.h"
|
|
|
|
|
|
|
|
UEFIExtract::UEFIExtract(QObject *parent) :
|
|
|
|
QObject(parent)
|
|
|
|
{
|
|
|
|
ffsEngine = new FfsEngine(this);
|
|
|
|
}
|
|
|
|
|
|
|
|
UEFIExtract::~UEFIExtract()
|
|
|
|
{
|
|
|
|
delete ffsEngine;
|
|
|
|
}
|
|
|
|
|
2014-08-15 19:24:03 +08:00
|
|
|
UINT8 UEFIExtract::init(const QString & path)
|
2014-05-03 19:21:03 +08:00
|
|
|
{
|
2014-08-15 19:24:03 +08:00
|
|
|
fileInfo = QFileInfo(path);
|
2014-05-03 19:21:03 +08:00
|
|
|
|
2014-08-15 19:24:03 +08:00
|
|
|
if (!fileInfo.exists())
|
|
|
|
return ERR_FILE_OPEN;
|
2014-05-03 19:21:03 +08:00
|
|
|
|
2014-08-15 19:24:03 +08:00
|
|
|
QFile inputFile;
|
|
|
|
inputFile.setFileName(path);
|
2014-05-03 19:21:03 +08:00
|
|
|
|
2014-08-15 19:24:03 +08:00
|
|
|
if (!inputFile.open(QFile::ReadOnly))
|
|
|
|
return ERR_FILE_OPEN;
|
2014-05-03 19:21:03 +08:00
|
|
|
|
2014-08-15 19:24:03 +08:00
|
|
|
QByteArray buffer = inputFile.readAll();
|
|
|
|
inputFile.close();
|
2014-05-03 19:21:03 +08:00
|
|
|
|
2014-08-15 19:24:03 +08:00
|
|
|
UINT8 result = ffsEngine->parseImageFile(buffer);
|
|
|
|
if (result)
|
|
|
|
return result;
|
2014-05-03 19:21:03 +08:00
|
|
|
|
2014-08-15 19:24:03 +08:00
|
|
|
return ERR_SUCCESS;
|
|
|
|
}
|
|
|
|
|
|
|
|
UINT8 UEFIExtract::extract(QString guid)
|
|
|
|
{
|
2014-05-03 19:21:03 +08:00
|
|
|
QModelIndex rootIndex = ffsEngine->treeModel()->index(0, 0);
|
|
|
|
|
2014-08-15 19:24:03 +08:00
|
|
|
UINT8 result = ffsEngine->dump(rootIndex, fileInfo.fileName().append(".dump"), guid);
|
|
|
|
if (result)
|
|
|
|
return result;
|
|
|
|
|
2014-05-03 19:21:03 +08:00
|
|
|
return ERR_SUCCESS;
|
|
|
|
}
|