summaryrefslogtreecommitdiff
path: root/src/mod_cml_funcs.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mod_cml_funcs.c')
-rw-r--r--src/mod_cml_funcs.c166
1 files changed, 85 insertions, 81 deletions
diff --git a/src/mod_cml_funcs.c b/src/mod_cml_funcs.c
index 9d859c7..46a1f16 100644
--- a/src/mod_cml_funcs.c
+++ b/src/mod_cml_funcs.c
@@ -1,12 +1,3 @@
-#include "buffer.h"
-#include "server.h"
-#include "log.h"
-#include "plugin.h"
-#include "response.h"
-
-#include "mod_cml.h"
-#include "mod_cml_funcs.h"
-
#include <sys/stat.h>
#include <time.h>
@@ -17,7 +8,20 @@
#include <dirent.h>
#include <stdio.h>
-#include "md5.h"
+#include "buffer.h"
+#include "server.h"
+#include "log.h"
+#include "plugin.h"
+#include "response.h"
+
+#include "mod_cml.h"
+#include "mod_cml_funcs.h"
+
+#ifdef USE_OPENSSL
+# include <openssl/md5.h>
+#else
+# include "md5.h"
+#endif
#define HASHLEN 16
typedef unsigned char HASH[HASHLEN];
@@ -26,41 +30,41 @@ typedef char HASHHEX[HASHHEXLEN+1];
#ifdef USE_OPENSSL
#define IN const
#else
-#define IN
+#define IN
#endif
#define OUT
#ifdef HAVE_LUA_H
int f_crypto_md5(lua_State *L) {
- li_MD5_CTX Md5Ctx;
+ MD5_CTX Md5Ctx;
HASH HA1;
buffer b;
char hex[33];
int n = lua_gettop(L);
-
+
b.ptr = hex;
b.used = 0;
b.size = sizeof(hex);
-
+
if (n != 1) {
lua_pushstring(L, "md5: expected one argument");
lua_error(L);
}
-
+
if (!lua_isstring(L, 1)) {
lua_pushstring(L, "md5: argument has to be a string");
lua_error(L);
}
-
- li_MD5_Init(&Md5Ctx);
- li_MD5_Update(&Md5Ctx, (unsigned char *)lua_tostring(L, 1), lua_strlen(L, 1));
- li_MD5_Final(HA1, &Md5Ctx);
-
+
+ MD5_Init(&Md5Ctx);
+ MD5_Update(&Md5Ctx, (unsigned char *)lua_tostring(L, 1), lua_strlen(L, 1));
+ MD5_Final(HA1, &Md5Ctx);
+
buffer_copy_string_hex(&b, (char *)HA1, 16);
-
+
lua_pushstring(L, b.ptr);
-
+
return 1;
}
@@ -68,37 +72,37 @@ int f_crypto_md5(lua_State *L) {
int f_file_mtime(lua_State *L) {
struct stat st;
int n = lua_gettop(L);
-
+
if (n != 1) {
lua_pushstring(L, "file_mtime: expected one argument");
lua_error(L);
}
-
+
if (!lua_isstring(L, 1)) {
lua_pushstring(L, "file_mtime: argument has to be a string");
lua_error(L);
}
-
+
if (-1 == stat(lua_tostring(L, 1), &st)) {
lua_pushnil(L);
return 1;
}
-
+
lua_pushnumber(L, st.st_mtime);
-
+
return 1;
}
-static int f_dir_files_iter(lua_State *L) {
+int f_dir_files_iter(lua_State *L) {
DIR *d;
struct dirent *de;
-
+
d = lua_touserdata(L, lua_upvalueindex(1));
-
+
if (NULL == (de = readdir(d))) {
/* EOF */
closedir(d);
-
+
return 0;
} else {
lua_pushstring(L, de->d_name);
@@ -109,75 +113,75 @@ static int f_dir_files_iter(lua_State *L) {
int f_dir_files(lua_State *L) {
DIR *d;
int n = lua_gettop(L);
-
+
if (n != 1) {
lua_pushstring(L, "dir_files: expected one argument");
lua_error(L);
}
-
+
if (!lua_isstring(L, 1)) {
lua_pushstring(L, "dir_files: argument has to be a string");
lua_error(L);
}
-
- /* check if there is a valid DIR handle on the stack */
+
+ /* check if there is a valid DIR handle on the stack */
if (NULL == (d = opendir(lua_tostring(L, 1)))) {
lua_pushnil(L);
return 1;
}
-
+
/* push d into registry */
lua_pushlightuserdata(L, d);
lua_pushcclosure(L, f_dir_files_iter, 1);
-
+
return 1;
}
int f_file_isreg(lua_State *L) {
struct stat st;
int n = lua_gettop(L);
-
+
if (n != 1) {
lua_pushstring(L, "file_isreg: expected one argument");
lua_error(L);
}
-
+
if (!lua_isstring(L, 1)) {
lua_pushstring(L, "file_isreg: argument has to be a string");
lua_error(L);
}
-
+
if (-1 == stat(lua_tostring(L, 1), &st)) {
lua_pushnil(L);
return 1;
}
-
+
lua_pushnumber(L, S_ISREG(st.st_mode));
-
+
return 1;
}
int f_file_isdir(lua_State *L) {
struct stat st;
int n = lua_gettop(L);
-
+
if (n != 1) {
lua_pushstring(L, "file_isreg: expected one argument");
lua_error(L);
}
-
+
if (!lua_isstring(L, 1)) {
lua_pushstring(L, "file_isreg: argument has to be a string");
lua_error(L);
}
-
+
if (-1 == stat(lua_tostring(L, 1), &st)) {
lua_pushnil(L);
return 1;
}
-
+
lua_pushnumber(L, S_ISDIR(st.st_mode));
-
+
return 1;
}
@@ -188,33 +192,33 @@ int f_memcache_exists(lua_State *L) {
char *r;
int n = lua_gettop(L);
struct memcache *mc;
-
+
if (!lua_islightuserdata(L, lua_upvalueindex(1))) {
lua_pushstring(L, "where is my userdata ?");
lua_error(L);
}
-
+
mc = lua_touserdata(L, lua_upvalueindex(1));
-
+
if (n != 1) {
lua_pushstring(L, "expected one argument");
lua_error(L);
}
-
+
if (!lua_isstring(L, 1)) {
lua_pushstring(L, "argument has to be a string");
lua_error(L);
}
-
- if (NULL == (r = mc_aget(mc,
- (char*) lua_tostring(L, 1), lua_strlen(L, 1)))) {
-
+
+ if (NULL == (r = mc_aget(mc,
+ lua_tostring(L, 1), lua_strlen(L, 1)))) {
+
lua_pushboolean(L, 0);
return 1;
}
-
+
free(r);
-
+
lua_pushboolean(L, 1);
return 1;
}
@@ -222,74 +226,74 @@ int f_memcache_exists(lua_State *L) {
int f_memcache_get_string(lua_State *L) {
char *r;
int n = lua_gettop(L);
-
+
struct memcache *mc;
-
+
if (!lua_islightuserdata(L, lua_upvalueindex(1))) {
lua_pushstring(L, "where is my userdata ?");
lua_error(L);
}
-
+
mc = lua_touserdata(L, lua_upvalueindex(1));
-
-
+
+
if (n != 1) {
lua_pushstring(L, "expected one argument");
lua_error(L);
}
-
+
if (!lua_isstring(L, 1)) {
lua_pushstring(L, "argument has to be a string");
lua_error(L);
}
-
- if (NULL == (r = mc_aget(mc,
- (char*) lua_tostring(L, 1), lua_strlen(L, 1)))) {
+
+ if (NULL == (r = mc_aget(mc,
+ lua_tostring(L, 1), lua_strlen(L, 1)))) {
lua_pushnil(L);
return 1;
}
-
+
lua_pushstring(L, r);
-
+
free(r);
-
+
return 1;
}
int f_memcache_get_long(lua_State *L) {
char *r;
int n = lua_gettop(L);
-
+
struct memcache *mc;
-
+
if (!lua_islightuserdata(L, lua_upvalueindex(1))) {
lua_pushstring(L, "where is my userdata ?");
lua_error(L);
}
-
+
mc = lua_touserdata(L, lua_upvalueindex(1));
-
-
+
+
if (n != 1) {
lua_pushstring(L, "expected one argument");
lua_error(L);
}
-
+
if (!lua_isstring(L, 1)) {
lua_pushstring(L, "argument has to be a string");
lua_error(L);
}
-
- if (NULL == (r = mc_aget(mc,
- (char*) lua_tostring(L, 1), lua_strlen(L, 1)))) {
+
+ if (NULL == (r = mc_aget(mc,
+ lua_tostring(L, 1), lua_strlen(L, 1)))) {
lua_pushnil(L);
return 1;
}
-
+
lua_pushnumber(L, strtol(r, NULL, 10));
-
+
free(r);
-
+
return 1;
}
#endif