core/smn_admin.cpp
changeset 1298 9cddbed74581
parent 1231 17badaf66ce4
child 1330 ab94316bb52b
     1.1 --- a/core/smn_admin.cpp	Fri Aug 10 01:07:07 2007 +0000
     1.2 +++ b/core/smn_admin.cpp	Fri Aug 10 04:53:30 2007 +0000
     1.3 @@ -451,6 +451,57 @@
     1.4  	return 1;
     1.5  }
     1.6  
     1.7 +static cell_t FindFlagByName(IPluginContext *pContext, const cell_t *params)
     1.8 +{
     1.9 +	char *flag;
    1.10 +	pContext->LocalToString(params[1], &flag);
    1.11 +
    1.12 +	cell_t *addr;
    1.13 +	pContext->LocalToPhysAddr(params[2], &addr);
    1.14 +
    1.15 +	AdminFlag admflag;
    1.16 +	if (!g_Admins.FindFlag(flag, &admflag))
    1.17 +	{
    1.18 +		return 0;
    1.19 +	}
    1.20 +
    1.21 +	*addr = (cell_t)admflag;
    1.22 +
    1.23 +	return 1;
    1.24 +}
    1.25 +
    1.26 +static cell_t FindFlagByChar(IPluginContext *pContext, const cell_t *params)
    1.27 +{
    1.28 +	cell_t *addr;
    1.29 +	pContext->LocalToPhysAddr(params[2], &addr);
    1.30 +
    1.31 +	AdminFlag admflag;
    1.32 +	if (!g_Admins.FindFlag((char)params[1], &admflag))
    1.33 +	{
    1.34 +		return 0;
    1.35 +	}
    1.36 +
    1.37 +	*addr = (cell_t)admflag;
    1.38 +
    1.39 +	return 1;
    1.40 +}
    1.41 +
    1.42 +static cell_t ReadFlagString(IPluginContext *pContext, const cell_t *params)
    1.43 +{
    1.44 +	char *flag;
    1.45 +	pContext->LocalToString(params[1], &flag);
    1.46 +
    1.47 +	cell_t *addr;
    1.48 +	pContext->LocalToPhysAddr(params[2], &addr);
    1.49 +
    1.50 +	const char *end = flag;
    1.51 +	FlagBits bits = g_Admins.ReadFlagString(flag, &end);
    1.52 +
    1.53 +	*addr = end - flag;
    1.54 +
    1.55 +	return bits;
    1.56 +}
    1.57 +
    1.58  REGISTER_NATIVES(adminNatives)
    1.59  {
    1.60  	{"DumpAdminCache",			DumpAdminCache},
    1.61 @@ -489,6 +540,9 @@
    1.62  	{"FlagBitsToArray",			FlagBitsToArray},
    1.63  	{"CanAdminTarget",			CanAdminTarget},
    1.64  	{"CreateAuthMethod",		CreateAuthMethod},
    1.65 +	{"FindFlagByName",			FindFlagByName},
    1.66 +	{"FindFlagByChar",			FindFlagByChar},
    1.67 +	{"ReadFlagString",			ReadFlagString},
    1.68  	/* -------------------------------------------------- */
    1.69  	{NULL,						NULL},
    1.70  };