]> andersk Git - moira.git/blame - afssync/pt_util.pl
Command line printer manipulation client, and build goo.
[moira.git] / afssync / pt_util.pl
CommitLineData
3a3bd871 1#!/usr/athena/bin/perl
2
3while ($_ = <STDIN>) {
4 if (/^\s/) {
5 $members{$who} = $members{$who} . $_;
6 $mcount{$who}++;
7 next;
8 }
9 ($f,$f,$who,$own) = split(/\s+/, $_);
10 $data{$who} = $_;
11}
12
13# Do system:authuser@cell groups
14for (keys %data) {
15 next unless ($data{$_} =~ /^system:authuser@/);
16 ($name, $attr, $id, $oid, $cid) = split(/\s+/, $data{$_});
17 ($flags, $mcount) = split(/\//, $attr);
18 $mcount += $mcount{$_};
19 print "$name $flags/$mcount $id $oid $cid\n";
20 delete $data{$_};
21}
22
23# Do users
24for (keys %data) {
25 next if ($_ < 0);
26 print $data{$_};
27 delete $data{$_};
28}
29
30# Now do all the lists
31$x = 1;
32while ((@keys = keys %data)+0 && $x) {
33 $x = 0;
34 for $key (keys %data) {
35 ($f,$f,$who,$own) = split(/\s+/, $data{$key});
36 next if ($who!=$own && $data{$own});
37 $x = 1;
38 print $data{$key};
39 print $members{$key} if ($members{$key});
40 delete $data{$key};
41 delete $members{$key} if ($members{$key});
42 }
43}
44if (@keys+0) {
45 print STDERR "Unprocessed:\n";
46 for (keys %data) {
47 $f = split(/\s+/, $data{$_});
48 print STDERR "\t$f ($_)\n";
49 }
50}
This page took 0.083981 seconds and 5 git commands to generate.