#!/usr/bin/perl -w
#
# Import suid.conf file into dpkg-statoverride database.
# Remove the file if the conversion is successful.
#
use strict;
my $file=shift || die "Usage: $0 suid.conf";

my $keepfile=0;
my @out;

open (IN, "<$file") or die "read $file: $!";
while (<IN>) {
	if (m/^\w*#/) {
		push @out, $_;
		next;
	}
	
	chomp;
	my ($sm_pkg,$sm_file,$sm_user,$sm_group, $sm_mode)=split;
	$sm_user="#$sm_user" if ($sm_user =~ m/^\d*$/);
	$sm_group="#$sm_group" if ($sm_group =~ m/^\d*$/);

	if ($sm_pkg eq 'user' or $sm_pkg eq 'local') {
		if (system('dpkg-statoverride', '--add',
		    $sm_user, $sm_group, $sm_mode, $sm_file) != 0) {
		    	# Don't remove from file; there is a conflict.
			push @out, $_."\n";
			$keepfile=1;
		}
	}
}

if ($keepfile && @out) {
	open (OUT, ">$file") or die "write $file: $!";
	foreach (@out) {
		print OUT $_;
	}
	close OUT;
	print STDERR "Error converting some entries in $file; those\n";
	print STDERR "entries remain in $file. Please deal with this by hand\n";
}
else {
	unlink $file or die "unlink $file: $!";
}
