                            kstart To-Do List

General:

 * k4start, k5start, and krenew have almost identical structure.  Redesign
   them to use a standard driver frontend with callbacks for the things
   that differ between the three programs, which will significantly reduce
   code duplication.

k5start:

 * Add support to k5start for obtaining K4 tickets in addition to K5
   tickets, using the DES key in a keytab.

 * Add a flag saying to start a command in a PAG and with tokens and then
   keep running even if the command exits.  This would be useful to spawn
   a long-running daemon inside a PAG and then maintain its tokens, even
   if k5start and the daemon then become detached and have to be stopped
   separately.

 * Relax the requirement to use keytabs when running a command and support
   prompting for the authentication password before starting the command.
   In this case, there's no reason for k5start to keep running once the
   command has been started, so it can simply exit after spawning the
   command.

 * Add a flag similar to krenew -i that continues running despite errors.

krenew:

 * If we encounter an error renewing the ticket cache and the -i flag is
   in use, don't wait the normal period; instead, shorten the wakeup
   period and keep retrying until the error resolves itself.

Documentation:

 * Document how to start Apache with tickets and AFS tokens, either using
   k5start in the init script or the non-PAG method we use at Stanford.
   Probably take some information from the Stanford web page documenting
   using tokens with servers.

Test suite:

 * Test more of krenew's basic functionality, preferrably by parsing klist
   output more thoroughly and seeing if tickets really were renewed.

 * Test that -K and running a command wakes up periodically and renews
   tickets for both krenew and k5start.

 * Add tests for k4start and k5start password prompting, either from
   standard input or from a TTY.

 * Add error tests for invalid combinations of command-line options or
   invalid settings for those options in k4start, k5start, and krenew.

 * Add tests of -o, -g, and -m.  Testing -o and -g will require using
   fakeroot.
