On 03/17/2015 11:16 AM, Ben Pfaff wrote: > On Tue, Mar 17, 2015 at 10:35:26AM -0400, Russell Bryant wrote: >> I started working on a new command line utility that used this shared >> code. I wanted the ability to pass some data from common >> initialization code to all of the commands. You can find a similar >> pattern in ovs-vsctl. >> >> This patch updates the command handler to take a new struct, >> ovs_cmdl_context, instead of argc and argv directly. It includes argc >> and argv, but also includes an opaque type (void *), where the user of >> this API can attach its custom data it wants passed along to command >> handlers. >> >> This patch affected the ovstest sub-programs, as well. The patch >> includes a bit of an odd hack to OVSTEST_REGISTER() to avoid making >> the main() function of the sub-programs take a ovs_cmdl_context. >> The test main() functions still receive argc and argv directly, as >> that seems more natural. The test-subprograms themselves are able to >> make use of a context internally, though. >> >> Signed-off-by: Russell Bryant <[email protected]> > > Thanks! > > I applied this to master. I folded in one change to make the ## > operator do something useful (it didn't make a real difference because > OVSTEST_REGISTER is only used once per translation unit): > > diff --git a/tests/ovstest.h b/tests/ovstest.h > index 082a0d7..ddd7f3e 100644 > --- a/tests/ovstest.h > +++ b/tests/ovstest.h > @@ -76,12 +76,12 @@ void ovstest_register(const char *test_name, > ovs_cmdl_handler f); > */ > #define OVSTEST_REGISTER(name, function) \ > static void \ > - ovstest_wrapper_##function__(struct ovs_cmdl_context *ctx) \ > + ovstest_wrapper_##function##__(struct ovs_cmdl_context *ctx) \ > { \ > function(ctx->argc, ctx->argv); \ > } \ > OVS_CONSTRUCTOR(register_##function) { \ > - ovstest_register(name, ovstest_wrapper_##function__); \ > + ovstest_register(name, ovstest_wrapper_##function##__); \ > } > > #endif >
Ha, oops. Thanks for that. I had wondered if I got the syntax right, but then it built successfully so I moved on. Do you think you could merge master into the ovn branch, as well? -- Russell Bryant _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
