summaryrefslogtreecommitdiff
path: root/src/backend/port/dynloader/linux.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2002-10-15 16:04:17 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2002-10-15 16:04:17 +0000
commit3a2ef591168395149df9f2ad160d242ffe825e41 (patch)
treebf17177d6e1ec313ea79ac008fe1d5c25fcdcca2 /src/backend/port/dynloader/linux.c
parent951ec872c703886626c56d08254d38c0cd88fc9e (diff)
Fix Linux dynloader code for pre-HAVE_DLOPEN systems, which evidently
are still in use out there. Per report from Brendan LeFebvre.
Diffstat (limited to 'src/backend/port/dynloader/linux.c')
-rw-r--r--src/backend/port/dynloader/linux.c38
1 files changed, 31 insertions, 7 deletions
diff --git a/src/backend/port/dynloader/linux.c b/src/backend/port/dynloader/linux.c
index 874de90d3a3..2ee15661cdf 100644
--- a/src/backend/port/dynloader/linux.c
+++ b/src/backend/port/dynloader/linux.c
@@ -1,6 +1,6 @@
/*-------------------------------------------------------------------------
*
- * dynloader.c
+ * linux.c
* Dynamic Loader for Postgres for Linux, generated from those for
* Ultrix.
*
@@ -11,18 +11,22 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/port/dynloader/linux.c,v 1.22 2002/06/20 20:29:33 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/port/dynloader/linux.c,v 1.23 2002/10/15 16:04:17 tgl Exp $
*
*-------------------------------------------------------------------------
*/
#include "postgres.h"
+
#ifdef HAVE_DLD_H
-#include "dld.h"
+#include <dld.h>
#endif
-#ifdef NOT_USED
-extern char pg_pathname[];
+#include "dynloader.h"
+#include "miscadmin.h"
+
+
+#ifndef HAVE_DLOPEN
void *
pg_dlopen(char *filename)
@@ -98,8 +102,28 @@ pg_dlopen(char *filename)
#endif
}
+PGFunction
+pg_dlsym(void *handle, char *funcname)
+{
+#ifndef HAVE_DLD_H
+ return NULL;
+#else
+ return (PGFunction) dld_get_func((funcname));
+#endif
+}
+
+void
+pg_dlclose(void *handle)
+{
+#ifndef HAVE_DLD_H
+#else
+ dld_unlink_by_file(handle, 1);
+ free(handle);
+#endif
+}
+
char *
-pg_dlerror()
+pg_dlerror(void)
{
#ifndef HAVE_DLD_H
return "dynaloader unspported";
@@ -108,4 +132,4 @@ pg_dlerror()
#endif
}
-#endif
+#endif /* !HAVE_DLOPEN */