~vcs-imports/mammoth-replicator/trunk

« back to all changes in this revision

Viewing changes to src/backend/port/dynloader/netbsd.c

  • Committer: alvherre
  • Date: 2005-12-16 21:24:52 UTC
  • Revision ID: svn-v4:db760fc0-0f08-0410-9d63-cc6633f64896:trunk:1
Initial import of the REL8_0_3 sources from the Pgsql CVS repository.

Show diffs side-by-side

added added

removed removed

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