From 58abc0da5ba1074dc3d87a6bfd20dcd87fddb269 Mon Sep 17 00:00:00 2001 From: Bram Matthys Date: Tue, 17 Aug 2021 17:03:00 +0200 Subject: [PATCH] Add moddata_client_get_raw() to get the ModData *. This probably should not be used much as normally you should not rely on structures created by modules in other modules / other code. --- include/modules.h | 1 + src/api-moddata.c | 13 +++++++++++++ 2 files changed, 14 insertions(+) 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) {