]> git.cworth.org Git - apitrace/blobdiff - common/trace_file_read.cpp
cli: Rename replay -> retrace.
[apitrace] / common / trace_file_read.cpp
index 68bc74a4978f6dc24a2d82c396def987bdae366d..46c83ff2171894053d9fd8df10a6bc4a4f49364b 100644 (file)
@@ -24,6 +24,8 @@
  **************************************************************************/
 
 
+#include <fstream>
+
 #include "os.hpp"
 #include "trace_file.hpp"
 
@@ -34,17 +36,25 @@ using namespace trace;
 File *
 File::createForRead(const char *filename)
 {
-    File *file;
+    std::ifstream stream(filename, std::ifstream::binary | std::ifstream::in);
+    if (!stream.is_open()) {
+        os::log("error: failed to open %s\n", filename);
+        return NULL;
+    }
+    unsigned char byte1, byte2;
+    stream >> byte1;
+    stream >> byte2;
+    stream.close();
 
-    if (File::isSnappyCompressed(filename)) {
+    File *file;
+    if (byte1 == SNAPPY_BYTE1 && byte2 == SNAPPY_BYTE2) {
         file = File::createSnappy();
-    } else if (File::isZLibCompressed(filename)) {
+    } else if (byte1 == 0x1f && byte2 == 0x8b) {
         file = File::createZLib();
     } else  {
-        os::log("error: could not determine %s compression type\n", filename);
+        os::log("error: %s: unkwnown compression\n", filename);
         return NULL;
     }
-
     if (!file) {
         return NULL;
     }