| #!/usr/bin/perl -w |
| |
| use strict; |
| |
| die "QUOTA_USER environment variable not set\n" unless defined $ENV{'QUOTA_USER'}; |
| die "QUOTA_FILESYS environment variable not set\n" unless defined $ENV{'QUOTA_FILESYS'}; |
| die "QUOTA_SBLOCKS environment variable not set\n" unless defined $ENV{'QUOTA_SBLOCKS'}; |
| die "QUOTA_HBLOCKS environment variable not set\n" unless defined $ENV{'QUOTA_HBLOCKS'}; |
| die "QUOTA_SFILES environment variable not set\n" unless defined $ENV{'QUOTA_SFILES'}; |
| die "QUOTA_HFILES environment variable not set\n" unless defined $ENV{'QUOTA_HFILES'}; |
| |
| open FILE, $ARGV[0]; |
| my $qdata = join '', (@_=<FILE>); |
| close FILE; |
| open FILE, ">$ARGV[0]"; |
| print FILE &edit_quota_file($qdata, $ENV{'QUOTA_FILESYS'}, $ENV{'QUOTA_SBLOCKS'}, $ENV{'QUOTA_HBLOCKS'}, $ENV{'QUOTA_SFILES'}, $ENV{'QUOTA_HFILES'}); |
| close FILE; |
| |
| # edit_quota_file(data, filesys, sblocks, hblocks, sfiles, hfiles) |
| sub edit_quota_file { |
| my($rv, $line, @line, $i); |
| @line = split /\n/, $_[0]; |
| for ( $i=0; $i<@line; $i++ ) { |
| if ($line[$i] =~ /^\s+(\S+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)$/ && ($1 eq $_[1] || $_[1] eq '*')) { |
| # new-style line to change |
| $rv .= " $1 $2 $_[2] $_[3] $5 $_[4] $_[5]\n"; |
| } else { |
| $rv .= "$line[$i]\n"; |
| } |
| } |
| return $rv; |
| } |