If sysconf returns an error, fall back to MAXSYMLINKS on platforms
that define it.

Fixes build on Hurd.
---
 debian/changelog |    2 ++
 src/killall5.c   |   15 ++++++++++++++-
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/debian/changelog b/debian/changelog
index ce16030..dd1861d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -60,6 +60,8 @@ sysvinit (2.88dsf-42) UNRELEASED; urgency=low
     only recently.
   * checkroot.sh: Only run rootcheck on Linux. Neither kFreeBSD nor Hurd
     have /dev/root and the device ids used here are specific to Linux.
+  * killall5.c: Use sysconf(_SC_SYMLOOP_MAX) instead of MAXSYMLINKS.
+    Fixes build on Hurd.
 
  -- Roger Leigh <rle...@debian.org>  Sat, 04 May 2013 13:13:51 +0100
 
diff --git a/src/killall5.c b/src/killall5.c
index 5937d98..2c9bb4f 100644
--- a/src/killall5.c
+++ b/src/killall5.c
@@ -367,13 +367,26 @@ out:
 }
 
 /*
+ *     Get the maximal number of symlinks to follow.
+ */
+static int maxsymlinks(void)
+{
+       int v = sysconf(_SC_SYMLOOP_MAX);
+#ifdef MAXSYMLINKS
+       if (v == -1)
+               return MAXSYMLINKS;
+#endif
+       return v;
+}
+
+/*
  *     Check path is located on a network based partition.
  */
 int check4nfs(const char * path, char * real)
 {
        char buf[PATH_MAX+1];
        const char *curr;
-       int deep = MAXSYMLINKS;
+       int deep = maxsymlinks();
 
        if (!nlist) return 0;
 
-- 
1.7.10.4


Reply via email to