/*
 * Stub dlfcn implementation for systems that lack shared library support
 * but obviously can still reference compiled-in symbols.
 */

#ifndef NO_SHARED_LIBS
#include_next <dlfcn.h>
#else

#define RTLD_LAZY 0
#define RTLD_GLOBAL 1
#define _FAKE_DLFCN_HDL (void *)0xbeefcafe

static inline void *dlopen(const char *file, int flag)
{
	if (file == NULL)
		return _FAKE_DLFCN_HDL;
	else
		return NULL;
}

extern void *_dlsym(const char *sym);
static inline void *dlsym(void *handle, const char *sym)
{
	if (handle != _FAKE_DLFCN_HDL)
		return NULL;
	return _dlsym(sym);
}

static inline char *dlerror(void)
{
	return NULL;
}

static inline int dlclose(void *handle)
{
	return (handle == _FAKE_DLFCN_HDL) ? 0 : 1;
}

#endif
