From cbbe8fe324bfc9f59d7dda1e0518c442a90d8462 Mon Sep 17 00:00:00 2001 From: Jim Warner Date: Thu, 2 Mar 2023 00:00:00 -0600 Subject: [PATCH] top: ensure an EXIT_FAILURE with bad command line args When getopt usage was added (plus long options) in the patch shown below, top no longer returned EXIT_FAILURE when the error message was generated by getopt itself. This commit will restore the proper behavior no matter who might issue a command line argument error message. Thanks to Bastian Bittorf for discovering this buglet. Reference(s): https://gitlab.com/procps-ng/procps/-/issues/273 . sep, 2021 - getopt with long form args commit c91b371485b7ffaea3a7c669b080328d141dfb6b Signed-off-by: Jim Warner --- src/top/top.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/top/top.c b/src/top/top.c index b09f6594..ad862654 100644 --- a/src/top/top.c +++ b/src/top/top.c @@ -556,7 +556,7 @@ static void bye_bye (const char *str) { } /* we'll only have a 'str' if called by error_exit() | - not ever from the sig_endpgm() signal handler ... | */ + and parse_args(), never from a signal handler ... | */ if (str) { fputs(str, stderr); exit(EXIT_FAILURE); @@ -4372,8 +4372,9 @@ static void parse_args (int argc, char **argv) { Width_mode = (int)tmp; continue; default: - // we'll rely on getopt for any error message ... - bye_bye(NULL); + /* we'll rely on getopt for any error message while + forcing an EXIT_FAILURE with an empty string ... */ + bye_bye(""); } // end: switch (ch) #ifndef GETOPTFIX_NO if (cp) error_exit(fmtmk(N_fmt(UNKNOWN_opts_fmt), cp));