unixctl: Implement quoting.
authorBen Pfaff <blp@nicira.com>
Fri, 2 Dec 2011 23:29:19 +0000 (15:29 -0800)
committerBen Pfaff <blp@nicira.com>
Mon, 19 Dec 2011 22:53:34 +0000 (14:53 -0800)
commit0e15264f96e3caff662c7998cc739a3dd5c1c0f2
tree467de37d55baeb233530bfe948cb9020461b9099
parent041dc07fd21b6987ffbcc6a597eb9918d44ae841
unixctl: Implement quoting.

The protocol used by ovs-appctl has a long-standing bug that there
is no way to distinguish "ovs-appctl a b c" from "ovs-appctl 'a b c'".
This isn't a big deal because none of the current commands really
want to accept arguments that include spaces, but it's kind of a silly
limitation.

At the same time, the internal API is awkward because every user is
stuck doing its own argument parsing, which is no fun.

This commit fixes both problems, by adding shell-like quoting to the
protocol and modifying the internal API from one that passes a string
to one that passes in an array of pre-parsed strings.  Command
implementations may now specify how many arguments they expect.  This
simplifies some command implementations significantly.

Signed-off-by: Ben Pfaff <blp@nicira.com>
16 files changed:
lib/bond.c
lib/cfm.c
lib/coverage.c
lib/lacp.c
lib/netdev-linux.c
lib/stress.c
lib/unixctl.c
lib/unixctl.h
lib/vlog.c
ofproto/ofproto-dpif.c
ofproto/ofproto.c
ovsdb/ovsdb-server.c
utilities/ovs-appctl.8.in
utilities/ovs-appctl.c
vswitchd/bridge.c
vswitchd/ovs-vswitchd.c