Make modulecmd_argtype_to_str return values constant
The function needlessly allocated memory for the type strings.
This commit is contained in:
parent
948a059004
commit
7baa52b763
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user