]> git.cworth.org Git - apitrace/blobdiff - common/trace_file_zlib.cpp
Use skiplist-based FastCallSet within trace::CallSet
[apitrace] / common / trace_file_zlib.cpp
index b299b5a6bd2879fdaec8937d493ab8a7e64694f9..c4eed33dd2df650d9f63826981999b3498a500ad 100644 (file)
 #include <zlib.h>
 #include <gzguts.h>
 
+// for lseek
+#ifdef _WIN32
+#include <io.h>
+#else
+#include <sys/types.h>
+#include <unistd.h>
+#endif
+
 #include "os.hpp"
 
 #include <iostream>
@@ -53,14 +61,14 @@ public:
 protected:
     virtual bool rawOpen(const std::string &filename, File::Mode mode);
     virtual bool rawWrite(const void *buffer, size_t length);
-    virtual bool rawRead(void *buffer, size_t length);
+    virtual size_t rawRead(void *buffer, size_t length);
     virtual int rawGetc();
     virtual void rawClose();
     virtual void rawFlush();
     virtual bool rawSkip(size_t length);
     virtual int  rawPercentRead();
 private:
-    void *m_gzFile;
+    gzFile m_gzFile;
     double m_endOffset;
 };
 
@@ -100,9 +108,10 @@ bool ZLibFile::rawWrite(const void *buffer, size_t length)
     return gzwrite(m_gzFile, buffer, length) != -1;
 }
 
-bool ZLibFile::rawRead(void *buffer, size_t length)
+size_t ZLibFile::rawRead(void *buffer, size_t length)
 {
-    return gzread(m_gzFile, buffer, length) != -1;
+    int ret = gzread(m_gzFile, buffer, length);
+    return ret < 0 ? 0 : ret;
 }
 
 int ZLibFile::rawGetc()
@@ -148,19 +157,3 @@ int ZLibFile::rawPercentRead()
 File * File::createZLib(void) {
     return new ZLibFile;
 }
-
-bool File::isZLibCompressed(const std::string &filename)
-{
-    std::fstream stream(filename.c_str(),
-                        std::fstream::binary | std::fstream::in);
-    if (!stream.is_open())
-        return false;
-
-    unsigned char byte1, byte2;
-    stream >> byte1;
-    stream >> byte2;
-    stream.close();
-
-    return (byte1 == 0x1f && byte2 == 0x8b);
-}
-