/*
- * Copyright (c) 2008, 2009, 2010 Nicira Networks.
+ * Copyright (c) 2008, 2009, 2010 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
struct option;
-struct command {
+/* Command handler context */
+struct ovs_cmdl_context {
+ /* number of command line arguments */
+ int argc;
+ /* array of command line arguments */
+ char **argv;
+ /* private context data defined by the API user */
+ void *pvt;
+};
+
+typedef void (*ovs_cmdl_handler)(struct ovs_cmdl_context *);
+
+struct ovs_cmdl_command {
const char *name;
+ const char *usage;
int min_args;
int max_args;
- void (*handler)(int argc, char *argv[]);
+ ovs_cmdl_handler handler;
};
-char *long_options_to_short_options(const struct option *options);
-void run_command(int argc, char *argv[], const struct command[]);
-
-void proctitle_init(int argc, char **argv);
-void proctitle_set(const char *, ...)
- PRINTF_FORMAT(1, 2);
-void proctitle_restore(void);
+char *ovs_cmdl_long_options_to_short_options(const struct option *options);
+void ovs_cmdl_print_options(const struct option *options);
+void ovs_cmdl_print_commands(const struct ovs_cmdl_command *commands);
+void ovs_cmdl_run_command(struct ovs_cmdl_context *, const struct ovs_cmdl_command[]);
+
+void ovs_cmdl_proctitle_init(int argc, char **argv);
+#if defined(__FreeBSD__) || defined(__NetBSD__)
+#define ovs_cmdl_proctitle_set setproctitle
+#else
+void ovs_cmdl_proctitle_set(const char *, ...)
+ OVS_PRINTF_FORMAT(1, 2);
+#endif
+void ovs_cmdl_proctitle_restore(void);
#endif /* command-line.h */