libbb: fix a bad check for uclibc >= 0.9.31
authorDenys Vlasenko <vda.linux@googlemail.com>
Sun, 16 Mar 2014 19:53:40 +0000 (20:53 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Sun, 16 Mar 2014 19:53:40 +0000 (20:53 +0100)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
libbb/xreadlink.c

index bb63da08c86c1c2dad6d90d8da6e974db8fde663..7d4cb60a528f64b613a0aadf38afbd3a99b9bc4c 100644 (file)
@@ -1,14 +1,14 @@
 /* vi: set sw=4 ts=4: */
 /*
  * xreadlink.c - safe implementation of readlink.
- * Returns a NULL on failure...
+ * Returns a NULL on failure.
  *
  * Licensed under GPLv2, see file LICENSE in this source tree.
  */
 
 #include "libbb.h"
 
-/* some systems (eg Hurd) does not have MAXSYMLINKS definition,
+/* Some systems (eg Hurd) do not have MAXSYMLINKS definition,
  * set it to some reasonable value if it isn't defined */
 #ifndef MAXSYMLINKS
 # define MAXSYMLINKS 20
@@ -108,8 +108,11 @@ char* FAST_FUNC xmalloc_readlink_or_warn(const char *path)
 
 char* FAST_FUNC xmalloc_realpath(const char *path)
 {
-#if defined(__GLIBC__) || \
-    (defined(__UCLIBC__) && UCLIBC_VERSION >= KERNEL_VERSION(0, 9, 31))
+/* NB: uclibc also defines __GLIBC__
+ * Therefore the test "if glibc, or uclibc >= 0.9.31" looks a bit weird:
+ */
+#if defined(__GLIBC__) && \
+    (!defined(__UCLIBC__) || UCLIBC_VERSION >= KERNEL_VERSION(0, 9, 31))
        /* glibc provides a non-standard extension */
        /* new: POSIX.1-2008 specifies this behavior as well */
        return realpath(path, NULL);