Ignore:
Timestamp:
2010-08-10T17:07:01+02:00 (6 years ago)
Author:
florian
Message:

pupdate wrt350nv2-builder to v2.3 (#7580)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/backfire/tools/wrt350nv2-builder/src/wrt350nv2-builder.c

    r19683 r22577  
    11/* 
    22 
    3         WRT350Nv2-Builder 2.2 (previously called buildimg) 
     3        WRT350Nv2-Builder 2.3 (previously called buildimg) 
    44        Copyright (C) 2008-2009 Dirk Teurlings <info@upexia.nl> 
    55        Copyright (C) 2009-2010 Matthias Buecher (http://www.maddes.net/) 
     
    6363 
    6464        Changelog: 
     65        v2.3 - allow jffs by adding its magic number (0x8519) 
     66               added parameter option -i to ignore unknown magic numbers 
    6567        v2.2 - fixed checksum byte calculation for other versions than 0x2019 
    6668               fixed rare problem with padsize 
     
    9193 
    9294// version info 
    93 #define VERSION "2.2" 
     95#define VERSION "2.3" 
    9496char program_info[] = "WRT350Nv2-Builder v%s by Dirk Teurlings <info@upexia.nl> and Matthias Buecher (http://www.maddes.net/)\n"; 
    9597 
     
    709711        int onlybin; 
    710712        int havezip; 
     713        int ignoremagic; 
    711714        char option; 
    712715        char *par_filename = NULL; 
     
    724727        int noupdate; 
    725728        int sizecheck; 
    726         unsigned char magic[2]; 
     729        int magiccheck; 
     730        int magicerror; 
    727731 
    728732 
     
    736740        onlybin = 0; 
    737741        havezip = 0; 
    738         while ((option = getopt(argc, argv, ":hbzf:v")) != -1) { 
     742        ignoremagic = 0; 
     743        while ((option = getopt(argc, argv, "hbzif:v")) != -1) { 
    739744                switch(option) { 
    740745                        case 'h': 
     
    746751                        case 'z': 
    747752                                havezip = 1; 
     753                                break; 
     754                        case 'i': 
     755                                ignoremagic = 1; 
    748756                                break; 
    749757                        case 'f': 
     
    851859                } 
    852860                printf("  Usage:\n\ 
    853   %s [-h] [-b] [-z] [-f <version>] [-v] <parameter or zip file> [<image file>]\n\n\ 
     861  %s [-h] [-b] [-z] [-i] [-f <version>] [-v] <parameter or zip file> [<image file>]\n\n\ 
    854862  Options:\n\ 
    855863  -h            -  Show this help\n\ 
    856864  -b            -  Create only bin file, no img or zip file is created\n\ 
    857865  -z            -  Have zip file, the img file will be directly created from it\n\ 
     866  -i            -  Ignore unknown magic numbers\n\ 
    858867  -f <version>  -  Wanted firmware version to use with -z\n\ 
    859868                   Default firmware version is 0x2020 = 2.00.20.\n\ 
     
    930939                        noupdate = 0; 
    931940                        sizecheck = 0; 
    932                         magic[0] = 0; 
    933                         magic[1] = 0; 
     941                        magiccheck = 0; 
    934942 
    935943                        switch (i) { 
     
    938946                                        mandatory = 1; 
    939947                                        sizecheck = mtd_kernel.size - 16; 
    940                                         magic[0] = 0x27; 
    941                                         magic[1] = 0x05; 
     948                                        magiccheck = 1; 
    942949                                        break; 
    943950                                case 2: 
     
    947954                                        mandatory = 1; 
    948955                                        sizecheck = PRODUCT_ID_OFFSET - mtd_kernel.size; 
    949                                         magic[0] = 0x68; 
    950                                         magic[1] = 0x73; 
     956                                        magiccheck = 1; 
    951957                                        break; 
    952958                                case 3: 
     
    974980                        } 
    975981 
    976                         // end checks if no file data present 
     982                        // no further checks if no file data present 
    977983                        if (!mtd->filename) { 
    978984                                continue; 
     
    985991 
    986992                        // general magic number check 
    987                         if (magic[0]) { 
    988                                 if ((mtd->magic[0] != magic[0]) || (mtd->magic[1] != magic[1])) { 
    989                                         exitcode = 1; 
    990                                         printf("mtd %s input file %s has wrong magic number (0x%02X%02X)\n", mtd->name, mtd->filename, mtd->magic[0], mtd->magic[1]); 
     993                        magicerror = 0; 
     994                        if (magiccheck) { 
     995                                switch (i) { 
     996                                        case 1: // kernel 
     997                                                if (!(  
     998                                                       ((mtd->magic[0] == 0x27) && (mtd->magic[1] == 0x05))     // uImage 
     999                                                )) { 
     1000                                                        magicerror = 1; 
     1001                                                } 
     1002                                                break; 
     1003                                        case 2: // rootfs 
     1004                                                if (!(  
     1005                                                       ((mtd->magic[0] == 0x68) && (mtd->magic[1] == 0x73))     // squashfs 
     1006                                                    || ((mtd->magic[0] == 0x85) && (mtd->magic[1] == 0x19))     // jffs 
     1007                                                )) { 
     1008                                                        magicerror = 1; 
     1009                                                } 
     1010                                                break; 
     1011                                        default: 
     1012                                                magicerror = 1; 
     1013                                                break; 
     1014                                } 
     1015                                if (magicerror) { 
     1016                                        printf("mtd %s input file %s has unknown magic number (0x%02X%02X)", mtd->name, mtd->filename, mtd->magic[0], mtd->magic[1]); 
     1017                                        if (ignoremagic) { 
     1018                                                printf("...ignoring"); 
     1019                                        } else { 
     1020                                                exitcode = 1; 
     1021                                        } 
     1022                                        printf("\n"); 
    9911023                                } 
    9921024                        } 
Note: See TracChangeset for help on using the changeset viewer.