package Ocsinventory::Agent::Backend::OS::BSD;

use strict;

use vars qw($runAfter);
$runAfter = ["Ocsinventory::Agent::Backend::OS::Generic"];

sub check { $^O =~ /freebsd|openbsd|netbsd|gnukfreebsd|gnuknetbsd/ }

sub run {
  my $params = shift;
  my $common = $params->{common};

  my $OSName;
  my $OSComment;
  my $OSVersion;
  my $OSLevel;
  my $OSArchi;

  # Operating system informations
  chomp($OSName=`uname -s`);
  chomp($OSVersion=`uname -r`);
  chomp($OSArchi=`uname -p`);

  # Retrieve the origin of the kernel configuration file
  my ($date, $origin, $kernconf);
  for (`sysctl -n kern.version`) {
      $date = $1 if /^\S.*\#\d+:\s*(.*)/;
      ($origin,$kernconf) = ($1,$2) if /^\s+(.+):(.+)$/;
  }
  $kernconf =~ s/\/.*\///; # remove the path
  $OSComment = $kernconf." (".$date.")\n".$origin;
  # if there is a problem use uname -v
  chomp($OSComment=`uname -v`) unless $OSComment; 
  
  $common->setHardware({
      OSNAME => $OSName." ".$OSArchi,
      OSCOMMENTS => $OSComment,
      OSVERSION => $OSVersion,
    });
}
1;
