From 4535b4fcacb1c8f02f0a908df29db94d18efd9c5 Mon Sep 17 00:00:00 2001 From: Timo Kokkonen Date: Thu, 22 Jul 2010 11:19:41 +0300 Subject: [PATCH] main.c: Add help text Print usage when insufficient parameters are given or when user requests the help text. Signed-off-by: Timo Kokkonen --- main.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/main.c b/main.c index 5690c86..22a6a6d 100644 --- a/main.c +++ b/main.c @@ -7,14 +7,26 @@ #include "parse.h" #include "analyze.h" +void print_help_and_die(char *name) +{ + printf("Usage: %s options \n" + "-p, --pid=PID scan maps belingin to a given pid\n" + "-m, --map=mapname scan maps with given mapping name\n" + "-h, --help show this help\n", + name); + + exit(0); +} + void read_args(int argc, char *argv[], struct parse_opts *opts) { int optind = 0, c; static struct option long_options[] = { { .val = 'p', .name = "pid", .has_arg = 1, }, { .val = 'm', .name = "map", .has_arg = 1, }, + { .val = 'h', .name = "help", }, }; - char short_options[] = "p:m:"; + char short_options[] = "p:m:h"; opts->parse_mask = 0; while (1) { @@ -24,7 +36,6 @@ void read_args(int argc, char *argv[], struct parse_opts *opts) if (c == -1) break; - printf("%c: %s\n", c, optarg); switch (c) { case 'p': opts->pid = atoi(optarg); @@ -34,6 +45,8 @@ void read_args(int argc, char *argv[], struct parse_opts *opts) opts->parse_mask |= PARSE_MAP_NAME; opts->map_name = optarg; break; + case 'h': + print_help_and_die(argv[0]); } } } @@ -44,13 +57,13 @@ int main(int argc, char *argv[]) struct process *process_list = NULL; struct parse_opts opts; + read_args(argc, argv, &opts); + if (argc < 3) { printf("A pid needs to be given as an argument\n"); - return 1; + print_help_and_die(argv[0]); } - read_args(argc, argv, &opts); - memset(&pf, 0, sizeof(pf)); scan_all_pids(&pf, &process_list, &opts); -- 2.45.0