#!/usr/bin/perl $testuser= 'testac'; $testgroup= 'testac'; $testuid= 1000; $testgid= 1000; @testxgids= qw(1000); $numgid= 50008; $othergroup= 'daemon'; $othergid= 1; sub parseid ($) { my ($id) = @_; my $orgid= $id; my $out= ''; my $part; chomp($id); $id =~ s/^uid=// or return $id =~ m/\n/ ? "ERROR: $`" : "ERROR: $id"; $id =~ s/^(\d+)// or return $orgid; $out= $1; $id =~ s/^\([^\)]+\)//; $id =~ s/^\s+// or return $orgid; $id =~ s/^gid=(\d+)// or return $orgid; $out.= " $1"; $id =~ s/^\([^\)]+\)//; $id =~ s/^\s+// or return $orgid; $id =~ s/^groups=// or return $orgid; for $part (split(/,/,$id)) { $part =~ s/^(\d+)// or return $orgid; $out.= " $1"; $part =~ s/^\([^\)]+\)//; $part eq '' or return $orgid; } return $out; } $org= `id`; $org =~ m/^uid=\d+\(([^\)]+)\) gid=\d+\(([^\)]+)\) / or die "$org ?"; $orguser= $1; $orggroup= $2; $org= parseid($org); $org =~ m/^\d+ \d+ / or die $org; ($orguid,$orggid,@orgxgids)= split(/ /,$org); $tests= <&1`; $newout= parseid($out); print("OK $tests[$i] ($tests[$i+2])\n"), next if $newout eq $tests[$i+1]; die "$newout != $tests[$i+1] ($tests[$i]) $i"; }