本文整理汇总了C++中config_setting_get_member函数的典型用法代码示例。如果您正苦于以下问题:C++ config_setting_get_member函数的具体用法?C++ config_setting_get_member怎么用?C++ config_setting_get_member使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了config_setting_get_member函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: assert
static config_setting_t *interface_group_for(const char *ifname) {
assert(config_setting_is_list(app_config));
config_setting_t *default_if_conf = NULL;
for (int i = 0; i < config_setting_length(app_config); i++) {
config_setting_t *cur = config_setting_get_elem(app_config, i);
config_setting_t *cur_ifname = config_setting_get_member(cur, "interface");
if (cur_ifname != NULL) {
const char *cur_ifname_str = config_setting_get_string(cur_ifname);
assert(cur_ifname_str != NULL);
if (strcmp(cur_ifname_str, ifname) == 0) return cur;
}
config_setting_t *cur_is_default = config_setting_get_member(cur, "default");
if (
default_if_conf == NULL &&
cur_is_default != NULL &&
config_setting_get_bool(cur_is_default)
) {
default_if_conf = cur;
}
}
return default_if_conf;
}
示例2: read_interval_setting
/*! \brief read interval setting from local config */
static int read_interval_setting(config_setting_t * setting_interval, int32_t * out_min, int32_t * out_max)
{
config_setting_t * setting_min = config_setting_get_member(setting_interval, "min");
config_setting_t * setting_max = config_setting_get_member(setting_interval, "max");
if (setting_min == NULL || setting_max == NULL)
{
message(LOG_ERROR, FACILITY_CONFIG, "In interval is missing one of theses keys: min or max\n");
return CONFIG_FALSE;
}
if ((config_setting_type(setting_min) != CONFIG_TYPE_INT)
|| (config_setting_type(setting_max) != CONFIG_TYPE_INT))
{
message(LOG_ERROR, FACILITY_CONFIG, "In interval has one of these keys: min or max wrong type, is should be int.\n");
return CONFIG_FALSE;
}
*out_min = config_setting_get_int(setting_min);
*out_max = config_setting_get_int(setting_max);
if (*out_min > *out_max)
{
message(LOG_ERROR, FACILITY_CONFIG, "Limits of interval are invalid. (max=%d min=%d)\n", *out_min, *out_max);
return CONFIG_FALSE;
}
return CONFIG_TRUE;
}
示例3: qtbl_if_set
int qtbl_if_set(config_setting_t *icsp, struct qtbl_t *qip, struct qtbl_e ifsnmpoid, struct qtbl_e iflocation) {
config_setting_t *tcsp;
int ret = 0;
/* to determine default value for each if*/
if((tcsp = config_setting_get_member(icsp, "host")) != NULL){
if(strlen(config_setting_get_string(tcsp)) == 0){
printf("vifset Wrong hostname \n");
}else{
strncpy(ifsnmpoid.data.snmp.host, config_setting_get_string(tcsp), 128);
}
}
if((tcsp = config_setting_get_member(icsp, "community")) != NULL){
if(strlen(config_setting_get_string(tcsp)) == 0){
printf("vifset Wrong community \n");
}else{
strncpy(ifsnmpoid.data.snmp.community, config_setting_get_string(tcsp), 128);
}
}
if(strlen(ifsnmpoid.data.snmp.host) > 0 && strlen(ifsnmpoid.data.snmp.community) > 0)
ifsnmpoid.flag = QSNMPOID;
if((tcsp = config_setting_get_member(icsp, "location")) != NULL){
iflocation = qtblloc_set(tcsp);
if(vifsetdebug && iflocation.flag == QSTATIC)
printf("vifset if location: %08x\n", iflocation.data.val);
}
/* getting in/out configuration*/
if((tcsp = config_setting_get_member(icsp, "in")) != NULL){
ret += qtbl_if_io_set(tcsp, qip->in, ifsnmpoid, iflocation);
}
if((tcsp = config_setting_get_member(icsp, "out")) != NULL){
ret += qtbl_if_io_set(tcsp, qip->out, ifsnmpoid, iflocation);
}
return ret;
}
示例4: read_thread_setting
/*! \brief read thread seetting from local config */
static int read_thread_setting(config_setting_t * setting, thread_limit * limit)
{
config_setting_t * config_max_total = config_setting_get_member(setting, "max_total");
config_setting_t * config_min_spare = config_setting_get_member(setting, "min_spare");
config_setting_t * config_max_spare = config_setting_get_member(setting, "max_spare");
if (config_max_total == NULL || config_min_spare == NULL || config_max_spare == NULL)
{
message(LOG_ERROR, FACILITY_CONFIG, "In thread setting is missing one of theses keys: max_total, min_spare or max_spare.\n");
return CONFIG_FALSE;
}
if ((config_setting_type(config_max_total) != CONFIG_TYPE_INT)
|| (config_setting_type(config_min_spare) != CONFIG_TYPE_INT)
|| (config_setting_type(config_max_spare) != CONFIG_TYPE_INT))
{
message(LOG_ERROR, FACILITY_CONFIG, "In thread setting has on of theses keys: max_total, min_spare or max_spare wrong type, it should be int.\n");
return CONFIG_FALSE;
}
limit->max_total = config_setting_get_int(config_max_total);
limit->min_spare = config_setting_get_int(config_min_spare);
limit->max_spare = config_setting_get_int(config_max_spare);
return (is_valid_thread_limit(limit, "") == true) ? CONFIG_TRUE : CONFIG_FALSE;
}
示例5: main
int main(int argc, char **argv)
{
static const char *output_file = "updated.cfg";
config_t cfg;
config_setting_t *root, *setting, *movie;
config_init(&cfg);
/* Read the file. If there is an error, report it and exit. */
if(! config_read_file(&cfg, "example.cfg"))
{
fprintf(stderr, "%s:%d - %s\n", config_error_file(&cfg),
config_error_line(&cfg), config_error_text(&cfg));
config_destroy(&cfg);
return(EXIT_FAILURE);
}
/* Find the 'movies' setting. Add intermediate settings if they don't yet
* exist.
*/
root = config_root_setting(&cfg);
setting = config_setting_get_member(root, "inventory");
if(!setting)
setting = config_setting_add(root, "inventory", CONFIG_TYPE_GROUP);
setting = config_setting_get_member(setting, "movies");
if(!setting)
setting = config_setting_add(setting, "movies", CONFIG_TYPE_LIST);
/* Create the new movie entry. */
movie = config_setting_add(setting, NULL, CONFIG_TYPE_GROUP);
setting = config_setting_add(movie, "title", CONFIG_TYPE_STRING);
config_setting_set_string(setting, "Buckaroo Banzai");
setting = config_setting_add(movie, "media", CONFIG_TYPE_STRING);
config_setting_set_string(setting, "DVD");
setting = config_setting_add(movie, "price", CONFIG_TYPE_FLOAT);
config_setting_set_float(setting, 12.99);
setting = config_setting_add(movie, "qty", CONFIG_TYPE_INT);
config_setting_set_float(setting, 20);
/* Write out the updated configuration. */
if(! config_write_file(&cfg, output_file))
{
fprintf(stderr, "Error while writing file.\n");
config_destroy(&cfg);
return(EXIT_FAILURE);
}
fprintf(stderr, "Updated configuration successfully written to: %s\n",
output_file);
config_destroy(&cfg);
return(EXIT_SUCCESS);
}
示例6: logging_setup
int logging_setup(struct module *module, config_setting_t *conf)
{
config_setting_t *setting;
const char *val;
int num;
if (config.debug < 2)
skeeter_vlog = &skeeter_syslog;
num = LOG_ERR;
setting = config_setting_get_member(conf, "level");
if (setting) {
struct level *level;
val = config_setting_get_string(setting);
for (level = level_table; level->name; level++) {
if (!strcasecmp(val, level->name))
break;
}
if (!level->name) {
skeeter_log(LOG_ERR, "Could not parse loglevel value '%s'", val);
return 1;
}
num = level->level;
}
config.loglevel = num;
num = LOG_MAIL;
setting = config_setting_get_member(conf, "facility");
if (setting) {
struct facility *facility;
val = config_setting_get_string(setting);
for (facility = facility_table; facility->name; facility++) {
if (!strcasecmp(val, facility->name))
break;
}
if (!facility->name) {
skeeter_log(LOG_ERR, "Could not parse log facility value '%s'", val);
return 1;
}
num = facility->facility;
}
config.facility = num;
openlog("skeeter", LOG_PID, config.facility);
event_set_log_callback(skeeter_event_log);
return 0;
}
示例7: read_volume_tree_node_setting
/*! \brief read volume tree node settings */
static int read_volume_tree_node_setting(config_setting_t * node_setting)
{
int rv;
const char * node_key;
rv = config_setting_lookup_string(node_setting, "node", &node_key);
if (rv != CONFIG_TRUE)
{
message(LOG_INFO, FACILITY_CONFIG, "No node key in hierarchy tree in shared config found.\n");
return rv;
}
config_setting_t * children = config_setting_get_member(node_setting, "children");
if (children == NULL)
return CONFIG_TRUE;
int i;
config_setting_t * child;
for (i = 0; (child = config_setting_get_elem(children, i)) != NULL; ++i)
{
rv = read_volume_tree_node_setting(child);
if (rv != CONFIG_TRUE)
{
message(LOG_INFO, FACILITY_CONFIG, "Failed to read hierarchy tree from shared config.\n");
return rv;
}
}
return CONFIG_TRUE;
}
示例8: return
config_setting_t *config_setting_add(config_setting_t *parent,
const char *name, int type)
{
if((type < CONFIG_TYPE_NONE) || (type > CONFIG_TYPE_LIST))
return(NULL);
if(! parent)
return(NULL);
if((parent->type == CONFIG_TYPE_ARRAY) || (parent->type == CONFIG_TYPE_LIST))
name = NULL;
if(name)
{
if(! __config_validate_name(name))
return(NULL);
}
#if 0
/* https://github.com/HerculesWS/Hercules/pull/136#discussion_r6363319
* With this code, accidental duplicate keys would cause the file parsing to fail
* (would cause several issues during runtime on file reloads), while libconfig's code
* has no problems with duplicate members so it was ducked out -- TODO: looking now though
* I'd think it could be useful to have it display a warning or error message when finding
* duplicate keys instead of silently moving on. [Ind]
*/
if(config_setting_get_member(parent, name) != NULL)
return(NULL); /* already exists */
#endif
return(config_setting_create(parent, name, type));
}
示例9: print_layouts
void print_layouts(int num_frame)
{
config_setting_t *category_list, *category, *layout_list, *layout;
config_t layout_config;
int layout_length, i;
const char* ascii_image;
config_init(&layout_config);
config_read_file(&layout_config, "./layout.cfg");
category_list = config_lookup(&layout_config, "application.layout_group");
category = config_setting_get_elem(category_list, num_frame - MIN_NUM_FRAME);
layout_list = config_setting_get_member(category, "layout");
layout_length = config_setting_length(layout_list);
for(i = 0; i < layout_length; i++)
{
layout = config_setting_get_elem(layout_list, i);
config_setting_lookup_string(layout, "image", &ascii_image);
printf(" %c)\n", 'a' + i);
printf("%s\n", ascii_image);
}
config_destroy(&layout_config);
}
示例10: config_setting_copy_simple
void config_setting_copy_simple(config_setting_t *parent, const config_setting_t *src)
{
if (config_setting_is_aggregate(src)) {
config_setting_copy_aggregate(parent, src);
}
else {
config_setting_t *set;
if( config_setting_get_member(parent, config_setting_name(src)) != NULL )
return;
if ((set = config_setting_add(parent, config_setting_name(src), config_setting_type(src))) == NULL)
return;
if (CONFIG_TYPE_INT == config_setting_type(src)) {
config_setting_set_int(set, config_setting_get_int(src));
config_setting_set_format(set, src->format);
} else if (CONFIG_TYPE_INT64 == config_setting_type(src)) {
config_setting_set_int64(set, config_setting_get_int64(src));
config_setting_set_format(set, src->format);
} else if (CONFIG_TYPE_FLOAT == config_setting_type(src)) {
config_setting_set_float(set, config_setting_get_float(src));
} else if (CONFIG_TYPE_STRING == config_setting_type(src)) {
config_setting_set_string(set, config_setting_get_string(src));
} else if (CONFIG_TYPE_BOOL == config_setting_type(src)) {
config_setting_set_bool(set, config_setting_get_bool(src));
}
}
}
示例11: while
LIBCONFIG_API config_setting_t *config_lookup(const config_t *config,
const char *path)
{
const char *p = path;
config_setting_t *setting = config->root, *found;
for(;;)
{
while(*p && strchr(PATH_TOKENS, *p))
p++;
if(! *p)
break;
found = config_setting_get_member(setting, p);
if(! found)
break;
setting = found;
while(! strchr(PATH_TOKENS, *p))
p++;
}
return(*p ? NULL : setting);
}
示例12: while
config_setting_t *config_lookup_from(config_setting_t *setting,
const char *path)
{
const char *p = path;
config_setting_t *found;
for(;;)
{
while(*p && strchr(PATH_TOKENS, *p))
p++;
if(! *p)
break;
if(*p == '[')
found = config_setting_get_elem(setting, atoi(++p));
else
found = config_setting_get_member(setting, p);
if(! found)
break;
setting = found;
while(! strchr(PATH_TOKENS, *p))
p++;
}
return(*p ? NULL : setting);
}
示例13: session_is_valid_sessid
// {{{ session_is_valid_sessid()
int session_is_valid_sessid(const char *sessid)
{
// TODO use timestamp: session not expires.
struct config_t cfg;
config_init(&cfg);
config_setting_t *cs;
config_setting_t *vs;
if(!config_read_file(&cfg, OD_SESSION_FILE))
return 0;
int i=0;
for(i=0; ;i++)
{
if( !(cs = config_setting_get_elem(cfg.root, i)) )
break;
if( !(vs = config_setting_get_member(cs, "sessid")) )
continue;
const char *res = config_setting_get_string(vs);
if(res)
if(strcmp(res, sessid)==0)
{
config_destroy(&cfg);
return 1;
}
}
config_destroy(&cfg);
return 0;
}
示例14: return
config_setting_t *config_setting_add(config_setting_t *parent,
const char *name, int type)
{
if((type < CONFIG_TYPE_NONE) || (type > CONFIG_TYPE_LIST))
return(NULL);
if(! parent)
return(NULL);
if((parent->type == CONFIG_TYPE_ARRAY) || (parent->type == CONFIG_TYPE_LIST))
name = NULL;
if(name)
{
if(! __config_validate_name(name))
return(NULL);
}
config_setting_t *setting = config_setting_get_member(parent, name);
if (setting != NULL)
{
if ((setting->type != type && type != CONFIG_TYPE_NONE) ||
(setting->type != CONFIG_TYPE_GROUP &&
setting->type != CONFIG_TYPE_ARRAY &&
setting->type != CONFIG_TYPE_LIST))
return(NULL); /* already exists */
else
return setting; /* merge with existing config */
}
return(config_setting_create(parent, name, type));
}
示例15: pc_group_can_use_command
/**
* Checks if player group can use @/#command
* @param group_id ID of the group
* @param command Command name without @/# and params
* @param type enum AtCommanndType { COMMAND_ATCOMMAND = 1, COMMAND_CHARCOMMAND = 2 }
*/
bool pc_group_can_use_command(int group_id, const char *command, AtCommandType type)
{
int result = 0;
config_setting_t *commands = NULL;
GroupSettings *group = NULL;
if (pc_group_has_permission(group_id, PC_PERM_USE_ALL_COMMANDS))
return true;
if ((group = id2group(group_id)) == NULL)
return false;
commands = group->commands;
if (commands != NULL) {
config_setting_t *cmd = NULL;
// <commandname> : <bool> (only atcommand)
if (type == COMMAND_ATCOMMAND && config_setting_lookup_bool(commands, command, &result))
return (bool)result;
// <commandname> : [ <bool>, <bool> ] ([ atcommand, charcommand ])
if ((cmd = config_setting_get_member(commands, command)) != NULL &&
config_setting_is_aggregate(cmd) && config_setting_length(cmd) == 2)
return (bool)config_setting_get_bool_elem(cmd, AtCommandType2idx(type));
}
return false;
}