freebsd-dev/contrib/ntp/scripts/ntp-wait/ntp-wait.in
Cy Schubert 2b15cb3d09 MFV ntp 4.2.8p1 (r258945, r275970, r276091, r276092, r276093, r278284)
Thanks to roberto for providing pointers to wedge this into HEAD.

Approved by:	roberto
2015-03-30 13:30:15 +00:00

67 lines
1.5 KiB
Plaintext

#! @PATH_PERL@
package ntp_wait;
use 5.006_000;
use strict;
use warnings;
use lib "@PERLLIBDIR@";
use NTP::Util qw(ntp_read_vars);
exit run(@ARGV) unless caller;
sub run {
my $opts;
if (!processOptions(\@_, $opts)) {
usage(1);
};
my $tries = $opts->{tries}; # How many tries before we give up? (10 min+)
my $sleep = $opts->{sleep}; # Seconds to sleep between tries (6s = 10/min)
my $verbose = $opts->{verbose}; # Be verbose?
# Autoflush stdout
$| = 1;
print "Waiting for ntpd to synchronize... " if $verbose;
for my $i (1 .. $tries) {
my $info = ntp_read_vars(0, []);
if (!defined $info) {
print "\bntpd is not running!\n" if $verbose;
return 1;
}
if (!exists $info->{status_line}{leap}) {
print "\bLeap status not avalaible\n";
return 1;
}
my $leap = $info->{status_line}{leap};
my $sync = $info->{status_line}{sync};
if ($leap =~ /(sync|leap)_alarm/) {
print "\b".(substr "*+:.", $i % 4, 1) if $verbose;
sleep $sleep if $i < $tries;
next;
}
if ($leap =~ /leap_(none|((add|del)_sec))/) {
# We could check $sync here to make sure we like the source...
print "\bOK!\n" if $verbose;
return 0;
}
print "\bUnexpected 'leap' status <$leap>\n";
return 1;
}
print "\bNo!\nntpd did not synchronize.\n" if $verbose;
return 1;
}
@ntp_wait_opts@
1;
__END__