diff --git a/ks.c b/ks.c index 5b000c1..ea08454 100644 --- a/ks.c +++ b/ks.c @@ -34,14 +34,15 @@ int qdl_write(struct qdl_device *qdl, const void *buf, size_t len) return write(qdl->fd, buf, len); } -static void print_usage(void) +static void print_usage(FILE *out) { extern const char *__progname; - fprintf(stderr, + fprintf(out, "%s -p -s ...\n", __progname); - fprintf(stderr, + fprintf(out, + " -h --help Print this usage info\n" " -p --port Sahara device node to use\n" " -s --sahara Sahara protocol file mapping\n" "\n" @@ -62,13 +63,14 @@ int main(int argc, char **argv) static struct option options[] = { {"debug", no_argument, 0, 'd'}, + {"help", no_argument, 0, 'h'}, {"version", no_argument, 0, 'v'}, {"port", required_argument, 0, 'p'}, {"sahara", required_argument, 0, 's'}, {0, 0, 0, 0} }; - while ((opt = getopt_long(argc, argv, "dvp:s:", options, NULL)) != -1) { + while ((opt = getopt_long(argc, argv, "dvp:s:h", options, NULL)) != -1) { switch (opt) { case 'd': qdl_debug = true; @@ -84,7 +86,7 @@ int main(int argc, char **argv) found_mapping = true; file_id = strtol(optarg, NULL, 10); if (file_id < 0) { - print_usage(); + print_usage(stderr); return 1; } if (file_id >= MAPPING_SZ) { @@ -96,21 +98,24 @@ int main(int argc, char **argv) } colon = strchr(optarg, ':'); if (!colon) { - print_usage(); + print_usage(stderr); return 1; } qdl.mappings[file_id] = &optarg[colon - optarg + 1]; printf("Created mapping ID:%ld File:%s\n", file_id, qdl.mappings[file_id]); break; + case 'h': + print_usage(stdout); + return 0; default: - print_usage(); + print_usage(stderr); return 1; } } // -p and -s is required if (!dev_node || !found_mapping) { - print_usage(); + print_usage(stderr); return 1; } diff --git a/ramdump.c b/ramdump.c index baa87ff..bfe8058 100644 --- a/ramdump.c +++ b/ramdump.c @@ -12,14 +12,13 @@ const char *__progname = "ramdump"; bool qdl_debug; -static void print_usage(void) +static void print_usage(FILE *out) { extern const char *__progname; - fprintf(stderr, + fprintf(out, "%s [--debug] [-o ] [segment-filter,...]\n", __progname); - exit(1); } int main(int argc, char **argv) @@ -41,10 +40,11 @@ int main(int argc, char **argv) {"version", no_argument, 0, 'v'}, {"output", required_argument, 0, 'o'}, {"serial", required_argument, 0, 'S'}, + {"help", no_argument, 0, 'h'}, {0, 0, 0, 0} }; - while ((opt = getopt_long(argc, argv, "dvo:S:", options, NULL)) != -1) { + while ((opt = getopt_long(argc, argv, "dvo:S:h", options, NULL)) != -1) { switch (opt) { case 'd': qdl_debug = true; @@ -59,16 +59,22 @@ int main(int argc, char **argv) case 'S': serial = optarg; break; + case 'h': + print_usage(stdout); + return 0; default: - print_usage(); + print_usage(stderr); + return 1; } } if (optind < argc) filter = argv[optind++]; - if (optind != argc) - print_usage(); + if (optind != argc) { + print_usage(stderr); + return 1; + } if (qdl_debug) print_version();