diff options
Diffstat (limited to 'src/backend')
-rw-r--r-- | src/backend/Makefile | 25 | ||||
-rw-r--r-- | src/backend/port/dynloader/netbsd.c | 107 | ||||
-rw-r--r-- | src/backend/port/dynloader/netbsd.h | 49 |
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 */ |