This program is distributed according to the Gnu General Public License. If more than one module is named on the command line, the modules will be removed in the given order. This supports unloading of stacked modules. With the option '-r' a recursive removal of modules will be attempted. This means that if a top module in a stack is named on the command line, all modules that are used by this module will be removed as well, if possible.
Modules stay tagged if they stay unused since previous autoclean.
These two passes avoid removing transiently unused modules. If no module names are specified then data is saved for all modules that have persistent data. The saved data values are written to the file, preserving the existing order of comments and assignments. New values are added at the end of the file. If the file contains values that do not exist in the module then these values are preserved but are preceded by a generated comment warning that they are not being used.