update wrt350nv2 builder to v2.3 (#7580)

SVN-Revision: 22579
This commit is contained in:
Florian Fainelli 2010-08-10 15:19:06 +00:00
parent b0745dd8ce
commit 4bc034f07c
2 changed files with 49 additions and 17 deletions

View file

@ -8,7 +8,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=wrt350nv2-builder
PKG_VERSION:=2.2
PKG_VERSION:=2.3
HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/${PKG_NAME}-$(PKG_VERSION)

View file

@ -1,6 +1,6 @@
/*
WRT350Nv2-Builder 2.2 (previously called buildimg)
WRT350Nv2-Builder 2.3 (previously called buildimg)
Copyright (C) 2008-2009 Dirk Teurlings <info@upexia.nl>
Copyright (C) 2009-2010 Matthias Buecher (http://www.maddes.net/)
@ -62,6 +62,8 @@
https://forum.openwrt.org/viewtopic.php?pid=92928#p92928
Changelog:
v2.3 - allow jffs by adding its magic number (0x8519)
added parameter option -i to ignore unknown magic numbers
v2.2 - fixed checksum byte calculation for other versions than 0x2019
fixed rare problem with padsize
updated info to stock firmware 2.00.20
@ -90,7 +92,7 @@
// version info
#define VERSION "2.2"
#define VERSION "2.3"
char program_info[] = "WRT350Nv2-Builder v%s by Dirk Teurlings <info@upexia.nl> and Matthias Buecher (http://www.maddes.net/)\n";
// verbosity
@ -708,6 +710,7 @@ int main(int argc, char *argv[]) {
int help;
int onlybin;
int havezip;
int ignoremagic;
char option;
char *par_filename = NULL;
char *img_filename = NULL;
@ -723,7 +726,8 @@ int main(int argc, char *argv[]) {
int mandatory;
int noupdate;
int sizecheck;
unsigned char magic[2];
int magiccheck;
int magicerror;
// display program header
@ -735,7 +739,8 @@ int main(int argc, char *argv[]) {
help = 0;
onlybin = 0;
havezip = 0;
while ((option = getopt(argc, argv, ":hbzf:v")) != -1) {
ignoremagic = 0;
while ((option = getopt(argc, argv, "hbzif:v")) != -1) {
switch(option) {
case 'h':
help = 1;
@ -746,6 +751,9 @@ int main(int argc, char *argv[]) {
case 'z':
havezip = 1;
break;
case 'i':
ignoremagic = 1;
break;
case 'f':
sizecheck = sscanf(optarg, "%i", &i);
if (sizecheck != 1) {
@ -850,11 +858,12 @@ int main(int argc, char *argv[]) {
printf("This program creates Linksys style images for the WRT350Nv2 router.\n");
}
printf(" Usage:\n\
%s [-h] [-b] [-z] [-f <version>] [-v] <parameter or zip file> [<image file>]\n\n\
%s [-h] [-b] [-z] [-i] [-f <version>] [-v] <parameter or zip file> [<image file>]\n\n\
Options:\n\
-h - Show this help\n\
-b - Create only bin file, no img or zip file is created\n\
-z - Have zip file, the img file will be directly created from it\n\
-i - Ignore unknown magic numbers\n\
-f <version> - Wanted firmware version to use with -z\n\
Default firmware version is 0x2020 = 2.00.20.\n\
Note: version from parameter file will supersede this\n\
@ -929,16 +938,14 @@ int main(int argc, char *argv[]) {
mandatory = 0;
noupdate = 0;
sizecheck = 0;
magic[0] = 0;
magic[1] = 0;
magiccheck = 0;
switch (i) {
case 1:
mtd = &mtd_kernel;
mandatory = 1;
sizecheck = mtd_kernel.size - 16;
magic[0] = 0x27;
magic[1] = 0x05;
magiccheck = 1;
break;
case 2:
mtd = &mtd_rootfs;
@ -946,8 +953,7 @@ int main(int argc, char *argv[]) {
mtd->size = ROOTFS_END_OFFSET - mtd_kernel.size;
mandatory = 1;
sizecheck = PRODUCT_ID_OFFSET - mtd_kernel.size;
magic[0] = 0x68;
magic[1] = 0x73;
magiccheck = 1;
break;
case 3:
mtd = &mtd_uboot;
@ -973,7 +979,7 @@ int main(int argc, char *argv[]) {
printf("mtd %s not specified correctly or at all in parameter file\n", mtd->name);
}
// end checks if no file data present
// no further checks if no file data present
if (!mtd->filename) {
continue;
}
@ -984,10 +990,36 @@ int main(int argc, char *argv[]) {
}
// general magic number check
if (magic[0]) {
if ((mtd->magic[0] != magic[0]) || (mtd->magic[1] != magic[1])) {
magicerror = 0;
if (magiccheck) {
switch (i) {
case 1: // kernel
if (!(
((mtd->magic[0] == 0x27) && (mtd->magic[1] == 0x05)) // uImage
)) {
magicerror = 1;
}
break;
case 2: // rootfs
if (!(
((mtd->magic[0] == 0x68) && (mtd->magic[1] == 0x73)) // squashfs
|| ((mtd->magic[0] == 0x85) && (mtd->magic[1] == 0x19)) // jffs
)) {
magicerror = 1;
}
break;
default:
magicerror = 1;
break;
}
if (magicerror) {
printf("mtd %s input file %s has unknown magic number (0x%02X%02X)", mtd->name, mtd->filename, mtd->magic[0], mtd->magic[1]);
if (ignoremagic) {
printf("...ignoring");
} else {
exitcode = 1;
printf("mtd %s input file %s has wrong magic number (0x%02X%02X)\n", mtd->name, mtd->filename, mtd->magic[0], mtd->magic[1]);
}
printf("\n");
}
}