summaryrefslogtreecommitdiff
path: root/process.c
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-03-07 16:44:36 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-03-07 16:44:36 +0000
commitc57118f757619042261c65098a7001a05addf4de (patch)
tree7c440ae6e80adab130b71fd1854c5e0baf3bb982 /process.c
parent436d5dc6eb2661f55191286437714676694214ed (diff)
* process.c (get_sc_ngroups_max): define to wrap sysconf(3).
this also supports Windows which doesn't have sysconf(3). * process.c (maxgroups): use get_sc_ngroups_max. * process.c (proc_setmaxgroups): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31055 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'process.c')
-rw-r--r--process.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/process.c b/process.c
index c1832de2a2..a009716208 100644
--- a/process.c
+++ b/process.c
@@ -4542,10 +4542,18 @@ proc_setgid(VALUE obj, VALUE id)
*/
#define RB_MAX_GROUPS (65536)
static int _maxgroups = -1;
+static int get_sc_ngroups_max(void)
+{
+#ifdef _SC_NGROUPS_MAX
+ return (int)sysconf(_SC_NGROUPS_MAX);
+#else
+ return 32;
+#endif
+}
static int maxgroups(void)
{
if (_maxgroups < 0) {
- _maxgroups = (int)sysconf(_SC_NGROUPS_MAX);
+ _maxgroups = get_sc_ngroups_max();
if (_maxgroups < 0)
_maxgroups = RB_MAX_GROUPS;
}
@@ -4729,7 +4737,7 @@ static VALUE
proc_setmaxgroups(VALUE obj, VALUE val)
{
int ngroups = FIX2INT(val);
- int ngroups_max = (int)sysconf(_SC_NGROUPS_MAX);
+ int ngroups_max = get_sc_ngroups_max();
if (ngroups <= 0)
rb_raise(rb_eArgError, "maxgroups %d shold be positive", ngroups);