diff options
author | Sascha Silbe <sascha-pgp@silbe.org> | 2010-07-21 17:30:43 (GMT) |
---|---|---|
committer | Sascha Silbe <sascha-pgp@silbe.org> | 2010-07-21 17:30:43 (GMT) |
commit | 5ab8ddb8ddb8dc6925cb3bb5f52e0a06b7a1c439 (patch) | |
tree | 01e6ca6d9d6eaa54052480200f039c8e50f0166f /nss/gids.c | |
parent | d4fe57f377d8f78f02a9e5f6d9c201b4e9eb86f4 (diff) |
rearrange source tree to match that of the tarball
Diffstat (limited to 'nss/gids.c')
-rw-r--r-- | nss/gids.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/nss/gids.c b/nss/gids.c new file mode 100644 index 0000000..81d7d69 --- /dev/null +++ b/nss/gids.c @@ -0,0 +1,33 @@ +#define _GNU_SOURCE +#include <grp.h> +#include <stdio.h> +#include <string.h> +#define BUFLEN 4096 + +int main() { + struct group gr, *grp; + char buf[BUFLEN]; + int i, cnt; + + cnt = 0; + + setgrent(); + while (1) { + i = getgrent_r(&gr, buf, BUFLEN, &grp); + if (i) { + printf("status: %d\n", i); + break; + } + int num_members = 0; + char** mem_ptr = grp->gr_mem; + while (mem_ptr && *mem_ptr) {num_members++; mem_ptr++;} + printf("\ncnt %d: name %s gid (%d) : num_members %d\n", cnt, grp->gr_name, grp->gr_gid, num_members); + for (i = 0; i < num_members; i++) + printf("%s ", grp->gr_mem[i]); + if (num_members) printf("\n"); + cnt++; + } + endgrent(); + return 0; +} + |