rem: tail = (struct userid *) xmalloc (sizeof (struct userid));
add: tail = xmalloc (sizeof (struct userid));
context: getgroup (gid_t gid){  register struct userid *tail;  struct group *grent;  for (tail = group_alist; tail; tail = tail->next)    if (tail->id.g == gid)      return tail->name;  grent = getgrgid (gid);  tail = (struct userid *) xmalloc (sizeof (struct userid));  tail->id.g = gid;  tail->name = grent ? xstrdup (grent->gr_name) : NULL;  /* Add to the head of the list, so most recently used is first.  */  tail->next = group_alist;  group_alist = tail;  return tail->name;}