Changeset 5287

Show
Ignore:
Timestamp:
06/19/08 14:37:06 (6 years ago)
Author:
khali
Message:

Add support for little-endian word hexdumps.

Location:
i2c-tools/trunk
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • i2c-tools/trunk/CHANGES

    r5280 r5287  
    33 
    44SVN 
     5  decode-dimms: Add support for little-endian word hexdumps 
    56  decode-vaio: Remove history 
    67  i2cdetect: Support i2c bus passed by name 
  • i2c-tools/trunk/eeprom/decode-dimms

    r5164 r5287  
    4343use vars qw($opt_html $opt_bodyonly $opt_igncheck $use_sysfs $use_hexdump 
    4444            @vendors %decode_callback $revision @dimm_list %hexdump_cache); 
     45 
     46use constant LITTLEENDIAN       => "little-endian"; 
     47use constant BIGENDIAN          => "big-endian"; 
    4548 
    4649$revision = '$Revision$ ($Date$)'; 
     
    11331136                        if (/^(..)(..)$/) { 
    11341137                                $word |= 1; 
    1135                                 $bytes[$addr++] = hex($1); 
    1136                                 $bytes[$addr++] = hex($2); 
     1138                                if ($use_hexdump eq LITTLEENDIAN) { 
     1139                                        $bytes[$addr++] = hex($2); 
     1140                                        $bytes[$addr++] = hex($1); 
     1141                                } else { 
     1142                                        $bytes[$addr++] = hex($1); 
     1143                                        $bytes[$addr++] = hex($2); 
     1144                                } 
    11371145                        } else { 
    11381146                                $bytes[$addr++] = hex($_); 
     
    11421150        close F; 
    11431151        $header and die "Unable to parse any data from hexdump '$_[0]'"; 
    1144         $word and printc "Warning: Assuming big-endian order 16-bit hex dump"; 
     1152        $word and printc "Using $use_hexdump 16-bit hex dump"; 
    11451153 
    11461154        # Cache the data for later use 
     
    11781186foreach (@ARGV) { 
    11791187        if ($_ eq '-h' || $_ eq '--help') { 
    1180                 print "Usage: $0 [-c] [-f [-b]] [-x file [files..]]\n", 
     1188                print "Usage: $0 [-c] [-f [-b]] [-x|-X file [files..]]\n", 
    11811189                        "       $0 -h\n\n", 
    11821190                        "  -f, --format            Print nice html output\n", 
     
    11851193                        "  -c, --checksum          Decode completely even if checksum fails\n", 
    11861194                        "  -x,                     Read data from hexdump files\n", 
     1195                        "  -X,                     Same as -x except treat multibyte hex\n", 
     1196                        "                          data as little endian\n", 
    11871197                        "  -h, --help              Display this usage summary\n"; 
    11881198                print <<"EOF"; 
     
    11911201likely many other progams producing hex dumps of one kind or another.  Note 
    11921202that the default output of "hexdump" will be byte-swapped on little-endian 
    1193 systems and will therefore not be parsed correctly.  It is better to use 
    1194 "hexdump -C", which is not ambiguous. 
     1203systems and you must use -X instead of -x, otherwise the dump will not be 
     1204parsed correctly.  It is better to use "hexdump -C", which is not ambiguous. 
    11951205EOF 
    11961206                exit; 
     
    12101220        } 
    12111221        if ($_ eq '-x') { 
    1212                 $use_hexdump = 1; 
     1222                $use_hexdump = BIGENDIAN; 
     1223                next; 
     1224        } 
     1225        if ($_ eq '-X') { 
     1226                $use_hexdump = LITTLEENDIAN; 
    12131227                next; 
    12141228        }