diff --git a/include/modules.h b/include/modules.h index 24455c194..c84488e0f 100644 --- a/include/modules.h +++ b/include/modules.h @@ -946,6 +946,7 @@ extern void moddata_free_membership(Membership *m); extern ModDataInfo *findmoddata_byname(char *name, ModDataType type); extern int moddata_client_set(Client *acptr, char *varname, char *value); extern char *moddata_client_get(Client *acptr, char *varname); +extern ModData *moddata_client_get_raw(Client *client, char *varname); extern int moddata_local_client_set(Client *acptr, char *varname, char *value); extern char *moddata_local_client_get(Client *acptr, char *varname); diff --git a/src/api-moddata.c b/src/api-moddata.c index ba8a8ae84..383b5477a 100644 --- a/src/api-moddata.c +++ b/src/api-moddata.c @@ -360,6 +360,19 @@ char *moddata_client_get(Client *client, char *varname) return md->serialize(&moddata_client(client, md)); /* can be NULL */ } +/** Get ModData for client (via variable name) */ +ModData *moddata_client_get_raw(Client *client, char *varname) +{ + ModDataInfo *md; + + md = findmoddata_byname(varname, MODDATATYPE_CLIENT); + + if (!md) + return NULL; + + return &moddata_client(client, md); /* can be NULL */ +} + /** Set ModData for LocalClient (via variable name, string value) */ int moddata_local_client_set(Client *client, char *varname, char *value) {