aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDag-Erling Smørgrav <des@FreeBSD.org>2024-03-18 13:49:18 +0000
committerDag-Erling Smørgrav <des@FreeBSD.org>2024-03-22 08:07:34 +0000
commit95d66df41b832724a6a5e58f4a07cc89639cb660 (patch)
tree2a3fc10fa97d8cad02faf85b4bad87049a07862e
parent897a6f8b90c1810fc0e13a8e1cf419c00c61c1b5 (diff)
downloadsrc-95d66df41b832724a6a5e58f4a07cc89639cb660.tar.gz
src-95d66df41b832724a6a5e58f4a07cc89639cb660.zip
bectl: Use geopt() and drop mention of -?.
MFC after: 3 days PR: 272260 Reviewed by: kevans Differential Revision: https://reviews.freebsd.org/D44405 (cherry picked from commit e819534f15308c92afd19166254604995766ce32)
-rw-r--r--sbin/bectl/bectl.811
-rw-r--r--sbin/bectl/bectl.c45
2 files changed, 27 insertions, 29 deletions
diff --git a/sbin/bectl/bectl.8 b/sbin/bectl/bectl.8
index 42561a967bfd..e0e2827fb34f 100644
--- a/sbin/bectl/bectl.8
+++ b/sbin/bectl/bectl.8
@@ -13,9 +13,7 @@
.\" documentation and/or other materials provided with the distribution.
.\"
.\"
-.\" @(#)be.1
-.\"
-.Dd October 5, 2023
+.Dd March 18, 2024
.Dt BECTL 8
.Os
.Sh NAME
@@ -23,7 +21,7 @@
.Nd Utility to manage boot environments on ZFS
.Sh SYNOPSIS
.Nm
-.Op Fl h\&?
+.Op Fl h
.Nm
.Op Fl r Ar beroot
.Cm activate
@@ -117,10 +115,9 @@ flag to work.
.Ss Supported Subcommands and Flags
.Bl -tag -width activate
.It Xo
-.Fl h |
-.Fl \&?
+.Fl h
.Xc
-Print usage information.
+Print usage information and exit.
.It Xo
.Cm activate
.Op Fl t | Fl T
diff --git a/sbin/bectl/bectl.c b/sbin/bectl/bectl.c
index f2ea8b241b14..89d107431661 100644
--- a/sbin/bectl/bectl.c
+++ b/sbin/bectl/bectl.c
@@ -65,7 +65,7 @@ usage(bool explicit)
fp = explicit ? stdout : stderr;
fprintf(fp, "%s",
- "Usage:\tbectl {-h | -? | subcommand [args...]}\n"
+ "Usage:\tbectl {-h | subcommand [args...]}\n"
#if SOON
"\tbectl [-r beroot] add (path)*\n"
#endif
@@ -545,27 +545,31 @@ main(int argc, char *argv[])
{
struct command_map_entry *cmd;
const char *command;
- char *root;
- int rc;
+ char *root = NULL;
+ int opt, rc;
- cmd = NULL;
- root = NULL;
- if (argc < 2)
- return (usage(false));
-
- if (strcmp(argv[1], "-r") == 0) {
- if (argc < 4)
- return (usage(false));
- root = strdup(argv[2]);
- command = argv[3];
- argc -= 3;
- argv += 3;
- } else {
- command = argv[1];
- argc -= 1;
- argv += 1;
+ while ((opt = getopt(argc, argv, "hr:")) != -1) {
+ switch (opt) {
+ case 'h':
+ exit(usage(true));
+ case 'r':
+ root = strdup(optarg);
+ break;
+ default:
+ exit(usage(false));
+ }
}
+ argc -= optind;
+ argv += optind;
+
+ if (argc == 0)
+ exit(usage(false));
+
+ command = *argv;
+ optreset = 1;
+ optind = 1;
+
/* Handle command aliases */
if (strcmp(command, "umount") == 0)
command = "unmount";
@@ -573,9 +577,6 @@ main(int argc, char *argv[])
if (strcmp(command, "ujail") == 0)
command = "unjail";
- if ((strcmp(command, "-?") == 0) || (strcmp(command, "-h") == 0))
- return (usage(true));
-
if ((cmd = get_cmd_info(command)) == NULL) {
fprintf(stderr, "Unknown command: %s\n", command);
return (usage(false));