X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-crash%2Flttng-crash.c;h=a4b6a93f81d0f9f880a8dcecc1f601cec3edf99c;hb=ac497a37018f3c253d2e50397294f58d33f7f24f;hp=98c52c59dcd835a2c48cde3def2543d025f13132;hpb=b53d4e59bf0a980aa774dcccc27123986e77b8ff;p=lttng-tools.git diff --git a/src/bin/lttng-crash/lttng-crash.c b/src/bin/lttng-crash/lttng-crash.c index 98c52c59d..a4b6a93f8 100644 --- a/src/bin/lttng-crash/lttng-crash.c +++ b/src/bin/lttng-crash/lttng-crash.c @@ -20,17 +20,16 @@ #include #include #include -#include +#include #include #include #include #include #include +#include #include -#define DEFAULT_VIEWER "babeltrace" - #define COPY_BUFLEN 4096 #define RB_CRASH_DUMP_ABI_LEN 32 @@ -184,7 +183,7 @@ static const char *progname; static char *opt_viewer_path = NULL; static char *opt_output_path = NULL; -static char *input_path; +static char *the_input_path; int lttng_opt_quiet, lttng_opt_verbose, lttng_opt_mi; @@ -217,7 +216,7 @@ static void usage(void) static void version(FILE *ofp) { fprintf(ofp, "%s (LTTng Crash Trace Viewer) " VERSION " - " VERSION_NAME -"%s%s\n", + "%s%s\n", progname, GIT_VERSION[0] == '\0' ? "" : " - " GIT_VERSION, EXTRA_VERSION_NAME[0] == '\0' ? "" : " - " EXTRA_VERSION_NAME); @@ -295,17 +294,13 @@ static int parse_args(int argc, char **argv) } } - if (!opt_viewer_path) { - opt_viewer_path = (char *) DEFAULT_VIEWER; - } - /* No leftovers, or more than one input path, print usage and quit */ if (argc - optind != 1) { ERR("Command-line error: Specify exactly one input path"); goto error; } - input_path = argv[optind]; + the_input_path = argv[optind]; end: return ret; @@ -378,19 +373,19 @@ uint64_t _crash_get_field(const struct lttng_crash_layout *layout, switch (size) { case 1: return *(uint8_t *) ptr; case 2: if (layout->reverse_byte_order) { - return __bswap_16(*(uint16_t *) ptr); + return bswap_16(*(uint16_t *) ptr); } else { return *(uint16_t *) ptr; } case 4: if (layout->reverse_byte_order) { - return __bswap_32(*(uint32_t *) ptr); + return bswap_32(*(uint32_t *) ptr); } else { return *(uint32_t *) ptr; } case 8: if (layout->reverse_byte_order) { - return __bswap_64(*(uint64_t *) ptr); + return bswap_64(*(uint64_t *) ptr); } else { return *(uint64_t *) ptr; } @@ -725,7 +720,7 @@ int copy_crash_subbuf(const struct lttng_crash_layout *layout, subbuf_ptr + layout->offset.packet_size, layout->length.packet_size); if (layout->reverse_byte_order) { - packet_size = __bswap_64(packet_size); + packet_size = bswap_64(packet_size); } packet_size /= CHAR_BIT; } else { @@ -741,7 +736,7 @@ int copy_crash_subbuf(const struct lttng_crash_layout *layout, */ patch_size = committed * CHAR_BIT; if (layout->reverse_byte_order) { - patch_size = __bswap_64(patch_size); + patch_size = bswap_64(patch_size); } if (layout->length.content_size) { memcpy(subbuf_ptr + layout->offset.content_size, @@ -1181,7 +1176,7 @@ end_no_closedir: } static -int view_trace(const char *viewer_path, const char *trace_path) +int view_trace(const char *trace_path, char *viewer_path) { pid_t pid; @@ -1202,13 +1197,12 @@ int view_trace(const char *viewer_path, const char *trace_path) /* Child */ int ret; - ret = execlp(viewer_path, viewer_path, - trace_path, (char *) NULL); + ret = spawn_viewer(trace_path, viewer_path, false); if (ret) { - PERROR("execlp"); exit(EXIT_FAILURE); } - exit(EXIT_SUCCESS); /* Never reached */ + /* Never reached */ + exit(EXIT_SUCCESS); } return 0; } @@ -1250,7 +1244,7 @@ int main(int argc, char *argv[]) } } - ret = extract_trace_recursive(output_path, input_path); + ret = extract_trace_recursive(output_path, the_input_path); if (ret < 0) { has_warning = true; goto end; @@ -1260,7 +1254,7 @@ int main(int argc, char *argv[]) } if (!opt_output_path) { /* View trace */ - ret = view_trace(opt_viewer_path, output_path); + ret = view_trace(output_path, opt_viewer_path); if (ret) { has_warning = true; }