Commit | Line | Data |
3e03d89e |
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 | } |