]> mj.ucw.cz Git - libucw.git/commitdiff
Config: Allow relative top-level sections
authorMartin Mares <mj@ucw.cz>
Wed, 18 Jul 2012 21:32:10 +0000 (23:32 +0200)
committerMartin Mares <mj@ucw.cz>
Wed, 18 Jul 2012 21:32:10 +0000 (23:32 +0200)
ucw/conf-section.c
ucw/conf.h

index c7bd32473be5c3bb8d686f5578ff8ab86d023045..f25657d287c7448f1d5744f269c22fd27e0d9f55 100644 (file)
@@ -92,7 +92,7 @@ inspect_section(struct cf_section *sec)
 }
 
 void
-cf_declare_section(const char *name, struct cf_section *sec, uns allow_unknown)
+cf_declare_rel_section(const char *name, struct cf_section *sec, void *ptr, uns allow_unknown)
 {
   struct cf_context *cc = cf_obtain_context();
   if (!cc->sections.cfg)
@@ -106,7 +106,7 @@ cf_declare_section(const char *name, struct cf_section *sec, uns allow_unknown)
   ci->cls = CC_SECTION;
   ci->name = name;
   ci->number = 1;
-  ci->ptr = NULL;
+  ci->ptr = ptr;
   ci->u.sec = sec;
   inspect_section(sec);
   if (allow_unknown)
@@ -120,6 +120,12 @@ cf_declare_section(const char *name, struct cf_section *sec, uns allow_unknown)
   }
 }
 
+void
+cf_declare_section(const char *name, struct cf_section *sec, uns allow_unknown)
+{
+  cf_declare_rel_section(name, sec, NULL, allow_unknown);
+}
+
 void
 cf_init_section(const char *name, struct cf_section *sec, void *ptr, uns do_bzero)
 {
index 23c9c5cc9849ec7e683ece65f8550e6724d31f8e..0ff991309f146bfb1505c77ed7fa9a2d23219239 100644 (file)
@@ -493,6 +493,12 @@ void cf_journal_rollback_transaction(uns new_pool, struct cf_journal_item *oldj)
  * configuration contexts simultaneously.
  **/
 void cf_declare_section(const char *name, struct cf_section *sec, uns allow_unknown);
+/**
+ * Like @cf_declare_section(), but instead of item pointers, the section
+ * contains offsets relative to @ptr. In other words, it does the same
+ * as `CF_SECTION`, but for top-level sections.
+ **/
+void cf_declare_rel_section(const char *name, struct cf_section *sec, void *ptr, uns allow_unknown);
 /**
  * If you have a section in a structure and you want to initialize it
  * (eg. if you want a copy of default values outside the configuration),