Changeset 5293 for i2c-tools

Show
Ignore:
Timestamp:
06/28/08 11:24:12 (2 months ago)
Author:
khali
Message:

Stop on i2cset error.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • i2c-tools/trunk/CHANGES

    r5292 r5293  
    2424                      Report if only garbage is found in dump file 
    2525                      Behave properly when i2c-stub is already loaded 
     26                      Stop on i2cset error 
    2627 
    27283.0.1 (2008-04-04) 
  • i2c-tools/trunk/stub/i2c-stub-from-dump

    r5292 r5293  
    2323 
    2424use strict; 
    25 use vars qw($bus_nr $addr $bytes $words); 
     25use vars qw($bus_nr $addr $bytes $words $err); 
    2626 
    2727# Kernel version detection code by Mark M. Hoffman, 
     
    109109{ 
    110110        my $dump = shift; 
     111        my $err = 0; 
    111112 
    112113        open(DUMP, $dump) || die "Can't open $dump: $!\n"; 
     
    120121                        for (my $i = 0; $i < 16 && (my $val = shift(@values)); $i++) { 
    121122                                next if $val =~ m/X/; 
    122                                 last OUTER_LOOP if system("i2cset", "-y", 
    123                                         $bus_nr, $addr, 
    124                                         sprintf("0x\%02x", $offset+$i), 
    125                                         "0x$val", "b"); 
     123                                if (system("i2cset", "-y", $bus_nr, $addr, 
     124                                           sprintf("0x\%02x", $offset+$i), 
     125                                           "0x$val", "b")) { 
     126                                        $err = 3; 
     127                                        last OUTER_LOOP; 
     128                                } 
    126129                                $bytes++; 
    127130                        } 
     
    133136                        for (my $i = 0; $i < 8 && (my $val = shift(@values)); $i++) { 
    134137                                next if $val =~ m/X/; 
    135                                 last OUTER_LOOP if system("i2cset", "-y", 
    136                                         $bus_nr, $addr, 
    137                                         sprintf("0x\%02x", $offset+$i), 
    138                                         "0x$val", "w"); 
     138                                if (system("i2cset", "-y", $bus_nr, $addr, 
     139                                           sprintf("0x\%02x", $offset+$i), 
     140                                           "0x$val", "w")) { 
     141                                        $err = 3; 
     142                                        last OUTER_LOOP; 
     143                                } 
    139144                                $words++; 
    140145                        } 
     
    142147        } 
    143148        close(DUMP); 
     149 
     150        return $err; 
    144151} 
    145152 
     
    169176open(SAVEOUT, ">&STDOUT"); 
    170177open(STDOUT, ">/dev/null"); 
    171 process_dump($ARGV[1]); 
     178$err = process_dump($ARGV[1]); 
    172179close(STDOUT); 
    173180 
     
    182189} 
    183190 
    184 if ($bytes + $words == 0) { 
     191if (!$err && ($bytes + $words == 0)) { 
    185192        printf SAVEOUT "Only garbage found in dump file $ARGV[1]\n"; 
    186193        exit(1); 
    187194} 
    188195 
    189 exit(0); 
     196exit($err);