🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: alt.sources.patches
1 messages
1 total messages Started by Simon J. Gerraty Thu, 25 Apr 1991 08:22
PD KSH 3.2 alpha - update-2/2
#27
Author: Simon J. Gerraty
Date: Thu, 25 Apr 1991 08:22
755 lines
21012 bytes
#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of shell archive."
# Contents:  src/ChangeLog stdc/ChangeLog sun386i.diffs bugs.diffs
# Wrapped by sjg@zen on Thu Apr 25 18:06:47 1991
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f src/ChangeLog -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"src/ChangeLog\"
else
echo shar: Extracting \"src/ChangeLog\" \(2179 characters\)
sed "s/^X//" >src/ChangeLog <<'END_OF_src/ChangeLog'
XThu Apr 25 14:30:21 1991  Simon J. Gerraty  (sjg at zen.void.oz.au)
X
X	* x_prev_histword(edit.c):
X
X	Now ignores white-space at start and end of line when counting
X	words. 
X
X	* x_fold_case(edit.c):
X
X	This function implements M-[ulc] for upper/lower casing and
X	capitalizing words in place prefix with M-"digit" to handle
X	multiple words.
X
X	* x_delete(edit.c):
X
X	Now does an x_push whenever called to delete more than
X	one char.  This allows delete-word followed by yank.
X
XWed Apr 24 14:29:51 1991  Simon J. Gerraty  (sjg at zen.void.oz.au)
X
X	* x_delete(edit.c):
X
X	Similar problem to x_ins.  Also it made the assumption that the
X	entire edit line would be on-screen.  This is now fixed.  edit.c
X	could probably stand a re-write at this point :-)
X
X	* x_ins(edit.c):
X
X	x_adjust was being called in the middle of x_ins with xcp not set
X	correctly.  Now avoids x_adjust if possible, and ensures xcp is
X	correct.  
X
XSat Apr 20 16:30:16 1991  Simon J. Gerraty  (sjg at zen.void.oz.au)
X
X	* edit.c:
X
X	The "improved" isfs() macro had broken the file/command
X	completeion code.  The original marco is re-instated as ISFS() and
X	all is well!
X
XFri Mar 22 16:50:14 1991  Simon J. Gerraty  (sjg at sun0.melb.bull.oz.au)
X
X	* edit.c:
X
X	Added x_set_arg() and x_prev_histword().
X	x_set_arg() handles 'ESC''0-9' type args which are used by word
X	related commands.
X	x_prev_histword() recovers the last (default) or sepcified arg
X	word from the previous command line.  Bound to ESC. and ESC_ to be
X	compatible with real ksh.
X
XTue Feb 26 14:16:17 1991 Simon J. Gerraty  (sjg at zen.void.oz.au)
X
X	* edit.c:
X
X	Changes to handle editing of command lines longer than $COLUMNS in
X	a manner compatible with real ksh.
X
XMon Feb 25 12:20:36 1991 Simon J. Gerraty  (sjg at sun0.melb.bull.oz.au)
X
X	* var.c,table.h:
X
X	Implemented $RANDOM
X	Some scripts use [ "$RANDOM" != "$RANDOM" ] to check for ksh. 
X
XWed Feb 20 12:20:36 1991 Simon J. Gerraty  (sjg at sun0.melb.bull.oz.au)
X
X	Changes so that shell will compile on sun386i.
X
X	* exec.c,main.c,io.c:
X
X	Handle the case where FD_CLEXEC isn't defined.
X
X	* jobs.c:
X
X	SunOS has its own ideas about job status etc.
X
X	* tree.c:
X
X	Fixed conflict between varargs and stdarg.
X
END_OF_src/ChangeLog
if test 2179 -ne `wc -c <src/ChangeLog`; then
    echo shar: \"src/ChangeLog\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f stdc/ChangeLog -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"stdc/ChangeLog\"
