returns an error, fall back to MAXSYMLINKS on platforms that
define it. Fixes build on Hurd. Patch from Justus Winter and
Debian.
git-svn-id: svn://svn.sv.gnu.org/sysvinit/sysvinit/trunk@138
456724a4-4300-0410-8514-
c89748c515a2
* Define _XOPEN_SOURCE when building to get crypt() from <unistd.h>
instead of using <crypt.h> in sulogin.c, to get the source building
with the musl C library.
+ * Use sysconf(_SC_SYMLOOP_MAX) instead of MAXSYMLINKS. If sysconf
+ returns an error, fall back to MAXSYMLINKS on platforms that
+ define it. Fixes build on Hurd. Patch from Justus Winter and
+ Debian.
-- Petter Reinholdtsen <pere@hungry.com> Sun Apr 11 11:28:55 CEST 2010
return 0;
}
+/*
+ * 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.
*/
{
char buf[PATH_MAX+1];
const char *curr;
- int deep = MAXSYMLINKS;
+ int deep = maxsymlinks();
if (!nlist) return 0;