3 # If no parameters are given, and no debian/suid files exists, scan for
4 # suid/sgid files and suidregister them.
6 # If there are parameters, or there is a debian/suid, register the files
9 BEGIN { push @INC, "debian", "/usr/share/debhelper" }
13 foreach $PACKAGE (@{$dh{DOPACKAGES}}) {
14 $TMP=tmpdir($PACKAGE);
15 $suid=pkgfile($PACKAGE,"suid");
19 @files=filearray($suid);
22 if (($PACKAGE eq $dh{FIRSTPACKAGE} || $dh{PARAMS_ALL}) && @ARGV) {
26 if (! @files && ! $suid) {
27 # No files specified (and no empty debian/suid file), so
28 # guess what files to process.
29 @files=split(/\n/,`find $TMP -type f -perm +6000`);
31 # We will strip the debian working directory off of the
36 # We will strip leading /'s, so the user can feed this
37 # program either absolute filenames, or relative filenames,
38 # and it will do the right thing either way.
42 foreach $file (@files) {
43 # Strip leading $tostrip from $file.
46 if (! -e "$TMP/$file") {
47 error("\"$TMP/$file\" does not exist.");
50 # Create the sed string that will be used to
51 # fill in the blanks in the autoscript files.
52 # Fill with the owner, group, and perms of the file.
53 (undef,undef,$mode,undef,$uid,$gid,undef) = stat("$TMP/$file");
54 # Now come up with the user and group names for the uid and gid.
56 if (! defined $user) {
57 warning("$file has odd uid $uid, not in /etc/passwd");
60 $group=getgrgid($gid);
61 if (! defined $group) {
62 warning("$file has odd gid $gid not in /etc/group");
65 # Note that I have to print mode in ocal, stripping file type.
66 $sedstr=sprintf("s:#FILE#:$file:;s/#PACKAGE#/$PACKAGE/;s/#OWNER#/$user/;s/#GROUP#/$group/;s/#PERMS#/%#o/",
69 autoscript($PACKAGE,"postinst","postinst-suid",$sedstr);
70 autoscript($PACKAGE,"postrm","postrm-suid","$sedstr");
72 if ( -e "$TMP/$file") {
73 doit("chmod","a-s","$TMP/$file");