From bab07abab86075c81511c34b311c7d7d7f1f7e0a Mon Sep 17 00:00:00 2001 From: Douglas Clowes Date: Tue, 1 Apr 2014 16:18:11 +1100 Subject: [PATCH] Revised macro log suppression --- conman.c | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/conman.c b/conman.c index 50febe35..04ef37a3 100644 --- a/conman.c +++ b/conman.c @@ -770,6 +770,61 @@ static int testAndWriteSocket(SConnection * pCon, char *buffer, int iOut) return 0; } +/*--------------------------------------------------------------------------*/ +static int isOK(const char *buffer) +{ + if ((buffer[0] == 'O' && buffer[1] == 'K') + && (buffer[2] == '\0' || buffer[2] == '\r' || buffer[2] == '\n')) + return 1; + return 0; +} + +/*--------------------------------------------------------------------------*/ +static void testAndWriteSICSLog(SConnection * self, char *buffer, int iOut) +{ + char *tp; + /* We don't want to log the "OK" messages */ + if (isOK(buffer)) + return; + + if (SCinMacro(self)) { + tp = "M"; + if (sicsdebug()) + tp = "D"; + } else + tp = "N"; + switch (iOut) { + case eStatus: + case eStart: + case eFinish: + case eEvent: + case eHdbValue: + case eHdbEvent: + case eLog: + case eLogError: + case eError: + case eWarning: + /* Log it */ + SICSLogPrintf(iOut, "%s:%s", tp, buffer); + return; + case eValue: + if (sicsdebug() || !SCinMacro(self)) { + /* Log it */ + SICSLogPrintf(iOut, "%s:%s", tp, buffer); + return; + } else { + /* Suppressed */ + /* SICSLogPrintf(iOut, "%s!:%s", tp, buffer); */ + return; + } + break; + default: + printf("Unrecognized ouput code %d in testAndWriteSICSLog: FIXME!!!\n", iOut); + SICSLogPrintf(iOut, "%s:%s", tp, buffer); + return; + } +} + /*--------------------------------------------------------------------------*/ int SCNormalWrite(SConnection * self, char *buffer, int iOut) { @@ -784,10 +839,14 @@ int SCNormalWrite(SConnection * self, char *buffer, int iOut) } /* log it for any case */ +#if 0 if ( (sicsdebug() || !SCinMacro(self)) && !(iOut == eInternal || (buffer[0] == 'O' && buffer[1] == 'K' && (buffer[2] == '\0' || buffer[2] == '\r' || buffer[2] == '\n')))) SICSLogWrite(buffer, iOut); +#else + testAndWriteSICSLog(self, buffer, iOut); +#endif testAndWriteCommandLog(self, buffer, iOut);