summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2013-02-17 13:21:56 -0500
committerRich Felker <dalias@aerifal.cx>2013-02-17 13:21:56 -0500
commitcac872957e8c9e3fc13904c1c55eee0253ec1382 (patch)
treef3b6fb0402b32ea47469412f0f1baa2b4239a63b
parentb9e08308f4d1fccc188408b223e6820194a5fadf (diff)
downloadmusl-cac872957e8c9e3fc13904c1c55eee0253ec1382.tar.gz
add fgetgrent function
based on patch by Isaac Dunham, moved to its own file to avoid increasing bss on static linked programs not using this nonstandard function but using the standard getgrent function, and vice versa.
-rw-r--r--include/grp.h4
-rw-r--r--src/passwd/fgetgrent.c9
2 files changed, 13 insertions, 0 deletions
diff --git a/include/grp.h b/include/grp.h
index 030d7f82..cb40e07e 100644
--- a/include/grp.h
+++ b/include/grp.h
@@ -30,6 +30,10 @@ struct group *getgrent(void);
void endgrent(void);
void setgrent(void);
+#ifdef _GNU_SOURCE
+struct group *fgetgrent(FILE *stream);
+#endif
+
#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
int getgrouplist(const char *, gid_t, gid_t *, int *);
int setgroups(size_t, const gid_t *);
diff --git a/src/passwd/fgetgrent.c b/src/passwd/fgetgrent.c
new file mode 100644
index 00000000..2f18d925
--- /dev/null
+++ b/src/passwd/fgetgrent.c
@@ -0,0 +1,9 @@
+#include "pwf.h"
+
+struct group *fgetgrent(FILE *f)
+{
+ static char *line, **mem;
+ static struct group gr;
+ size_t size=0, nmem=0;
+ return __getgrent_a(f, &gr, &line, &size, &mem, &nmem);
+}