recv.getInternalVariables().setInternalVariable("group_blocking", true);
ThreadContext context = runtime.getCurrentContext();
posix.setgrent();
Group gr;
while((gr = posix.getgrent()) != null) {
block.yield(context, setupGroup(runtime, gr));
}
} finally {
posix.endgrent();
recv.getInternalVariables().setInternalVariable("group_blocking", false);
}
} else {
Group gr = posix.getgrent();
if (gr != null) {
return setupGroup(runtime, gr);
} else {
return runtime.getNil();
}