diff --git a/src/main.py b/src/main.py index b1359e6..180eafa 100644 --- a/src/main.py +++ b/src/main.py @@ -1,9 +1,9 @@ # SPDX-License-Identifier: LGPL-2.1-only -# Copyright 2021 Jookia +# Copyright 2022 Jookia -import atexit import sys +from src import port from src import log from src import oldparse from src import interp @@ -32,8 +32,8 @@ def wait_main(): - atexit.register(unexpected_exit) + port.atexit_register_one(unexpected_exit) code = main() - atexit.unregister(unexpected_exit) + port.atexit_unregister() input("Exited with code %s. Press any key to continue." % (code)) sys.exit(code) diff --git a/src/port.py b/src/port.py new file mode 100644 index 0000000..7747999 --- /dev/null +++ b/src/port.py @@ -0,0 +1,26 @@ +# SPDX-License-Identifier: LGPL-2.1-only +# Copyright 2022 Jookia + +import sys + +if sys.implementation.name in ["micropython", "circuitpython"]: + + def atexit_register_one(function): + sys.atexit(function) + + def atexit_unregister(): + sys.atexit(None) + +else: + import atexit + + registered = None + + def atexit_register_one(function): + global registered + registered = function + atexit.register(function) + + def atexit_unregister(): + global registered + atexit.unregister(registered)