🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: gnu.g++.lib.bug
1 messages
1 total messages Started by Bruce Scanlan Wed, 16 Dec 1992 07:48
Bugs with libg++-2.2
#398
Author: Bruce Scanlan
Date: Wed, 16 Dec 1992 07:48
100 lines
3301 bytes
Good Day

	I installed libg++2.2.tar.Z on my decstation 5000, running Ultrix. 
	gcc-2.3.2 has been installed on this machine as well. 

	I ran configure using a host of "mips-dec-ultrix". I received some 
	warnings regarding implicit casts to void* and had to modify some 
	files correct this. The problem I am now working on is in a file
	tFile.C in the libg++-2.2/libg++/iostream/test directory. 

	In function void t4(), line 129 of tFile.C there is the following 
	function void t4(). As noted the two lines (144 and 172 of tFile.C )
	has to be modified in this manner to work. 

	If this problem has been noted, would you please send me instructions
	as to where to get the patch. 

void t4()
{ 
  char s[100];
  char ch;
  int i;

  cout << "\nMaking File tf ... ";
#ifdef _OLD_STREAMS
  File tf("tempfile", io_readwrite, a_create);
#else
  fstream tf("tempfile", ios::in|ios::out|ios::trunc);
#endif
  assert(tf.good());
  assert(tf.is_open());
  assert(tf.writable());
  assert(tf.readable());
  strcpy(s, "This is the first and only line of this file.\n");
#ifdef _OLD_STREAMS
  tf.put(s);
  tf.seek(0);
#else
  tf << s; <----------------------------requires tf to be cast to (ostream&)
  tf.rdbuf()->seekoff(0, ios::beg);
#endif
  tf.get(s, 100);
  assert(tf.good());
  cout << "first line of file:\n" << s << "\n";
  cout << "next char = ";
 cout << "next char = ";
  tf.get(ch);
  cout << (int)ch;
  cout.put('\n');
  assert(ch == 10);
  strcpy(s, "Now there is a second line.\n");
  cout << "reopening tempfile, appending: " << s;
#ifdef _OLD_STREAMS
  tf.open(tf.name(), io_appendonly, a_use);
#else
  tf.close();
  tf.open("tempfile", ios::app);
#endif
  assert(tf.good());
  assert(tf.is_open());
  assert(tf.writable());
  assert(!tf.readable());
#ifdef _OLD_STREAMS
  tf.put(s);
  assert(tf.good());
  tf.open(tf.name(), io_readonly, a_use);
#else
  tf << s; <----------------------------requires tf to be cast to (ostream&)
  assert(tf.good());
  tf.close();
  tf.open("tempfile", ios::in);
#endif
  tf.raw();
  assert(tf.good());
  assert(tf.is_open());
  assert(!tf.writable());
  assert(tf.readable());
  cout << "First 10 chars via raw system read after reopen for input:\n";
  read(tf.filedesc(), s, 10);
  assert(tf.good());
  for (i = 0; i < 10; ++ i)
    cout.put(s[i]);
  lseek(tf.filedesc(), 5, 0);
  cout << "\nContents after raw lseek to pos 5:\n";
  while ( (tf.get(ch)) && (cout.put(ch)) );
#ifdef _OLD_STREAMS
  tf.remove();
#else
  tf.close();
  unlink("tempfile");
#endif
  assert(!tf.is_open());
}


-- 
--------------------------------------------------------------------------
Bruce Scanlan                 | Promis Systems Corp  ph# 416 960 0960 x237
scanlan%promis@snitor.sni.ca  | Toronto, Ontario     fax 416 960 1222
scanlan@gpu.utcs.utoronto.ca  | Canada               
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads