diff --git a/project/headers.mk b/project/headers.mk
index 7b036f6..eacad87 100644
--- a/project/headers.mk
+++ b/project/headers.mk
@@ -6,6 +6,7 @@ INTERNAL_HEADERS = \
 	$(PROJECT_DIR)/src/internal/argv/argv.h \
 	$(PROJECT_DIR)/src/internal/$(PACKAGE)_driver_impl.h \
 	$(PROJECT_DIR)/src/internal/$(PACKAGE)_install_impl.h \
+	$(PROJECT_DIR)/src/internal/$(PACKAGE)_readlink_impl.h \
 	$(PROJECT_DIR)/src/internal/$(PACKAGE)_spawn_impl.h \
 	$(PROJECT_DIR)/src/internal/$(PACKAGE)_symlink_impl.h \
 
diff --git a/src/internal/slibtool_readlink_impl.h b/src/internal/slibtool_readlink_impl.h
new file mode 100644
index 0000000..f66e10b
--- /dev/null
+++ b/src/internal/slibtool_readlink_impl.h
@@ -0,0 +1,24 @@
+/*******************************************************************/
+/*  slibtool: a skinny libtool implementation, written in C        */
+/*  Copyright (C) 2016  Z. Gilboa                                  */
+/*  Released under the Standard MIT License; see COPYING.SLIBTOOL. */
+/*******************************************************************/
+
+#include <unistd.h>
+
+static inline int slbt_readlink(
+	const char *	restrict path,
+	char *		restrict buf,
+	ssize_t		bufsize)
+{
+	ssize_t ret;
+
+	if ((ret = readlink(path,buf,bufsize)) <= 0)
+		return -1;
+	else if (ret == bufsize)
+		return -1;
+	else {
+		buf[ret] = '\0';
+		return 0;
+	}
+}
diff --git a/src/logic/slbt_exec_install.c b/src/logic/slbt_exec_install.c
index 22d1e22..c2e334a 100644
--- a/src/logic/slbt_exec_install.c
+++ b/src/logic/slbt_exec_install.c
@@ -15,6 +15,7 @@
 
 #include <slibtool/slibtool.h>
 #include "slibtool_install_impl.h"
+#include "slibtool_readlink_impl.h"
 #include "slibtool_spawn_impl.h"
 #include "slibtool_symlink_impl.h"
 #include "argv/argv.h"
@@ -168,7 +169,7 @@ static int slbt_exec_install_entry(
 		base = slnkname;
 
 	/* source (build) symlink target */
-	if (readlink(slnkname,target,sizeof(target)) <= 0) {
+	if (slbt_readlink(slnkname,target,sizeof(target)) < 0) {
 		/* -avoid-version? */
 		if (stat(slnkname,&st))
 			return -1;