From 47774572e08b64da90c834410637e92e8b2a9051 Mon Sep 17 00:00:00 2001
From: Steven Barth <steven@midlink.org>
Date: Sat, 26 Jul 2008 15:33:50 +0000
Subject: [PATCH] contrib/package: Add luaposix to OpenWRT feed

---
 contrib/package/luaposix/Makefile             | 43 +++++++++++++
 .../package/luaposix/patches/200-crypt.patch  | 62 +++++++++++++++++++
 2 files changed, 105 insertions(+)
 create mode 100644 contrib/package/luaposix/Makefile
 create mode 100644 contrib/package/luaposix/patches/200-crypt.patch

diff --git a/contrib/package/luaposix/Makefile b/contrib/package/luaposix/Makefile
new file mode 100644
index 000000000..bcbd40186
--- /dev/null
+++ b/contrib/package/luaposix/Makefile
@@ -0,0 +1,43 @@
+# Copyright (C) 2008 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+# $Id$
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=luaposix
+PKG_VERSION:=5.1.3
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://luaforge.net/frs/download.php/3449
+PKG_MD5SUM:=4271f321c39d0560d9fbe6ca882a67aa
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
+PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/luaposix
+  SECTION:=lang
+  CATEGORY:=Languages
+  SUBMENU:=LUA
+  TITLE:=Posix library for Lua
+  URL:=http://luaforge.net/projects/luaposix/
+  DEPENDS:=+liblua
+endef
+
+define Build/Configure
+endef
+
+MAKE_FLAGS += \
+	OS=Linux
+
+define Package/luaposix/install		
+	$(INSTALL_DIR) $(1)/usr/lib/lua
+	$(CP) $(PKG_BUILD_DIR)/posix.so $(1)/usr/lib/lua
+endef
+
+$(eval $(call BuildPackage,luaposix))
diff --git a/contrib/package/luaposix/patches/200-crypt.patch b/contrib/package/luaposix/patches/200-crypt.patch
new file mode 100644
index 000000000..6ceab5556
--- /dev/null
+++ b/contrib/package/luaposix/patches/200-crypt.patch
@@ -0,0 +1,62 @@
+--- a/lposix.c
++++ b/lposix.c
+@@ -1016,6 +1016,29 @@
+ }
+ #endif
+ 
++/*
++ * XXX: GNU and BSD handle the forward declaration of crypt() in different
++ * and annoying ways (especially GNU). Declare it here just to make sure
++ * that it's there
++ */
++char *crypt(const char *, const char *);
++
++static int Pcrypt(lua_State *L)
++{
++	const char *str, *salt;
++	char *res;
++
++	str = luaL_checkstring(L, 1);
++	salt = luaL_checkstring(L, 2);
++	if (strlen(salt) < 2)
++		luaL_error(L, "not enough salt");
++
++	res = crypt(str, salt);
++	lua_pushstring(L, res);
++
++	return 1;
++}
++
+ static const luaL_reg R[] =
+ {
+ 	{"access",		Paccess},
+@@ -1023,6 +1046,7 @@
+ 	{"chdir",		Pchdir},
+ 	{"chmod",		Pchmod},
+ 	{"chown",		Pchown},
++	{"crypt",		Pcrypt},
+ 	{"ctermid",		Pctermid},
+ 	{"dirname",		Pdirname},
+ 	{"dir",			Pdir},
+--- a/Makefile
++++ b/Makefile
+@@ -37,8 +37,10 @@
+ OS=$(shell uname)
+ ifeq ($(OS),Darwin)
+   LDFLAGS_SHARED=-bundle -undefined dynamic_lookup
++  LIBS=
+ else
+   LDFLAGS_SHARED=-shared
++  LIBS=-lcrypt
+ endif
+ 
+ # targets
+@@ -50,7 +52,7 @@
+ 	$(LUA) test.lua
+ 
+ $T:	$(OBJS)
+-	$(CC) $(LDFLAGS) -o $@ $(LDFLAGS_SHARED) $(OBJS)
++	$(CC) $(LDFLAGS) -o $@ $(LDFLAGS_SHARED) $(OBJS) $(LIBS)
+ 
+ $(OBJS): modemuncher.c
+ 
-- 
2.25.1