applied suggested patch with PERL_OBJECT tweaks
[p5sagit/p5-mst-13.2.git] / t / op / grent.t
CommitLineData
c5987ebb 1#!./perl
2
3BEGIN {
4 chdir 't' if -d 't';
5 @INC = "../lib" if -d "../lib";
6 eval { require Config; import Config; };
7
8 my $GR = "/etc/group";
9
0ee42efb 10 if (($^O eq 'next' and not open(GR, "nidump group .|"))
11 or (defined $Config{'i_grp'} and $Config{'i_grp'} ne 'define')
12 or not -f $GR or not open(GR, $GR)
10899c3d 13 ) {
c5987ebb 14 print "1..0\n";
15 exit 0;
16 }
17}
18
19print "1..1\n";
20
21# Go through at most this many groups.
22my $max = 25; #
23
24my $n = 0;
25my $not;
26my $tst = 1;
27
28$not = 0;
29while (<GR>) {
30 last if $n == $max;
31 chomp;
32 @s = split /:/;
33 if (@s == 4) {
34 my ($name_s,$passwd_s,$gid_s,$members_s) = @s;
5e5f18aa 35 $members_s =~ s/\s*,\s*/,/g;
b56ec344 36 $members_s =~ s/\s+$//;
37 $members_s =~ s/^\s+//;
c5987ebb 38 @n = getgrgid($gid_s);
39 # 'nogroup' et al.
40 next unless @n;
41 my ($name,$passwd,$gid,$members) = @n;
42 # Protect against one-to-many and many-to-one mappings.
43 if ($name_s ne $name) {
44 @n = getgrnam($name_s);
45 ($name,$passwd,$gid,$members) = @n;
46 next if $name_s ne $name;
47 }
5e5f18aa 48 $members =~ s/\s+/,/g;
c5987ebb 49 $not = 1, last
50 if $name ne $name_s or
51# Shadow passwords confuse this.
0ee42efb 52# Not that group passwords are used much but still.
c5987ebb 53# $passwd ne $passwd_s or
54 $gid ne $gid_s or
55 $members ne $members_s;
56 }
57 $n++;
58}
59
60print "not " if $not;
61print "ok ", $tst++, "\n";
62
63close(GR);