* NEWS, lib/getdef.c, man/login.defs.5.xml: New login.defs

variable: MAX_MEMBERS_PER_GROUP. Used for the split groups support.
* lib/commonio.c, lib/commonio.h: Add an open_hook and close_hook
  operation. They are called after the database is actually opened
  and parse, or before it is closed.
* lib/groupio.c: Add an open_hook to merge split groups, and an
  close group to split groups if MAX_MEMBERS_PER_GROUP is set.
  This fixes gpasswd and chgpasswd when split groups are used.
* lib/sgroupio.c, lib/shadowio.c, lib/pwio.c: No open or close
  hooks for these databases. (unsure about what should be the gshadow
  behavior for split groups)
This commit is contained in:
nekral-guest
2007-11-23 00:07:59 +00:00
parent a0488ccac2
commit e15fbb905c
10 changed files with 259 additions and 4 deletions

View File

@@ -520,6 +520,9 @@ int commonio_open (struct commonio_db *db, int mode)
if (ferror (db->fp))
goto cleanup_errno;
if (db->ops->open_hook && !db->ops->open_hook ())
goto cleanup_errno;
db->isopen = 1;
return 1;
@@ -669,6 +672,9 @@ int commonio_close (struct commonio_db *db)
goto success;
}
if (db->ops->close_hook && !db->ops->close_hook ())
goto fail;
memzero (&sb, sizeof sb);
if (db->fp) {
if (fstat (fileno (db->fp), &sb)) {