else
echo shar: Extracting \"stdc/ChangeLog\" \(304 characters\)
sed "s/^X//" >stdc/ChangeLog <<'END_OF_stdc/ChangeLog'
XThu Feb 21 13:55:57 1991 Simon J. Gerraty  (sjg at sun0.melb.bull.oz.au)
X
X	* vprintf.c:
X
X	Fixed bug in vfprintf() that casued output to be paded with SPACEs
X	when '0' was requested - caused ksh's temp files to contain
X	spaces!
X
X
X	* stdio.h_std:
X
X	Fixed args for vprintf family so that gcc wouldn't puke.
END_OF_stdc/ChangeLog
if test 304 -ne `wc -c <stdc/ChangeLog`; then
    echo shar: \"stdc/ChangeLog\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f sun386i.diffs -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"sun386i.diffs\"
else
echo shar: Extracting \"sun386i.diffs\" \(11418 characters\)
sed "s/^X//" >sun386i.diffs <<'END_OF_sun386i.diffs'
XPD KSH 3.2 alpha patches [sun386i.diffs]
X
XThe patches contained below were found necessary to build the 
XPD KSH (posted to alt.sources in Dec 90) using gcc-1.39 on a
Xsun386i users of other systems can probably ignore them.
X
XThese patches can be installed using the following command
Xin the top level directory of the pdksh source tree:
X
Xpatch -p0 <this-article
X
X*** /tmp/pdksh/stdc/stddef.h	Thu Apr 25 15:05:45 1991
X--- ./stdc/stddef.h	Wed Feb 20 14:32:45 1991
X***************
X*** 24,35 ****
X  #define	Const
X  #endif
X  
X! typedef unsigned size_t;		/* may need long */
X! typedef int ptrdiff_t;
X  
X  #define	offsetof(type,id) ((size_t)&((type*)NULL)->id)
X  
X  extern	int errno;		/* really belongs in <errno.h> */
X- 
X  #endif
X  
X--- 24,37 ----
X  #define	Const
X  #endif
X  
X! #ifndef _SIZE_T
X! # define _SIZE_T
X! typedef unsigned long size_t;		/* may need long */
X! typedef long ptrdiff_t;
X! #endif /* _SIZE_T */
X  
X  #define	offsetof(type,id) ((size_t)&((type*)NULL)->id)
X  
X  extern	int errno;		/* really belongs in <errno.h> */
X  #endif
X  
X*** /tmp/pdksh/stdc/setvbuf.c	Thu Apr 25 15:05:52 1991
X--- ./stdc/setvbuf.c	Wed Feb 20 13:24:05 1991
X***************
X*** 15,21 ****
X--- 15,25 ----
X  int
X  setvbuf(f, buf, type, size)
X  	register FILE *f;
X+ #ifdef sun
X+   	unsigned char *buf;
X+ #else
X  	char *buf;
X+ #endif
X  	int type;
X  	size_t size;
X  {
X*** /tmp/pdksh/stdc/stdio.h_std	Thu Apr 25 15:05:48 1991
X--- stdc/stdio.h_std	Thu Feb 21 13:35:24 1991
X***************
X*** 54,62 ****
X--- 54,69 ----
X  _EXTERN	int	fprintf ARGS((FILE *f, const char *fmt, ...));
X  _EXTERN	int	sprintf ARGS((char *s, const char *fmt, ...));
X  /* we do not include <stdarg.h> to prevent <varargs.h> conflicts */
X+ #ifdef __STDC__
X+ # include <stdarg.h>
X+ _EXTERN	int	vprintf ARGS((const char *fmt, va_list va));
X+ _EXTERN	int	vfprintf ARGS((FILE *f, const char *fmt, va_list va));
X+ _EXTERN	int	vsprintf ARGS((char *s, const char *fmt, va_list va));
X+ #else
X  _EXTERN	int	vprintf ARGS((const char *fmt, Void *va));
X  _EXTERN	int	vfprintf ARGS((FILE *f, const char *fmt, Void *va));
X  _EXTERN	int	vsprintf ARGS((char *s, const char *fmt, Void *va));
X+ #endif
X  _EXTERN	int	scanf ARGS((const char *fmt, ...));
X  _EXTERN	int	fscanf ARGS((FILE *f, const char *fmt, ...));
X  _EXTERN	int	sscanf ARGS((const char *s, const char *fmt, ...));
X*** /tmp/pdksh/stdc/Makefile	Thu Apr 25 15:05:44 1991
X--- stdc/Makefile	Thu Feb 28 10:04:38 1991
X***************
X*** 4,14 ****
X  # $Header: Makefile,v 1.1 88/03/29 18:28:38 egisin Locked $
X  
X  SYSTEM=BSD
X! CC = gcc -ansi -O -W 
X  LN = ln
X  PRINT = lpr -p -Plp26_3018
X  
X! CFLAGS = -I../h -D_$(SYSTEM)
X  
X  MISC =	Makefile stdio.h_std
X  HDRS =	limits.h stddef.h stdlib.h string.h time.h stdarg.h 
X--- 4,14 ----
X  # $Header: Makefile,v 1.1 88/03/29 18:28:38 egisin Locked $
X  
X  SYSTEM=BSD
X! CC = gcc -ansi -W 
X  LN = ln
X  PRINT = lpr -p -Plp26_3018
X  
X! CFLAGS = -I../h -D_$(SYSTEM) $(DBG)
X  
X  MISC =	Makefile stdio.h_std
X  HDRS =	limits.h stddef.h stdlib.h string.h time.h stdarg.h 
X*** /tmp/pdksh/posix/times.c	Thu Apr 25 15:05:39 1991
X--- ./posix/times.c	Wed Feb 20 14:01:32 1991
X***************
X*** 1,5 ****
X  /* P1003.1 times emulation */
X! 
X  #include <sys/times.h>
X  
X  #if _BSD
X--- 1,5 ----
X  /* P1003.1 times emulation */
X! #include <sys/types.h>
X  #include <sys/times.h>
X  
X  #if _BSD
X*** /tmp/pdksh/posix/Makefile	Thu Apr 25 15:05:34 1991
X--- posix/Makefile	Thu Feb 28 10:05:07 1991
X***************
X*** 4,14 ****
X  # $Header: Makefile,v 1.1 88/03/29 18:28:38 egisin Locked $
X  
X  SYSTEM=BSD
X! CC = gcc -ansi -O -W 
X  LN = ln
X  PRINT = lpr -p -Plp26_3018
X  
X! CFLAGS = -I../h -D_$(SYSTEM) 
X  
X  MISC =	Makefile 
X  HDRS =	wait.h times.h unistd.h fcntl.h dirent.h 
X--- 4,14 ----
X  # $Header: Makefile,v 1.1 88/03/29 18:28:38 egisin Locked $
X  
X  SYSTEM=BSD
X! CC = gcc -ansi -W 
X  LN = ln
X  PRINT = lpr -p -Plp26_3018
X  
X! CFLAGS = -I../h -D_$(SYSTEM) $(DBG)
X  
X  MISC =	Makefile 
X  HDRS =	wait.h times.h unistd.h fcntl.h dirent.h 
X*** /tmp/pdksh/src/main.c	Thu Apr 25 15:05:09 1991
X--- ./src/main.c	Wed Feb 20 14:08:28 1991
X***************
X*** 166,172 ****
X--- 166,174 ----
X  	}
X  	if (s->type == STTY) {
X  		ttyfd = fcntl(0, F_DUPFD, FDBASE);
X+ #ifdef FD_CLEXEC
X  		(void) fcntl(ttyfd, F_SETFD, FD_CLEXEC);
X+ #endif
X  #if EDIT
X  		x_init();
X  #endif
X*** /tmp/pdksh/src/io.c	Thu Apr 25 15:05:12 1991
X--- ./src/io.c	Thu Feb 21 10:33:07 1991
X***************
X*** 135,141 ****
X--- 135,143 ----
X  				return -1;
X  			else
X  				errorf("too many files open in shell\n");
X+ #ifdef FD_CLEXEC
X  		(void) fcntl(nfd, F_SETFD, FD_CLEXEC);
X+ #endif
X  		close(fd);
X  	} else
X  		nfd = fd;
X*** /tmp/pdksh/src/exec.c	Thu Apr 25 15:05:21 1991
X--- ./src/exec.c	Wed Feb 20 14:21:37 1991
X***************
X*** 174,180 ****
X  	  case TEXEC:		/* an eval'd TCOM */
X  		s = t->args[0];
X  		ap = makenv();
X! #if _MINIX				/* no F_SETFD close-on-exec */
X  		for (i = 10; i < 20; i++)
X  			close(i);
X  #endif
X--- 174,181 ----
X  	  case TEXEC:		/* an eval'd TCOM */
X  		s = t->args[0];
X  		ap = makenv();
X! /* #if _MINIX	*/			/* no F_SETFD close-on-exec */
X! #ifndef FD_CLEXEC
X  		for (i = 10; i < 20; i++)
X  			close(i);
X  #endif
X***************
X*** 324,330 ****
X  	struct op *t;
X  {
X  	register struct block *l;
X! 	register struct tbl *tp;
X  
X  	for (l = e.loc; l != NULL; l = l->next) {
X  		lastarea = &l->area;
X--- 325,331 ----
X  	struct op *t;
X  {
X  	register struct block *l;
X! 	register struct tbl *tp = NULL;
X  
X  	for (l = e.loc; l != NULL; l = l->next) {
X  		lastarea = &l->area;
X***************
X*** 337,353 ****
X  			tp->type = CFUNC;
X  		}
X  	}
X! 
X! 	if ((tp->flag&ALLOC))
X  		tfree(tp->val.t, lastarea);
X! 	tp->flag &= ~(ISSET|ALLOC);
X  
X! 	if (t == NULL)		/* undefine */
X  		return 0;
X  
X! 	tp->val.t = tcopy(t, lastarea);
X! 	tp->flag |= (ISSET|ALLOC);
X! 
X  	return 0;
X  }
X  
X--- 338,355 ----
X  			tp->type = CFUNC;
X  		}
X  	}
X! 	if (tp)
X! 	{
X! 	  if ((tp->flag&ALLOC))
X  		tfree(tp->val.t, lastarea);
X! 	  tp->flag &= ~(ISSET|ALLOC);
X  
X! 	  if (t == NULL)		/* undefine */
X  		return 0;
X  
X! 	  tp->val.t = tcopy(t, lastarea);
X! 	  tp->flag |= (ISSET|ALLOC);
X! 	}
X  	return 0;
X  }
X  
X*** /tmp/pdksh/src/jobs.c	Thu Apr 25 15:05:23 1991
X--- ./src/jobs.c	Thu Feb 21 10:53:10 1991
X***************
X*** 38,45 ****
X  #include "sh.h"
X  #include "tree.h"
X  
X  #ifndef WIFCORED
X! #define	WIFCORED(x)	(!!((x)&0x80)) /* non-standard */
X  #endif
X  
X  /* as of P1003.1 Draft 12.3:
X--- 38,54 ----
X  #include "sh.h"
X  #include "tree.h"
X  
X+ #ifdef sun
X+ # define WTERMSIG(x)	(x.w_termsig)
X+ # define WIFCORED(x)	(x.w_coredump)
X+ # define WEXITSTATUS(x)	(x.w_retcode)
X+ # define WSTOPVAL(x)	(x.w_stopval)
X+ # define WSTOPSIG(x)	(x.w_stopsig)
X+ # define waitpid(pid, sp, opts) wait3((sp), (opts), (Void*)NULL)
X+ #endif
X+ 
X  #ifndef WIFCORED
X! # define	WIFCORED(x)	(!!((x)&0x80)) /* non-standard */
X  #endif
X  
X  /* as of P1003.1 Draft 12.3:
X***************
X*** 62,82 ****
X  #ifndef	SIGCHLD
X  #define	SIGCHLD	SIGCLD
X  #endif
X! 
X! typedef struct Proc Proc;
X! struct Proc {
X! 	Proc   *next;		/* `procs' list link */
X  	int	job;		/* job number: %n */
X  	short	Volatile state;	/* proc state */
X  	short	Volatile notify; /* proc state has changed */
X! 	Proc   *prev;		/* prev member of pipeline */
X  	pid_t	proc;		/* process id */
X  	pid_t	pgrp;		/* process group if flag[FMONITOR] */
X  	short	flags;		/* execute flags */
X  	int	status;		/* wait status */
X  	clock_t	utime, stime;	/* user/system time when JDONE */
X  	char	com [48];	/* command */
X! };
X  
X  /* proc states */
X  #define	JFREE	0		/* unused proc */
X--- 71,97 ----
X  #ifndef	SIGCHLD
X  #define	SIGCHLD	SIGCLD
X  #endif
X! #ifdef sun
X! typedef int pid_t;
X! #endif
X! /* typedef struct Proc Proc; */
X! typedef struct Proc {
X! 	struct Proc   *next;		/* `procs' list link */
X  	int	job;		/* job number: %n */
X  	short	Volatile state;	/* proc state */
X  	short	Volatile notify; /* proc state has changed */
X! 	struct Proc   *prev;		/* prev member of pipeline */
X  	pid_t	proc;		/* process id */
X  	pid_t	pgrp;		/* process group if flag[FMONITOR] */
X  	short	flags;		/* execute flags */
X+ #ifdef sun
X+ 	union wait status;
X+ #else
X  	int	status;		/* wait status */
X+ #endif
X  	clock_t	utime, stime;	/* user/system time when JDONE */
X  	char	com [48];	/* command */
X! } Proc;
X  
X  /* proc states */
X  #define	JFREE	0		/* unused proc */
X***************
X*** 386,392 ****
X--- 401,412 ----
X  	(void) times(&t0);
X  	do {
X  		register Proc *j;
X+ #ifdef sun
X+ 		union wait status;
X+ 		int pid;
X+ #else
X  		int pid, status;
X+ #endif /* sun */
X  #if JOBS
X  		if (flag[FMONITOR])
X  			pid = waitpid(-1, &status, (WNOHANG|WUNTRACED));
X*** /tmp/pdksh/src/c_sh.c	Thu Apr 25 15:05:24 1991
X--- ./src/c_sh.c	Mon Feb 25 22:44:14 1991
X***************
X*** 10,15 ****
X--- 10,16 ----
X  #include <errno.h>
X  #include <signal.h>
X  #include <setjmp.h>
X+ #include <sys/types.h>
X  #include <sys/times.h>
X  #include <unistd.h>		/* getcwd */
X  #include "sh.h"
X***************
X*** 31,36 ****
X--- 32,38 ----
X  c_cd(wp)
X  	register char **wp;
X  {
X+   extern char *getcwd ARGS((char *buf, size_t size));
X  	char path [PATH];
X  	register char *cp;
X  	register struct tbl *vp;
X***************
X*** 291,300 ****
X  {
X  	register char *cp;
X  
X  	e.oenv = NULL;
X  	if ((cp = wp[1]) != NULL)
X  		exstat = getn(cp);
X! #if JOBS
X  	if (flag[FMONITOR] && j_stopped()) /* todo: only once */
X  		errorf("There are stopped jobs\n");
X  #endif
X--- 293,313 ----
X  {
X  	register char *cp;
X  
X+ #if defined(JOBS) && defined(sun)
X+ 	static int extry = 0;
X+ 	
X+ 	if (extry == 0 && flag[FMONITOR] && j_stopped()) /* todo: only once */
X+ 	{
X+ 	  errorf("There are stopped jobs\n");
X+ 	  extry++;
X+ 	  return 1;
X+ 	}
X+ #endif
X  	e.oenv = NULL;
X  	if ((cp = wp[1]) != NULL)
X  		exstat = getn(cp);
X! 
X! #if defined(JOBS) && !defined(sun)
X  	if (flag[FMONITOR] && j_stopped()) /* todo: only once */
X  		errorf("There are stopped jobs\n");
X  #endif
X*** /tmp/pdksh/src/c_test.c	Thu Apr 25 15:05:26 1991
X--- ./src/c_test.c	Thu Feb 21 10:31:34 1991
X***************
X*** 247,252 ****
X--- 247,253 ----
X  		}
X  	}
X  	syntax();
X+ 	return 0;
X  }
X  
X  filstat(nm, mode)
X*** /tmp/pdksh/src/Makefile	Thu Apr 25 15:04:58 1991
X--- src/Makefile	Thu Feb 28 10:06:00 1991
X***************
X*** 2,13 ****
X  
X  # $Header: /tmp/egisin/src/RCS/Makefile,v 3.2 88/11/06 11:34:12 egisin Exp $
X  
X! BIN = /u/egisin/bin
X! STD = ../std
X! PRINT = lpr -p -Plp26_3018
X  
X! # CC = cc
X! CC = gcc 
X  
X  # Must define one of _V7, _SYSV, _BSD, _POSIX
X  # may define any of JOBS (have BSD or POSIX job control),
X--- 2,13 ----
X  
X  # $Header: /tmp/egisin/src/RCS/Makefile,v 3.2 88/11/06 11:34:12 egisin Exp $
X  
X! BIN = /local/bin
X! STD = ../stdc
X! PRINT = lpr #-p -Plp26_3018
X  
X! #CC = cc
X! CC = gcc -Di386 -Dsun -Dsun386
X  
X  # Must define one of _V7, _SYSV, _BSD, _POSIX
X  # may define any of JOBS (have BSD or POSIX job control),
X***************
X*** 15,23 ****
X  
X  OPTIONS = -D_BSD -DJOBS -DEDIT 
X  
X! CFWARN = -ansi -O -W -Wcomment # -Wreturn-type
X! CFLAGS = $(CFWARN) -I$(STD)/h $(OPTIONS) $(JUNK) 
X! LDFLAGS = -L$(STD) $(JUNK) 
X  LDLIBS = -lstdc -lposix			# compatability libraries
X  
X  HDRS =	sh.h table.h expand.h lex.h tree.h tty.h
X--- 15,25 ----
X  
X  OPTIONS = -D_BSD -DJOBS -DEDIT 
X  
X! CFWARN = -ansi -W -Wcomment # -Wreturn-type
X! #CFWARN=
X! #CFLAGS = $(CFWARN) $(OPTIONS) $(DBG) 
X! CFLAGS = $(CFWARN) -I../h $(OPTIONS) $(DBG) 
X! LDFLAGS = -L$(STD) -L../posix $(DBG) 
X  LDLIBS = -lstdc -lposix			# compatability libraries
X  
X  HDRS =	sh.h table.h expand.h lex.h tree.h tty.h
END_OF_sun386i.diffs
if test 11418 -ne `wc -c <sun386i.diffs`; then
    echo shar: \"sun386i.diffs\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f bugs.diffs -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"bugs.diffs\"
else
echo shar: Extracting \"bugs.diffs\" \(3004 characters\)
sed "s/^X//" >bugs.diffs <<'END_OF_bugs.diffs'
XPD KSH 3.2 alpha patches [bugs.diffs]
X
XThe patches below fix a bug in vprintf.c as well as implementing
X$RANDOM.  
X
XThese patches can be installed using the following command
Xin the top level directory of the pdksh source tree:
X
Xpatch -p0 <this-article
X
X*** /tmp/pdksh/stdc/vprintf.c	Thu Apr 25 15:05:45 1991
X--- ./stdc/vprintf.c	Thu Feb 21 13:55:57 1991
X***************
X*** 166,175 ****
X  			while (--prec >= 0)
X  				*--p = '0';
X  			if (flags&FF_NEG)
X! 				*--p = '-';
X  			else
X! 				if (sign != '-')
X! 					*--p = (sign == '+') ? '+' : ' ';
X  			flags |= FF_PUTS;
X  			break;
X  
X--- 166,175 ----
X  			while (--prec >= 0)
X  				*--p = '0';
X  			if (flags&FF_NEG)
X! 			  *--p = '-';
X  			else
X! 			  if (sign != '-')
X! 			    *--p = (sign == '+') ? '+' : ' ';
X  			flags |= FF_PUTS;
X  			break;
X  
X***************
X*** 218,224 ****
X  			int pad = width - len;
X  			if (!(flags&FF_LEFT))
X  				while (--pad >= 0)
X! 					putc(' ', f);
X  			while (*p)
X  				putc(*p++, f);
X  			if ((flags&FF_LEFT))
X--- 218,224 ----
X  			int pad = width - len;
X  			if (!(flags&FF_LEFT))
X  				while (--pad >= 0)
X! 					putc((flags&FF_ZERO) ? '0' : ' ', f);
X  			while (*p)
X  				putc(*p++, f);
X  			if ((flags&FF_LEFT))
X*** /tmp/pdksh/src/table.h	Thu Apr 25 15:05:00 1991
X--- ./src/table.h	Mon Feb 25 22:44:14 1991
X***************
X*** 87,92 ****
X--- 87,93 ----
X  #define	V_IFS	2
X  #define	V_SECONDS 3
X  #define	V_OPTIND 4
X+ #define	V_RANDOM 5
X  
X  Extern	Area   *lastarea;	/* area of last variable/function looked up */
X  Extern	char   *path;		/* PATH value */
X*** /tmp/pdksh/src/var.c	Thu Apr 25 15:05:29 1991
X--- ./src/var.c	Mon Feb 25 22:44:14 1991
X***************
X*** 490,495 ****
X--- 490,497 ----
X  		return V_SECONDS;
X  	if (strcmp("OPTIND", name) == 0)
X  		return V_OPTIND;
X+ 	if (strcmp("RANDOM", name) == 0)
X+ 		return V_RANDOM;
X  	return V_NONE;
X  }
X  
X***************
X*** 500,505 ****
X--- 502,509 ----
X  getspec(vp)
X  	register struct tbl *vp;
X  {
X+   static int seed = 0;
X+   
X  	switch (special(vp->name)) {
X  	case V_SECONDS:
X  		vp->flag &= ~ SPECIAL;
X***************
X*** 506,511 ****
X--- 510,525 ----
X  		setint(vp, time((time_t *)0) - seconds);
X  		vp->flag |= SPECIAL;
X  		break;
X+ 	case V_RANDOM:
X+ 		if (seed == 0)
X+ 		{
X+ 		  seed = (int) time((time_t *)0);
X+ 		  srand(seed);
X+ 		}
X+ 		vp->flag &= ~ SPECIAL;
X+ 		setint(vp, (rand() & 0x7fff));
X+ 		vp->flag |= SPECIAL;
X+ 		break;
X  	}
X  }
X  
X***************
X*** 523,528 ****
X--- 537,545 ----
X  		break;
X  	  case V_SECONDS:
X  		seconds = time((time_t *)0);
X+ 		break;
X+ 	  case V_RANDOM:
X+ 		srand((int) time((time_t *)0));
X  		break;
X  	  case V_OPTIND:
X  		if (intval(vp) == 1)
X*** /tmp/pdksh/src/tree.c	Thu Apr 25 15:05:20 1991
X--- ./src/tree.c	Thu Feb 21 10:16:56 1991
X***************
X*** 9,14 ****
X--- 9,19 ----
X  #include <stdio.h>
X  #include <errno.h>
X  #include <setjmp.h>
X+ #if defined(__STDC__) && defined(va_start)
X+ # undef va_start
X+ # undef va_end
X+ # undef va_arg
X+ #endif
X  #include <varargs.h>
X  #include "sh.h"
X  #include "tree.h"
END_OF_bugs.diffs
if test 3004 -ne `wc -c <bugs.diffs`; then
    echo shar: \"bugs.diffs\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: End of shell archive.
exit 0
-- 
Simon J. Gerraty        <sjg@zen.void.oz.au>

#include <disclaimer>   /* imagine something _very_ witty here */
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