#include #include #include #include int main() { int saved_errno; for (;;) { errno = 0; struct group *gr = getgrent(); saved_errno = errno; if (gr) { printf("name: %s members: ", gr->gr_name); } else { printf ("End of file or error "); break; } for (char **p = gr->gr_mem; *p; p++) printf ("%s ", *p); printf("\n"); } printf("(errno = %s)\n", strerror(saved_errno)); printf("errno before endgrent() = %s\n", strerror(errno)); endgrent(); printf("errno after endgrent() = %s\n", strerror(errno)); }