+
+ size = sizeof(groups) / sizeof(gid_t);
+ n = getgroups(size - 1, groups);
+ if (n < 0)
+ perror("getgroups failed");
+ else
+ {
+ int i;
+ fprintf (stderr, "eff. group list: [");
+ for (i = 0; i < n; i++)
+ {
+ g = getgrgid (groups[i]);
+ fprintf(stderr, "%s%s=%ld", (i == 0 ? "" : ", "),
+ (g->gr_name ? g->gr_name : "???"),
+ (long) groups[i]);
+ }
+ fprintf (stderr, "]\n");
+ }