]> granicus.if.org Git - procps-ng/commitdiff
top: some minor tweaks supporting long cmdline options
authorJim Warner <james.warner@comcast.net>
Wed, 8 Sep 2021 05:00:00 +0000 (00:00 -0500)
committerCraig Small <csmall@dropbear.xyz>
Wed, 8 Sep 2021 11:35:20 +0000 (21:35 +1000)
This darn patch began as 1 correction to an extraneous
comma in the man document. Then, it grew to include an
adjustment for a couple of additional man page things.

After that, I figured I might as well tighten up logic
dealing with those awful gaps in the getopt_long code.

[ the error_exit mentioned in the associated comment ]
[ will only be taken when '=' ends the argv vectors! ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
top/top.1
top/top.c

index f3cfe296dd885d4cdb89495cacd201b44f6950a3..91d8f92c4e22f5a91afe9dbd5927d6ec6957eaa1 100644 (file)
--- a/top/top.1
+++ b/top/top.1
@@ -295,8 +295,9 @@ as scalable columns and discussed under topic `3a. DESCRIPTIONS of Fields'.
 .\" ----------------------------------------------------------------------
 Mandatory\fI arguments\fR to long options are mandatory for short
 options too.
-The equals sign can be used with either option form and whitespace
-before and/or after the `=' is permitted.
+
+Although not required, the equals sign can be used with either option
+form and whitespace before and/or after the `=' is permitted.
 
 .TP 3
 \-\fBb\fR, \fB\-\-batch\fR
@@ -448,7 +449,7 @@ The `p', `U' and `u' \*(COs are mutually exclusive.
 
 .TP 3
 \-\fBV\fR, \fB\-\-version\fR
-Show library version, then quit.
+Display version information, then quit.
 
 .TP 3
 \-\fBw\fR, \fB\-\-width\fR [=\fICOLUMNS\fR]
@@ -462,7 +463,7 @@ In normal display mode, when used without an argument \*(We will\fI attempt\fR
 to format output using the COLUMNS= and LINES= environment variables, if set.
 With an argument, output width can only be decreased, not increased.
 Whether using environment variables or an argument with \-w, when\fI not\fR
-in Batch mode actual, terminal dimensions can never be exceeded.
+in Batch mode actual terminal dimensions can never be exceeded.
 
 \*(NT Without the use of this \*(CO, output width is always based on the
 terminal at which \*(We was invoked whether or not in Batch mode.
index 4e2ab70b500727d103af7152b65d8e09223aa077..0e3614a03338de992db7fbb7e515b01a51531c61 100644 (file)
--- a/top/top.c
+++ b/top/top.c
@@ -3829,8 +3829,10 @@ static void parse_args (int argc, char **argv) {
          cp = argv[optind++];
       if (cp) {
          if (*cp == '=') ++cp;
-         if (*cp == '\0' && optind < argc) cp = argv[optind++];
-         if (!cp || *cp == '\0') error_exit(fmtmk(N_fmt(MISSING_args_fmt), ch));
+         /* here, if we're actually accessing argv[argc], we'll rely on
+            the required NULL delimiter which yields an error_exit next */
+         if (*cp == '\0') cp = argv[optind++];
+         if (!cp) error_exit(fmtmk(N_fmt(MISSING_args_fmt), ch));
       }
 #endif
       switch (ch) {