plugins/admin-flatfile/admin-levels.sp
changeset 442 0ee8623fbc79
parent 439 0f0e53f49f5a
child 444 0c718808b5a2
     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  }