static int logClose (LOGGER *p_logger) { int retval = SUCCESS; if (p_logger == NULL) { fprintf (stderr, "ERROR: %s - NULL logger provided\n", __FUNCTION__); return ERROR; } if (!(p_logger->optionMask & NODE_IN_USE)) { fprintf (stderr, "ERROR: %s - Logger not in use\n", __FUNCTION__); return ERROR; } switch (p_logger->facility) { case F_FILE: retval = logCloseFile (p_logger); break; case F_DB: retval = logCloseDB (p_logger); break; case F_SOCKET: retval = logCloseSocket (p_logger); break; case F_PIPE: retval = logClosePipe (p_logger); break; case F_CONSOLE: retval = logCloseConsole (p_logger); break; case F_PRINTER: retval = logClosePrinter (p_logger); break; default: /* Shouldn't ever get here... */ break; } return retval; }
// Write to the log file void writeLogFile(const char * szLog){ DWORD dwPos = 0; DWORD dwBytesWritten = 0; SYSTEMTIME lt; // WJF 7/11/16 Win-20 localTime -> lt CHAR szOutput[128]; // WJF 7/11/16 Win-20 1024 -> 128 DWORD logLength = 0; // WJF 6/30/16 Win-21 size_t -> DWORD LPSTR dateString = NULL; // WJF 7/11/16 Win-20 CHAR dateComp[16]; // WJF 7/11/16 Win-20 if (bLogIsOpen) { // WJF 7/8/16 Win-20 Don't bother doing this if the log isn't open GetLocalTime(<); sprintf_s(dateComp, 16, "%04u%02u%02u", lt.wYear, lt.wMonth, lt.wDay); // WJF 7/11/16 Win-20 If the current date doesn't match the date of the open log file, close it and make a new one if (strcmp(dateComp, dateOpened) != 0) { logCloseFile(); logOpenFile(); } if (bLogIsOpen) { // WJF 7/11/16 Win-20 This might change if the day rolled over // MM/DD/YYYY H:M:S:MS - // WJF 7/11/16 Win-20 Rewrote to be simpler sprintf_s(szOutput, 128, "%02u/%02u/%04u %02u:%02u:%02u:%03u - ", lt.wMonth, lt.wDay, lt.wYear, lt.wHour, lt.wMinute, lt.wSecond, lt.wMilliseconds); strcat_s(szOutput, 128, szLog); logLength = (DWORD)strlen(szOutput); // WJF 6/30/16 Win-21 Cast to DWORD //if ((hLogFile != INVALID_HANDLE_VALUE) && (bLogIsOpen)) { // WJF 7/8/16 Win-20 Removed unneccessary check dwPos = SetFilePointer(hLogFile, 0, NULL, FILE_END); LockFile(hLogFile, dwPos, 0, logLength, 0); WriteFile(hLogFile, szOutput, logLength, &dwBytesWritten, NULL); UnlockFile(hLogFile, dwPos, 0, logLength, 0); // } } } }
// FUNCTION: sys_LoggingStop(PA_PluginParameters params) // // PURPOSE: Stop logging Win32API commands // // COMMENTS: // // DATE: WJF 7/11/16 Win-20 void sys_LoggingStop(PA_PluginParameters params){ PA_ReturnLong(params, logCloseFile()); // WJF 7/11/16 Win-20 Return long and moved to common method }