michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #if defined(XP_WIN) michael@0: #include michael@0: #endif michael@0: michael@0: michael@0: #include michael@0: #include michael@0: #include michael@0: #include michael@0: michael@0: #include "updatelogging.h" michael@0: michael@0: UpdateLog::UpdateLog() : logFP(nullptr) michael@0: { michael@0: } michael@0: michael@0: void UpdateLog::Init(NS_tchar* sourcePath, michael@0: const NS_tchar* fileName, michael@0: const NS_tchar* alternateFileName, michael@0: bool append) michael@0: { michael@0: if (logFP) michael@0: return; michael@0: michael@0: this->sourcePath = sourcePath; michael@0: NS_tchar logFile[MAXPATHLEN]; michael@0: NS_tsnprintf(logFile, sizeof(logFile)/sizeof(logFile[0]), michael@0: NS_T("%s/%s"), sourcePath, fileName); michael@0: michael@0: if (alternateFileName && NS_taccess(logFile, F_OK)) { michael@0: NS_tsnprintf(logFile, sizeof(logFile)/sizeof(logFile[0]), michael@0: NS_T("%s/%s"), sourcePath, alternateFileName); michael@0: } michael@0: michael@0: logFP = NS_tfopen(logFile, append ? NS_T("a") : NS_T("w")); michael@0: } michael@0: michael@0: void UpdateLog::Finish() michael@0: { michael@0: if (!logFP) michael@0: return; michael@0: michael@0: fclose(logFP); michael@0: logFP = nullptr; michael@0: } michael@0: michael@0: void UpdateLog::Flush() michael@0: { michael@0: if (!logFP) michael@0: return; michael@0: michael@0: fflush(logFP); michael@0: } michael@0: michael@0: void UpdateLog::Printf(const char *fmt, ... ) michael@0: { michael@0: if (!logFP) michael@0: return; michael@0: michael@0: va_list ap; michael@0: va_start(ap, fmt); michael@0: vfprintf(logFP, fmt, ap); michael@0: fprintf(logFP, "\n"); michael@0: va_end(ap); michael@0: } michael@0: michael@0: void UpdateLog::WarnPrintf(const char *fmt, ... ) michael@0: { michael@0: if (!logFP) michael@0: return; michael@0: michael@0: va_list ap; michael@0: va_start(ap, fmt); michael@0: fprintf(logFP, "*** Warning: "); michael@0: vfprintf(logFP, fmt, ap); michael@0: fprintf(logFP, "***\n"); michael@0: va_end(ap); michael@0: }