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 51 52 53 54 55 56 57 58 59 60 61 62
|
#!/usr/bin/perl
$dpkglibdir= ".";
$version= '1.3.0'; # This line modified by Makefile
use POSIX;
use POSIX qw(:errno_h :signal_h);
$fileslistfile= 'debian/files';
push(@INC,$dpkglibdir);
require 'controllib.pl';
sub usageversion {
print STDERR
"Debian dpkg-distaddfile $version. Copyright (C) 1996
Ian Jackson. This is free software; see the GNU General Public Licence
version 2 or later for copying conditions. There is NO warranty.
Usage:
dpkg-distaddfile <filename> <section> <priority>
Options: -f<fileslistfile> write files here instead of debian/files
-h print this message
";
}
while (@ARGV && $ARGV[0] =~ m/^-/) {
$_=shift(@ARGV);
if (m/^-f/) {
$fileslistfile= $';
} elsif (m/^-h$/) {
&usageversion; exit(0);
} elsif (m/^--$/) {
last;
} else {
&usageerr("unknown option $_");
}
}
@ARGV==3 || &usageerr("need exactly a filename, section and priority");
($file,$section,$priority)= @ARGV;
($file =~ m/\s/ || $section =~ m/\s/ || $priority =~ m/\s/) &&
&error("filename, section and priority may contain no whitespace");
$fileslistfile="./$fileslistfile" if $fileslistfile =~ m/^\s/;
open(Y,"> $fileslistfile.new") || &syserr("open new files list file");
chown(@fowner, "$fileslistfile.new")
|| &syserr("chown new files list file");
if (open(X,"< $fileslistfile")) {
while (<X>) {
s/\n$//;
next if m/^(\S+) / && $1 eq $file;
print(Y "$_\n") || &syserr("copy old entry to new files list file");
}
} elsif ($! != ENOENT) {
&syserr("read old files list file");
}
print(Y "$file $section $priority\n")
|| &syserr("write new entry to new files list file");
close(Y) || &syserr("close new files list file");
rename("$fileslistfile.new",$fileslistfile) || &syserr("install new files list file");
|