]> git.itanic.dy.fi Git - scan-pagemap/commitdiff
main.c: Add help text
authorTimo Kokkonen <kaapeli@itanic.dy.fi>
Thu, 22 Jul 2010 08:19:41 +0000 (11:19 +0300)
committerTimo Kokkonen <kaapeli@itanic.dy.fi>
Thu, 22 Jul 2010 08:19:41 +0000 (11:19 +0300)
Print usage when insufficient parameters are given or when user
requests the help text.

Signed-off-by: Timo Kokkonen <kaapeli@itanic.dy.fi>
main.c

diff --git a/main.c b/main.c
index 5690c869f4290cf0d63b65f0a5676daa5a7dc8a9..22a6a6d0f580f37b00c106738824d3b0c6e299f6 100644 (file)
--- 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);