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 };