"color=red\n"
"contents=sand\n";
+static const char *section_names[] = {
+ "foo", "bar", "stuff", "bucket", "bucket"
+};
+
static const char t2[] =
"# invalid section...\n"
"[this bracket isn't closed\n";
{
struct weston_config *config;
struct weston_config_section *section;
+ const char *name;
char *s;
- int r, b;
+ int r, b, i;
int32_t n;
uint32_t u;
assert(r == -1 && errno == ENOENT && strcmp(s, "eels") == 0);
free(s);
+ section = NULL;
+ i = 0;
+ while (weston_config_next_section(config, §ion, &name))
+ assert(strcmp(section_names[i++], name) == 0);
+ assert(i == 5);
+
weston_config_destroy(config);
config = run_test(t2);
#include <wayland-util.h>
#include "config-parser.h"
+#define container_of(ptr, type, member) ({ \
+ const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
+ (type *)( (char *)__mptr - offsetof(type,member) );})
+
static int
handle_key(const struct config_key *key, const char *value)
{
return config;
}
+int
+weston_config_next_section(struct weston_config *config,
+ struct weston_config_section **section,
+ const char **name)
+{
+ if (*section == NULL)
+ *section = container_of(config->section_list.next,
+ struct weston_config_section, link);
+ else
+ *section = container_of((*section)->link.next,
+ struct weston_config_section, link);
+
+ if (&(*section)->link == &config->section_list)
+ return 0;
+
+ *name = (*section)->name;
+
+ return 1;
+}
+
void
weston_config_destroy(struct weston_config *config)
{
void
weston_config_destroy(struct weston_config *config);
+int weston_config_next_section(struct weston_config *config,
+ struct weston_config_section **section,
+ const char **name);
+
+
#ifdef __cplusplus
}
#endif