-extern item_t *dict_find_item(dict_t *dict, string_t key, bool_t required,
- string_t desc, struct cloc loc);
-extern string_t dict_read_string(dict_t *dict, string_t key, bool_t required,
- string_t desc, struct cloc loc);
-extern uint32_t dict_read_number(dict_t *dict, string_t key, bool_t required,
- string_t desc, struct cloc loc, uint32_t def);
-extern bool_t dict_read_bool(dict_t *dict, string_t key, bool_t required,
- string_t desc, struct cloc loc, bool_t def);
+extern item_t *dict_find_item(dict_t *dict, cstring_t key, bool_t required,
+ cstring_t desc, struct cloc loc);
+extern string_t dict_read_string(dict_t *dict, cstring_t key, bool_t required,
+ cstring_t desc, struct cloc loc);
+extern uint32_t dict_read_number(dict_t *dict, cstring_t key, bool_t required,
+ cstring_t desc, struct cloc loc,
+ uint32_t def);
+ /* return value can safely be assigned to int32_t */
+extern bool_t dict_read_bool(dict_t *dict, cstring_t key, bool_t required,
+ cstring_t desc, struct cloc loc, bool_t def);
+extern dict_t *dict_read_dict(dict_t *dict, cstring_t key, bool_t required,
+ cstring_t desc, struct cloc loc);
+const char **dict_read_string_array(dict_t *dict, cstring_t key,
+ bool_t required, cstring_t desc,
+ struct cloc loc, const char *const *def);
+ /* Return value is a NULL-terminated array obtained from malloc;
+ * Individual string values are still owned by config file machinery
+ * and must not be modified or freed. Returns NULL if key not
+ * found. */
+