summaryrefslogtreecommitdiff
path: root/deps/uv/src/unix/dl.c
diff options
context:
space:
mode:
authorBen Noordhuis <info@bnoordhuis.nl>2012-03-05 15:38:43 +0100
committerBen Noordhuis <info@bnoordhuis.nl>2012-03-05 15:38:43 +0100
commite0796b6f1f854126adf5b2bbeca4cb580d0ca84a (patch)
treef665025683fef5fd6a307c512a213ff75c157b53 /deps/uv/src/unix/dl.c
parent959a19e1184ae5d460bb0bec364a2557c5fdbd27 (diff)
downloadandroid-node-v8-e0796b6f1f854126adf5b2bbeca4cb580d0ca84a.tar.gz
android-node-v8-e0796b6f1f854126adf5b2bbeca4cb580d0ca84a.tar.bz2
android-node-v8-e0796b6f1f854126adf5b2bbeca4cb580d0ca84a.zip
uv: upgrade to a93dc7e
Diffstat (limited to 'deps/uv/src/unix/dl.c')
-rw-r--r--deps/uv/src/unix/dl.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/deps/uv/src/unix/dl.c b/deps/uv/src/unix/dl.c
index 41c244d79e..88c9525f76 100644
--- a/deps/uv/src/unix/dl.c
+++ b/deps/uv/src/unix/dl.c
@@ -24,6 +24,8 @@
#include <dlfcn.h>
#include <errno.h>
+#include <string.h>
+#include <locale.h>
/* The dl family of functions don't set errno. We need a good way to communicate
* errors to the caller but there is only dlerror() and that returns a string -
@@ -67,3 +69,23 @@ uv_err_t uv_dlsym(uv_lib_t library, const char* name, void** ptr) {
*ptr = (void*) address;
return uv_ok_;
}
+
+
+const char *uv_dlerror(uv_lib_t library) {
+ const char* buf = NULL;
+ /* Make uv_dlerror() be independent of locale */
+ char* loc = setlocale(LC_MESSAGES, NULL);
+ if(strcmp(loc, "C") == 0) {
+ return strdup(dlerror());
+ } else {
+ setlocale(LC_MESSAGES, "C");
+ buf = dlerror();
+ setlocale(LC_MESSAGES, loc);
+ return strdup(buf);
+ }
+}
+
+
+void uv_dlerror_free(uv_lib_t library, const char *msg) {
+ free((void*)msg);
+}