home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 February / PCWorld_2000-02_cd.bin / live / usr / X11R6 / bin / start-procmeter < prev    next >
Text File  |  1998-10-13  |  2KB  |  108 lines

  1. #!/bin/sh
  2. #
  3. #  A shell script that starts up a number of programs to feed data into ProcMeter
  4. #
  5. #  Written by Andrew M. Bishop
  6. #
  7. #  This file Copyright 1997 Andrew M. Bishop
  8. #  It may be distributed under the GNU Public License, version 2, or
  9. #  any higher version.  See section COPYING of the GNU Public license
  10. #  for conditions under which this file may be redistributed.
  11. #
  12.  
  13. # Constants
  14.  
  15. lib=/usr/X11R6/lib/X11/procmeter
  16. dir=/tmp
  17.  
  18. # Check the arguments
  19.  
  20. if [ $# = 0 ]; then
  21.     echo ''
  22.     echo A program to start ProcMeter and a number of programs to feed data into it.
  23.     echo ''
  24.     echo Usage: start-procmeter \"program1 args1\" \"program2 args2\" -- procmeter-args
  25.     echo ''
  26.     echo Each of the programs must take as its final argument the basename to use for the
  27.     echo definition '(.def)' and data '(.dat)' files, see the ProcMeter README for details.
  28.     echo ''
  29.     echo Programs that are specified are checked for in the current directory, in the
  30.     echo library directory $lib and on the path in that order.
  31.     echo ''
  32.     echo In $lib are the following programs:
  33.     cd $lib
  34.     for f in *; do
  35.         [ -x $f ] && echo "    $f"
  36.     done
  37.     echo ''
  38.     exit 0
  39. fi
  40.  
  41. # Variables
  42.  
  43. pids=
  44. data=
  45. files=
  46. num=0
  47. args=
  48.  
  49. # Start all of the programs
  50.  
  51. while [ ! $# = 0 ]; do
  52.  
  53.     if [ "$1" = -- ]; then
  54.         num=-1
  55.     elif [ $num -ge 0 ]; then
  56.         num=`expr 1 + $num`
  57.         file=$dir/.procmeter-$$-$num
  58.         data="$data -data $file.dat"
  59.         files="$files $file.def $file.dat"
  60.  
  61.         rm -f $file.def $file.dat
  62.  
  63.         prog=`echo $1 | cut -d' ' -f1`
  64.  
  65.         if [ -x ./$prog ] ; then
  66.             prefix=./
  67.         elif [ -x $prog ] ; then
  68.             prefix=
  69.         elif [ -x $lib/$prog ] ; then
  70.             prefix=$lib/
  71.         elif [ `basename $prog` = $prog ] && hash -- $prog 2> /dev/null; then
  72.             prefix=
  73.         else
  74.             echo Cannot find $prog here, on the path, or in the library $lib.
  75.             kill $pids
  76.             rm -f $files
  77.             exit 1
  78.         fi
  79.  
  80.         echo Starting $prefix$1
  81.  
  82.         $prefix$1 $file &
  83.  
  84.         pids="$pids $!"
  85.     else
  86.         args="$args $1"
  87.     fi
  88.  
  89.     shift
  90.  
  91. done
  92.  
  93. [ "$pids" ] && sleep 1
  94.  
  95. # Start ProcMeter
  96.  
  97. trap "echo Exiting" SIGINT
  98. trap "echo Exiting" SIGTERM
  99.  
  100. echo Starting ProcMeter
  101. procmeter $args $data
  102.  
  103. # Wait until ProcMeter is killed or the script is interrupted and tidy up
  104.  
  105. kill $pids
  106.  
  107. rm -f $files
  108.