#!/usr/bin/perl

# SyslogdHUP  (c) Copyright 1998 Mark Black 

$version = 1 ;

# SyslogHUP - Send the HUP signal to the syslogd deamon.
# If the deamon is not running then start it.

$inp = "" ;
foreach $i (0 .. $#ARGV) {
   $inp .= "@ARGV[$i] " ;
}
chop($inp) ;

# Output the version if requested
if($inp eq "-v") {
    print "$version\n" ;
    exit(0) ;
}

# Discover OS type and set variables for OS type
chop($os = `uname -s`) ;

if($os eq "Linux") {
    @procs = `/bin/ps -a` ;
    $rproc = "/usr/sbin/syslogd" ;
} elsif($os eq "SunOS") {
    chop($ver = `uname -r`) ;
    ($major, $minor) = split(/\./, $ver) ;
    if($major == 5) {
	@procs = `/usr/ucb/ps -a` ;
	$rproc = "/usr/sbin/syslogd" ;
    } else {
	@procs = `/usr/bin/ps -a` ;
	$rproc = "/usr/sbin/syslogd" ;
    }
} elsif(($os eq "IRIX") | ($os eq "IRIX64"))  {
    $OS="irix" ;
    @procs = `/usr/bin/ps -a` ;
    $rproc = "/usr/sbin/X_X_X_X_X_X_X_X_X_X" ;

} elsif($os eq "HP-UX") {
    $OS="hpux" ;
    @procs = `/usr/bin/ps -a` ;
    $rproc = "/usr/sbin/X_X_X_X_X_X_X_X_X_X" ;
}


foreach $in (0 .. $#procs ) {
    $proc = @procs[$in] ;
    ($a1, $pid, $a3, $a4, $a5, $process) = split(/\s+/, $proc) ;
    if($process eq $rproc) {
	# Process Found, HUP it 
	kill("HUP", $pid) ;
	exit 0 ;
    }
}

# Process NOT found.  Start it.
print "WARNING:  Syslogd not found, trying to restart.\n" ;
`$rproc` ;
exit $? ;
