summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
dd53acc)
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
#include "config.h"
#include "str.h"
#include "config.h"
#include "str.h"
config_param_register("first_filter");
config_param_register("first_filter");
-struct config_t {
- A(filter_t) filters;
- A(filter_params_t) params;
- int entry_point;
-};
-
static inline config_t *config_new(void)
{
config_t *config = p_new(config_t, 1);
static inline config_t *config_new(void)
{
config_t *config = p_new(config_t, 1);
+ config->entry_point = -1;
+ foreach (filter_param_t *param, config->params) {
+ switch (param->type) {
+ case ATK_FIRST_FILTER:
+ config->entry_point = filter_find_with_name(&config->filters,
+ param->value);
+ break;
+ default: break;
+ }
+ }}
+ array_deep_wipe(config->params, filter_params_wipe);
+
+ if (config->entry_point == -1) {
+ ok = false;
+ syslog(LOG_ERR, "no entry point defined");
+ }
+
READ_BLANK(goto badeof);
READ_STRING("parameter value", value, value_len, ;);
{
READ_BLANK(goto badeof);
READ_STRING("parameter value", value, value_len, ;);
{
param.type = param_tokenize(key, key_len);
if (param.type != ATK_UNKNOWN) {
param.value = m_strdup(value);
param.type = param_tokenize(key, key_len);
if (param.type != ATK_UNKNOWN) {
param.value = m_strdup(value);
#ifndef PFIXTOOLS_CONFIG_H
#define PFIXTOOLS_CONFIG_H
#ifndef PFIXTOOLS_CONFIG_H
#define PFIXTOOLS_CONFIG_H
typedef struct config_t config_t;
typedef struct config_t config_t;
+struct config_t {
+ A(filter_t) filters;
+ A(filter_param_t) params;
+ int entry_point;
+};
+
__attribute__((nonnull(1)))
config_t *config_read(const char *file);
__attribute__((nonnull(1)))
config_t *config_read(const char *file);
bool filter_add_param(filter_t *filter, const char *name, ssize_t name_len,
const char *value, ssize_t value_len)
{
bool filter_add_param(filter_t *filter, const char *name, ssize_t name_len,
const char *value, ssize_t value_len)
{
param.type = param_tokenize(name, name_len);
if (param.type == ATK_UNKNOWN) {
syslog(LOG_ERR, "unknown parameter %.*s", name_len, name);
param.type = param_tokenize(name, name_len);
if (param.type == ATK_UNKNOWN) {
syslog(LOG_ERR, "unknown parameter %.*s", name_len, name);
} filter_hook_t;
ARRAY(filter_hook_t)
} filter_hook_t;
ARRAY(filter_hook_t)
-typedef struct filter_params_t {
+typedef struct filter_param_t {
filter_param_id_t type;
char *value;
filter_param_id_t type;
char *value;
-} filter_params_t;
-ARRAY(filter_params_t)
+} filter_param_t;
+ARRAY(filter_param_t)
typedef struct filter_t {
char *name;
typedef struct filter_t {
char *name;
A(filter_hook_t) hooks;
void *data;
A(filter_hook_t) hooks;
void *data;
- A(filter_params_t) params;
+ A(filter_param_t) params;
} filter_t;
ARRAY(filter_t)
} filter_t;
ARRAY(filter_t)
}
__attribute__((nonnull(1)))
}
__attribute__((nonnull(1)))
-static inline void filter_params_wipe(filter_params_t *param)
+static inline void filter_params_wipe(filter_param_t *param)
{
p_delete(¶m->value);
}
{
p_delete(¶m->value);
}
- foreach (filter_params_t *param, filter->params) {
+ foreach (filter_param_t *param, filter->params) {
switch (param->type) {
/* file parameter is:
* [no]lock:weight:filename
switch (param->type) {
/* file parameter is:
* [no]lock:weight:filename