int ni_var_array_get_integer(ni_var_array_t *nva, const char *name, unsigned int *p) { ni_var_t *var; *p = 0; if ((var = ni_var_array_get(nva, name)) != NULL) *p = strtoul(var->value, NULL, 0); return 0; }
int ni_var_array_get_boolean(ni_var_array_t *nva, const char *name, int *p) { ni_var_t *var; *p = 0; if ((var = ni_var_array_get(nva, name)) != NULL) { if (!strcasecmp(var->value, "on") || !strcasecmp(var->value, "true") || !strcasecmp(var->value, "yes")) *p = 1; } return 0; }
int ni_var_array_get_string(ni_var_array_t *nva, const char *name, char **p) { ni_var_t *var; if (*p) { free(*p); *p = NULL; } if ((var = ni_var_array_get(nva, name)) != NULL) *p = xstrdup(var->value); return 0; }
void ni_var_array_set(ni_var_array_t *nva, const char *name, const char *value) { ni_var_t *var; if ((var = ni_var_array_get(nva, name)) == NULL) { if ((nva->count % NI_VAR_ARRAY_CHUNK) == 0) __ni_var_array_realloc(nva, nva->count); var = &nva->data[nva->count++]; var->name = xstrdup(name); var->value = NULL; } ni_string_dup(&var->value, value); }
ni_var_t * ni_ifsysctl_vars_get(const ni_var_array_t *vars, const char *keyfmt, ...) { ni_var_t *var; char *key = NULL; va_list ap; int ret; if(!vars || !keyfmt) return NULL; va_start(ap, keyfmt); ret = vasprintf(&key, keyfmt, ap); va_end(ap); if (ret < 0) return NULL; __ni_sysctl_rewrite_to_dot(key); var = ni_var_array_get(vars, key); ni_string_free(&key); return var; }
const ni_var_t * xml_node_get_attr_var(const xml_node_t *node, const char *name) { return node ? ni_var_array_get(&node->attrs, name) : NULL; }