aboutsummaryrefslogtreecommitdiffstats
path: root/util-src
diff options
context:
space:
mode:
Diffstat (limited to 'util-src')
-rw-r--r--util-src/Makefile15
-rw-r--r--util-src/Makefile.win25
-rw-r--r--util-src/encodings.c17
-rw-r--r--util-src/lsignal.c2
-rw-r--r--util-src/pposix.c22
-rw-r--r--util-src/windows.c45
6 files changed, 105 insertions, 21 deletions
diff --git a/util-src/Makefile b/util-src/Makefile
index 3b7ca7bc..6cee457b 100644
--- a/util-src/Makefile
+++ b/util-src/Makefile
@@ -24,21 +24,28 @@ clean:
encodings.o: encodings.c
$(CC) $(CFLAGS) -I$(LUA_INCDIR) -c -o encodings.o encodings.c
encodings.so: encodings.o
- export MACOSX_DEPLOYMENT_TARGET="10.3"; $(LD) $(LFLAGS) -o encodings.so encodings.o -L$(LUA_LIBDIR) -llua$(LUA_SUFFIX) -lidn
+ MACOSX_DEPLOYMENT_TARGET="10.3"; export MACOSX_DEPLOYMENT_TARGET;
+ $(LD) $(LFLAGS) -o encodings.so encodings.o -L$(LUA_LIBDIR) -llua$(LUA_SUFFIX) -lidn
hashes.o: hashes.c
$(CC) $(CFLAGS) -I$(LUA_INCDIR) -c -o hashes.o hashes.c
hashes.so: hashes.o
- export MACOSX_DEPLOYMENT_TARGET="10.3"; $(LD) $(LFLAGS) -o hashes.so hashes.o -L$(LUA_LIBDIR) -llua$(LUA_SUFFIX) -lcrypto
+ MACOSX_DEPLOYMENT_TARGET="10.3";
+ export MACOSX_DEPLOYMENT_TARGET;
+ $(LD) $(LFLAGS) -o hashes.so hashes.o -L$(LUA_LIBDIR) -llua$(LUA_SUFFIX) -lcrypto
pposix.o: pposix.c
$(CC) $(CFLAGS) -I$(LUA_INCDIR) -c -o pposix.o pposix.c
pposix.so: pposix.o
- export MACOSX_DEPLOYMENT_TARGET="10.3"; $(LD) $(LFLAGS) -o pposix.so pposix.o -L$(LUA_LIBDIR) -llua$(LUA_SUFFIX)
+ MACOSX_DEPLOYMENT_TARGET="10.3";
+ export MACOSX_DEPLOYMENT_TARGET;
+ $(LD) $(LFLAGS) -o pposix.so pposix.o -L$(LUA_LIBDIR) -llua$(LUA_SUFFIX)
lsignal.o: lsignal.c
$(CC) $(CFLAGS) -I$(LUA_INCDIR) -c -o lsignal.o lsignal.c
signal.so: lsignal.o
- export MACOSX_DEPLOYMENT_TARGET="10.3"; $(LD) $(LFLAGS) -o signal.so lsignal.o
+ MACOSX_DEPLOYMENT_TARGET="10.3";
+ export MACOSX_DEPLOYMENT_TARGET;
+ $(LD) $(LFLAGS) -o signal.so lsignal.o -L$(LUA_LIBDIR) -llua$(LUA_SUFFIX)
diff --git a/util-src/Makefile.win b/util-src/Makefile.win
index d76aaccb..7b141097 100644
--- a/util-src/Makefile.win
+++ b/util-src/Makefile.win
@@ -1,7 +1,7 @@
LUA_PATH=$(LUA_DEV)
-IDN_PATH=.\libidn-1.9
-OPENSSL_PATH=.\openssl-0.9.8i
+IDN_PATH=..\..\libidn-1.15
+OPENSSL_PATH=..\..\openssl-0.9.8k
LUA_INCLUDE=$(LUA_PATH)\include
LUA_LIB=$(LUA_PATH)\lib\lua5.1.lib
@@ -12,18 +12,27 @@ IDN_INCLUDE2=$(IDN_PATH)\win32\include
OPENSSL_LIB=$(OPENSSL_PATH)\out32dll\libeay32.lib
OPENSSL_INCLUDE=$(OPENSSL_PATH)\include
-all: encodings.dll hashes.dll
+CL=cl /LD /MD /nologo
-install: encodings.dll hashes.dll
+all: encodings.dll hashes.dll windows.dll
+
+install: encodings.dll hashes.dll windows.dll
copy /Y *.dll ..\util\
clean:
- del encodings.dll encodings.exp encodings.lib encodings.obj
- del hashes.dll hashes.exp hashes.lib hashes.obj
+ del encodings.dll encodings.exp encodings.lib encodings.obj encodings.dll.manifest
+ del hashes.dll hashes.exp hashes.lib hashes.obj hashes.dll.manifest
+ del windows.dll windows.exp windows.lib windows.obj windows.dll.manifest
encodings.dll: encodings.c
- cl /LD /nologo encodings.c /I"$(LUA_INCLUDE)" /I"$(IDN_INCLUDE1)" /I"$(IDN_INCLUDE2)" /link "$(LUA_LIB)" "$(IDN_LIB)" /export:luaopen_util_encodings
+ $(CL) encodings.c /I"$(LUA_INCLUDE)" /I"$(IDN_INCLUDE1)" /I"$(IDN_INCLUDE2)" /link "$(LUA_LIB)" "$(IDN_LIB)" /export:luaopen_util_encodings
+ del encodings.exp encodings.lib encodings.obj encodings.dll.manifest
hashes.dll: hashes.c
- cl /LD /nologo hashes.c /I"$(LUA_INCLUDE)" /I"$(OPENSSL_INCLUDE)" /link "$(LUA_LIB)" "$(OPENSSL_LIB)" /export:luaopen_util_hashes
+ $(CL) hashes.c /I"$(LUA_INCLUDE)" /I"$(OPENSSL_INCLUDE)" /link "$(LUA_LIB)" "$(OPENSSL_LIB)" /export:luaopen_util_hashes
+ del hashes.exp hashes.lib hashes.obj hashes.dll.manifest
+
+windows.dll: windows.c
+ $(CL) windows.c /I"$(LUA_INCLUDE)" /link "$(LUA_LIB)" dnsapi.lib /export:luaopen_util_windows
+ del windows.exp windows.lib windows.obj windows.dll.manifest
diff --git a/util-src/encodings.c b/util-src/encodings.c
index d7aabc14..5147512f 100644
--- a/util-src/encodings.c
+++ b/util-src/encodings.c
@@ -108,7 +108,6 @@ static int Lbase64_decode(lua_State *L) /** decode(s) */
break;
}
}
- return 0;
}
static const luaL_Reg Reg_base64[] =
@@ -125,9 +124,14 @@ static const luaL_Reg Reg_base64[] =
static int stringprep_prep(lua_State *L, const Stringprep_profile *profile)
{
size_t len;
- const char *s = luaL_checklstring(L, 1, &len);
+ const char *s;
char string[1024];
int ret;
+ if(!lua_isstring(L, 1)) {
+ lua_pushnil(L);
+ return 1;
+ }
+ s = lua_tolstring(L, 1, &len);
if (len >= 1024) {
lua_pushnil(L);
return 1; // TODO return error message
@@ -163,6 +167,7 @@ static const luaL_Reg Reg_stringprep[] =
/***************** IDNA *****************/
#include <idna.h>
+#include <idn-free.h>
static int Lidna_to_ascii(lua_State *L) /** idna.to_ascii(s) */
{
@@ -172,11 +177,11 @@ static int Lidna_to_ascii(lua_State *L) /** idna.to_ascii(s) */
int ret = idna_to_ascii_8z(s, &output, 0);
if (ret == IDNA_SUCCESS) {
lua_pushstring(L, output);
- if (output) free(output);
+ idn_free(output);
return 1;
} else {
lua_pushnil(L);
- if (output) free(output);
+ idn_free(output);
return 1; // TODO return error message
}
}
@@ -189,11 +194,11 @@ static int Lidna_to_unicode(lua_State *L) /** idna.to_unicode(s) */
int ret = idna_to_unicode_8z8z(s, &output, 0);
if (ret == IDNA_SUCCESS) {
lua_pushstring(L, output);
- if (output) free(output);
+ idn_free(output);
return 1;
} else {
lua_pushnil(L);
- if (output) free(output);
+ idn_free(output);
return 1; // TODO return error message
}
}
diff --git a/util-src/lsignal.c b/util-src/lsignal.c
index 158efcd6..80799e4a 100644
--- a/util-src/lsignal.c
+++ b/util-src/lsignal.c
@@ -301,7 +301,7 @@ static int l_raise(lua_State *L)
return 1;
}
-#ifdef _POSIX_SOURCE
+#if defined _POSIX_SOURCE || (defined(sun) || defined(__sun))
/* define some posix only functions */
diff --git a/util-src/pposix.c b/util-src/pposix.c
index d27a84b1..94086ed6 100644
--- a/util-src/pposix.c
+++ b/util-src/pposix.c
@@ -91,10 +91,14 @@ static int lc_daemonize(lua_State *L)
const char * const facility_strings[] = {
"auth",
+#if !(defined(sun) || defined(__sun))
"authpriv",
+#endif
"cron",
"daemon",
+#if !(defined(sun) || defined(__sun))
"ftp",
+#endif
"kern",
"local0",
"local1",
@@ -113,10 +117,14 @@ const char * const facility_strings[] = {
};
int facility_constants[] = {
LOG_AUTH,
+#if !(defined(sun) || defined(__sun))
LOG_AUTHPRIV,
+#endif
LOG_CRON,
LOG_DAEMON,
+#if !(defined(sun) || defined(__sun))
LOG_FTP,
+#endif
LOG_KERN,
LOG_LOCAL0,
LOG_LOCAL1,
@@ -365,11 +373,13 @@ int string2resource(const char *s) {
if (!strcmp(s, "CPU")) return RLIMIT_CPU;
if (!strcmp(s, "DATA")) return RLIMIT_DATA;
if (!strcmp(s, "FSIZE")) return RLIMIT_FSIZE;
- if (!strcmp(s, "MEMLOCK")) return RLIMIT_MEMLOCK;
if (!strcmp(s, "NOFILE")) return RLIMIT_NOFILE;
+ if (!strcmp(s, "STACK")) return RLIMIT_STACK;
+#if !(defined(sun) || defined(__sun))
+ if (!strcmp(s, "MEMLOCK")) return RLIMIT_MEMLOCK;
if (!strcmp(s, "NPROC")) return RLIMIT_NPROC;
if (!strcmp(s, "RSS")) return RLIMIT_RSS;
- if (!strcmp(s, "STACK")) return RLIMIT_STACK;
+#endif
return -1;
}
@@ -453,12 +463,20 @@ int lc_getrlimit(lua_State *L) {
return 3;
}
+void lc_abort(lua_State* L)
+{
+ abort();
+}
+
/* Register functions */
int luaopen_util_pposix(lua_State *L)
{
lua_newtable(L);
+ lua_pushcfunction(L, lc_abort);
+ lua_setfield(L, -2, "abort");
+
lua_pushcfunction(L, lc_daemonize);
lua_setfield(L, -2, "daemonize");
diff --git a/util-src/windows.c b/util-src/windows.c
new file mode 100644
index 00000000..7fb96312
--- /dev/null
+++ b/util-src/windows.c
@@ -0,0 +1,45 @@
+
+#include <stdio.h>
+#include <windows.h>
+#include <windns.h>
+
+#include "lua.h"
+#include "lauxlib.h"
+
+static int Lget_nameservers(lua_State *L) {
+ char stack_buffer[1024]; // stack allocated buffer
+ IP4_ARRAY* ips = (IP4_ARRAY*) stack_buffer;
+ DWORD len = sizeof(stack_buffer);
+ DNS_STATUS status;
+
+ status = DnsQueryConfig(DnsConfigDnsServerList, FALSE, NULL, NULL, ips, &len);
+ if (status == 0) {
+ DWORD i;
+ lua_createtable(L, ips->AddrCount, 0);
+ for (i = 0; i < ips->AddrCount; i++) {
+ DWORD ip = ips->AddrArray[i];
+ char ip_str[16] = "";
+ sprintf_s(ip_str, sizeof(ip_str), "%d.%d.%d.%d", (ip >> 0) & 255, (ip >> 8) & 255, (ip >> 16) & 255, (ip >> 24) & 255);
+ lua_pushstring(L, ip_str);
+ lua_rawseti(L, -2, i+1);
+ }
+ return 1;
+ } else {
+ luaL_error(L, "DnsQueryConfig returned %d", status);
+ return 0; // unreachable, but prevents a compiler warning
+ }
+}
+
+static const luaL_Reg Reg[] =
+{
+ { "get_nameservers", Lget_nameservers },
+ { NULL, NULL }
+};
+
+LUALIB_API int luaopen_util_windows(lua_State *L) {
+ luaL_register(L, "windows", Reg);
+ lua_pushliteral(L, "version"); /** version */
+ lua_pushliteral(L, "-3.14");
+ lua_settable(L,-3);
+ return 1;
+}