Cleaned up demos, various build fixes
[urisagit/Stem.git] / bin / demo / inetd_demo
1 #!/usr/local/bin/perl -s
2
3 use lib qw(../blib/lib blib/lib);
4 use Stem::ConfigData;
5 $ENV{PATH} .= ':blib/script:../blib/script:demo:.';
6 my $xterm = Stem::ConfigData->config('xterm_path');
7 my $telnet = Stem::ConfigData->config('telnet_path');
8 my $conf_path='conf:../conf';
9
10 $line_cnt = 10 ;
11 $offset = 175 ;
12 $base_off = 0 ;
13 $xskip = ( $^O eq 'solaris' ) ? 600 : 500 ;
14
15 my @children ;
16
17
18 $SIG{ 'INT' } = \&cleanup ;
19
20 if ( $s ) {
21
22         $ssfe = 'ssfe' ;
23         $prompt = '-prompt "Stem: "' ;
24         $echo = 'console_echo=1';
25         $prompt2 = '-prompt "Chat: "' ;
26 }
27
28 foreach $cmd ( split /\n/, <<EOT ) {
29 xterm -T Stem -n Stem -geometry 80x40+XSKIP+0 -e $ssfe $prompt run_stem conf_path=$conf_path $echo inetd
30 xterm -T A -n A -geometry 80xLINE+0+OFF -e $ssfe $prompt2 telnet localhost 6666
31 xterm -T B -n B -geometry 80xLINE+0+OFF -e $ssfe $prompt2 telnet localhost 6667
32 xterm -T C -n C -geometry 80xLINE+0+OFF -e $ssfe $prompt2 telnet localhost 6666
33 xterm -T D -n D -geometry 80xLINE+0+OFF -e $ssfe $prompt2 telnet localhost 6667
34 EOT
35
36         $cmd =~ s/XSKIP/$xskip/ ;
37
38         $cmd =~ s/LINE/$line_cnt/ ;
39         $cmd =~ s/OFF/$base_off/ and $base_off += $offset ;
40
41 print "CMD $cmd\n" ;
42
43         fork_exec( $cmd ) ;
44         sleep 4 unless $cmd =~ /localhost/ ;
45 }
46
47 1 while wait() != -1;
48
49 exit;
50
51
52
53 sub cleanup {
54
55         print "clean up\n" ;
56
57         kill 9, @children ;
58
59         wait ;  
60         exit ;
61
62 }
63
64 sub fork_exec {
65
66         my( $exec ) = @_ ;
67
68         if ( $pid = fork() ) {
69
70                 push @children, $pid ;
71                 return ;
72         }
73
74         exec $exec ;
75 }