Cleaned up demos, various build fixes
[urisagit/Stem.git] / bin / demo / chat_demo
diff --git a/bin/demo/chat_demo b/bin/demo/chat_demo
new file mode 100755 (executable)
index 0000000..07e8903
--- /dev/null
@@ -0,0 +1,81 @@
+#!/usr/local/bin/perl -s
+
+use lib qw(../blib/lib blib/lib);
+use Stem::ConfigData;
+$ENV{PATH} .= ':blib/script:../blib/script:demo:.';
+my $xterm = Stem::ConfigData->config('xterm_path');
+my $telnet = Stem::ConfigData->config('telnet_path');
+$conf_path='conf:../conf';
+
+
+$line_cnt = 10 ;
+$offset = 175 ;
+$base_off = 0 ;
+$xskip = ( $^O eq 'solaris' ) ? 600 : 500 ;
+
+print "CHAT DEMO\n" ;
+
+
+my @children ;
+
+$SIG{ 'INT' } = \&cleanup ;
+
+if ( $s ) {
+
+       $ssfe = 'ssfe' ;
+       $prompt = '-prompt "Stem: "' ;
+       $prompt2 = '-prompt "Chat: "' ;
+       $echo = 'console_echo=1'
+}
+
+foreach $cmd ( split /\n/, <<EOT ) {
+$xterm -T Chat -n Chat -geometry 80x40+XSKIP+0 -e $ssfe $prompt run_stem conf_path=$conf_path $echo chat
+$xterm -T A -n A -geometry 80xLINE+0+OFF -e $ssfe $prompt2 $telnet localhost 6666
+$xterm -T B -n B -geometry 80xLINE+0+OFF -e $ssfe $prompt2 $telnet localhost 6667
+$xterm -T C -n C -geometry 80xLINE+0+OFF -e $ssfe $prompt2 $telnet localhost 6668
+$xterm -T D -n D -geometry 80xLINE+0+OFF -e $ssfe $prompt2 $telnet localhost 6669
+EOT
+
+       $cmd =~ s/XSKIP/$xskip/ ;
+
+       $cmd =~ s/LINE/$line_cnt/ ;
+       $cmd =~ s/OFF/$base_off/ and $base_off += $offset ;
+
+print "$cmd\n" ;
+print `pwd`;
+
+#      @cmd = split ' ', $cmd ;
+        
+       fork_exec( $cmd ) ;
+       sleep 4 unless $cmd =~ /localhost/ ;
+}
+
+1 while wait() != -1;
+
+exit;
+
+
+
+sub cleanup {
+
+       print "clean up\n" ;
+
+       kill 9, @children ;
+
+       wait ;  
+       exit ;
+
+}
+
+sub fork_exec {
+
+       my( $exec ) = @_ ;
+
+       if ( $pid = fork() ) {
+
+               push @children, $pid ;
+               return ;
+       }
+
+       exec $exec ;
+}