summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--libs/nixio/Makefile5
-rw-r--r--libs/nixio/src/user.c6
2 files changed, 11 insertions, 0 deletions
diff --git a/libs/nixio/Makefile b/libs/nixio/Makefile
index 2a7552daf..fb91388d0 100644
--- a/libs/nixio/Makefile
+++ b/libs/nixio/Makefile
@@ -10,6 +10,7 @@ AXTLS_VERSION = 1.2.1
AXTLS_DIR = axTLS
AXTLS_FILE = $(AXTLS_DIR)-$(AXTLS_VERSION).tar.gz
NIXIO_TLS ?= openssl
+NIXIO_SHADOW ?= $(shell echo 'int main(void){ return !getspnam("root"); }' | $(CC) -include shadow.h -xc -o/dev/null - 2>/dev/null && echo yes)
NIXIO_SO = nixio.so
NIXIO_LDFLAGS =
@@ -45,6 +46,10 @@ ifeq ($(NIXIO_TLS),)
NIXIO_CFLAGS += -DNO_TLS
endif
+ifneq ($(NIXIO_SHADOW),yes)
+ NIXIO_CFLAGS += -DNO_SHADOW
+endif
+
ifeq ($(OS),SunOS)
NIXIO_LDFLAGS += -lsocket -lnsl -lsendfile
diff --git a/libs/nixio/src/user.c b/libs/nixio/src/user.c
index bc2184f99..b701bac95 100644
--- a/libs/nixio/src/user.c
+++ b/libs/nixio/src/user.c
@@ -28,7 +28,9 @@
#include <pwd.h>
#ifndef BSD
+#ifndef NO_SHADOW
#include <shadow.h>
+#endif
#include <crypt.h>
#endif
@@ -162,6 +164,7 @@ static int nixio_getpw(lua_State *L) {
}
#ifndef BSD
+#ifndef NO_SHADOW
static int nixio__push_spwd(lua_State *L, struct spwd *sp) {
lua_createtable(L, 0, 9);
lua_pushstring(L, sp->sp_namp);
@@ -216,6 +219,7 @@ static int nixio_getsp(lua_State *L) {
return nixio__push_spwd(L, sp);
}
}
+#endif /* !NO_SHADOW */
#endif /* !BSD */
static int nixio_crypt(lua_State *L) {
@@ -239,8 +243,10 @@ static const luaL_reg R[] = {
{"getgr", nixio_getgr},
{"getpw", nixio_getpw},
#ifndef BSD
+#ifndef NO_SHADOW
{"getsp", nixio_getsp},
#endif
+#endif
{NULL, NULL}
};