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

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


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

Modified:
   upstream/trunk/ChangeLog
   upstream/trunk/src/groupmems.c
Log:
	* src/groupmems.c: Added functions add_user(), remove_user(), and
	purge_members() to ease the support of gshadow.

Modified: upstream/trunk/ChangeLog
===================================================================
--- upstream/trunk/ChangeLog	2008-08-30 18:34:04 UTC (rev 2305)
+++ upstream/trunk/ChangeLog	2008-08-30 18:34:24 UTC (rev 2306)
@@ -1,5 +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.
+
+2008-08-27  Nicolas François  <nicolas.francois at centraliens.net>
+
 	* src/expiry.c: Use Basename for Prog.
 	* src/expiry.c: Added missing OPENLOG.
 

Modified: upstream/trunk/src/groupmems.c
===================================================================
--- upstream/trunk/src/groupmems.c	2008-08-30 18:34:04 UTC (rev 2305)
+++ upstream/trunk/src/groupmems.c	2008-08-30 18:34:24 UTC (rev 2306)
@@ -71,6 +71,11 @@
 static bool gr_locked = false;
 
 static char *whoami (void);
+static void add_user (const char *user,
+                      struct group *grp);
+static void remove_user (const char *user, 
+                         struct group *grp);
+static void purge_members (struct group *grp);
 static void display_members (char **members);
 static void usage (void);
 static void process_flags (int argc, char **argv);
@@ -94,6 +99,69 @@
 	}
 }
 
+/*
+ * add_user - Add an user to the specified group
+ */
+static void add_user (const char *user,
+                      struct group *grp)
+{
+	/* Make sure the user is not already part of the group */
+	if (is_on_list (grp->gr_mem, user)) {
+		fprintf (stderr,
+		         _("%s: user '%s' is already a member of '%s'\n"),
+		         Prog, user, grp->gr_name);
+		fail_exit (EXIT_MEMBER_EXISTS);
+	}
+
+	/* Add the user to the /etc/group group */
+	grp->gr_mem = add_list (grp->gr_mem, user);
+	if (gr_update (grp) == 0) {
+		fprintf (stderr,
+		         _("%s: failed to prepare the new %s entry '%s'\n"),
+		         Prog, gr_dbname (), grp->gr_name);
+		fail_exit (13);
+	}
+}
+
+/*
+ * remove_user - Remove an user from a given group
+ */
+static void remove_user (const char *user, 
+                         struct group *grp)
+{
+	/* Check if the user is a member of the specified group */
+	if (!is_on_list (grp->gr_mem, user)) {
+		fprintf (stderr,
+		         _("%s: user '%s' is not a member of '%s'\n"),
+		         Prog, user, grp->gr_name);
+		fail_exit (EXIT_NOT_MEMBER);
+	}
+
+	/* Remove the user from the /etc/group group */
+	grp->gr_mem = del_list (grp->gr_mem, user);
+	if (gr_update (grp) == 0) {
+		fprintf (stderr,
+		         _("%s: failed to prepare the new %s entry '%s'\n"),
+		         Prog, gr_dbname (), grp->gr_name);
+		fail_exit (13);
+	}
+}
+
+/*
+ * purge_members - Rmeove every members of the specified group
+ */
+static void purge_members (struct group *grp)
+{
+	/* Remove all the members of the /etc/group group */
+	grp->gr_mem[0] = NULL;
+	if (gr_update (grp) == 0) {
+		fprintf (stderr,
+		         _("%s: failed to prepare the new %s entry '%s'\n"),
+		         Prog, gr_dbname (), grp->gr_name);
+		fail_exit (13);
+	}
+}
+
 static void display_members (char **members)
 {
 	int i;
@@ -277,41 +345,11 @@
 	if (list) {
 		display_members (grp->gr_mem);
 	} else if (NULL != adduser) {
-		if (is_on_list (grp->gr_mem, adduser)) {
-			fprintf (stderr,
-			         _("%s: user '%s' is already a member of '%s'\n"),
-			         Prog, adduser, grp->gr_name);
-			fail_exit (EXIT_MEMBER_EXISTS);
-		}
-		grp->gr_mem = add_list (grp->gr_mem, adduser);
-		if (gr_update (grp) == 0) {
-			fprintf (stderr,
-			         _("%s: failed to prepare the new %s entry '%s'\n"),
-			         Prog, gr_dbname (), grp->gr_name);
-			fail_exit (13);
-		}
+		add_user (adduser, grp);
 	} else if (NULL != deluser) {
-		if (!is_on_list (grp->gr_mem, deluser)) {
-			fprintf (stderr,
-			         _("%s: user '%s' is not a member of '%s'\n"),
-			         Prog, deluser, grp->gr_name);
-			fail_exit (EXIT_NOT_MEMBER);
-		}
-		grp->gr_mem = del_list (grp->gr_mem, deluser);
-		if (gr_update (grp) == 0) {
-			fprintf (stderr,
-			         _("%s: failed to prepare the new %s entry '%s'\n"),
-			         Prog, gr_dbname (), grp->gr_name);
-			fail_exit (13);
-		}
+		remove_user (deluser, grp);
 	} else if (purge) {
-		grp->gr_mem[0] = NULL;
-		if (gr_update (grp) == 0) {
-			fprintf (stderr,
-			         _("%s: failed to prepare the new %s entry '%s'\n"),
-			         Prog, gr_dbname (), grp->gr_name);
-			fail_exit (13);
-		}
+		purge_members (grp);
 	}
 
 	if (gr_close () == 0) {




More information about the Pkg-shadow-commits mailing list