/*
- * Copyright (c) 2009, 2010, 2011, 2012 Nicira Networks.
+ * Copyright (c) 2009, 2010, 2011, 2012, 2013 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#include <config.h>
-#include <assert.h>
#include <ctype.h>
#include <errno.h>
#include <getopt.h>
#include "ovsdb-data.h"
#include "ovsdb-error.h"
#include "sort.h"
-#include "sset.h"
+#include "svec.h"
#include "stream.h"
#include "stream-ssl.h"
#include "table.h"
static void usage(void) NO_RETURN;
static void parse_options(int argc, char *argv[]);
static struct jsonrpc *open_jsonrpc(const char *server);
-static void fetch_dbs(struct jsonrpc *, struct sset *dbs);
+static void fetch_dbs(struct jsonrpc *, struct svec *dbs);
int
main(int argc, char *argv[])
}
if (command->need == NEED_DATABASE) {
- struct sset dbs;
+ struct svec dbs;
- sset_init(&dbs);
+ svec_init(&dbs);
fetch_dbs(rpc, &dbs);
if (argc - optind > command->min_args
- && sset_contains(&dbs, argv[optind])) {
+ && svec_contains(&dbs, argv[optind])) {
database = argv[optind++];
- } else if (sset_count(&dbs) == 1) {
- database = xstrdup(SSET_FIRST(&dbs));
- } else if (sset_contains(&dbs, "Open_vSwitch")) {
+ } else if (dbs.n == 1) {
+ database = xstrdup(dbs.names[0]);
+ } else if (svec_contains(&dbs, "Open_vSwitch")) {
database = "Open_vSwitch";
} else {
ovs_fatal(0, "no default database for `%s' command, please "
"specify a database name", command->name);
}
- sset_destroy(&dbs);
+ svec_destroy(&dbs);
} else {
database = NULL;
}
DAEMON_OPTION_ENUMS,
TABLE_OPTION_ENUMS
};
- static struct option long_options[] = {
+ static const struct option long_options[] = {
{"verbose", optional_argument, NULL, 'v'},
{"help", no_argument, NULL, 'h'},
{"version", no_argument, NULL, 'V'},
}
static void
-fetch_dbs(struct jsonrpc *rpc, struct sset *dbs)
+fetch_dbs(struct jsonrpc *rpc, struct svec *dbs)
{
struct jsonrpc_msg *request, *reply;
size_t i;
if (name->type != JSON_STRING) {
ovs_fatal(0, "list_dbs response %zu is not string", i);
}
- sset_add(dbs, name->u.string);
+ svec_add(dbs, name->u.string);
}
jsonrpc_msg_destroy(reply);
+ svec_sort(dbs);
}
\f
static void
int argc OVS_UNUSED, char *argv[] OVS_UNUSED)
{
const char *db_name;
- struct sset dbs;
+ struct svec dbs;
+ size_t i;
- sset_init(&dbs);
+ svec_init(&dbs);
fetch_dbs(rpc, &dbs);
- SSET_FOR_EACH (db_name, &dbs) {
+ SVEC_FOR_EACH (i, db_name, &dbs) {
puts(db_name);
}
- sset_destroy(&dbs);
+ svec_destroy(&dbs);
}
static void
struct cell *cell = table_add_cell(&t);
cell->json = ovsdb_datum_to_json(&data[y][x], &columns[x]->type);
cell->type = &columns[x]->type;
+ ovsdb_datum_destroy(&data[y][x], &columns[x]->type);
}
+ free(data[y]);
}
table_print(&t, &table_style);
table_destroy(&t);
+
+ free(data);
+ free(columns);
}
static void
dump_table(ts, &rows->u.array);
}
+
+ jsonrpc_msg_destroy(reply);
+ free(tables);
+ ovsdb_schema_destroy(schema);
}
static void