|
1 | 1 | /* |
2 | | - * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group |
3 | | - * Portions Copyright (c) 1990 The Regents of the University of California. |
4 | | - * All rights reserved. |
5 | | - * |
6 | 2 | * src/backend/port/dynloader/freebsd.c |
7 | 3 | * |
8 | | - * Redistribution and use in source and binary forms, with or without |
9 | | - * modification, are permitted provided that the following conditions |
10 | | - * are met: |
11 | | - * 1. Redistributions of source code must retain the above copyright |
12 | | - * notice, this list of conditions and the following disclaimer. |
13 | | - * 2. Redistributions in binary form must reproduce the above copyright |
14 | | - * notice, this list of conditions and the following disclaimer in the |
15 | | - * documentation and/or other materials provided with the distribution. |
16 | | - * 3. Neither the name of the University nor the names of its contributors |
17 | | - * may be used to endorse or promote products derived from this software |
18 | | - * without specific prior written permission. |
| 4 | + * Dummy file used for nothing at this point |
19 | 5 | * |
20 | | - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
21 | | - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
22 | | - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
23 | | - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
24 | | - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
25 | | - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
26 | | - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
27 | | - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
28 | | - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
29 | | - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
30 | | - * SUCH DAMAGE. |
| 6 | + * see freebsd.h |
31 | 7 | */ |
32 | | - |
33 | | -#if defined(LIBC_SCCS) && !defined(lint) |
34 | | -static char sccsid[] = "@(#)dl.c 5.4 (Berkeley) 2/23/91"; |
35 | | -#endif /* LIBC_SCCS and not lint */ |
36 | | - |
37 | | -#include "postgres.h" |
38 | | - |
39 | | -#include <nlist.h> |
40 | | -#include <link.h> |
41 | | -#include <dlfcn.h> |
42 | | - |
43 | | -#include "dynloader.h" |
44 | | - |
45 | | -static char error_message[BUFSIZ]; |
46 | | - |
47 | | -char * |
48 | | -BSD44_derived_dlerror(void) |
49 | | -{ |
50 | | - static char ret[BUFSIZ]; |
51 | | - |
52 | | - strcpy(ret, error_message); |
53 | | - error_message[0] = 0; |
54 | | - return (ret[0] == 0) ? NULL : ret; |
55 | | -} |
56 | | - |
57 | | -void * |
58 | | -BSD44_derived_dlopen(const char *file, int num) |
59 | | -{ |
60 | | -#if !defined(HAVE_DLOPEN) |
61 | | - snprintf(error_message, sizeof(error_message), |
62 | | - "dlopen (%s) not supported", file); |
63 | | - return NULL; |
64 | | -#else |
65 | | - void *vp; |
66 | | - |
67 | | - if ((vp = dlopen((char *) file, num)) == NULL) |
68 | | - snprintf(error_message, sizeof(error_message), |
69 | | - "dlopen (%s) failed: %s", file, dlerror()); |
70 | | - return vp; |
71 | | -#endif |
72 | | -} |
73 | | - |
74 | | -void * |
75 | | -BSD44_derived_dlsym(void *handle, const char *name) |
76 | | -{ |
77 | | -#if !defined(HAVE_DLOPEN) |
78 | | - snprintf(error_message, sizeof(error_message), |
79 | | - "dlsym (%s) failed", name); |
80 | | - return NULL; |
81 | | -#else |
82 | | - void *vp; |
83 | | - |
84 | | -#ifndef __ELF__ |
85 | | - char buf[BUFSIZ]; |
86 | | - |
87 | | - if (*name != '_') |
88 | | - { |
89 | | - snprintf(buf, sizeof(buf), "_%s", name); |
90 | | - name = buf; |
91 | | - } |
92 | | -#endif /* !__ELF__ */ |
93 | | - if ((vp = dlsym(handle, (char *) name)) == NULL) |
94 | | - snprintf(error_message, sizeof(error_message), |
95 | | - "dlsym (%s) failed", name); |
96 | | - return vp; |
97 | | -#endif |
98 | | -} |
99 | | - |
100 | | -void |
101 | | -BSD44_derived_dlclose(void *handle) |
102 | | -{ |
103 | | -#if defined(HAVE_DLOPEN) |
104 | | - dlclose(handle); |
105 | | -#endif |
106 | | -} |
0 commit comments