[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH v1] xentrace: adjust exit code for --help option


  • To: xen-devel@xxxxxxxxxxxxxxxxxxxx
  • From: Olaf Hering <olaf@xxxxxxxxx>
  • Date: Fri, 26 May 2023 14:38:10 +0200
  • Arc-authentication-results: i=1; strato.com; arc=none; dkim=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1685104694; s=strato-dkim-0002; d=strato.com; h=Message-Id:Date:Subject:Cc:To:From:Cc:Date:From:Subject:Sender; bh=TV6XPOqE6SFQtp9w1o26J0iwlJ8FZqSaP4PKDn98ZHc=; b=kjUs0VtQMVGLqmD8Of+u5PqcFizlXG2edidpieVCblFrTWLmAL+Zwjwk7Vgut/RQ9n 8iIwUJrgrEJYMw9lWQgUhhS0cHmcIn7pQccMzFviig1Z9J83WvxAc0mWBj4choJL1b1l Xgp5Jw5H3Hja8GRL7OwZlEYvELcEUebuter8KcKqxmdmvtR+XFTRnngq4DjgNaMNLeN2 tf+ZThknRovrkP8HNyMv4xRuT3fSbuMHeTM0ygtRkiwWHo5TPhOYyswkM9cGPaPrGepg C8StWC1s7Mc8eMWF4CpS7bdxoEufDZwR6h1hX0p4Lws2NEod4TYOQMOTWi6IFu9J0xXa xhPw==
  • Arc-seal: i=1; a=rsa-sha256; t=1685104694; cv=none; d=strato.com; s=strato-dkim-0002; b=WhKwkL3PZvTC5PFUX4/6PjJyLk2w3VNxaA4P3s2hzqx+fryyZdmQPN6wFImmNN8QSt FSlnf+vfShdkZWfOKC+FrGJMdx3QKwwhLE6W+f8h5zK2ZWyBKrv8D0SmYiMKFfOtV9Oe vAcPApae6dCHcLm+54nvxSHu3kILit4NrCMpi9aGP4d4NZ7x7pccl6DGuE5rfdI4GIoo W7NooGIW8g12iht9JwdsUNoRkhxE19QJE251FH4vn1zSSejcVqwAvh//lhFRnx/Ea6gE dJpdaOY4x3fETgraPqCEPGh9GR/imvUwcjr+m0LAO8AskhAplkw8le/ZPoLi69h4fVfx tnTA==
  • Cc: George Dunlap <george.dunlap@xxxxxxxxxx>, Wei Liu <wl@xxxxxxx>, Anthony PERARD <anthony.perard@xxxxxxxxxx>
  • Delivery-date: Fri, 26 May 2023 12:38:28 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

Invoking the --help option of any tool should not return with an error,
if that tool does have a documented and implemented help option.

Adjust the usage() function to exit with either error or success.
Handle the existing entry in the option table to call usage accordingly.

Adjust the getopt value for help. The char '?' is returned for unknown
options. Returning 'h' instead of '?' allows to handle --help.

Signed-off-by: Olaf Hering <olaf@xxxxxxxxx>
---
 tools/xentrace/xentrace.c | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/tools/xentrace/xentrace.c b/tools/xentrace/xentrace.c
index 3548255123..be6226f088 100644
--- a/tools/xentrace/xentrace.c
+++ b/tools/xentrace/xentrace.c
@@ -807,7 +807,7 @@ static void monitor_tbufs(void)
 const char *program_version     = "xentrace v1.2";
 const char *program_bug_address = "<mark.a.williamson@xxxxxxxxx>";
 
-static void usage(void)
+static void usage(int status)
 {
 #define USAGE_STR \
 "Usage: xentrace [OPTION...] [output file]\n" \
@@ -854,7 +854,7 @@ static void usage(void)
     printf(USAGE_STR);
     printf("\nReport bugs to %s\n", program_bug_address);
 
-    exit(EXIT_FAILURE);
+    exit(status);
 }
 
 /* convert the argument string pointed to by arg to a long int representation,
@@ -873,7 +873,7 @@ long sargtol(const char *restrict arg, int base)
     {
         fprintf(stderr, "Invalid option argument: %s\n", arg);
         fprintf(stderr, "Error: %s\n\n", strerror(errno));
-        usage();
+        usage(EXIT_FAILURE);
     }
     else if (endp == arg)
     {
@@ -901,7 +901,7 @@ long sargtol(const char *restrict arg, int base)
 
 invalid:
     fprintf(stderr, "Invalid option argument: %s\n\n", arg);
-    usage();
+    usage(EXIT_FAILURE);
     return 0; /* not actually reached */
 }
 
@@ -917,10 +917,10 @@ static long argtol(const char *restrict arg, int base)
     if (errno != 0) {
         fprintf(stderr, "Invalid option argument: %s\n", arg);
         fprintf(stderr, "Error: %s\n\n", strerror(errno));
-        usage();
+        usage(EXIT_FAILURE);
     } else if (endp == arg || *endp != '\0') {
         fprintf(stderr, "Invalid option argument: %s\n\n", arg);
-        usage();
+        usage(EXIT_FAILURE);
     }
 
     return val;
@@ -1090,7 +1090,7 @@ static void parse_args(int argc, char **argv)
         { "discard-buffers", no_argument,      0, 'D' },
         { "dont-disable-tracing", no_argument, 0, 'x' },
         { "start-disabled", no_argument,       0, 'X' },
-        { "help",           no_argument,       0, '?' },
+        { "help",           no_argument,       0, 'h' },
         { "version",        no_argument,       0, 'V' },
         { 0, 0, 0, 0 }
     };
@@ -1144,8 +1144,12 @@ static void parse_args(int argc, char **argv)
             opts.memory_buffer = sargtol(optarg, 0);
             break;
 
+        case 'h':
+            usage(EXIT_SUCCESS);
+            break;
+
         default:
-            usage();
+            usage(EXIT_FAILURE);
         }
     }
 



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.