forked from len0rd/rockbox
Factor out scramble / mkboot functions to allow easier reuse (for rbutil).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17732 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
efbd2b8d7a
commit
c47988034f
6 changed files with 116 additions and 34 deletions
|
|
@ -96,7 +96,7 @@ static FILE * openoutfile( const char * filename )
|
|||
return F;
|
||||
}
|
||||
|
||||
int iriver_decode(char *infile_name, char *outfile_name, BOOL modify,
|
||||
int iriver_decode(const char *infile_name, const char *outfile_name, BOOL modify,
|
||||
enum striptype stripmode )
|
||||
{
|
||||
FILE * infile = NULL;
|
||||
|
|
@ -120,7 +120,9 @@ int iriver_decode(char *infile_name, char *outfile_name, BOOL modify,
|
|||
{
|
||||
fprintf( stderr, "This doesn't look like a valid encrypted iHP "
|
||||
"firmware - reason: header length\n" );
|
||||
exit( -1 );
|
||||
fclose(infile);
|
||||
fclose(outfile);
|
||||
return -1;
|
||||
};
|
||||
|
||||
i = testheader( headerdata );
|
||||
|
|
@ -128,7 +130,9 @@ int iriver_decode(char *infile_name, char *outfile_name, BOOL modify,
|
|||
{
|
||||
fprintf( stderr, "This firmware is for an unknown model, or is not"
|
||||
" a valid encrypted iHP firmware\n" );
|
||||
exit( -1 );
|
||||
fclose(infile);
|
||||
fclose(outfile);
|
||||
return -2;
|
||||
};
|
||||
fprintf( stderr, "Model %s\n", models[ i ] );
|
||||
|
||||
|
|
@ -149,7 +153,9 @@ int iriver_decode(char *infile_name, char *outfile_name, BOOL modify,
|
|||
{
|
||||
fprintf( stderr, "This doesn't look like a valid encrypted "
|
||||
"iHP firmware - reason: file 'length' data\n" );
|
||||
exit( -1 );
|
||||
fclose(infile);
|
||||
fclose(outfile);
|
||||
return -3;
|
||||
};
|
||||
|
||||
pChecksums = ppChecksums = (unsigned char *)( malloc( dwLength3 ) );
|
||||
|
|
@ -209,7 +215,9 @@ int iriver_decode(char *infile_name, char *outfile_name, BOOL modify,
|
|||
{
|
||||
fprintf( stderr, "This doesn't look like a valid encrypted "
|
||||
"iHP firmware - reason: 'length2' mismatch\n" );
|
||||
exit( -1 );
|
||||
fclose(infile);
|
||||
fclose(outfile);
|
||||
return -4;
|
||||
};
|
||||
|
||||
fp = 0;
|
||||
|
|
@ -224,7 +232,9 @@ int iriver_decode(char *infile_name, char *outfile_name, BOOL modify,
|
|||
{
|
||||
fprintf( stderr, "This doesn't look like a valid encrypted "
|
||||
"iHP firmware - reason: Checksum mismatch!" );
|
||||
exit( -1 );
|
||||
fclose(infile);
|
||||
fclose(outfile);
|
||||
return -5;
|
||||
};
|
||||
ppChecksums += lenread;
|
||||
};
|
||||
|
|
@ -233,7 +243,9 @@ int iriver_decode(char *infile_name, char *outfile_name, BOOL modify,
|
|||
{
|
||||
fprintf( stderr, "This doesn't look like a valid encrypted "
|
||||
"iHP firmware - reason: 'length3' mismatch\n" );
|
||||
exit( -1 );
|
||||
fclose(infile);
|
||||
fclose(outfile);
|
||||
return -6;
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -258,7 +270,7 @@ int iriver_decode(char *infile_name, char *outfile_name, BOOL modify,
|
|||
return 0;
|
||||
}
|
||||
|
||||
int iriver_encode(char *infile_name, char *outfile_name, BOOL modify )
|
||||
int iriver_encode(const char *infile_name, const char *outfile_name, BOOL modify )
|
||||
{
|
||||
FILE * infile = NULL;
|
||||
FILE * outfile = NULL;
|
||||
|
|
@ -281,7 +293,9 @@ int iriver_encode(char *infile_name, char *outfile_name, BOOL modify )
|
|||
{
|
||||
fprintf( stderr, "This doesn't look like a valid decoded "
|
||||
"iHP firmware - reason: header length\n" );
|
||||
exit( -1 );
|
||||
fclose(infile);
|
||||
fclose(outfile);
|
||||
return -1;
|
||||
};
|
||||
|
||||
if( modify )
|
||||
|
|
@ -294,7 +308,9 @@ int iriver_encode(char *infile_name, char *outfile_name, BOOL modify )
|
|||
{
|
||||
fprintf( stderr, "This firmware is for an unknown model, or is not"
|
||||
" a valid decoded iHP firmware\n" );
|
||||
exit( -1 );
|
||||
fclose(infile);
|
||||
fclose(outfile);
|
||||
return -2;
|
||||
};
|
||||
fprintf( stderr, "Model %s\n", models[ i ] );
|
||||
|
||||
|
|
@ -314,7 +330,9 @@ int iriver_encode(char *infile_name, char *outfile_name, BOOL modify )
|
|||
{
|
||||
fprintf( stderr, "This doesn't look like a valid decoded iHP"
|
||||
" firmware - reason: file 'length' data\n" );
|
||||
exit( -1 );
|
||||
fclose(infile);
|
||||
fclose(outfile);
|
||||
return -3;
|
||||
};
|
||||
|
||||
pChecksums = ppChecksums = (unsigned char *)( malloc( dwLength3 ) );
|
||||
|
|
@ -351,7 +369,9 @@ int iriver_encode(char *infile_name, char *outfile_name, BOOL modify )
|
|||
{
|
||||
fprintf( stderr, "This doesn't look like a valid decoded "
|
||||
"iHP firmware - reason: 'length1' mismatch\n" );
|
||||
exit( -1 );
|
||||
fclose(infile);
|
||||
fclose(outfile);
|
||||
return -4;
|
||||
};
|
||||
|
||||
/* write out remainder w/out applying descrambler */
|
||||
|
|
@ -370,10 +390,14 @@ int iriver_encode(char *infile_name, char *outfile_name, BOOL modify )
|
|||
{
|
||||
fprintf( stderr, "This doesn't look like a valid decoded "
|
||||
"iHP firmware - reason: 'length2' mismatch\n" );
|
||||
exit( -1 );
|
||||
fclose(infile);
|
||||
fclose(outfile);
|
||||
return -5;
|
||||
};
|
||||
|
||||
fprintf( stderr, "File encoded successfully and checksum table built!\n" );
|
||||
|
||||
fclose(infile);
|
||||
fclose(outfile);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue