+ int fd, ret;
+
+ *swap = -1;
+
+ fd = open(trace_file, O_RDONLY);
+ if (fd < 0) {
+ perror("open");
+ return 1;
+ }
+
+ ret = read(fd, &t, sizeof(t));
+ if (ret < 0) {
+ perror("read");
+ return 1;
+ } else if (ret != sizeof(t)) {
+ log_err("fio: short read on trace file\n");
+ return 1;
+ }
+
+ close(fd);
+
+ if ((t.magic & 0xffffff00) == BLK_IO_TRACE_MAGIC)
+ *swap = 0;
+ else {
+ /*
+ * Maybe it needs to be endian swapped...
+ */
+ t.magic = fio_swap32(t.magic);
+ if ((t.magic & 0xffffff00) == BLK_IO_TRACE_MAGIC)
+ *swap = 1;
+ }
+
+ if (*swap == -1) {
+ log_err("fio: blktrace appears corrupt\n");
+ return 1;
+ }
+
+ return 0;
+}
+
+int main(int argc, char *argv[])
+{
+ int need_swap, i, c;