[ale] libg++2.7.1.4 problems.
    Joe 
    jknapka at mindspring.com
       
    Tue Apr 30 22:44:42 EDT 1996
    
    
  
Apology in advance - This is probably not the right forum for this
question, but I'm not sure where to direct it, since Mindspring
doesn't carry the comp.os.linux.* groups. (Is there some other news
server I could use that carries those groups?)
It appears that fstreams do not work correctly in libg++2.7.1.4. /
gcc2.7.2 / libc5.3.12. Very simple programs do not work as expected:
/* Run this program with a single argument. It will create a file
   with that name and write some data to it.
   */
#include <iostream.h>
#include <fstream.h>
main(int argc, char* argv[])
{
  char r[128];
  fstream f(argv[1],ios::in|ios::out);
  // Open f for random reading and writing.
  if (f) {
    f << "Hello1." << flush;
    // Write Hello1.
    f.seekg(0,ios::beg);
    // Seek the read pointer to the beginning of the file.
    f >> r;
    // Read the string we just wrote.
    cout << r;
    // Write it to stdout.
    f.seekp(0,ios::end);
    // Seek the write pointer to the end of the file.
    f << "Hello2." << endl;
    // Write Hello2. The file should now contain
    // Hello1.Hello2.
    f.seekg(0,ios::beg);
    // Seek the read pointer back to the beginning.
    f >> r;
    // Read the entire string "Hello1.Hello2.".
    cout << r;
    // Write it to stdout.
  }
}
This code should produce a file containing "Hello1.Hello2.", and write
"Hello1.Hello1.Hello2." to stdout. What it actually does is creates a
file containing "Hello1.", and writes "Hello1." to stdout. It appears
that the seeks do not work at all, and that the second write is
failing in some mysterious way. If I close and reopen the file before
every seek, it works; but I shouldn't have to do that. This issue is
important to me because I am writing code that modifies flat files,
and it must be portable between SunOS/SunC++4.0.1 (where the above code
works as expected) and Linux/gcc2.7.2. (This is the first time I've
found something that works right under SunC++ but not g++; there are
lots of cases where the reverse is true!)
My kernel is 1.2.13 ELF, in case that matters.
If this truly is broken, how can I find out whether it is a known
problem, and whether a fix is imminent? Has anyone else seen this
problem?
Thanks,
-- Joe
    
    
More information about the Ale
mailing list