agora inbox for postgres@postgres.berkeley.edu  
help / color / mirror / Atom feed
Solaris2.x
3+ messages / 3 participants
[nested] [flat]

* Solaris2.x
@ 1994-06-06 14:59 Drunkard Terry <yutaka-i@is.aist-nara.ac.jp>
  1994-06-09 22:01 ` Re: Solaris2.x Paul M. Aoki <aoki@CS.Berkeley.EDU>
  0 siblings, 1 reply; 3+ messages in thread

From: Drunkard Terry @ 1994-06-06 14:59 UTC (permalink / raw)
  To: legacy

Hi folks.

I want to make postgre-v4r1 work on SS10 running Solaris2.x .
Anyone did it? 

I wanna information about this. 

Thanx.


---
:  Drunkard Terry <yutaka-i@is.aist-nara.ac.jp>
:  Graduate School of Information Science
:  Nara Institute of Science and Technology, JAPAN

==============================================================================
   To add/remove yourself to/from the POSTGRES mailing list: send mail with 
   the subject line ADD or DEL to "postgres-request@postgres.Berkeley.EDU"

   If this fails, send mail to "post_questions@postgres.Berkeley.EDU" and
   a human will deal with it.  DO NOT post to the "postgres" mailing list.
==============================================================================



^ permalink  raw  reply  [nested|flat] 3+ messages in thread

* Re: Solaris2.x
  1994-06-06 14:59 Solaris2.x Drunkard Terry <yutaka-i@is.aist-nara.ac.jp>
@ 1994-06-09 22:01 ` Paul M. Aoki <aoki@CS.Berkeley.EDU>
  0 siblings, 0 replies; 3+ messages in thread

From: Paul M. Aoki @ 1994-06-09 22:01 UTC (permalink / raw)
  To: Drunkard Terry <yutaka-i@is.aist-nara.ac.jp>; +Cc: legacy

Drunkard Terry<yutaka-i@is.aist-nara.ac.jp> writes:
> I want to make postgre-v4r1 work on SS10 running Solaris2.x .
> Anyone did it? 
> I wanna information about this. 

there's a patchfile for postgres 4.2beta and solaris 2.3 in
	ftp://s2k-ftp.CS.Berkeley.EDU/pub/postgres/unofficial-ports/solaris
some people have reported problems but rather than try to look into
them an effort is instead being made to "officialize" the port (i.e.,
integrate it with the final source tree).  watch this space.
--
  Paul M. Aoki  |  CS Div., Dept. of EECS, UCB  |  aoki@CS.Berkeley.EDU
                |  Berkeley, CA 94720           |  ...!uunet!ucbvax!aoki

==============================================================================
   To add/remove yourself to/from the POSTGRES mailing list: send mail with 
   the subject line ADD or DEL to "postgres-request@postgres.Berkeley.EDU"

   If this fails, send mail to "post_questions@postgres.Berkeley.EDU" and
   a human will deal with it.  DO NOT post to the "postgres" mailing list.
==============================================================================



^ permalink  raw  reply  [nested|flat] 3+ messages in thread

* Re: Solaris2.x
@ 1994-06-09 07:15 Frank Delahoyde <frank@odf.UCSD.EDU>
  0 siblings, 0 replies; 3+ messages in thread

From: Frank Delahoyde @ 1994-06-09 07:15 UTC (permalink / raw)
  To: aoki@CS.Berkeley.EDU

Paul,

Here is a slightly-updated version of the Solaris 2.3 diffs for Postgres 4.2.
There was a problem of a reversed patch.

Frank



This file should be moved to the top postgres directory. You should
then:
	patch -p0 <thisFile

then:	read the file "README.solaris".

diff -r -P -c dst2/README.solaris dst/README.solaris
*** README.solaris	Wed Dec 31 16:00:00 1969
--- README.solaris	Fri Apr  8 18:56:07 1994
***************
*** 0 ****
--- 1,20 ----
+ Please read the installation and release notes in doc first.
+ 
+ Postgres 4.2 must be compiled with gcc 2.5.8 to run under Solaris 2.3.
+ Gcc can be obtained from (west coast): gatekeeper.dec.com, (east coast):
+ prep.ai.mit.edu. To successfully compile postgres, gcc must be patched
+ with the supplied patch and re-built.
+ 
+ 	1). obtain and load gcc 2.5.8. Copy the file gcc.sol.patch in this
+ 	    directory to the gcc source directory, cd to it and
+ 	    patch -po <gcc.sol.patch.
+ 	2). configure, build and install gcc.
+ 	3). The make for postgres uses a shell script named cc to invoke
+ 	    gcc. This script gets installed in ${TOOLSBINDIR} when you
+ 	    ./Bootstrap sparc_solaris. Make sure you set your PATH so
+ 	    that this script is found before any other cc.
+ 	4). Make sure you have looked at (and maybe changed)
+ 	    src/Makefile.global. Be sure to set GCCBINDIR to the gcc bin
+ 	    directory.
+ 	5). ./Bootstrap sparc_solaris (from src/tools/bmake)
+ 	6). bmake all install
diff -r -P -c dst2/gcc.sol.patch dst/gcc.sol.patch
*** gcc.sol.patch	Wed Dec 31 16:00:00 1969
--- gcc.sol.patch	Fri Apr  8 18:56:08 1994
***************
*** 0 ****
--- 1,15 ----
+ *** config/sparc/sparc.c	Wed Jun  8 17:06:46 1994
+ --- config/sparc/sparc.c.orig	Wed Jun  8 17:10:07 1994
+ ***************
+ *** 1068,1072 ****
+        it is to an aggregate, it is to a constant address, or the address
+        involves a LO_SUM.  */
+ !   else if (! TARGET_UNALIGNED_DOUBLES || MEM_IN_STRUCT_P (mem)
+   	   || CONSTANT_P (addr) || GET_CODE (addr) == LO_SUM)
+       return 1;
+ --- 1068,1072 ----
+        it is to an aggregate, it is to a constant address, or the address
+        involves a LO_SUM.  */
+ !   else if (! TARGET_UNALIGNED_DOUBLES /* || MEM_IN_STRUCT_P (mem) */
+   	   || CONSTANT_P (addr) || GET_CODE (addr) == LO_SUM)
+       return 1;
diff -r -P -c src.orig/Makefile.global src/Makefile.global
*** src.orig/Makefile.global	Fri Apr  1 14:56:13 1994
--- src/Makefile.global	Fri Apr  8 18:48:30 1994
***************
*** 44,51 ****
  # directory and run "bmake".  You must put the TOOLSBINDIR, whatever 
  # that may be, in your PATH before attempting to build postgres.
  #
! TOOLSBINDIR= /usr/local/bin
! TOOLSLIBDIR= /usr/local/lib
  
  #
  # Following are settings pertaining to the postgres build and 
--- 44,55 ----
  # directory and run "bmake".  You must put the TOOLSBINDIR, whatever 
  # that may be, in your PATH before attempting to build postgres.
  #
! TOOLSBINDIR= /opt/postgres/tools/bin
! TOOLSLIBDIR= /opt/postgres/tools/lib
! #
! # If you're compiling with gcc under solaris 2.3 (sparc), we
! # need to know the gcc bin directory.
! GCCBINDIR=/opt/gnu/bin
  
  #
  # Following are settings pertaining to the postgres build and 
***************
*** 57,62 ****
--- 61,67 ----
  #  The name of the port.  Valid choices are:
  #	ultrix4	-	DEC MIPS on Ultrix 4.2, 4.2A or 4.3A
  #	sparc	-	SUN SPARC on SunOS 4.1.2 or 4.1.3
+ #	sparc_solaris	SUN SPARC on Solaris 2.x
  #	hpux	-	HP PA-RISC on HP-UX 9.00 or 9.01
  #	alpha	-	DEC Alpha AXP on OSF/1 1.3
  #	aix	-	IBM POWER on AIX 3.2.5
***************
*** 71,77 ****
  #	./obj/Makefile.global does not take effect (for .if purposes) 
  #	until after this file is processed!
  #
! PORTNAME?=	ultrix4
  
  #
  # POSTGRESLOGIN is the login name of the user who gets special
--- 76,82 ----
  #	./obj/Makefile.global does not take effect (for .if purposes) 
  #	until after this file is processed!
  #
! PORTNAME?=	sparc_solaris
  
  #
  # POSTGRESLOGIN is the login name of the user who gets special
***************
*** 88,94 ****
  # changable separately.  This is usually "/usr/local/postgres" but may be 
  # different for the postgres development team and sequoia users.
  #
! POSTGRESDIR?=	/usr/local/postgres
  
  #
  # DATADIR specifies where the postmaster expects to find its database.
--- 93,99 ----
  # changable separately.  This is usually "/usr/local/postgres" but may be 
  # different for the postgres development team and sequoia users.
  #
! POSTGRESDIR?=	/opt/postgres
  
  #
  # DATADIR specifies where the postmaster expects to find its database.
***************
*** 136,142 ****
  #
  .if (${PORTNAME} == "alpha" || ${PORTNAME} == "ultrix4")
  MACHINE!=machine
! .elif (${PORTNAME} == "sparc")
  MACHINE=sparc
  .elif (${PORTNAME} == "hpux")
  MACHINE=hppa
--- 141,147 ----
  #
  .if (${PORTNAME} == "alpha" || ${PORTNAME} == "ultrix4")
  MACHINE!=machine
! .elif (${PORTNAME} == "sparc" || ${PORTNAME} == "sparc_solaris")
  MACHINE=sparc
  .elif (${PORTNAME} == "hpux")
  MACHINE=hppa
***************
*** 167,173 ****
  #
  # This should probably be in the sys.mk file.
  #
! .if (${PORTNAME} == "aix")
  INSTALL=/usr/ucb/install
  .endif
  .if (${PORTNAME} == "alpha")
--- 172,178 ----
  #
  # This should probably be in the sys.mk file.
  #
! .if (${PORTNAME} == "aix" || ${PORTNAME} == "sparc_solaris")
  INSTALL=/usr/ucb/install
  .endif
  .if (${PORTNAME} == "alpha")
***************
*** 207,213 ****
  #
  #	XXX on MIPS, use -g3 if you want to compile with -O
  #
! #CDEBUG= -g
  
  #
  # Comment out PROFILE to disable profiling.
--- 212,218 ----
  #
  #	XXX on MIPS, use -g3 if you want to compile with -O
  #
! CDEBUG= -g
  
  #
  # Comment out PROFILE to disable profiling.
***************
*** 304,310 ****
  # Jaquith and external large objects.  None of these options
  # are supported outside of UC Berkeley.
  #
! #CFLAGS+= -DSEQUOIA
  
  
  #
--- 309,315 ----
  # Jaquith and external large objects.  None of these options
  # are supported outside of UC Berkeley.
  #
! CFLAGS+= -DSEQUOIA
  
  
  #
***************
*** 328,334 ****
  # semantics.  We can use the POSIX sigaction(2) on systems that
  # allow us to request restartable signals (SA_RESTART).
  #
! .if (${PORTNAME} == "alpha" || ${PORTNAME} == "svr4")
  CFLAGS+= -DUSE_POSIX_SIGNALS
  .endif
  #
--- 333,341 ----
  # semantics.  We can use the POSIX sigaction(2) on systems that
  # allow us to request restartable signals (SA_RESTART).
  #
! .if (${PORTNAME} == "alpha" || \
!      ${PORTNAME} == "svr4" || \
!      ${PORTNAME} == "sparc_solaris")
  CFLAGS+= -DUSE_POSIX_SIGNALS
  .endif
  #
***************
*** 338,343 ****
--- 345,353 ----
  .if (${PORTNAME} == "aix")
  # the -lm is because "pow" is defined in libbsd.a and we want pow(3m)
  LDADD+= -lm -lbsd
+ .endif
+ .if (${PORTNAME} == "sparc_solaris")
+ CFLAGS+= -munaligned-doubles -DSVR4 -I$(POSTGRESDIR)/src/backend/port/sparc_solaris
  .endif
  .if (${PORTNAME} == "hpux")
  LDADD+= -lBSD
diff -r -P -c src.orig/backend/access/heap/hrnd.c src/backend/access/heap/hrnd.c
*** src.orig/backend/access/heap/hrnd.c	Fri Apr  1 14:42:22 1994
--- src/backend/access/heap/hrnd.c	Fri Apr  8 13:56:07 1994
***************
*** 24,29 ****
--- 24,34 ----
  #include "utils/memutils.h"
  #include "utils/rel.h"
  
+ #ifdef SVR4
+ #define srandom	srand48
+ #define random	lrand48
+ #endif
+ 
  #ifdef	RANDOMDEBUG
  #include "utils/log.h"
  #endif	/* defined(RANDOMDEBUG) */
diff -r -P -c src.orig/backend/catalog/genbki.sh src/backend/catalog/genbki.sh
*** src.orig/backend/catalog/genbki.sh	Fri Apr  1 14:44:51 1994
--- src/backend/catalog/genbki.sh	Fri Apr  8 13:56:07 1994
***************
*** 16,22 ****
  #   IDENTIFICATION
  # 	/usr/local/devel/postgres-v4r2/src/backend/catalog/RCS/genbki.sh,v 1.8 1993/08/14 04:43:19 aoki Exp
  # ----------------------------------------------------------------
! PATH=$PATH:/lib		# to find cpp
  BKIOPTS=''
  if [ $? != 0 ]
  then
--- 16,22 ----
  #   IDENTIFICATION
  # 	/usr/local/devel/postgres-v4r2/src/backend/catalog/RCS/genbki.sh,v 1.8 1993/08/14 04:43:19 aoki Exp
  # ----------------------------------------------------------------
! PATH=$PATH:/lib:/usr/ccs/lib		# to find cpp
  BKIOPTS=''
  if [ $? != 0 ]
  then
diff -r -P -c src.orig/backend/commands/vacuum.c src/backend/commands/vacuum.c
*** src.orig/backend/commands/vacuum.c	Fri Apr  1 14:44:44 1994
--- src/backend/commands/vacuum.c	Fri Apr  8 13:56:07 1994
***************
*** 3,8 ****
--- 3,11 ----
   */
  
  #include <sys/file.h>
