/* $Id: dlclose.c,v 1.4 2002/10/29 04:45:28 rex Exp $ */ /* * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS POSIX+ Subsystem * FILE: subsys/psx/lib/psxdll/dlfcn/dlclose.c * PURPOSE: Close a dlopen() object * PROGRAMMER: KJK::Hyperion * UPDATE HISTORY: * 19/12/2001: Created */ #include #include #include #include #include #include #include #include int dlclose(void *handle) { if(handle == 0) { ERR("invalid handle passed to dlclose"); __dl_set_last_error(EFAULT); /* FIXME? maybe EINVAL? */ return (-1); } if(((struct __dlobj *)handle)->global) { TODO("global symbol matching not implemented"); __dl_set_last_error(EINVAL); return (-1); } else { NTSTATUS nErrCode = LdrUnloadDll(((struct __dlobj *)handle)->handle); if(!NT_SUCCESS(nErrCode)) { ERR("LdrUnloadDll(%#x) failed with status %d", ((struct __dlobj *)handle)->handle, nErrCode); free(handle); __dl_set_last_error(__status_to_errno(nErrCode)); return (-1); } } free(handle); return (0); } /* EOF */