mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-12-15 16:15:11 -05:00
Move error message generation out of irivertools.cpp to make it independent from the GUI. First step to improve code reuse later.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17614 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
3de96af125
commit
9c3bbc3bf9
3 changed files with 106 additions and 75 deletions
|
|
@ -312,7 +312,7 @@ void BootloaderInstaller::gigabeatPrepare()
|
||||||
QString url = m_bootloaderUrlBase + "/gigabeat/" + m_bootloadername;
|
QString url = m_bootloaderUrlBase + "/gigabeat/" + m_bootloadername;
|
||||||
|
|
||||||
m_dp->addItem(tr("Downloading file %1.%2")
|
m_dp->addItem(tr("Downloading file %1.%2")
|
||||||
.arg(QFileInfo(url).baseName(), QFileInfo(url).completeSuffix()),LOGINFO);
|
.arg(QFileInfo(url).baseName(), QFileInfo(url).completeSuffix()),LOGINFO);
|
||||||
|
|
||||||
// temporary file needs to be opened to get the filename
|
// temporary file needs to be opened to get the filename
|
||||||
downloadFile.open();
|
downloadFile.open();
|
||||||
|
|
@ -325,11 +325,11 @@ void BootloaderInstaller::gigabeatPrepare()
|
||||||
connect(getter, SIGNAL(done(bool)), this, SLOT(downloadDone(bool)));
|
connect(getter, SIGNAL(done(bool)), this, SLOT(downloadDone(bool)));
|
||||||
connect(getter, SIGNAL(dataReadProgress(int, int)), this, SLOT(updateDataReadProgress(int, int)));
|
connect(getter, SIGNAL(dataReadProgress(int, int)), this, SLOT(updateDataReadProgress(int, int)));
|
||||||
connect(m_dp, SIGNAL(aborted()), getter, SLOT(abort()));
|
connect(m_dp, SIGNAL(aborted()), getter, SLOT(abort()));
|
||||||
|
|
||||||
getter->getFile(QUrl(url));
|
getter->getFile(QUrl(url));
|
||||||
}
|
}
|
||||||
else //UnInstallation
|
else //UnInstallation
|
||||||
{
|
{
|
||||||
QString firmware;
|
QString firmware;
|
||||||
firmware = resolvePathCase(m_mountpoint + "/GBSYSTEM/FWIMG/FWIMG01.DAT");
|
firmware = resolvePathCase(m_mountpoint + "/GBSYSTEM/FWIMG/FWIMG01.DAT");
|
||||||
QString firmwareOrig = resolvePathCase(firmware.append(".ORIG"));
|
QString firmwareOrig = resolvePathCase(firmware.append(".ORIG"));
|
||||||
|
|
@ -339,7 +339,7 @@ void BootloaderInstaller::gigabeatPrepare()
|
||||||
// check if original firmware exists
|
// check if original firmware exists
|
||||||
if(!firmwareOrigFI.exists())
|
if(!firmwareOrigFI.exists())
|
||||||
{
|
{
|
||||||
m_dp->addItem(tr("Could not find the Original Firmware at: %1")
|
m_dp->addItem(tr("Could not find the Original Firmware at: %1")
|
||||||
.arg(firmwareOrig),LOGERROR);
|
.arg(firmwareOrig),LOGERROR);
|
||||||
emit done(true);
|
emit done(true);
|
||||||
return;
|
return;
|
||||||
|
|
@ -351,7 +351,7 @@ void BootloaderInstaller::gigabeatPrepare()
|
||||||
//remove modified firmware
|
//remove modified firmware
|
||||||
if(!firmwareFile.remove())
|
if(!firmwareFile.remove())
|
||||||
{
|
{
|
||||||
m_dp->addItem(tr("Could not remove the Firmware at: %1")
|
m_dp->addItem(tr("Could not remove the Firmware at: %1")
|
||||||
.arg(firmware),LOGERROR);
|
.arg(firmware),LOGERROR);
|
||||||
emit done(true);
|
emit done(true);
|
||||||
return;
|
return;
|
||||||
|
|
@ -360,7 +360,7 @@ void BootloaderInstaller::gigabeatPrepare()
|
||||||
// rename original firmware back
|
// rename original firmware back
|
||||||
if(!firmwareOrigFile.rename(firmware))
|
if(!firmwareOrigFile.rename(firmware))
|
||||||
{
|
{
|
||||||
m_dp->addItem(tr("Could not copy the Firmware from: %1 to %2")
|
m_dp->addItem(tr("Could not copy the Firmware from: %1 to %2")
|
||||||
.arg(firmwareOrig,firmware),LOGERROR);
|
.arg(firmwareOrig,firmware),LOGERROR);
|
||||||
emit done(true);
|
emit done(true);
|
||||||
return;
|
return;
|
||||||
|
|
@ -369,7 +369,7 @@ void BootloaderInstaller::gigabeatPrepare()
|
||||||
removeInstallLog();
|
removeInstallLog();
|
||||||
|
|
||||||
emit done(false); //success
|
emit done(false); //success
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1330,9 +1330,22 @@ void BootloaderInstaller::iriverFinish()
|
||||||
newHex.close();
|
newHex.close();
|
||||||
|
|
||||||
// iriver decode
|
// iriver decode
|
||||||
if (iriver_decode(m_origfirmware, firmwareBinName, FALSE, STRIP_NONE,m_dp) == -1)
|
int result;
|
||||||
|
if ((result = iriver_decode(m_origfirmware, firmwareBinName, FALSE, STRIP_NONE)) < 0)
|
||||||
{
|
{
|
||||||
m_dp->addItem(tr("Error in descramble"),LOGERROR);
|
QString error;
|
||||||
|
switch(result) {
|
||||||
|
case -1: error = tr("Can't open input file"); break;
|
||||||
|
case -2: error = tr("Can't open output file"); break;
|
||||||
|
case -3: error = tr("invalid file: header length wrong"); break;
|
||||||
|
case -4: error = tr("invalid file: unrecognized header"); break;
|
||||||
|
case -5: error = tr("invalid file: \"length\" field wrong"); break;
|
||||||
|
case -6: error = tr("invalid file: \"length2\" field wrong"); break;
|
||||||
|
case -7: error = tr("invalid file: internal checksum error"); break;
|
||||||
|
case -8: error = tr("invalid file: \"length3\" field wrong"); break;
|
||||||
|
default: error = tr("unknown"); break;
|
||||||
|
}
|
||||||
|
m_dp->addItem(tr("Error in descramble: %1").arg(error), LOGERROR);
|
||||||
firmwareBin.remove();
|
firmwareBin.remove();
|
||||||
newBin.remove();
|
newBin.remove();
|
||||||
newHex.remove();
|
newHex.remove();
|
||||||
|
|
@ -1340,9 +1353,20 @@ void BootloaderInstaller::iriverFinish()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// mkboot
|
// mkboot
|
||||||
if (!mkboot(firmwareBinName, newBinName, m_tempfilename, origin,m_dp))
|
if((result = mkboot(firmwareBinName, newBinName, m_tempfilename, origin)) < 0)
|
||||||
{
|
{
|
||||||
m_dp->addItem(tr("Error in patching"),LOGERROR);
|
QString error;
|
||||||
|
switch(result) {
|
||||||
|
case -1: error = tr("could not open input file"); break;
|
||||||
|
case -2: error = tr("reading header failed"); break;
|
||||||
|
case -3: error = tr("reading firmware failed"); break;
|
||||||
|
case -4: error = tr("can't open bootloader file"); break;
|
||||||
|
case -5: error = tr("reading bootloader file failed"); break;
|
||||||
|
case -6: error = tr("can't open output file"); break;
|
||||||
|
case -7: error = tr("writing output file failed"); break;
|
||||||
|
}
|
||||||
|
m_dp->addItem(tr("Error in patching: %1").arg(error), LOGERROR);
|
||||||
|
|
||||||
firmwareBin.remove();
|
firmwareBin.remove();
|
||||||
newBin.remove();
|
newBin.remove();
|
||||||
newHex.remove();
|
newHex.remove();
|
||||||
|
|
@ -1350,9 +1374,22 @@ void BootloaderInstaller::iriverFinish()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// iriver_encode
|
// iriver_encode
|
||||||
if (iriver_encode(newBinName, newHexName, FALSE,m_dp) == -1)
|
if((result = iriver_encode(newBinName, newHexName, FALSE)) < 0)
|
||||||
{
|
{
|
||||||
m_dp->addItem(tr("Error in scramble"),LOGERROR);
|
QString error;
|
||||||
|
switch(result) {
|
||||||
|
case -1: error = tr("Can't open input file"); break;
|
||||||
|
case -2: error = tr("Can't open output file"); break;
|
||||||
|
case -3: error = tr("invalid file: header length wrong"); break;
|
||||||
|
case -4: error = tr("invalid file: unrecognized header"); break;
|
||||||
|
case -5: error = tr("invalid file: \"length\" field wrong"); break;
|
||||||
|
case -6: error = tr("invalid file: \"length2\" field wrong"); break;
|
||||||
|
case -7: error = tr("invalid file: internal checksum error"); break;
|
||||||
|
case -8: error = tr("invalid file: \"length3\" field wrong"); break;
|
||||||
|
default: error = tr("unknown"); break;
|
||||||
|
}
|
||||||
|
m_dp->addItem(tr("Error in scramble: %1").arg(error), LOGERROR);
|
||||||
|
|
||||||
firmwareBin.remove();
|
firmwareBin.remove();
|
||||||
newBin.remove();
|
newBin.remove();
|
||||||
newHex.remove();
|
newHex.remove();
|
||||||
|
|
|
||||||
|
|
@ -18,9 +18,9 @@
|
||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include <QtCore>
|
||||||
#include "irivertools.h"
|
#include "irivertools.h"
|
||||||
|
|
||||||
|
|
||||||
const unsigned char munge[] = {
|
const unsigned char munge[] = {
|
||||||
0x7a, 0x36, 0xc4, 0x43, 0x49, 0x6b, 0x35, 0x4e, 0xa3, 0x46, 0x25, 0x84,
|
0x7a, 0x36, 0xc4, 0x43, 0x49, 0x6b, 0x35, 0x4e, 0xa3, 0x46, 0x25, 0x84,
|
||||||
0x4d, 0x73, 0x74, 0x61
|
0x4d, 0x73, 0x74, 0x61
|
||||||
|
|
@ -47,7 +47,7 @@ const unsigned char header[][16] = {
|
||||||
/* begin mkboot.c excerpt */
|
/* begin mkboot.c excerpt */
|
||||||
unsigned char image[0x400000 + 0x220 + 0x400000/0x200];
|
unsigned char image[0x400000 + 0x220 + 0x400000/0x200];
|
||||||
|
|
||||||
bool mkboot(QString infile, QString outfile,QString bootloader,int origin,ProgressloggerInterface* dp)
|
int mkboot(QString infile, QString outfile, QString bootloader, int origin)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int len,bllen;
|
int len,bllen;
|
||||||
|
|
@ -59,13 +59,13 @@ bool mkboot(QString infile, QString outfile,QString bootloader,int origin,Progre
|
||||||
QFile f(infile);
|
QFile f(infile);
|
||||||
if(!f.open(QIODevice::ReadOnly))
|
if(!f.open(QIODevice::ReadOnly))
|
||||||
{
|
{
|
||||||
dp->addItem("Could not open: %1" + infile,LOGERROR);
|
// can't open input file
|
||||||
return false;
|
return -1;
|
||||||
}
|
}
|
||||||
i = f.read((char*)image,16);
|
i = f.read((char*)image,16);
|
||||||
if(i < 16) {
|
if(i < 16) {
|
||||||
dp->addItem("reading header failed",LOGERROR);
|
// reading header failed
|
||||||
return false;
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This is the length of the binary image without the scrambling
|
/* This is the length of the binary image without the scrambling
|
||||||
|
|
@ -77,8 +77,8 @@ bool mkboot(QString infile, QString outfile,QString bootloader,int origin,Progre
|
||||||
len = binary_length+0x200-16;
|
len = binary_length+0x200-16;
|
||||||
i = f.read((char*)image+16, len);
|
i = f.read((char*)image+16, len);
|
||||||
if(i < len) {
|
if(i < len) {
|
||||||
dp->addItem("reading firmware failed",LOGERROR);
|
// reading firmware failed
|
||||||
return false;
|
return -3;
|
||||||
}
|
}
|
||||||
|
|
||||||
f.close();
|
f.close();
|
||||||
|
|
@ -86,24 +86,24 @@ bool mkboot(QString infile, QString outfile,QString bootloader,int origin,Progre
|
||||||
f.setFileName(bootloader);
|
f.setFileName(bootloader);
|
||||||
if(!f.open(QIODevice::ReadOnly))
|
if(!f.open(QIODevice::ReadOnly))
|
||||||
{
|
{
|
||||||
dp->addItem("Could not open: %1" + bootloader,LOGERROR);
|
// can't open bootloader file
|
||||||
return false;
|
return -4;
|
||||||
}
|
}
|
||||||
|
|
||||||
bllen = f.size();
|
bllen = f.size();
|
||||||
|
|
||||||
i = f.read((char*)image+0x220 + origin, bllen);
|
i = f.read((char*)image+0x220 + origin, bllen);
|
||||||
if(i < bllen) {
|
if(i < bllen) {
|
||||||
dp->addItem("reading bootloader failed",LOGERROR);
|
// reading bootloader file failed
|
||||||
return false;
|
return -5;
|
||||||
}
|
}
|
||||||
|
|
||||||
f.close();
|
f.close();
|
||||||
f.setFileName(outfile);
|
f.setFileName(outfile);
|
||||||
if(!f.open(QIODevice::WriteOnly))
|
if(!f.open(QIODevice::WriteOnly))
|
||||||
{
|
{
|
||||||
dp->addItem("Could not open: %1" + outfile,LOGERROR);
|
// can't open output file
|
||||||
return false;
|
return -6;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Patch the reset vector to start the boot loader */
|
/* Patch the reset vector to start the boot loader */
|
||||||
|
|
@ -154,13 +154,13 @@ bool mkboot(QString infile, QString outfile,QString bootloader,int origin,Progre
|
||||||
|
|
||||||
i = f.write((char*)image,total_length);
|
i = f.write((char*)image,total_length);
|
||||||
if(i < total_length) {
|
if(i < total_length) {
|
||||||
dp->addItem("writing bootloader failed",LOGERROR);
|
// writing bootloader file failed
|
||||||
return false;
|
return -7;
|
||||||
}
|
}
|
||||||
|
|
||||||
f.close();
|
f.close();
|
||||||
|
|
||||||
return true;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* end mkboot.c excerpt */
|
/* end mkboot.c excerpt */
|
||||||
|
|
@ -208,7 +208,7 @@ static void modifyheader( unsigned char * data )
|
||||||
};
|
};
|
||||||
|
|
||||||
int iriver_decode(QString infile_name, QString outfile_name, unsigned int modify,
|
int iriver_decode(QString infile_name, QString outfile_name, unsigned int modify,
|
||||||
enum striptype stripmode,ProgressloggerInterface* dp )
|
enum striptype stripmode)
|
||||||
{
|
{
|
||||||
QFile infile(infile_name);
|
QFile infile(infile_name);
|
||||||
QFile outfile(outfile_name);
|
QFile outfile(outfile_name);
|
||||||
|
|
@ -226,32 +226,30 @@ int iriver_decode(QString infile_name, QString outfile_name, unsigned int modify
|
||||||
|
|
||||||
if(!infile.open(QIODevice::ReadOnly))
|
if(!infile.open(QIODevice::ReadOnly))
|
||||||
{
|
{
|
||||||
dp->addItem("Could not open: %1" + infile_name,LOGERROR);
|
// can't open input file
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if(!outfile.open(QIODevice::WriteOnly))
|
if(!outfile.open(QIODevice::WriteOnly))
|
||||||
{
|
{
|
||||||
dp->addItem("Could not open: %1" + outfile_name,LOGERROR);
|
// can't open output file
|
||||||
return -1;
|
return -2;
|
||||||
}
|
}
|
||||||
lenread = infile.read( (char*)headerdata, 512);
|
lenread = infile.read( (char*)headerdata, 512);
|
||||||
if( lenread != 512 )
|
if( lenread != 512 )
|
||||||
{
|
{
|
||||||
dp->addItem("This doesn't look like a valid encrypted iHP"
|
// header length doesn't match
|
||||||
"firmware - reason: header length.",LOGERROR);
|
|
||||||
infile.close();
|
infile.close();
|
||||||
outfile.close();
|
outfile.close();
|
||||||
return -1;
|
return -3;
|
||||||
};
|
};
|
||||||
|
|
||||||
i = testheader( headerdata );
|
i = testheader( headerdata );
|
||||||
if( i == -1 )
|
if( i == -1 )
|
||||||
{
|
{
|
||||||
dp->addItem("This firmware is for an unknown model, or is not"
|
// header unknown
|
||||||
" a valid encrypted iHP firmware.",LOGERROR);
|
|
||||||
infile.close();
|
infile.close();
|
||||||
outfile.close();
|
outfile.close();
|
||||||
return -1;
|
return -4;
|
||||||
};
|
};
|
||||||
fprintf( stderr, "Model %s\n", models[ i ] );
|
fprintf( stderr, "Model %s\n", models[ i ] );
|
||||||
|
|
||||||
|
|
@ -270,11 +268,10 @@ int iriver_decode(QString infile_name, QString outfile_name, unsigned int modify
|
||||||
dwLength2>>9 != dwLength3 ||
|
dwLength2>>9 != dwLength3 ||
|
||||||
dwLength2+dwLength3+512 != dwLength1 )
|
dwLength2+dwLength3+512 != dwLength1 )
|
||||||
{
|
{
|
||||||
dp->addItem("This doesn't look like a valid encrypted "
|
// file 'length' data is wrong
|
||||||
"iHP firmware - reason: file 'length' data.",LOGERROR);
|
|
||||||
infile.close();
|
infile.close();
|
||||||
outfile.close();
|
outfile.close();
|
||||||
return -1;
|
return -5;
|
||||||
};
|
};
|
||||||
|
|
||||||
pChecksums = ppChecksums = (unsigned char *)( malloc( dwLength3 ) );
|
pChecksums = ppChecksums = (unsigned char *)( malloc( dwLength3 ) );
|
||||||
|
|
@ -332,11 +329,10 @@ int iriver_decode(QString infile_name, QString outfile_name, unsigned int modify
|
||||||
|
|
||||||
if( fp != dwLength2 )
|
if( fp != dwLength2 )
|
||||||
{
|
{
|
||||||
dp->addItem("This doesn't look like a valid encrypted "
|
// 'length2' field mismatch
|
||||||
"iHP firmware - reason: 'length2' mismatch.",LOGERROR);
|
|
||||||
infile.close();
|
infile.close();
|
||||||
outfile.close();
|
outfile.close();
|
||||||
return -1;
|
return -6;
|
||||||
};
|
};
|
||||||
|
|
||||||
fp = 0;
|
fp = 0;
|
||||||
|
|
@ -349,22 +345,20 @@ int iriver_decode(QString infile_name, QString outfile_name, unsigned int modify
|
||||||
outfile.write((char*) blockdata, lenread );
|
outfile.write((char*) blockdata, lenread );
|
||||||
if( memcmp( ppChecksums, blockdata, lenread ) != 0 )
|
if( memcmp( ppChecksums, blockdata, lenread ) != 0 )
|
||||||
{
|
{
|
||||||
dp->addItem("This doesn't look like a valid encrypted "
|
// file checksum wrong
|
||||||
"iHP firmware - reason: Checksum mismatch!",LOGERROR);
|
|
||||||
infile.close();
|
infile.close();
|
||||||
outfile.close();
|
outfile.close();
|
||||||
return -1;
|
return -7;
|
||||||
};
|
};
|
||||||
ppChecksums += lenread;
|
ppChecksums += lenread;
|
||||||
};
|
};
|
||||||
|
|
||||||
if( fp != dwLength3 )
|
if( fp != dwLength3 )
|
||||||
{
|
{
|
||||||
dp->addItem("This doesn't look like a valid encrypted "
|
// 'length3' field mismatch
|
||||||
"iHP firmware - reason: 'length3' mismatch.",LOGERROR);
|
|
||||||
infile.close();
|
infile.close();
|
||||||
outfile.close();
|
outfile.close();
|
||||||
return -1;
|
return -8;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -392,7 +386,7 @@ int iriver_decode(QString infile_name, QString outfile_name, unsigned int modify
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
int iriver_encode(QString infile_name, QString outfile_name, unsigned int modify,ProgressloggerInterface* dp )
|
int iriver_encode(QString infile_name, QString outfile_name, unsigned int modify)
|
||||||
{
|
{
|
||||||
QFile infile(infile_name);
|
QFile infile(infile_name);
|
||||||
QFile outfile(outfile_name);
|
QFile outfile(outfile_name);
|
||||||
|
|
@ -409,22 +403,23 @@ int iriver_encode(QString infile_name, QString outfile_name, unsigned int modify
|
||||||
|
|
||||||
if(!infile.open(QIODevice::ReadOnly))
|
if(!infile.open(QIODevice::ReadOnly))
|
||||||
{
|
{
|
||||||
dp->addItem("Could not open: %1" + infile_name,LOGERROR);
|
// can't open input file
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if(!outfile.open(QIODevice::WriteOnly))
|
if(!outfile.open(QIODevice::WriteOnly))
|
||||||
{
|
{
|
||||||
dp->addItem("Could not open: %1" + outfile_name,LOGERROR);
|
// can't open output file
|
||||||
return -1;
|
infile.close();
|
||||||
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
lenread = infile.read((char*) headerdata, 512 );
|
lenread = infile.read((char*) headerdata, 512 );
|
||||||
if( lenread != 512 )
|
if( lenread != 512 )
|
||||||
{
|
{
|
||||||
dp->addItem("This doesn't look like a valid decoded "
|
// header length error
|
||||||
"iHP firmware - reason: header length.",LOGERROR);
|
|
||||||
infile.close();
|
infile.close();
|
||||||
outfile.close();
|
outfile.close();
|
||||||
|
return -3;
|
||||||
};
|
};
|
||||||
|
|
||||||
if( modify )
|
if( modify )
|
||||||
|
|
@ -435,10 +430,10 @@ int iriver_encode(QString infile_name, QString outfile_name, unsigned int modify
|
||||||
i = testheader( headerdata );
|
i = testheader( headerdata );
|
||||||
if( i == -1 )
|
if( i == -1 )
|
||||||
{
|
{
|
||||||
dp->addItem("This firmware is for an unknown model, or is not"
|
// header verification error
|
||||||
" a valid decoded iHP firmware.",LOGERROR);
|
|
||||||
infile.close();
|
infile.close();
|
||||||
outfile.close();
|
outfile.close();
|
||||||
|
return -4;
|
||||||
};
|
};
|
||||||
fprintf( stderr, "Model %s\n", models[ i ] );
|
fprintf( stderr, "Model %s\n", models[ i ] );
|
||||||
|
|
||||||
|
|
@ -456,10 +451,10 @@ int iriver_encode(QString infile_name, QString outfile_name, unsigned int modify
|
||||||
dwLength3 > dwLength1 ||
|
dwLength3 > dwLength1 ||
|
||||||
dwLength2+dwLength3+512 != dwLength1 )
|
dwLength2+dwLength3+512 != dwLength1 )
|
||||||
{
|
{
|
||||||
dp->addItem("This doesn't look like a valid decoded "
|
// file 'length' error
|
||||||
"iHP firmware - reason:file 'length' data.",LOGERROR);
|
|
||||||
infile.close();
|
infile.close();
|
||||||
outfile.close();
|
outfile.close();
|
||||||
|
return -5;
|
||||||
};
|
};
|
||||||
|
|
||||||
pChecksums = ppChecksums = (unsigned char *)( malloc( dwLength3 ) );
|
pChecksums = ppChecksums = (unsigned char *)( malloc( dwLength3 ) );
|
||||||
|
|
@ -494,10 +489,10 @@ int iriver_encode(QString infile_name, QString outfile_name, unsigned int modify
|
||||||
|
|
||||||
if( fp != dwLength2 )
|
if( fp != dwLength2 )
|
||||||
{
|
{
|
||||||
dp->addItem("This doesn't look like a valid decoded "
|
// file 'length1' mismatch
|
||||||
"iHP firmware - reason: 'length1' mismatch.",LOGERROR);
|
|
||||||
infile.close();
|
infile.close();
|
||||||
outfile.close();
|
outfile.close();
|
||||||
|
return -6;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* write out remainder w/out applying descrambler */
|
/* write out remainder w/out applying descrambler */
|
||||||
|
|
@ -514,10 +509,10 @@ int iriver_encode(QString infile_name, QString outfile_name, unsigned int modify
|
||||||
|
|
||||||
if( fp != dwLength3 )
|
if( fp != dwLength3 )
|
||||||
{
|
{
|
||||||
dp->addItem("This doesn't look like a valid decoded "
|
// 'length2' field mismatch
|
||||||
"iHP firmware - 'length2' mismatch.",LOGERROR);
|
|
||||||
infile.close();
|
infile.close();
|
||||||
outfile.close();
|
outfile.close();
|
||||||
|
return -8;
|
||||||
};
|
};
|
||||||
|
|
||||||
fprintf( stderr, "File encoded successfully and checksum table built!\n" );
|
fprintf( stderr, "File encoded successfully and checksum table built!\n" );
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,6 @@
|
||||||
#include <QtCore>
|
#include <QtCore>
|
||||||
|
|
||||||
#include "md5sum.h"
|
#include "md5sum.h"
|
||||||
#include "progressloggerinterface.h"
|
|
||||||
|
|
||||||
#define ESTF_SIZE 32
|
#define ESTF_SIZE 32
|
||||||
|
|
||||||
|
|
@ -37,18 +36,18 @@ struct sumpairs {
|
||||||
|
|
||||||
enum striptype
|
enum striptype
|
||||||
{
|
{
|
||||||
STRIP_NONE,
|
STRIP_NONE,
|
||||||
STRIP_HEADER_CHECKSUM,
|
STRIP_HEADER_CHECKSUM,
|
||||||
STRIP_HEADER_CHECKSUM_ESTF
|
STRIP_HEADER_CHECKSUM_ESTF
|
||||||
};
|
};
|
||||||
|
|
||||||
/* protos for iriver.c */
|
/* protos for iriver.c */
|
||||||
|
|
||||||
int intable(char *md5, struct sumpairs *table, int len);
|
int intable(char *md5, struct sumpairs *table, int len);
|
||||||
|
|
||||||
bool mkboot(QString infile, QString outfile,QString bootloader,int origin,ProgressloggerInterface* dp);
|
int mkboot(QString infile, QString outfile,QString bootloader,int origin);
|
||||||
int iriver_decode(QString infile_name, QString outfile_name, unsigned int modify,
|
int iriver_decode(QString infile_name, QString outfile_name, unsigned int modify,
|
||||||
enum striptype stripmode,ProgressloggerInterface* dp );
|
enum striptype stripmode);
|
||||||
int iriver_encode(QString infile_name, QString outfile_name, unsigned int modify,ProgressloggerInterface* dp);
|
int iriver_encode(QString infile_name, QString outfile_name, unsigned int modify);
|
||||||
|
|
||||||
#endif // IRIVERTOOLS_H_INCLUDED
|
#endif // IRIVERTOOLS_H_INCLUDED
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue