SCons.exitfuncs

Package SCons :: Module exitfuncs |
[hide private]
[frames] | no frames]

# Source Code for Module SCons.exitfuncs

     1  """SCons.exitfuncs
     2
     3  Register functions which are executed when SCons exits for any reason.
     4
     5  """
     6
     7  #
     8  # Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 The SCons Foundation
     9  #
    10  # Permission is hereby granted, free of charge, to any person obtaining
    11  # a copy of this software and associated documentation files (the
    12  # "Software"), to deal in the Software without restriction, including
    13  # without limitation the rights to use, copy, modify, merge, publish,
    14  # distribute, sublicense, and/or sell copies of the Software, and to
    15  # permit persons to whom the Software is furnished to do so, subject to
    16  # the following conditions:
    17  #
    18  # The above copyright notice and this permission notice shall be included
    19  # in all copies or substantial portions of the Software.
    20  #
    21  # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
    22  # KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
    23  # WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
    24  # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
    25  # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
    26  # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
    27  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    28  #
    29
    30  __revision__ = "src/engine/SCons/exitfuncs.py 2725 2008/03/31 12:52:02 knight"
    31
    32
    33
    34  _exithandlers = []
    35 -def _run_exitfuncs():
    36      """run any registered exit functions
    37
    38      _exithandlers is traversed in reverse order so functions are executed
    39      last in, first out.
    40      """
    41
    42      while _exithandlers:
    43          func, targs, kargs =  _exithandlers.pop()
    44          apply(func, targs, kargs)
    45
    46 -def register(func, *targs, **kargs):
    47      """register a function to be executed upon normal program termination
    48
    49      func - function to be called at exit
    50      targs - optional arguments to pass to func
    51      kargs - optional keyword arguments to pass to func
    52      """
    53      _exithandlers.append((func, targs, kargs))
    54
    55  import sys
    56
    57  try:
    58      x = sys.exitfunc
    59
    60      # if x isn't our own exit func executive, assume it's another
    61      # registered exit function - append it to our list...
    62      if x != _run_exitfuncs:
    63          register(x)
    64
    65  except AttributeError:
    66      pass
    67
    68  # make our exit function get run by python when it exits:
    69  sys.exitfunc = _run_exitfuncs
    70
    71  del sys
    72