Merge from vendor branch LIBPCAP:
[dragonfly.git] / contrib / ntp / scripts / ntp-wait.in
1 #! @PATH_PERL@ -w
2
3 die "perl5 needed\n" unless ($] > 5);
4
5 use Getopt::Std;
6
7 $opt_f = 0;                     # 'Hard' failure if 'state' is unknown
8 $opt_n = 1000;                  # How many tries before we give up? (10 min+)
9 $opt_s = 6;                     # Seconds to sleep between tries (6s = 10/min)
10 $opt_v = 0;                     # Be verbose?
11
12 getopts('fn:s:v');
13
14 $cmd = 'ntpq -c "rv 0 state"';
15
16 $| = 1;                         # Autoflush output.
17
18 print "Waiting for ntpd to synchronize...  " if ($opt_v);
19 for ($i = 0; $i < $opt_n; ++$i) {
20     open(Q, $cmd." 2>&1 |") || die "Can't start ntpq: $!";
21     while(<Q>) {
22       if (/^state=4/) {
23         print "\bOK!\n" if ($opt_v);
24         exit 0;
25       }
26
27       if (/request variable was unknown/) {
28         print "\bCan't tell!\nPerhaps you are running an old version of ntpd.\n" if ($opt_v);
29         exit $opt_f;
30       }
31
32       if (/Connection refused/) {
33         print "\bntpd is not running!\n" if ($opt_v);
34         exit 1;
35       }
36     }
37     close(Q);
38     print "\b".substr("*+:.", $i % 4, 1) if ($opt_v);
39     sleep($opt_s);
40 }
41 print "\bNo!\nntpd did not synchronize.\n" if ($opt_v);
42 exit 1;