X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=ucw%2Fconf-internal.h;h=67a96cf5baece5563bf866c68a57d265fcd33467;hb=ecf11d9c9949a6e9323a4f18c2418532d7f77b8f;hp=cfd2dbde8db99ac0af9caf0694cb16aeca3b507d;hpb=bf7544ae9cf66f4c1c83baff63800326eae809d7;p=libucw.git diff --git a/ucw/conf-internal.h b/ucw/conf-internal.h index cfd2dbde..67a96cf5 100644 --- a/ucw/conf-internal.h +++ b/ucw/conf-internal.h @@ -42,21 +42,19 @@ struct dirty_section { struct cf_context { struct mempool *pool; int is_active; - int need_journal; - char *def_file; - char *env_file; - int def_loaded; + int config_loaded; // at least one config file was loaded struct cf_parser_state *parser; - uns everything_committed; // after the 1st load, this flag is set on - uns postpone_commit; // used internally by cf_getopt() - uns other_options; - clist conf_entries; + uns everything_committed; // did we already commit each section? + uns postpone_commit; // counter of calls to cf_open_group() + uns other_options; // used internally by cf_getopt() + clist conf_entries; // files/strings to reload + struct cf_journal_item *journal; // journalling + int enable_journal; struct old_pools *pools; - struct cf_journal_item *journal; - struct item_stack stack[MAX_STACK_SIZE]; + struct item_stack stack[MAX_STACK_SIZE]; // interpreter stack uns stack_level; - uns initialized; struct cf_section sections; // root section + uns sections_initialized; dirtsec_t dirty; // dirty sections uns dirties; }; @@ -65,9 +63,16 @@ struct cf_context { static inline struct cf_context * cf_get_context(void) { - return ucwlib_thread_context()->cf_context; + struct cf_context *cc = ucwlib_thread_context()->cf_context; + ASSERT(cc->is_active); + return cc; } +// In fact, this is equivalent to cf_get_context(), but it is not inlined, +// because we want to force the linker to include conf-context.c, which contains +// a constructor of the whole context mechanism. +struct cf_context *cf_obtain_context(void); + /* conf-intr.c */ #define OP_MASK 0xff // only get the operation #define OP_OPEN 0x100 // here we only get an opening brace instead of parameters @@ -80,7 +85,7 @@ extern char *cf_type_names[]; uns cf_type_size(enum cf_type type, struct cf_user_type *utype); char *cf_interpret_line(struct cf_context *cc, char *name, enum cf_operation op, int number, char **pars); void cf_init_stack(struct cf_context *cc); -int cf_check_stack(struct cf_context *cc); +int cf_done_stack(struct cf_context *cc); /* conf-journal.c */ void cf_journal_swap(void);