diff options
author | Marc G. Fournier <scrappy@hub.org> | 1997-12-19 22:58:27 +0000 |
---|---|---|
committer | Marc G. Fournier <scrappy@hub.org> | 1997-12-19 22:58:27 +0000 |
commit | 153558dff8a95dd89f3b5713838c22debe3b78e8 (patch) | |
tree | 6d06fb1bc6e662aec42efaf572c8258b0e042e73 /src/backend/port/dynloader/bsd.c | |
parent | 56a7d9fac22d89d7a5412db10e9b3f1487a50f03 (diff) | |
download | postgresql-153558dff8a95dd89f3b5713838c22debe3b78e8.tar.gz postgresql-153558dff8a95dd89f3b5713838c22debe3b78e8.zip |
These files will get link'd to 'dynloader.[ch]', from configure, which
will then get link'd into SUBSYS.o
Diffstat (limited to 'src/backend/port/dynloader/bsd.c')
-rw-r--r-- | src/backend/port/dynloader/bsd.c | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/src/backend/port/dynloader/bsd.c b/src/backend/port/dynloader/bsd.c new file mode 100644 index 00000000000..42d15d840f3 --- /dev/null +++ b/src/backend/port/dynloader/bsd.c @@ -0,0 +1,107 @@ +/*- + * 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 "port-protos.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) +{ +#ifdef __mips__ + 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) +{ +#ifdef __mips__ + sprintf(error_message, "dlsym (%s) failed", name); + return NULL; +#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) +{ +#ifndef __mips__ + dlclose(handle); +#endif +} |