summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/BLua.cc31
-rw-r--r--src/LuaHandle.cc3
-rw-r--r--src/LuaTask.cc4
3 files changed, 34 insertions, 4 deletions
diff --git a/src/BLua.cc b/src/BLua.cc
index 7e3a1d2..d3e50b6 100644
--- a/src/BLua.cc
+++ b/src/BLua.cc
@@ -1,3 +1,7 @@
+#ifdef _WIN32
+#include <windows.h>
+#endif
+
#include <memory>
#include <stdlib.h>
#include "BLua.h"
@@ -167,12 +171,28 @@ int Balau::LuaStatics::getenv(lua_State * __L) {
L.error("Incorrect arguments to function `getenv'");
#ifdef _WIN32
+#ifdef UNICODE
+ wchar_t wbuffer[BUFSIZ + 1];
+ String varStr = L.tostring(1).iconv("UTF-8", "UNICODE");
+ if (GetEnvironmentVariable((wchar_t *)varStr.to_charp(), wbuffer, BUFSIZ)) {
+ char buffer[BUFSIZ + 1];
+ const wchar_t * pwbuffer = wbuffer;
+ mbstate_t mbs;
+ mbrlen(NULL, 0, &mbs);
+ memset(buffer, 0, BUFSIZ + 1);
+ wcsrtombs(buffer, &pwbuffer, BUFSIZ, &mbs);
+ L.push(buffer);
+ } else {
+ L.push();
+ }
+#else
char buffer[BUFSIZ + 1];
if (GetEnvironmentVariable(L.tostring(1).to_charp(), buffer, BUFSIZ)) {
L.push(buffer);
} else {
L.push();
}
+#endif
#else
char * var = ::getenv(L.tostring(1).to_charp());
if (var) {
@@ -194,7 +214,13 @@ int Balau::LuaStatics::setenv(lua_State * __L) {
}
#ifdef _WIN32
+#ifdef UNICODE
+ String varStr = L.tostring(1).iconv("UTF-8", "UNICODE");
+ String valStr = L.tostring(2).iconv("UTF-8", "UNICODE");
+ SetEnvironmentVariable((wchar_t *)varStr.to_charp(), (wchar_t *)valStr.to_charp());
+#else
SetEnvironmentVariable(L.tostring(1).to_charp(), L.tostring(2).to_charp());
+#endif
#else
::setenv(L.tostring(1).to_charp(), L.tostring(2).to_charp(), 1);
#endif
@@ -210,7 +236,12 @@ int Balau::LuaStatics::unsetenv(lua_State * __L) {
L.error("Incorrect arguments to function `unsetenv'");
#ifdef _WIN32
+#ifdef UNICODE
+ String varStr = L.tostring(1).iconv("UTF-8", "UNICODE");
+ SetEnvironmentVariable((wchar_t *)varStr.to_charp(), NULL);
+#else
SetEnvironmentVariable(L.tostring(1).to_charp(), NULL);
+#endif
#else
::unsetenv(L.tostring(1).to_charp());
#endif
diff --git a/src/LuaHandle.cc b/src/LuaHandle.cc
index de9e7e2..67a1496 100644
--- a/src/LuaHandle.cc
+++ b/src/LuaHandle.cc
@@ -262,7 +262,6 @@ int sLua_IOInput::IOInput_proceed_static(Balau::Lua & L, int n, int caller) {
}
int sLua_IOInput::IOInput_proceed(Balau::Lua & L, int n, IOInput * obj, int caller) {
- int r;
Balau::IO<Balau::Input> h = *obj;
switch (caller) {
@@ -271,7 +270,7 @@ int sLua_IOInput::IOInput_proceed(Balau::Lua & L, int n, IOInput * obj, int call
break;
}
- return r;
+ return 0;
}
void Balau::LuaInputFactory::pushStatics(Balau::Lua & L) {
diff --git a/src/LuaTask.cc b/src/LuaTask.cc
index c22cb68..0835765 100644
--- a/src/LuaTask.cc
+++ b/src/LuaTask.cc
@@ -52,7 +52,7 @@ void Balau::LuaMainTask::Do() {
try {
cell = m_queue.pop();
}
- catch (Balau::EAgain & e) {
+ catch (Balau::EAgain &) {
taskSwitch();
}
Printer::elog(E_TASK, "LuaMainTask at %p popped %p", this, cell);
@@ -81,7 +81,7 @@ void Balau::LuaTask::Do() {
else
m_cell->run(L);
}
- catch (EAgain & e) {
+ catch (EAgain &) {
}
catch (GeneralException & e) {
m_cell->m_exception = new GeneralException(e);