<!-- Mail as an attachment to: monthly@freebsd.org -->
<project cat='bin'>
  <title>Cleanup on pw(8)</title>

  <contact>
    <person>
      <name>
        <given>Baptiste</given>
        <common>Daroussin</common>
      </name>
      <email>bapt@FreeBSD.org</email>
    </person>
  </contact>

  <links></links>

  <body>
    <p>
         pw(8) is the utility to manipulate (create, delete, modify) users. The tool has remained mostly untouch since its creation. but appeared to need an important lifting.
         
         Lots of cleanup has been done on the code itself:
         - deduplication of code
         - reduction of complexity (splitting the code into small functions)
         - reuse of existing code in base:
           - sbuf(9) for buffered string,
           - stringlist(3) for string arrays
           - gr_utils (from libutil) instead of home made group manipulation
           - strptime(3) to parse time strings
         - add validation on most input options (fixing some serious bugs due to bad usage of atoi(3))
         - tons of regression tests added to limit regression due to all this changes.
         
         During this work a new feature was added: pw -R <rootdir> cmd which allows cross manipulation of users.
    </p>
  </body>

  <help>
    <task>
         more cleanup
    </task>
    <task>
         more regression test
    </task>
    <task>
         ldap support?
    </task>
  </help>
</project>
