summaryrefslogtreecommitdiff
path: root/src/lib/libdll/dllfind.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libdll/dllfind.c')
-rw-r--r--src/lib/libdll/dllfind.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/lib/libdll/dllfind.c b/src/lib/libdll/dllfind.c
new file mode 100644
index 0000000..6446663
--- /dev/null
+++ b/src/lib/libdll/dllfind.c
@@ -0,0 +1,46 @@
+/***********************************************************************
+* *
+* This software is part of the ast package *
+* Copyright (c) 1997-2011 AT&T Intellectual Property *
+* and is licensed under the *
+* Eclipse Public License, Version 1.0 *
+* by AT&T Intellectual Property *
+* *
+* A copy of the License is available at *
+* http://www.eclipse.org/org/documents/epl-v10.html *
+* (with md5 checksum b35adb5213ca9657e911e9befb180842) *
+* *
+* Information and Software Systems Research *
+* AT&T Research *
+* Florham Park NJ *
+* *
+* Glenn Fowler <gsf@research.att.com> *
+* *
+***********************************************************************/
+#pragma prototyped
+/*
+ * Glenn Fowler
+ * AT&T Research
+ */
+
+#include <ast.h>
+#include <dlldefs.h>
+#include <error.h>
+
+/*
+ * find and load library name with optional version ver and dlopen() flags
+ * at least one dlopen() is called to initialize dlerror()
+ * if path!=0 then library path up to size chars copied to path with trailing 0
+ * if name contains a directory prefix then library search is limited to the dir and siblings
+ */
+
+extern void*
+dllfind(const char* lib, const char* ver, int flags, char* path, size_t size)
+{
+ char* id;
+ void* dll;
+
+ if ((id = error_info.id) && (dll = dllplug(id, lib, ver, flags, path, size)))
+ return dll;
+ return dllplug(NiL, lib, ver, flags, path, size);
+}