diff options
author | Saturn&Eric <[email protected]> | 2022-03-19 07:55:26 +0000 |
---|---|---|
committer | GitHub <[email protected]> | 2022-03-19 07:55:26 +0000 |
commit | d1e305cda3a8ddc066213f3309826caf29064423 (patch) | |
tree | fabeb080e66df2fe944011ba5690f680ebabe7b6 /src/signal.cpp | |
parent | <doc>(project): update README.md. (diff) | |
parent | Merge branch 'main' into develop-2.0.5 (diff) | |
download | GpgFrontend-d1e305cda3a8ddc066213f3309826caf29064423.tar.gz GpgFrontend-d1e305cda3a8ddc066213f3309826caf29064423.zip |
Merge pull request #49 from saturneric/develop-2.0.5
v2.0.5
Diffstat (limited to 'src/signal.cpp')
-rw-r--r-- | src/signal.cpp | 40 |
1 files changed, 31 insertions, 9 deletions
diff --git a/src/signal.cpp b/src/signal.cpp index efcd8146..135bdead 100644 --- a/src/signal.cpp +++ b/src/signal.cpp @@ -1,4 +1,6 @@ /** + * Copyright (C) 2021 Saturneric + * * This file is part of GpgFrontend. * * GpgFrontend is free software: you can redistribute it and/or modify @@ -6,30 +8,50 @@ * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * - * Foobar is distributed in the hope that it will be useful, + * GpgFrontend is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with Foobar. If not, see <https://www.gnu.org/licenses/>. + * along with GpgFrontend. If not, see <https://www.gnu.org/licenses/>. + * + * The initial version of the source code is inherited from + * the gpg4usb project, which is under GPL-3.0-or-later. * - * The initial version of the source code is inherited from gpg4usb-team. - * Their source code version also complies with GNU General Public License. + * All the source code of GpgFrontend was modified and released by + * Saturneric<[email protected]> starting on May 12, 2021. * - * The source code version of this software was modified and released - * by Saturneric<[email protected]> starting on May 12, 2021. + * SPDX-License-Identifier: GPL-3.0-or-later * */ -#include <easyloggingpp/easylogging++.h> - #include <csetjmp> +#include "GpgFrontend.h" + extern jmp_buf recover_env; +/** + * @brief handle the signal caught. + * + * @param sig signal number + */ void handle_signal(int sig) { - LOG(INFO) << "signal caught"; + static int _repeat_handle_num = 1, last_sig = sig; + LOG(INFO) << "signal caught" << sig; + + if (last_sig == sig) + _repeat_handle_num++; + else + _repeat_handle_num = 1, last_sig = sig; + + if (_repeat_handle_num > 3) { + LOG(INFO) << "The same signal appears three times, execute the termination " + "operation. "; + exit(-1); + } + #ifndef WINDOWS siglongjmp(recover_env, 1); #else |