return NSS_STATUS_NOTFOUND;
else
{
+ fsetpos (ent->stream, &pos);
__set_errno (ERANGE);
return NSS_STATUS_TRYAGAIN;
}
if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */
continue;
else
- return status;
+ {
+ if (status == NSS_STATUS_TRYAGAIN)
+ /* The parser ran out of space. */
+ fsetpos (ent->stream, &pos);
+ return status;
+ }
}
-
+
/* +:... */
if (result->gr_name[0] == '+' && result->gr_name[1] == '\0')
{
return NSS_STATUS_NOTFOUND;
else
{
+ fsetpos (ent->stream, &pos);
__set_errno (ERANGE);
return NSS_STATUS_TRYAGAIN;
}
}
/* -group */
- if (result->gr_name[0] == '-' && result->gr_name[1] != '\0'
- && result->gr_name[1] != '@')
+ if (result->gr_name[0] == '-' && result->gr_name[1] != '\0')
{
if (strcmp (&result->gr_name[1], name) == 0)
return NSS_STATUS_NOTFOUND;
}
/* +group */
- if (result->gr_name[0] == '+' && result->gr_name[1] != '\0'
- && result->gr_name[1] != '@')
+ if (result->gr_name[0] == '+' && result->gr_name[1] != '\0')
{
if (strcmp (name, &result->gr_name[1]) == 0)
{
return NSS_STATUS_NOTFOUND;
else
{
+ fsetpos (ent->stream, &pos);
__set_errno (ERANGE);
return NSS_STATUS_TRYAGAIN;
}
}
/* -group */
- if (result->gr_name[0] == '-' && result->gr_name[1] != '\0'
- && result->gr_name[1] != '@')
+ if (result->gr_name[0] == '-' && result->gr_name[1] != '\0')
{
blacklist_store_name (&result->gr_name[1], ent);
continue;
}
/* +group */
- if (result->gr_name[0] == '+' && result->gr_name[1] != '\0'
- && result->gr_name[1] != '@')
+ if (result->gr_name[0] == '+' && result->gr_name[1] != '\0')
{
enum nss_status status;