diff options
author | Eric Andersen <andersen@codepoet.org> | 2001-09-27 05:21:15 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2001-09-27 05:21:15 +0000 |
commit | e83a36ce9f97ac0f59117b3a62fd2dd8461b1fd5 (patch) | |
tree | 85ce10f2fc87fba69e07a13d7036d074e195dea7 /include/grp.h | |
parent | 65eee187317b93773d2409d0e7e2814d34c6a0e1 (diff) |
Rev all the header files to sync things with glibc 2.2.4
Diffstat (limited to 'include/grp.h')
-rw-r--r-- | include/grp.h | 159 |
1 files changed, 136 insertions, 23 deletions
diff --git a/include/grp.h b/include/grp.h index c0db17e44..33247718a 100644 --- a/include/grp.h +++ b/include/grp.h @@ -1,41 +1,154 @@ -#ifndef __GRP_H -#define __GRP_H +/* Copyright (C) 1991,92,95,96,97,98,99,2000,01 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +/* + * POSIX Standard: 9.2.1 Group Database Access <grp.h> + */ + +#ifndef _GRP_H +#define _GRP_H 1 -#include <sys/types.h> #include <features.h> -#include <stdio.h> __BEGIN_DECLS -/* The group structure */ +#include <bits/types.h> + +#define __need_size_t +#include <stddef.h> + + +/* For the Single Unix specification we must define this type here. */ +#if defined __USE_XOPEN && !defined __gid_t_defined +typedef __gid_t gid_t; +# define __gid_t_defined +#endif + +/* The group structure. */ struct group -{ - char *gr_name; /* Group name. */ - char *gr_passwd; /* Password. */ - gid_t gr_gid; /* Group ID. */ - char **gr_mem; /* Member list. */ -}; + { + char *gr_name; /* Group name. */ + char *gr_passwd; /* Password. */ + __gid_t gr_gid; /* Group ID. */ + char **gr_mem; /* Member list. */ + }; -extern void setgrent __P ((void)); -extern void endgrent __P ((void)); -extern struct group * getgrent __P ((void)); -extern struct group * getgrgid __P ((__const gid_t gid)); -extern struct group * getgrnam __P ((__const char * name)); +#if defined __USE_SVID || defined __USE_GNU +# define __need_FILE +# include <stdio.h> +#endif -extern struct group * fgetgrent __P ((FILE * file)); -extern int setgroups __P ((size_t n, __const gid_t * groups)); -extern int initgroups __P ((__const char * user, gid_t gid)); +#if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN_EXTENDED +/* Rewind the group-file stream. */ +extern void setgrent (void) __THROW; +/* Close the group-file stream. */ +extern void endgrent (void) __THROW; -#ifdef _LIBC -extern struct group * __getgrent __P ((int grp_fd)); +/* Read an entry from the group-file stream, opening it if necessary. */ +extern struct group *getgrent (void) __THROW; #endif -__END_DECLS +#ifdef __USE_SVID +/* Read a group entry from STREAM. */ +extern struct group *fgetgrent (FILE *__stream) __THROW; +#endif + +#ifdef __USE_GNU +/* Write the given entry onto the given stream. */ +extern int putgrent (__const struct group *__restrict __p, + FILE *__restrict __f) __THROW; +#endif + +/* Search for an entry with a matching group ID. */ +extern struct group *getgrgid (__gid_t __gid) __THROW; -#endif /* _GRP_H */ +/* Search for an entry with a matching group name. */ +extern struct group *getgrnam (__const char *__name) __THROW; +#if defined __USE_POSIX || defined __USE_MISC +# ifdef __USE_MISC +/* Reasonable value for the buffer sized used in the reentrant + functions below. But better use `sysconf'. */ +# define NSS_BUFLEN_GROUP 1024 +# endif + +/* Reentrant versions of some of the functions above. + + PLEASE NOTE: the `getgrent_r' function is not (yet) standardized. + The interface may change in later versions of this library. But + the interface is designed following the principals used for the + other reentrant functions so the chances are good this is what the + POSIX people would choose. */ + +# ifdef __USE_GNU +extern int getgrent_r (struct group *__restrict __resultbuf, + char *__restrict __buffer, size_t __buflen, + struct group **__restrict __result) __THROW; +# endif + +/* Search for an entry with a matching group ID. */ +extern int getgrgid_r (__gid_t __gid, struct group *__restrict __resultbuf, + char *__restrict __buffer, size_t __buflen, + struct group **__restrict __result) __THROW; + +/* Search for an entry with a matching group name. */ +extern int getgrnam_r (__const char *__restrict __name, + struct group *__restrict __resultbuf, + char *__restrict __buffer, size_t __buflen, + struct group **__restrict __result) __THROW; + +# ifdef __USE_SVID +/* Read a group entry from STREAM. This function is not standardized + an probably never will. */ +extern int fgetgrent_r (FILE *__restrict __stream, + struct group *__restrict __resultbuf, + char *__restrict __buffer, size_t __buflen, + struct group **__restrict __result) __THROW; +# endif + +#endif /* POSIX or reentrant */ + + +#ifdef __USE_BSD + +# define __need_size_t +# include <stddef.h> + +/* Set the group set for the current user to GROUPS (N of them). */ +extern int setgroups (size_t __n, __const __gid_t *__groups) __THROW; + +/* Store at most *NGROUPS members of the group set for USER into + *GROUPS. Also include GROUP. The actual number of groups found is + returned in *NGROUPS. Return -1 if the if *NGROUPS is too small. */ +extern int getgrouplist (__const char *__user, __gid_t __group, + __gid_t *__groups, int *__ngroups) __THROW; + +/* Initialize the group set for the current user + by reading the group database and using all groups + of which USER is a member. Also include GROUP. */ +extern int initgroups (__const char *__user, __gid_t __group) __THROW; + +#endif /* Use BSD. */ + +__END_DECLS +#endif /* grp.h */ |