X-Git-Url: https://jfr.im/git/solanum.git/blobdiff_plain/212380e3f42f585dc1ea927402252eb943f91f7b..d84acbcecab7d26e85e66a29b9adacd3db824619:/include/newconf.h diff --git a/include/newconf.h b/include/newconf.h index 720f1549..57eb6add 100644 --- a/include/newconf.h +++ b/include/newconf.h @@ -6,13 +6,6 @@ #ifndef _NEWCONF_H_INCLUDED #define _NEWCONF_H_INCLUDED -#include - -#include - -#include "tools.h" -#include "client.h" - struct ConfEntry { const char *cf_name; @@ -24,27 +17,35 @@ struct ConfEntry struct TopConf { - char *tc_name; + const char *tc_name; int (*tc_sfunc) (struct TopConf *); int (*tc_efunc) (struct TopConf *); - dlink_list tc_items; + rb_dlink_list tc_items; struct ConfEntry *tc_entries; }; -#define CF_QSTRING 0x01 +#define CF_QSTRING 0x01 /* quoted string */ #define CF_INT 0x02 -#define CF_STRING 0x03 +#define CF_STRING 0x03 /* unquoted string */ #define CF_TIME 0x04 #define CF_YESNO 0x05 -#define CF_LIST 0x06 -#define CF_ONE 0x07 -#define CF_MTYPE 0xFF +#define CF_MTYPE 0xFF /* mask for type */ -#define CF_FLIST 0x1000 -#define CF_MFLAG 0xFF00 +/* CF_FLIST is used to allow specifying that an option accepts a list of (type) + * values. conf_parm_t.type will never actually have another type & CF_FLIST; + * it's only used as a true flag in newconf.c (which only consumes conf_parm_t + * structures and doesn't create them itself). + */ +#define CF_FLIST 0x0100 /* flag for list */ +#define CF_MFLAG 0xFF00 /* mask for flags */ +/* conf_parm_t.type must be either one type OR one flag. this is pretty easy to + * enforce because lists always contain nested conf_parm_t structures whose + * .type is the real type, so it doesn't need to be stored in the top-level one + * anyway. + */ typedef struct conf_parm_t_stru { struct conf_parm_t_stru *next; @@ -66,8 +67,9 @@ extern char *current_file; int read_config(char *); int conf_start_block(char *, char *); int conf_end_block(struct TopConf *); -int conf_call_set(struct TopConf *, char *, conf_parm_t *, int); +int conf_call_set(struct TopConf *, char *, conf_parm_t *); void conf_report_error(const char *, ...); +void conf_report_warning(const char *, ...); void newconf_init(void); int add_conf_item(const char *topconf, const char *name, int type, void (*func) (void *)); int remove_conf_item(const char *topconf, const char *name);