#include "compiler.h"
#include "dirs.h"
#include "dynamic-string.h"
+#include "fatal-signal.h"
#include "file.h"
#include "lockfile.h"
#include "log.h"
static const struct command *get_all_commands(void);
-static void usage(void) NO_RETURN;
+OVS_NO_RETURN static void usage(void);
static void parse_options(int argc, char *argv[]);
static const char *default_db(void);
{
set_program_name(argv[0]);
parse_options(argc, argv);
- signal(SIGPIPE, SIG_IGN);
+ fatal_ignore_sigpipe();
run_command(argc - optind, argv + optind, get_all_commands());
return 0;
}
{"more", no_argument, NULL, 'm'},
{"verbose", optional_argument, NULL, 'v'},
{"help", no_argument, NULL, 'h'},
+ {"option", no_argument, NULL, 'o'},
{"version", no_argument, NULL, 'V'},
{NULL, 0, NULL, 0},
};
case 'h':
usage();
+ case 'o':
+ print_options(long_options);
+ exit(EXIT_SUCCESS);
+
case 'V':
ovs_print_version(0, 0);
exit(EXIT_SUCCESS);
/* Replace source. */
if (in_place) {
+#ifdef _WIN32
+ unlink(src_name);
+#endif
if (rename(dst_name, src_name)) {
ovs_fatal(errno, "failed to rename \"%s\" to \"%s\"",
dst_name, src_name);
t *= 1000;
}
- s = xastrftime_msec(" %Y-%m-%d %H:%M:%S.###", t, true);
+ s = xastrftime_msec(" %Y-%m-%d %H:%M:%S.###", t, true);
fputs(s, stdout);
free(s);
}
usage();
}
+static void
+do_list_commands(int argc OVS_UNUSED, char *argv[] OVS_UNUSED)
+{
+ print_commands(get_all_commands());
+}
+
static const struct command all_commands[] = {
- { "create", 0, 2, do_create },
- { "compact", 0, 2, do_compact },
- { "convert", 0, 3, do_convert },
- { "needs-conversion", 0, 2, do_needs_conversion },
- { "db-version", 0, 1, do_db_version },
- { "db-cksum", 0, 1, do_db_cksum },
- { "schema-version", 0, 1, do_schema_version },
- { "schema-cksum", 0, 1, do_schema_cksum },
- { "query", 1, 2, do_query },
- { "transact", 1, 2, do_transact },
- { "show-log", 0, 1, do_show_log },
- { "help", 0, INT_MAX, do_help },
- { NULL, 0, 0, NULL },
+ { "create", "[db [schema]]", 0, 2, do_create },
+ { "compact", "[db [dst]]", 0, 2, do_compact },
+ { "convert", "[db [schema [dst]]]", 0, 3, do_convert },
+ { "needs-conversion", NULL, 0, 2, do_needs_conversion },
+ { "db-version", "[db]", 0, 1, do_db_version },
+ { "db-cksum", "[db]", 0, 1, do_db_cksum },
+ { "schema-version", "[schema]", 0, 1, do_schema_version },
+ { "schema-cksum", "[schema]", 0, 1, do_schema_cksum },
+ { "query", "[db] trns", 1, 2, do_query },
+ { "transact", "[db] trns", 1, 2, do_transact },
+ { "show-log", "[db]", 0, 1, do_show_log },
+ { "help", NULL, 0, INT_MAX, do_help },
+ { "list-commands", NULL, 0, INT_MAX, do_list_commands },
+ { NULL, NULL, 0, 0, NULL },
};
static const struct command *get_all_commands(void)