summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwtc%netscape.com <devnull@localhost>2003-02-25 15:41:01 +0000
committerwtc%netscape.com <devnull@localhost>2003-02-25 15:41:01 +0000
commita8d6ec6761ff28903a6bc5aae1d827c519a1a115 (patch)
tree4d96362e22f30fba46588552cdfa498f3e652efa
parentc121006d96216530fbd283092e1325e1c61d4b39 (diff)
downloadnspr-hg-a8d6ec6761ff28903a6bc5aae1d827c519a1a115.tar.gz
Bug 191823: implement the PR_GetLibraryFilePathname function for OS/2. The
patch is contributed by Julien Pierre <jpierre@netscape.com>. NSPRPUB_PRE_4_2_CLIENT_BRANCH
-rw-r--r--pr/src/linking/prlink.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/pr/src/linking/prlink.c b/pr/src/linking/prlink.c
index 6b9f94a4..ec59bc78 100644
--- a/pr/src/linking/prlink.c
+++ b/pr/src/linking/prlink.c
@@ -1809,6 +1809,27 @@ PR_GetLibraryFilePathname(const char *name, PRFuncPtr addr)
strcpy(result, module_name);
}
return result;
+#elif defined(XP_OS2)
+ HMODULE module = NULL;
+ char module_name[_MAX_PATH];
+ char *result;
+ APIRET ulrc = DosQueryModFromEIP(&module, NULL, 0, NULL, NULL, (ULONG) addr);
+ if ((NO_ERROR != ulrc) || (NULL == module) ) {
+ PR_SetError(PR_LIBRARY_NOT_LOADED_ERROR, _MD_ERRNO());
+ DLLErrorInternal(_MD_ERRNO());
+ return NULL;
+ }
+ ulrc = DosQueryModuleName(module, sizeof module_name, module_name);
+ if (NO_ERROR != ulrc) {
+ /* should not happen */
+ _PR_MD_MAP_DEFAULT_ERROR(_MD_ERRNO());
+ return NULL;
+ }
+ result = PR_Malloc(strlen(module_name)+1);
+ if (result != NULL) {
+ strcpy(result, module_name);
+ }
+ return result;
#else
PR_SetError(PR_NOT_IMPLEMENTED_ERROR, 0);
return NULL;