From aa80e2d93acbd2ad9277ab3b377cb96efb8c1eaa Mon Sep 17 00:00:00 2001 From: pixel Date: Sun, 16 Jul 2006 12:24:54 +0000 Subject: Adding mkdir to LUA Fixing iconv Fixing the hash table functions --- lib/BLua.cc | 25 ++++++++++++++++++++++++- lib/String.cc | 5 +++-- lib/hashtab.c | 8 ++++++++ lib/recycle.c | 2 ++ 4 files changed, 37 insertions(+), 3 deletions(-) (limited to 'lib') diff --git a/lib/BLua.cc b/lib/BLua.cc index d86740d..7d70bb9 100644 --- a/lib/BLua.cc +++ b/lib/BLua.cc @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id: BLua.cc,v 1.36 2006-02-09 17:08:24 pixel Exp $ */ +/* $Id: BLua.cc,v 1.37 2006-07-16 12:24:54 pixel Exp $ */ #include #include "BLua.h" @@ -77,6 +77,7 @@ class LuaStatics : public Base { static int dumpvars(lua_State *); static int iconv(lua_State *); + static int mkdir(lua_State *); static int globalindex(lua_State *); }; @@ -299,6 +300,22 @@ int LuaStatics::iconv(lua_State * _L) { return 1; } +int LuaStatics::mkdir(lua_State * _L) { + Lua * L = Lua::find(_L); + int n = L->gettop(); + String dirname; + + if (n != 1) { + L->error("Incorrect arguments to function `mkdir'"); + } + + dirname = L->tostring(1); + + ::MKDIR(dirname.to_charp()); + + return 0; +} + int LuaStatics::callwrap(lua_State * __L, lua_CFunction func) { Lua * L = Lua::find(__L); int n; @@ -419,7 +436,13 @@ Lua::Lua(const Lua & l) throw (GeneralException) { void Lua::open_base() { lock(); luaopen_base(L); + push("mkdir"); + push(LuaStatics::mkdir); + settable(); lua_pop(L, 1); + push("mkdir"); + push(LuaStatics::mkdir); + settable(LUA_GLOBALSINDEX); unlock(); } diff --git a/lib/String.cc b/lib/String.cc index 36e6c52..bc5739e 100644 --- a/lib/String.cc +++ b/lib/String.cc @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id: String.cc,v 1.43 2006-02-09 17:03:07 pixel Exp $ */ +/* $Id: String.cc,v 1.44 2006-07-16 12:24:54 pixel Exp $ */ #include #include @@ -562,8 +562,9 @@ String String::trim() const { return rtrim().ltrim(); } -String & String::iconv(const String & from, const String & to) { +String & String::iconv(const String & from, const String & _to) { iconv_t cd; + String to = _to + "//TRANSLIT"; #ifdef __linux__ char * inbuf; #else diff --git a/lib/hashtab.c b/lib/hashtab.c index 4ce9961..566d7a6 100644 --- a/lib/hashtab.c +++ b/lib/hashtab.c @@ -40,6 +40,14 @@ This implements a hash table. #include "recycle.h" #endif +#ifndef FALSE +#define FALSE 0 +#endif + +#ifndef TRUE +#define TRUE !FALSE +#endif + /* sanity check -- make sure ipos, apos, and count make sense */ static void hsanity(t) htab *t; diff --git a/lib/recycle.c b/lib/recycle.c index 325e08a..2530e66 100644 --- a/lib/recycle.c +++ b/lib/recycle.c @@ -19,6 +19,8 @@ This also decreases memory fragmentation, and freeing structures # include "recycle.h" #endif +# define align(a) (((Uint32)a+(sizeof(void *)-1))&(~(sizeof(void *)-1))) + reroot *remkroot(size) size_t size; { -- cgit v1.2.3