1# MIT License 2# 3# Copyright The SCons Foundation 4# 5# Permission is hereby granted, free of charge, to any person obtaining 6# a copy of this software and associated documentation files (the 7# "Software"), to deal in the Software without restriction, including 8# without limitation the rights to use, copy, modify, merge, publish, 9# distribute, sublicense, and/or sell copies of the Software, and to 10# permit persons to whom the Software is furnished to do so, subject to 11# the following conditions: 12# 13# The above copyright notice and this permission notice shall be included 14# in all copies or substantial portions of the Software. 15# 16# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY 17# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE 18# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 20# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 21# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 22# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 24"""Register functions which are executed when SCons exits for any reason.""" 25 26# This is obsolete now 27 28import atexit 29 30_exithandlers = [] 31def _run_exitfuncs(): 32 """run any registered exit functions 33 34 _exithandlers is traversed in reverse order so functions are executed 35 last in, first out. 36 """ 37 38 while _exithandlers: 39 func, targs, kargs = _exithandlers.pop() 40 func(*targs, **kargs) 41 42def register(func, *targs, **kargs): 43 """register a function to be executed upon normal program termination 44 45 func - function to be called at exit 46 targs - optional arguments to pass to func 47 kargs - optional keyword arguments to pass to func 48 """ 49 _exithandlers.append((func, targs, kargs)) 50 51 52# make our exit function get run by python when it exits 53atexit.register(_run_exitfuncs) 54 55# Local Variables: 56# tab-width:4 57# indent-tabs-mode:nil 58# End: 59# vim: set expandtab tabstop=4 shiftwidth=4: 60