1.1 --- a/core/Logger.cpp Wed Sep 19 15:18:15 2007 +0000
1.2 +++ b/core/Logger.cpp Thu Sep 20 17:19:16 2007 +0000
1.3 @@ -139,7 +139,11 @@
1.4 FILE *fp = fopen(m_NrmFileName.c_str(), "w");
1.5 if (!fp)
1.6 {
1.7 - g_SMAPI->ConPrint("[SM] Unexpected fatal logging error. SourceMod logging disabled.\n");
1.8 + char error[255];
1.9 + g_LibSys.GetPlatformError(error, sizeof(error));
1.10 + LogFatal("[SM] Unexpected fatal logging error (file \"%s\")", m_NrmFileName.c_str());
1.11 + LogFatal("[SM] Platform returned error: \"%s\"", error);
1.12 + LogFatal("[SM] Logging has been disabled.");
1.13 m_Active = false;
1.14 return;
1.15 } else {
1.16 @@ -332,7 +336,11 @@
1.17
1.18 return;
1.19 print_error:
1.20 - g_SMAPI->ConPrint("[SM] Unexpected fatal logging error. SourceMod logging disabled.\n");
1.21 + char error[255];
1.22 + g_LibSys.GetPlatformError(error, sizeof(error));
1.23 + LogFatal("[SM] Unexpected fatal logging error (file \"%s\")", m_NrmFileName.c_str());
1.24 + LogFatal("[SM] Platform returned error: \"%s\"", error);
1.25 + LogFatal("[SM] Logging has been disabled.");
1.26 m_Active = false;
1.27 }
1.28
1.29 @@ -373,7 +381,11 @@
1.30 va_end(ap);
1.31 fclose(fp);
1.32 } else {
1.33 - g_SMAPI->ConPrint("[SM] Unexpected fatal logging error. SourceMod logging disabled.\n");
1.34 + char error[255];
1.35 + g_LibSys.GetPlatformError(error, sizeof(error));
1.36 + LogFatal("[SM] Unexpected fatal logging error (file \"%s\")", m_NrmFileName.c_str());
1.37 + LogFatal("[SM] Platform returned error: \"%s\"", error);
1.38 + LogFatal("[SM] Logging has been disabled.");
1.39 m_Active = false;
1.40 return;
1.41 }
1.42 @@ -474,21 +486,28 @@
1.43 * It's already implemented twice which is bad.
1.44 */
1.45
1.46 + va_list ap;
1.47 + char buffer[3072];
1.48 +
1.49 + va_start(ap, msg);
1.50 + UTIL_FormatArgs(buffer, sizeof(buffer), msg, ap);
1.51 + va_end(ap);
1.52 +
1.53 + char date[32];
1.54 + time_t t;
1.55 + GetAdjustedTime(&t);
1.56 + tm *curtime = localtime(&t);
1.57 + strftime(date, sizeof(date), "%m/%d/%Y - %H:%M:%S", curtime);
1.58 +
1.59 + g_SMAPI->ConPrintf("L %s: %s\n", date, buffer);
1.60 +
1.61 char path[PLATFORM_MAX_PATH];
1.62 g_SourceMod.BuildPath(Path_Game, path, sizeof(path), "sourcemod_fatal.log");
1.63 FILE *fp = fopen(path, "at");
1.64 - if (!fp)
1.65 + if (fp)
1.66 {
1.67 - /* We're just doomed, aren't we... */
1.68 - return;
1.69 + fprintf(fp, "%s\n", buffer);
1.70 + fclose(fp);
1.71 }
1.72 +}
1.73
1.74 - va_list ap;
1.75 - va_start(ap, msg);
1.76 - vfprintf(fp, msg, ap);
1.77 - va_end(ap);
1.78 -
1.79 - fputs("\n", fp);
1.80 -
1.81 - fclose(fp);
1.82 -}