home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / automake-1.1e-bin.lha / share / automake / interlock < prev    next >
Encoding:
Text File  |  1996-10-12  |  1.3 KB  |  46 lines

  1. #! /bin/sh
  2. # interlock - wrap program invocation in lock to allow
  3. #             parallel builds to work.
  4. # Written by Tom Tromey <tromey@cygnus.com>, Aug 10 1996
  5. #
  6. # This program is free software; you can redistribute it and/or modify
  7. # it under the terms of the GNU General Public License as published by
  8. # the Free Software Foundation; either version 2, or (at your option)
  9. # any later version.
  10. #
  11. # This program is distributed in the hope that it will be useful,
  12. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. # GNU General Public License for more details.
  15. #
  16. # You should have received a copy of the GNU General Public License
  17. # along with this program; if not, write to the Free Software
  18. # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  19.  
  20. # Usage:
  21. #   interlock lock-dir-name program args-to-program...
  22.  
  23. dirname="$1"
  24. program="$2"
  25.  
  26. shift
  27. shift
  28.  
  29. while (mkdir $dirname > /dev/null 2>&1 && exit 1 || exit 0); do
  30.    # Wait a bit.
  31.    sleep 1
  32. done
  33.  
  34. # Race condition here: if interrupted after the loop but before this
  35. # trap, the lock can be left around.
  36. trap "rmdir $dirname > /dev/null 2>&1" 1 2 3 15
  37.  
  38. # We have the lock, so run the program.
  39. $program ${1+"$@"}
  40. ret=$?
  41.  
  42. # Release the lock.
  43. rmdir $dirname > /dev/null 2>&1
  44.  
  45. exit $ret
  46.