test for symbol table/package lookup bug
[urisagit/Stem.git] / bin / chat_demo
1 #!/usr/local/bin/perl -s
2
3 $line_cnt = 10 ;
4 $offset = 175 ;
5 $base_off = 0 ;
6 $xskip = ( $^O eq 'solaris' ) ? 600 : 500 ;
7
8 print "CHAT DEMO\n" ;
9
10 my @children ;
11
12 $SIG{ 'INT' } = \&cleanup ;
13
14 if ( $s ) {
15
16         $ssfe = 'ssfe' ;
17         $prompt = '-prompt Stem:' ;
18         $prompt2 = '-prompt Chat:' ;
19         $echo = 'console_echo=1'
20 }
21
22 foreach $cmd ( split /\n/, <<EOT ) {
23 xterm -T Chat -n Chat -geometry 80x40+XSKIP+0 -e $ssfe $prompt run_stem $echo chat
24 xterm -T A -n A -geometry 80xLINE+0+OFF -e $ssfe $prompt2 telnet localhost 6666
25 xterm -T B -n B -geometry 80xLINE+0+OFF -e $ssfe $prompt2 telnet localhost 6667
26 xterm -T C -n C -geometry 80xLINE+0+OFF -e $ssfe $prompt2 telnet localhost 6668
27 xterm -T D -n D -geometry 80xLINE+0+OFF -e $ssfe $prompt2 telnet localhost 6669
28 EOT
29
30         $cmd =~ s/XSKIP/$xskip/ ;
31
32         $cmd =~ s/LINE/$line_cnt/ ;
33         $cmd =~ s/OFF/$base_off/ and $base_off += $offset ;
34
35 print "$cmd\n" ;
36
37         @cmd = split ' ', $cmd ;
38
39         s/:/: / for @cmd ;
40
41         fork_exec( @cmd ) ;
42         sleep 4 unless $cmd =~ /localhost/ ;
43 }
44
45
46 while( <STDIN> ) {
47
48         next unless /^q/i ;
49
50         cleanup() ;
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 }