Newsgroups: comp.os.linux.announce
From: hjl@nynexst.com (H.J. Lu)
Subject: libg++ 2.5.3l.2 is on tsx-11 (fwd)
Message-ID: <1994Feb27.170518.10253@cs.cornell.edu>
Date: Sun, 27 Feb 1994 17:05:18 GMT
Approved: linux-announce@tc.cornell.edu (Matt Welsh)

This is the binary release of the GNU C++ library 2.5.3l.2 (The GNU
libg++ 2.5.3) for Linux. You have to install gcc 2.5.7 or above and
libc 4.5.21 or above to use it. Please don't use it with older gcc
or libc.

It is on tsx-11.mit.edu under pub/linux/packages/GCC and is compressed
with gzip 1.2.4.

Iostream is now back to libg++.a. But you have to use it with libc
4.5.19 or above. Due to the upcoming merger of ncurses, I didn't include
CursesW.o in libg++.a.

The only change from 2.5.3l.1 is libio/isgetline.cc, which I am
enclosing here.

I discourage compiling libg++ 2.5.3 yourself unless you know what you
are doing. I have made many modifications. I hope my changes can be
merged in the next libg++ 2.5.x. But I don't know what will happen.

If you really want to compile libg++ 2.5.3 yourself, please follow my
instructions closely. You can get the source code libg++-2.5.3.tar.gz
from any gnu ftp sites like prep.ai.mit.edu:pub/gnu or
ftp.uu.net:packages/gnu. You should first apply my patch,
libg++-2.5.3l.2.diff.gz, which is on tsx-11.mit.edu under
pub/linux/packages/GCC after libg++ 2.5.3 is released. After running
"configure", you should go to libg++/src and do

1. rm regex.*
2. vi Makefile. You should remove all the references to
   regex.[o|h|cc|c]. I don't want to patch libg++ such that it won't
   compile on other platforms.

Then you can do a make at the top.

The file list:

1. libg++-2.5.3l.2-p1.tar.gz

  REQUIRED. libg++.a, libiostream.a, libiberty.a and genclass. It
  is libg++ 2.5.3l.2. To install

  cd /usr
  zcat libg++-2.5.3l.2-p1.tar.gz | tar xvvof -

2. libg++-2.5.3l.2-p2.tar.gz

  REQUIRED. g++-include. It is libg++ 2.5.3l.2 and is the same as
  2.5.3l.1. To install

  cd /usr
  zcat libg++-2.5.3l.2-p2.tar.gz | tar xvvof -


H.J.
hjl@nynexst.com
02/26/94
---
>From bothner@cygnus.com Mon Feb 14 19:02:24 1994
Return-Path: <bothner@cygnus.com>
Received: from nynexst.com (nynex-ms) by titanic.nynexst.com (4.1/SMI-4.1)
	id AA25307; Mon, 14 Feb 94 19:02:23 EST
Received: from relay1.UU.NET by nynexst.com (4.1/SMI-4.1)
	id AA25859; Mon, 14 Feb 94 19:08:50 EST
Received: from cygnus.com by relay1.UU.NET with SMTP 
	(5.61/UUNET-internet-primary) id AAwdgy18143; Mon, 14 Feb 94 19:02:07 -0500
Received: from kalessin.cygnus.com by cygnus.com (4.1/SMI-4.1)
	id AA29453; Mon, 14 Feb 94 16:02:48 PST
From: bothner@cygnus.com (Per Bothner)
Received: from localhost (bothner@localhost) by kalessin.cygnus.com (8.6.4/8.6.4) id QAA16463; Mon, 14 Feb 1994 16:01:50 -0800
Message-Id: <199402150001.QAA16463@kalessin.cygnus.com>
To: hjl@nynexst.com (H.J. Lu)
Subject: Re: libg++ bug? 
In-Reply-To: (Your message of Sun, 13 Feb 94 00:55:07 EST.)
             <9402130555.AA20878@titanic.nynexst.com> 
Date: Mon, 14 Feb 94 16:01:50 -0800
Status: OR

I prefer the following patch.
But note that this is tentative.
I need to clarify the ANSI specification, after I get
the next working paper (in a few days).
	--Per

Index: isgetline.cc
===================================================================
RCS file: /rel/cvsfiles/devo/libio/isgetline.cc,v
retrieving revision 1.3
diff -c -r1.3 isgetline.cc
*** isgetline.cc	1994/01/20 22:21:36	1.3
--- libio/isgetline.cc	1994/02/14 23:04:57
***************
*** 38,54 ****
      {
        streambuf *sb = rdbuf();
        _IO_size_t count = _IO_getline(sb, buf, len - 1, delim, -1);
!       if (count == len-1)
! 	set(ios::failbit);
!       else
  	{
! 	  int ch = sb->sbumpc();
! 	  if (ch == EOF)
! 	    set(ios::failbit|ios::eofbit);
! 	  else if (ch == (unsigned char)delim)
! 	    count++;
! 	  else
! 	    sb->sungetc(); // Leave delimiter unread.
  	}
        _gcount = count;
      }
--- 38,50 ----
      {
        streambuf *sb = rdbuf();
        _IO_size_t count = _IO_getline(sb, buf, len - 1, delim, -1);
!       int ch = sb->sbumpc();
!       if (ch == EOF)
! 	set(ios::failbit|ios::eofbit);
!       else if (ch != (unsigned char)delim)
  	{
! 	  set(ios::failbit);
! 	  sb->sungetc(); // Leave delimiter unread.
  	}
        _gcount = count;
      }


