lttng-crash.c: show man page with --help and remove usage
[lttng-tools.git] / src / bin / lttng-crash / lttng-crash.c
index e6413bc57283b318cd4ffd30fcfbf578ad2db1ca..13d136da96e845e8c78e23870caa507b7e708f3e 100644 (file)
@@ -16,7 +16,6 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-#define _GNU_SOURCE
 #include <getopt.h>
 #include <signal.h>
 #include <stdio.h>
@@ -29,7 +28,6 @@
 #include <fcntl.h>
 #include <sys/wait.h>
 #include <unistd.h>
-#include <config.h>
 #include <ctype.h>
 #include <dirent.h>
 #include <byteswap.h>
@@ -39,6 +37,7 @@
 #include <version.h>
 #include <lttng/lttng.h>
 #include <common/common.h>
+#include <common/utils.h>
 
 #define DEFAULT_VIEWER "babeltrace"
 
@@ -206,27 +205,15 @@ static struct option long_options[] = {
        { NULL, 0, NULL, 0 },
 };
 
-static void usage(FILE *ofp)
+static void usage(void)
 {
-       fprintf(ofp, "LTTng Crash Trace Viewer " VERSION " - " VERSION_NAME "%s\n\n",
-               GIT_VERSION[0] == '\0' ? "" : " - " GIT_VERSION);
-       fprintf(ofp, "usage: lttng-crash [OPTIONS] FILE\n");
-       fprintf(ofp, "\n");
-       fprintf(ofp, "Options:\n");
-       fprintf(ofp, "  -V, --version              Show version.\n");
-       fprintf(ofp, "  -h, --help                 Show this help.\n");
-       fprintf(ofp, "      --list-options         Simple listing of lttng-crash options.\n");
-       fprintf(ofp, "  -v, --verbose              Increase verbosity.\n");
-       fprintf(ofp, "  -e, --viewer               Specify viewer and/or options to use. This will\n"
-                    "                             completely override the default viewers so please\n"
-                    "                             make sure to specify the full command. The trace\n"
-                    "                             directory paths appended at the end to the\n"
-                    "                             arguments.\n");
-       fprintf(ofp, "  -x, --extract PATH         Extract trace(s) to specified path. Don't view\n"
-                    "                             trace.\n");
-       fprintf(ofp, "\n");
-       fprintf(ofp, "Please see the lttng-crash(1) man page for full documentation.\n");
-       fprintf(ofp, "See http://lttng.org for updates, bug reports and news.\n");
+       int ret = utils_show_man_page(1, "lttng-crash");
+
+       if (ret) {
+               ERR("Cannot view man page lttng-crash(1)");
+               perror("exec");
+               exit(EXIT_FAILURE);
+       }
 }
 
 static void version(FILE *ofp)
@@ -271,7 +258,7 @@ static int parse_args(int argc, char **argv)
        int opt, ret = 0;
 
        if (argc < 2) {
-               usage(stderr);
+               usage();
                exit(EXIT_FAILURE);
        }
 
@@ -282,7 +269,7 @@ static int parse_args(int argc, char **argv)
                        ret = 1;
                        goto end;
                case 'h':
-                       usage(stdout);
+                       usage();
                        ret = 1;
                        goto end;
                case 'v':
@@ -304,7 +291,7 @@ static int parse_args(int argc, char **argv)
                        ret = 1;
                        goto end;
                default:
-                       usage(stderr);
+                       ERR("Unknown command-line option");
                        goto error;
                }
        }
@@ -314,8 +301,8 @@ static int parse_args(int argc, char **argv)
        }
 
        /* No leftovers, or more than one input path, print usage and quit */
-       if ((argc - optind) == 0 || (argc - optind) > 1) {
-               usage(stderr);
+       if (argc - optind != 1) {
+               ERR("Command-line error: Specify exactly one input path");
                goto error;
        }
 
@@ -668,7 +655,7 @@ int copy_crash_subbuf(const struct lttng_crash_layout *layout,
                return -EINVAL;
        }
 
-       DBG("Copy crash subbuffer at offset %lu", offset);
+       DBG("Copy crash subbuffer at offset %" PRIu64, offset);
        sbidx = subbuf_index(offset, buf_size, subbuf_size);
 
        /*
@@ -1034,6 +1021,7 @@ int extract_trace_recursive(const char *output_path,
                        break;
                }
                case DT_REG:
+               case DT_LNK:
                        if (!strcmp(entry->d_name, "metadata")) {
                                ret = extract_one_trace(output_path,
                                        input_path);
This page took 0.025326 seconds and 4 git commands to generate.