struct cfg_keyword;
int check_kw_experimental(struct cfg_keyword *kw, const char *file, int linenum,
char **errmsg);
+const char **hap_get_next_build_opt(const char **curr);
/* simplified way to declare static build options in a file */
#define REGISTER_BUILD_OPTS(str) \
LIST_APPEND(&build_opts_list, &b->list);
}
+/* returns the first build option when <curr> is NULL, or the next one when
+ * <curr> is passed the last returned value. NULL when there is no more entries
+ * in the list. Otherwise the returned pointer is &opt->str so the caller can
+ * print it as *ret.
+ */
+const char **hap_get_next_build_opt(const char **curr)
+{
+ struct build_opts_str *head, *start;
+
+ head = container_of(&build_opts_list, struct build_opts_str, list);
+
+ if (curr)
+ start = container_of(curr, struct build_opts_str, str);
+ else
+ start = head;
+
+ start = container_of(start->list.n, struct build_opts_str, list);
+
+ if (start == head)
+ return NULL;
+
+ return &start->str;
+}
+
/* used to make a new feature appear in the build_features list at boot time.
* The feature must be in the format "XXX" without the leading "+" which will
* be automatically appended.
static void display_build_opts()
{
- struct build_opts_str *item;
+ const char **opt;
printf("Build options :"
#ifdef BUILD_TARGET
"\n\n",
build_features, BUFSIZE, MAXREWRITE, MAX_POLL_EVENTS);
- list_for_each_entry(item, &build_opts_list, list) {
- puts(item->str);
- }
+ for (opt = NULL; (opt = hap_get_next_build_opt(opt)); puts(*opt))
+ ;
putchar('\n');