// creates a static instance of a dynamic array
// FIXME: overcast doesn't work for the double type
-/* Memory allocation */
+/* Memory allocation: conf-alloc.c */
struct mempool;
extern struct mempool *cf_pool;
void *cf_malloc(uns size);
byte *cf_strdup(byte *s);
byte *cf_printf(char *fmt, ...) FORMAT_CHECK(printf,1,2);
-/* Undo journal for error recovery */
+/* Undo journal for error recovery: conf-journal.c */
extern uns cf_need_journal;
void cf_journal_block(void *ptr, uns len);
#define CF_JOURNAL_VAR(var) cf_journal_block(&(var), sizeof(var))
-struct cf_journal_item;
-struct cf_journal_item *cf_journal_new_transaction(uns new_pool);
-void cf_journal_commit_transaction(uns new_pool, struct cf_journal_item *oldj);
-void cf_journal_rollback_transaction(uns new_pool, struct cf_journal_item *oldj);
-
-/* Declaration */
+/* Declaration: conf-section.c */
void cf_declare_section(byte *name, struct cf_section *sec, uns allow_unknown);
void cf_init_section(byte *name, struct cf_section *sec, void *ptr, uns do_bzero);
-/* Parsers for basic types */
+/* Parsers for basic types: conf-parse.c */
byte *cf_parse_int(byte *str, int *ptr);
byte *cf_parse_u64(byte *str, u64 *ptr);
byte *cf_parse_double(byte *str, double *ptr);
#include <getopt.h>
-/* Safe loading and reloading of configuration files */
+/* Safe loading and reloading of configuration files: conf-input.c */
extern byte *cf_def_file; /* DEFAULT_CONFIG; NULL if already loaded */
int cf_reload(byte *file);
int cf_load(byte *file);
int cf_set(byte *string);
-/* Direct access to configuration items */
+/* Direct access to configuration items: conf-intr.c */
#define CF_OPERATIONS T(CLOSE) T(SET) T(CLEAR) T(APPEND) T(PREPEND) \
T(REMOVE) T(EDIT) T(AFTER) T(BEFORE) T(COPY)
struct fastbuf;
byte *cf_find_item(byte *name, struct cf_item *item);
byte *cf_write_item(struct cf_item *item, enum cf_operation op, int number, byte **pars);
+
+/* Debug dumping: conf-dump.c */
+
void cf_dump_sections(struct fastbuf *fb);
+/* Journaling control: conf-journal.c */
+
+struct cf_journal_item;
+struct cf_journal_item *cf_journal_new_transaction(uns new_pool);
+void cf_journal_commit_transaction(uns new_pool, struct cf_journal_item *oldj);
+void cf_journal_rollback_transaction(uns new_pool, struct cf_journal_item *oldj);
+
/*
* cf_getopt() takes care of parsing the command-line arguments, loading the
* default configuration file (cf_def_file) and processing configuration options.
#define CF_USAGE_DEBUG
#endif
+// conf-input.c
int cf_getopt(int argc, char * const argv[], const char *short_opts, const struct option *long_opts, int *long_index);
#endif