const char *program_version = "xentrace v1.2";
const char *program_bug_address = "<mark.a.williamson@intel.com>";
-static void usage(void)
+static void usage(int status)
{
#define USAGE_STR \
"Usage: xentrace [OPTION...] [output file]\n" \
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,
{
fprintf(stderr, "Invalid option argument: %s\n", arg);
fprintf(stderr, "Error: %s\n\n", strerror(errno));
- usage();
+ usage(EXIT_FAILURE);
}
else if (endp == arg)
{
invalid:
fprintf(stderr, "Invalid option argument: %s\n\n", arg);
- usage();
+ usage(EXIT_FAILURE);
return 0; /* not actually reached */
}
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;
{ "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 }
};
opts.memory_buffer = sargtol(optarg, 0);
break;
+ case 'h':
+ usage(EXIT_SUCCESS);
+ break;
+
default:
- usage();
+ usage(EXIT_FAILURE);
}
}