[comp.os.minix] Atari ST GCC Update 10 of 10

bammi@dsrgsun.ces.cwru.edu (Jwahar R. Bammi) (11/28/88)

#!/bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #!/bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create the files:
#	lib-update1.diff
# This archive created: Thu Oct 27 21:59:59 1988
# By:	Jwahar R. Bammi(Case Western Reserve University)
#  Uucp:	 {decvax,sun,att}!cwjcc!dsrgsun!bammi
# Csnet:	 bammi@dsrgsun.ces.CWRU.edu
#  Arpa:	 bammi@dsrgsun.ces.CWRU.edu
#
export PATH; PATH=/bin:$PATH
echo shar: extracting "'lib-update1.diff'" '(22499 characters)'
if test -f 'lib-update1.diff'
then
	echo shar: over-writing existing file "'lib-update1.diff'"
fi
sed 's/^X//' << \SHAR_EOF > 'lib-update1.diff'
Xdiff -rc5 tmp/Makefile.16 gnulib/Makefile.16
X*** tmp/Makefile.16	Sun Nov 27 15:51:15 1988
X--- gnulib/Makefile.16	Sat Nov 26 03:12:18 1988
X***************
X*** 1,20 ****
X  .SUFFIXES: .s .cpp
X  
X- .cpp.s:
X- 	/lib/cpp -P -D__GNUC__ -D__MSHORT__ $*.cpp > $*.s
X- 
X  CROSSDIR = /dsrg/bammi/cross-minix
X  CROSSLIB = $(CROSSDIR)/lib
X  
X  AR	= /dsrg/bammi/cross-gcc/bin/car
X  CC	= /dsrg/bammi/cross-minix/bin/mgcc
X  CFLAGS	= -O -mshort -DATARI_ST
X  AS	= $(CC) $(CFLAGS) -c 
X  
X  SFILES = stbrksz.s stcatch.s stcrtso.s sthead.s stsetjmp.s stsndrec.s
X  
X  O1	= gtty.o stty.o termcap.o \
X  	  ctime.o popen.o puts.o qsort.o system.o \
X  	  access.o atol.o chmod.o \
X  	  chown.o cleanup.o crypt.o ctype.o dup.o dup2.o \
X  	  exec.o exit.o fgets.o fork.o fprintf.o fputs.o fread.o \
X--- 1,21 ----
X  .SUFFIXES: .s .cpp
X  
X  CROSSDIR = /dsrg/bammi/cross-minix
X  CROSSLIB = $(CROSSDIR)/lib
X  
X  AR	= /dsrg/bammi/cross-gcc/bin/car
X  CC	= /dsrg/bammi/cross-minix/bin/mgcc
X+ CPP	= /lib/cpp
X  CFLAGS	= -O -mshort -DATARI_ST
X  AS	= $(CC) $(CFLAGS) -c 
X  
X  SFILES = stbrksz.s stcatch.s stcrtso.s sthead.s stsetjmp.s stsndrec.s
X  
X+ .cpp.s:
X+ 	$(CPP) -P -D__GNUC__ -D__MSHORT__ $*.cpp > $*.s
X+ 
X  O1	= gtty.o stty.o termcap.o \
X  	  ctime.o popen.o puts.o qsort.o system.o \
X  	  access.o atol.o chmod.o \
X  	  chown.o cleanup.o crypt.o ctype.o dup.o dup2.o \
X  	  exec.o exit.o fgets.o fork.o fprintf.o fputs.o fread.o \
X***************
X*** 34,44 ****
X  	  unlink.o utime.o wait.o write.o call.o message.o stbrksz.o \
X  	  stsndrec.o stsetjmp.o
X  
X  O5	= getopt.o alloca.o getwd.o ldexp.o atof.o eprintf.o
X  
X! GNUSTUFF = fixnum.o flonum.o
X  
X  ALL	= head.o crtso.o libc.a
X  
X  all: install
X  
X--- 35,45 ----
X  	  unlink.o utime.o wait.o write.o call.o message.o stbrksz.o \
X  	  stsndrec.o stsetjmp.o
X  
X  O5	= getopt.o alloca.o getwd.o ldexp.o atof.o eprintf.o
X  
X! GNUSTUFF = fixnum.o sflonum.o dflonum.o
X  
X  ALL	= head.o crtso.o libc.a
X  
X  all: install
X  
X***************
X*** 71,75 ****
X--- 72,83 ----
X  stcatch.s : stcatch.cpp
X  stcrtso.s : stcrtso.cpp
X  sthead.s : sthead.cpp
X  stsetjmp.s : stsetjmp.cpp
X  stsndrec.s : stsndrec.cpp
X+ 
X+ # 
X+ # Note: dflonum.c *must* be compiled with 32 bit ints
X+ #	 (no -mshort flag to gcc)
X+ #
X+ dflonum.o : dflonum.c flonum.h
X+ 	$(CC) -O -DATARI_ST -c dflonum.c
Xdiff -rc5 tmp/Makefile.32 gnulib/Makefile.32
X*** tmp/Makefile.32	Sun Nov 27 15:51:15 1988
X--- gnulib/Makefile.32	Sat Nov 26 03:12:05 1988
X***************
X*** 1,20 ****
X  .SUFFIXES: .s .cpp
X  
X- .cpp.s:
X- 	/lib/cpp -P -D__GNUC__ $*.cpp > $*.s
X- 
X  CROSSDIR = /dsrg/bammi/cross-minix
X  CROSSLIB = $(CROSSDIR)/lib
X  
X  AR	= /dsrg/bammi/cross-gcc/bin/car
X  CC	= /dsrg/bammi/cross-minix/bin/mgcc
X  CFLAGS	= -O -DATARI_ST
X  AS	= $(CC) $(CFLAGS) -c
X  
X  SFILES = stbrksz.s stcatch.s stcrtso.s sthead.s stsetjmp.s stsndrec.s
X  
X  O1	= gtty.o stty.o termcap.o \
X  	  ctime.o popen.o puts.o qsort.o system.o \
X  	  access.o atol.o chmod.o \
X  	  chown.o cleanup.o crypt.o ctype.o dup.o dup2.o \
X  	  exec.o exit.o fgets.o fork.o fprintf.o fputs.o fread.o \
X--- 1,22 ----
X  .SUFFIXES: .s .cpp
X  
X  CROSSDIR = /dsrg/bammi/cross-minix
X  CROSSLIB = $(CROSSDIR)/lib
X  
X  AR	= /dsrg/bammi/cross-gcc/bin/car
X  CC	= /dsrg/bammi/cross-minix/bin/mgcc
X+ CPP     = /lib/cpp
X  CFLAGS	= -O -DATARI_ST
X  AS	= $(CC) $(CFLAGS) -c
X  
X  SFILES = stbrksz.s stcatch.s stcrtso.s sthead.s stsetjmp.s stsndrec.s
X  
X+ .cpp.s:
X+ 	$(CPP) -P -D__GNUC__ $*.cpp > $*.s
X+ 
X+ 
X  O1	= gtty.o stty.o termcap.o \
X  	  ctime.o popen.o puts.o qsort.o system.o \
X  	  access.o atol.o chmod.o \
X  	  chown.o cleanup.o crypt.o ctype.o dup.o dup2.o \
X  	  exec.o exit.o fgets.o fork.o fprintf.o fputs.o fread.o \
X***************
X*** 35,45 ****
X  	  unlink.o utime.o wait.o write.o call.o message.o stbrksz.o \
X  	  stsndrec.o stsetjmp.o
X  
X  O5      = getopt.o alloca.o getwd.o ldexp.o atof.o eprintf.o
X  
X! GNUSTUFF = fixnum.o flonum.o
X  
X  ALL	= head32.o crtso32.o libc32.a
X  
X  all: install
X  
X--- 37,47 ----
X  	  unlink.o utime.o wait.o write.o call.o message.o stbrksz.o \
X  	  stsndrec.o stsetjmp.o
X  
X  O5      = getopt.o alloca.o getwd.o ldexp.o atof.o eprintf.o
X  
X! GNUSTUFF = fixnum.o sflonum.o dflonum.o
X  
X  ALL	= head32.o crtso32.o libc32.a
X  
X  all: install
X  
X***************
X*** 72,76 ****
X--- 74,81 ----
X  stcatch.s : stcatch.cpp
X  stcrtso.s : stcrtso.cpp
X  sthead.s : sthead.cpp
X  stsetjmp.s : stsetjmp.cpp
X  stsndrec.s : stsndrec.cpp
X+ 
X+ dflonum.o : dflonum.c flonum.h
X+ 	$(CC) -O -DATARI_ST -c dflonum.c
Xdiff -rc5 tmp/ctime.c gnulib/ctime.c
X*** tmp/ctime.c	Sun Nov 27 15:51:37 1988
X--- gnulib/ctime.c	Sat Nov 19 19:38:48 1988
X***************
X*** 1,5 ****
X--- 1,12 ----
X+ /* to do:
X+  * somehow compensate for TZ in localtime
X+  * tm.tm_isdst?? related to above
X+  *
X+  *	++jrb
X+  */
X+ 
X  #include <time.h>
X  
X  static int days_per_month[] = {
X  	31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
X  };
X***************
X*** 6,66 ****
X  static char *months[] = { 
X  	"Jan", "Feb", "Mar", "Apr", "May", "Jun",
X  	"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
X  };
X  static char *days[] = {
X! 	"Thu", "Fri", "Sat", "Sun", "Mon", "Tue", "Wed"
X  };
X  
X! #define	MIN	60L
X! #define	HOUR	(60 * MIN)
X! #define	DAY	(24 * HOUR)
X! #define	YEAR	(365 * DAY)
X  
X  static struct tm tm;
X  
X! char *
X! ctime(pt)
X  long *pt;
X  {
X! 	static char buf[26];
X  	register long t = *pt;
X  
X  	tm.tm_year = 0;
X  	tm.tm_mon = 0;
X  	tm.tm_mday = 1;
X  	tm.tm_hour = 0;
X  	tm.tm_min = 0;
X  	tm.tm_sec = 0;
X! 	while (t >= YEAR) {
X! 		if ((tm.tm_year % 4) == 2)
X! 			t -= DAY;
X  		tm.tm_year += 1;
X! 		t -= YEAR;
X  	}
X  	tm.tm_year += 1970;
X  	days_per_month[1] = 28;
X! 	if ((tm.tm_year % 4) == 0)
X  		days_per_month[1]++;
X  	while (t >= (days_per_month[tm.tm_mon] * DAY))
X  		t -= days_per_month[tm.tm_mon++] * DAY;
X  	while (t >= DAY) {
X  		t -= DAY;
X  		tm.tm_mday++;
X  	}
X  	while (t >= HOUR) {
X  		t -= HOUR;
X  		tm.tm_hour++;
X  	}
X  	while (t >= MIN) {
X  		t -= MIN;
X  		tm.tm_min++;
X  	}
X  	tm.tm_sec = (int) t;
X  	sprintf(buf, "%s %s %2d %02d:%02d:%02d %d\n",
X! 		days[(t / DAY) % 7], months[tm.tm_mon],
X! 		tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec, tm.tm_year); 
X  	return buf;
X  }
X  
X  struct tm *localtime(pt)
X  long *pt;
X--- 13,93 ----
X  static char *months[] = { 
X  	"Jan", "Feb", "Mar", "Apr", "May", "Jun",
X  	"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
X  };
X  static char *days[] = {
X! 	"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
X  };
X  
X! #define	MIN	60L		/* # seconds in a minute */
X! #define	HOUR	(60 * MIN)	/* # seconds in an hour */
X! #define	DAY	(24 * HOUR)	/* # seconds in a day */
X! #define	YEAR	(365 * DAY)	/* # seconds in a year */
X  
X  static struct tm tm;
X  
X! char *ctime(pt)
X  long *pt;
X  {
X!     	static char buf[26];
X  	register long t = *pt;
X  
X+ 	long year;
X+ 
X  	tm.tm_year = 0;
X  	tm.tm_mon = 0;
X  	tm.tm_mday = 1;
X  	tm.tm_hour = 0;
X  	tm.tm_min = 0;
X  	tm.tm_sec = 0;
X! 
X! 	/* t is elapsed time in seconds since Jan 1, 1970. */
X! 	tm.tm_wday = (int) (t/DAY + 4L) % 7;	/* Jan 1, 1970 is 4th wday */
X! 	while (t >= (year=((tm.tm_year%4)==2) ? YEAR+DAY : YEAR)) {
X  		tm.tm_year += 1;
X! 		t -= year;
X  	}
X  	tm.tm_year += 1970;
X+ 
X+ 	/* t is now the offset into the current year, in seconds. */
X+ 	tm.tm_yday = (t/DAY);		/* day # of the year, Jan 1 = 0 */
X+ 
X  	days_per_month[1] = 28;
X! 	if ((tm.tm_year % 4) == 0)	/* check for leap year */
X  		days_per_month[1]++;
X+ 
X+ 	/* Compute month. */
X  	while (t >= (days_per_month[tm.tm_mon] * DAY))
X  		t -= days_per_month[tm.tm_mon++] * DAY;
X+ 
X+ 	/* Month established, now compute day of the month */
X  	while (t >= DAY) {
X  		t -= DAY;
X  		tm.tm_mday++;
X  	}
X+ 
X+ 	/* Day established, now do hour. */
X  	while (t >= HOUR) {
X  		t -= HOUR;
X  		tm.tm_hour++;
X  	}
X+ 
X+ 	/* Hour established, now do minute. */
X  	while (t >= MIN) {
X  		t -= MIN;
X  		tm.tm_min++;
X  	}
X+ 
X+ 	/* Residual time is # seconds. */
X  	tm.tm_sec = (int) t;
X+ 
X+ 	tm.tm_year -= 1900;	/* make year relative to 1900 */
X+ 	
X+ 	/* Generate output in ASCII in buf. */
X  	sprintf(buf, "%s %s %2d %02d:%02d:%02d %d\n",
X! 		days[tm.tm_wday], months[tm.tm_mon],
X! 		tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec, tm.tm_year+1900); 
X  	return buf;
X  }
X  
X  struct tm *localtime(pt)
X  long *pt;
Xdiff -rc5 tmp/doprintf.c gnulib/doprintf.c
X*** tmp/doprintf.c	Sun Nov 27 15:51:39 1988
X--- gnulib/doprintf.c	Sun Nov 27 00:22:42 1988
X***************
X*** 87,127 ****
X  
X  typedef enum { EFORMAT, FFORMAT, GFORMAT  } FORMAT_TYPE;
X  static void _flofmt();
X  extern char *itoa();
X  
X  static char *_cvt(buf, val, precision, fmt)
X  char *buf;
X  double val;
X  int precision;
X  FORMAT_TYPE fmt;
X  {
X      char mybuf[MAXWIDTH+1];
X      int  pow;
X      int  sign;
X! 
X      /* make val +ve record sign */
X      if(val < 0)
X      {
X  	sign = 1;
X  	val = -val;
X      }
X      else sign = 0;
X      
X!     /* convert val to 0.nnn form */
X      pow = 0;
X      while(val >= 1.0)
X      {
X  	val /= 10.0;
X  	pow++;
X      }
X  
X      if((precision + pow) > MAXWIDTH)
X  	precision -= ((precision + pow) - MAXWIDTH);
X      
X      _flofmt(mybuf, val, precision+pow);
X  
X      switch(fmt)
X      {
X        case EFORMAT:
X        efmt:
X          {
X--- 87,171 ----
X  
X  typedef enum { EFORMAT, FFORMAT, GFORMAT  } FORMAT_TYPE;
X  static void _flofmt();
X  extern char *itoa();
X  
X+ /*  #define KLUDGEDIV	no longer needed div  fixed 11/23/88 */
X  static char *_cvt(buf, val, precision, fmt)
X  char *buf;
X  double val;
X  int precision;
X  FORMAT_TYPE fmt;
X  {
X      char mybuf[MAXWIDTH+1];
X      int  pow;
X      int  sign;
X! #ifdef KLUDGEDIV
X!     long l;
X!     int i;
X! #endif
X!     
X! #ifdef DDD
X!     printf("_cvt called\n");
X! #endif
X      /* make val +ve record sign */
X      if(val < 0)
X      {
X  	sign = 1;
X  	val = -val;
X      }
X      else sign = 0;
X+ 
X+ #ifdef DDD
X+     printf("sign %d\n", sign);
X+ #endif
X      
X!     /* convert val to 0.nnn form -- record pow */
X      pow = 0;
X+ #ifdef KLUDGEDIV
X+     /* we are going to klude this until i can figure out what the heck */
X+     /* is wrong with _divdf3() in gnulib.c - it goes into an inf. loop */
X+     /* 11/23/88 -- this is fixed now, do *not* #define KLUDGEDIV       */
X+     l = val;
X+     while(l > 0)
X+     {
X+ 	l /= 10;
X+ 	pow++;
X+     }
X+     if((i = pow) > 0)
X+     {
X+ 	l = val;
X+ 	sprintf(mybuf, "%ld", l);
X+ 	val = val - l;
X+     }
X+     
X+ #else
X+     /* the real thing */
X      while(val >= 1.0)
X      {
X  	val /= 10.0;
X  	pow++;
X      }
X+ #endif /* KLUDGEDIV */
X  
X+ #ifdef DDD
X+     printf("pow %d  precision+pow %d\n", pow, precision+pow);
X+ #endif
X+ 
X      if((precision + pow) > MAXWIDTH)
X  	precision -= ((precision + pow) - MAXWIDTH);
X      
X+ #ifdef KLUDGEDIV
X+     _flofmt(&mybuf[i], val, precision);
X+ #else
X      _flofmt(mybuf, val, precision+pow);
X+ #endif
X  
X+ #ifdef DDD
X+     printf("back from flofmt mybuf :%s:\n", mybuf);
X+ #endif
X+ 
X      switch(fmt)
X      {
X        case EFORMAT:
X        efmt:
X          {
X***************
X*** 191,227 ****
X  static void  _flofmt(buf, val, precision)
X  char * buf;
X  double val;
X  int precision;
X  {
X!     int int_part;
X      int i, ndigits;
X-     int ten = 10;
X      char digit[MAXWIDTH+2];
X      
X      for (i = 0 ; i < MAXWIDTH ; i++)
X  	digit[i] = 0;
X      for (i = 0, ndigits = 0 ;
X  	 ((val > 0) && (ndigits < precision) && (i < MAXWIDTH)); i++) 
X      {
X! 	val = val * ten;
X  	int_part = val;
X  	val = val - int_part;
X  	digit[i] = int_part;
X  	/* kludge till we get doubles accurate... */
X  	if ((digit[i] > 9) || (digit[i] < 0))
X  	    digit[i] = 0;
X  	if (int_part > 0) ndigits = i + 1;
X      }
X      if(ndigits < precision)
X  	ndigits = precision;	/* we have already zero'ed the rest */
X      
X      if (ndigits > 0)		/* were there any? */
X      {
X  	for (i = 0 ; i < ndigits ; i++)
X  	{
X! 	    *buf++ = digit[i] + 48;
X  	}
X      }
X      *buf = '\0';
X  }
X  
X--- 235,284 ----
X  static void  _flofmt(buf, val, precision)
X  char * buf;
X  double val;
X  int precision;
X  {
X!     long int_part;
X      int i, ndigits;
X      char digit[MAXWIDTH+2];
X+ 
X+ #ifdef DDD
X+     printf("\t_flofmt\n");
X+ #endif
X      
X      for (i = 0 ; i < MAXWIDTH ; i++)
X  	digit[i] = 0;
X      for (i = 0, ndigits = 0 ;
X  	 ((val > 0) && (ndigits < precision) && (i < MAXWIDTH)); i++) 
X      {
X! 	val = val * 10.0;
X  	int_part = val;
X+ #ifdef DDD
X+     printf("\ti %d int_part %ld\n", i, int_part);
X+ #endif
X  	val = val - int_part;
X  	digit[i] = int_part;
X+ #ifdef DDD
X+     printf("\tdigit[i] %d\n", digit[i]);
X+ #endif
X  	/* kludge till we get doubles accurate... */
X+ 	/*  -- probably not  needed now */
X  	if ((digit[i] > 9) || (digit[i] < 0))
X  	    digit[i] = 0;
X  	if (int_part > 0) ndigits = i + 1;
X      }
X+ #ifdef DDD
X+     printf("\t_loop done ndigits %d  precision %d\n", ndigits, precision);
X+ #endif
X      if(ndigits < precision)
X  	ndigits = precision;	/* we have already zero'ed the rest */
X      
X      if (ndigits > 0)		/* were there any? */
X      {
X  	for (i = 0 ; i < ndigits ; i++)
X  	{
X! 	    *buf++ = digit[i] + '0';
X  	}
X      }
X      *buf = '\0';
X  }
X  
X***************
X*** 349,359 ****
X  #endif
X  #ifdef __GNUC__
X  			p = _itoa(p, (int)(GETARG(long)), c);
X  #else
X  			p = _itoa(p, GETARG(int), c);
X- 
X  #endif /* __GNUC__ */
X  			break;
X  		case 'D':
X  #ifndef NO_LONGD
X  			lflag++;
X--- 406,415 ----
X***************
X*** 421,431 ****
X  			if (ndfnd == 0)
X  				ndigit = 6;
X  			p = _gcvt(p, GETARG(double), ndigit);
X  			break;
X  #endif /* __GNUC__ */
X! #endif
X  		case 'c':
X  			zfill = ' ';
X  #ifdef __GNUC__
X  			*p++ = (int)(GETARG(long));
X  #else
X--- 477,488 ----
X  			if (ndfnd == 0)
X  				ndigit = 6;
X  			p = _gcvt(p, GETARG(double), ndigit);
X  			break;
X  #endif /* __GNUC__ */
X! #endif /* NO_FLOAT */
X! 
X  		case 'c':
X  			zfill = ' ';
X  #ifdef __GNUC__
X  			*p++ = (int)(GETARG(long));
X  #else
Xdiff -rc5 tmp/freopen.c gnulib/freopen.c
X*** tmp/freopen.c	Sun Nov 27 15:51:41 1988
X--- gnulib/freopen.c	Sun Nov 20 10:52:52 1988
X***************
X*** 20,30 ****
X    buffering method. ANSI C does not explicitly specify this.
X  */
X  
X  #include <stdio.h>
X  
X! #define  PMODE    0644
X  
X  FILE *freopen(name, mode,fp)
X  char *name , *mode;
X  FILE *fp;
X  {
X--- 20,30 ----
X    buffering method. ANSI C does not explicitly specify this.
X  */
X  
X  #include <stdio.h>
X  
X! #define  PMODE    0666
X  
X  FILE *freopen(name, mode,fp)
X  char *name , *mode;
X  FILE *fp;
X  {
X***************
X*** 36,46 ****
X  			break;
X  		}
X  	if (i >= NFILES)
X  		return((FILE *)EOF);
X  	flags = fp->_flags;
X! 	flags = flags & !WRITEMODE & !READMODE;
X  	fflush(fp);
X  	close(fp->_fd);
X  
X  	switch(*mode){
X  
X--- 36,47 ----
X  			break;
X  		}
X  	if (i >= NFILES)
X  		return((FILE *)EOF);
X  	flags = fp->_flags;
X! 	flags &= ~(WRITEMODE | READMODE);
X! /*	flags = flags & !WRITEMODE & !READMODE; */
X  	fflush(fp);
X  	close(fp->_fd);
X  
X  	switch(*mode){
X  
X***************
X*** 50,61 ****
X  			return((FILE *)NULL);
X  		break;
X  
X  	case 'a': 
X  		flags |= WRITEMODE;
X! 		if (( fd = open(name,1)) < 0 )
X! 			return((FILE *)NULL);
X  		lseek(fd,0L,2);
X  		break;         
X  
X  	case 'r':
X  		flags |= READMODE;	
X--- 51,63 ----
X  			return((FILE *)NULL);
X  		break;
X  
X  	case 'a': 
X  		flags |= WRITEMODE;
X! 		if ((fd = open(name, 1)) < 0 && (fd = creat(name, PMODE)) < 0)
X! 			return ((FILE *) NULL);
X! 
X  		lseek(fd,0L,2);
X  		break;         
X  
X  	case 'r':
X  		flags |= READMODE;	
Xdiff -rc5 tmp/itoa.c gnulib/itoa.c
X*** tmp/itoa.c	Sun Nov 27 15:51:42 1988
X--- gnulib/itoa.c	Sun Nov 27 00:12:14 1988
X***************
X*** 21,36 ****
X    /* bug fix - did'nt handle -32768 correctly
X     *	 ++jrb bammi@dsrgsun.ces.cwru.edu
X     */
X  #ifdef __GNUC__
X  #ifdef __MSHORT__
X!   if(n == -32768) {
X        strcpy(qbuf, "-32768");
X        return qbuf;
X    }
X  #else
X!   if(n == -2147483648L) {
X        strcpy(qbuf, "-2147483648");
X        return qbuf;
X    }
X  #endif
X  #else
X--- 21,39 ----
X    /* bug fix - did'nt handle -32768 correctly
X     *	 ++jrb bammi@dsrgsun.ces.cwru.edu
X     */
X  #ifdef __GNUC__
X  #ifdef __MSHORT__
X!   if(n == -32768) {	/* ACK C Users WATCH OUT, ITS BRAINDAMAGED, and the
X! 			   explaination forthcoming for this on the net
X! 			   from the people at V..U was even worse ,
X! 			   Gnu C does this correctly */
X        strcpy(qbuf, "-32768");
X        return qbuf;
X    }
X  #else
X!   if(n == -2147483648L) {	/* ACK C barfs here */
X        strcpy(qbuf, "-2147483648");
X        return qbuf;
X    }
X  #endif
X  #else
X***************
X*** 46,56 ****
X--- 49,68 ----
X  	n = -n;
X    }
X    if (n == 0) {
X  	qbuf[next++] = '0';
X    } else {
X+ 
X+ #ifdef __GNUC__
X+ #ifdef __MSHORT__
X  	k = 10000;
X+ #else
X+ 	k = 1000000000;
X+ #endif
X+ #else
X+ 	k = 10000;
X+ #endif
X  	while (k > 0) {
X  		r = n/k;
X  		if (flag || r > 0) {
X  			qbuf[next++] = '0' + r;
X  			flag = 1;
Xdiff -rc5 tmp/printk.c gnulib/printk.c
X*** tmp/printk.c	Sun Nov 27 15:51:45 1988
X--- gnulib/printk.c	Sun Nov 27 00:06:08 1988
X***************
X*** 121,131 ****
X  			else if (c == '*')
X  #ifdef __GNUC__
X  				{ c = (int)(GETARG(long)); }
X  #else
X  				c = GETARG(int);
X! #endif /* __GNUC__ */
X  			else
X  				break;
X  			width *= 10;
X  			width += c;
X  		}
X--- 121,131 ----
X  			else if (c == '*')
X  #ifdef __GNUC__
X  				{ c = (int)(GETARG(long)); }
X  #else
X  				c = GETARG(int);
X! #endif
X  			else
X  				break;
X  			width *= 10;
X  			width += c;
X  		}
X***************
X*** 137,149 ****
X  				if (c >= '0' && c <= '9')
X  					c -= '0';
X  				else if (c == '*')
X  #ifdef __GNUC__
X  					{ c = (int)(GETARG(long)); }
X  #else
X  					c = GETARG(int);
X! #endif /* __GNUC__ */
X  				else
X  					break;
X  				ndigit *= 10;
X  				ndigit += c;
X  				ndfnd++;
X--- 137,150 ----
X  				if (c >= '0' && c <= '9')
X  					c -= '0';
X  				else if (c == '*')
X  #ifdef __GNUC__
X  					{ c = (int)(GETARG(long)); }
X+ 				
X  #else
X  					c = GETARG(int);
X! #endif
X  				else
X  					break;
X  				ndigit *= 10;
X  				ndigit += c;
X  				ndfnd++;
X***************
X*** 189,200 ****
X  #endif
X  #ifdef __GNUC__
X  			p = _itoa(p, (int)(GETARG(long)), c);
X  #else
X  			p = _itoa(p, GETARG(int), c);
X! 
X! #endif /* __GNUC__ */
X  			break;
X  		case 'D':
X  #ifndef NO_LONGD
X  			lflag++;
X  #endif
X--- 190,200 ----
X  #endif
X  #ifdef __GNUC__
X  			p = _itoa(p, (int)(GETARG(long)), c);
X  #else
X  			p = _itoa(p, GETARG(int), c);
X! #endif
X  			break;
X  		case 'D':
X  #ifndef NO_LONGD
X  			lflag++;
X  #endif
X***************
X*** 211,221 ****
X  #endif
X  #ifdef __GNUC__
X  			if ((i = (int)(GETARG(long))) < 0) {
X  #else
X  			if ((i = GETARG(int)) < 0) {
X! #endif /* __GNUC__ */
X  				*p++ = '-';
X  				i = -i;
X  			}
X  			p = _itoa(p, i, 10);
X  			break;
X--- 211,221 ----
X  #endif
X  #ifdef __GNUC__
X  			if ((i = (int)(GETARG(long))) < 0) {
X  #else
X  			if ((i = GETARG(int)) < 0) {
X! #endif
X  				*p++ = '-';
X  				i = -i;
X  			}
X  			p = _itoa(p, i, 10);
X  			break;
X***************
X*** 248,258 ****
X  			zfill = ' ';
X  #ifdef __GNUC__
X  			*p++ = (int)(GETARG(long));
X  #else
X  			*p++ = GETARG(int);
X! #endif /* __GNUC__ */
X  			break;
X  		case 's':
X  			zfill = ' ';
X  			if ((s = GETARG(char *)) == 0)
X  				s = "(null)";
X--- 248,258 ----
X  			zfill = ' ';
X  #ifdef __GNUC__
X  			*p++ = (int)(GETARG(long));
X  #else
X  			*p++ = GETARG(int);
X! #endif
X  			break;
X  		case 's':
X  			zfill = ' ';
X  			if ((s = GETARG(char *)) == 0)
X  				s = "(null)";
Xdiff -rc5 tmp/prints.c gnulib/prints.c
X*** tmp/prints.c	Sun Nov 27 15:51:45 1988
X--- gnulib/prints.c	Sat Nov 26 23:59:26 1988
X***************
X*** 3,38 ****
X   * advantage of not requiring the runtime code for converting binary numbers
X   * to ASCII, which saves 1K bytes in the object program.  Since many of the
X   * small utilities do not need numeric printing, they all use prints.
X   */
X  
X  static put();
X  
X  #define TRUNC_SIZE 128
X! char Buf[TRUNC_SIZE], *Bufp;
X  
X  #define OUT 1
X  
X  prints(s, arglist)
X  register char *s;
X! int *arglist;
X  {
X    register w;
X- #ifdef __GNUC__
X    int k, r;
X!   long  *valp;
X! #else
X!   int k, r, *valp;
X! #endif /* __GNUC__ */
X    char *p, *p1, c;
X  
X    Bufp = Buf;
X! #ifdef __GNUC__
X!   valp = (long *)  &arglist;
X! #else
X!   valp = (int *)  &arglist;
X! #endif /* __GNUC__ */
X    while (*s != '\0') {
X  	if (*s !=  '%') {
X  		put(*s++);
X  		continue;
X  	}
X--- 3,35 ----
X   * advantage of not requiring the runtime code for converting binary numbers
X   * to ASCII, which saves 1K bytes in the object program.  Since many of the
X   * small utilities do not need numeric printing, they all use prints.
X   */
X  
X+ /* Cleanup  ++jrb   bammi@dsrgsun.ces.cwru.edu */
X+ 
X+ #define	GETARG(typ)	*((typ *)valp)++
X+ 
X  static put();
X  
X  #define TRUNC_SIZE 128
X! static char Buf[TRUNC_SIZE], *Bufp;
X  
X  #define OUT 1
X  
X  prints(s, arglist)
X  register char *s;
X! char *arglist;
X  {
X    register w;
X    int k, r;
X!   char *valp;
X    char *p, *p1, c;
X  
X    Bufp = Buf;
X!   valp = (char *)  &arglist;
X! 
X    while (*s != '\0') {
X  	if (*s !=  '%') {
X  		put(*s++);
X  		continue;
X  	}
X***************
X*** 44,56 ****
X  		s++;
X  	}
X  
X  
X  	switch(*s) {
X! 	    case 'c':	k = *valp++; put(k); s++; continue;
X! 	    case 's':	p = *((char **)valp);
X! 			valp += sizeof(char *) / sizeof(int);
X  			p1 = p;
X  			while(c = *p++) put(c); s++;
X  			if ( (k = w - ((int)(p-p1)-1)) > 0) while (k--) put(' ');
X  			continue;
X  	    default:	put('%'); put(*s++); continue;
X--- 41,63 ----
X  		s++;
X  	}
X  
X  
X  	switch(*s) {
X! /* 	    case 'c':	k = *valp++; put(k); s++; continue; */
X! #ifdef __GNUC__
X!  	    case 'c':	k = (int)(GETARG(long)); put(k); s++; continue;
X! #else
X!  	    case 'c':	k = GETARG(int); put(k); s++; continue;
X! #endif /* __GNUC__ */
X! 
X! 	    case 's':
X! /*	      		p = *((char **)valp); */
X! /*			valp += sizeof(char *) / sizeof(int); */
X! 
X! 	      		p = (GETARG(char *));
X! 
X  			p1 = p;
X  			while(c = *p++) put(c); s++;
X  			if ( (k = w - ((int)(p-p1)-1)) > 0) while (k--) put(' ');
X  			continue;
X  	    default:	put('%'); put(*s++); continue;
Xdiff -rc5 tmp/rand.c gnulib/rand.c
X*** tmp/rand.c	Sun Nov 27 15:50:30 1988
X--- gnulib/rand.c	Sun Nov 27 03:15:57 1988
X***************
X*** 3,7 ****
X--- 3,13 ----
X  int rand()
X  {
X    seed = (1103515245L * seed + 12345) & 0x7FFFFFFF;
X    return((int) (seed & 077777));
X  }
X+ 
X+ int srand(val)
X+ long val;	
X+ {
X+ 	seed = val;
X+ }
Xdiff -rc5 tmp/stcrtso.cpp gnulib/stcrtso.cpp
X*** tmp/stcrtso.cpp	Sun Nov 27 15:51:17 1988
X--- gnulib/stcrtso.cpp	Sun Nov 27 00:29:28 1988
X***************
X*** 46,56 ****
X  #else
X  	movw	d0,sp@-	| push argc
X  #endif
X  	jsr	_main
X  #ifdef __GNUC__
X! 	addl	#14,sp
X  #else
X  	addl	#10,sp
X  #endif
X  #ifdef ACK
X  EXIT:
X--- 46,56 ----
X  #else
X  	movw	d0,sp@-	| push argc
X  #endif
X  	jsr	_main
X  #ifdef __GNUC__
X! 	addl	#12,sp
X  #else
X  	addl	#10,sp
X  #endif
X  #ifdef ACK
X  EXIT:
SHAR_EOF
if test 22499 -ne "`wc -c 'lib-update1.diff'`"
then
	echo shar: error transmitting "'lib-update1.diff'" '(should have been 22499 characters)'
fi
#	End of shell archive
exit 0
usenet: {decvax,sun}!cwjcc!dsrgsun!bammi	jwahar r. bammi
csnet:       bammi@dsrgsun.ces.CWRU.edu
arpa:        bammi@dsrgsun.ces.CWRU.edu
compuServe:  71515,155