aboutsummaryrefslogtreecommitdiff
path: root/src/backend
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend')
-rw-r--r--src/backend/Makefile25
-rw-r--r--src/backend/port/dynloader/netbsd.c107
-rw-r--r--src/backend/port/dynloader/netbsd.h49
3 files changed, 170 insertions, 11 deletions
diff --git a/src/backend/Makefile b/src/backend/Makefile
index fe77dde8e23..1033de1c8ab 100644
--- a/src/backend/Makefile
+++ b/src/backend/Makefile
@@ -34,7 +34,7 @@
#
#
# IDENTIFICATION
-# $Header: /cvsroot/pgsql/src/backend/Makefile,v 1.43 2000/02/27 01:26:12 tgl Exp $
+# $Header: /cvsroot/pgsql/src/backend/Makefile,v 1.44 2000/03/08 01:58:16 momjian Exp $
#
#-------------------------------------------------------------------------
@@ -165,10 +165,11 @@ endif
# and (2) the parameters of a database system should be set at initdb time,
# not at postgres build time.
-.PHONY: install install-bin install-lib install-headers
+.PHONY: install install-bin install-templates install-headers
-install: $(LIBDIR) $(BINDIR) $(HEADERDIR) postgres $(POSTGRES_IMP) \
- install-bin install-lib install-headers
+install: $(LIBDIR) $(BINDIR) $(HEADERDIR) $(TEMPLATEDIR) \
+ postgres $(POSTGRES_IMP) \
+ install-bin install-templates install-headers
install-bin: $(BINDIR) postgres$(X) $(POSTGRES_IMP)
$(INSTALL) $(INSTL_EXE_OPTS) postgres$(X) $(BINDIR)/postgres$(X)
@@ -184,22 +185,22 @@ ifeq ($(MAKE_DLL), true)
endif
endif
-install-lib: $(LIBDIR) \
+install-templates: $(TEMPLATEDIR) \
global1.bki.source local1_template1.bki.source \
global1.description local1_template1.description \
libpq/pg_hba.conf.sample optimizer/geqo/pg_geqo.sample
$(INSTALL) $(INSTLOPTS) global1.bki.source \
- $(LIBDIR)/global1.bki.source
+ $(TEMPLATEDIR)/global1.bki.source
$(INSTALL) $(INSTLOPTS) global1.description \
- $(LIBDIR)/global1.description
+ $(TEMPLATEDIR)/global1.description
$(INSTALL) $(INSTLOPTS) local1_template1.bki.source \
- $(LIBDIR)/local1_template1.bki.source
+ $(TEMPLATEDIR)/local1_template1.bki.source
$(INSTALL) $(INSTLOPTS) local1_template1.description \
- $(LIBDIR)/local1_template1.description
+ $(TEMPLATEDIR)/local1_template1.description
$(INSTALL) $(INSTLOPTS) libpq/pg_hba.conf.sample \
- $(LIBDIR)/pg_hba.conf.sample
+ $(TEMPLATEDIR)/pg_hba.conf.sample
$(INSTALL) $(INSTLOPTS) optimizer/geqo/pg_geqo.sample \
- $(LIBDIR)/pg_geqo.sample
+ $(TEMPLATEDIR)/pg_geqo.sample
install-headers: fmgr.h $(SRCDIR)/include/config.h
-@if [ ! -d $(HEADERDIR) ]; then mkdir $(HEADERDIR); fi
@@ -263,6 +264,8 @@ $(LIBDIR):
mkdir $@
$(HEADERDIR):
mkdir $@
+$(TEMPLATEDIR):
+ mkdir $@
#############################################################################
#
diff --git a/src/backend/port/dynloader/netbsd.c b/src/backend/port/dynloader/netbsd.c
new file mode 100644
index 00000000000..b77dea182f7
--- /dev/null
+++ b/src/backend/port/dynloader/netbsd.c
@@ -0,0 +1,107 @@
+/*-
+ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc
+ * Portions Copyright (c) 1990 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#if defined(LIBC_SCCS) && !defined(lint)
+static char sccsid[] = "@(#)dl.c 5.4 (Berkeley) 2/23/91";
+
+#endif /* LIBC_SCCS and not lint */
+
+#include <sys/types.h>
+#include <nlist.h>
+#include "link.h"
+#include <dlfcn.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "dynloader.h"
+
+static char error_message[BUFSIZ];
+
+char *
+BSD44_derived_dlerror(void)
+{
+ static char ret[BUFSIZ];
+
+ strcpy(ret, error_message);
+ error_message[0] = 0;
+ return (ret[0] == 0) ? (char *) NULL : ret;
+}
+
+void *
+BSD44_derived_dlopen(const char *file, int num)
+{
+#if defined(__mips__) || (defined(__NetBSD__) && defined(__vax__))
+ sprintf(error_message, "dlopen (%s) not supported", file);
+ return NULL;
+#else
+ void *vp;
+
+ if ((vp = dlopen((char *) file, num)) == (void *) NULL)
+ sprintf(error_message, "dlopen (%s) failed", file);
+ return vp;
+#endif
+}
+
+void *
+BSD44_derived_dlsym(void *handle, const char *name)
+{
+#if defined(__mips__) || (defined(__NetBSD__) && defined(__vax__))
+ sprintf(error_message, "dlsym (%s) failed", name);
+ return NULL;
+#elif defined(__ELF__)
+ return dlsym(handle, name);
+#else
+ void *vp;
+ char buf[BUFSIZ];
+
+ if (*name != '_')
+ {
+ sprintf(buf, "_%s", name);
+ name = buf;
+ }
+ if ((vp = dlsym(handle, (char *) name)) == (void *) NULL)
+ sprintf(error_message, "dlsym (%s) failed", name);
+ return vp;
+#endif
+}
+
+void
+BSD44_derived_dlclose(void *handle)
+{
+#if defined(__mips__) || (defined(__NetBSD__) && defined(__vax__))
+#else
+ dlclose(handle);
+#endif
+}
diff --git a/src/backend/port/dynloader/netbsd.h b/src/backend/port/dynloader/netbsd.h
new file mode 100644
index 00000000000..ad583242835
--- /dev/null
+++ b/src/backend/port/dynloader/netbsd.h
@@ -0,0 +1,49 @@
+/*-------------------------------------------------------------------------
+ *
+ * port_protos.h
+ * port-specific prototypes for NetBSD 1.0
+ *
+ *
+ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc
+ * Portions Copyright (c) 1994, Regents of the University of California
+ *
+ * $Id: netbsd.h,v 1.1 2000/03/08 01:58:17 momjian Exp $
+ *
+ *-------------------------------------------------------------------------
+ */
+#ifndef PORT_PROTOS_H
+#define PORT_PROTOS_H
+
+#include <sys/types.h>
+#include <nlist.h>
+#include "link.h"
+
+#include "postgres.h"
+
+#include "fmgr.h"
+#include "utils/dynamic_loader.h"
+
+/* dynloader.c */
+/*
+ * Dynamic Loader on NetBSD 1.0.
+ *
+ * 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.
+ *
+ * agc - I know this is all a bit crufty, but it does work, is fairly
+ * portable, and works (the stipulation that the d.l. function must
+ * begin with an underscore is fairly tricky, and some versions of
+ * NetBSD (like 1.0, and 1.0A pre June 1995) have no dlerror.)
+ */
+#define pg_dlopen(f) BSD44_derived_dlopen(f, 1)
+#define pg_dlsym BSD44_derived_dlsym
+#define pg_dlclose BSD44_derived_dlclose
+#define pg_dlerror BSD44_derived_dlerror
+
+char *BSD44_derived_dlerror(void);
+void *BSD44_derived_dlopen(const char *filename, int num);
+void *BSD44_derived_dlsym(void *handle, const char *name);
+void BSD44_derived_dlclose(void *handle);
+
+#endif /* PORT_PROTOS_H */