-#else /* HAVE_CRED_STRUCT */
-
-/*
- * Until very recently all credential information was embedded in
- * the linux task struct. For this reason to simulate a Solaris
- * cred_t we need to pass the entire task structure around.
- */
-
-/* Hold a reference on the credential and group info */
-void crhold(cred_t *cr) { }
-
-/* Free a reference on the credential and group info */
-void crfree(cred_t *cr) { }
-
-/* Return the number of supplemental groups */
-int
-crgetngroups(const cred_t *cr)
-{
- int lock, rc;
-
- lock = (cr != current);
- if (lock)
- task_lock((struct task_struct *)cr);
-
- get_group_info(cr->group_info);
- rc = cr->group_info->ngroups;
- put_group_info(cr->group_info);
-
- if (lock)
- task_unlock((struct task_struct *)cr);
-
- return rc;
-}
-
-/*
- * Return an array of supplemental gids. The returned address is safe
- * to use as long as the caller has taken a reference with crhold().
- * The caller is responsible for releasing the reference with crfree().
- */
-gid_t *
-crgetgroups(const cred_t *cr)
-{
- gid_t *gids;
- int lock;
-
- lock = (cr != current);
- if (lock)
- task_lock((struct task_struct *)cr);
-
- get_group_info(cr->group_info);
- gids = KGID_TO_SGID(cr->group_info->blocks[0]);
- put_group_info(cr->group_info);
-
- if (lock)
- task_unlock((struct task_struct *)cr);
-
- return gids;
-}
-
-/* Check if the passed gid is available is in supplied credential. */
-int
-groupmember(gid_t gid, const cred_t *cr)
-{
- int lock, rc;
-
- lock = (cr != current);
- if (lock)
- task_lock((struct task_struct *)cr);
-
- get_group_info(cr->group_info);
- rc = cr_groups_search(cr->group_info, gid);
- put_group_info(cr->group_info);
-
- if (lock)
- task_unlock((struct task_struct *)cr);
-
- return rc;
-}
-
-#endif /* HAVE_CRED_STRUCT */
-