  <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>

    <body>
<p>'pw(8)' is the utility to create, delete, and modify users.  This tool
has remained mostly untouched since its creation, but needed updating.</p>

<p>Lots of cleanup has been done:</p>

<ul>
<li>Deduplication of code</li>
<li>Reduction of complexity by splitting into smaller functions</li>
<li>Reuse of existing code in base:

<ul>
<li>'sbuf(9)' for buffered string</li>
<li>'stringlist(3)' for string arrays</li>
<li>'gr_utils' (from libutil) instead of homemade group manipulation</li>
<li>'strptime(3)' to parse time strings</li>
</ul></li>
<li>Added validation on most input options, fixing some serious bugs due
to bad usage of 'atoi(3)'</li>
<li>many regression tests added to test for regressions due to all of
these changes</li>
</ul>

<p>A new feature was added: 'pw -R <em>rootdir</em> /cmd/' which allows cross
manipulation of users.</p>
    </body>
    <help>
      <task>
	<p>More cleanup.</p>
      </task>

      <task>
	<p>More regression tests.</p>
      </task>
    </help>
  </project>
