#include <sys_defs.h>
#include <mymalloc.h>
#include <msg.h>
#include <dict.h>
#include <dict_fail.h>
typedef struct {
DICT dict;
int dict_errno;
} DICT_FAIL;
static int dict_fail_sequence(DICT *dict, int unused_func,
const char **key, const char **value)
{
DICT_FAIL *dp = (DICT_FAIL *) dict;
DICT_ERR_VAL_RETURN(dict, dp->dict_errno, DICT_STAT_ERROR);
}
static int dict_fail_update(DICT *dict, const char *unused_name,
const char *unused_value)
{
DICT_FAIL *dp = (DICT_FAIL *) dict;
DICT_ERR_VAL_RETURN(dict, dp->dict_errno, DICT_STAT_ERROR);
}
static const char *dict_fail_lookup(DICT *dict, const char *unused_name)
{
DICT_FAIL *dp = (DICT_FAIL *) dict;
DICT_ERR_VAL_RETURN(dict, dp->dict_errno, (char *) 0);
}
static int dict_fail_delete(DICT *dict, const char *unused_name)
{
DICT_FAIL *dp = (DICT_FAIL *) dict;
DICT_ERR_VAL_RETURN(dict, dp->dict_errno, DICT_STAT_ERROR);
}
static void dict_fail_close(DICT *dict)
{
dict_free(dict);
}
DICT *dict_fail_open(const char *name, int open_flags, int dict_flags)
{
DICT_FAIL *dp;
dp = (DICT_FAIL *) dict_alloc(DICT_TYPE_FAIL, name, sizeof(*dp));
dp->dict.lookup = dict_fail_lookup;
if (open_flags & O_RDWR) {
dp->dict.update = dict_fail_update;
dp->dict.delete = dict_fail_delete;
}
dp->dict.sequence = dict_fail_sequence;
dp->dict.close = dict_fail_close;
dp->dict.flags = dict_flags | DICT_FLAG_PATTERN;
dp->dict_errno = DICT_ERR_RETRY;
dp->dict.owner.status = DICT_OWNER_TRUSTED;
return (DICT_DEBUG (&dp->dict));
}