* 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:
@@ -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)) {
|
||||
|
Reference in New Issue
Block a user