+ #ifdef SVR4
+ #include <fcntl.h>
+ #endif
  
  #include "tmp/postgres.h"
  #include "tmp/c.h"
diff -r -P -c src.orig/backend/executor/ex_flatten.c src/backend/executor/ex_flatten.c
*** src.orig/backend/executor/ex_flatten.c	Fri Apr  1 14:42:41 1994
--- src/backend/executor/ex_flatten.c	Fri Apr  8 13:56:07 1994
***************
*** 87,93 ****
  	/*
  	 * Initialize the inner node
  	 */
! 	resVect[0] = ExecEvalIter((Iter)tl_expr(get_fj_innerNode(fjNode)),
  				  econtext,
  				  &isNullVect[0],
  				  &isDone);
--- 87,94 ----
  	/*
  	 * Initialize the inner node
  	 */
! 	resVect[0] = ExecEvalIter((Iter)
! 				  tl_expr((List)get_fj_innerNode(fjNode)),
  				  econtext,
  				  &isNullVect[0],
  				  &isDone);
***************
*** 131,137 ****
  	    return;
  	}
  	else
! 	    resVect[0] = ExecEvalIter((Iter)tl_expr(get_fj_innerNode(fjNode)),
  				      econtext,
  				      &isNullVect[0],
  				      &isDone);
--- 132,139 ----
  	    return;
  	}
  	else
! 	    resVect[0] = ExecEvalIter((Iter)
! 				      tl_expr((List)get_fj_innerNode(fjNode)),
  				      econtext,
  				      &isNullVect[0],
  				      &isDone);
***************
*** 149,155 ****
  	if (*fj_isDone)
  	    return;
  
! 	resVect[0] = ExecEvalIter((Iter)tl_expr(get_fj_innerNode(fjNode)),
  				  econtext,
  				  &isNullVect[0],
  				  &isDone);
--- 151,158 ----
  	if (*fj_isDone)
  	    return;
  
! 	resVect[0] = ExecEvalIter((Iter)
! 				  tl_expr((List)get_fj_innerNode(fjNode)),
  				  econtext,
  				  &isNullVect[0],
  				  &isDone);
diff -r -P -c src.orig/backend/executor/ex_junk.c src/backend/executor/ex_junk.c
*** src.orig/backend/executor/ex_junk.c	Fri Apr  1 14:42:41 1994
--- src/backend/executor/ex_junk.c	Fri Apr  8 13:56:07 1994
***************
*** 110,117 ****
  	    cleanFjoin = (Fjoin)CopyObject((Node) fjNode);
  	    cleanFjList = lispCons((LispValue) cleanFjoin, LispNil);
  
! 	    resdom = (Resdom) CAR(get_fj_innerNode(fjNode));
! 	    expr =   CADR(get_fj_innerNode(fjNode));
  	    cleanResdom = (Resdom) CopyObject((Node) resdom);
  	    set_resno(cleanResdom, cleanResno);
  	    cleanResno++;
--- 110,117 ----
  	    cleanFjoin = (Fjoin)CopyObject((Node) fjNode);
  	    cleanFjList = lispCons((LispValue) cleanFjoin, LispNil);
  
! 	    resdom = (Resdom) CAR((List)get_fj_innerNode(fjNode));
! 	    expr =   CADR((List)get_fj_innerNode(fjNode));
  	    cleanResdom = (Resdom) CopyObject((Node) resdom);
  	    set_resno(cleanResdom, cleanResno);
  	    cleanResno++;
***************
*** 178,184 ****
  		List fjList = CAR(t);
  		Fjoin fjNode = (Fjoin)CAR(fjList);
  
! 		resdom = (Resdom) CAR(get_fj_innerNode(fjNode));
  		cleanMap[cleanResno-1] = get_resno(resdom);
  		cleanResno++;
  
--- 178,184 ----
  		List fjList = CAR(t);
  		Fjoin fjNode = (Fjoin)CAR(fjList);
  
! 		resdom = (Resdom) CAR((List)get_fj_innerNode(fjNode));
  		cleanMap[cleanResno-1] = get_resno(resdom);
  		cleanResno++;
  
diff -r -P -c src.orig/backend/executor/ex_qual.c src/backend/executor/ex_qual.c
*** src.orig/backend/executor/ex_qual.c	Fri Apr  1 14:42:55 1994
--- src/backend/executor/ex_qual.c	Fri Apr  8 13:56:07 1994
***************
*** 1669,1675 ****
  	    /*
  	     * get the result from the inner node
  	     */
! 	    fjRes = (Resdom)CAR(get_fj_innerNode(fjNode));
  	    resind = get_resno(fjRes) - 1;
  	    if (fjIsNull[0])
  		null_head[resind] = 'n';
--- 1669,1675 ----
  	    /*
  	     * get the result from the inner node
  	     */
! 	    fjRes = (Resdom)CAR((List)get_fj_innerNode(fjNode));
  	    resind = get_resno(fjRes) - 1;
  	    if (fjIsNull[0])
  		null_head[resind] = 'n';
diff -r -P -c src.orig/backend/executor/ex_tuples.c src/backend/executor/ex_tuples.c
*** src.orig/backend/executor/ex_tuples.c	Fri Apr  1 14:42:43 1994
--- src/backend/executor/ex_tuples.c	Fri Apr  8 13:56:08 1994
***************
*** 1095,1101 ****
  	    List  fjList = CAR(tlcdr);
  	    Fjoin fjNode = (Fjoin)tl_node(fjList);
  
