+static char *
+parse_key_value(const char **s, const struct ovsdb_type *type,
+ union ovsdb_atom *key, union ovsdb_atom *value)
+{
+ const char *start = *s;
+ char *error;
+
+ error = parse_atom_token(s, type->key_type, key);
+ if (!error && type->value_type != OVSDB_TYPE_VOID) {
+ *s = skip_spaces(*s);
+ if (**s == '=') {
+ (*s)++;
+ *s = skip_spaces(*s);
+ error = parse_atom_token(s, type->value_type, value);
+ } else {
+ error = xasprintf("%s: syntax error at \"%c\" expecting \"=\"",
+ start, **s);
+ }
+ if (error) {
+ ovsdb_atom_destroy(key, type->key_type);