diff options
Diffstat (limited to 'contrib/package/luaposix/patches/200-crypt.patch')
-rw-r--r-- | contrib/package/luaposix/patches/200-crypt.patch | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/contrib/package/luaposix/patches/200-crypt.patch b/contrib/package/luaposix/patches/200-crypt.patch new file mode 100644 index 0000000000..6ceab55567 --- /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 + |