#!/usr/local/bin/perl -Tw
# lockerd - distributed lock handler for perl IPC::Locker

# RCS Status      : $Id: lockerd,v 1.1 1999/03/15 17:11:33 wsnyder Exp $
# Author          : Wilson Snyder <wsnyder@world.std.com>

################ Introduction ################
#
# This program creates a TAGS file for verilog.
# 
# This program is Copyright 1998 by Wilson Snyder.
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# If you do not have a copy of the GNU General Public License write to
# the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, 
# MA 02139, USA.

require 5.004;
use lib './blib/lib';	# testing
use English;
use Getopt::Long;
use Pod::Text;
use IPC::Locker::Server;

BEGIN { $ENV{PATH} = '/usr/ucb:/bin' }	# Secure path

######################################################################
# configuration

######################################################################
# globals

######################################################################
# main

my $Debug = 0;
my %server_params = ();

$result = &GetOptions (
		       "help"		=> \&usage,
		       "debug"		=> \&debug,
		       "version"	=> \&version,
		       "port=i"		=> sub {$server_params{port} = shift;}
		       );

if (!$result) { &usage(); }

        IPC::Locker::Server->start_server (%server_params);
# Loop in case something kills us
while (1) {
    print "Starting server\n" if $Debug;
    unless ($pid = fork) {
        IPC::Locker::Server->start_server (%server_params);
    }
    waitpid($pid,0);
    warn "%Warning: Server aborted\n" if $Debug;
}

exit (0);

######################################################################

sub usage {
    print '$Id: lockerd,v 1.1 1999/03/15 17:11:33 wsnyder Exp $ ', "\n";
    $SIG{__WARN__} = sub{};	#pod2text isn't clean.
    pod2text($0);
    exit(1);
}

sub version {
    print 'Version: $Id: lockerd,v 1.1 1999/03/15 17:11:33 wsnyder Exp $ ';
    print "\n";
    exit (1);
}

sub debug {
    $Debug = 1;
    $IPC::Locker::Server::Debug = 1;
}

######################################################################
__END__

=pod

=head1 NAME

lockerd - Distributed lock handler for perl IPC::Locker

=head1 SYNOPSIS

B<lockerd>
[ B<--help> ]
[ B<--port=>I<port> ]
[ B<--version> ]

=head1 DESCRIPTION

Lockerd will start a deamon to watch for and service connects by the perl
IPC::Locker package.

=head1 ARGUMENTS

=item --help
Displays this message and program version and exits.

=item --port
Specifies the port number to be used.

=item --verstion
Displays program version and exits.

=head1 AUTHORS

Wilson Snyder <wsnyder@maker.com>

=cut
######################################################################
