do_hash_file - align size for mmc images, append chars \xff (nokia flasher needs mmc images alingned)
This commit is contained in:
1 parent
b1cfc3181b
commit
8bc521f3e5
4 files changed
+18
-4
No files matched your search
+15
-1
@@ -17,6 +17,7 @@
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "hash.h"
|
||||
|
||||
usho do_hash(usho *b, int len)
|
||||
@@ -27,11 +28,12 @@ usho do_hash(usho *b, int len)
|
||||
return result;
|
||||
}
|
||||
|
||||
usho do_hash_file(const char *filename)
|
||||
usho do_hash_file(const char *filename, const char *type)
|
||||
{
|
||||
unsigned char buf[BSIZE];
|
||||
FILE *fd = fopen(filename, "r");
|
||||
usho hash = 0;
|
||||
int size;
|
||||
int ret;
|
||||
|
||||
if (fd == NULL) {
|
||||
@@ -46,8 +48,20 @@ usho do_hash_file(const char *filename)
|
||||
hash ^= do_hash((usho *)&buf, ret);
|
||||
} while(ret);
|
||||
|
||||
size = ftell(fd);
|
||||
fclose(fd);
|
||||
|
||||
/* mmc image must be aligned */
|
||||
if (type && strcmp(type, "mmc") == 0) {
|
||||
int align = ((size >> 8) + 1) << 8;
|
||||
printf("align from %d to %d\n", size, align);
|
||||
buf[0] = 0xff;
|
||||
while (size < align) {
|
||||
hash ^= do_hash((usho *)&buf, 1);
|
||||
++size;
|
||||
}
|
||||
}
|
||||
|
||||
return hash;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user