chiark / gitweb /
reject some of the uxsup changes
authorian <ian>
Sun, 15 Jun 2003 17:57:17 +0000 (17:57 +0000)
committerian <ian>
Sun, 15 Jun 2003 17:57:17 +0000 (17:57 +0000)
groupmanage/groupmanage

index 9d94019..90957fd 100755 (executable)
@@ -1,10 +1,10 @@
 #!/usr/bin/perl
 #
-# Copyright (C)1995-9 Ian Jackson <ijackson@chiark.greenend.org.uk>
+# Copyright (C) 1995-9, 2003 Ian Jackson <ijackson@chiark.greenend.org.uk>
 # Copyright (C) 1999, 2003
-#     Chancellor Masters and Scholars of the University of Cambridge
+#   Chancellor Masters and Scholars of the University of Cambridge
 #
-# Hacked by Ben Harris <bjh21@cam.ac.uk> in 1999 and 2003 for Unix
+# Improved by Ben Harris <bjh21@cam.ac.uk> in 1999 and 2003 for Unix
 # Support's own nefarious purposes.
 #
 # This is free software; you can redistribute it and/or modify it
@@ -61,7 +61,6 @@ $groupname =~ m/^\w[-0-9A-Za-z]*$/ ||
 @ARGV || push(@ARGV,'--info');
 
 $callinguser= exists $ENV{'USERV_UID'} ? $ENV{'USERV_UID'} : $<;
-$callingname = exists $ENV{'USERV_USER'} ? $ENV{'USERV_USER'} : getpwuid($<);
 
 %opt= ('user-create','0',
        'user-create-minunameu','5',
@@ -148,8 +147,6 @@ END
 
 if ($ARGV[0] eq '--create') {
     $opt{'user-create'} || !$callinguser ||
-        ($opt{'admin-group'} &&
-        (getgrnam($opt{'admin-group'}))[3] =~ /(^| )$callingname( |$)/) ||
         &quit("group creation by users disabled by administrator");
     length($groupname) <= 8 || &quit("group names must be 8 chars or fewer");
     $!=0; (@pw= getpwuid($callinguser))
@@ -194,8 +191,6 @@ if ($create) {
 }
 
 &weare($owner) || grep(&weare($_),@managers) || !$callinguser ||
-    ($opt{'admin-group'} &&
-     (getgrnam($opt{'admin-group'}))[3] =~ /(^| )$callingname( |$)/) ||
     &quit("you may not manage $groupname");
 
 $action= 'none';
@@ -268,7 +263,7 @@ $grouplist[$grouplistix]=
 &save($opt{'group-file'},@groupfile);
 &save($opt{'grouplist-file'},@grouplist);
 if ($opt{'finish-command'}) {
-    !system($opt{'finish-command'}) || &quit("finish-command: $!");
+    !system($opt{'finish-command'}) || &quit("finish-command: $?");
 }
 unlink($opt{'gtmp-file'}) || &quit("unlock group (remove gtmp): $!");
 &p_out;
@@ -340,20 +335,7 @@ sub quit {
 }
 
 sub lock {
-    # NFS-safe Locking per Linux open(2)
-    my($hostname) = `hostname`;
-    chomp($hostname);
-    my($hitching_post) = "$opt{'gtmp-file'}.$hostname.$$";
-    open(LOCK, ">$hitching_post") || die "$hitching_post: $!";
-    close(LOCK);
-    link($hitching_post, $opt{'gtmp-file'});
-    if ((stat($hitching_post))[3] != 2) {
-       close(OUT);
-       unlink($hitching_post);
-       &quit("group file locked -- giving up...");
-    }
-    unlink($hitching_post);
-#    link($opt{'group-file'},$opt{'gtmp-file'}) || &quit("create gtmp: $!");
+    link($opt{'group-file'},$opt{'gtmp-file'}) || &quit("create gtmp: $!");
     $locked++;
 }