[Pkg-shadow-commits] r2307 - in upstream/trunk: . src

nekral-guest at alioth.debian.org nekral-guest at alioth.debian.org
Sat Aug 30 18:34:44 UTC 2008


Author: nekral-guest
Date: 2008-08-30 18:34:43 +0000 (Sat, 30 Aug 2008)
New Revision: 2307

Modified:
   upstream/trunk/ChangeLog
   upstream/trunk/src/groupmems.c
Log:
	* src/groupmems.c: Added function open_?\194?\176files and close_files to
	ease the support of gshadow.
	* src/groupmems.c: Always call check_perms(). This function now
	succeed when the requested action is to list the members.

Modified: upstream/trunk/ChangeLog
===================================================================
--- upstream/trunk/ChangeLog	2008-08-30 18:34:24 UTC (rev 2306)
+++ upstream/trunk/ChangeLog	2008-08-30 18:34:43 UTC (rev 2307)
@@ -1,7 +1,10 @@
 2008-08-27  Nicolas François  <nicolas.francois at centraliens.net>
 
-	* src/groupmems.c: Added functions add_user(), remove_user(), and
-	purge_members() to ease the support of gshadow.
+	* src/groupmems.c: Added functions add_user(), remove_user(),
+	purge_members(), open_files, and close_files to ease the support
+	of gshadow.
+	* src/groupmems.c: Always call check_perms(). This function now
+	succeed when the requested action is to list the members.
 
 2008-08-27  Nicolas François  <nicolas.francois at centraliens.net>
 

Modified: upstream/trunk/src/groupmems.c
===================================================================
--- upstream/trunk/src/groupmems.c	2008-08-30 18:34:24 UTC (rev 2306)
+++ upstream/trunk/src/groupmems.c	2008-08-30 18:34:43 UTC (rev 2307)
@@ -242,6 +242,10 @@
 
 static void check_perms (void)
 {
+	if (list) {
+		return;
+	}
+
 #ifdef USE_PAM
 	pam_handle_t *pamh = NULL;
 	int retval = PAM_SUCCESS;
@@ -285,6 +289,41 @@
 	exit (code);
 }
 
+static void open_files (void)
+{
+	if (!list) {
+		if (gr_lock () == 0) {
+			fprintf (stderr,
+			         _("%s: cannot lock %s; try again later.\n"),
+			         Prog, gr_dbname ());
+			fail_exit (EXIT_GROUP_FILE);
+		}
+		gr_locked = true;
+	}
+
+	if (gr_open (list ? O_RDONLY : O_RDWR) == 0) {
+		fprintf (stderr, _("%s: cannot open %s\n"), Prog, gr_dbname ());
+		fail_exit (EXIT_GROUP_FILE);
+	}
+}
+
+static void close_files (void)
+{
+	if (gr_close () == 0) {
+		fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, gr_dbname ());
+		SYSLOG ((LOG_ERR, "failure while writing changes to %s", gr_dbname ()));
+		fail_exit (EXIT_GROUP_FILE);
+	}
+	if (gr_locked) {
+		if (gr_unlock () == 0) {
+			fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, gr_dbname ());
+			SYSLOG ((LOG_ERR, "failed to unlock %s", gr_dbname ()));
+			/* continue */
+		}
+		gr_locked = false;
+	}
+}
+
 int main (int argc, char **argv) 
 {
 	char *name;
@@ -317,17 +356,9 @@
 		}
 	}
 
-	if (!list) {
-		check_perms ();
+	check_perms ();
 
-		if (gr_lock () == 0) {
-			fprintf (stderr,
-			         _("%s: cannot lock %s; try again later.\n"),
-			         Prog, gr_dbname ());
-			fail_exit (EXIT_GROUP_FILE);
-		}
-		gr_locked = true;
-	}
+	open_files ();
 
 	if (gr_open (list ? O_RDONLY : O_RDWR) == 0) {
 		fprintf (stderr, _("%s: cannot open %s\n"), Prog, gr_dbname ());
@@ -352,16 +383,7 @@
 		purge_members (grp);
 	}
 
-	if (gr_close () == 0) {
-		fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, gr_dbname ());
-		SYSLOG ((LOG_ERR, "failure while writing %s", gr_dbname ()));
-		fail_exit (EXIT_GROUP_FILE);
-	}
-	if (gr_unlock () == 0) {
-		fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, gr_dbname ());
-		SYSLOG ((LOG_ERR, "failed to unlock %s", gr_dbname ()));
-		/* continue */
-	}
+	close_files ();
 
 	exit (EXIT_SUCCESS);
 }




More information about the Pkg-shadow-commits mailing list