1.1 --- a/plugins/admin-flatfile/admin-levels.sp Tue Feb 06 19:05:45 2007 +0000
1.2 +++ b/plugins/admin-flatfile/admin-levels.sp Tue Feb 06 23:30:50 2007 +0000
1.3 @@ -36,34 +36,31 @@
1.4 g_FlagLetters['z'-'a'] = Admin_Root;
1.5 }
1.6
1.7 -static LogLevelError(const String:format[], {Handle,String,Float,_}:...)
1.8 +public SMCResult:ReadLevels_NewSection(Handle:smc, const String:name[], bool:opt_quotes)
1.9 {
1.10 - decl String:buffer[512];
1.11 -
1.12 - if (!g_LoggedFileName)
1.13 + if (g_IgnoreLevel)
1.14 {
1.15 - LogError("Error(s) detected parsing admin_levels.cfg:");
1.16 - g_LoggedFileName = true;
1.17 + g_IgnoreLevel++;
1.18 + return SMCParse_Continue;
1.19 }
1.20
1.21 - VFormat(buffer, sizeof(buffer), format, 2);
1.22 -
1.23 - LogError(" (%d) %s", ++g_ErrorCount, buffer);
1.24 -}
1.25 -
1.26 -public SMCResult:ReadLevels_NewSection(Handle:smc, const String:name[], bool:opt_quotes)
1.27 -{
1.28 if (g_LevelState == LEVEL_STATE_NONE)
1.29 {
1.30 if (StrEqual(name, "Levels"))
1.31 {
1.32 g_LevelState = LEVEL_STATE_LEVELS;
1.33 + } else {
1.34 + g_IgnoreLevel++;
1.35 }
1.36 } else if (g_LevelState == LEVEL_STATE_LEVELS) {
1.37 if (StrEqual(name, "Flags"))
1.38 {
1.39 g_LevelState = LEVEL_STATE_FLAGS;
1.40 + } else {
1.41 + g_IgnoreLevel++;
1.42 }
1.43 + } else {
1.44 + g_IgnoreLevel++;
1.45 }
1.46
1.47 return SMCParse_Continue;
1.48 @@ -71,13 +68,13 @@
1.49
1.50 public SMCResult:ReadLevels_KeyValue(Handle:smc, const String:key[], const String:value[], bool:key_quotes, bool:value_quotes)
1.51 {
1.52 - if (g_LevelState == LEVEL_STATE_FLAGS)
1.53 + if (g_LevelState == LEVEL_STATE_FLAGS && !g_IgnoreLevel)
1.54 {
1.55 new chr = value[0];
1.56
1.57 if (chr < 'a' || chr > 'z')
1.58 {
1.59 - LogLevelError("Unrecognized character: \"%s\"", value);
1.60 + ParseError("Unrecognized character: \"%s\"", value);
1.61 return SMCParse_Continue;
1.62 }
1.63
1.64 @@ -127,7 +124,7 @@
1.65 } else if (StrEqual(key, "custom6")) {
1.66 flag = Admin_Custom6;
1.67 } else {
1.68 - LogLevelError("Unrecognized flag type: %s", key);
1.69 + ParseError("Unrecognized flag type: %s", key);
1.70 }
1.71
1.72 g_FlagLetters[chr] = flag;
1.73 @@ -139,6 +136,13 @@
1.74
1.75 public SMCResult:ReadLevels_EndSection(Handle:smc)
1.76 {
1.77 + /* If we're ignoring, skip out */
1.78 + if (g_IgnoreLevel)
1.79 + {
1.80 + g_IgnoreLevel--;
1.81 + return SMCParse_Continue;
1.82 + }
1.83 +
1.84 if (g_LevelState == LEVEL_STATE_FLAGS)
1.85 {
1.86 /* We're totally done parsing */
1.87 @@ -165,27 +169,24 @@
1.88
1.89 RefreshLevels()
1.90 {
1.91 - new String:path[PLATFORM_MAX_PATH];
1.92 -
1.93 LoadDefaultLetters();
1.94 InitializeLevelParser();
1.95
1.96 - BuildPath(Path_SM, path, sizeof(path), "configs/admin_levels.cfg");
1.97 + BuildPath(Path_SM, g_Filename, sizeof(g_Filename), "configs/admin_levels.cfg");
1.98
1.99 /* Set states */
1.100 + InitGlobalStates();
1.101 g_LevelState = LEVEL_STATE_NONE;
1.102 - g_LoggedFileName = false;
1.103 - g_ErrorCount = 0;
1.104
1.105 - new SMCError:err = SMC_ParseFile(g_hLevelParser, path);
1.106 + new SMCError:err = SMC_ParseFile(g_hLevelParser, g_Filename);
1.107 if (err != SMCError_Okay)
1.108 {
1.109 decl String:buffer[64];
1.110 if (SMC_GetErrorString(err, buffer, sizeof(buffer)))
1.111 {
1.112 - LogLevelError("%s", buffer);
1.113 + ParseError("%s", buffer);
1.114 } else {
1.115 - LogLevelError("Fatal parse error");
1.116 + ParseError("Fatal parse error");
1.117 }
1.118 }
1.119 }