File: overrides

package info (click to toggle)
feta 1.4.15
  • links: PTS
  • area: main
  • in suites: etch-m68k
  • size: 444 kB
  • ctags: 85
  • sloc: perl: 1,200; sh: 192; makefile: 55
file content (50 lines) | stat: -rwxr-xr-x 1,634 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/usr/bin/perl

use Getopt::Std;
use strict;

my %opts; getopts('tyqV', \%opts);

if (!$opts{'q'}) { open(QUIET, ">&STDOUT"); }
else { open(QUIET, ">>/dev/null"); }

print "\nA)dd, D)elete, or V)iew overrides, or Q)uit? [advq] ";
while (chomp(my $choice = <STDIN>)) {
 if ($choice =~ /^\s*v/i) {
  my @overrides = `dpkg-statoverride --list`;
  print QUIET "\nProgram\t\t\t\t\tUser\tGroup\tMode\n";
  if (!@overrides) { print "No file permissions have been overridden.\n"; }
  foreach (@overrides) {
   my @data = split / /;
   chomp (my $program = pop @data);
   print $program;
   for (my $i = 40 - length $program; $i > 0; $i -= 8) { print "\t"; }
   print join ("\t", @data);
   print "\n";
  }
  print "\n";
 } elsif ($choice =~ /^\s*d/i) {
  print "Remove which override? ";
  chomp (my $o = <STDIN>);
  if ($o) { system('feta', feta_opts(), 'remove-overrides', $o); }
  else { print STDERR "W: Not removing any override.\n"; }
 } elsif ($choice =~ /^\s*a/i) {
  my @params;
  print "Add an override for: "; $params[3] = <STDIN>;
  print "User: "; $params[0] = <STDIN>;
  print "Group: "; $params[1] = <STDIN>;
  print "Mode: "; $params[2] = <STDIN>;
  chomp @params;
  if (@params == 4) { system('feta', feta_opts(), 'add-override', @params); }
  else { print STDERR "W: One or more fields were left blank; not overriding anything."; }
 } elsif ($choice =~ /^\s*\q/i) { exit 0; }
   else { $choice && print STDERR "Unknown command $choice.\n"; }

 print "\nA)dd, D)elete, V)iew overrides, or Q)uit? [advq] ";
}

sub feta_opts {
 my @opts;
 foreach ('y','t','V','q') { if ($opts{$_}) { push (@opts, "-$_"); } }
 return @opts;
}