! 	    fjRes = (Resdom)tl_resdom(get_fj_innerNode(fjNode));
  	    restype = get_restype(fjRes);
  
  	    ExecSetTypeInfo(
--- 1095,1101 ----
  	    List  fjList = CAR(tlcdr);
  	    Fjoin fjNode = (Fjoin)tl_node(fjList);
  
! 	    fjRes = (Resdom)tl_resdom((List)get_fj_innerNode(fjNode));
  	    restype = get_restype(fjRes);
  
  	    ExecSetTypeInfo(
diff -r -P -c src.orig/backend/executor/n_hash.c src/backend/executor/n_hash.c
*** src.orig/backend/executor/n_hash.c	Fri Apr  1 14:42:46 1994
--- src/backend/executor/n_hash.c	Fri Apr  8 13:56:08 1994
***************
*** 19,24 ****
--- 19,29 ----
  
  #include <math.h>
  #include <sys/file.h>
+ #ifdef SVR4
+ #include <fcntl.h>
+ #include <unistd.h>
+ #define L_XTND	SEEK_END
+ #endif
  #include "storage/ipci.h"
  #include "storage/bufmgr.h"	/* for BLCKSZ */
  #include "tcop/slaves.h"
diff -r -P -c src.orig/backend/executor/n_hashjoin.c src/backend/executor/n_hashjoin.c
*** src.orig/backend/executor/n_hashjoin.c	Fri Apr  1 14:42:46 1994
--- src/backend/executor/n_hashjoin.c	Fri Apr  8 13:56:08 1994
***************
*** 16,21 ****
--- 16,26 ----
   */
  
  #include <sys/file.h>
+ #ifdef SVR4
+ #include <fcntl.h>
+ #include <unistd.h>
+ #define L_XTND	SEEK_END
+ #endif
  #include "storage/bufmgr.h"	/* for BLCKSZ */
  #include "tcop/slaves.h"
  #include "executor/executor.h"
diff -r -P -c src.orig/backend/executor/n_indexscan.c src/backend/executor/n_indexscan.c
*** src.orig/backend/executor/n_indexscan.c	Fri Apr  1 14:42:42 1994
--- src/backend/executor/n_indexscan.c	Fri Apr  8 13:56:08 1994
***************
*** 869,875 ****
      if (ruleInfo != NULL && ruleInfo->relationStubsHaveChanged) {
  	ObjectId reloid;
  	reloid =
! 	    RelationGetRelationId(
  			  get_css_currentRelation((CommonScanState)scanstate));
          prs2ReplaceRelationStub(reloid, ruleInfo->relationStubs);
      }
--- 869,875 ----
      if (ruleInfo != NULL && ruleInfo->relationStubsHaveChanged) {
  	ObjectId reloid;
  	reloid =
! 	    RelationGetRelationId((Relation)
  			  get_css_currentRelation((CommonScanState)scanstate));
          prs2ReplaceRelationStub(reloid, ruleInfo->relationStubs);
      }
diff -r -P -c src.orig/backend/executor/n_scantemps.c src/backend/executor/n_scantemps.c
*** src.orig/backend/executor/n_scantemps.c	Fri Apr  1 14:42:48 1994
--- src/backend/executor/n_scantemps.c	Fri Apr  8 13:56:08 1994
***************
*** 19,24 ****
--- 19,27 ----
   */
  
  #include <sys/file.h>
+ #ifdef SVR4
+ #include <fcntl.h>
+ #endif
  #include "utils/palloc.h"
  #include "utils/relcache.h"
  #include "tcop/slaves.h"
diff -r -P -c src.orig/backend/executor/n_seqscan.c src/backend/executor/n_seqscan.c
*** src.orig/backend/executor/n_seqscan.c	Fri Apr  1 14:42:48 1994
--- src/backend/executor/n_seqscan.c	Fri Apr  8 13:56:08 1994
***************
*** 444,450 ****
      if (ruleInfo != NULL && ruleInfo->relationStubsHaveChanged) {
  	ObjectId reloid;
  	reloid =
! 	    RelationGetRelationId(
  			  get_css_currentRelation((CommonScanState)scanstate));
  	prs2ReplaceRelationStub(reloid, ruleInfo->relationStubs);
      }
--- 444,450 ----
      if (ruleInfo != NULL && ruleInfo->relationStubsHaveChanged) {
  	ObjectId reloid;
  	reloid =
! 	    RelationGetRelationId((Relation)
  			  get_css_currentRelation((CommonScanState)scanstate));
  	prs2ReplaceRelationStub(reloid, ruleInfo->relationStubs);
      }
diff -r -P -c src.orig/backend/lib/fcache.c src/backend/lib/fcache.c
*** src.orig/backend/lib/fcache.c	Fri Apr  1 14:45:03 1994
--- src/backend/lib/fcache.c	Fri Apr  8 13:56:08 1994
***************
*** 68,74 ****
  
      Assert(ExactNodeType(arg,Var));
  
!     rtid = CInteger(CAR(get_varid(arg)));
      relname = CString(getrelname(rtid, get_ecxt_range_table(econtext)));
  
      tup = SearchSysCacheTuple(TYPNAME, relname, NULL, NULL, NULL);
--- 68,74 ----
  
      Assert(ExactNodeType(arg,Var));
  
!     rtid = CInteger(CAR((List)get_varid(arg)));
      relname = CString(getrelname(rtid, get_ecxt_range_table(econtext)));
  
      tup = SearchSysCacheTuple(TYPNAME, relname, NULL, NULL, NULL);
diff -r -P -c src.orig/backend/libpq/be-fsstubs.c src/backend/libpq/be-fsstubs.c
*** src.orig/backend/libpq/be-fsstubs.c	Fri Apr  1 14:45:11 1994
--- src/backend/libpq/be-fsstubs.c	Fri Apr  8 13:56:09 1994
***************
*** 86,91 ****
--- 86,94 ----
  #include "tmp/libpq.h"
  #include "tmp/libpq-fs.h"
  /*#include "utils/large_object.h"*/
+ #ifdef SVR4
+ #include <fcntl.h>
+ #endif
  #include "utils/mcxt.h"
  #include "utils/palloc.h"
  #include "catalog/pg_lobj.h"
diff -r -P -c src.orig/backend/nodes/Gen_accessors.sh src/backend/nodes/Gen_accessors.sh
*** src.orig/backend/nodes/Gen_accessors.sh	Fri Apr  1 14:44:35 1994
--- src/backend/nodes/Gen_accessors.sh	Fri Apr  8 13:56:09 1994
***************
*** 19,25 ****
  	CB=$CAT
  fi
  CPP=cpp
! PATH=/usr/lib:/lib:$PATH	# to find cpp if not in /usr/bin
  EGREP=egrep
  RM=rm
  SED=sed
--- 19,25 ----
  	CB=$CAT
  fi
  CPP=cpp
! PATH=/usr/lib:/lib:$PATH:/usr/ccs/lib	# to find cpp if not in /usr/bin
  EGREP=egrep
  RM=rm
  SED=sed
diff -r -P -c src.orig/backend/parser/ylib.c src/backend/parser/ylib.c
*** src.orig/backend/parser/ylib.c	Fri Apr  1 14:42:59 1994
--- src/backend/parser/ylib.c	Fri Apr  8 13:56:09 1994
***************
*** 476,482 ****
  		  IsA(CDR(CAR(fargs)),Iter) && 
  		  (argrelid = typeid_get_relid
  		   ((int)(argtype=funcid_get_rettype
! 			  (get_funcid((Func)(CAR(get_iterexpr((Iter)CDR(CAR(fargs)))))))))))
  	  {
  	      /* the argument is a function returning a tuple, so funcname
  		 may be a projection */
--- 476,482 ----
  		  IsA(CDR(CAR(fargs)),Iter) && 
  		  (argrelid = typeid_get_relid
  		   ((int)(argtype=funcid_get_rettype
! 			  (get_funcid((Func)(CAR((List)get_iterexpr((Iter)CDR(CAR(fargs)))))))))))
  	  {
  	      /* the argument is a function returning a tuple, so funcname
  		 may be a projection */
***************
*** 494,500 ****
  		   if (RelationIsValid(rd))
  		    {
  			iter = (Iter)CDR(CAR(fargs));
! 			set_func_tlist((Func)CAR(get_iterexpr(iter)), 
  				       setup_tlist(funcname, argrelid));
  			return(lispCons(lispInteger(att_typeid(rd,attnum)),iter));
  		    }
--- 494,500 ----
  		   if (RelationIsValid(rd))
  		    {
  			iter = (Iter)CDR(CAR(fargs));
! 			set_func_tlist((Func)CAR((List)get_iterexpr(iter)), 
  				       setup_tlist(funcname, argrelid));
  			return(lispCons(lispInteger(att_typeid(rd,attnum)),iter));
  		    }
diff -r -P -c src.orig/backend/planner/path/clausesel.c src/backend/planner/path/clausesel.c
*** src.orig/backend/planner/path/clausesel.c	Fri Apr  1 14:43:11 1994
--- src/backend/planner/path/clausesel.c	Fri Apr  8 13:56:09 1994
***************
*** 235,241 ****
      } else if (IsA(clause,Const)) {
  	s1 = ((bool) get_constvalue((Const) clause)) ? 1.0 : 0.0;
      } else if (IsA(clause,Var)) {
! 	LispValue relid = translate_relid(CAR(get_varid((Var) clause)));
  
  	/*
  	 * we have a bool Var.  This is exactly equivalent to the clause:
--- 235,241 ----
      } else if (IsA(clause,Const)) {
  	s1 = ((bool) get_constvalue((Const) clause)) ? 1.0 : 0.0;
      } else if (IsA(clause,Var)) {
! 	LispValue relid = translate_relid(CAR((List)get_varid((Var) clause)));
  
  	/*
  	 * we have a bool Var.  This is exactly equivalent to the clause:
***************
*** 247,253 ****
  	s1 = restriction_selectivity(EqualSelectivityProcedure,
  				     BooleanEqualOperator,
  				     CInteger(relid),
! 				     CInteger(CADR(get_varid((Var) clause))),
  				     (Datum) 't',
  				     _SELEC_CONSTANT_RIGHT_);
      } else if (or_selectivities) {
--- 247,253 ----
  	s1 = restriction_selectivity(EqualSelectivityProcedure,
  				     BooleanEqualOperator,
  				     CInteger(relid),
! 				     CInteger(CADR((List)get_varid((Var) clause))),
  				     (Datum) 't',
  				     _SELEC_CONSTANT_RIGHT_);
      } else if (or_selectivities) {
diff -r -P -c src.orig/backend/planner/path/hashutils.c src/backend/planner/path/hashutils.c
*** src.orig/backend/planner/path/hashutils.c	Fri Apr  1 14:43:11 1994
--- src/backend/planner/path/hashutils.c	Fri Apr  8 13:56:09 1994
***************
*** 108,117 ****
  	    }
  	    else {
  		temp = lispList();
! 		CAR(temp) = CAR(get_clauses((JoinMethod)xhashinfo));
! 		CDR(temp) = CDR(get_clauses((JoinMethod)xhashinfo));
! 		CDR(get_clauses((JoinMethod)xhashinfo)) = temp;
! 		CAR(get_clauses((JoinMethod)xhashinfo)) = clause;
  	    }
  	    if (null(get_jmkeys((JoinMethod)xhashinfo)))
  	    {
--- 108,117 ----
  	    }
  	    else {
  		temp = lispList();
! 		CAR(temp) = CAR((List)get_clauses((JoinMethod)xhashinfo));
! 		CDR(temp) = CDR((List)get_clauses((JoinMethod)xhashinfo));
! 		CDR((List)get_clauses((JoinMethod)xhashinfo)) = temp;
! 		CAR((List)get_clauses((JoinMethod)xhashinfo)) = clause;
  	    }
  	    if (null(get_jmkeys((JoinMethod)xhashinfo)))
  	    {
***************
*** 120,129 ****
  	    else {
  		temp2 = lispList();
  	    
! 		CAR(temp2) = CAR(get_jmkeys((JoinMethod)xhashinfo));
! 		CDR(temp2) = CDR(get_jmkeys((JoinMethod)xhashinfo));
! 		CDR(get_jmkeys((JoinMethod)xhashinfo)) = temp2;
! 		CAR(get_jmkeys((JoinMethod)xhashinfo)) = (LispValue)keys;
  	    }
  
  /*	    temp2 = get_jmkeys(xhashinfo);
--- 120,129 ----
  	    else {
  		temp2 = lispList();
  	    
! 		CAR(temp2) = CAR((List)get_jmkeys((JoinMethod)xhashinfo));
! 		CDR(temp2) = CDR((List)get_jmkeys((JoinMethod)xhashinfo));
! 		CDR((List)get_jmkeys((JoinMethod)xhashinfo)) = temp2;
! 		CAR((List)get_jmkeys((JoinMethod)xhashinfo)) = (LispValue)keys;
  	    }
  
  /*	    temp2 = get_jmkeys(xhashinfo);
diff -r -P -c src.orig/backend/planner/path/indxpath.c src/backend/planner/path/indxpath.c
*** src.orig/backend/planner/path/indxpath.c	Fri Apr  1 14:43:13 1994
--- src/backend/planner/path/indxpath.c	Fri Apr  8 13:56:09 1994
***************
*** 131,138 ****
      {
  	match_index_orclauses (rel,
  			       index,
! 			       CAR(get_indexkeys(index)),
! 			       CAR(get_classlist(index)),
  			       clauseinfo_list);
      }
  
--- 131,138 ----
      {
  	match_index_orclauses (rel,
  			       index,
! 			       CAR((List)get_indexkeys(index)),
! 			       CAR((List)get_classlist(index)),
  			       clauseinfo_list);
      }
  
***************
*** 188,194 ****
  	 && null(scanclausegroups)
  	 && null(joinclausegroups)
  	 && (CInteger(get_relid((SortKey)sortkeys)) == 
! 	     CInteger(CAR(get_relids(rel))))
  	 && equal_path_path_ordering(get_sortorder((SortKey)sortkeys),
  				     get_ordering(index))
  	 && equal ((Node)get_sortkeys((SortKey)sortkeys),
--- 188,194 ----
  	 && null(scanclausegroups)
  	 && null(joinclausegroups)
  	 && (CInteger(get_relid((SortKey)sortkeys)) == 
! 	     CInteger(CAR((List)get_relids(rel))))
  	 && equal_path_path_ordering(get_sortorder((SortKey)sortkeys),
  				     get_ordering(index))
  	 && equal ((Node)get_sortkeys((SortKey)sortkeys),
***************
*** 1022,1034 ****
  	 clausegroup = CAR(i);
  	 pathnode = RMakeIndexPath();
  	 relattvals =                
! 	   get_joinvars (CAR(get_relids(rel)),clausegroup);
  	 pagesel = 
! 	   index_selectivity (CInteger(CAR(get_relids (index))),
  			      get_classlist (index),
  			      get_opnos (clausegroup),
  			      CInteger(getrelid (CInteger(CAR
! 							  (get_relids (rel))),
  						 _query_range_table_)),
  			      CAR (relattvals),
  			      CADR (relattvals),
--- 1022,1034 ----
  	 clausegroup = CAR(i);
  	 pathnode = RMakeIndexPath();
  	 relattvals =                
! 	   get_joinvars (CAR((List)get_relids(rel)),clausegroup);
  	 pagesel = 
! 	   index_selectivity (CInteger(CAR((List)get_relids (index))),
  			      get_classlist (index),
  			      get_opnos (clausegroup),
  			      CInteger(getrelid (CInteger(CAR
! 							  ((List)get_relids (rel))),
  						 _query_range_table_)),
  			      CAR (relattvals),
  			      CADR (relattvals),
***************
*** 1045,1051 ****
  	 temp_selec = CDouble(CADR(pagesel));
  
  	 set_path_cost ((Path)pathnode,cost_index(
! 					(ObjectId)CInteger(CAR(get_relids (index))),
  					temp_pages,
  					temp_selec,
  					get_pages (rel),
--- 1045,1051 ----
  	 temp_selec = CDouble(CADR(pagesel));
  
  	 set_path_cost ((Path)pathnode,cost_index(
! 					(ObjectId)CInteger(CAR((List)get_relids (index))),
  					temp_pages,
  					temp_selec,
  					get_pages (rel),
***************
*** 1180,1186 ****
      Rel rel;
      Rel index;
  {
!     ObjectId heapRelid	= CInteger(CAR(get_relids(rel)));
      Func function 	= (Func)get_function(funcOpnd);
      LispValue funcargs	= get_funcargs(funcOpnd);
      LispValue indexKeys	= get_indexkeys(index);
--- 1180,1186 ----
      Rel rel;
      Rel index;
  {
!     ObjectId heapRelid	= CInteger(CAR((List)get_relids(rel)));
      Func function 	= (Func)get_function(funcOpnd);
      LispValue funcargs	= get_funcargs(funcOpnd);
      LispValue indexKeys	= get_indexkeys(index);
diff -r -P -c src.orig/backend/planner/path/joinpath.c src/backend/planner/path/joinpath.c
*** src.orig/backend/planner/path/joinpath.c	Fri Apr  1 14:43:12 1994
--- src/backend/planner/path/joinpath.c	Fri Apr  8 13:56:09 1994
***************
*** 87,94 ****
  	  Path bestinnerjoin;
  	  LispValue pathlist = LispNil;
  
! 	  innerrelids = CADR(get_relids(joinrel));
! 	  outerrelids = CAR(get_relids(joinrel));
  	  innerrelid = form_relid(innerrelids);
  	  outerrelid = form_relid(outerrelids);
  	  innerrel = get_rel(innerrelid);
--- 87,94 ----
  	  Path bestinnerjoin;
  	  LispValue pathlist = LispNil;
  
! 	  innerrelids = CADR((List)get_relids(joinrel));
! 	  outerrelids = CAR((List)get_relids(joinrel));
  	  innerrelid = form_relid(innerrelids);
  	  outerrelid = form_relid(outerrelids);
  	  innerrel = get_rel(innerrelid);
***************
*** 99,111 ****
  	  if( _enable_mergesort_ ) {
  	       mergeinfo_list = 
  		 group_clauses_by_order(get_clauseinfo(joinrel),
! 					 CAR(get_relids(innerrel)));
  	  } 
  	  
  	  if( _enable_hashjoin_ ) {
  	      hashinfo_list = 
  		group_clauses_by_hashop(get_clauseinfo(joinrel),
! 					CAR(get_relids(innerrel)));
  	  } 
  	  
  	  /* need to flatten the relids list */
--- 99,111 ----
  	  if( _enable_mergesort_ ) {
  	       mergeinfo_list = 
  		 group_clauses_by_order(get_clauseinfo(joinrel),
! 					 CAR((List)get_relids(innerrel)));
  	  } 
  	  
  	  if( _enable_hashjoin_ ) {
  	      hashinfo_list = 
  		group_clauses_by_hashop(get_clauseinfo(joinrel),
! 					CAR((List)get_relids(innerrel)));
  	  } 
  	  
  	  /* need to flatten the relids list */
***************
*** 217,223 ****
      LispValue join_path = LispNil;
      
      foreach(join_path, join_paths) {
! 	if (member(CAR(get_joinid((Path)CAR(join_path))),outer_relid)
  	   && ((null(cheapest) || path_is_cheaper((Path)CAR(join_path),cheapest)))) {
  	    cheapest = (Path)CAR(join_path);
  	}
--- 217,223 ----
      LispValue join_path = LispNil;
      
      foreach(join_path, join_paths) {
! 	if (member(CAR((List)get_joinid((Path)CAR(join_path))),outer_relid)
  	   && ((null(cheapest) || path_is_cheaper((Path)CAR(join_path),cheapest)))) {
  	    cheapest = (Path)CAR(join_path);
  	}
***************
*** 423,429 ****
  	      /* if base relation, then */
  	      foreach (x, get_innerjoin(innerrel)) {
  	          innerpath = (Path)CAR(x);
! 	          if (member(CAR(get_joinid(innerpath)),outer_relid)) {
  	              paths = lispCons((LispValue)create_nestloop_path(joinrel, outerrel,
  						            outerpath, innerpath,
  						            merge_pathkeys),
--- 423,429 ----
  	      /* if base relation, then */
  	      foreach (x, get_innerjoin(innerrel)) {
  	          innerpath = (Path)CAR(x);
! 	          if (member(CAR((List)get_joinid(innerpath)),outer_relid)) {
  	              paths = lispCons((LispValue)create_nestloop_path(joinrel, outerrel,
  						            outerpath, innerpath,
  						            merge_pathkeys),
diff -r -P -c src.orig/backend/planner/path/orindxpath.c src/backend/planner/path/orindxpath.c
*** src.orig/backend/planner/path/orindxpath.c	Fri Apr  1 14:43:12 1994
--- src/backend/planner/path/orindxpath.c	Fri Apr  8 13:56:10 1994
***************
*** 229,239 ****
  	  else {
  	       flag = _SELEC_CONSTANT_RIGHT_;
  	  } 
! 	  pagesel = index_selectivity (CInteger(CAR(get_relids (index))) ,
  				       get_classlist (index),
  				       lispInteger(opno),
  				       CInteger(getrelid (CInteger
! 						    (CAR(get_relids(rel))),
  						_query_range_table_)),
  				       lispCons (lispInteger(attno),LispNil),
  				       lispCons (lispInteger(value),LispNil),
--- 229,239 ----
  	  else {
  	       flag = _SELEC_CONSTANT_RIGHT_;
  	  } 
! 	  pagesel = index_selectivity (CInteger(CAR((List)get_relids (index))) ,
  				       get_classlist (index),
  				       lispInteger(opno),
  				       CInteger(getrelid (CInteger
! 						    (CAR((List)get_relids(rel))),
  						_query_range_table_)),
  				       lispCons (lispInteger(attno),LispNil),
  				       lispCons (lispInteger(value),LispNil),
diff -r -P -c src.orig/backend/planner/path/xfunc.c src/backend/planner/path/xfunc.c
*** src.orig/backend/planner/path/xfunc.c	Fri Apr  1 14:43:13 1994
--- src/backend/planner/path/xfunc.c	Fri Apr  8 13:56:10 1994
***************
*** 624,630 ****
  	      Assert(length(get_param_tlist((Param)clause)) == 1); /* sanity */
  	      retval = 
  		xfunc_width((LispValue)
! 			    get_expr((TLE)CAR(get_param_tlist((Param)clause))));
  	  }
  	 else
  	  {
--- 624,630 ----
  	      Assert(length(get_param_tlist((Param)clause)) == 1); /* sanity */
  	      retval = 
  		xfunc_width((LispValue)
! 			    get_expr((TLE)CAR((List)get_param_tlist((Param)clause))));
  	  }
  	 else
  	  {
***************
*** 670,676 ****
  	      Assert(length(get_func_tlist(func)) == 1);   /* sanity */
  	      retval = 
  		xfunc_width((LispValue)
! 			    get_expr((TLE)CAR(get_func_tlist(func))));
  	      goto exit;
  	  }
  	 else
--- 670,676 ----
  	      Assert(length(get_func_tlist(func)) == 1);   /* sanity */
  	      retval = 
  		xfunc_width((LispValue)
! 			    get_expr((TLE)CAR((List)get_func_tlist(func))));
  	      goto exit;
  	  }
  	 else
***************
*** 709,715 ****
      foreach (temp,_base_relation_list_)
       {
  	 Assert(CDR(get_relids((Rel)CAR(temp))) == LispNil);
! 	 allrelids = nappend1(allrelids, CAR(get_relids((Rel)CAR(temp))));
       }
  	 
      /* find all relids referenced in query but not in clause */
--- 709,715 ----
      foreach (temp,_base_relation_list_)
       {
  	 Assert(CDR(get_relids((Rel)CAR(temp))) == LispNil);
! 	 allrelids = nappend1(allrelids, CAR((List)get_relids((Rel)CAR(temp))));
       }
  	 
      /* find all relids referenced in query but not in clause */
***************
*** 770,776 ****
  
      /* Base cases */
      if (IsA(clause,Var)) 
!       return(lispCons(CAR(get_varid((Var)clause)), LispNil));
      else if (IsA(clause,Const) || IsA(clause,Param))
        return((List)LispNil);
  
--- 770,776 ----
  
      /* Base cases */
      if (IsA(clause,Var)) 
!       return(lispCons(CAR((List)get_varid((Var)clause)), LispNil));
      else if (IsA(clause,Const) || IsA(clause,Param))
        return((List)LispNil);
  
diff -r -P -c src.orig/backend/planner/plan/createplan.c src/backend/planner/plan/createplan.c
*** src.orig/backend/planner/plan/createplan.c	Fri Apr  1 14:43:14 1994
--- src/backend/planner/plan/createplan.c	Fri Apr  8 13:56:10 1994
***************
*** 369,375 ****
       fixed_indxqual = fix_indxqual_references(indxqual,best_path);
       scan_node = make_indexscan(tlist,
  				 qpqual,
! 				 CInteger(CAR(get_relids 
  					      (get_parent((Path)best_path)))),
  				 get_indexid(best_path),
  				 fixed_indxqual);
--- 369,375 ----
       fixed_indxqual = fix_indxqual_references(indxqual,best_path);
       scan_node = make_indexscan(tlist,
  				 qpqual,
! 				 CInteger(CAR((List)get_relids 
  					      (get_parent((Path)best_path)))),
  				 get_indexid(best_path),
  				 fixed_indxqual);
***************
*** 389,395 ****
  {
      LispValue newclause;
      if(IsA(clause,Var) && 
!        CInteger(CAR(get_relids(get_parent(index_path)))) ==
         get_varno((Var)clause)) {
  	int pos = 0;
  	LispValue x = LispNil;
--- 389,395 ----
  {
      LispValue newclause;
      if(IsA(clause,Var) && 
!        CInteger(CAR((List)get_relids(get_parent(index_path)))) ==
         get_varno((Var)clause)) {
  	int pos = 0;
  	LispValue x = LispNil;
***************
*** 418,424 ****
  	   * 	 (make_opclause(replace_opid(get_op clause))
  	   */
  	  return(make_opclause((Oper)get_op(clause),
! 			       MakeVar((Index)CInteger(CAR(get_relids
  				       (get_parent(index_path)))),
  				       1, /* func indices have one key */
  				       get_functype((Func)get_function(clause)),
--- 418,424 ----
  	   * 	 (make_opclause(replace_opid(get_op clause))
  	   */
  	  return(make_opclause((Oper)get_op(clause),
! 			       MakeVar((Index)CInteger(CAR((List)get_relids
  				       (get_parent(index_path)))),
  				       1, /* func indices have one key */
  				       get_functype((Func)get_function(clause)),
***************
*** 498,504 ****
  	 *    qualifications in indxqual. 
  	 */
  
! 	List inner_indxqual = CAR(get_indxqual((IndexScan)inner_node));
  	List inner_qual = (inner_indxqual == LispNil)? LispNil:CAR(inner_indxqual);
  
  	/* If we have in fact found a join index qualification, remove these
--- 498,504 ----
  	 *    qualifications in indxqual. 
  	 */
  
! 	List inner_indxqual = CAR((List)get_indxqual((IndexScan)inner_node));
  	List inner_qual = (inner_indxqual == LispNil)? LispNil:CAR(inner_indxqual);
  
  	/* If we have in fact found a join index qualification, remove these
diff -r -P -c src.orig/backend/planner/prep/semanopt.c src/backend/planner/prep/semanopt.c
*** src.orig/backend/planner/prep/semanopt.c	Fri Apr  1 14:43:16 1994
--- src/backend/planner/prep/semanopt.c	Fri Apr  8 13:56:10 1994
***************
*** 290,296 ****
        if (get_varno((Var)tle) == right) {
  	set_varno((Var)tle,left);
  	set_varid((Var)tle, lispCons(lispInteger(left),
! 				lispCons(CADR(get_varid((Var)tle)),
  					 LispNil)) );
        }
      } else
--- 290,296 ----
        if (get_varno((Var)tle) == right) {
  	set_varno((Var)tle,left);
  	set_varid((Var)tle, lispCons(lispInteger(left),
! 				lispCons(CADR((List)get_varid((Var)tle)),
  					 LispNil)) );
        }
      } else
***************
*** 319,332 ****
        if (get_varno((Var)leftop) == right) {
  	set_varno((Var)leftop,left);
  	set_varid((Var)leftop, lispCons(lispInteger(left),
! 				   lispCons(CADR(get_varid((Var)leftop)),
  					    LispNil)) );
        } else
  	if (IsA(rightop,Var))
  	  if (get_varno((Var)rightop) == right) {
  	    set_varno((Var)rightop,left);
  	    set_varid((Var)rightop, lispCons(lispInteger(left),
! 				       lispCons(CADR(get_varid((Var)rightop)),
  						LispNil)) );	    
  	  }
    }
--- 319,332 ----
        if (get_varno((Var)leftop) == right) {
  	set_varno((Var)leftop,left);
  	set_varid((Var)leftop, lispCons(lispInteger(left),
! 				   lispCons(CADR((List)get_varid((Var)leftop)),
  					    LispNil)) );
        } else
  	if (IsA(rightop,Var))
  	  if (get_varno((Var)rightop) == right) {
  	    set_varno((Var)rightop,left);
  	    set_varid((Var)rightop, lispCons(lispInteger(left),
! 				       lispCons(CADR((List)get_varid((Var)rightop)),
  						LispNil)) );	    
  	  }
    }
diff -r -P -c src.orig/backend/port/sparc_solaris/Makefile.inc src/backend/port/sparc_solaris/Makefile.inc
*** src.orig/backend/port/sparc_solaris/Makefile.inc	Wed Dec 31 16:00:00 1969
--- src/backend/port/sparc_solaris/Makefile.inc	Sat Mar 26 10:31:11 1994
***************
*** 0 ****
--- 1,13 ----
+ #
+ # SPARC/Solaris 2.x specific stuff
+ #
+ #
+ 
+ CFLAGS+= -DUSE_POSIX_TIME -DNEED_ISINF
+ 
+ LDADD+= -lsocket -lnsl -ll -ldl
+ 
+ #
+ 
+ SRCS+= port.c dynloader.c
+ HEADERS+= machine.h
diff -r -P -c src.orig/backend/port/sparc_solaris/dynloader.c src/backend/port/sparc_solaris/dynloader.c
*** src.orig/backend/port/sparc_solaris/dynloader.c	Wed Dec 31 16:00:00 1969
--- src/backend/port/sparc_solaris/dynloader.c	Thu Mar 24 17:18:03 1994
***************
*** 0 ****
--- 1,54 ----
+ /*
+  *   FILE
+  *	dynloader.c
+  *
+  *   DESCRIPTION
+  *	dynamic loader for SunOS 4 using the shared library mechanism
+  *
+  *   INTERFACE ROUTINES
+  *	pg_dlopen
+  *	pg_dlsym
+  *	pg_dlclose
+  *
+  *   NOTES
+  *	pg_dlsym and pg_dlclose are actually macros, defined in 
+  *	port-protos.h.
+  *
+  *   IDENTIFICATION
+  *	/usr/local/devel/postgres-4.2-devel/src/backend/port/sparc/RCS/dynloader.c,v 1.20 1993/08/04 11:02:54 aoki Exp
+  */
+ 
+ #include <stdio.h>
+ #include <dlfcn.h>
+ 
+ #include "port-protos.h"
+ 
+ RcsId("/usr/local/devel/postgres-4.2-devel/src/backend/port/sparc/RCS/dynloader.c,v 1.20 1993/08/04 11:02:54 aoki Exp");
+ 
+ /*
+  * Dynamic Loader on SunOS 4.
+  *
+  * this dynamic loader uses the system dynamic loading interface for shared 
+  * libraries (ie. dlopen/dlsym/dlclose). The user must specify a shared
+  * library as the file to be dynamically loaded.
+  *
+  * Note that only pg_dlopen is defined here. pg_dlsym and pg_dlclose
+  * are actually macros.
+  */
+ 
+ /*
+  * pg_dlopen--
+  *	attempts to dynamically loaded in filename and returns error in
+  *	err, if any. 
+  */
+ void *
+ pg_dlopen(filename, err)
+     char *filename; char **err;
+ {
+     void *handle;
+ 
+     if ((handle = dlopen(filename, 1)) == (void *) NULL) {
+ 	*err = dlerror();
+     }
+     return((void *) handle);
+ }
diff -r -P -c src.orig/backend/port/sparc_solaris/float.h src/backend/port/sparc_solaris/float.h
*** src.orig/backend/port/sparc_solaris/float.h	Wed Dec 31 16:00:00 1969
--- src/backend/port/sparc_solaris/float.h	Thu Mar 24 17:18:03 1994
***************
*** 0 ****
--- 1,30 ----
+ /* ----------------------------------------------------------------
+  *   FILE
+  *	float.h
+  *
+  *   DESCRIPTION
+  *	definitions for ANSI floating point
+  *
+  *   NOTES
+  *	These come straight out of ANSI X3.159-1989 (p.18) and
+  *	would be unnecessary if SunOS 4 were ANSI-compliant.
+  *
+  *	This is only a partial listing because I'm lazy to type
+  *	the whole thing in.
+  *
+  *   IDENTIFICATION
+  *	/usr/local/devel/postgres-4.2-devel/src/backend/port/sparc/RCS/float.h,v 1.1 1994/02/09 00:17:30 aoki Exp
+  * ----------------------------------------------------------------
+  */
+ 
+ #ifndef floatIncluded		/* include this file only once */
+ #define floatIncluded	1
+ 
+ #define FLT_DIG	6
+ #define FLT_MIN	((float) 1.17549435e-38)
+ #define FLT_MAX	((float) 3.40282347e+38)
+ #define DBL_DIG	15
+ #define DBL_MIN	2.2250738585072014e-308
+ #define DBL_MAX	1.7976931348623157e+308
+ 
+ #endif /* floatIncluded */
diff -r -P -c src.orig/backend/port/sparc_solaris/machine.h src/backend/port/sparc_solaris/machine.h
*** src.orig/backend/port/sparc_solaris/machine.h	Wed Dec 31 16:00:00 1969
--- src/backend/port/sparc_solaris/machine.h	Thu Mar 24 17:18:03 1994
***************
*** 0 ****
--- 1,12 ----
+ 
+ /*
+  *  /usr/local/devel/postgres-4.2-devel/src/backend/port/sparc/RCS/machine.h,v 1.2 1989/09/05 17:20:51 mao Version_2
+  */
+ 
+ #ifndef MACHINE_H
+ #define MACHINE_H
+ 
+ #define BLCKSZ	8192
+ 
+ #endif
+ 
diff -r -P -c src.orig/backend/port/sparc_solaris/port-protos.h src/backend/port/sparc_solaris/port-protos.h
*** src.orig/backend/port/sparc_solaris/port-protos.h	Wed Dec 31 16:00:00 1969
--- src/backend/port/sparc_solaris/port-protos.h	Fri Mar 25 13:15:32 1994
***************
*** 0 ****
--- 1,31 ----
+ /*
+  *   FILE
+  *	port-protos.h
+  *
+  *   DESCRIPTION
+  *	port-specific prototypes for SunOS 4
+  *
+  *   NOTES
+  *
+  *   IDENTIFICATION
+  *	/usr/local/devel/postgres-4.2-devel/src/backend/port/sparc/RCS/port-protos.h,v 1.5 1993/08/04 11:02:54 aoki Exp
+  */
+ 
+ #ifndef PortProtos_H			/* include this file only once */
+ #define PortProtos_H 1
+ 
+ #include <dlfcn.h>
+ #include <tmp/postgres.h>
+ #include "fmgr.h"			/* for func_ptr */
+ #include "utils/dynamic_loader.h"
+ 
+ /* dynloader.c */
+ 
+ #define	pg_dlsym	dlsym
+ #define	pg_dlclose	dlclose
+ 
+ /* port.c */
+ 
+ void sparc_bug_set_outerjoincost ARGS((char *p, long val));
+ 
+ #endif /* PortProtos_H */
diff -r -P -c src.orig/backend/port/sparc_solaris/port.c src/backend/port/sparc_solaris/port.c
*** src.orig/backend/port/sparc_solaris/port.c	Wed Dec 31 16:00:00 1969
--- src/backend/port/sparc_solaris/port.c	Thu Mar 24 17:18:03 1994
***************
*** 0 ****
--- 1,31 ----
+ /*
+  *   FILE
+  *	port.c
+  *
+  *   DESCRIPTION
+  *	SunOS4-specific routines
+  *
+  *   INTERFACE ROUTINES
+  *	sparc_bug_set_outerjoincost
+  *
+  *   NOTES
+  *
+  *   IDENTIFICATION
+  *	/usr/local/devel/postgres-4.2-devel/src/backend/port/sparc/RCS/port.c,v 1.7 1993/08/10 19:54:48 aoki Exp
+  */
+ #include "nodes/relation.h"
+ 
+ RcsId("/usr/local/devel/postgres-4.2-devel/src/backend/port/sparc/RCS/port.c,v 1.7 1993/08/10 19:54:48 aoki Exp");
+ 
+ /*
+  * Hackety-hack for Sparc compiler error.
+  *
+  * See planner/path/joinpath.c
+  */
+ void
+ sparc_bug_set_outerjoincost(p, val)
+     char *p;
+     long val;
+ {
+     set_outerjoincost((Path)p, (Cost)val);
+ }
diff -r -P -c src.orig/backend/port/sparc_solaris/strings.h src/backend/port/sparc_solaris/strings.h
*** src.orig/backend/port/sparc_solaris/strings.h	Wed Dec 31 16:00:00 1969
--- src/backend/port/sparc_solaris/strings.h	Mon Mar 28 14:36:40 1994
***************
*** 0 ****
--- 1,3 ----
+ #include <string.h>
+ #define index(s,c)	strchr(s,c)
+ #define	rindex(s,c)	strrchr(s,c)
diff -r -P -c src.orig/backend/postmaster/postmaster.c src/backend/postmaster/postmaster.c
*** src.orig/backend/postmaster/postmaster.c	Fri Apr  1 14:45:12 1994
--- src/backend/postmaster/postmaster.c	Fri Apr  8 13:56:10 1994
***************
*** 34,39 ****
--- 34,42 ----
  #include <sys/stat.h>		/* for umask */
  #include <sys/time.h>
  #include <sys/param.h>		/* for MAXHOSTNAMELEN */
+ #ifdef SVR4
+ #include <netdb.h>		/* for MAXHOSTNAMELEN */
+ #endif
  #include <errno.h>
  #include <fcntl.h>
  #include <stdio.h>
***************
*** 588,601 ****
--- 591,614 ----
   */
  reaper()
  {
+ #ifdef SVR4
+     pid_t	pid;
+     int		status;
+ #else
      union wait	status;		/* backend exit status */
      int		pid;		/* process id of dead backend */
+ #endif
      
      if (DebugLvl)
  	fprintf(stderr, "%s: reaping dead processes...\n",
  		progname);
+ #ifdef SVR4
+     while((pid = waitpid(-1,&status, WNOHANG)) > 0)
+ 	CleanupProc(pid, status);
+ #else
      while((pid = wait3(&status, WNOHANG, (struct rusage  *) NULL)) > 0)
  	CleanupProc(pid, status.w_status);
+ #endif
  }
  
  /*
diff -r -P -c src.orig/backend/storage/buf_internals.h src/backend/storage/buf_internals.h
*** src.orig/backend/storage/buf_internals.h	Fri Apr  1 14:43:49 1994
--- src/backend/storage/buf_internals.h	Fri Apr  8 13:56:10 1994
***************
*** 148,154 ****
      defined(PORTNAME_hpux)
      char		sb_pad[60];	/* no slock_t */
  #endif /* mips */
! #if defined(PORTNAME_sparc)
      char		sb_pad[56];	/* has slock_t */
  #endif /* sparc */
  #if defined(PORTNAME_alpha)
--- 148,154 ----
      defined(PORTNAME_hpux)
      char		sb_pad[60];	/* no slock_t */
  #endif /* mips */
! #if defined(PORTNAME_sparc) || defined(PORTNAME_sparc_solaris)
      char		sb_pad[56];	/* has slock_t */
  #endif /* sparc */
  #if defined(PORTNAME_alpha)
***************
*** 157,163 ****
  #else /* HAS_TEST_AND_SET */
      char		sb_pad[48];	/* no slock_t */
  #endif /* HAS_TEST_AND_SET */
! #endif /* sparc */
  };
  
  /*
--- 157,163 ----
  #else /* HAS_TEST_AND_SET */
      char		sb_pad[48];	/* no slock_t */
  #endif /* HAS_TEST_AND_SET */
! #endif /* alpha */
  };
  
  /*
diff -r -P -c src.orig/backend/storage/file/fd.c src/backend/storage/file/fd.c
*** src.orig/backend/storage/file/fd.c	Fri Apr  1 14:43:51 1994
--- src/backend/storage/file/fd.c	Fri Apr  8 13:56:10 1994
***************
*** 28,33 ****
--- 28,39 ----
   */
  
  #include <sys/file.h>
+ #ifdef SVR4
+ #include <fcntl.h>
+ #include <unistd.h>
+ #define L_XTND	SEEK_END
+ #define L_INCR	SEEK_CUR
+ #endif
  #include <sys/param.h>
  #include <errno.h>
  #include <sys/stat.h>
***************
*** 1494,1502 ****
--- 1500,1514 ----
  	stbuf->st_ctime = ustatbuf.st_ctimespec.ts_sec;
  	stbuf->st_mtime = ustatbuf.st_mtimespec.ts_sec;
  #else
+ #if defined(PORTNAME_sparc_solaris)
+ 	stbuf->st_atim.tv_sec = ustatbuf.st_atim.tv_sec;
+ 	stbuf->st_ctim.tv_sec = ustatbuf.st_ctim.tv_sec;
+ 	stbuf->st_mtim.tv_sec = ustatbuf.st_mtim.tv_sec;
+ #else
  	stbuf->st_atime = ustatbuf.st_atime;
  	stbuf->st_ctime = ustatbuf.st_ctime;
  	stbuf->st_mtime = ustatbuf.st_mtime;
+ #endif
  #endif
      }
      return ret;
diff -r -P -c src.orig/backend/storage/ipc.h src/backend/storage/ipc.h
*** src.orig/backend/storage/ipc.h	Fri Apr  1 14:43:43 1994
--- src/backend/storage/ipc.h	Fri Apr  8 13:56:11 1994
***************
*** 93,98 ****
--- 93,99 ----
  #if defined(sequent) || \
      defined(PORTNAME_aix) || \
      defined(PORTNAME_alpha) || \
+     defined(PORTNAME_sparc_solaris) || \
      defined(PORTNAME_hpux) || \
      defined(PORTNAME_ultrix4) || \
      defined(PORTNAME_bsd44)
diff -r -P -c src.orig/backend/storage/large_object/lo_api.c src/backend/storage/large_object/lo_api.c
*** src.orig/backend/storage/large_object/lo_api.c	Fri Apr  1 14:43:56 1994
--- src/backend/storage/large_object/lo_api.c	Fri Apr  8 13:56:11 1994
***************
*** 11,16 ****
--- 11,21 ----
   */
  
  #include <sys/file.h>
+ #ifdef SVR4
+ #include <fcntl.h>
+ #include <unistd.h>
+ #define	L_XTND	SEEK_END
+ #endif
  #include "tmp/c.h"
  #include "tmp/libpq-fs.h"
  #include "access/relscan.h"
diff -r -P -c src.orig/backend/storage/smgr/md.c src/backend/storage/smgr/md.c
*** src.orig/backend/storage/smgr/md.c	Fri Apr  1 14:43:58 1994
--- src/backend/storage/smgr/md.c	Fri Apr  8 13:56:11 1994
***************
*** 5,10 ****
--- 5,15 ----
   */
  
  #include <sys/file.h>
+ #ifdef SVR4
+ #include <fcntl.h>
+ #include <unistd.h>
+ #define L_XTND	SEEK_END
+ #endif
  
  #include "tmp/c.h"
  #include "tmp/postgres.h"
diff -r -P -c src.orig/backend/storage/smgr/sj.c src/backend/storage/smgr/sj.c
*** src.orig/backend/storage/smgr/sj.c	Fri Apr  1 14:43:58 1994
--- src/backend/storage/smgr/sj.c	Fri Apr  8 13:56:11 1994
***************
*** 11,16 ****
--- 11,19 ----
  #ifdef SONY_JUKEBOX
  
  #include <sys/file.h>
+ #ifdef SVR4
+ #include <fcntl.h>
+ #endif
  #include <math.h>
  #include "machine.h"
  
diff -r -P -c src.orig/backend/tcop/postgres.c src/backend/tcop/postgres.c
*** src.orig/backend/tcop/postgres.c	Fri Apr  1 14:44:03 1994
--- src/backend/tcop/postgres.c	Fri Apr  8 16:07:42 1994
***************
*** 1144,1151 ****
       * ----------------
       */
      signal(SIGHUP, handle_warn);
!     
      if (setjmp(Warn_restart) != 0) {
  	Warnings++;
  	time(&tim);
  	
--- 1144,1154 ----
       * ----------------
       */
      signal(SIGHUP, handle_warn);
! 
      if (setjmp(Warn_restart) != 0) {
+ #if defined(PORTNAME_sparc_solaris)
+ 	sigrelse(SIGHUP);
+ #endif
  	Warnings++;
  	time(&tim);
  	
***************
*** 1290,1304 ****
--- 1293,1320 ----
      }
  }
  
+ #ifdef SVR4
+ #include <sys/times.h>
+ #include <limits.h>
+ 
+ struct tms Save_r;
+ 
+ #else
  #include <sys/resource.h>
  
  struct rusage Save_r;
+ #endif
+ 
  struct timeval Save_t;
  
  ResetUsage()
  {
          struct timezone tz;
+ #ifdef SVR4
+ 	(void)times(&Save_r);
+ #else
  	getrusage(RUSAGE_SELF, &Save_r);
+ #endif
          gettimeofday(&Save_t, &tz);
  	ResetBufferUsage();
  	ResetTupleCount();
***************
*** 1306,1311 ****
--- 1322,1328 ----
  
  ShowUsage()
  {
+ #ifndef SVR4
  	struct rusage r;
  	struct timeval user, sys;
          struct timeval elapse_t;
***************
*** 1374,1379 ****
--- 1391,1397 ----
  		r.ru_nvcsw - Save_r.ru_nvcsw,
  		r.ru_nivcsw - Save_r.ru_nivcsw,
  		r.ru_nvcsw, r.ru_nivcsw);
+ #endif /* SVR4 */
  	fprintf(StatFp, "! postgres usage stats:\n");
  	PrintBufferUsage(StatFp);
  	DisplayTupleCount(StatFp);
diff -r -P -c src.orig/backend/tmp/c.h src/backend/tmp/c.h
*** src.orig/backend/tmp/c.h	Fri Apr  1 14:44:05 1994
--- src/backend/tmp/c.h	Fri Apr  8 13:56:11 1994
***************
*** 924,929 ****
--- 924,935 ----
  #include "port/hpux/fixade.h"	/* for 8.07 unaligned access fixup */
  #endif /* PORTNAME_hpux */
  
+ #if defined(PORTNAME_sparc_solaris)	/* SVR4 redefinitions for BSDisms */
+ #define bcopy(src,dst,len)	memmove(dst,src,len)
+ #define bzero(dst,len)		memset(dst, 0, len)
+ #define bcmp(src, dst, len)	memcmp(src, dst, len)
+ #endif /* PORTNAME_sparc_solaris */
+ 
  /* ----------------
   *	end of c.h
   * ----------------
diff -r -P -c src.orig/backend/tmp/libpq-fe.h src/backend/tmp/libpq-fe.h
*** src.orig/backend/tmp/libpq-fe.h	Fri Apr  1 14:44:06 1994
--- src/backend/tmp/libpq-fe.h	Fri Apr  8 14:59:04 1994
***************
*** 41,47 ****
  extern char *PQexec ARGS((char *query));
  extern Pointer palloc ARGS((Size size));
  extern void pfree ARGS((Pointer pointer));
! extern void elog ARGS((int lev, ...));
  extern void AssertionFailed ARGS((const String assertionName, const String fileName, const int lineNumber));
  
  #endif LibpqFeIncluded
--- 41,47 ----
  extern char *PQexec ARGS((char *query));
  extern Pointer palloc ARGS((Size size));
  extern void pfree ARGS((Pointer pointer));
! extern void elog ARGS((int lev, char *, ...));
  extern void AssertionFailed ARGS((const String assertionName, const String fileName, const int lineNumber));
  
  #endif LibpqFeIncluded
diff -r -P -c src.orig/backend/tmp/libpq-fs.h src/backend/tmp/libpq-fs.h
*** src.orig/backend/tmp/libpq-fs.h	Fri Apr  1 14:44:07 1994
--- src/backend/tmp/libpq-fs.h	Fri Apr  8 13:56:11 1994
***************
*** 100,108 ****
--- 100,114 ----
      unsigned int st_sizehigh;	/* high order bits */
  /* 2^64 == 1.8 x 10^20 bytes */
      int st_uid;
+ #ifdef SVR4
+     timestruc_t st_atim;
+     timestruc_t st_mtim;
+     timestruc_t st_ctim;
+ #else /* SVR4 */
      int st_atime;
      int st_mtime;
      int st_ctime;
+ #endif /* SVR4 */
  };
  
  typedef struct Direntry_ {
diff -r -P -c src.orig/backend/utils/Gen_fmgrtab.sh src/backend/utils/Gen_fmgrtab.sh
*** src.orig/backend/utils/Gen_fmgrtab.sh	Fri Apr  1 14:44:18 1994
--- src/backend/utils/Gen_fmgrtab.sh	Fri Apr  8 13:56:12 1994
***************
*** 15,21 ****
  #----------------------------------------------------------------
  
  # cpp is usually in one of these two places...
! PATH=/usr/lib:/lib:$PATH
  
  BKIOPTS=''
  if [ $? != 0 ]
--- 15,21 ----
  #----------------------------------------------------------------
  
  # cpp is usually in one of these two places...
! PATH=/usr/lib:/lib:$PATH:/usr/ccs/lib
  
  BKIOPTS=''
  if [ $? != 0 ]
diff -r -P -c src.orig/backend/utils/adt/arrayfuncs.c src/backend/utils/adt/arrayfuncs.c
*** src.orig/backend/utils/adt/arrayfuncs.c	Fri Apr  1 14:44:24 1994
--- src/backend/utils/adt/arrayfuncs.c	Fri Apr  8 13:56:12 1994
***************
*** 8,13 ****
--- 8,17 ----
  
  #include <ctype.h>
  #include <stdio.h>
+ #ifdef SVR4
+ #include <fcntl.h>
+ #include <strings.h>
+ #endif
  #include "tmp/postgres.h"
  #include "tmp/libpq-fs.h"
  
diff -r -P -c src.orig/backend/utils/adt/chunk.c src/backend/utils/adt/chunk.c
*** src.orig/backend/utils/adt/chunk.c	Fri Apr  1 14:44:25 1994
--- src/backend/utils/adt/chunk.c	Fri Apr  8 13:56:12 1994
***************
*** 1,5 ****
--- 1,8 ----
  #include <ctype.h>
  #include "tmp/postgres.h"
+ #ifdef SVR4
+ #include <fcntl.h>
+ #endif
  #include "utils/memutils.h"
  #include "tmp/libpq-fs.h"
  
diff -r -P -c src.orig/backend/utils/adt/float.c src/backend/utils/adt/float.c
*** src.orig/backend/utils/adt/float.c	Fri Apr  1 14:44:20 1994
--- src/backend/utils/adt/float.c	Fri Apr  8 13:56:12 1994
***************
*** 1285,1289 ****
--- 1285,1309 ----
      return(0);
  }
  #endif /* PORTNAME_alpha */
+ #if defined(PORTNAME_sparc_solaris)
+ #include <ieeefp.h>
+ static int
+ isinf(d)
+ 	double d;
+ {
+ 	fpclass_t	type = fpclass(d);
+ 	switch (type) {
+ 	case FP_SNAN:
+ 	case FP_QNAN:
+ 	case FP_NINF:
+ 	case FP_PINF:
+ 	    return (1);
+ 	default:
+ 	    break;
+ 	}
+ 				       
+ 	return (0);
+ }
+ #endif /* PORTNAME_sparc_solaris */
  
  #endif /* NEED_ISINF */
diff -r -P -c src.orig/backend/utils/adt/ftype.c src/backend/utils/adt/ftype.c
*** src.orig/backend/utils/adt/ftype.c	Fri Apr  1 14:44:22 1994
--- src/backend/utils/adt/ftype.c	Fri Apr  8 13:56:12 1994
***************
*** 3,8 ****
--- 3,11 ----
   */
  
  #include <sys/file.h>
+ #ifdef SVR4
+ #include <fcntl.h>
+ #endif
  #include <sys/types.h>
  #include <sys/socket.h>
  #include <netinet/in.h>
diff -r -P -c src.orig/backend/utils/adt/geo-ops.c src/backend/utils/adt/geo-ops.c
*** src.orig/backend/utils/adt/geo-ops.c	Fri Apr  1 14:44:23 1994
--- src/backend/utils/adt/geo-ops.c	Fri Apr  8 13:56:12 1994
***************
*** 49,54 ****
--- 49,57 ----
  	if (str == NULL)
  	  elog (WARN," Bad (null) box external representation");
  
+ #if defined(PORTNAME_sparc_solaris)
+ 	coord[0] = coord[1] = coord[2] = coord[3] = "0";
+ #endif
  	if ((p = (char *)index(str, LDELIM)) == (char *)NULL)
  		elog (WARN, "Bad box external representation '%s'",str);
  	for (i = 0, p = str; *p && i < BOXNARGS && *p != RDELIM; p++)
diff -r -P -c src.orig/backend/utils/adt/nabstime.c src/backend/utils/adt/nabstime.c
*** src.orig/backend/utils/adt/nabstime.c	Fri Apr  1 14:44:21 1994
--- src/backend/utils/adt/nabstime.c	Fri Apr  8 13:56:12 1994
***************
*** 296,302 ****
  	(void) ftime(&now);
  	*tzp = now.timezone;
  #else /* USE_POSIX_TIME */
! #if defined(PORTNAME_hpux) || defined(PORTNAME_aix)
  	tzset();
  	*tzp = timezone / 60;		/* this is an X/Open-ism */
  #else /* PORTNAME_hpux || PORTNAME_aix */
--- 296,302 ----
  	(void) ftime(&now);
  	*tzp = now.timezone;
  #else /* USE_POSIX_TIME */
! #if defined(PORTNAME_hpux) || defined(PORTNAME_aix) || defined(PORTNAME_sparc_solaris)
  	tzset();
  	*tzp = timezone / 60;		/* this is an X/Open-ism */
  #else /* PORTNAME_hpux || PORTNAME_aix */
diff -r -P -c src.orig/backend/utils/adt/sets.c src/backend/utils/adt/sets.c
*** src.orig/backend/utils/adt/sets.c	Fri Apr  1 14:44:25 1994
--- src/backend/utils/adt/sets.c	Fri Apr  8 13:56:13 1994
***************
*** 8,23 ****
   */
  
  #include "tmp/postgres.h"
  #include "utils/log.h"
  #include "rules/prs2.h"
- #include "nodes/pg_lisp.h"          /* for LispValue and List */
  #include "access/htup.h"            /* for HeapTuple */
  #include "catalog/pg_proc.h"        /* for Form_pg_proc */
  #include "catalog/syscache.h"       /* for PROOID */
  #include "catalog/catname.h"        /* for ProcedureRelationName */
  #include "catalog/indexing.h"       /* for Num_pg_proc_indices */
  #include "utils/sets.h"             /* for GENERICSETNAME      */
- #include "tcop/dest.h"
  
  extern CommandDest whereToSendOutput;  /* defined in tcop/postgres.c */
  
--- 8,23 ----
   */
  
  #include "tmp/postgres.h"
+ #include "nodes/pg_lisp.h"          /* for LispValue and List */
+ #include "tcop/dest.h"
  #include "utils/log.h"
  #include "rules/prs2.h"
  #include "access/htup.h"            /* for HeapTuple */
  #include "catalog/pg_proc.h"        /* for Form_pg_proc */
  #include "catalog/syscache.h"       /* for PROOID */
  #include "catalog/catname.h"        /* for ProcedureRelationName */
  #include "catalog/indexing.h"       /* for Num_pg_proc_indices */
  #include "utils/sets.h"             /* for GENERICSETNAME      */
  
  extern CommandDest whereToSendOutput;  /* defined in tcop/postgres.c */
  
diff -r -P -c src.orig/backend/utils/cache/relcache.c src/backend/utils/cache/relcache.c
*** src.orig/backend/utils/cache/relcache.c	Fri Apr  1 14:44:26 1994
--- src/backend/utils/cache/relcache.c	Fri Apr  8 13:56:13 1994
***************
*** 27,32 ****
--- 27,35 ----
   */
  #include <errno.h>
  #include <sys/file.h>
+ #ifdef SVR4
+ #include <fcntl.h>
+ #endif
  #include <string.h>
   
  /* XXX check above includes */
***************
*** 34,40 ****
  #include "tmp/postgres.h"
  #include "tmp/miscadmin.h"
  
! RcsId("/usr/local/devel/postgres-v4r2/src/backend/utils/cache/RCS/relcache.c,v 1.76 1994/02/11 21:35:00 aoki Exp");
   
  #include "access/att.h"
  #include "access/attnum.h"
--- 37,43 ----
  #include "tmp/postgres.h"
  #include "tmp/miscadmin.h"
  
! RcsId("/usr/local/devel/postgres-4.2-devel/src/backend/utils/cache/RCS/relcache.c,v 1.76 1994/02/11 21:35:00 aoki Exp");
   
  #include "access/att.h"
  #include "access/attnum.h"
diff -r -P -c src.orig/backend/utils/error/elog.c src/backend/utils/error/elog.c
*** src.orig/backend/utils/error/elog.c	Fri Apr  1 14:44:28 1994
--- src/backend/utils/error/elog.c	Fri Apr  8 13:56:13 1994
***************
*** 7,13 ****
--- 7,18 ----
  #include <time.h>
  #include <sys/file.h>
  #include <sys/types.h>
+ #ifdef SVR4
+ #include <fcntl.h>
+ #include <stdarg.h>
+ #else
  #include <varargs.h>
+ #endif
  
  #include "tmp/postgres.h"
  #include "tmp/miscadmin.h"
***************
*** 61,72 ****
  
  /*VARARGS2*/
  void
  elog(va_alist)
  va_dcl
  {
- 	va_list ap;
  	register int	lev;
  	char		*fmt;
  	char		buf[ELOG_MAXLEN], line[ELOG_MAXLEN];
  	register char	*bp, *cp;
  	extern	int	errno, sys_nerr;
--- 66,82 ----
  
  /*VARARGS2*/
  void
+ #ifdef SVR4
+ elog(int lev, char *fmt, ...)
+ {
+ #else
  elog(va_alist)
  va_dcl
  {
  	register int	lev;
  	char		*fmt;
+ #endif
+ 	va_list ap;
  	char		buf[ELOG_MAXLEN], line[ELOG_MAXLEN];
  	register char	*bp, *cp;
  	extern	int	errno, sys_nerr;
***************
*** 78,86 ****
--- 88,100 ----
  	int		len;
  	int		i = 0;
  
+ #ifdef SVR4
+ 	va_start(ap, fmt);
+ #else
  	va_start(ap);
  	lev = va_arg(ap, int);
  	fmt = va_arg(ap, char *);
+ #endif
  	if (lev == DEBUG && Debugfile < 0) {
  		return;
  	}
***************
*** 169,174 ****
--- 183,193 ----
  	if (lev == WARN) {
  		ProcReleaseSpins(NULL);	/* get rid of spinlocks we hold */
  		kill(getpid(), 1);	/* abort to traffic cop */
+ #if defined(PORTNAME_sparc_solaris)
+ 		/* if we're running on an MP machine, we'd better
+ 		   wait for the signal */
+ 		pause();
+ #endif
  	}
  
  	if (lev == FATAL) {
diff -r -P -c src.orig/backend/utils/geo-decls.h src/backend/utils/geo-decls.h
*** src.orig/backend/utils/geo-decls.h	Fri Apr  1 14:44:14 1994
--- src/backend/utils/geo-decls.h	Fri Apr  8 13:56:13 1994
***************
*** 47,53 ****
   *	Handy things...
   *-------------------------------------------------------------------*/
  
! #ifdef sun
  extern char *sprintf();
  #endif sun
  
--- 47,53 ----
   *	Handy things...
   *-------------------------------------------------------------------*/
  
! #if defined(sun) && !defined(PORTNAME_sparc_solaris)
  extern char *sprintf();
  #endif sun
  
diff -r -P -c src.orig/backend/utils/init/magic.c src/backend/utils/init/magic.c
*** src.orig/backend/utils/init/magic.c	Fri Apr  1 14:44:31 1994
--- src/backend/utils/init/magic.c	Fri Apr  8 13:56:13 1994
***************
*** 10,15 ****
--- 10,18 ----
  
  #include <sys/file.h>
  #include <sys/types.h>
+ #ifdef SVR4
+ #include <fcntl.h>
+ #endif
  #include <sys/stat.h>
  #include <ctype.h>
  #include <strings.h>
diff -r -P -c src.orig/backend/utils/init/miscinit.c src/backend/utils/init/miscinit.c
*** src.orig/backend/utils/init/miscinit.c	Fri Apr  1 14:44:31 1994
--- src/backend/utils/init/miscinit.c	Fri Apr  8 13:56:13 1994
***************
*** 21,26 ****
--- 21,29 ----
  #include <sys/types.h>
  #include <sys/stat.h>
  #include <sys/file.h>
+ #ifdef SVR4
+ #include <fcntl.h>
+ #endif
  
  #include "tmp/postgres.h"
  
diff -r -P -c src.orig/backend/utils/log.h src/backend/utils/log.h
*** src.orig/backend/utils/log.h	Fri Apr  1 14:44:10 1994
--- src/backend/utils/log.h	Fri Apr  8 13:56:13 1994
***************
*** 55,61 ****
   * elog --
   *	Old error logging function.
   */
! extern void elog ARGS((int, ...));
  
  #endif /* !UFP */
  
--- 55,61 ----
   * elog --
   *	Old error logging function.
   */
! extern void elog ARGS((int, char *, ...));
  
  #endif /* !UFP */
  
diff -r -P -c src.orig/backend/utils/mmgr/aset.c src/backend/utils/mmgr/aset.c
*** src.orig/backend/utils/mmgr/aset.c	Fri Apr  1 14:44:32 1994
--- src/backend/utils/mmgr/aset.c	Fri Apr  8 13:56:13 1994
***************
*** 15,21 ****
--- 15,23 ----
  #include "utils/memutils.h"
  #include "utils/log.h"
  
+ #ifndef SVR4
  extern void bcopy();	/* XXX use header */
+ #endif
  
  #undef AllocSetReset
  #undef malloc
diff -r -P -c src.orig/backend/utils/mmgr/mcxt.c src/backend/utils/mmgr/mcxt.c
*** src.orig/backend/utils/mmgr/mcxt.c	Fri Apr  1 14:44:32 1994
--- src/backend/utils/mmgr/mcxt.c	Fri Apr  8 13:56:13 1994
***************
*** 22,28 ****
--- 22,30 ----
  
  #include "utils/palloc.h"
  
+ #ifndef SVR4
  extern void bcopy();	/* XXX use header */
+ #endif
  
  #undef MemoryContextAlloc
  #undef MemoryContextFree
diff -r -P -c src.orig/backend/utils/mmgr/pg_malloc.c src/backend/utils/mmgr/pg_malloc.c
*** src.orig/backend/utils/mmgr/pg_malloc.c	Fri Apr  1 14:44:33 1994
--- src/backend/utils/mmgr/pg_malloc.c	Fri Apr  8 13:56:14 1994
***************
*** 72,78 ****
--- 72,82 ----
   * Force all returned addresses to be on long boundaries.
   */
   
+ #if defined(PORTNAME_sparc_solaris)
+     size = MAXALIGN(size);
+ #else
      size = LONGALIGN(size);
+ #endif
  
  /*
   * GetNodeMemory returns NULL if size is not really a node size
diff -r -P -c src.orig/bin/Makefile.global src/bin/Makefile.global
*** src.orig/bin/Makefile.global	Fri Apr  1 14:40:13 1994
--- src/bin/Makefile.global	Fri Apr  8 13:56:14 1994
***************
*** 24,29 ****
--- 24,33 ----
  LDADD+= ${KRBLIBS}
  CFLAGS+= ${KRBFLAGS}
  .endif
+ .if (${PORTNAME} == "sparc_solaris")
+ LDADD+= -lsocket -lnsl -lm
+ .endif
+ 
  
  #
  # And all the shell scripts here get stuffed with the default
diff -r -P -c src.orig/bin/fsutils/icopy/icopy.c src/bin/fsutils/icopy/icopy.c
*** src.orig/bin/fsutils/icopy/icopy.c	Fri Apr  1 14:40:27 1994
--- src/bin/fsutils/icopy/icopy.c	Fri Apr  8 13:56:14 1994
***************
*** 6,11 ****
--- 6,14 ----
  
  #include <sys/types.h>
  #include <sys/file.h>
+ #ifdef SVR4
+ #include <fcntl.h>
+ #endif
  #include <sys/stat.h>
  #include <dirent.h>
  #include <stdio.h>
***************
*** 494,502 ****
--- 497,513 ----
  	    if (strcmp(entry->d_name, ".") == 0
  		|| strcmp(entry->d_name, "..") == 0)
  		continue;
+ #ifdef SVR4
+ 	{	int	len = entry->d_reclen-sizeof (struct dirent);
+ 	    newsrc = (char *) palloc(strlen(srcfname) + len + 2);
+ 	    sprintf(newsrc, "%s/%s", srcfname, entry->d_name);
+ 	    newdest = (char *) palloc(strlen(destfname) + len + 2);
+ 	}
+ #else
  	    newsrc = (char *) palloc(strlen(srcfname) + entry->d_namlen + 2);
  	    sprintf(newsrc, "%s/%s", srcfname, entry->d_name);
  	    newdest = (char *) palloc(strlen(destfname) + entry->d_namlen + 2);
+ #endif
  	    sprintf(newdest, "%s/%s", destfname, entry->d_name);
  	    tail->cl_next = build_inlist(newsrc, newdest);
  	    while (tail->cl_next != (COPYLIST *) NULL)
diff -r -P -c src.orig/bin/fsutils/pcat/pcat.c src/bin/fsutils/pcat/pcat.c
*** src.orig/bin/fsutils/pcat/pcat.c	Fri Apr  1 14:40:22 1994
--- src/bin/fsutils/pcat/pcat.c	Fri Apr  8 13:56:14 1994
***************
*** 1,5 ****
--- 1,8 ----
  #include <stdio.h>
  #include <sys/file.h>
+ #ifdef SVR4
+ #include <fcntl.h>
+ #endif
  
  #include "tmp/libpq-fs.h"
  
diff -r -P -c src.orig/bin/fsutils/pls/ls.c src/bin/fsutils/pls/ls.c
*** src.orig/bin/fsutils/pls/ls.c	Fri Apr  1 14:40:23 1994
--- src/bin/fsutils/pls/ls.c	Fri Apr  8 13:56:15 1994
***************
*** 48,63 ****
  static char sccsid[] = "@(#)ls.c	5.69 (Berkeley) 10/17/92";
  #endif /* not lint */
  
  #include <sys/types.h>
  #include <sys/stat.h>
  #include <sys/ioctl.h>
  #include <dirent.h>
  #include <unistd.h>
  #include <fts.h>
  #include <string.h>
  #include <errno.h>
! #include <stdio.h>
! #ifdef PORTNAME_hpux
  #include <sys/termio.h>
  #endif /* PORTNAME_hpux */
  
--- 48,67 ----
  static char sccsid[] = "@(#)ls.c	5.69 (Berkeley) 10/17/92";
  #endif /* not lint */
  
+ #include <stdio.h>
  #include <sys/types.h>
  #include <sys/stat.h>
  #include <sys/ioctl.h>
  #include <dirent.h>
  #include <unistd.h>
  #include <fts.h>
+ #ifdef SVR4
+ #include <strings.h>
+ #else
  #include <string.h>
+ #endif
  #include <errno.h>
! #if defined(PORTNAME_hpux) || defined(PORTNAME_sparc_solaris)
  #include <sys/termio.h>
  #endif /* PORTNAME_hpux */
  
diff -r -P -c src.orig/bin/fsutils/pmv/pmv.c src/bin/fsutils/pmv/pmv.c
*** src.orig/bin/fsutils/pmv/pmv.c	Fri Apr  1 14:40:25 1994
--- src/bin/fsutils/pmv/pmv.c	Fri Apr  8 13:56:15 1994
***************
*** 53,59 ****
--- 53,63 ----
  #include <unistd.h>
  #include <stdio.h>
  /*#include <stdlib.h>*/
+ #ifdef SVR4
+ #include <strings.h>
+ #else
  #include <string.h>
+ #endif
  #include "pathnames.h"
  #include "tmp/libpq-fs.h"
  
diff -r -P -c src.orig/bin/fsutils/prm/prm.c src/bin/fsutils/prm/prm.c
*** src.orig/bin/fsutils/prm/prm.c	Fri Apr  1 14:40:26 1994
--- src/bin/fsutils/prm/prm.c	Fri Apr  8 13:56:15 1994
***************
*** 5,11 ****
--- 5,15 ----
  #include <stdio.h>
  #include <sys/param.h>
  #include <sys/stat.h>
+ #ifdef SVR4
+ #include <dirent.h>
+ #else
  #include <sys/dir.h>
+ #endif
  #include <sys/file.h>
  #include <string.h>
  #include "tmp/libpq-fs.h"
diff -r -P -c src.orig/bin/ipcclean/Makefile src/bin/ipcclean/Makefile
*** src.orig/bin/ipcclean/Makefile	Fri Apr  1 14:40:16 1994
--- src/bin/ipcclean/Makefile	Fri Apr  8 13:56:15 1994
***************
*** 8,15 ****
  
  .if (${PORTNAME} == "ultrix4" || ${PORTNAME} == "hpux")
  IPCCLEANPATH=/bin:/usr/bin:/usr/ucb
! .elif (${PORTNAME} == "sparc" || ${PORTNAME} == "alpha" || ${PORTNAME} == "aix")
! IPCCLEANPATH=/bin:/sbin:/usr/ucb
  .endif
  
  SEDSCRIPT= -e "s^_fUnKy_IPCCLEANPATH_sTuFf_^${IPCCLEANPATH}^g"
--- 8,15 ----
  
  .if (${PORTNAME} == "ultrix4" || ${PORTNAME} == "hpux")
  IPCCLEANPATH=/bin:/usr/bin:/usr/ucb
! .elif (${PORTNAME} == "sparc" || ${PORTNAME} == "alpha" || ${PORTNAME} == "aix" || ${PORTNAME} == "sparc_solaris")
! IPCCLEANPATH=/bin:/sbin:/usr/ucb:/usr/local/sbin
  .endif
  
  SEDSCRIPT= -e "s^_fUnKy_IPCCLEANPATH_sTuFf_^${IPCCLEANPATH}^g"
diff -r -P -c src.orig/bin/ipcclean/sparc_solaris/ipcclean.sh src/bin/ipcclean/sparc_solaris/ipcclean.sh
*** src.orig/bin/ipcclean/sparc_solaris/ipcclean.sh	Wed Dec 31 16:00:00 1969
--- src/bin/ipcclean/sparc_solaris/ipcclean.sh	Sat Mar 26 10:41:22 1994
***************
*** 0 ****
--- 1,8 ----
+ #!/bin/sh
+ #
+ # /usr/local/devel/postgres-4.2-devel/src/bin/ipcclean/sparc/RCS/ipcclean.sh,v 1.3 1993/07/10 04:31:17 aoki Exp
+ #
+ PATH=_fUnKy_IPCCLEANPATH_sTuFf_:$PATH
+ export PATH
+ ipcs | egrep '^m .*|^s .*' | egrep "`whoami`|postgres|picasso" | \
+ awk '{printf "ipcrm -%s %s\n", $1, $2}' '-' | sh
diff -r -P -c src.orig/bin/monitor/monitor.c src/bin/monitor/monitor.c
*** src.orig/bin/monitor/monitor.c	Fri Apr  1 14:40:14 1994
--- src/bin/monitor/monitor.c	Fri Apr  8 13:56:15 1994
***************
*** 9,14 ****
--- 9,20 ----
  #include <strings.h>
  #include <sys/file.h>
  #include <sys/param.h>	/* for MAXHOSTNAMELEN */
+ #ifdef SVR4
+ #include <netdb.h>	/* for MAXHOSTNAMELEN */
+ #include <fcntl.h>
+ #include <unistd.h>
+ #define	L_INCR	SEEK_CUR
+ #endif
  #include <sys/types.h>
  #include <sys/uio.h>
  
diff -r -P -c src.orig/bin/pagedoc/pagedoc.c src/bin/pagedoc/pagedoc.c
*** src.orig/bin/pagedoc/pagedoc.c	Fri Apr  1 14:40:15 1994
--- src/bin/pagedoc/pagedoc.c	Fri Apr  8 13:56:15 1994
***************
*** 21,26 ****
--- 21,29 ----
  
  #include <stdio.h>
  #include <sys/file.h>
+ #ifdef SVR4
+ #include <fcntl.h>
+ #endif
  
  static char *RcsId = "/usr/local/devel/postgres-v4r2/src/bin/pagedoc/RCS/pagedoc.c,v 1.5 1993/06/13 23:10:14 mao Exp";
  
diff -r -P -c src.orig/bin/pg_ufp/Makefile src/bin/pg_ufp/Makefile
*** src.orig/bin/pg_ufp/Makefile	Fri Apr  1 14:40:28 1994
--- src/bin/pg_ufp/Makefile	Fri Apr  8 13:56:15 1994
***************
*** 22,28 ****
  # (minus the lex/yacc libraries).
  # Unfortunately, it must be sync'd by hand.
  #
! .if (${PORTNAME} == "ultrix4" || ${PORTNAME} == "sparc")
  LDADD+= -ldl
  .elif (${PORTNAME} == "alpha")
  # nothing
--- 22,29 ----
  # (minus the lex/yacc libraries).
  # Unfortunately, it must be sync'd by hand.
  #
! .if (${PORTNAME} == "ultrix4" || ${PORTNAME} == "sparc" || \
!       ${PORTNAME} == "sparc_solaris")
  LDADD+= -ldl
  .elif (${PORTNAME} == "alpha")
  # nothing
diff -r -P -c src.orig/libpq/fe-dumpdata.c src/libpq/fe-dumpdata.c
*** src.orig/libpq/fe-dumpdata.c	Fri Apr  1 14:40:05 1994
--- src/libpq/fe-dumpdata.c	Fri Apr  8 13:56:15 1994
***************
*** 82,88 ****
--- 82,92 ----
      for (i = 0; i < nfields; i++) {
  	/* If the field value is absent, do nothing. */
  	if (!(bmap & 0200))
+ #if defined(PORTNAME_sparc_solaris)
+ 	    values[i] = "";
+ #else
  	    values[i] = NULL;
+ #endif
  	else {
  	    /* Get the value length (the first four bytes are for length). */
  	    vlen = pq_getint(4) - 4;
diff -r -P -c src.orig/libpq/fe-pqstubs.c src/libpq/fe-pqstubs.c
*** src.orig/libpq/fe-pqstubs.c	Fri Apr  1 14:40:06 1994
--- src/libpq/fe-pqstubs.c	Fri Apr  8 13:56:16 1994
***************
*** 22,28 ****
--- 22,32 ----
  
  #include <stdio.h>
  #include <sys/types.h>
+ #ifdef SVR4
+ #include <stdarg.h>
+ #else
  #include <varargs.h>
+ #endif
  
  #include "tmp/c.h"
  #undef palloc
***************
*** 123,138 ****
   * ----------------
   */
  void
  elog(va_alist)
      va_dcl
  {
      va_list ap;
      int lev;
      char *fmt;
- 
      va_start(ap);
      lev = va_arg(ap, int);
      fmt = va_arg(ap, char *);
      va_end(ap);
      fprintf(stderr, "FATAL: error level %d: %s\n", lev, fmt);
      if (lev == FATAL)
--- 127,149 ----
   * ----------------
   */
  void
+ #ifdef SVR4
+ elog(int lev, char *fmt, ...)
+ {
+     va_list ap;
+     va_start(ap,fmt);
+ #else
  elog(va_alist)
      va_dcl
  {
      va_list ap;
      int lev;
      char *fmt;
      va_start(ap);
      lev = va_arg(ap, int);
      fmt = va_arg(ap, char *);
+ #endif
+ 
      va_end(ap);
      fprintf(stderr, "FATAL: error level %d: %s\n", lev, fmt);
      if (lev == FATAL)
diff -r -P -c src.orig/libpq/fe-pqufs.c src/libpq/fe-pqufs.c
*** src.orig/libpq/fe-pqufs.c	Fri Apr  1 14:40:05 1994
--- src/libpq/fe-pqufs.c	Fri Apr  8 15:01:25 1994
***************
*** 62,67 ****
--- 62,68 ----
   * as queries.
   */
  
+ #include <strings.h>
  #include "tmp/simplelists.h"
  #include "tmp/libpq.h"
  #include "tmp/libpq-fe.h"
diff -r -P -c src.orig/regress/Makefile.global src/regress/Makefile.global
*** src.orig/regress/Makefile.global	Fri Apr  1 23:56:16 1994
--- src/regress/Makefile.global	Fri Apr  8 15:55:38 1994
***************
*** 17,22 ****
--- 17,29 ----
  .SUFFIXES: ${SLSUFF}
  .o${SLSUFF}:
  	${LD} -dc -dp -Bdynamic -o ${.TARGET} ${.ALLSRC}
+ .elif (${PORTNAME} == "sparc_solaris")
+ CFLAGS+= -shared
+ SLSUFF=.so
+ .SUFFIXES: ${SLSUFF}
+ LDADD+= -lsocket -lnsl
+ .o${SLSUFF}:
+ 	${CC} -shared -o ${.TARGET} ${.ALLSRC}
  .elif (${PORTNAME} == "alpha")
  SLSUFF=.so
  .SUFFIXES: ${SLSUFF}
diff -r -P -c src.orig/tools/bmake/Bootstrap src/tools/bmake/Bootstrap
*** src.orig/tools/bmake/Bootstrap	Fri Apr  1 14:45:20 1994
--- src/tools/bmake/Bootstrap	Fri Apr  8 18:52:31 1994
***************
*** 70,79 ****
  s/^MORELIBS=.*/MORELIBS=/
  EOF
  		;;
  	ultrix4)
  		cat > $SEDFILE << 'EOF'
  s/^PORTNAME=.*/PORTNAME=ultrix4/
! s/^OLD_CC=.*/OLD_CC=-Dvoid="char *" -Dconst=/
  s/^AR_TYPE=.*/AR_TYPE=-DUSE_RANLIB/
  s/^NEED_STRINGS=.*/NEED_STRINGS=/
  s/^BSD_WAIT3.*=/BSD_WAIT3=/
--- 70,99 ----
  s/^MORELIBS=.*/MORELIBS=/
  EOF
  		;;
+ 	sparc_solaris)
+ 		cat > $SEDFILE << 'EOF'
+ s/^PORTNAME=.*/PORTNAME=sparc_solaris/
+ s/^OLD_CC=.*/OLD_CC=-BSD -notraditional/
+ s/^AR_TYPE=.*/AR_TYPE=/
+ s/^NEED_STRINGS=.*/NEED_STRINGS=/
+ s/^BSD_WAIT3.*=/BSD_WAIT3=/
+ s/^MORESRCS=.*/MORESRCS=setenv.c/
+ s/^MOREOBJS=.*/MOREOBJS=setenv.o/
+ s/^MORELIBS=.*/MORELIBS=/
+ EOF
+ 		eval \
+ 		`grep "^TOOLSBINDIR" ../../Makefile.global|sed -e 's/ //g'`
+ 		eval \
+ 		`grep "^GCCBINDIR" ../../Makefile.global|sed -e 's/ //g'`
+ 		cat cc.solaris|sed -e "s,GCCBINDIR,$GCCBINDIR,g" \
+ 		> ${TOOLSBINDIR}/cc
+ 		chmod +x ${TOOLSBINDIR}/cc
+ 		PATH=${TOOLSBINDIR}:$PATH; export PATH
+ 		;;
  	ultrix4)
  		cat > $SEDFILE << 'EOF'
  s/^PORTNAME=.*/PORTNAME=ultrix4/
! s/^OLD_CC=.*/OLD_CC=-Dvoid="char *" -Dconst= /
  s/^AR_TYPE=.*/AR_TYPE=-DUSE_RANLIB/
  s/^NEED_STRINGS=.*/NEED_STRINGS=/
  s/^BSD_WAIT3.*=/BSD_WAIT3=/
diff -r -P -c src.orig/tools/bmake/Makefile src/tools/bmake/Makefile
*** src.orig/tools/bmake/Makefile	Fri Apr  1 14:45:13 1994
--- src/tools/bmake/Makefile	Fri Apr  8 13:56:16 1994
***************
*** 18,23 ****
--- 18,29 ----
  SRCS+= strerror.c setenv.c
  .endif
  
+ .if ( ${PORTNAME} == "sparc_solaris" )
+ CFLAGS+= -BSD -notraditional
+ SRCS+= setenv.c
+ LDADD+= -BSD
+ .endif
+ 
  .if ( ${PORTNAME} == "alpha" )
  CFLAGS+= -D_BSD
  LDADD+= -lbsd
Binary files src.orig/tools/bmake/arch.o and src/tools/bmake/arch.o differ
Binary files src.orig/tools/bmake/buf.o and src/tools/bmake/buf.o differ
diff -r -P -c src.orig/tools/bmake/cc.solaris src/tools/bmake/cc.solaris
*** src.orig/tools/bmake/cc.solaris	Wed Dec 31 16:00:00 1969
--- src/tools/bmake/cc.solaris	Fri Apr  8 18:51:30 1994
***************
*** 0 ****
--- 1,98 ----
+ #!/bin/sh
+ # /usr/local/bin/cc	Solaris 2.3	940408	SIO/ODF	fmd
+ # cc -- compile/link with gcc under Solaris 2.x
+ # Compilation environment is determined by environmental
+ # variable COMPILER_ENVIRONMENT (BSD or SYSV), or by -BSD or -SYSV
+ # command-line switches.
+ #
+ INCLUDES=
+ LIBS=
+ LIBDIRS=
+ FILES=
+ OPTIONS=
+ link=1
+ noRoption=0
+ trad=1
+ OutputFile=
+ 
+ while [ $# -gt 0 ]
+ do
+     case "$1" in
+     -c | -E | -M* | -S)
+ 	link=0
+ 	OPTIONS="${OPTIONS} $1"
+ 	shift
+ 	;;
+     -notraditional)
+ 	trad=0
+ 	shift
+ 	;;
+     -BSD)
+ 	COMPILER_ENVIRONMENT=BSD
+ 	shift
+ 	;;
+     -SYSV)
+ 	COMPILER_ENVIRONMENT=SYSV
+ 	shift
+ 	;;
+     -R*)
+ 	noRoption=1
+ 	OPTIONS="${OPTIONS} $1"
+ 	shift
+ 	;;
+     -I*)
+ 	INCLUDES="${INCLUDES} $1"
+ 	shift
+ 	;;
+     -L*)
+ 	LIBDIRS="${LIBDIRS} $1"
+ 	LIBS="${LIBS} $1"
+ 	shift
+ 	;;
+     -l*)
+ 	LIBS="${LIBS} $1"
+ 	shift
+ 	;;
+     -o)
+ 	OutputFile="$1 $2"
+ 	shift 2
+ 	;;
+     -*)
+ 	OPTIONS="${OPTIONS} $1"
+ 	shift
+ 	;;
+     *)
+ 	FILES="${FILES} $1"
+ 	shift
+ 	;;
+     esac
+ done
+ 
+ COMPILER_ENVIRONMENT=${COMPILER_ENVIRONMENT:-SYSV}
+ 
+ if [ $link -eq 1 ]; then
+     if [ ${COMPILER_ENVIRONMENT} = BSD ]; then
+ 	LIBS="${LIBS} -L/usr/ucblib -lucb -lsocket -lnsl -lelf -laio"
+ 	LIBDIRS="${LIBDIRS} -L/usr/ucblib"
+     fi
+     if [ ${noRoption} -eq 0 -a "${LIBDIRS}" != "" ]; then
+ 	LIBDIRS=`echo ${LIBDIRS}|sed -e 's/-L//g' -e 's/ /:/g'`
+ 	LIBS="-R${LIBDIRS}${LD_RUN_PATH+:$LD_RUN_PATH} ${LIBS}"
+     fi
+ fi
+ 
+ case "${COMPILER_ENVIRONMENT}" in
+ SYSV)
+     PATH=/usr/bin:GCCBINDIR:/usr/ucb:/usr/ccs/bin:; export PATH
+     ;;
+ BSD)
+     if [ $trad -eq 1 ]; then
+ 	OPTIONS="${OPTIONS} -traditional"
+     fi
+     INCLUDES="${INCLUDES} -I/usr/ucbinclude"
+     PATH=/usr/ucb:GCCBINDIR:/usr/bin:/usr/ccs/bin:; export PATH
+     ;;
+ esac
+ 
+ exec GCCBINDIR/gcc ${OPTIONS} ${INCLUDES} ${FILES} ${LIBS} ${OutputFile}
+ 
diff -r -P -c src.orig/tools/bmake/compat.c src/tools/bmake/compat.c
*** src.orig/tools/bmake/compat.c	Fri Apr  1 14:45:18 1994
--- src/tools/bmake/compat.c	Fri Apr  8 13:56:16 1994
***************
*** 277,285 ****
  	}
  	
  	if (stat > -1) {
! 	    if (WIFSTOPPED(reason)) {
  		status = reason.w_stopval;		/* stopped */
! 	    } else if (WIFEXITED(reason)) {
  		status = reason.w_retcode;		/* exited */
  		if (status != 0) {
  		    printf ("*** Error code %d", status);
--- 277,285 ----
  	}
  	
  	if (stat > -1) {
! 	    if (WIFSTOPPED(reason.w_status)) {
  		status = reason.w_stopval;		/* stopped */
! 	    } else if (WIFEXITED(reason.w_status)) {
  		status = reason.w_retcode;		/* exited */
  		if (status != 0) {
  		    printf ("*** Error code %d", status);
***************
*** 290,296 ****
  	    } 
  
  	    
! 	    if (!WIFEXITED(reason) || (status != 0)) {
  		if (errCheck) {
  		    gn->made = ERROR;
  		    if (keepgoing) {
--- 290,296 ----
  	    } 
  
  	    
! 	    if (!WIFEXITED(reason.w_status) || (status != 0)) {
  		if (errCheck) {
  		    gn->made = ERROR;
  		    if (keepgoing) {
diff -r -P -c src.orig/tools/bmake/dir.c src/tools/bmake/dir.c
*** src.orig/tools/bmake/dir.c	Fri Apr  1 14:45:18 1994
--- src/tools/bmake/dir.c	Fri Apr  8 13:56:16 1994
***************
*** 83,89 ****
--- 83,93 ----
  
  #include <stdio.h>
  #include <sys/types.h>
+ #ifdef SVR4
+ #include <sys/dirent.h>
+ #else
  #include <sys/dir.h>
+ #endif
  #include <sys/stat.h>
  #include "make.h"
  #include "hash.h"
***************
*** 1039,1045 ****
  		 * (0-inode slots just take up space), so we have to do
  		 * it ourselves.
  		 */
! 		if (dp->d_fileno == 0) {
  		    continue;
  		}
  #endif sun
--- 1043,1049 ----
  		 * (0-inode slots just take up space), so we have to do
  		 * it ourselves.
  		 */
! 		if (dp->d_ino == 0) {
  		    continue;
  		}
  #endif sun
diff -r -P -c src.orig/tools/bmake/job.c src/tools/bmake/job.c
*** src.orig/tools/bmake/job.c	Fri Apr  1 14:45:17 1994
--- src/tools/bmake/job.c	Fri Apr  8 13:56:16 1994
***************
*** 572,580 ****
  {
      Boolean 	  done;
  
!     if ((WIFEXITED(status) &&
  	  (((status.w_retcode != 0) && !(job->flags & JOB_IGNERR)))) ||
! 	(WIFSIGNALED(status) && (status.w_termsig != SIGCONT)))
      {
  	/*
  	 * If it exited non-zero and either we're doing things our
--- 572,580 ----
  {
      Boolean 	  done;
  
!     if ((WIFEXITED(status.w_status) &&
  	  (((status.w_retcode != 0) && !(job->flags & JOB_IGNERR)))) ||
! 	(WIFSIGNALED(status.w_status) && (status.w_termsig != SIGCONT)))
      {
  	/*
  	 * If it exited non-zero and either we're doing things our
***************
*** 604,610 ****
  	    fclose(job->cmdFILE);
  	}
  	done = TRUE;
!     } else if (WIFEXITED(status) && status.w_retcode != 0) {
  	/*
  	 * Deal with ignored errors in -B mode. We need to print a message
  	 * telling of the ignored error as well as setting status.w_status
--- 604,610 ----
  	    fclose(job->cmdFILE);
  	}
  	done = TRUE;
!     } else if (WIFEXITED(status.w_status) && status.w_retcode != 0) {
  	/*
  	 * Deal with ignored errors in -B mode. We need to print a message
  	 * telling of the ignored error as well as setting status.w_status
***************
*** 622,629 ****
      }
      
      if (done ||
! 	WIFSTOPPED(status) ||
! 	(WIFSIGNALED(status) && (status.w_termsig == SIGCONT)) ||
  	DEBUG(JOB))
      {
  	FILE	  *out;
--- 622,629 ----
      }
      
      if (done ||
! 	WIFSTOPPED(status.w_status) ||
! 	(WIFSIGNALED(status.w_status) && (status.w_termsig == SIGCONT)) ||
  	DEBUG(JOB))
      {
  	FILE	  *out;
***************
*** 639,645 ****
  	    out = stdout;
  	}
  
! 	if (WIFEXITED(status)) {
  	    if (status.w_retcode != 0) {
  		if (usePipes && job->node != lastNode) {
  		    fprintf (out, targFmt, job->node->name);
--- 639,645 ----
  	    out = stdout;
  	}
  
! 	if (WIFEXITED(status.w_status)) {
  	    if (status.w_retcode != 0) {
  		if (usePipes && job->node != lastNode) {
  		    fprintf (out, targFmt, job->node->name);
***************
*** 658,664 ****
  		}
  		fprintf (out, "*** Completed successfully\n");
  	    }
! 	} else if (WIFSTOPPED(status)) {
  	    if (usePipes && job->node != lastNode) {
  		fprintf (out, targFmt, job->node->name);
  		lastNode = job->node;
--- 658,664 ----
  		}
  		fprintf (out, "*** Completed successfully\n");
  	    }
! 	} else if (WIFSTOPPED(status.w_status)) {
  	    if (usePipes && job->node != lastNode) {
  		fprintf (out, targFmt, job->node->name);
  		lastNode = job->node;
***************
*** 1930,1936 ****
  	jnode = Lst_Find (jobs, (ClientData)pid, JobCmpPid);
  
  	if (jnode == NILLNODE) {
! 	    if (WIFSIGNALED(status) && (status.w_termsig == SIGCONT)) {
  		jnode = Lst_Find(stoppedJobs, (ClientData)pid, JobCmpPid);
  		if (jnode == NILLNODE) {
  		    Error("Resumed child (%d) not in table", pid);
--- 1930,1936 ----
  	jnode = Lst_Find (jobs, (ClientData)pid, JobCmpPid);
  
  	if (jnode == NILLNODE) {
! 	    if (WIFSIGNALED(status.w_status) && (status.w_termsig == SIGCONT)) {
  		jnode = Lst_Find(stoppedJobs, (ClientData)pid, JobCmpPid);
  		if (jnode == NILLNODE) {
  		    Error("Resumed child (%d) not in table", pid);



^ permalink  raw  reply  [nested|flat] 3+ messages in thread


end of thread, other threads:[~1994-06-09 22:01 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
1994-06-06 14:59 Solaris2.x Drunkard Terry <yutaka-i@is.aist-nara.ac.jp>
1994-06-09 22:01 ` Paul M. Aoki <aoki@CS.Berkeley.EDU>
1994-06-09 07:15 Re: Solaris2.x Frank Delahoyde <frank@odf.UCSD.EDU>

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox