1.1 --- a/plugins/admin-base/admin-base.sp Mon Jan 29 22:37:37 2007 +0000
1.2 +++ b/plugins/admin-base/admin-base.sp Mon Jan 29 23:09:11 2007 +0000
1.3 @@ -13,6 +13,7 @@
1.4 /** Various globals */
1.5 new AdminFlag:g_FlagLetters[26]; /* Maps the flag letters */
1.6 new bool:g_LoggedFileName = false; /* Whether or not the file name has been logged */
1.7 +new g_ErrorCount = 0;
1.8
1.9 public OnRebuildAdminCache(cache_flags)
1.10 {
2.1 --- a/plugins/admin-base/admin-levels.sp Mon Jan 29 22:37:37 2007 +0000
2.2 +++ b/plugins/admin-base/admin-levels.sp Mon Jan 29 23:09:11 2007 +0000
2.3 @@ -5,6 +5,8 @@
2.4 new Handle:g_hLevelParser = INVALID_HANDLE;
2.5 new g_LevelState = LEVEL_STATE_NONE;
2.6
2.7 +/* :TODO: log line numbers? */
2.8 +
2.9 InitializeLevelParser()
2.10 {
2.11 if (g_hLevelParser == INVALID_HANDLE)
2.12 @@ -35,6 +37,21 @@
2.13 g_FlagLetters['z'-'a'] = Admin_Root;
2.14 }
2.15
2.16 +stock LogLevelError(const String:format[], {Handle,String,Float,_}:...)
2.17 +{
2.18 + decl String:buffer[512];
2.19 +
2.20 + if (!g_LoggedFileName)
2.21 + {
2.22 + LogError("Error(s) detected parsing admin_level.cfg:");
2.23 + g_LoggedFileName = true;
2.24 + }
2.25 +
2.26 + VFormat(buffer, sizeof(buffer), format, 2);
2.27 +
2.28 + LogError(" (%d) %s", ++g_ErrorCount, buffer);
2.29 +}
2.30 +
2.31 public SMCResult:ReadLevels_NewSection(Handle:smc, const String:name[], bool:opt_quotes)
2.32 {
2.33 if (g_LevelState == LEVEL_STATE_NONE)
2.34 @@ -42,18 +59,12 @@
2.35 if (StrEqual(name, "Levels"))
2.36 {
2.37 g_LevelState = LEVEL_STATE_LEVELS;
2.38 - } else {
2.39 - /* :TODO: log error */
2.40 }
2.41 } else if (g_LevelState == LEVEL_STATE_LEVELS) {
2.42 if (StrEqual(name, "Flags"))
2.43 {
2.44 g_LevelState = LEVEL_STATE_FLAGS;
2.45 - } else {
2.46 - /* :TODO: log error */
2.47 }
2.48 - } else {
2.49 - /* :TODO: Log error */
2.50 }
2.51
2.52 return SMCParse_Continue;
2.53 @@ -67,7 +78,7 @@
2.54
2.55 if (chr < 'a' || chr > 'z')
2.56 {
2.57 - /* :TODO: log error */
2.58 + LogLevelError("Unrecognized character: \"%s\"", value);
2.59 return SMCParse_Continue;
2.60 }
2.61
2.62 @@ -105,7 +116,7 @@
2.63 } else if (StrEqual(key, "root")) {
2.64 flag = Admin_Root;
2.65 } else {
2.66 - /* :TODO: log error */
2.67 + LogLevelError("Unrecognized flag type: %s", key);
2.68 }
2.69
2.70 g_FlagLetters[chr] = flag;
2.71 @@ -136,10 +147,17 @@
2.72 /* Set states */
2.73 g_LevelState = LEVEL_STATE_NONE;
2.74 g_LoggedFileName = false;
2.75 + g_ErrorCount = 0;
2.76
2.77 new SMCError:err = SMC_ParseFile(g_hLevelParser, path);
2.78 if (err != SMCError_Okay)
2.79 {
2.80 - /* :TODO: log error */
2.81 + decl String:buffer[64];
2.82 + if (SMC_GetErrorString(err, buffer, sizeof(buffer)))
2.83 + {
2.84 + LogLevelError("%s", buffer);
2.85 + } else {
2.86 + LogLevelError("Fatal parse error");
2.87 + }
2.88 }
2.89 }