diff --git a/src/backend/port/dynloader/univel.c b/src/backend/port/dynloader/univel.c index d0cd246636..98b6d61d30 100644 --- a/src/backend/port/dynloader/univel.c +++ b/src/backend/port/dynloader/univel.c @@ -1,4 +1,4 @@ /* Dummy file used for nothing at this point * * see univel.h - */ + */ diff --git a/src/backend/port/dynloader/univel.h b/src/backend/port/dynloader/univel.h index 38e43833da..78222686fd 100644 --- a/src/backend/port/dynloader/univel.h +++ b/src/backend/port/dynloader/univel.h @@ -1,23 +1,23 @@ /*------------------------------------------------------------------------- * - * port-protos.h-- + * univel.h-- * port-specific prototypes for Intel x86/UNIXWARE * * * Copyright (c) 1994, Regents of the University of California * - * port-protos.h,v 1.2 1995/03/17 06:40:18 andrew Exp + * univel.h,v 1.2 1995/03/17 06:40:18 andrew Exp * *------------------------------------------------------------------------- - */ -#ifndef PORT_PROTOS_H -#define PORT_PROTOS_H - -#include -#include "fmgr.h" /* for func_ptr */ -#include "utils/dynamic_loader.h" - - /* dynloader.c */ + */ +#ifndef PORT_PROTOS_H +#define PORT_PROTOS_H + +#include +#include "fmgr.h" /* for func_ptr */ +#include "utils/dynamic_loader.h" + + /* dynloader.c */ /* * Dynamic Loader on Intel x86/Intel SVR4. * @@ -25,10 +25,10 @@ * libraries (ie. dlopen/dlsym/dlclose). The user must specify a shared * library as the file to be dynamically loaded. * - */ -#define pg_dlopen(f) dlopen(f,RTLD_LAZY) -#define pg_dlsym dlsym -#define pg_dlclose dlclose -#define pg_dlerror dlerror - -#endif /* PORT_PROTOS_H */ + */ +#define pg_dlopen(f) dlopen(f,RTLD_LAZY) +#define pg_dlsym dlsym +#define pg_dlclose dlclose +#define pg_dlerror dlerror + +#endif /* PORT_PROTOS_H */ diff --git a/src/include/access/heapam.h b/src/include/access/heapam.h index 7dc2533735..8e322b1d91 100644 --- a/src/include/access/heapam.h +++ b/src/include/access/heapam.h @@ -6,7 +6,7 @@ * * Copyright (c) 1994, Regents of the University of California * - * $Id: heapam.h,v 1.30 1998/02/26 04:40:05 momjian Exp $ + * $Id: heapam.h,v 1.31 1998/03/01 04:46:56 scrappy Exp $ * *------------------------------------------------------------------------- */ @@ -88,6 +88,8 @@ typedef HeapAccessStatisticsData *HeapAccessStatistics; * * ---------------- */ +#if !defined(USE_UNIVEL_CC) + #define fastgetattr(tup, attnum, tupleDesc, isnull) \ ( \ AssertMacro((attnum) > 0) ? \ @@ -130,7 +132,57 @@ typedef HeapAccessStatisticsData *HeapAccessStatistics; ) \ ) +#else /* !defined(USE_UNIVEL_CC) */ +extern Datum nocachegetattr(HeapTuple tup, int attnum, + TupleDesc att, bool *isnull); + +static Datum fastgetattr(HeapTuple tup, int attnum, TupleDesc tupleDesc, + bool *isnull) +{ + return ( + (attnum) > 0 ? + ( + ((isnull) ? (*(isnull) = false) : (dummyret)NULL), + HeapTupleNoNulls(tup) ? + ( + ((tupleDesc)->attrs[(attnum)-1]->attcacheoff != -1 || + (attnum) == 1) ? + ( + (Datum)fetchatt(&((tupleDesc)->attrs[(attnum)-1]), + (char *) (tup) + (tup)->t_hoff + + ( + ((attnum) != 1) ? + (tupleDesc)->attrs[(attnum)-1]->attcacheoff + : + 0 + ) + ) + ) + : + nocachegetattr((tup), (attnum), (tupleDesc), (isnull)) + ) + : + ( + att_isnull((attnum)-1, (tup)->t_bits) ? + ( + ((isnull) ? (*(isnull) = true) : (dummyret)NULL), + (Datum)NULL + ) + : + ( + nocachegetattr((tup), (attnum), (tupleDesc), (isnull)) + ) + ) + ) + : + ( + (Datum)NULL + ) + ); +} + +#endif /* ---------------- * heap_getattr diff --git a/src/include/port/univel.h b/src/include/port/univel.h index a7daf59460..cd52bd7687 100644 --- a/src/include/port/univel.h +++ b/src/include/port/univel.h @@ -9,13 +9,14 @@ * Define this if you are compiling with * the native UNIXWARE C compiler. ***************************************/ -#define USE_UNIVEL_CC_ASM +#define USE_UNIVEL_CC typedef unsigned char slock_t; /*************************************************************** - * strcasecmp() is in c89, but is not in any include file :-( + * strcasecmp() is in c89.a. The following include will get the + * needed prototype. ***************************************************************/ -int strcasecmp(char *, char *); +#include #ifndef BIG_ENDIAN #define BIG_ENDIAN 4321 diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h index f63a37193c..89612c1b71 100644 --- a/src/include/storage/s_lock.h +++ b/src/include/storage/s_lock.h @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/include/storage/s_lock.h,v 1.27 1998/02/26 04:43:32 momjian Exp $ + * $Header: /cvsroot/pgsql/src/include/storage/s_lock.h,v 1.28 1998/03/01 04:47:24 scrappy Exp $ * *------------------------------------------------------------------------- */ @@ -305,21 +305,21 @@ tas_dummy() #if defined(NEED_I386_TAS_ASM) -#if defined(USE_UNIVEL_CC_ASM) +#if defined(USE_UNIVEL_CC) asm void S_LOCK(char *lval) { - %lab again; +% lab again; /* Upon entry, %eax will contain the pointer to the lock byte */ - pushl % ebx - xchgl % eax, %ebx - movb $ - 1, %al + pushl %ebx + xchgl %eax, %ebx + movb $255, %al again: lock - xchgb % al, (%ebx) - cmpb $0, %al - jne again - popl % ebx + xchgb %al, (%ebx) + cmpb $0, %al + jne again + popl %ebx } #else diff --git a/src/template/univel b/src/template/univel index 327769563c..21b8592663 100644 --- a/src/template/univel +++ b/src/template/univel @@ -5,6 +5,7 @@ SRCH_INC: SRCH_LIB: USE_LOCALE:no DLSUFFIX:.so -YACC=/usr/ccs/bin/yacc YACC:yacc +YFLAGS:-d CC:cc +LIBS:-lc89