X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Funixctl.c;h=ac756a834bc456c5169868c9ccd76d9b579df6ee;hb=0cc96e48ab2fc573c3b7b69fe5a034bb29dde578;hp=b52d3d1ece15e5c955d0bffda4b1437812738438;hpb=bc39196036f8e33d15274855087f0c47be2095ee;p=openvswitch diff --git a/lib/unixctl.c b/lib/unixctl.c index b52d3d1e..ac756a83 100644 --- a/lib/unixctl.c +++ b/lib/unixctl.c @@ -34,14 +34,15 @@ #include "poll-loop.h" #include "shash.h" #include "socket-util.h" +#include "svec.h" #include "util.h" +#include "vlog.h" #ifndef SCM_CREDENTIALS #include #endif -#define THIS_MODULE VLM_unixctl -#include "vlog.h" +VLOG_DEFINE_THIS_MODULE(unixctl) struct unixctl_command { unixctl_cb_func *cb; @@ -82,11 +83,23 @@ unixctl_help(struct unixctl_conn *conn, const char *args OVS_UNUSED, { struct ds ds = DS_EMPTY_INITIALIZER; struct shash_node *node; + struct svec names; + const char *name; + size_t i; ds_put_cstr(&ds, "The available commands are:\n"); + + svec_init(&names); SHASH_FOR_EACH (node, &commands) { - ds_put_format(&ds, "\t%s\n", node->name); + svec_add(&names, node->name); } + svec_sort(&names); + + SVEC_FOR_EACH (i, name, &names) { + ds_put_format(&ds, "\t%s\n", name); + } + svec_destroy(&names); + unixctl_command_reply(conn, 214, ds_cstr(&ds)); ds_destroy(&ds); }