]> err.no Git - dpkg/commitdiff
scripts/dpkg-statoverride.pl:
authorWichert Akkerman <wakkerma@debian.org>
Tue, 13 Jun 2000 17:26:51 +0000 (17:26 +0000)
committerWichert Akkerman <wakkerma@debian.org>
Tue, 13 Jun 2000 17:26:51 +0000 (17:26 +0000)
+ fix two typos in the help message
+ Add code to implement --update when adding an override
scripts/dpkg-statoverride.8: new file
debian/dpkg.postinst: create statoverride file if it doesn't exist

ChangeLog
debian/changelog
debian/dpkg.postinst
scripts/dpkg-statoverride.pl

index ff7cfa28d7deb17cf22f61ec6a5ede1644afc328..3ca9c5c99f24b922d74415154e9acab1f764c279 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Tue Jun 13 19:23:37 CEST 2000 Wichert Akkerman <wakkerma@debian.org>
+
+  * scripts/dpkg-statoverride.pl: 
+    + fix two typos in the help message
+    + Add code to implement --update when adding an override
+  * scripts/dpkg-statoverride.8: new file
+  * debian/dpkg.postinst: create statoverride file if it doesn't exist
+
 Mon Jun 12 16:35:26 CEST 2000 Wichert Akkerman <wakkerma@debian.org>
 
   * configure.in: generate doc/sv/Makefile as well
index 5ab40d84e1ac588c9b7cc4674d756992fdd6a3d4..07bc2605c3d6e96808572b3c1254da1e499e15a5 100644 (file)
@@ -11,6 +11,7 @@ dpkg (1.7.0) unstable; urgency=low
     actual maintainer. Update the format-version to 1.7 to reflect this.
   * dpkg-genchanges: allow a space between # and a to-be-closed bugnumber
   * dpkg-deb: reorder files when building a package
+  * dpkg-statoverride: new tool to override ownership and modes for files
 
  -- Wichert Akkerman <wakkerma@debian.org>  UNRELEASED
 
index 3c1ce48ce85004bbeeccebca8db9798b8a3f849d..132bb772e14d2e8f70a2feb75efd30bf76854840 100755 (executable)
@@ -115,11 +115,13 @@ OK.
 fi
 
 cd /var/lib/dpkg
-if ! test -f diversions
-then
+if ! test -f diversions ; then
        touch diversions
 fi
 
+if ! test -f statoverride ; then
+       touch statoverride
+fi
 rm -f /usr/bin/dpkg-deb.dist
 
 if test -d /DEBIAN
index 8e3a6266d8708389b2d1073a2f80154c0f3af292..6d74aaacc600ffb1849d12cb87de30988792038f 100755 (executable)
@@ -10,7 +10,7 @@ $mode= "";
 
 sub UsageVersion {
        print STDERR <<EOF || &quit("failed to write usage: $!");
-"Debian dpkg-statoverride $version.
+Debian dpkg-statoverride $version.
 Copyright (C) 2000 Wichert Akkerman.
 
 This is free software; see the GNU General Public Licence version 2 or later
@@ -26,7 +26,7 @@ Options:
   --update                 immediately update file permissions
   --force                  force an action even if a sanity check fails
   --quiet                  quiet operation, minimal output
-  --help                   print this help screenm and exit
+  --help                   print this help screen and exit
   --admindir <directory>   set the directory with the statoverride file
 EOF
 }
@@ -73,10 +73,23 @@ $dowrite=0;
 
 if ($mode eq "add") {
        @ARGV==4 || &badusage("--add needs four arguments");
+
        $user=$ARGV[0];
-       ($user =~ m/^#[0-9]*/ or (($tmp)=getpwnam($user))) || &badusage("illegal user $user");
+       if ($user =~ m/^#\(0-9+\)$/) {
+           $uid=$1;
+           &badusage("illegal user $user") if ($uid<0);
+       } else {
+           (($name,$pw,$uid)=getpwnam($user)) || &badusage("non-existing user $user");
+       }
+
        $group=$ARGV[1];
-       ($group =~ m/^#[0-9]*/ or (($tmp)=getgrnam($group))) || &badusage("illegal group $group");
+       if ($group =~ m/^#\(0-9+\)$/) {
+           $gid=$1;
+           &badusage("illegal group $group") if ($gid<0);
+       } else {
+           (($name,$pw,$gid)=getgrnam($group)) || &badusage("illegal group $group");
+       }
+
        $mode= $ARGV[2];
        (($mode<0) or ($mode>07777)) && &badusage("illegal mode $mode");
        $file= $ARGV[3];
@@ -95,6 +108,15 @@ if ($mode eq "add") {
        $group{$file}=$group;
        $mode{$file}=$mode;
        $dowrite=1;
+
+       if ($doupate) {
+           if (not -f $file) {
+               print STDERR "waring: --update given but $file does not exist\n";
+           } else {
+               chmod $mode,$file || warn "failed to chmod $file: $!\n";
+               chown $uid,$gid,$file || warn "failed to chown $file: $!\n";
+           }
+       }
 } elsif ($mode eq "remove") {
        @ARGV==1 || &badusage("--remove needs four arguments");
        $file=$ARGV[0];
@@ -106,6 +128,7 @@ if ($mode eq "add") {
        delete $group{$file};
        delete $mode{$file};
        $dowrite=1;
+       print STDERR "warning: --update is useless for --remove\n" if ($doupdate);
 } elsif ($mode eq "list") {
        my (@list,@ilist,$pattern,$file);
        
@@ -164,3 +187,5 @@ sub WriteOverrides {
 
 sub quit { print STDERR "dpkg-statoverride: @_\n"; exit(2); }
 sub badusage { print STDERR "dpkg-statoverride: @_\n\n"; print("You need --help.\n"); exit(2); }
+
+# vi: ts=8 sw=8 ai si cindent