static struct ovsdb_idl *the_idl;
static struct ovsdb_idl_txn *the_idl_txn;
-static void vsctl_exit(int status) NO_RETURN;
-static void vsctl_fatal(const char *, ...) PRINTF_FORMAT(1, 2) NO_RETURN;
+NO_RETURN static void vsctl_exit(int status);
+NO_RETURN static void vsctl_fatal(const char *, ...) PRINTF_FORMAT(1, 2);
static char *default_db(void);
-static void usage(void) NO_RETURN;
+NO_RETURN static void usage(void);
static void parse_options(int argc, char *argv[], struct shash *local_options);
static bool might_write_to_db(char **argv);
&ovsrec_interface_col_name,
{&ovsrec_interface_col_type,
&ovsrec_interface_col_options,
- NULL},
+ &ovsrec_interface_col_error},
false},
{&ovsrec_table_controller,
rm_type.n_max = UINT_MAX;
error = ovsdb_datum_from_string(&rm, &rm_type,
ctx->argv[i], ctx->symtab);
- if (error && ovsdb_type_is_map(&rm_type)) {
- free(error);
- rm_type.value.type = OVSDB_TYPE_VOID;
- die_if_error(ovsdb_datum_from_string(&rm, &rm_type,
- ctx->argv[i], ctx->symtab));
+ if (error) {
+ if (ovsdb_type_is_map(&rm_type)) {
+ rm_type.value.type = OVSDB_TYPE_VOID;
+ free(error);
+ die_if_error(ovsdb_datum_from_string(
+ &rm, &rm_type, ctx->argv[i], ctx->symtab));
+ } else {
+ vsctl_fatal("%s", error);
+ }
}
ovsdb_datum_subtract(&old, type, &rm, &rm_type);
ovsdb_datum_destroy(&rm, &rm_type);