diff options
author | Roland McGrath <roland@hack.frob.com> | 2012-08-01 10:33:11 -0700 |
---|---|---|
committer | Roland McGrath <roland@hack.frob.com> | 2012-08-03 11:39:30 -0700 |
commit | 4f75b7a09a57e0d33ee0741c18114ce8ac5d6c3f (patch) | |
tree | f128c28bda6d3832f80be759a353918def8acd44 /sysdeps/mach | |
parent | 0c41943a4d6dc2ce7fbf1ee90d9000852f177a89 (diff) | |
download | glibc-4f75b7a09a57e0d33ee0741c18114ce8ac5d6c3f.tar.gz glibc-4f75b7a09a57e0d33ee0741c18114ce8ac5d6c3f.tar.xz glibc-4f75b7a09a57e0d33ee0741c18114ce8ac5d6c3f.zip |
Distinguish ELOOP diagnosis threshold from SYMLOOP_MAX.
Diffstat (limited to 'sysdeps/mach')
-rw-r--r-- | sysdeps/mach/hurd/bits/local_lim.h | 13 | ||||
-rw-r--r-- | sysdeps/mach/hurd/eloop-threshold.h | 37 | ||||
-rw-r--r-- | sysdeps/mach/hurd/sys/param.h | 3 | ||||
-rw-r--r-- | sysdeps/mach/hurd/sysconf.c | 26 |
4 files changed, 65 insertions, 14 deletions
diff --git a/sysdeps/mach/hurd/bits/local_lim.h b/sysdeps/mach/hurd/bits/local_lim.h index 48411d071c..c957dad767 100644 --- a/sysdeps/mach/hurd/bits/local_lim.h +++ b/sysdeps/mach/hurd/bits/local_lim.h @@ -1,5 +1,5 @@ /* Minimum guaranteed maximum values for system limits. Hurd version. - Copyright (C) 1993,94,96,98,2002 Free Software Foundation, Inc. + Copyright (C) 1993-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -32,14 +32,3 @@ suitable, and `sysconf' will return a number at least as large. */ #define NGROUPS_MAX 256 - -/* The maximum number of symbolic links that are allowed in a single file - name resolution. When a further link is encountered, the call returns - ELOOP. This name is a GNU extension; POSIX.1 has no such limit, and BSD - calls it MAXSYMLINKS in <sys/param.h>. (We define the name under - _BSD_SOURCE even without _GNU_SOURCE because our <sys/param.h> uses it - to define MAXSYMLINKS.) */ - -#if defined __USE_GNU || defined __USE_BSD /* 1003.1a defines this */ -#define SYMLOOP_MAX 8 -#endif diff --git a/sysdeps/mach/hurd/eloop-threshold.h b/sysdeps/mach/hurd/eloop-threshold.h new file mode 100644 index 0000000000..b8fae16449 --- /dev/null +++ b/sysdeps/mach/hurd/eloop-threshold.h @@ -0,0 +1,37 @@ +/* Threshold at which to diagnose ELOOP. Hurd version. + Copyright (C) 2012 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _ELOOP_THRESHOLD_H +#define _ELOOP_THRESHOLD_H 1 + +/* Return the maximum number of symlink traversals to permit + before diagnosing ELOOP. + + In the Hurd version, here we are actually setting the only policy + there is on the system. We use a literal number here rather than + defining SYMLOOP_MAX so that programs don't compile in a number + but instead use sysconf and the number can be changed here to + affect sysconf's result. */ + +static inline unsigned int __attribute__ ((const)) +__eloop_threshold (void) +{ + return 32; +} + +#endif /* eloop-threshold.h */ diff --git a/sysdeps/mach/hurd/sys/param.h b/sysdeps/mach/hurd/sys/param.h index 42f4f46e7d..e58d5175bd 100644 --- a/sysdeps/mach/hurd/sys/param.h +++ b/sysdeps/mach/hurd/sys/param.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1993,1994,1995,1997,1999,2011 Free Software Foundation, Inc. +/* Copyright (C) 1993-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -83,7 +83,6 @@ #define NBBY CHAR_BIT #define NGROUPS NGROUPS_MAX -#define MAXSYMLINKS SYMLOOP_MAX #define CANBSIZ MAX_CANON /* XXX ? */ /* ARG_MAX is unlimited, but we define NCARGS for BSD programs that want to diff --git a/sysdeps/mach/hurd/sysconf.c b/sysdeps/mach/hurd/sysconf.c new file mode 100644 index 0000000000..6d1666d93c --- /dev/null +++ b/sysdeps/mach/hurd/sysconf.c @@ -0,0 +1,26 @@ +/* Return values of system parameters. Hurd version. + Copyright (C) 2012 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <limits.h> +#include <unistd.h> + +#include <eloop-threshold.h> + +#define SYMLOOP_MAX (__eloop_threshold ()) + +#include <sysdeps/posix/sysconf.c> |