main(int argc, char *argv[])
{
set_program_name(argv[0]);
- time_init();
vlog_init();
parse_options(argc, argv);
run_command(argc - optind, argv + optind, all_commands);
" print JSON ATOMs in sorted order\n"
" parse-data TYPE DATUM...\n"
" parse JSON DATUMs as data of given TYPE, and re-serialize\n"
+ " parse-data-unique TYPE DATUM...\n"
+ " parse JSON DATUMs as data of given TYPE, eliminating\n"
+ " duplicate keys, and re-serialize\n"
" parse-data-strings TYPE DATUM...\n"
" parse string DATUMs as data of given TYPE, and re-serialize\n"
" parse-column NAME OBJECT\n"
}
static void
-do_parse_data(int argc, char *argv[])
+do_parse_data__(int argc, char *argv[],
+ struct ovsdb_error *
+ (*parse)(struct ovsdb_datum *datum,
+ const struct ovsdb_type *type,
+ const struct json *json,
+ struct ovsdb_symbol_table *symtab))
{
struct ovsdb_type type;
struct json *json;
struct ovsdb_datum datum;
json = unbox_json(parse_json(argv[i]));
- check_ovsdb_error(ovsdb_datum_from_json(&datum, &type, json, NULL));
+ check_ovsdb_error(parse(&datum, &type, json, NULL));
json_destroy(json);
print_and_free_json(ovsdb_datum_to_json(&datum, &type));
ovsdb_type_destroy(&type);
}
+static void
+do_parse_data(int argc, char *argv[])
+{
+ do_parse_data__(argc, argv, ovsdb_datum_from_json);
+}
+
+static void
+do_parse_data_unique(int argc, char *argv[])
+{
+ do_parse_data__(argc, argv, ovsdb_datum_from_json_unique);
+}
+
static void
do_parse_data_strings(int argc, char *argv[])
{
{ "parse-atoms", 2, INT_MAX, do_parse_atoms },
{ "parse-atom-strings", 2, INT_MAX, do_parse_atom_strings },
{ "parse-data", 2, INT_MAX, do_parse_data },
+ { "parse-data-unique", 2, INT_MAX, do_parse_data_unique },
{ "parse-data-strings", 2, INT_MAX, do_parse_data_strings },
{ "sort-atoms", 2, 2, do_sort_atoms },
{ "parse-column", 2, 2, do_parse_column },