From c50d920f94139c39de45362b419aa3baa28acf29 Mon Sep 17 00:00:00 2001 From: Charl Wentzel Date: Sat, 1 Jul 2017 12:07:34 +0200 Subject: [PATCH] Important update: - Log signals direct to StdErr if no Log instance - Bug fix: ProcessName is external pointer, not literal --- SignalCore.cpp | 50 +++++++++++++++++++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 15 deletions(-) diff --git a/SignalCore.cpp b/SignalCore.cpp index 190ab2c..6a08755 100644 --- a/SignalCore.cpp +++ b/SignalCore.cpp @@ -21,7 +21,7 @@ // Global vars extern CLogCore * Log; -extern char ProcessName[]; +extern char * ProcessName; // Termination Vars bool Terminate = false; @@ -83,22 +83,36 @@ void SignalTerminate( int sig ) Terminate = true; TermCount++; - // Check for Terminate Limit - // Show signal received if not already terminated - std::cerr << "\r\n" << ProcessName << ": ***********************************\n"; + std::cerr << "\r\n" << ProcessName << ": ***********************************" << std::endl; // Create Log Entry - if (Log) Log->Message( dlNone, dlNone, "%s: ** %s signal received [%d] **", ProcessName, SigName, TermCount ); - if (TermCount < MaxTermCount) { - if (Log) Log->Message( dlNone, dlNone, "%s: ** Terminating normally... **", ProcessName ); + if (Log) + { + Log->Message( dlNone, dlNone, "%s: ** %s signal received [%d] **", ProcessName, SigName, TermCount ); + // Check for Terminate Limit + if (TermCount < MaxTermCount) { + Log->Message( dlNone, dlNone, "%s: ** Terminating normally... **", ProcessName ); + } else { + Log->Message( dlNone, dlNone, "%s: ** Terminating immediately! **", ProcessName ); + } } - else { - if (Log) Log->Message( dlNone, dlNone, "%s: ** Terminating immediately! **", ProcessName ); + else + { + std::cerr << ProcessName << ": ** " << SigName << " signal received [" << TermCount << "] **" << std::endl; + // Check for Terminate Limit + if (TermCount < MaxTermCount) { + std::cerr << ProcessName << ": ** Terminating normally... **" << std::endl; + } else { + std::cerr << ProcessName << ": ** Terminating immediately! **" << std::endl; + } } - std::cerr << ProcessName << ": ***********************************\n\n"; - if (TermCount >= MaxTermCount) + std::cerr << ProcessName << ": ***********************************" << std::endl << std::endl; + + // Check for Terminate Limit + if (TermCount >= MaxTermCount) { exit( sig ); + } return; }//--------------------------------------------------------------------------- @@ -120,13 +134,19 @@ void SignalAbort( int sig ) } // Show signal received - std::cerr << "\n" << ProcessName << ": ********************************\n"; + std::cerr << "\n" << ProcessName << ": ********************************" << std::endl; // Create Log Entry - but don't post - if (Log) Log->Message( dlNone, dlNone, "%s: ** %s signal received **", ProcessName, SigName ); - if (Log) Log->Message( dlNone, dlNone, "%s: ** Terminating immediately! **", ProcessName ); + if (Log) { + Log->Message( dlNone, dlNone, "%s: ** %s signal received **", ProcessName, SigName ); + Log->Message( dlNone, dlNone, "%s: ** Terminating immediately! **", ProcessName ); + } + else { + std::cerr << ProcessName << ": ** " << SigName << " signal received **" << std::endl; + std::cerr << ProcessName << ": ** Terminating immediately! **" << std::endl; + } - std::cerr << ProcessName << ": ********************************\n\n"; + std::cerr << ProcessName << ": ********************************" << std::endl << std::endl; // Terminate with signal exit( sig );