0.250 2017-11-06 (PERLANCAR) - No functional changes. - Exclude Windows from testing to avoid hanging the testing client [RT#123507]. 0.24 2017-07-10 (PERLANCAR) - No functional changes. - Remove usage of Log::Any. 0.23 2016-10-07 (PERLANCAR) - [Experimental] Increase safety/compatibility with other programs that might write to the passwd files by locking all the passwd/shadow/group/gshadow files themselves instead of just passwd.lock file (see [GH#1]). - [Bugfix] Regression bug, when we switched to File::Flock::Retry, locking was accidentally always done for all actions including read-only ones [GH#1]. 0.22 2015-10-22 (PERLANCAR) - No functional changes. - Replace File::Flock with the more lightweight File::Flock::Retry. 0.21 2015-09-06 (PERLANCAR) - No functional changes. - [dist] Move spec prereqs from RuntimeRequires to DevelopRecommends to reduce deps but still allow indicating spec requirement. 0.20 2015-07-01 (PERLANCAR) - No functional changes. - Fix Rinci metadata (add missing args 'schema's). 0.19 2015-07-01 (PERLANCAR) - No functional changes. - Update Rinci metadata (args_groups -> args_rels). 0.18 2015-03-13 (PERLANCAR) - No functional changes. - [Build] [Bugfix] Rebuild with DZP:Rinci::AddPrereqs 0.02 which no longer add prereqs to Perinci::Sub::ArgEntity::* unless if required by CLI scripts. The addition of Perinci::Sub::ArgEntity::unix_* causes a circular dependency [RT#102700]. 0.17 2015-03-10 (PERLANCAR) - No functional changes. - Change result metadata 'result_format_options' -> 'format_options'. 0.16 2015-03-07 (PERLANCAR) - No functional changes. - Tweak/fix Rinci metadata: fix a pos, add some x.schema.{entity,element_entity} for completion. 0.15 2015-03-06 (PERLANCAR) - No functional changes. - Tweak Rinci metadata: add some argument positions, schemas, etc. 0.14 2015-03-06 (PERLANCAR) - No functional changes. - Give hints of table column order when returning detailed list of users/groups. 0.13 2015-03-06 (PERLANCAR) - No functional changes. - Some minor tweaks and POD fixes. 0.12 2014-05-17 (SHARYANTO) - No functional changes. - Replace File::Slurp with File::Slurp::Tiny. 0.11 2014-03-21 (SHARYANTO) - No functional changes. - Add 'use experimental smartmatch' for perl 5.18. 0.10 2012-09-06 (SHARYANTO) - Use Crypt::Password::Util's crypt() to create encrypted password in a more portable way. 0.09 2012-09-06 (SHARYANTO) - No functional changes. - In test script, use Crypt::Password::Util's looks_like_crypt() to check encrypted password instead of /^\$6\$/ (implies SSHA512) because different OS'es use different crypt types. 0.08 2012-09-05 (SHARYANTO) - Add function: set_user_groups(). 0.07 2012-09-05 (SHARYANTO) - Add function: add_delete_user_groups(). 0.06 2012-09-01 (SHARYANTO) [ENHANCEMENTS] - Allow adding user with non-unique UID. - Allow adding group with non-unique GID. 0.05 2012-08-31 (SHARYANTO) [ENHANCEMENTS] - Add function: list_users_and_groups(). - Add some overview information about the module. 0.04 2012-08-31 (SHARYANTO) [ENHANCEMENTS] - add_user(): Add option 'group' to allow setting primary group that is not the same as group with the same name as user (e.g. add_user(user=>'nobody', group=>'nogroup')). The group (in this case, 'nogroup') must already exist. 0.03 2012-08-31 (SHARYANTO) - Convert several package-lexical variables into package variables (our) to make it accessible from other packages. - Update examples in Synopsis. 0.02 2012-08-31 (SHARYANTO) [ENHANCEMENTS] - Implement the rest of the functions not yet implemented in the previous release: modify_user(), modify_group(), delete_user(), delete_group(), set_user_password(), add_user_to_group(), delete_user_from_group(). - Add functions: is_member(), user_exists(), group_exists(), get_user_groups(). 0.01 2012-08-30 (SHARYANTO) - First release. I created a new module instead of using Passwd::Unix::Alt mainly because of these reasons: 1) got tired of having to input passwd, shadow, group, gshadow separately; with Unix::Passwd::File I just need to specify etc_dir; 2) I couldn't get locking to work, something which I think is important and I'd rather start with a clean codebase to make sure this and other things work; 3) want a cleaner interface, without any global error variable. This release does not include some functions yet: modify_user(), modify_group(), delete_user(), delete_group(), set_user_password(), add_user_to_group(), delete_user_from_group().