Changeset 5683

Show
Ignore:
Timestamp:
03/12/09 18:15:13 (5 years ago)
Author:
khali
Message:

Refactor dmidecode version check into a separate function.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lm-sensors/trunk/prog/detect/sensors-detect

    r5682 r5683  
    22512251############ 
    22522252 
    2253 use vars qw(%dmi); 
     2253use vars qw(%dmi $dmidecode_ok); 
     2254 
     2255# Returns: 1 if dmidecode is recent enough, 0 if not 
     2256# Cache the result in case it is needed again later. 
     2257sub check_dmidecode_version 
     2258{ 
     2259        return $dmidecode_ok if defined $dmidecode_ok; 
     2260 
     2261        my $version; 
     2262        if (open(local *DMIDECODE, "dmidecode --version 2>/dev/null |")) { 
     2263                $version = <DMIDECODE>; 
     2264                close(DMIDECODE); 
     2265                chomp $version if defined $version; 
     2266        } 
     2267 
     2268        if (!defined $version 
     2269         || !($version =~ m/^(\d+).(\d+)$/) 
     2270         || !(($1 == 2 && $2 >= 7) || $1 > 2)) { 
     2271                print "# DMI data unavailable, please consider installing dmidecode 2.7\n". 
     2272                      "# or later for better results.\n"; 
     2273                $dmidecode_ok = 0; 
     2274        } else { 
     2275                $dmidecode_ok = 1; 
     2276        } 
     2277 
     2278        return $dmidecode_ok; 
     2279} 
    22542280 
    22552281sub initialize_dmi_data 
     
    22802306        } else { 
    22812307                # Else fallback on calling dmidecode 
    2282                 my $version; 
    2283                 if (open(local *DMIDECODE, "dmidecode --version 2>/dev/null |")) { 
    2284                         $version = <DMIDECODE>; 
    2285                         close(DMIDECODE); 
    2286                         chomp $version if defined $version; 
    2287                 } 
    2288  
    2289                 if (!defined $version 
    2290                  || !($version =~ m/^(\d+).(\d+)$/) 
    2291                  || !(($1 == 2 && $2 >= 7) || $1 > 2)) { 
    2292                         print "# DMI data unavailable, please consider installing dmidecode 2.7\n". 
    2293                               "# or later for better results.\n"; 
    2294                         return; 
    2295                 } 
     2308                return unless check_dmidecode_version(); 
    22962309 
    22972310                foreach my $k (keys %items) { 
     
    50135026        my ($version, $if, @ipmi_if); 
    50145027 
    5015         if (open(local *DMIDECODE, "dmidecode --version 2>/dev/null |")) { 
    5016                 $version = <DMIDECODE>; 
    5017                 close(DMIDECODE); 
    5018                 chomp $version if defined $version; 
    5019         } 
    5020  
    5021         if (!defined $version 
    5022          || !($version =~ m/^(\d+).(\d+)$/) 
    5023          || !(($1 == 2 && $2 >= 7) || $1 > 2)) { 
    5024                 print "# DMI data unavailable, please consider installing dmidecode 2.7\n". 
    5025                       "# or later for better results.\n"; 
    5026                 return; 
    5027         } 
     5028        return 0 unless check_dmidecode_version(); 
    50285029 
    50295030        # Parse the output of dmidecode into an array of IPMI interfaces.