2008-08-27 Nicolas François <nicolas.francois@centraliens.net>
- * 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.
+ * 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@centraliens.net>
static void check_perms (void)
{
- if (list) {
- return;
- }
-
#ifdef USE_PAM
pam_handle_t *pamh = NULL;
int retval = PAM_SUCCESS;
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;
}
}
- check_perms ();
+ if (!list) {
+ check_perms ();
- open_files ();
+ 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 ());
purge_members (grp);
}
- close_files ();
+ 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 */
+ }
exit (EXIT_SUCCESS);
}