#!/usr/bin/perl

# DNSNamedHUP  (c) Copyright 1998 Mark Black 

$version = 0.16 ;

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

($inp) = @ARGV ;

# 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/named" ;
} elsif($os eq "SunOS") {
    chop($ver = `uname -r`) ;
    ($major, $minor) = split(/\./, $ver) ;
    if($major == 5) {
	@procs = `/usr/ucb/ps -a` ;
	$rproc = "/usr/sbin/named" ;
    } else {
	@procs = `/usr/bin/ps -a` ;
	$rproc = "/usr/sbin/named" ;
    }
}


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:  Named not found.  Trying to restart.\n" ;
`$rproc` ;
exit $? ;
