Cleanup on 'pw(8)'
'pw(8)' is the utility to create, delete, and modify users. This tool
has remained mostly untouched since its creation, but needed updating.
Lots of cleanup has been done:
- Deduplication of code
- Reduction of complexity by splitting into smaller functions
- Reuse of existing code in base:
- 'sbuf(9)' for buffered string
- 'stringlist(3)' for string arrays
- 'gr_utils' (from libutil) instead of homemade group manipulation
- 'strptime(3)' to parse time strings
- Added validation on most input options, fixing some serious bugs due
to bad usage of 'atoi(3)'
- many regression tests added to test for regressions due to all of
A new feature was added: 'pw -R rootdir /cmd/' which allows cross
manipulation of users.
More regression tests.