--- projects/cms/source/host/ihost-perl/ihost.pl 2001/12/18 03:51:11 1.43 +++ projects/cms/source/host/ihost-perl/ihost.pl 2002/03/11 13:34:24 1.46 @@ -8,7 +8,7 @@ # a typical Unix/Linux box. # # $Author: tdb $ -# $Id: ihost.pl,v 1.43 2001/12/18 03:51:11 tdb Exp $ +# $Id: ihost.pl,v 1.46 2002/03/11 13:34:24 tdb Exp $ #------------------------------------------------------------ $| = 1; @@ -33,6 +33,7 @@ use vars qw ( $fqdn $pidfile $retry_wait + $ostype @data ); @@ -46,6 +47,11 @@ $filter_manager_port = $ARGV[1]; $seq_no = 1; $retry_wait = 60; +# work out our platform, if we can. +$ostype = `uname -s`; +chomp $ostype; +$ostype = "unknown" if not defined $ostype; + # write our PID to a file # use home dir by default #$pidfile = $ENV{"HOME"}; @@ -266,7 +272,7 @@ sub send_udp_packet() { opendir PLUGINS, $plugins_dir; my(@plugins) = readdir PLUGINS; foreach my $plugin (@plugins) { - push @data, `$plugins_dir/$plugin` if -x "$plugins_dir/$plugin" && -f "$plugins_dir/$plugin"; + push @data, `$plugins_dir/$plugin $ostype` if -x "$plugins_dir/$plugin" && -f "$plugins_dir/$plugin"; } # get some extra data @@ -423,11 +429,11 @@ sub make_xml() { $xmltemp .= &make_xml("$curlevel$curtag", $curline); } my($nextline) = $data[0]; chomp $nextline if defined $nextline; - if((defined $nextline) && ($nextline =~ /^$curlevel$curtag/)) { + $curtag =~ s/(.*)\./$1/; + if((defined $nextline) && ($nextline =~ /^$curlevel$curtag\./)) { $curline = ""; } else { - $curtag =~ s/(.*)\./$1/; $xmltemp = "<$curtag$attributes>$xmltemp" unless $curtag eq ""; return $xmltemp; } @@ -445,5 +451,15 @@ sub make_xml() { return $xmltemp; } } + # dealing with a null value + elsif($curline =~ /^$curlevel([^\.\s]+)$/) { + # simply adding a space makes the above elsif deal with it :) + # just level with an empty tag in the XML + $curline .= " "; + } + # failing all that, skip the line + else { + $curline = ""; + } } }