dllfind.c revision 3f54fd611f536639ec30dd53c48e5ec1897cc7d9
4b0a4c7dea0f67a233dcc42ce9bb18d36de109aeChristian Maeder/***********************************************************************
4b0a4c7dea0f67a233dcc42ce9bb18d36de109aeChristian Maeder* *
5ba323da9f037264b4a356085e844889aedeac23Christian Maeder* This software is part of the ast package *
c58a94c44b76b072ace930f2126c889c0b64cb2aChristian Maeder* Copyright (c) 1997-2011 AT&T Intellectual Property *
97018cf5fa25b494adffd7e9b4e87320dae6bf47Christian Maeder* and is licensed under the *
ea03c5d09694b4a966fbd19d46cfa5772648d95fChristian Maeder* Eclipse Public License, Version 1.0 *
3f69b6948966979163bdfe8331c38833d5d90ecdChristian Maeder* by AT&T Intellectual Property *
4b0a4c7dea0f67a233dcc42ce9bb18d36de109aeChristian Maeder* *
4561227a776bdf0ab679b19fb92f1eaaed8786f7Christian Maeder* A copy of the License is available at *
4b0a4c7dea0f67a233dcc42ce9bb18d36de109aeChristian Maeder* http://www.eclipse.org/org/documents/epl-v10.html *
f3a94a197960e548ecd6520bb768cb0d547457bbChristian Maeder* (with md5 checksum b35adb5213ca9657e911e9befb180842) *
ea03c5d09694b4a966fbd19d46cfa5772648d95fChristian Maeder* *
ea03c5d09694b4a966fbd19d46cfa5772648d95fChristian Maeder* Information and Software Systems Research *
e8ffec0fa3d3061061bdc16e44247b9cf96b050fChristian Maeder* AT&T Research *
502ed7ed7fecd10b6d0c83cdd48a244ec45e840aChristian Maeder* Florham Park NJ *
e8ffec0fa3d3061061bdc16e44247b9cf96b050fChristian Maeder* *
81946e2b3f6dde6167f48769bd02c7a634736856Christian Maeder* Glenn Fowler <gsf@research.att.com> *
ad270004874ce1d0697fb30d7309f180553bb315Christian Maeder* *
ad270004874ce1d0697fb30d7309f180553bb315Christian Maeder***********************************************************************/
f8c07dc6526e0134d66885d461a30abadc2c6038Christian Maeder#pragma prototyped
afa6848d579d235c9677e1ab477916df8e5ae11aChristian Maeder/*
dc6b48bb46df8e56da3491c98476e6da0d1d5d1dChristian Maeder * Glenn Fowler
4561227a776bdf0ab679b19fb92f1eaaed8786f7Christian Maeder * AT&T Research
b603f34b79bc0992e5d74f484e5bdc9f9c2346c6Christian Maeder */
4561227a776bdf0ab679b19fb92f1eaaed8786f7Christian Maeder
c00adad2e9459b422dee09e3a2bddba66b433bb7Christian Maeder#include <ast.h>
9348e8460498ddfcd9da11cd8b5794c06023e004Christian Maeder#include <dlldefs.h>
fd5d3885a092ac0727fa2436cdfc3b248318ebd8Christian Maeder#include <error.h>
4561227a776bdf0ab679b19fb92f1eaaed8786f7Christian Maeder
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder/*
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder * find and load library name with optional version ver and dlopen() flags
f26a1fc3851297e6483cf3fb56e9c0967b8f8b13Christian Maeder * at least one dlopen() is called to initialize dlerror()
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder * if path!=0 then library path up to size chars copied to path with trailing 0
502ed7ed7fecd10b6d0c83cdd48a244ec45e840aChristian Maeder * if name contains a directory prefix then library search is limited to the dir and siblings
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder */
7de39d39bc1700cc8a9bb9df90b920aad9e18d4aChristian Maeder
c00adad2e9459b422dee09e3a2bddba66b433bb7Christian Maederextern void*
9348e8460498ddfcd9da11cd8b5794c06023e004Christian Maederdllfind(const char* lib, const char* ver, int flags, char* path, size_t size)
502ed7ed7fecd10b6d0c83cdd48a244ec45e840aChristian Maeder{
4561227a776bdf0ab679b19fb92f1eaaed8786f7Christian Maeder char* id;
4561227a776bdf0ab679b19fb92f1eaaed8786f7Christian Maeder void* dll;
fd5d3885a092ac0727fa2436cdfc3b248318ebd8Christian Maeder
4561227a776bdf0ab679b19fb92f1eaaed8786f7Christian Maeder if ((id = error_info.id) && (dll = dllplug(id, lib, ver, flags, path, size)))
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder return dll;
7de39d39bc1700cc8a9bb9df90b920aad9e18d4aChristian Maeder return dllplug(NiL, lib, ver, flags, path, size);
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder}
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder