154 while (found == 0 &&
readlline(buf, fp, (
int *) 0)) {
159 if (strcmp(cp, config_dir) == 0)
168 msg_error(
"unauthorized configuration directory name: %s", config_dir);
169 msg_fatal(
"specify \"%s = %s\" or \"%s = %s\" in %s",
248 #define NONRECURSIVE 0
void msg_error(const char *fmt,...)
char * mystrdup(const char *str)
int dict_load_file_xt(const char *dict_name, const char *path)
void set_mail_conf_str(const char *, const char *)
const char * mail_conf_eval(const char *string)
void mail_conf_flush(void)
const char * mail_conf_lookup(const char *name)
char * mystrtok(char **src, const char *sep)
const char * split_nameval(char *buf, char **name, char **value)
void dict_unregister(const char *dict_name)
void mail_conf_suck(void)
void mail_conf_read(void)
VSTREAM * vstream_fopen(const char *path, int flags, mode_t mode)
const char * dict_lookup(const char *dict_name, const char *member)
#define VAR_MULTI_CONF_DIRS
void mail_conf_checkdir(const char *config_dir)
int vstream_fclose(VSTREAM *stream)
DICT * dict_handle(const char *dict_name)
VSTRING * vstring_alloc(ssize_t len)
NORETURN msg_fatal(const char *fmt,...)
const char * mail_conf_lookup_eval(const char *name)
int dict_update(const char *dict_name, const char *member, const char *value)
char * concatenate(const char *arg0,...)
const char * dict_eval(const char *dict_name, const char *value, int recursive)
VSTRING * vstring_free(VSTRING *vp)
void mail_conf_update(const char *key, const char *value)
const char * mail_conf_eval_once(const char *string)
#define readlline(bp, fp, lp)