diff options
author | Ben Noordhuis <info@bnoordhuis.nl> | 2012-03-05 15:38:43 +0100 |
---|---|---|
committer | Ben Noordhuis <info@bnoordhuis.nl> | 2012-03-05 15:38:43 +0100 |
commit | e0796b6f1f854126adf5b2bbeca4cb580d0ca84a (patch) | |
tree | f665025683fef5fd6a307c512a213ff75c157b53 /deps/uv/src/unix/dl.c | |
parent | 959a19e1184ae5d460bb0bec364a2557c5fdbd27 (diff) | |
download | android-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.c | 22 |
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); +} |