From c6e3eb0922736b4d65e93ec30196625f4d81140c Mon Sep 17 00:00:00 2001 From: Dmitry Date: Thu, 15 Apr 2021 10:54:15 +0300 Subject: [PATCH] idf.py.exe changes to handle Ctrl+C in correct way. Handling Ctrl+C in correct way for gdbstubs. --- tools/idf.py | 12 ++++++++++++ tools/windows/idf_exe/idf_main.c | 14 ++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/tools/idf.py b/tools/idf.py index 4e296c58aa..273eb24766 100755 --- a/tools/idf.py +++ b/tools/idf.py @@ -39,6 +39,9 @@ from collections import Counter, OrderedDict from importlib import import_module from pkgutil import iter_modules +import signal + + # pyc files remain in the filesystem when switching between branches which might raise errors for incompatible # idf.py extensions. Therefore, pyc file generation is turned off: sys.dont_write_bytecode = True @@ -723,7 +726,16 @@ def init_cli(verbose_output=None): return CLI(help=cli_help, verbose_output=verbose_output, all_actions=all_actions) +def signal_handler(signal, frame): + # The Ctrl+C processed by other threads inside + pass + + def main(): + + # Processing of Ctrl+C event for all threads made by main() + signal.signal(signal.SIGINT, signal_handler) + checks_output = check_environment() cli = init_cli(verbose_output=checks_output) # the argument `prog_name` must contain name of the file - not the absolute path to it! diff --git a/tools/windows/idf_exe/idf_main.c b/tools/windows/idf_exe/idf_main.c index cbfcf7990f..dbbe267305 100644 --- a/tools/windows/idf_exe/idf_main.c +++ b/tools/windows/idf_exe/idf_main.c @@ -16,6 +16,9 @@ #include #include #include +#include +#include +#include #define LINESIZE 1024 @@ -43,6 +46,17 @@ BOOL WINAPI CtrlHandler(DWORD fdwCtrlType) } } +BOOL WINAPI CtrlHandler(DWORD fdwCtrlType) +{ + switch (fdwCtrlType) { + // Handle the CTRL-C signal. + case CTRL_C_EVENT: + return TRUE; + default: + return FALSE; + } +} + int main(int argc, LPTSTR argv[]) { /* Print the version of this wrapper tool, but only if invoked as "idf.exe".