From: "Greg Wellenius" Newsgroups: comp.os.msdos.djgpp Subject: Problem reading DOS binary files Date: Wed, 29 Dec 1999 10:48:46 -0500 Organization: Harvard University Network Operations Center Lines: 41 Message-ID: <84ddkm$r3i$1@plato.harvard.edu> NNTP-Posting-Host: 12.6.221.159 X-Trace: plato.harvard.edu 946485718 27762 12.6.221.159 (29 Dec 1999 16:41:58 GMT) X-Complaints-To: usenet AT harvard DOT edu NNTP-Posting-Date: 29 Dec 1999 16:41:58 GMT X-Newsreader: Microsoft Outlook Express 4.72.3612.1700 X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3612.1700 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com I'm having problems reading binary files using fstream's 'read' function. In the following loop, I read two bytes, skip ahead 6 bytes, and so on until I reach an EOF. The loop exits long before the true end of file is reached. ------------------------- short tmpdata; // Open file read only fstream dataFile.open( fileName, ios::in ); if ( !dataFile ) { cerr << "File could not be opened." << endl; exit (1); } // Read two bytes, skip six for (int i=0; !dataFile.eof(); i++) { dataFile.read( reinterpret_cast(&tmpData), 2 ); dataFile.seekg( 6, ios::cur ); } ------------------------------ The DJGPP v2 faq (sec 9.3) says that: > Problems with read/write access to binary files via `fstream' class in C++ > programs are due to a bug in the GNU iostream library. This bug causes > truncation of files, even if you never write to the file. The library > distributed with GCC version 2.8.1 is free of that bug, so upgrade. I'm using the library distributed with djgpp 2.95.2 (ie libstdcxx.a included in gpp2952b.zip) and I still seem to have this problem. The workaround provided in that same section of the FAQ cannot work. Any ideas? Thanks greg