bootstrap
[ssht.git] / public.internet.com / home-hostintranet-ssht / hostintranet-ssht.pl
1 #! /usr/bin/perl -Tw --
2
3 use strict;
4 #use warnings;  #-w
5
6 use constant LOGFNAME=>"/home/hostintranet-ssht/hostintranet-ssht.log";
7
8 open LOG,">>".LOGFNAME
9         or die "append: ".LOGFNAME;
10 my $stdout=select();
11 $|=1;
12 select LOG;
13 $|=1;
14 select $stdout;
15
16 my($nulldev ,$nullinode )=stat "/dev/null";
17 my($stdindev,$stdininode)=stat STDIN;
18 my $isnull=($nulldev==$stdindev && $nullinode==$stdininode);
19
20 sub out
21 {
22 my($msg)=@_;
23
24         $msg="$$: $msg\n";
25         print LOG $msg;
26         print $msg;
27 }
28
29 sub outdie
30 {
31 my($msg)=@_;
32
33         out $msg;
34         die $msg;
35 }
36
37 out "CONNECT";
38 for (;;) {
39         out scalar localtime(time());
40
41         my $tmo=60;
42         while ($tmo-->0) {
43                 sleep 1;
44                 next if $isnull;
45
46                 my $rfds="";
47                 vec($rfds,fileno(STDIN),1)=1;
48                 my $efds=$rfds;
49                 next if 1!=select $rfds,undef,$efds,0;
50                 my $got;
51                 outdie "expectfds" if vec($efds,fileno(STDIN),1);
52                 my $sysread;
53                 outdie "sysread=$sysread" if 1!=($sysread=sysread STDIN,$got,1);
54                 }
55         }