diff options
Diffstat (limited to 'guts/getgrgid_r.c')
-rw-r--r-- | guts/getgrgid_r.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/guts/getgrgid_r.c b/guts/getgrgid_r.c new file mode 100644 index 0000000..4ae6a93 --- /dev/null +++ b/guts/getgrgid_r.c @@ -0,0 +1,26 @@ +/* + * static int + * wrap_getgrgid_r(gid_t gid, struct group *gbuf, char *buf, size_t buflen, struct group **gbufp) { + * int rc = -1; + */ + + setgrent(); + while ((rc = wrap_getgrent_r(gbuf, buf, buflen, gbufp)) == 0) { + /* 0 means no error occurred, and *gbufp == gbuf */ + if (gbuf->gr_gid == gid) { + pseudo_debug(1, "found group gid %d, name %s\n", + gbuf->gr_gid, gbuf->gr_name); + return rc; + } + } + endgrent(); + /* we never found a match; rc is 0 if there was no error, or + * non-zero if an error occurred. Either way, set the + * pwbufp pointer to NULL to indicate that we didn't find + * something, and leave rc alone. + */ + *gbufp = NULL; + +/* return rc; + * } + */ |