modutils/*: rewrite by Timo Teras <timo.teras AT iki.fi>
- a lot faster (linear algorithmic complexity, smaller memory foot print)
- a lot smaller (the old code was overly complicated)
- loading of aliases is now module-init-tools compliant
- blacklisting is done correctly (-b option added)
- module argument quoting done right
- depmod now correctly generates modules.symbols and modules.alias

add/remove: 16/21 grow/shrink: 4/6 up/down: 6930/-9316 Total: -2386 bytes
   text    data     bss     dec     hex filename
 806039     592    6680  813311   c68ff busybox_old
 803498     592    6676  810766   c5f0e busybox_unstripped

diff --git a/modutils/Config.in b/modutils/Config.in
index a430fca..e7b839d 100644
--- a/modutils/Config.in
+++ b/modutils/Config.in
@@ -5,6 +5,20 @@
 
 menu "Linux Module Utilities"
 
+config DEFAULT_MODULES_DIR
+	string "Default directory containing modules"
+	default "/lib/modules"
+	help
+	  Directory that contains kernel modules.
+	  Defaults to "/lib/modules"
+
+config DEFAULT_DEPMOD_FILE
+	string "Default name of modules.dep"
+	default "modules.dep"
+	help
+	  Filename that contains kernel modules dependencies.
+	  Defaults to "modules.dep"
+
 config MODPROBE_SMALL
 	bool "Simplified modutils"
 	default n
@@ -54,37 +68,6 @@
 	  Check if the module is already loaded.
 	  N.B. It's racy.
 
-config DEPMOD
-	bool "depmod"
-	default n
-	depends on !MODPROBE_SMALL
-	help
-	  depmod generates modules.dep (FIXME: elaborate)
-
-config FEATURE_DEPMOD_PRUNE_FANCY
-	bool "Fancy dependency pruning"
-	default n
-	depends on DEPMOD
-	help
-	  By default modules.dep contains all dependencies as listed by
-	  the modules.
-	  If you enable this option then we remove implied modules from
-	  the dependencies.
-	  This makes depmod somewhat bigger but generates a smaller
-	  modules.dep file.
-
-	  If unsure, say N.
-
-config FEATURE_DEPMOD_ALIAS
-	bool "Alias support"
-	default n
-	depends on DEPMOD
-	help
-	  By default modules.dep does not contain alias information.
-	  Enable this to emit aliases of the form:
-
-	    alias pcmcia:m*c*f03fn*pfn*pa*pb*pc*pd* parport_cs
-
 config INSMOD
 	bool "insmod"
 	default n
@@ -92,55 +75,6 @@
 	help
 	  insmod is used to load specified modules in the running kernel.
 
-config FEATURE_INSMOD_VERSION_CHECKING
-	bool "Module version checking"
-	default n
-	depends on INSMOD && FEATURE_2_4_MODULES
-	help
-	  Support checking of versions for modules. This is used to
-	  ensure that the kernel and module are made for each other.
-
-config FEATURE_INSMOD_KSYMOOPS_SYMBOLS
-	bool "Add module symbols to kernel symbol table"
-	default n
-	depends on INSMOD && FEATURE_2_4_MODULES
-	help
-	  By adding module symbols to the kernel symbol table, Oops messages
-	  occuring within kernel modules can be properly debugged. By enabling
-	  this feature, module symbols will always be added to the kernel symbol
-	  table for properly debugging support. If you are not interested in
-	  Oops messages from kernel modules, say N.
-
-config FEATURE_INSMOD_LOADINKMEM
-	bool "In kernel memory optimization (uClinux only)"
-	default n
-	depends on INSMOD && FEATURE_2_4_MODULES
-	help
-	  This is a special uClinux only memory optimization that lets insmod
-	  load the specified kernel module directly into kernel space, reducing
-	  memory usage by preventing the need for two copies of the module
-	  being loaded into memory.
-
-config FEATURE_INSMOD_LOAD_MAP
-	bool "Enable load map (-m) option"
-	default n
-	depends on INSMOD && ( FEATURE_2_4_MODULES || FEATURE_2_6_MODULES )
-	help
-	  Enabling this, one would be able to get a load map
-	  output on stdout. This makes kernel module debugging
-	  easier.
-	  If you don't plan to debug kernel modules, you
-	  don't need this option.
-
-config FEATURE_INSMOD_LOAD_MAP_FULL
-	bool "Symbols in load map"
-	default y
-	depends on FEATURE_INSMOD_LOAD_MAP
-	help
-	  Without this option, -m will only output section
-	  load map. With this option, -m will also output
-	  symbols load map.
-
 config RMMOD
 	bool "rmmod"
 	default n
@@ -156,12 +90,13 @@
 	  lsmod is used to display a list of loaded modules.
 
 config FEATURE_LSMOD_PRETTY_2_6_OUTPUT
-	bool "Pretty output for 2.6.x Linux kernels"
+	bool "Pretty output"
 	default n
 	depends on LSMOD
 	help
 	  This option makes output format of lsmod adjusted to
 	  the format of module-init-tools for Linux kernel 2.6.
+	  Increases size somewhat.
 
 config MODPROBE
 	bool "modprobe"
@@ -174,38 +109,11 @@
 	  Note that in the state, modprobe does not understand multiple
 	  module options from the configuration file. See option below.
 
-config FEATURE_MODPROBE_MULTIPLE_OPTIONS
-	bool
-	prompt "Multiple options parsing"
-	default y
-	depends on MODPROBE
-	help
-	  Allow modprobe to understand more than one option to pass to
-	  modules.
-
-	  This is a WIP, while waiting for a common argument parsing
-	  common amongst all BB applets (shell, modprobe, etc...) and
-	  adds around 600 bytes on x86, 700 bytes on ARM. The code is
-	  biggish and uggly, but just works.
-
-	  Saying Y here is not a bad idea if you're not that short
-	  on storage capacity.
-
-config FEATURE_MODPROBE_FANCY_ALIAS
-	bool
-	prompt "Fancy alias parsing"
-	default y
-	depends on MODPROBE && FEATURE_2_6_MODULES
-	help
-	  Say 'y' here to enable parsing of aliases with underscore/dash
-	  mismatch between module name and file name, along with bus-specific
-	  aliases (such as pci:... or usb:... aliases).
-
 config FEATURE_MODPROBE_BLACKLIST
 	bool
 	prompt "Blacklist support"
 	default n
-	depends on MODPROBE && FEATURE_2_6_MODULES
+	depends on MODPROBE
 	help
 	  Say 'y' here to enable support for the 'blacklist' command in
 	  modprobe.conf. This prevents the alias resolver to resolve
@@ -213,60 +121,110 @@
 	  hardware autodetection scripts to load modules like evdev, frame
 	  buffer drivers etc.
 
+config DEPMOD
+	bool "depmod"
+	default n
+	depends on !MODPROBE_SMALL
+	help
+	  depmod generates modules.dep (and potentially modules.alias
+	  and modules.symbols) that contain dependency information
+	  for modprobe.
+
 comment "Options common to multiple modutils"
-	depends on INSMOD || RMMOD || MODPROBE || LSMOD || DEPMOD
+
+config FEATURE_2_4_MODULES
+	bool "Support version 2.2/2.4 Linux kernels"
+	default n
+	depends on INSMOD || RMMOD || LSMOD
+	help
+	  Support module loading for 2.2.x and 2.4.x Linux kernels.
+	  This increases size considerably. Say N unless you plan
+	  to run ancient kernels.
+
+config FEATURE_INSMOD_VERSION_CHECKING
+	bool "Enable module version checking"
+	default n
+	depends on FEATURE_2_4_MODULES && (INSMOD || MODPROBE)
+	help
+	  Support checking of versions for modules. This is used to
+	  ensure that the kernel and module are made for each other.
+
+config FEATURE_INSMOD_KSYMOOPS_SYMBOLS
+	bool "Add module symbols to kernel symbol table"
+	default n
+	depends on FEATURE_2_4_MODULES && (INSMOD || MODPROBE)
+	help
+	  By adding module symbols to the kernel symbol table, Oops messages
+	  occuring within kernel modules can be properly debugged. By enabling
+	  this feature, module symbols will always be added to the kernel symbol
+	  table for properly debugging support. If you are not interested in
+	  Oops messages from kernel modules, say N.
+
+config FEATURE_INSMOD_LOADINKMEM
+	bool "In kernel memory optimization (uClinux only)"
+	default n
+	depends on FEATURE_2_4_MODULES && (INSMOD || MODPROBE)
+	help
+	  This is a special uClinux only memory optimization that lets insmod
+	  load the specified kernel module directly into kernel space, reducing
+	  memory usage by preventing the need for two copies of the module
+	  being loaded into memory.
+
+config FEATURE_INSMOD_LOAD_MAP
+	bool "Enable insmod load map (-m) option"
+	default n
+	depends on FEATURE_2_4_MODULES && INSMOD
+	help
+	  Enabling this, one would be able to get a load map
+	  output on stdout. This makes kernel module debugging
+	  easier.
+	  If you don't plan to debug kernel modules, you
+	  don't need this option.
+
+config FEATURE_INSMOD_LOAD_MAP_FULL
+	bool "Symbols in load map"
+	default y
+	depends on FEATURE_INSMOD_LOAD_MAP && !MODPROBE_SMALL
+	help
+	  Without this option, -m will only output section
+	  load map. With this option, -m will also output
+	  symbols load map.
 
 config FEATURE_CHECK_TAINTED_MODULE
-	# Simulate indentation
 	bool "Support tainted module checking with new kernels"
 	default y
-	depends on INSMOD || LSMOD
+	depends on !MODPROBE_SMALL
 	help
 	  Support checking for tainted modules. These are usually binary
 	  only modules that will make the linux-kernel list ignore your
 	  support request.
 	  This option is required to support GPLONLY modules.
 
-config FEATURE_2_4_MODULES
-	# Simulate indentation
-	bool "Support version 2.2.x to 2.4.x Linux kernels"
+config FEATURE_MODUTILS_ALIAS
+	bool "Support for module.aliases file"
 	default y
-	depends on INSMOD || RMMOD || MODPROBE
+	depends on DEPMOD || MODPROBE
 	help
-	  Support module loading for 2.2.x and 2.4.x Linux kernels.
+	  Generate and parse modules.alias containing aliases for bus
+	  identifiers:
+	    alias pcmcia:m*c*f03fn*pfn*pa*pb*pc*pd* parport_cs
 
-	  Note:
-	  This is automatically enabled if 2.6 modules are not enabled.
+	  and aliases for logical modules names e.g.:
+	    alias padlock_aes aes
+	    alias aes_i586 aes
+	    alias aes_generic aes
 
-config FEATURE_2_6_MODULES
-	# Simulate indentation
-	bool "Support version 2.6.x Linux kernels"
+	  Say Y if unsure.
+
+config FEATURE_MODUTILS_SYMBOLS
+	bool "Support for module.symbols file"
 	default y
-	depends on INSMOD || RMMOD || MODPROBE
+	depends on DEPMOD || MODPROBE
 	help
-	  Support module loading for newer 2.6.x Linux kernels.
+	  Generate and parse modules.symbols containing aliases for
+	  symbol_request() kernel calls, such as:
+	    alias symbol:usb_sg_init usbcore
 
-config DEFAULT_MODULES_DIR
-	# Simulate indentation
-	string "Default directory containing modules"
-	default "/lib/modules"
-	depends on INSMOD || RMMOD || MODPROBE || MODPROBE_SMALL || DEPMOD
-	help
-	  Directory that contains kernel modules.
-	  Defaults to "/lib/modules"
-
-config DEFAULT_DEPMOD_FILE
-	# Simulate indentation
-	string "Default name of modules.dep"
-	default "modules.dep"
-	depends on INSMOD || RMMOD || MODPROBE || MODPROBE_SMALL || DEPMOD
-	help
-	  Filename that contains kernel modules dependencies.
-	  Defaults to "modules.dep"
-
-config FEATURE_QUERY_MODULE_INTERFACE
-	bool
-	default y
-	depends on FEATURE_2_4_MODULES && !FEATURE_2_6_MODULES
+	  Say Y if unsure.
 
 endmenu