TODO                                                            -*- outline -*-
====


Most new TODO items are marked @todo in the source code and listed in
the Doxygen-generated documentation in doc/schroot/html/todo.html


PLANNED
-------

* Add API to run multiple commands to replace auth::run().

* Add extra file permissions checking

Both to run-parts, to ensure that shell scripts are owned by root and
not world writable (as for config files).  And also add the same
permissions check to script-config files.

* Generalise permissions checking

Create a standard function which can use either stat, fstat or lstat
and test for particular permissions.

* SCHROOT_CONF error messages must also mention chroot.d.

* Document that database files on the root filesystem must not be
  directly shared inside the chroot

  - Setup scripts such as 20nssdatabases can blank them out.

* Document all environment variables in schroot-setup(5).


POTENTIAL
---------

* Add tests for

** Auth
** AuthConv
** AuthConvTty
** AuthMessage
** Session
** schroot::Options
** schroot_releaselock::Options

None of these are urgent and/or are difficult to test in an automated
fashion.  expect might be useful for testing the PAM wrappers.

* Add tests for dchroot and dchroot-dsa classes.

* Line reporting while parsing config files misses file name.

  log_warning() is used, because we don't throw an exception.  The
  code has no knowledge of the file name, so can't report it.
  Outright errors throw, and the handler adds the needed context.

* Unify fork/exec code into a spawn function.

* Pass configured sysconfdir, pkglibexecdir prefix exec_prefix etc. to scripts.

* Tests for chroots:

** -source chroots

* logging should allow customisation of log level

  See end of Debian Bug #279408.

** log functions should have a severity (to complement existing I/W/E types)

  Similar to debug level, but for normal messages
  e.g. quiet/normal/verbose/extra verbose.

* Testcase for chroot-loopback

* Add a read-only mount option for union underlay (both for
  devices and bind mounts).

Union: Don't allow overlay/underlay to be user-specified?  Or only
allow underlay to be specified (but it's already specified in the
chroot definition, so don't allow?).
Note: Currently user settings are automatically overridden.

Add directories under /var to man pages

Add checks for unsupported features in setup scripts.

Define operator &= and |= for enum types defining | and & operators.

Header include order: chroot-facet depends upon sbuild-chroot being
included first.  Try to break this dependency.

block-device used to allow sessions to work without writing out
a session file; this will break across upgrades to the new
version (since orphan mounts will not be accessible).

--end-session --force should forcibly end "broken" sessions by
manually umounting and purging mount and session directories and
metadata.

Chroot validation does not distinguish between chroots and sessions.
Also, sbuild::session uses find_alias to find chroots, but it should
specifically look for either chroots or sessions (and potentially
also source chroots).  Teach sbuild::chroot_config to treat all these
separately.  Aliases are only useful for SESSION_AUTOMATIC and BEGIN.

