[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