76 static int dict_surrogate_sequence(
DICT *dict,
int unused_func,
77 const char **key,
const char **value)
88 static int dict_surrogate_update(
DICT *dict,
const char *unused_name,
89 const char *unused_value)
100 static const char *dict_surrogate_lookup(
DICT *dict,
const char *unused_name)
104 msg_warn(
"%s:%s is unavailable. %s",
111 static int dict_surrogate_delete(
DICT *dict,
const char *unused_name)
115 msg_warn(
"%s:%s is unavailable. %s",
122 static void dict_surrogate_close(
DICT *dict)
135 int open_flags,
int dict_flags,
142 void (*log_fn) (
const char *, va_list);
143 int saved_errno = errno;
166 if (open_flags & O_RDWR) {
void(* close)(struct DICT *)
int(* delete)(struct DICT *, const char *)
#define VA_COPY(dest, src)
int(* update)(struct DICT *, const char *, const char *)
#define DICT_OWNER_TRUSTED
VSTRING * vstring_vsprintf(VSTRING *vp, const char *format, va_list ap)
void msg_warn(const char *fmt,...)
VSTRING * vstring_alloc(ssize_t len)
const char *(* lookup)(struct DICT *, const char *)
NORETURN vmsg_fatal(const char *fmt, va_list ap)
#define DICT_ERR_VAL_RETURN(dict, err, val)
#define DICT_FLAG_PATTERN
void vmsg_error(const char *fmt, va_list ap)
int(* sequence)(struct DICT *, int, const char **, const char **)
DICT * dict_alloc(const char *, const char *, ssize_t)
char * vstring_export(VSTRING *vp)
DICT * dict_surrogate(const char *dict_type, const char *dict_name, int open_flags, int dict_flags, const char *fmt,...)