savannah-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Savannah-cvs] administration/infra/savane/bin sv_groups


From: Elfyn McBratney
Subject: [Savannah-cvs] administration/infra/savane/bin sv_groups
Date: Tue, 14 Sep 2004 15:40:15 -0400

CVSROOT:        /cvsroot/administration
Module name:    administration
Branch:         
Changes by:     Elfyn McBratney <address@hidden>        04/09/14 19:35:04

Modified files:
        infra/savane/bin: sv_groups 

Log message:
        Add error handling for open/close and add flock advisory locking.

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/administration/administration/infra/savane/bin/sv_groups.diff?tr1=1.2&tr2=1.3&r1=text&r2=text

Patches:
Index: administration/infra/savane/bin/sv_groups
diff -u administration/infra/savane/bin/sv_groups:1.2 
administration/infra/savane/bin/sv_groups:1.3
--- administration/infra/savane/bin/sv_groups:1.2       Tue Sep 14 19:21:03 2004
+++ administration/infra/savane/bin/sv_groups   Tue Sep 14 19:35:04 2004
@@ -2,7 +2,7 @@
 # This file is part of the Savane project
 # <http://gna.org/projects/savane/>
 #
-# $Id: sv_groups,v 1.2 2004/09/14 19:21:03 beu Exp $
+# $Id: sv_groups,v 1.3 2004/09/14 19:35:04 beu Exp $
 #
 #  Copyright 2001 (c) Loic Dachary <address@hidden> (sv_cvs.pl)
 #            2003 (c) Mathieu Roy <address@hidden> 
@@ -676,7 +676,10 @@
                        "$dir_homepage $dir_cvs $dir_download\n" if $debug;
                    
                    my @download_keys;
-                   open (EMAIL, ">/home/gatekpr/projects/$name/email");
+                   open(EMAIL, ">/home/gatekpr/projects/$name/email")
+                       or die "failed to open 
/home/gatekpr/projects/$name/email";
+                   flock(EMAIL, LOCK_EX) or die "flock failed";
+
                    for my $user (keys (%group_savannah)) {
                        if ($group_savannah{$user} eq 'A') {
                            # user is group admin and gets to upload files
@@ -691,7 +694,9 @@
                            }
                        }
                    }
-                   close (EMAIL);
+
+                   flock(EMAIL, LOCK_UN);
+                   close(EMAIL) or die "failed to close 
/home/gatekpr/projects/$name/email";
                    
                    unless ($debug) {
                        GroupCreateDownloadKeyring($name, address@hidden);
@@ -700,9 +705,15 @@
                    }
                    
                    unless ($debug) {
-                       open (PW, ">/savannah/cvsroot/$name/etc/passwd");
-                       open (GRP, ">/savannah/cvsroot/$name/etc/group");
+                       open(PW, ">/savannah/cvsroot/$name/etc/passwd")
+                           or die "failed to open 
/savannah/cvsroot/$name/etc/passwd";
+                       open(GRP, ">/savannah/cvsroot/$name/etc/group")
+                           or die "failed to open 
/savannah/cvsroot/$name/etc/group";
+                       flock(PW, LOCK_EX) or die "flock failed";
+                       flock(GRP, LOCK_EX) or die "flock failed";
+
                        print PW 
"nobody:x:65534:65534:nobody:/home:/bin/false\n";
+
                        my $users;
                        my $webusers;
                        foreach my $user_id (keys (%group_savannah)) {
@@ -716,6 +727,7 @@
                            $webusers .= ',' if $webusers;
                            $webusers .= $user;
                        }
+
                        if ($name ne "www") {
                            foreach my $user_id (@www_members) {
                                my ($user) = GetDBSettings('user', 
"user_id=$user_id", 'user_name');
@@ -733,8 +745,11 @@
                        print GRP "$group:x:$grent->[2]:$users\n";
                        $grent = $etc_group_bygroup{"web$group"};
                        print GRP "web$group:x:$grent->[2]:$webusers\n";
-                       close (PW);
-                       close (GRP);
+
+                       flock(PW, LOCK_UN);
+                       flock(GRP, LOCK_UN);
+                       close(PW);
+                       close(GRP);
                    }
                }
            }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]