fixdep.c: avoit doing memcmp in most cases
[oweals/busybox.git] / include / grp_.h
index b34addfa2b951806ed781f9425c88ed766123d4f..061b86ef728788bd559cbe919cbe7db121434d3d 100644 (file)
  *     POSIX Standard: 9.2.1 Group Database Access     <grp.h>
  */
 
+#if !ENABLE_USE_BB_PWD_GRP
 
-#if !defined CONFIG_USE_BB_PWD_GRP
 #include <grp.h>
 
 #else
 
 #ifndef        _GRP_H
-#define        _GRP_H  1
-
-#include <sys/types.h>
-#include <features.h>
-#include <stdio.h>
+#define        _GRP_H 1
 
 /* 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. */
+struct group {
+       char *gr_name;          /* Group name.  */
+       char *gr_passwd;        /* Password.    */
+       gid_t gr_gid;           /* Group ID.    */
+       char **gr_mem;          /* Member list. */
 };
 
+/* We don't reimplement this, just supplying prototype */
+/* The function itself is in libc */
+/* Set the group set for the current user to GROUPS (N of them).  */
+extern int setgroups(size_t __n, __const gid_t *__groups);
+
+
+#define setgrent     bb_internal_setgrent
+#define endgrent     bb_internal_endgrent
+#define getgrent     bb_internal_getgrent
+#define fgetgrent    bb_internal_fgetgrent
+#define putgrent     bb_internal_putgrent
+#define getgrgid     bb_internal_getgrgid
+#define getgrnam     bb_internal_getgrnam
+#define getgrent_r   bb_internal_getgrent_r
+#define getgrgid_r   bb_internal_getgrgid_r
+#define getgrnam_r   bb_internal_getgrnam_r
+#define fgetgrent_r  bb_internal_fgetgrent_r
+#define getgrouplist bb_internal_getgrouplist
+#define initgroups   bb_internal_initgroups
+
+
+/* All function names below should be remapped by #defines above
+ * in order to not collide with libc names.
+ * In theory it isn't necessary, but I saw weird interactions at link time.
+ * Let's play safe */
+
 
 /* Rewind the group-file stream.  */
-extern void setgrent (void);
+extern void setgrent(void);
 
 /* Close the group-file stream.  */
-extern void endgrent (void);
+extern void endgrent(void);
 
 /* Read an entry from the group-file stream, opening it if necessary.  */
-extern struct group *getgrent (void);
+extern struct group *getgrent(void);
 
 /* Read a group entry from STREAM.  */
-extern struct group *fgetgrent (FILE *__stream);
+extern struct group *fgetgrent(FILE *__stream);
 
 /* Write the given entry onto the given stream.  */
-extern int putgrent (__const struct group *__restrict __p,
+extern int putgrent(__const struct group *__restrict __p,
                     FILE *__restrict __f);
 
 /* Search for an entry with a matching group ID.  */
-extern struct group *getgrgid (gid_t __gid);
+extern struct group *getgrgid(gid_t __gid);
 
 /* Search for an entry with a matching group name.  */
-extern struct group *getgrnam (__const char *__name);
+extern struct group *getgrnam(__const char *__name);
 
 /* Reentrant versions of some of the functions above.
 
@@ -74,41 +95,38 @@ extern struct group *getgrnam (__const char *__name);
    other reentrant functions so the chances are good this is what the
    POSIX people would choose.  */
 
-extern int getgrent_r (struct group *__restrict __resultbuf,
+extern int getgrent_r(struct group *__restrict __resultbuf,
                       char *__restrict __buffer, size_t __buflen,
                       struct group **__restrict __result);
 
 /* Search for an entry with a matching group ID.  */
-extern int getgrgid_r (gid_t __gid, struct group *__restrict __resultbuf,
+extern int getgrgid_r(gid_t __gid, struct group *__restrict __resultbuf,
                       char *__restrict __buffer, size_t __buflen,
                       struct group **__restrict __result);
 
 /* Search for an entry with a matching group name.  */
-extern int getgrnam_r (__const char *__restrict __name,
+extern int getgrnam_r(__const char *__restrict __name,
                       struct group *__restrict __resultbuf,
                       char *__restrict __buffer, size_t __buflen,
                       struct group **__restrict __result);
 
 /* Read a group entry from STREAM.  This function is not standardized
    an probably never will.  */
-extern int fgetgrent_r (FILE *__restrict __stream,
+extern int fgetgrent_r(FILE *__restrict __stream,
                        struct group *__restrict __resultbuf,
                        char *__restrict __buffer, size_t __buflen,
                        struct group **__restrict __result);
 
-/* Set the group set for the current user to GROUPS (N of them).  */
-extern int setgroups (size_t __n, __const gid_t *__groups);
-
 /* 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,
+extern int getgrouplist(__const char *__user, gid_t __group,
                         gid_t *__groups, int *__ngroups);
 
 /* 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);
+extern int initgroups(__const char *__user, gid_t __group);
 
 
 #endif /* grp.h  */