Add config_getlist in config module
This commit is contained in:
@@ -29,6 +29,9 @@
|
|||||||
* \note
|
* \note
|
||||||
* \warning
|
* \warning
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define _GNU_SOURCE
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@@ -210,6 +213,34 @@ configmodule_interface_t *cfgif = config_get_if();
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int config_getlist(paramlist_def_t *ParamList, paramdef_t *params, int numparams, char *prefix)
|
||||||
|
{
|
||||||
|
if (CONFIG_ISFLAGSET(CONFIG_ABORT)) {
|
||||||
|
fprintf(stderr,"[CONFIG] config_get skipped, config module not properly initialized\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (!config_get_if())
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
const int ret = config_get_if()->getlist(ParamList, params, numparams, prefix);
|
||||||
|
if (ret >= 0 && params) {
|
||||||
|
char *newprefix;
|
||||||
|
if (prefix)
|
||||||
|
asprintf(&newprefix, "%s.%s", prefix, ParamList->listname);
|
||||||
|
else
|
||||||
|
newprefix = ParamList->listname;
|
||||||
|
char cfgpath[MAX_OPTNAME_SIZE*2 + 6]; /* prefix.listname.[listindex] */
|
||||||
|
for (int i = 0; i < ParamList->numelt; ++i) {
|
||||||
|
// TODO config_process_cmdline?
|
||||||
|
sprintf(cfgpath, "%s.[%i]", newprefix, i);
|
||||||
|
config_execcheck(ParamList->paramarray[i], numparams, cfgpath);
|
||||||
|
}
|
||||||
|
if (prefix)
|
||||||
|
free(newprefix);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
int config_isparamset(paramdef_t *params,int paramidx)
|
int config_isparamset(paramdef_t *params,int paramidx)
|
||||||
{
|
{
|
||||||
if ((params[paramidx].paramflags & PARAMFLAG_PARAMSET) != 0) {
|
if ((params[paramidx].paramflags & PARAMFLAG_PARAMSET) != 0) {
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ extern int config_assign_ipv4addr(paramdef_t *cfgoptions, char *ipv4addr);
|
|||||||
|
|
||||||
/* apis to get parameters, to be used by oai modules, at configuration time */
|
/* apis to get parameters, to be used by oai modules, at configuration time */
|
||||||
extern int config_get(paramdef_t *params,int numparams, char *prefix);
|
extern int config_get(paramdef_t *params,int numparams, char *prefix);
|
||||||
#define config_getlist config_get_if()->getlist
|
extern int config_getlist(paramlist_def_t *ParamList, paramdef_t *params, int numparams, char *prefix);
|
||||||
|
|
||||||
/* apis to retrieve parameters info after calling get or getlist functions */
|
/* apis to retrieve parameters info after calling get or getlist functions */
|
||||||
extern int config_isparamset(paramdef_t *params,int paramidx);
|
extern int config_isparamset(paramdef_t *params,int paramidx);
|
||||||
|
|||||||
Reference in New Issue
Block a user