15 #ifdef STRCASECMP_IN_STRINGS_H
33 msg_fatal(
"usage: %s type:file read|write|create [flags...]", myname);
52 #define USAGE "verbose|del key|get key|put key=value|first|next|masks|flags"
54 signal(SIGPIPE, SIG_IGN);
57 while ((ch =
GETOPT(argc, argv,
"v")) > 0) {
67 if (argc - optind < 2)
69 if (
strcasecmp(argv[optind + 1],
"create") == 0)
70 open_flags = O_CREAT | O_RDWR | O_TRUNC;
71 else if (
strcasecmp(argv[optind + 1],
"write") == 0)
73 else if (
strcasecmp(argv[optind + 1],
"read") == 0)
74 open_flags = O_RDONLY;
76 msg_fatal(
"unknown access mode: %s", argv[2]);
77 for (n = 2; argv[optind + n]; n++)
85 dict_name = argv[optind];
88 dict =
dict_open(dict_name, open_flags, dict_flags);
105 if ((cmd =
mystrtok(&bufp,
" ")) == 0) {
114 if (strcmp(cmd,
"verbose") == 0 && !key) {
116 }
else if (strcmp(cmd,
"del") == 0 && key && !value) {
123 }
else if (strcmp(cmd,
"get") == 0 && key && !value) {
124 if ((value =
dict_get(dict, key)) == 0) {
126 "error" :
"not found");
130 }
else if (strcmp(cmd,
"put") == 0 && key && value) {
131 if (
dict_put(dict, key, value) != 0)
133 "error" :
"not updated");
134 }
else if (strcmp(cmd,
"first") == 0 && !key && !value) {
139 "error" :
"not found");
140 }
else if (strcmp(cmd,
"next") == 0 && !key && !value) {
145 "error" :
"not found");
146 }
else if (strcmp(cmd,
"flags") == 0 && !key && !value) {
149 }
else if (strcmp(cmd,
"masks") == 0 && !key && !value) {
#define DICT_FLAG_DUP_IGNORE
#define vstring_fgets_nonl(s, p)
#define DICT_OWNER_UNTRUSTED
#define dict_put(dp, key, val)
void dict_register(const char *dict_name, DICT *dict_info)
#define DICT_FLAG_RQST_MASK
#define DICT_SEQ_FUN_FIRST
#define DICT_SEQ_FUN_NEXT
DICT * dict_open(const char *, int, int)
#define DICT_FLAG_UTF8_REQUEST
char * mystrtok(char **src, const char *sep)
int dict_flags_mask(const char *names)
void dict_test(int argc, char **argv)
#define DICT_OWNER_TRUSTED
#define dict_get(dp, key)
#define DICT_FLAG_DUP_REPLACE
#define DICT_OWNER_UNKNOWN
const char * dict_changed_name(void)
#define dict_seq(dp, f, key, val)
VSTREAM * vstream_printf(const char *fmt,...)
#define DICT_FLAG_PARANOID
void msg_warn(const char *fmt,...)
VSTRING * vstring_alloc(ssize_t len)
const char * dict_flags_str(int dict_flags)
#define DICT_FLAG_INST_MASK
#define DICT_FLAG_DUP_WARN
NORETURN msg_fatal(const char *fmt,...)
int vstream_fflush(VSTREAM *stream)
#define GETOPT(argc, argv, str)
#define DICT_FLAG_IMPL_MASK
int strcasecmp(const char *s1, const char *s2)
VSTRING * vstring_free(VSTRING *vp)
void msg_vstream_init(const char *name, VSTREAM *vp)
#define dict_del(dp, key)
#define DICT_FLAG_OPEN_LOCK
VSTRING * unescape(VSTRING *, const char *)