Features:
=========

* Add command for signing modules
   - There is a script to sign modules in kernel tree, but we should be able to
   sign modules by ourselves

* Stop using NOFAIL() and fatal()

* Protect index against OOM

* Implement actions in kmod tool like 'insert', 'remove', 'info', etc

* testsuite:
   - when fake delete_module() succeeds, remove its entry from /sys/module
   - improve coverage (use --enable-coverage to check the current state)

* Stop using system() inside the library and use fork + exec instead

* config: configs that do not need to be matched by fnmatch() could be using a
  vector instead of a list. This way we could search in it by calling
  bsearch().

* config: implement the config handling in shared/ and use it in both depmod
and libkmod

* review API, maybe unify all of these getters:
   - kmod_module_version_get_symbol()
   - kmod_module_version_get_crc()
   - kmod_module_symbol_get_symbol()
   - kmod_module_symbol_get_crc()
   - kmod_module_dependency_symbol_get_symbol()
   - kmod_module_dependency_symbol_get_crc()
   - kmod_module_versions_free_list()
   - kmod_module_symbols_free_list()
   - kmod_module_dependency_symbols_free_list()

* index: drop the "open(), seek(), read()" implementation and use another one
  with mmap(). When lookup() is called and the file is not mmaped, mmap it.
  Another possibility is to drop the mmap implementation relying on VFS to have
  the pages cached. This would simplify the interface exported by libkmod.
  Measure performance before deciding.

* depmod:
   - join functions for text/binary outputs
   - use new O_TMPFILE for tmp file creation

Things to be added/removed in kernel (check what is really needed):
===================================================================

* list of currently loaded modules
	- readdir() in /sys/modules: dir without a 'initstate' file means the
	  module is builtin.

* kill /proc/modules ?
	- Unlikely, given other tools might depend on it
