struct crash_abi_unknown {
uint8_t magic[RB_CRASH_DUMP_ABI_MAGIC_LEN];
- uint64_t mmap_length; /* Overall lenght of crash record */
+ uint64_t mmap_length; /* Overall length of crash record */
uint16_t endian; /*
* { 0x12, 0x34 }: big endian
* { 0x34, 0x12 }: little endian
{
fprintf(ofp, "LTTng Crash Trace Viewer " VERSION " - " VERSION_NAME "%s\n\n",
GIT_VERSION[0] == '\0' ? "" : " - " GIT_VERSION);
- fprintf(ofp, "usage: lttng [OPTIONS] FILE\n");
+ fprintf(ofp, "usage: lttng-crash [OPTIONS] FILE\n");
fprintf(ofp, "\n");
fprintf(ofp, "Options:\n");
fprintf(ofp, " -V, --version Show version.\n");
static
int copy_file(const char *file_dest, const char *file_src)
{
- int fd_src, fd_dest;
+ int fd_src = -1, fd_dest = -1;
ssize_t readlen, writelen;
char buf[COPY_BUFLEN];
+ int ret;
DBG("Copy metadata file '%s' into '%s'", file_src, file_dest);
fd_src = open(file_src, O_RDONLY);
if (fd_src < 0) {
PERROR("Error opening %s for reading", file_src);
- return fd_src;
+ ret = -errno;
+ goto error;
}
fd_dest = open(file_dest, O_RDWR | O_CREAT | O_EXCL,
S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
if (fd_dest < 0) {
PERROR("Error opening %s for writing", file_dest);
- return fd_dest;
+ ret = -errno;
+ goto error;
}
for (;;) {
readlen = lttng_read(fd_src, buf, COPY_BUFLEN);
if (readlen < 0) {
PERROR("Error reading input file");
- return -1;
+ ret = -1;
+ goto error;
}
if (!readlen) {
break;
writelen = lttng_write(fd_dest, buf, readlen);
if (writelen < readlen) {
PERROR("Error writing to output file");
- return -1;
+ ret = -1;
+ goto error;
}
}
- return 0;
+
+ ret = 0;
+error:
+ if (fd_src >= 0) {
+ if (close(fd_src) < 0) {
+ PERROR("Error closing %s", file_src);
+ }
+ }
+
+ if (fd_dest >= 0) {
+ if (close(fd_dest) < 0) {
+ PERROR("Error closing %s", file_dest);
+ }
+ }
+ return ret;
}
static
readlen = lttng_read(fd_src, buf, src_file_len);
if (readlen < 0) {
PERROR("Error reading input file");
- return -1;
+ ret = -1;
+ goto end;
}
prod_offset = crash_get_field(layout, buf, prod_offset);
ret = extract_trace_recursive(output_subpath,
input_subpath);
+ if (ret) {
+ has_warning = 1;
+ }
break;
}
case DT_REG:
trace_dir = opendir(trace_path);
if (!trace_dir) {
PERROR("Cannot open '%s' path", trace_path);
- return -1;
+ ret = -errno;
+ goto end;
}
trace_dir_fd = dirfd(trace_dir);
if (trace_dir_fd < 0) {
PERROR("dirfd");
- return -1;
+ ret = -errno;
+ goto end;
}
while ((entry = readdir(trace_dir))) {