]> git.donarmstrong.com Git - bamtools.git/commitdiff
Enforced proper handling of large files (>4Gb) on 32-bit systems.
authorDerek <derekwbarnett@gmail.com>
Fri, 9 Jul 2010 16:04:07 +0000 (12:04 -0400)
committerDerek <derekwbarnett@gmail.com>
Fri, 9 Jul 2010 16:04:07 +0000 (12:04 -0400)
BGZF.cpp
BGZF.h
Makefile

index 5aeb26a7005af4418887e37737f30aa6e0766233..1d185ba92d3f96e1139aa6b2935f6281ee9ea7ad 100644 (file)
--- a/BGZF.cpp
+++ b/BGZF.cpp
@@ -3,7 +3,7 @@
 // Marth Lab, Department of Biology, Boston College\r
 // All rights reserved.\r
 // ---------------------------------------------------------------------------\r
-// Last modified: 11 January 2010 (DB)\r
+// Last modified: 9 July 2010 (DB)\r
 // ---------------------------------------------------------------------------\r
 // BGZF routines were adapted from the bgzf.c code developed at the Broad\r
 // Institute.\r
@@ -232,15 +232,15 @@ bool BgzfData::Open(const string& filename, const char* mode) {
     // stdin/stdout option contributed by Aaron Quinlan (2010-Jan-03)\r
     if ( (filename != "stdin") && (filename != "stdout") ) {\r
         // read/write BGZF data to/from a file\r
-        Stream = fopen(filename.c_str(), mode);\r
+        Stream = fopen64(filename.c_str(), mode);\r
     }\r
     else if ( (filename == "stdin") && (strcmp(mode, "rb") == 0 ) ) { \r
         // read BGZF data from stdin\r
-        Stream = freopen(NULL, mode, stdin);\r
+        Stream = freopen64(NULL, mode, stdin);\r
     }\r
     else if ( (filename == "stdout") && (strcmp(mode, "wb") == 0) ) { \r
         // write BGZF data to stdout\r
-        Stream = freopen(NULL, mode, stdout);\r
+        Stream = freopen64(NULL, mode, stdout);\r
     }\r
 \r
     if(!Stream) {\r
@@ -279,7 +279,7 @@ int BgzfData::Read(char* data, const unsigned int dataLength) {
    }\r
 \r
    if ( BlockOffset == BlockLength ) {\r
-       BlockAddress = ftell(Stream);\r
+       BlockAddress = ftello(Stream);\r
        BlockOffset  = 0;\r
        BlockLength  = 0;\r
    }\r
@@ -291,8 +291,8 @@ int BgzfData::Read(char* data, const unsigned int dataLength) {
 bool BgzfData::ReadBlock(void) {\r
 \r
     char    header[BLOCK_HEADER_LENGTH];\r
-    int64_t blockAddress = ftell(Stream);\r
-\r
+    int64_t blockAddress = ftello(Stream);\r
+    \r
     int count = fread(header, 1, sizeof(header), Stream);\r
     if (count == 0) {\r
         BlockLength = 0;\r
@@ -340,7 +340,7 @@ bool BgzfData::Seek(int64_t position) {
     int     blockOffset  = (position & 0xFFFF);\r
     int64_t blockAddress = (position >> 16) & 0xFFFFFFFFFFFFLL;\r
 \r
-    if (fseek(Stream, blockAddress, SEEK_SET) != 0) {\r
+    if (fseeko(Stream, blockAddress, SEEK_SET) != 0) {\r
         printf("BGZF ERROR: unable to seek in file\n");\r
         return false;\r
     }\r
diff --git a/BGZF.h b/BGZF.h
index 29d6d142e1ad53fe8f548a81ceefd30a0215c208..5904fe5f2ff25acee256f4f84a1759835e48f46b 100644 (file)
--- a/BGZF.h
+++ b/BGZF.h
@@ -3,7 +3,7 @@
 // Marth Lab, Department of Biology, Boston College\r
 // All rights reserved.\r
 // ---------------------------------------------------------------------------\r
-// Last modified: 22 June 2010 (DB)\r
+// Last modified: 9 July 2010 (DB)\r
 // ---------------------------------------------------------------------------\r
 // BGZF routines were adapted from the bgzf.c code developed at the Broad\r
 // Institute.\r
@@ -90,7 +90,7 @@ struct BgzfData {
     \r
     // closes BGZF file\r
     void Close(void);\r
-    // opens the BGZF file for reading (mode is either "rb" for reading, or "wb" for writing\r
+    // opens the BGZF file (mode is either "rb" for reading, or "wb" for writing)\r
     bool Open(const std::string& filename, const char* mode);\r
     // reads BGZF data into a byte buffer\r
     int Read(char* data, const unsigned int dataLength);\r
index ee9be979bc288de3d54a3f6571543ef833bcd51c..01405cac91aeb0adf9ce1fabb291bdc111ab3979 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,9 +1,23 @@
 CXX=           g++\r
-CXXFLAGS=      -Wall -O3\r
+CXXFLAGS=      -Wall -O3 -D_FILE_OFFSET_BITS=64\r
 PROG=          bamtools\r
-API=           BGZF.o BamReader.o BamWriter.o BamMultiReader.o
-UTILS=         bamtools_options.o bamtools_utilities.o
-TOOLKIT=       bamtools_convert.o bamtools_count.o bamtools_coverage.o bamtools_filter.o bamtools_header.o bamtools_index.o bamtools_merge.o bamtools_sam.o bamtools_sort.o bamtools_stats.o
+API=           BGZF.o \
+               BamIndex.o \
+               BamReader.o \
+               BamWriter.o \
+               BamMultiReader.o
+UTILS=         bamtools_options.o \
+               bamtools_utilities.o
+TOOLKIT=       bamtools_convert.o \
+               bamtools_count.o \
+               bamtools_coverage.o \
+               bamtools_filter.o \
+               bamtools_header.o \
+               bamtools_index.o \
+               bamtools_merge.o \
+               bamtools_sam.o \
+               bamtools_sort.o \
+               bamtools_stats.o
 MAIN=          bamtools.o
 OBJS=          $(API) $(UTILS) $(TOOLKIT) $(MAIN)
 LIBS=          -lz
@@ -11,7 +25,7 @@ LIBS=         -lz
 all: $(PROG)\r
 \r
 bamtools: $(OBJS)\r
-       $(CXX) $(CXXFLAGS) -o $@ $(OBJS) $(LIBS)\r
+       $(CXX) $(CXXFLAGS) -o $@ $(OBJS) $(LIBS)
 \r
 clean:\r
        rm -fr gmon.out *.o *.a a.out *~\r