#include <unistd.h>
#include <ctype.h>
#include <dirent.h>
-#include <byteswap.h>
+#include <common/compat/endian.h>
#include <inttypes.h>
#include <stdbool.h>
#include <version.h>
#include <lttng/lttng.h>
#include <common/common.h>
+#include <common/spawn-viewer.h>
#include <common/utils.h>
-#define DEFAULT_VIEWER "babeltrace"
-
#define COPY_BUFLEN 4096
#define RB_CRASH_DUMP_ABI_LEN 32
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);
}
}
- 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");
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;
}
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 {
*/
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,
}
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;
/* 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;
}
}
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;
}