diff --git a/include/maxscale/modulecmd.h b/include/maxscale/modulecmd.h index fef3433c4..42c023d52 100644 --- a/include/maxscale/modulecmd.h +++ b/include/maxscale/modulecmd.h @@ -263,6 +263,6 @@ bool modulecmd_foreach(const char *domain_re, const char *ident_re, * @param type Type to convert * @return New string or NULL on memory allocation error */ -char* modulecmd_argtype_to_str(modulecmd_arg_type_t *type); +const char* modulecmd_argtype_to_str(modulecmd_arg_type_t *type); MXS_END_DECLS diff --git a/server/core/modulecmd.cc b/server/core/modulecmd.cc index 456e8f57e..b0fbeeac8 100644 --- a/server/core/modulecmd.cc +++ b/server/core/modulecmd.cc @@ -625,50 +625,52 @@ bool modulecmd_foreach(const char *domain_re, const char *ident_re, return rval; } -char* modulecmd_argtype_to_str(modulecmd_arg_type_t *type) +#define format_type(a, b) (MODULECMD_ARG_IS_REQUIRED(a) ? b : "[" b "]") + +const char* modulecmd_argtype_to_str(modulecmd_arg_type_t *type) { - const char *strtype = "UNKNOWN"; + const char* rval = "UNKNOWN"; switch (MODULECMD_GET_TYPE(type)) { case MODULECMD_ARG_NONE: - strtype = "NONE"; + rval = format_type(type, "NONE"); break; case MODULECMD_ARG_STRING: - strtype = "STRING"; + rval = format_type(type, "STRING"); break; case MODULECMD_ARG_BOOLEAN: - strtype = "BOOLEAN"; + rval = format_type(type, "BOOLEAN"); break; case MODULECMD_ARG_SERVICE: - strtype = "SERVICE"; + rval = format_type(type, "SERVICE"); break; case MODULECMD_ARG_SERVER: - strtype = "SERVER"; + rval = format_type(type, "SERVER"); break; case MODULECMD_ARG_SESSION: - strtype = "SESSION"; + rval = format_type(type, "SESSION"); break; case MODULECMD_ARG_DCB: - strtype = "DCB"; + rval = format_type(type, "DCB"); break; case MODULECMD_ARG_MONITOR: - strtype = "MONITOR"; + rval = format_type(type, "MONITOR"); break; case MODULECMD_ARG_FILTER: - strtype = "FILTER"; + rval = format_type(type, "FILTER"); break; case MODULECMD_ARG_OUTPUT: - strtype = "OUTPUT"; + rval = format_type(type, "OUTPUT"); break; default: @@ -677,16 +679,6 @@ char* modulecmd_argtype_to_str(modulecmd_arg_type_t *type) break; } - size_t slen = strlen(strtype); - size_t extra = MODULECMD_ARG_IS_REQUIRED(type) ? 0 : 2; - char *rval = (char*)MXS_MALLOC(slen + extra + 1); - - if (rval) - { - const char *fmtstr = extra ? "[%s]" : "%s"; - sprintf(rval, fmtstr, strtype); - } - return rval; } diff --git a/server/modules/routing/debugcli/debugcmd.c b/server/modules/routing/debugcli/debugcmd.c index a04e17b25..6c2a8aac3 100644 --- a/server/modules/routing/debugcli/debugcmd.c +++ b/server/modules/routing/debugcli/debugcmd.c @@ -330,13 +330,9 @@ bool listfuncs_cb(const MODULECMD *cmd, void *data) if (MODULECMD_GET_TYPE(type) != MODULECMD_ARG_OUTPUT) { - char *t = modulecmd_argtype_to_str(&cmd->arg_types[i]); - - if (t) - { - dcb_printf(dcb, "%s%s", t, i < cmd->arg_count_max - 1 ? " " : ""); - MXS_FREE(t); - } + dcb_printf(dcb, "%s%s", + modulecmd_argtype_to_str(&cmd->arg_types[i]), + i < cmd->arg_count_max - 1 ? " " : ""); } } @@ -348,14 +344,9 @@ bool listfuncs_cb(const MODULECMD *cmd, void *data) if (MODULECMD_GET_TYPE(type) != MODULECMD_ARG_OUTPUT) { - - char *t = modulecmd_argtype_to_str(&cmd->arg_types[i]); - - if (t) - { - dcb_printf(dcb, " %s - %s\n", t, cmd->arg_types[i].description); - MXS_FREE(t); - } + dcb_printf(dcb, " %s - %s\n", + modulecmd_argtype_to_str(&cmd->arg_types[i]), + cmd->arg_types[i].description); } }