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