Return #f on end-of-file when scanning table (i.e. when called
with no arguments). Try to catch errors, when we can.
* posix.c (scm_getgrgid, scm_getpwuid): Same.
{
SCM_DEFER_INTS;
SCM_SYSCALL (entry = getpwent ());
+ if (! entry)
+ {
+ SCM_ALLOW_INTS;
+ return SCM_BOOL_F;
+ }
}
else if (SCM_INUMP (user))
{
ve = SCM_VELTS (result);
SCM_DEFER_INTS;
if (SCM_UNBNDP (name) || (name == SCM_BOOL_F))
- SCM_SYSCALL (entry = getgrent ());
+ {
+ SCM_SYSCALL (entry = getgrent ());
+ if (! entry)
+ {
+ SCM_ALLOW_INTS;
+ return SCM_BOOL_F;
+ }
+ }
else if (SCM_INUMP (name))
SCM_SYSCALL (entry = getgrgid (SCM_INUM (name)));
else